js-moss
TypeScript icon, indicating that this package has built-in type declarations

0.22.31 • Public • Published

js-moss Build Status Coverage Status

NPM

Moss

moss is a set of parsing rules for js objects, most often described in YAML-like syntax. It is a Turing-incomplete language that looks a bit like YAMl but is closer Kubernetes Helm. Moss aims to have serparable layers, each with an opinionated first choice that is ultimately swappable if desired.

Branches

Moss "branches" are somewhat like files but with key differences. A traditional file separates its data (the file contents) from its metadata (owner, permissions). In contrast, a Moss branch is identified by its first line, called a "branch locator".

Branch locators

Example: context::name@Organzation Name~Folder/other tag:version

context aka "forest" - defines which layer 0 resolver to use if sourcing from another forest name - just a file name. Organization Name - Represents permissions projectTags - User defined hints, similar to unix directories version - server or a hash

Layers of moss

0 binary
1 source
2 linked structured ast
3 declarative api

Layer 0: "trunk" / container / binary:

opinionated default:

  • Signet Protocol, which is essentially an IPFS compatible container format

unopinionated alternatives:

  • database
  • filesystem
  • browser storage

Layer 1: "branch" / source code:

opinionated default:

  • yaml

unopinionated alternatives:

  • JSON / xml / TOML
  • any trie-like format

layer 2: "stem" / ast:

opinionated default:

  • js-moss (this package) hydrates yaml to object, async gql resolvers for linking

unopinionated alternatives:

  • load layer 1 into language specific ORM
  • be able to link other layer 2 objects.

Layer 3: "leaf" / document:

opinionated default:

  • has a "kind" referenced in layer2 drives declarative api like k8s

unopinionated alternatives:

  • any runtime object

see more and use interactively in your browser @ https://triemake.com/moss/playground

Readme

Keywords

none

Package Sidebar

Install

npm i js-moss

Weekly Downloads

70

Version

0.22.31

License

none

Unpacked Size

2.54 MB

Total Files

246

Last publish

Collaborators

  • 1e1f