{"id":24511573,"url":"https://github.com/danielxmoore/system","last_synced_at":"2025-07-13T20:05:25.424Z","repository":{"id":78177462,"uuid":"481338962","full_name":"DanielXMoore/system","owner":"DanielXMoore","description":"System library for whimsy.space and danielx.net apps","archived":false,"fork":false,"pushed_at":"2024-05-16T03:10:05.000Z","size":592,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-02T17:45:10.218Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DanielXMoore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-04-13T18:55:33.000Z","updated_at":"2024-05-16T03:10:09.000Z","dependencies_parsed_at":"2025-06-22T17:38:23.165Z","dependency_job_id":"eafc5d1d-68f2-410c-a46c-15be963b7c83","html_url":"https://github.com/DanielXMoore/system","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DanielXMoore/system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielXMoore%2Fsystem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielXMoore%2Fsystem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielXMoore%2Fsystem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielXMoore%2Fsystem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DanielXMoore","download_url":"https://codeload.github.com/DanielXMoore/system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielXMoore%2Fsystem/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265198356,"owners_count":23726448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-22T00:38:29.067Z","updated_at":"2025-07-13T20:05:25.389Z","avatar_url":"https://github.com/DanielXMoore.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Coverage Status](https://coveralls.io/repos/github/DanielXMoore/system/badge.svg?branch=main)](https://coveralls.io/github/DanielXMoore/system?branch=main)\n\nSystem\n======\n\nSystem is the framework and API layer for creating Whimsy.Space apps.\n\n- `app`\n  - `Base`\n- `aws`\n- `fs`\n  - `Dexie` IndexedDB\n  - `Package` Explore a package as a filesystem\n  - `Mount` A meta-file system where that mounts other systems as paths.\n  - `S3` AWS S3\n- `pkg` Utilities for loading, building, running packages.\n- [ui](#ui)\n  - `applyStyle(styleSource, name)` TODO: this should be automatic in most cases\n  - `Bindable` TODO: Not quite the right place?\n  - `ContextMenu`\n  - `Jadelet`\n  - `MenuBar`\n  - `Modal`\n  - `Observable`\n  - `Progress`\n  - `Window`\n- `util`\n  - `Postmaster`\n\n\n[Architecture](https://danielx.net/wiki/architecture.html)\n\nfs\n----------\n\nThe filesystem has common operations for listing, reading, writing, and deleting\nfiles. Both local and cloud backends are implemented. Different systems can be\nmounted at paths and have events translated cleanly. That's some of the magic\nthat powers `My Briefcase`.\n\npkg\n---\n\nBuild and run applications with packaging.\n\n**Deprecated** `parseDependencyPath(string, registry)` parses a path to resolve a package\nshorthand to an https url. These paths are used in declaring dependencies in\npackage configs like:\n\n```coffee\ndependencies:\n  postmaster: \"distri/postmaster:master\"\n```\n\nWe should just switch to using https urls. If a specific build tool wants to\nhandle short names or a registry then that is up to the tool.\n\n`htmlBlob(pkg, opts)` Create a blob object containing html of the package with a\nself executing wrapper. This blob can then be published as a standalone webpage\nor launched inside an iframe.\n\nui\n---\n\nArtisanal User Interface\n\n### Menus\n\n- Context Menu\n- Menu Bar\n- Nested submenus\n\nSimple DSL for creating menus and binding to handlers.\n\n```\n{ContextMenu} = require \"ui\"\n\ncontextMenu = ContextMenu()\ndocument.body.appendChild contextMenu.element\n```\n\n### Modals\n\n- Alert\n- Confirm\n- Prompt\n\nPromise returning prompts, confirms, etc.\n\n### Actions\n\nHotkeys, help text, icons, enabled/disabled states.\n\n### Z-Indexes\n\nIs there a sane way to do z-indexes? Right now I'm just listing them.\n\nModal: 1000\nContext Menu: 2000\n\nNaming Conventions\n---\n\n`system` provides many namespaces such as `system.fs`, `system.ui`, etc.\nNamespaces are lower case.\n\nThose namespaces provide constructors and methods. Methods are lower initial\ncamel-case:\n\n`system.util.style(...)`\n\nConstructors are upper initial camel-case and should _not_ be called with `new`.\n\n`system.ui.Window(...)`\n\nRuntime\n-------\n\nExperimenting with delegating more App plumbing to system through `app.Base`.\n\nCurrently implemented as something like this in ZineOS:\n\n```\nself.executePackageInIFrame\n  distribution:\n    main:\n      content: \"\"\"\n        global.app = system.app.Base({\n          pkg: PACKAGE\n        });\n        require(\"./app\");\n        app.trigger(\"boot\");\n      \"\"\"\n    app:\n      content: source\n  dependencies:\n    \"!system\": PACKAGE.dependencies[\"!system\"]\n```\n\nIt makes a shim package, passing ZineOS's `!system` dependency through, then\ninitializing a global `app` using the runtime's `system.app.Base` to wire up all the\nbiz, then requires the single `app` file. Finally it triggers the `boot` event\nfor the app.\n\nThis kind of pattern may make its way into a `util` in `system` one day. Still\nexperimenting with the details.\n\nDeprecations\n---\n\n`system.client` is a deprecated namespace from when `system` was synonymous with\n`system.host` and all the other namespaces lived under `system.client`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielxmoore%2Fsystem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielxmoore%2Fsystem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielxmoore%2Fsystem/lists"}