functionalscript 0.43.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -21
- package/fjs/asn.1/module.f.d.mts +123 -0
- package/fjs/asn.1/module.f.mjs +459 -0
- package/fjs/asn.1/proof.f.mjs +309 -0
- package/fjs/asn.1/types.d.ts +37 -0
- package/fjs/asn.1/types.js +6 -0
- package/fjs/asserts/module.f.d.mts +37 -0
- package/fjs/asserts/module.f.mjs +49 -0
- package/fjs/asserts/proof.f.mjs +19 -0
- package/fjs/asserts/types.d.ts +11 -0
- package/fjs/asserts/types.js +6 -0
- package/fjs/basen/base128/module.f.d.mts +22 -0
- package/fjs/basen/base128/module.f.mjs +51 -0
- package/fjs/basen/base128/proof.f.d.mts +2 -0
- package/fjs/basen/base128/proof.f.mjs +30 -0
- package/fjs/basen/base64/module.f.d.mts +14 -0
- package/fjs/basen/base64/module.f.mjs +71 -0
- package/fjs/basen/base64/proof.f.d.mts +17 -0
- package/fjs/basen/base64/proof.f.mjs +147 -0
- package/fjs/basen/cbase32/module.f.d.mts +18 -0
- package/fjs/basen/cbase32/module.f.mjs +61 -0
- package/fjs/basen/cbase32/proof.f.d.mts +8 -0
- package/fjs/basen/cbase32/proof.f.mjs +77 -0
- package/fjs/basen/module.f.d.mts +30 -0
- package/fjs/basen/module.f.mjs +88 -0
- package/fjs/basen/proof.f.mjs +69 -0
- package/fjs/basen/types.d.ts +14 -0
- package/fjs/basen/types.js +6 -0
- package/fjs/bnf/data/module.f.d.mts +47 -0
- package/fjs/bnf/data/module.f.mjs +188 -0
- package/fjs/bnf/data/proof.f.d.mts +13 -0
- package/fjs/bnf/data/proof.f.mjs +160 -0
- package/fjs/bnf/data/types.d.ts +35 -0
- package/fjs/bnf/data/types.js +6 -0
- package/fjs/bnf/descent/module.f.d.mts +33 -0
- package/fjs/bnf/descent/module.f.mjs +212 -0
- package/fjs/bnf/descent/proof.f.d.mts +13 -0
- package/fjs/bnf/descent/proof.f.mjs +351 -0
- package/fjs/bnf/descent/types.d.ts +71 -0
- package/fjs/bnf/descent/types.js +6 -0
- package/fjs/bnf/ll1/module.f.d.mts +41 -0
- package/fjs/bnf/ll1/module.f.mjs +199 -0
- package/fjs/bnf/ll1/proof.f.d.mts +16 -0
- package/fjs/bnf/ll1/proof.f.mjs +352 -0
- package/fjs/bnf/ll1/types.d.ts +59 -0
- package/fjs/bnf/ll1/types.js +6 -0
- package/fjs/bnf/module.f.d.mts +164 -0
- package/fjs/bnf/module.f.mjs +298 -0
- package/fjs/bnf/proof.f.d.mts +17 -0
- package/fjs/bnf/proof.f.mjs +89 -0
- package/fjs/bnf/testlib.f.d.mts +10 -0
- package/fjs/bnf/testlib.f.mjs +196 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +35 -0
- package/fjs/bnf/token_symbol/module.f.mjs +62 -0
- package/fjs/bnf/token_symbol/proof.f.mjs +43 -0
- package/fjs/bnf/token_symbol/types.d.ts +27 -0
- package/fjs/bnf/token_symbol/types.js +6 -0
- package/fjs/bnf/types.d.ts +67 -0
- package/fjs/bnf/types.js +6 -0
- package/fjs/cas/cli/module.f.d.mts +17 -0
- package/fjs/cas/cli/module.f.mjs +73 -0
- package/fjs/cas/cli/proof.f.d.mts +18 -0
- package/fjs/cas/cli/proof.f.mjs +118 -0
- package/fjs/cas/evo/module.f.d.mts +163 -0
- package/fjs/cas/evo/module.f.mjs +556 -0
- package/fjs/cas/evo/proof.f.d.mts +55 -0
- package/fjs/cas/evo/proof.f.mjs +749 -0
- package/fjs/cas/evo/types.d.ts +111 -0
- package/fjs/cas/evo/types.js +7 -0
- package/fjs/cas/module.f.d.mts +68 -0
- package/fjs/cas/module.f.mjs +363 -0
- package/fjs/cas/proof.f.d.mts +29 -0
- package/fjs/cas/proof.f.mjs +371 -0
- package/fjs/cas/types.d.ts +35 -0
- package/fjs/cas/types.js +6 -0
- package/fjs/ci/bun/module.f.d.mts +11 -0
- package/fjs/ci/bun/module.f.mjs +20 -0
- package/fjs/ci/common/module.f.d.mts +80 -0
- package/fjs/ci/common/module.f.mjs +87 -0
- package/fjs/ci/common/types.d.ts +27 -0
- package/fjs/ci/config/module.f.d.mts +45 -0
- package/fjs/ci/config/module.f.mjs +89 -0
- package/fjs/ci/deno/module.f.d.mts +16 -0
- package/fjs/ci/deno/module.f.mjs +29 -0
- package/fjs/ci/deno/proof.f.d.mts +4 -0
- package/fjs/ci/deno/proof.f.mjs +26 -0
- package/fjs/ci/module.f.d.mts +19 -0
- package/fjs/ci/module.f.mjs +89 -0
- package/fjs/ci/nix/module.f.d.mts +69 -0
- package/fjs/ci/nix/module.f.mjs +136 -0
- package/fjs/ci/nix/proof.f.d.mts +28 -0
- package/fjs/ci/nix/proof.f.mjs +146 -0
- package/fjs/ci/nix/types.d.ts +16 -0
- package/fjs/ci/nix/types.js +6 -0
- package/fjs/ci/node/module.f.d.mts +48 -0
- package/fjs/ci/node/module.f.mjs +139 -0
- package/fjs/ci/node/proof.f.mjs +18 -0
- package/fjs/ci/proof.f.d.mts +20 -0
- package/fjs/ci/proof.f.mjs +219 -0
- package/fjs/ci/rust/module.f.d.mts +15 -0
- package/fjs/ci/rust/module.f.mjs +108 -0
- package/fjs/ci/types.d.ts +9 -0
- package/fjs/ci/types.js +6 -0
- package/fjs/cli/module.f.d.mts +16 -0
- package/fjs/cli/module.f.mjs +51 -0
- package/fjs/cli/proof.f.d.mts +16 -0
- package/fjs/cli/proof.f.mjs +130 -0
- package/fjs/cli/types.d.ts +15 -0
- package/fjs/cli/types.js +6 -0
- package/fjs/common/monoid/module.f.d.mts +87 -0
- package/fjs/common/monoid/module.f.mjs +104 -0
- package/fjs/common/monoid/proof.f.d.mts +10 -0
- package/fjs/common/monoid/proof.f.mjs +58 -0
- package/fjs/common/monoid/types.d.ts +50 -0
- package/fjs/common/monoid/types.js +6 -0
- package/fjs/crypto/hmac/module.f.d.mts +32 -0
- package/fjs/crypto/hmac/module.f.mjs +65 -0
- package/fjs/crypto/hmac/proof.f.mjs +34 -0
- package/fjs/crypto/pow/module.f.d.mts +43 -0
- package/fjs/crypto/pow/module.f.mjs +93 -0
- package/fjs/crypto/pow/proof.f.mjs +121 -0
- package/fjs/crypto/pow/types.d.ts +19 -0
- package/fjs/crypto/pow/types.js +6 -0
- package/fjs/crypto/secp/module.f.d.mts +61 -0
- package/fjs/crypto/secp/module.f.mjs +204 -0
- package/fjs/crypto/secp/proof.f.d.mts +9 -0
- package/fjs/crypto/secp/proof.f.mjs +137 -0
- package/fjs/crypto/secp/types.d.ts +36 -0
- package/fjs/crypto/secp/types.js +6 -0
- package/fjs/crypto/sha2/module.f.d.mts +80 -0
- package/fjs/crypto/sha2/module.f.mjs +431 -0
- package/fjs/crypto/sha2/proof.f.d.mts +32 -0
- package/fjs/crypto/sha2/proof.f.mjs +144 -0
- package/fjs/crypto/sha2/types.d.ts +57 -0
- package/fjs/crypto/sha2/types.js +6 -0
- package/fjs/crypto/sign/module.f.d.mts +46 -0
- package/fjs/crypto/sign/module.f.mjs +189 -0
- package/fjs/crypto/sign/proof.f.d.mts +17 -0
- package/fjs/crypto/sign/proof.f.mjs +604 -0
- package/fjs/crypto/sign/types.d.ts +13 -0
- package/fjs/crypto/sign/types.js +6 -0
- package/fjs/crypto/vdf/module.f.d.mts +15 -0
- package/fjs/crypto/vdf/module.f.mjs +84 -0
- package/fjs/crypto/vdf/proof.f.mjs +106 -0
- package/fjs/crypto/vdf/types.d.ts +18 -0
- package/fjs/crypto/vdf/types.js +6 -0
- package/fjs/dev/module.f.d.mts +56 -0
- package/fjs/dev/module.f.mjs +170 -0
- package/fjs/dev/package_json/module.f.d.mts +32 -0
- package/fjs/dev/package_json/module.f.mjs +37 -0
- package/fjs/dev/package_json/proof.f.mjs +32 -0
- package/fjs/dev/proof.f.d.mts +13 -0
- package/fjs/dev/proof.f.mjs +78 -0
- package/fjs/dev/types.d.ts +14 -0
- package/fjs/dev/types.js +6 -0
- package/fjs/dev/update/module.f.d.mts +19 -0
- package/fjs/dev/update/module.f.mjs +36 -0
- package/fjs/dev/update/proof.f.d.mts +7 -0
- package/fjs/dev/update/proof.f.mjs +36 -0
- package/fjs/djs/ast/module.f.d.mts +35 -0
- package/fjs/djs/ast/module.f.mjs +82 -0
- package/fjs/djs/ast/proof.f.mjs +48 -0
- package/fjs/djs/ast/types.d.ts +54 -0
- package/fjs/djs/ast/types.js +8 -0
- package/fjs/djs/examples/input.f.mjs +4 -0
- package/fjs/djs/examples/m.f.mjs +1 -0
- package/fjs/djs/module.f.d.mts +17 -0
- package/fjs/djs/module.f.mjs +47 -0
- package/fjs/djs/parser/module.f.d.mts +75 -0
- package/fjs/djs/parser/module.f.mjs +547 -0
- package/fjs/djs/parser/proof.f.mjs +543 -0
- package/fjs/djs/parser/types.d.ts +11 -0
- package/fjs/djs/parser/types.js +7 -0
- package/fjs/djs/proof.f.mjs +52 -0
- package/fjs/djs/serializer/module.f.d.mts +30 -0
- package/fjs/djs/serializer/module.f.mjs +206 -0
- package/fjs/djs/serializer/proof.f.mjs +116 -0
- package/fjs/djs/tokenizer/module.f.d.mts +65 -0
- package/fjs/djs/tokenizer/module.f.mjs +624 -0
- package/fjs/djs/tokenizer/proof.f.mjs +980 -0
- package/fjs/djs/tokenizer/types.d.ts +20 -0
- package/fjs/djs/tokenizer/types.js +7 -0
- package/fjs/djs/transpiler/module.f.d.mts +44 -0
- package/fjs/djs/transpiler/module.f.mjs +141 -0
- package/fjs/djs/transpiler/proof.f.mjs +76 -0
- package/fjs/djs/types.d.ts +13 -0
- package/fjs/djs/types.js +7 -0
- package/fjs/effects/eff/module.f.d.mts +10 -0
- package/fjs/effects/eff/module.f.mjs +68 -0
- package/fjs/effects/eff/proof.f.d.mts +12 -0
- package/fjs/effects/eff/proof.f.mjs +66 -0
- package/fjs/effects/eff/types.d.ts +71 -0
- package/fjs/effects/eff/types.js +6 -0
- package/fjs/effects/list/module.f.d.mts +24 -0
- package/fjs/effects/list/module.f.mjs +34 -0
- package/fjs/effects/list/types.d.ts +26 -0
- package/fjs/effects/list/types.js +6 -0
- package/fjs/effects/memory/module.f.d.mts +32 -0
- package/fjs/effects/memory/module.f.mjs +44 -0
- package/fjs/effects/memory/proof.f.d.mts +12 -0
- package/fjs/effects/memory/proof.f.mjs +83 -0
- package/fjs/effects/memory/types.d.ts +18 -0
- package/fjs/effects/memory/types.js +6 -0
- package/fjs/effects/mock/module.f.d.mts +6 -0
- package/fjs/effects/mock/module.f.mjs +26 -0
- package/fjs/effects/mock/types.d.ts +15 -0
- package/fjs/effects/mock/types.js +6 -0
- package/fjs/effects/module.d.mts +7 -0
- package/fjs/effects/module.f.d.mts +350 -0
- package/fjs/effects/module.f.mjs +382 -0
- package/fjs/effects/module.mjs +18 -0
- package/fjs/effects/node/memory/module.d.mts +24 -0
- package/fjs/effects/node/memory/module.mjs +59 -0
- package/fjs/effects/node/memory/proof.mjs +43 -0
- package/fjs/effects/node/module.d.mts +54 -0
- package/fjs/effects/node/module.f.d.mts +172 -0
- package/fjs/effects/node/module.f.mjs +354 -0
- package/fjs/effects/node/module.mjs +393 -0
- package/fjs/effects/node/proof.f.d.mts +76 -0
- package/fjs/effects/node/proof.f.mjs +444 -0
- package/fjs/effects/node/types.d.ts +203 -0
- package/fjs/effects/node/types.js +6 -0
- package/fjs/effects/node/virtual/module.f.d.mts +31 -0
- package/fjs/effects/node/virtual/module.f.mjs +434 -0
- package/fjs/effects/node/virtual/proof.f.d.mts +35 -0
- package/fjs/effects/node/virtual/proof.f.mjs +226 -0
- package/fjs/effects/node/virtual/types.d.ts +39 -0
- package/fjs/effects/node/virtual/types.js +7 -0
- package/fjs/effects/proof.f.d.mts +62 -0
- package/fjs/effects/proof.f.mjs +231 -0
- package/fjs/effects/types.d.ts +115 -0
- package/fjs/effects/types.js +6 -0
- package/fjs/emergent_testing/all.test.js +2 -2
- package/fjs/emergent_testing/example.f.d.mts +16 -0
- package/fjs/emergent_testing/example.f.mjs +34 -0
- package/fjs/emergent_testing/module.f.d.mts +150 -0
- package/fjs/emergent_testing/module.f.mjs +414 -0
- package/fjs/emergent_testing/proof.f.d.mts +97 -0
- package/fjs/emergent_testing/proof.f.mjs +518 -0
- package/fjs/emergent_testing/types.d.ts +53 -0
- package/fjs/emergent_testing/types.js +6 -0
- package/fjs/fsc/bnf.f.d.mts +3 -0
- package/fjs/fsc/bnf.f.mjs +77 -0
- package/fjs/fsc/json.f.d.mts +13 -0
- package/fjs/fsc/json.f.mjs +124 -0
- package/fjs/fsc/module.f.d.mts +14 -0
- package/fjs/fsc/module.f.mjs +138 -0
- package/fjs/fsc/proof.f.mjs +119 -0
- package/fjs/fsm/module.f.d.mts +27 -0
- package/fjs/fsm/module.f.mjs +99 -0
- package/fjs/fsm/proof.f.mjs +146 -0
- package/fjs/js/tokenizer/module.f.d.mts +19 -0
- package/fjs/js/tokenizer/module.f.mjs +795 -0
- package/fjs/js/tokenizer/proof.f.d.mts +12 -0
- package/fjs/js/tokenizer/proof.f.mjs +681 -0
- package/fjs/js/tokenizer/types.d.ts +193 -0
- package/fjs/js/tokenizer/types.js +6 -0
- package/fjs/mcp/cas/module.f.d.mts +156 -0
- package/fjs/mcp/cas/module.f.mjs +302 -0
- package/fjs/mcp/evo/module.f.d.mts +88 -0
- package/fjs/mcp/evo/module.f.mjs +153 -0
- package/fjs/mcp/evo/proof.f.d.mts +17 -0
- package/fjs/mcp/evo/proof.f.mjs +166 -0
- package/fjs/mcp/module.f.d.mts +32 -0
- package/fjs/mcp/module.f.mjs +96 -0
- package/fjs/mcp/proof.f.d.mts +46 -0
- package/fjs/mcp/proof.f.mjs +725 -0
- package/fjs/media/html/module.f.d.mts +43 -0
- package/fjs/media/html/module.f.mjs +167 -0
- package/fjs/media/html/proof.f.mjs +77 -0
- package/fjs/media/html/types.d.ts +19 -0
- package/fjs/media/html/types.js +6 -0
- package/fjs/media/json/module.f.d.mts +48 -0
- package/fjs/media/json/module.f.mjs +104 -0
- package/fjs/media/json/parser/module.f.d.mts +30 -0
- package/fjs/media/json/parser/module.f.mjs +219 -0
- package/fjs/media/json/parser/proof.f.d.mts +8 -0
- package/fjs/media/json/parser/proof.f.mjs +314 -0
- package/fjs/media/json/parser/types.d.ts +34 -0
- package/fjs/media/json/parser/types.js +6 -0
- package/fjs/media/json/proof.f.mjs +79 -0
- package/fjs/media/json/rtti/module.f.d.mts +38 -0
- package/fjs/media/json/rtti/module.f.mjs +51 -0
- package/fjs/media/json/rtti/proof.f.d.mts +26 -0
- package/fjs/media/json/rtti/proof.f.mjs +86 -0
- package/fjs/media/json/schema/module.f.d.mts +79 -0
- package/fjs/media/json/schema/module.f.mjs +144 -0
- package/fjs/media/json/schema/proof.f.d.mts +40 -0
- package/fjs/media/json/schema/proof.f.mjs +93 -0
- package/fjs/media/json/serializer/module.f.d.mts +27 -0
- package/fjs/media/json/serializer/module.f.mjs +131 -0
- package/fjs/media/json/serializer/proof.f.mjs +92 -0
- package/fjs/media/json/tokenizer/module.f.d.mts +17 -0
- package/fjs/media/json/tokenizer/module.f.mjs +77 -0
- package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
- package/fjs/media/json/tokenizer/types.d.ts +17 -0
- package/fjs/media/json/tokenizer/types.js +6 -0
- package/fjs/media/json/types.d.ts +25 -0
- package/fjs/media/json/types.js +13 -0
- package/fjs/media/module.f.d.mts +116 -0
- package/fjs/media/module.f.mjs +152 -0
- package/fjs/media/nix/module.f.d.mts +14 -0
- package/fjs/media/nix/module.f.mjs +261 -0
- package/fjs/media/nix/proof.f.mjs +181 -0
- package/fjs/media/nix/types.d.ts +22 -0
- package/fjs/media/nix/types.js +6 -0
- package/fjs/media/proof.f.d.mts +19 -0
- package/fjs/media/proof.f.mjs +159 -0
- package/fjs/media/revision/module.f.d.mts +119 -0
- package/fjs/media/revision/module.f.mjs +166 -0
- package/fjs/media/revision/proof.f.d.mts +42 -0
- package/fjs/media/revision/proof.f.mjs +228 -0
- package/fjs/media/revision/types.d.ts +16 -0
- package/fjs/media/revision/types.js +8 -0
- package/fjs/media/rust/module.f.d.mts +61 -0
- package/fjs/media/rust/module.f.mjs +93 -0
- package/fjs/media/rust/proof.f.d.mts +17 -0
- package/fjs/media/rust/proof.f.mjs +50 -0
- package/fjs/media/type/module.f.d.mts +97 -0
- package/fjs/media/type/module.f.mjs +281 -0
- package/fjs/media/type/proof.f.mjs +285 -0
- package/fjs/media/type/types.d.ts +67 -0
- package/fjs/media/type/types.js +6 -0
- package/fjs/media/types.d.ts +26 -0
- package/fjs/media/types.js +7 -0
- package/fjs/module.f.d.mts +3 -0
- package/fjs/module.f.mjs +60 -0
- package/fjs/module.mjs +6 -0
- package/fjs/nanvm/module.f.d.mts +54 -0
- package/fjs/nanvm/module.f.mjs +240 -0
- package/fjs/nanvm/proof.f.d.mts +41 -0
- package/fjs/nanvm/proof.f.mjs +173 -0
- package/fjs/nanvm/rust/module.f.d.mts +54 -0
- package/fjs/nanvm/rust/module.f.mjs +166 -0
- package/fjs/nanvm/rust/proof.f.d.mts +21 -0
- package/fjs/nanvm/rust/proof.f.mjs +119 -0
- package/fjs/nanvm/types.d.ts +105 -0
- package/fjs/nanvm/types.js +11 -0
- package/fjs/nanvm/update/module.f.d.mts +23 -0
- package/fjs/nanvm/update/module.f.mjs +33 -0
- package/fjs/nanvm/update/proof.f.d.mts +9 -0
- package/fjs/nanvm/update/proof.f.mjs +32 -0
- package/fjs/path/module.f.d.mts +55 -0
- package/fjs/path/module.f.mjs +96 -0
- package/fjs/path/proof.f.mjs +125 -0
- package/fjs/proof.f.mjs +48 -0
- package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
- package/fjs/protocol/json_rpc/module.f.mjs +112 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +84 -0
- package/fjs/protocol/json_rpc/types.d.ts +30 -0
- package/fjs/protocol/json_rpc/types.js +8 -0
- package/fjs/protocol/mcp/module.f.d.mts +227 -0
- package/fjs/protocol/mcp/module.f.mjs +369 -0
- package/fjs/protocol/mcp/proof.f.d.mts +53 -0
- package/fjs/protocol/mcp/proof.f.mjs +312 -0
- package/fjs/protocol/mcp/stdio/module.f.d.mts +52 -0
- package/fjs/protocol/mcp/stdio/module.f.mjs +132 -0
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
- package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
- package/fjs/protocol/mcp/types.d.ts +59 -0
- package/fjs/protocol/mcp/types.js +8 -0
- package/fjs/sul/id/module.f.d.mts +37 -0
- package/fjs/sul/id/module.f.mjs +143 -0
- package/fjs/sul/id/proof.f.mjs +72 -0
- package/fjs/sul/id/types.d.ts +8 -0
- package/fjs/sul/id/types.js +6 -0
- package/fjs/sul/level/hash/module.f.d.mts +37 -0
- package/fjs/sul/level/hash/module.f.mjs +61 -0
- package/fjs/sul/level/hash/proof.f.d.mts +15 -0
- package/fjs/sul/level/hash/proof.f.mjs +131 -0
- package/fjs/sul/level/hash/types.d.ts +20 -0
- package/fjs/sul/level/hash/types.js +6 -0
- package/fjs/sul/level/literal/module.f.d.mts +54 -0
- package/fjs/sul/level/literal/module.f.mjs +120 -0
- package/fjs/sul/level/literal/proof.f.mjs +788 -0
- package/fjs/sul/level/literal/types.d.ts +31 -0
- package/fjs/sul/level/literal/types.js +6 -0
- package/fjs/sul/module.f.d.mts +25 -0
- package/fjs/sul/module.f.mjs +69 -0
- package/fjs/sul/proof.f.d.mts +11 -0
- package/fjs/sul/proof.f.mjs +62 -0
- package/fjs/sul/types.d.ts +19 -0
- package/fjs/sul/types.js +6 -0
- package/fjs/text/ascii/module.f.d.mts +136 -0
- package/fjs/text/ascii/module.f.mjs +224 -0
- package/fjs/text/ascii/proof.f.mjs +16 -0
- package/fjs/text/code_point/module.f.d.mts +74 -0
- package/fjs/text/code_point/module.f.mjs +139 -0
- package/fjs/text/code_point/proof.f.mjs +80 -0
- package/fjs/text/module.f.d.mts +39 -0
- package/fjs/text/module.f.mjs +61 -0
- package/fjs/text/proof.f.mjs +48 -0
- package/fjs/text/sgr/module.f.d.mts +58 -0
- package/fjs/text/sgr/module.f.mjs +99 -0
- package/fjs/text/sgr/proof.f.mjs +39 -0
- package/fjs/text/sgr/types.d.ts +12 -0
- package/fjs/text/sgr/types.js +6 -0
- package/fjs/text/types.d.ts +13 -0
- package/fjs/text/types.js +6 -0
- package/fjs/text/utf16/module.f.d.mts +147 -0
- package/fjs/text/utf16/module.f.mjs +350 -0
- package/fjs/text/utf16/proof.f.d.mts +11 -0
- package/fjs/text/utf16/proof.f.mjs +158 -0
- package/fjs/text/utf16/types.d.ts +19 -0
- package/fjs/text/utf16/types.js +6 -0
- package/fjs/text/utf8/module.f.d.mts +69 -0
- package/fjs/text/utf8/module.f.mjs +280 -0
- package/fjs/text/utf8/proof.f.mjs +217 -0
- package/fjs/text/utf8/types.d.ts +26 -0
- package/fjs/text/utf8/types.js +6 -0
- package/fjs/types/array/module.f.d.mts +68 -0
- package/fjs/types/array/module.f.mjs +101 -0
- package/fjs/types/array/proof.f.mjs +98 -0
- package/fjs/types/array/types.d.ts +13 -0
- package/fjs/types/array/types.js +6 -0
- package/fjs/types/bigfloat/module.f.d.mts +14 -0
- package/fjs/types/bigfloat/module.f.mjs +99 -0
- package/fjs/types/bigfloat/proof.f.mjs +218 -0
- package/fjs/types/bigfloat/types.d.ts +6 -0
- package/fjs/types/bigfloat/types.js +6 -0
- package/fjs/types/bigint/benchmark.d.mts +1 -0
- package/fjs/types/bigint/benchmark.mjs +205 -0
- package/fjs/types/bigint/module.f.d.mts +176 -0
- package/fjs/types/bigint/module.f.mjs +289 -0
- package/fjs/types/bigint/proof.f.d.mts +39 -0
- package/fjs/types/bigint/proof.f.mjs +443 -0
- package/fjs/types/bigint/types.d.ts +14 -0
- package/fjs/types/bigint/types.js +6 -0
- package/fjs/types/bit_vec/module.f.d.mts +199 -0
- package/fjs/types/bit_vec/module.f.mjs +485 -0
- package/fjs/types/bit_vec/proof.f.mjs +495 -0
- package/fjs/types/bit_vec/types.d.ts +51 -0
- package/fjs/types/bit_vec/types.js +6 -0
- package/fjs/types/btree/find/module.f.d.mts +15 -0
- package/fjs/types/btree/find/module.f.mjs +80 -0
- package/fjs/types/btree/find/proof.f.d.mts +4 -0
- package/fjs/types/btree/find/proof.f.mjs +121 -0
- package/fjs/types/btree/find/types.d.ts +22 -0
- package/fjs/types/btree/find/types.js +6 -0
- package/fjs/types/btree/module.f.d.mts +10 -0
- package/fjs/types/btree/module.f.mjs +39 -0
- package/fjs/types/btree/proof.f.d.mts +14 -0
- package/fjs/types/btree/proof.f.mjs +85 -0
- package/fjs/types/btree/remove/module.f.d.mts +21 -0
- package/fjs/types/btree/remove/module.f.mjs +187 -0
- package/fjs/types/btree/remove/proof.f.mjs +472 -0
- package/fjs/types/btree/set/module.f.d.mts +5 -0
- package/fjs/types/btree/set/module.f.mjs +117 -0
- package/fjs/types/btree/set/proof.f.mjs +427 -0
- package/fjs/types/btree/types/module.f.d.mts +19 -0
- package/fjs/types/btree/types/module.f.mjs +19 -0
- package/fjs/types/btree/types/types.d.ts +14 -0
- package/fjs/types/btree/types/types.js +6 -0
- package/fjs/types/byte_set/module.f.d.mts +26 -0
- package/fjs/types/byte_set/module.f.mjs +66 -0
- package/fjs/types/byte_set/proof.f.d.mts +12 -0
- package/fjs/types/byte_set/proof.f.mjs +84 -0
- package/fjs/types/byte_set/types.d.ts +6 -0
- package/fjs/types/byte_set/types.js +6 -0
- package/fjs/types/function/compare/module.f.d.mts +44 -0
- package/fjs/types/function/compare/module.f.mjs +71 -0
- package/fjs/types/function/compare/proof.f.mjs +50 -0
- package/fjs/types/function/compare/types.d.ts +22 -0
- package/fjs/types/function/compare/types.js +6 -0
- package/fjs/types/function/module.f.d.mts +26 -0
- package/fjs/types/function/module.f.mjs +32 -0
- package/fjs/types/function/operator/module.f.d.mts +37 -0
- package/fjs/types/function/operator/module.f.mjs +55 -0
- package/fjs/types/function/operator/proof.f.mjs +76 -0
- package/fjs/types/function/operator/types.d.ts +39 -0
- package/fjs/types/function/operator/types.js +6 -0
- package/fjs/types/function/proof.f.mjs +16 -0
- package/fjs/types/function/types.d.ts +16 -0
- package/fjs/types/function/types.js +6 -0
- package/fjs/types/list/module.f.d.mts +88 -0
- package/fjs/types/list/module.f.mjs +309 -0
- package/fjs/types/list/proof.f.d.mts +32 -0
- package/fjs/types/list/proof.f.mjs +363 -0
- package/fjs/types/list/types.d.ts +36 -0
- package/fjs/types/list/types.js +6 -0
- package/fjs/types/map/module.f.d.mts +13 -0
- package/fjs/types/map/module.f.mjs +42 -0
- package/fjs/types/map/proof.f.mjs +25 -0
- package/fjs/types/nibble_set/module.f.d.mts +30 -0
- package/fjs/types/nibble_set/module.f.mjs +43 -0
- package/fjs/types/nibble_set/proof.f.mjs +59 -0
- package/fjs/types/nibble_set/types.d.ts +9 -0
- package/fjs/types/nibble_set/types.js +6 -0
- package/fjs/types/nominal/module.f.d.mts +9 -0
- package/fjs/types/nominal/module.f.mjs +16 -0
- package/fjs/types/nominal/proof.f.d.mts +7 -0
- package/fjs/types/nominal/proof.f.mjs +79 -0
- package/fjs/types/nominal/types.d.ts +25 -0
- package/fjs/types/nominal/types.js +6 -0
- package/fjs/types/nullable/module.f.d.mts +38 -0
- package/fjs/types/nullable/module.f.mjs +53 -0
- package/fjs/types/nullable/proof.f.mjs +34 -0
- package/fjs/types/nullable/types.d.ts +6 -0
- package/fjs/types/nullable/types.js +6 -0
- package/fjs/types/number/module.f.d.mts +23 -0
- package/fjs/types/number/module.f.mjs +55 -0
- package/fjs/types/number/proof.f.mjs +204 -0
- package/fjs/types/object/module.f.d.mts +33 -0
- package/fjs/types/object/module.f.mjs +58 -0
- package/fjs/types/object/proof.f.d.mts +25 -0
- package/fjs/types/object/proof.f.mjs +26 -0
- package/fjs/types/object/types.d.ts +50 -0
- package/fjs/types/object/types.js +8 -0
- package/fjs/types/ordered_map/module.f.d.mts +21 -0
- package/fjs/types/ordered_map/module.f.mjs +54 -0
- package/fjs/types/ordered_map/proof.f.mjs +88 -0
- package/fjs/types/ordered_map/types.d.ts +8 -0
- package/fjs/types/ordered_map/types.js +6 -0
- package/fjs/types/patricia_trie/module.f.d.mts +19 -0
- package/fjs/types/patricia_trie/module.f.mjs +43 -0
- package/fjs/types/patricia_trie/proof.f.d.mts +14 -0
- package/fjs/types/patricia_trie/proof.f.mjs +148 -0
- package/fjs/types/patricia_trie/types.d.ts +34 -0
- package/fjs/types/patricia_trie/types.js +6 -0
- package/fjs/types/prime_field/module.f.d.mts +42 -0
- package/fjs/types/prime_field/module.f.mjs +136 -0
- package/fjs/types/prime_field/proof.f.mjs +131 -0
- package/fjs/types/prime_field/types.d.ts +38 -0
- package/fjs/types/prime_field/types.js +6 -0
- package/fjs/types/range/module.f.d.mts +11 -0
- package/fjs/types/range/module.f.mjs +13 -0
- package/fjs/types/range/proof.f.mjs +10 -0
- package/fjs/types/range/types.d.ts +6 -0
- package/fjs/types/range/types.js +6 -0
- package/fjs/types/range_map/module.f.d.mts +72 -0
- package/fjs/types/range_map/module.f.mjs +130 -0
- package/fjs/types/range_map/proof.f.d.mts +7 -0
- package/fjs/types/range_map/proof.f.mjs +186 -0
- package/fjs/types/range_map/types.d.ts +56 -0
- package/fjs/types/range_map/types.js +6 -0
- package/fjs/types/range_set/module.f.d.mts +5 -0
- package/fjs/types/range_set/module.f.mjs +19 -0
- package/fjs/types/range_set/proof.f.mjs +26 -0
- package/fjs/types/result/module.d.mts +5 -0
- package/fjs/types/result/module.f.d.mts +59 -0
- package/fjs/types/result/module.f.mjs +67 -0
- package/fjs/types/result/module.mjs +22 -0
- package/fjs/types/result/proof.f.mjs +41 -0
- package/fjs/types/result/types.d.ts +17 -0
- package/fjs/types/result/types.js +6 -0
- package/fjs/types/rtti/common/module.f.d.mts +86 -0
- package/fjs/types/rtti/common/module.f.mjs +183 -0
- package/fjs/types/rtti/common/proof.f.d.mts +9 -0
- package/fjs/types/rtti/common/proof.f.mjs +64 -0
- package/fjs/types/rtti/common/types.d.ts +43 -0
- package/fjs/types/rtti/common/types.js +1 -0
- package/fjs/types/rtti/module.f.d.mts +76 -0
- package/fjs/types/rtti/module.f.mjs +110 -0
- package/fjs/types/rtti/parse/module.f.d.mts +9 -0
- package/fjs/types/rtti/parse/module.f.mjs +196 -0
- package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
- package/fjs/types/rtti/parse/proof.f.mjs +363 -0
- package/fjs/types/rtti/parse/types.d.ts +12 -0
- package/fjs/types/rtti/parse/types.js +1 -0
- package/fjs/types/rtti/proof.f.d.mts +8 -0
- package/fjs/types/rtti/proof.f.mjs +20 -0
- package/fjs/types/rtti/ts/module.f.d.mts +34 -0
- package/fjs/types/rtti/ts/module.f.mjs +64 -0
- package/fjs/types/rtti/ts/proof.f.mjs +88 -0
- package/fjs/types/rtti/ts/types.d.ts +88 -0
- package/fjs/types/rtti/ts/types.js +1 -0
- package/fjs/types/rtti/types.d.ts +43 -0
- package/fjs/types/rtti/types.js +1 -0
- package/fjs/types/rtti/validate/module.f.d.mts +6 -0
- package/fjs/types/rtti/validate/module.f.mjs +169 -0
- package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
- package/fjs/types/rtti/validate/proof.f.mjs +437 -0
- package/fjs/types/rtti/validate/types.d.ts +6 -0
- package/fjs/types/rtti/validate/types.js +1 -0
- package/fjs/types/sorted_list/module.f.d.mts +43 -0
- package/fjs/types/sorted_list/module.f.mjs +110 -0
- package/fjs/types/sorted_list/proof.f.d.mts +5 -0
- package/fjs/types/sorted_list/proof.f.mjs +52 -0
- package/fjs/types/sorted_list/types.d.ts +15 -0
- package/fjs/types/sorted_list/types.js +6 -0
- package/fjs/types/sorted_set/module.f.d.mts +24 -0
- package/fjs/types/sorted_set/module.f.mjs +56 -0
- package/fjs/types/sorted_set/proof.f.d.mts +7 -0
- package/fjs/types/sorted_set/proof.f.mjs +77 -0
- package/fjs/types/sorted_set/types.d.ts +6 -0
- package/fjs/types/sorted_set/types.js +6 -0
- package/fjs/types/string/module.f.d.mts +36 -0
- package/fjs/types/string/module.f.mjs +58 -0
- package/fjs/types/string/proof.f.mjs +76 -0
- package/fjs/types/string_set/module.f.d.mts +37 -0
- package/fjs/types/string_set/module.f.mjs +53 -0
- package/fjs/types/string_set/proof.f.mjs +46 -0
- package/fjs/types/string_set/types.d.ts +7 -0
- package/fjs/types/string_set/types.js +6 -0
- package/fjs/types/ts/module.f.d.mts +20 -0
- package/fjs/types/ts/module.f.mjs +51 -0
- package/fjs/types/ts/proof.f.mjs +97 -0
- package/fjs/types/ts/types.d.ts +16 -0
- package/fjs/types/ts/types.js +8 -0
- package/fjs/types/uint8array/module.f.d.mts +31 -0
- package/fjs/types/uint8array/module.f.mjs +53 -0
- package/fjs/types/uint8array/proof.f.d.mts +17 -0
- package/fjs/types/uint8array/proof.f.mjs +73 -0
- package/fjs/website/module.f.d.mts +8 -0
- package/fjs/website/module.f.mjs +24 -0
- package/fjs/website/proof.f.mjs +14 -0
- package/package.json +12 -10
- package/todo/proof.f.d.mts +22 -0
- package/todo/proof.f.mjs +59 -0
- package/fjs/asn.1/module.f.d.ts +0 -62
- package/fjs/asn.1/module.f.js +0 -278
- package/fjs/asn.1/proof.f.js +0 -285
- package/fjs/asserts/module.f.d.ts +0 -36
- package/fjs/asserts/module.f.js +0 -39
- package/fjs/asserts/proof.f.js +0 -18
- package/fjs/base_n/module.f.d.ts +0 -45
- package/fjs/base_n/module.f.js +0 -72
- package/fjs/base_n/proof.f.js +0 -73
- package/fjs/basen/base128/module.f.d.ts +0 -20
- package/fjs/basen/base128/module.f.js +0 -43
- package/fjs/basen/base128/proof.f.js +0 -26
- package/fjs/basen/base64/module.f.d.ts +0 -9
- package/fjs/basen/base64/module.f.js +0 -71
- package/fjs/basen/base64/proof.f.d.ts +0 -16
- package/fjs/basen/base64/proof.f.js +0 -139
- package/fjs/basen/cbase32/module.f.d.ts +0 -11
- package/fjs/basen/cbase32/module.f.js +0 -55
- package/fjs/basen/cbase32/proof.f.d.ts +0 -7
- package/fjs/basen/cbase32/proof.f.js +0 -62
- package/fjs/bnf/data/module.f.d.ts +0 -52
- package/fjs/bnf/data/module.f.js +0 -143
- package/fjs/bnf/data/proof.f.d.ts +0 -8
- package/fjs/bnf/data/proof.f.js +0 -169
- package/fjs/bnf/descent/module.f.d.ts +0 -87
- package/fjs/bnf/descent/module.f.js +0 -149
- package/fjs/bnf/descent/proof.f.d.ts +0 -7
- package/fjs/bnf/descent/proof.f.js +0 -368
- package/fjs/bnf/ll1/module.f.d.ts +0 -72
- package/fjs/bnf/ll1/module.f.js +0 -155
- package/fjs/bnf/ll1/proof.f.d.ts +0 -10
- package/fjs/bnf/ll1/proof.f.js +0 -375
- package/fjs/bnf/module.f.d.ts +0 -165
- package/fjs/bnf/module.f.js +0 -174
- package/fjs/bnf/proof.f.d.ts +0 -12
- package/fjs/bnf/proof.f.js +0 -69
- package/fjs/bnf/testlib.f.d.ts +0 -3
- package/fjs/bnf/testlib.f.js +0 -138
- package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
- package/fjs/bnf/token_symbol/module.f.js +0 -48
- package/fjs/bnf/token_symbol/proof.f.js +0 -37
- package/fjs/cas/cli/module.f.d.ts +0 -6
- package/fjs/cas/cli/module.f.js +0 -53
- package/fjs/cas/cli/proof.f.d.ts +0 -17
- package/fjs/cas/cli/proof.f.js +0 -112
- package/fjs/cas/evo/module.f.d.ts +0 -222
- package/fjs/cas/evo/module.f.js +0 -454
- package/fjs/cas/evo/proof.f.d.ts +0 -43
- package/fjs/cas/evo/proof.f.js +0 -653
- package/fjs/cas/module.f.d.ts +0 -64
- package/fjs/cas/module.f.js +0 -255
- package/fjs/cas/proof.f.d.ts +0 -18
- package/fjs/cas/proof.f.js +0 -305
- package/fjs/ci/bun/module.f.d.ts +0 -2
- package/fjs/ci/bun/module.f.js +0 -15
- package/fjs/ci/common/module.f.d.ts +0 -88
- package/fjs/ci/common/module.f.js +0 -63
- package/fjs/ci/config/module.f.d.ts +0 -45
- package/fjs/ci/config/module.f.js +0 -80
- package/fjs/ci/deno/module.f.d.ts +0 -10
- package/fjs/ci/deno/module.f.js +0 -28
- package/fjs/ci/deno/proof.f.d.ts +0 -5
- package/fjs/ci/deno/proof.f.js +0 -26
- package/fjs/ci/module.f.d.ts +0 -13
- package/fjs/ci/module.f.js +0 -58
- package/fjs/ci/nix/module.f.d.ts +0 -61
- package/fjs/ci/nix/module.f.js +0 -92
- package/fjs/ci/nix/proof.f.d.ts +0 -23
- package/fjs/ci/nix/proof.f.js +0 -109
- package/fjs/ci/node/module.f.d.ts +0 -28
- package/fjs/ci/node/module.f.js +0 -92
- package/fjs/ci/node/proof.f.js +0 -17
- package/fjs/ci/proof.f.d.ts +0 -18
- package/fjs/ci/proof.f.js +0 -182
- package/fjs/ci/rust/module.f.d.ts +0 -3
- package/fjs/ci/rust/module.f.js +0 -75
- package/fjs/cli/module.f.d.ts +0 -11
- package/fjs/cli/module.f.js +0 -34
- package/fjs/cli/proof.f.d.ts +0 -14
- package/fjs/cli/proof.f.js +0 -111
- package/fjs/common/monoid/module.f.d.ts +0 -126
- package/fjs/common/monoid/module.f.js +0 -88
- package/fjs/common/monoid/proof.f.d.ts +0 -9
- package/fjs/common/monoid/proof.f.js +0 -48
- package/fjs/crypto/hmac/module.f.d.ts +0 -29
- package/fjs/crypto/hmac/module.f.js +0 -56
- package/fjs/crypto/hmac/proof.f.js +0 -32
- package/fjs/crypto/pow/module.f.d.ts +0 -37
- package/fjs/crypto/pow/module.f.js +0 -72
- package/fjs/crypto/pow/proof.f.js +0 -111
- package/fjs/crypto/secp/module.f.d.ts +0 -85
- package/fjs/crypto/secp/module.f.js +0 -176
- package/fjs/crypto/secp/proof.f.d.ts +0 -8
- package/fjs/crypto/secp/proof.f.js +0 -124
- package/fjs/crypto/sha2/module.f.d.ts +0 -102
- package/fjs/crypto/sha2/module.f.js +0 -266
- package/fjs/crypto/sha2/proof.f.d.ts +0 -31
- package/fjs/crypto/sha2/proof.f.js +0 -139
- package/fjs/crypto/sign/module.f.d.ts +0 -33
- package/fjs/crypto/sign/module.f.js +0 -163
- package/fjs/crypto/sign/proof.f.d.ts +0 -11
- package/fjs/crypto/sign/proof.f.js +0 -562
- package/fjs/crypto/vdf/module.f.d.ts +0 -21
- package/fjs/crypto/vdf/module.f.js +0 -57
- package/fjs/crypto/vdf/proof.f.js +0 -94
- package/fjs/dev/module.f.d.ts +0 -57
- package/fjs/dev/module.f.js +0 -135
- package/fjs/dev/package_json/module.f.d.ts +0 -16
- package/fjs/dev/package_json/module.f.js +0 -24
- package/fjs/dev/package_json/proof.f.js +0 -28
- package/fjs/dev/proof.f.d.ts +0 -13
- package/fjs/dev/proof.f.js +0 -77
- package/fjs/dev/update/module.f.d.ts +0 -11
- package/fjs/dev/update/module.f.js +0 -20
- package/fjs/dev/update/proof.f.d.ts +0 -7
- package/fjs/dev/update/proof.f.js +0 -35
- package/fjs/djs/ast/module.f.d.ts +0 -62
- package/fjs/djs/ast/module.f.js +0 -61
- package/fjs/djs/ast/proof.f.js +0 -49
- package/fjs/djs/examples/input.f.js +0 -4
- package/fjs/djs/examples/m.f.js +0 -1
- package/fjs/djs/module.f.d.ts +0 -17
- package/fjs/djs/module.f.js +0 -22
- package/fjs/djs/parser/module.f.d.ts +0 -23
- package/fjs/djs/parser/module.f.js +0 -410
- package/fjs/djs/parser/proof.f.js +0 -556
- package/fjs/djs/proof.f.js +0 -50
- package/fjs/djs/serializer/module.f.d.ts +0 -17
- package/fjs/djs/serializer/module.f.js +0 -173
- package/fjs/djs/serializer/proof.f.js +0 -133
- package/fjs/djs/tokenizer/module.f.d.ts +0 -24
- package/fjs/djs/tokenizer/module.f.js +0 -472
- package/fjs/djs/tokenizer/proof.f.js +0 -1211
- package/fjs/djs/transpiler/module.f.d.ts +0 -41
- package/fjs/djs/transpiler/module.f.js +0 -88
- package/fjs/djs/transpiler/proof.f.js +0 -67
- package/fjs/effects/eff/module.f.d.ts +0 -72
- package/fjs/effects/eff/module.f.js +0 -46
- package/fjs/effects/eff/proof.f.d.ts +0 -11
- package/fjs/effects/eff/proof.f.js +0 -58
- package/fjs/effects/list/module.f.d.ts +0 -37
- package/fjs/effects/list/module.f.js +0 -17
- package/fjs/effects/memory/module.f.d.ts +0 -37
- package/fjs/effects/memory/module.f.js +0 -24
- package/fjs/effects/memory/proof.f.d.ts +0 -6
- package/fjs/effects/memory/proof.f.js +0 -50
- package/fjs/effects/mock/module.f.d.ts +0 -16
- package/fjs/effects/mock/module.f.js +0 -20
- package/fjs/effects/module.d.ts +0 -2
- package/fjs/effects/module.f.d.ts +0 -408
- package/fjs/effects/module.f.js +0 -312
- package/fjs/effects/module.js +0 -11
- package/fjs/effects/node/memory/module.d.ts +0 -20
- package/fjs/effects/node/memory/module.js +0 -44
- package/fjs/effects/node/memory/proof.js +0 -29
- package/fjs/effects/node/module.d.ts +0 -20
- package/fjs/effects/node/module.f.d.ts +0 -300
- package/fjs/effects/node/module.f.js +0 -171
- package/fjs/effects/node/module.js +0 -305
- package/fjs/effects/node/proof.f.d.ts +0 -69
- package/fjs/effects/node/proof.f.js +0 -409
- package/fjs/effects/node/virtual/module.f.d.ts +0 -49
- package/fjs/effects/node/virtual/module.f.js +0 -440
- package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
- package/fjs/effects/node/virtual/proof.f.js +0 -186
- package/fjs/effects/proof.f.d.ts +0 -56
- package/fjs/effects/proof.f.js +0 -200
- package/fjs/emergent_testing/example.f.d.ts +0 -13
- package/fjs/emergent_testing/example.f.js +0 -31
- package/fjs/emergent_testing/module.f.d.ts +0 -140
- package/fjs/emergent_testing/module.f.js +0 -289
- package/fjs/emergent_testing/proof.f.d.ts +0 -67
- package/fjs/emergent_testing/proof.f.js +0 -416
- package/fjs/fsc/bnf.f.d.ts +0 -2
- package/fjs/fsc/bnf.f.js +0 -42
- package/fjs/fsc/json.f.d.ts +0 -7
- package/fjs/fsc/json.f.js +0 -64
- package/fjs/fsc/module.f.d.ts +0 -11
- package/fjs/fsc/module.f.js +0 -73
- package/fjs/fsc/proof.f.js +0 -104
- package/fjs/fsm/module.f.d.ts +0 -17
- package/fjs/fsm/module.f.js +0 -55
- package/fjs/fsm/proof.f.js +0 -126
- package/fjs/js/tokenizer/module.f.d.ts +0 -104
- package/fjs/js/tokenizer/module.f.js +0 -547
- package/fjs/js/tokenizer/proof.f.d.ts +0 -9
- package/fjs/js/tokenizer/proof.f.js +0 -986
- package/fjs/mcp/cas/module.f.d.ts +0 -27
- package/fjs/mcp/cas/module.f.js +0 -232
- package/fjs/mcp/evo/module.f.d.ts +0 -32
- package/fjs/mcp/evo/module.f.js +0 -99
- package/fjs/mcp/evo/proof.f.d.ts +0 -12
- package/fjs/mcp/evo/proof.f.js +0 -147
- package/fjs/mcp/module.f.d.ts +0 -56
- package/fjs/mcp/module.f.js +0 -69
- package/fjs/mcp/proof.f.d.ts +0 -45
- package/fjs/mcp/proof.f.js +0 -535
- package/fjs/media/html/module.f.d.ts +0 -52
- package/fjs/media/html/module.f.js +0 -117
- package/fjs/media/html/proof.f.js +0 -65
- package/fjs/media/json/module.f.d.ts +0 -64
- package/fjs/media/json/module.f.js +0 -109
- package/fjs/media/json/parser/module.f.d.ts +0 -21
- package/fjs/media/json/parser/module.f.js +0 -194
- package/fjs/media/json/parser/proof.f.d.ts +0 -5
- package/fjs/media/json/parser/proof.f.js +0 -314
- package/fjs/media/json/proof.f.js +0 -98
- package/fjs/media/json/schema/module.f.d.ts +0 -78
- package/fjs/media/json/schema/module.f.js +0 -96
- package/fjs/media/json/schema/proof.f.d.ts +0 -36
- package/fjs/media/json/schema/proof.f.js +0 -83
- package/fjs/media/json/serializer/module.f.d.ts +0 -28
- package/fjs/media/json/serializer/module.f.js +0 -73
- package/fjs/media/json/serializer/proof.f.js +0 -94
- package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
- package/fjs/media/json/tokenizer/module.f.js +0 -63
- package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
- package/fjs/media/json/tokenizer/proof.f.js +0 -417
- package/fjs/media/module.f.d.ts +0 -119
- package/fjs/media/module.f.js +0 -88
- package/fjs/media/nix/module.f.d.ts +0 -30
- package/fjs/media/nix/module.f.js +0 -166
- package/fjs/media/nix/proof.f.js +0 -127
- package/fjs/media/proof.f.d.ts +0 -19
- package/fjs/media/proof.f.js +0 -127
- package/fjs/media/revision/module.f.d.ts +0 -86
- package/fjs/media/revision/module.f.js +0 -131
- package/fjs/media/revision/proof.f.d.ts +0 -31
- package/fjs/media/revision/proof.f.js +0 -140
- package/fjs/media/type/module.f.d.ts +0 -135
- package/fjs/media/type/module.f.js +0 -231
- package/fjs/media/type/proof.f.js +0 -213
- package/fjs/module.f.d.ts +0 -2
- package/fjs/module.f.js +0 -50
- package/fjs/module.js +0 -4
- package/fjs/path/module.f.d.ts +0 -46
- package/fjs/path/module.f.js +0 -71
- package/fjs/path/proof.f.js +0 -119
- package/fjs/proof.f.js +0 -38
- package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
- package/fjs/protocol/json_rpc/module.f.js +0 -89
- package/fjs/protocol/json_rpc/proof.f.js +0 -68
- package/fjs/protocol/mcp/module.f.d.ts +0 -239
- package/fjs/protocol/mcp/module.f.js +0 -272
- package/fjs/protocol/mcp/proof.f.d.ts +0 -34
- package/fjs/protocol/mcp/proof.f.js +0 -208
- package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
- package/fjs/protocol/mcp/stdio/module.f.js +0 -78
- package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
- package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
- package/fjs/sul/id/module.f.d.ts +0 -33
- package/fjs/sul/id/module.f.js +0 -93
- package/fjs/sul/id/proof.f.js +0 -61
- package/fjs/sul/level/hash/module.f.d.ts +0 -38
- package/fjs/sul/level/hash/module.f.js +0 -43
- package/fjs/sul/level/hash/proof.f.d.ts +0 -13
- package/fjs/sul/level/hash/proof.f.js +0 -112
- package/fjs/sul/level/literal/module.f.d.ts +0 -64
- package/fjs/sul/level/literal/module.f.js +0 -88
- package/fjs/sul/level/literal/proof.f.js +0 -714
- package/fjs/sul/module.f.d.ts +0 -23
- package/fjs/sul/module.f.js +0 -46
- package/fjs/sul/proof.f.d.ts +0 -9
- package/fjs/sul/proof.f.js +0 -47
- package/fjs/text/ascii/module.f.d.ts +0 -136
- package/fjs/text/ascii/module.f.js +0 -154
- package/fjs/text/ascii/proof.f.js +0 -14
- package/fjs/text/code_point/module.f.d.ts +0 -65
- package/fjs/text/code_point/module.f.js +0 -103
- package/fjs/text/code_point/proof.f.js +0 -72
- package/fjs/text/module.f.d.ts +0 -40
- package/fjs/text/module.f.js +0 -43
- package/fjs/text/proof.f.js +0 -44
- package/fjs/text/sgr/module.f.d.ts +0 -53
- package/fjs/text/sgr/module.f.js +0 -63
- package/fjs/text/sgr/proof.f.js +0 -33
- package/fjs/text/utf16/module.f.d.ts +0 -161
- package/fjs/text/utf16/module.f.js +0 -311
- package/fjs/text/utf16/proof.f.d.ts +0 -10
- package/fjs/text/utf16/proof.f.js +0 -144
- package/fjs/text/utf8/module.f.d.ts +0 -83
- package/fjs/text/utf8/module.f.js +0 -247
- package/fjs/text/utf8/proof.f.js +0 -217
- package/fjs/types/array/module.f.d.ts +0 -49
- package/fjs/types/array/module.f.js +0 -42
- package/fjs/types/array/proof.f.js +0 -92
- package/fjs/types/bigfloat/module.f.d.ts +0 -6
- package/fjs/types/bigfloat/module.f.js +0 -69
- package/fjs/types/bigfloat/proof.f.js +0 -217
- package/fjs/types/bigint/module.f.d.ts +0 -172
- package/fjs/types/bigint/module.f.js +0 -251
- package/fjs/types/bigint/proof.f.d.ts +0 -37
- package/fjs/types/bigint/proof.f.js +0 -400
- package/fjs/types/bit_vec/module.f.d.ts +0 -302
- package/fjs/types/bit_vec/module.f.js +0 -375
- package/fjs/types/bit_vec/proof.f.js +0 -465
- package/fjs/types/btree/find/module.f.d.ts +0 -25
- package/fjs/types/btree/find/module.f.js +0 -80
- package/fjs/types/btree/find/proof.f.d.ts +0 -3
- package/fjs/types/btree/find/proof.f.js +0 -108
- package/fjs/types/btree/module.f.d.ts +0 -9
- package/fjs/types/btree/module.f.js +0 -33
- package/fjs/types/btree/proof.f.d.ts +0 -13
- package/fjs/types/btree/proof.f.js +0 -64
- package/fjs/types/btree/remove/module.f.d.ts +0 -14
- package/fjs/types/btree/remove/module.f.js +0 -186
- package/fjs/types/btree/remove/proof.f.js +0 -484
- package/fjs/types/btree/set/module.f.d.ts +0 -8
- package/fjs/types/btree/set/module.f.js +0 -128
- package/fjs/types/btree/set/proof.f.js +0 -368
- package/fjs/types/btree/types/module.f.d.ts +0 -23
- package/fjs/types/btree/types/module.f.js +0 -9
- package/fjs/types/byte_set/module.f.d.ts +0 -16
- package/fjs/types/byte_set/module.f.js +0 -30
- package/fjs/types/byte_set/proof.f.d.ts +0 -11
- package/fjs/types/byte_set/proof.f.js +0 -79
- package/fjs/types/function/compare/module.f.d.ts +0 -49
- package/fjs/types/function/compare/module.f.js +0 -51
- package/fjs/types/function/compare/proof.f.js +0 -47
- package/fjs/types/function/module.f.d.ts +0 -28
- package/fjs/types/function/module.f.js +0 -19
- package/fjs/types/function/operator/module.f.d.ts +0 -48
- package/fjs/types/function/operator/module.f.js +0 -16
- package/fjs/types/function/operator/proof.f.js +0 -53
- package/fjs/types/function/proof.f.js +0 -10
- package/fjs/types/list/module.f.d.ts +0 -75
- package/fjs/types/list/module.f.js +0 -190
- package/fjs/types/list/proof.f.d.ts +0 -31
- package/fjs/types/list/proof.f.js +0 -330
- package/fjs/types/map/module.f.d.ts +0 -2
- package/fjs/types/map/module.f.js +0 -22
- package/fjs/types/map/proof.f.js +0 -22
- package/fjs/types/nibble_set/module.f.d.ts +0 -27
- package/fjs/types/nibble_set/module.f.js +0 -25
- package/fjs/types/nibble_set/proof.f.js +0 -60
- package/fjs/types/nominal/module.f.d.ts +0 -22
- package/fjs/types/nominal/module.f.js +0 -13
- package/fjs/types/nominal/proof.f.d.ts +0 -4
- package/fjs/types/nominal/proof.f.js +0 -48
- package/fjs/types/nullable/module.f.d.ts +0 -21
- package/fjs/types/nullable/module.f.js +0 -29
- package/fjs/types/nullable/proof.f.js +0 -29
- package/fjs/types/number/module.f.d.ts +0 -16
- package/fjs/types/number/module.f.js +0 -30
- package/fjs/types/number/proof.f.js +0 -124
- package/fjs/types/object/module.f.d.ts +0 -54
- package/fjs/types/object/module.f.js +0 -25
- package/fjs/types/object/proof.f.d.ts +0 -4
- package/fjs/types/object/proof.f.js +0 -14
- package/fjs/types/ordered_map/module.f.d.ts +0 -17
- package/fjs/types/ordered_map/module.f.js +0 -22
- package/fjs/types/ordered_map/proof.f.js +0 -73
- package/fjs/types/patricia_trie/module.f.d.ts +0 -25
- package/fjs/types/patricia_trie/module.f.js +0 -35
- package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
- package/fjs/types/patricia_trie/proof.f.js +0 -121
- package/fjs/types/prime_field/module.f.d.ts +0 -62
- package/fjs/types/prime_field/module.f.js +0 -112
- package/fjs/types/prime_field/proof.f.js +0 -128
- package/fjs/types/range/module.f.d.ts +0 -8
- package/fjs/types/range/module.f.js +0 -2
- package/fjs/types/range/proof.f.js +0 -9
- package/fjs/types/range_map/module.f.d.ts +0 -92
- package/fjs/types/range_map/module.f.js +0 -82
- package/fjs/types/range_map/proof.f.d.ts +0 -6
- package/fjs/types/range_map/proof.f.js +0 -151
- package/fjs/types/range_set/module.f.d.ts +0 -5
- package/fjs/types/range_set/module.f.js +0 -16
- package/fjs/types/range_set/proof.f.d.ts +0 -1
- package/fjs/types/range_set/proof.f.js +0 -19
- package/fjs/types/result/module.d.ts +0 -3
- package/fjs/types/result/module.f.d.ts +0 -61
- package/fjs/types/result/module.f.js +0 -54
- package/fjs/types/result/module.js +0 -19
- package/fjs/types/result/proof.f.js +0 -31
- package/fjs/types/rtti/common/module.f.d.ts +0 -121
- package/fjs/types/rtti/common/module.f.js +0 -94
- package/fjs/types/rtti/common/proof.f.d.ts +0 -8
- package/fjs/types/rtti/common/proof.f.js +0 -51
- package/fjs/types/rtti/module.f.d.ts +0 -75
- package/fjs/types/rtti/module.f.js +0 -34
- package/fjs/types/rtti/parse/module.f.d.ts +0 -36
- package/fjs/types/rtti/parse/module.f.js +0 -114
- package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
- package/fjs/types/rtti/parse/proof.f.js +0 -334
- package/fjs/types/rtti/proof.f.d.ts +0 -5
- package/fjs/types/rtti/proof.f.js +0 -16
- package/fjs/types/rtti/ts/module.f.d.ts +0 -118
- package/fjs/types/rtti/ts/module.f.js +0 -59
- package/fjs/types/rtti/ts/proof.f.js +0 -75
- package/fjs/types/rtti/validate/module.f.d.ts +0 -4
- package/fjs/types/rtti/validate/module.f.js +0 -74
- package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
- package/fjs/types/rtti/validate/proof.f.js +0 -349
- package/fjs/types/sorted_list/module.f.d.ts +0 -26
- package/fjs/types/sorted_list/module.f.js +0 -51
- package/fjs/types/sorted_list/proof.f.d.ts +0 -4
- package/fjs/types/sorted_list/proof.f.js +0 -46
- package/fjs/types/sorted_set/module.f.d.ts +0 -33
- package/fjs/types/sorted_set/module.f.js +0 -5
- package/fjs/types/sorted_set/proof.f.d.ts +0 -6
- package/fjs/types/sorted_set/proof.f.js +0 -67
- package/fjs/types/string/module.f.d.ts +0 -24
- package/fjs/types/string/module.f.js +0 -35
- package/fjs/types/string/proof.f.js +0 -77
- package/fjs/types/string_set/module.f.d.ts +0 -30
- package/fjs/types/string_set/module.f.js +0 -37
- package/fjs/types/string_set/proof.f.js +0 -43
- package/fjs/types/ts/module.f.d.ts +0 -23
- package/fjs/types/ts/module.f.js +0 -27
- package/fjs/types/ts/proof.f.js +0 -86
- package/fjs/types/uint8array/module.f.d.ts +0 -13
- package/fjs/types/uint8array/module.f.js +0 -34
- package/fjs/types/uint8array/proof.f.d.ts +0 -17
- package/fjs/types/uint8array/proof.f.js +0 -64
- package/fjs/website/module.f.d.ts +0 -3
- package/fjs/website/module.f.js +0 -14
- package/fjs/website/proof.f.js +0 -13
- package/nanvm-lib/tests/proof.f.d.ts +0 -122
- package/nanvm-lib/tests/proof.f.js +0 -330
- package/todo/031-json.f.js +0 -241
- package/todo/proof.f.d.ts +0 -20
- package/todo/proof.f.js +0 -62
- /package/fjs/asn.1/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/asserts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
- /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/{todo/031-json.f.d.ts → fjs/ci/common/types.js} +0 -0
- /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
- /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
- /package/fjs/djs/parser/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/tokenizer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/effects/node/memory/{proof.d.ts → proof.d.mts} +0 -0
- /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/fsm/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/html/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/nix/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/type/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{module.d.ts → module.d.mts} +0 -0
- /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/protocol/json_rpc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/level/literal/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/ascii/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/code_point/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/sgr/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/bigfloat/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/bit_vec/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/remove/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
- /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nullable/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/option/{module.f.js → types.js} +0 -0
- /package/fjs/types/ordered_map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/phantom/{module.f.js → types.js} +0 -0
- /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
- /package/fjs/types/{range/proof.f.d.ts → range_set/proof.f.d.mts} +0 -0
- /package/fjs/types/result/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/rtti/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
package/README.md
CHANGED
|
@@ -28,39 +28,71 @@ Install FunctionalScript via npm:
|
|
|
28
28
|
npm install -g functionalscript
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
or run the CLI without installing it, with `npx functionalscript <command>`.
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|------------------|-----------------------------------------------------------|
|
|
35
|
-
| `fjs test` / `t` | Run the FunctionalScript test suite |
|
|
36
|
-
| `fjs compile` / `c` | Compile a `.f.ts` module to JavaScript |
|
|
37
|
-
| `fjs run` / `r` | Run a FunctionalScript module as a Node program |
|
|
38
|
-
| `fjs cas` / `s` | Content-addressable storage (`add`, `get`, `list`) |
|
|
39
|
-
| `fjs mcp` / `m` | Run an MCP server over stdio exposing the CAS as tools |
|
|
40
|
-
| `fjs ci` / `i` | Generate the GitHub Actions CI workflow |
|
|
33
|
+
### Compiling a module
|
|
41
34
|
|
|
42
|
-
|
|
35
|
+
A FunctionalScript module is already a valid JavaScript module, so nothing has to
|
|
36
|
+
be compiled in order to *run* it. The compiler serves the other direction: it
|
|
37
|
+
evaluates a module and emits the data it exports, with every `import` resolved.
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
`m.f.js`:
|
|
45
40
|
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
fjs cas get <hash> # restore a blob by hash
|
|
49
|
-
fjs cas list # list all stored hashes
|
|
41
|
+
```js
|
|
42
|
+
export default "text"
|
|
50
43
|
```
|
|
51
44
|
|
|
52
|
-
|
|
45
|
+
`input.f.js`:
|
|
53
46
|
|
|
54
|
-
|
|
47
|
+
```js
|
|
48
|
+
import c from "./m.f.js"
|
|
49
|
+
const a = 1
|
|
50
|
+
export default [a, a, c, { x: c }]
|
|
51
|
+
```
|
|
55
52
|
|
|
56
|
-
The
|
|
53
|
+
The output file extension picks the format:
|
|
57
54
|
|
|
58
55
|
```bash
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
fjs compile input.f.js output.f.js # JavaScript
|
|
57
|
+
fjs compile input.f.js output.json # JSON
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`output.f.js` preserves the object graph — a value referenced more than once
|
|
61
|
+
stays shared and is emitted as a `const`:
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
const c0 = "text"
|
|
65
|
+
export default [1,1,c0,{"x":c0}]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`output.json` is a tree, so shared values are expanded, and types that JSON
|
|
69
|
+
cannot express (`bigint`, `undefined`) are not available:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
[1,1,"text",{"x":"text"}]
|
|
61
73
|
```
|
|
62
74
|
|
|
63
|
-
|
|
75
|
+
The compiler currently accepts `import` statements, `const` declarations, and
|
|
76
|
+
data expressions (objects, arrays, strings, numbers, `bigint`, booleans, `null`,
|
|
77
|
+
`undefined`). Functions and computed expressions are not supported yet. See
|
|
78
|
+
[fjs/djs/README.md](fjs/djs/README.md) for the data language and its roadmap, and
|
|
79
|
+
[fjs/fsc/README.md](fjs/fsc/README.md) for the compiler itself.
|
|
80
|
+
|
|
81
|
+
### The `fjs` CLI
|
|
82
|
+
|
|
83
|
+
| Command | Description | Documentation |
|
|
84
|
+
|---------------|----------------------------------------------------------------|--------------------------------------------------------|
|
|
85
|
+
| `fjs test` | Run the FunctionalScript test suite | [fjs/emergent_testing](fjs/emergent_testing/README.md) |
|
|
86
|
+
| `fjs compile` | Compile a FunctionalScript module to JavaScript or JSON | [fjs/djs](fjs/djs/README.md) |
|
|
87
|
+
| `fjs run` | Run a FunctionalScript module as a Node program | [fjs/README.md](fjs/README.md) |
|
|
88
|
+
| `fjs cas` | Content-addressable storage (`add`, `get`, `list`) | [fjs/cas/README.md](fjs/cas/README.md) |
|
|
89
|
+
| `fjs mcp` | [MCP](https://modelcontextprotocol.io/) server over stdio, exposing the CAS and Evo as tools | [fjs/mcp/README.md](fjs/mcp/README.md) |
|
|
90
|
+
| `fjs ci` | Generate the GitHub Actions CI workflow | [fjs/ci/README.md](fjs/ci/README.md) |
|
|
91
|
+
|
|
92
|
+
Run `fjs help` to print the available commands, or see
|
|
93
|
+
[fjs/README.md](fjs/README.md) for the full CLI reference. Commands also accept
|
|
94
|
+
short aliases, which `fjs help` prints; the documentation spells them out
|
|
95
|
+
instead.
|
|
64
96
|
|
|
65
97
|
## Vision
|
|
66
98
|
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ASN.1 BER/DER encoding and decoding over bit vectors. Includes tag/class
|
|
3
|
+
* helpers, length-prefixed payloads, and OID conversion via Base-128.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Unpacked, Vec } from '../types/bit_vec/types.ts'
|
|
8
|
+
* @import { ObjectIdentifier, Raw, Record, Sequence, SupportedRecord, _Tag } from './types.ts'
|
|
9
|
+
*/
|
|
10
|
+
import type { Vec } from '../types/bit_vec/types.ts';
|
|
11
|
+
import type { ObjectIdentifier, Raw, Record, Sequence } from './types.ts';
|
|
12
|
+
export type _ClassPc = 0n | 32n | 64n | 96n | 128n | 160n | 192n | 224n;
|
|
13
|
+
export type _ParsedTag = readonly [_ClassPc, bigint];
|
|
14
|
+
/** ASN.1 universal BOOLEAN tag. */
|
|
15
|
+
export declare const boolean = 1n;
|
|
16
|
+
/** ASN.1 universal INTEGER tag. */
|
|
17
|
+
export declare const integer = 2n;
|
|
18
|
+
/** ASN.1 universal OCTET STRING tag. */
|
|
19
|
+
export declare const octetString = 4n;
|
|
20
|
+
/** ASN.1 universal OBJECT IDENTIFIER tag. */
|
|
21
|
+
export declare const objectIdentifier = 6n;
|
|
22
|
+
export declare const constructedSequence = 48n;
|
|
23
|
+
export declare const constructedSet = 49n;
|
|
24
|
+
export type _Round8 = {
|
|
25
|
+
readonly byteLen: bigint;
|
|
26
|
+
readonly v: Vec;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Encodes a raw ASN.1 TLV tuple into a bit vector.
|
|
30
|
+
*
|
|
31
|
+
* @type {(_: Raw) => Vec}
|
|
32
|
+
*/
|
|
33
|
+
export declare const encodeRaw: (_: Raw) => Vec;
|
|
34
|
+
/**
|
|
35
|
+
* Decodes a raw ASN.1 TLV tuple and returns the remaining input.
|
|
36
|
+
*
|
|
37
|
+
* @type {(v: Vec) => readonly[Raw, Vec]}
|
|
38
|
+
*/
|
|
39
|
+
export declare const decodeRaw: (v: Vec) => readonly [Raw, Vec];
|
|
40
|
+
/**
|
|
41
|
+
* Encodes a JavaScript boolean as an ASN.1 BOOLEAN value.
|
|
42
|
+
*
|
|
43
|
+
* @type {(b: boolean) => Vec}
|
|
44
|
+
*/
|
|
45
|
+
export declare const encodeBoolean: (b: boolean) => Vec;
|
|
46
|
+
/**
|
|
47
|
+
* Decodes an ASN.1 BOOLEAN value.
|
|
48
|
+
*
|
|
49
|
+
* @type {(v: Vec) => boolean}
|
|
50
|
+
*/
|
|
51
|
+
export declare const decodeBoolean: (v: Vec) => boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Encodes a signed bigint using ASN.1 INTEGER two's complement representation.
|
|
54
|
+
*
|
|
55
|
+
* @type {(uint: bigint) => Vec}
|
|
56
|
+
*/
|
|
57
|
+
export declare const encodeInteger: (uint: bigint) => Vec;
|
|
58
|
+
/**
|
|
59
|
+
* Decodes an ASN.1 INTEGER encoded in two's complement.
|
|
60
|
+
*
|
|
61
|
+
* @type {(v: Vec) => bigint}
|
|
62
|
+
*/
|
|
63
|
+
export declare const decodeInteger: (v: Vec) => bigint;
|
|
64
|
+
/**
|
|
65
|
+
* Encodes an OCTET STRING value.
|
|
66
|
+
*
|
|
67
|
+
* @type {(v: Vec) => Vec}
|
|
68
|
+
*/
|
|
69
|
+
export declare const encodeOctetString: (v: Vec) => Vec;
|
|
70
|
+
/**
|
|
71
|
+
* Decodes an OCTET STRING value.
|
|
72
|
+
*
|
|
73
|
+
* @type {(v: Vec) => Vec}
|
|
74
|
+
*/
|
|
75
|
+
export declare const decodeOctetString: (v: Vec) => Vec;
|
|
76
|
+
/**
|
|
77
|
+
* Encodes an OBJECT IDENTIFIER value.
|
|
78
|
+
*
|
|
79
|
+
* @type {(oid: ObjectIdentifier) => Vec}
|
|
80
|
+
*/
|
|
81
|
+
export declare const encodeObjectIdentifier: (oid: ObjectIdentifier) => Vec;
|
|
82
|
+
/**
|
|
83
|
+
* Decodes an OBJECT IDENTIFIER value.
|
|
84
|
+
*
|
|
85
|
+
* @type {(v: Vec) => ObjectIdentifier}
|
|
86
|
+
*/
|
|
87
|
+
export declare const decodeObjectIdentifier: (v: Vec) => ObjectIdentifier;
|
|
88
|
+
/**
|
|
89
|
+
* Encodes a SEQUENCE payload from ordered records.
|
|
90
|
+
*
|
|
91
|
+
* @type {(...records: Sequence) => Vec}
|
|
92
|
+
*/
|
|
93
|
+
export declare const encodeSequence: (...records: Sequence) => Vec;
|
|
94
|
+
/**
|
|
95
|
+
* Decodes a SEQUENCE payload into records.
|
|
96
|
+
*
|
|
97
|
+
* @type {(v: Vec) => Sequence}
|
|
98
|
+
*/
|
|
99
|
+
export declare const decodeSequence: (v: Vec) => Sequence;
|
|
100
|
+
/**
|
|
101
|
+
* Encodes a SET payload with canonical byte ordering.
|
|
102
|
+
*
|
|
103
|
+
* @type {(...records: Sequence) => Vec}
|
|
104
|
+
*/
|
|
105
|
+
export declare const encodeSet: (...records: Sequence) => Vec;
|
|
106
|
+
/**
|
|
107
|
+
* Decodes a SET payload.
|
|
108
|
+
*
|
|
109
|
+
* @type {(v: Vec) => Sequence}
|
|
110
|
+
*/
|
|
111
|
+
export declare const decodeSet: (v: Vec) => Sequence;
|
|
112
|
+
/**
|
|
113
|
+
* Encodes a supported ASN.1 record as TLV.
|
|
114
|
+
*
|
|
115
|
+
* @type {(record: Record) => Vec}
|
|
116
|
+
*/
|
|
117
|
+
export declare const encode: (record: Record) => Vec;
|
|
118
|
+
/**
|
|
119
|
+
* Decodes one supported ASN.1 record and returns the remaining input.
|
|
120
|
+
*
|
|
121
|
+
* @type {(v: Vec) => readonly[Record, Vec]}
|
|
122
|
+
*/
|
|
123
|
+
export declare const decode: (v: Vec) => readonly [Record, Vec];
|
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ASN.1 BER/DER encoding and decoding over bit vectors. Includes tag/class
|
|
3
|
+
* helpers, length-prefixed payloads, and OID conversion via Base-128.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*
|
|
7
|
+
* @import { Unpacked, Vec } from '../types/bit_vec/types.ts'
|
|
8
|
+
* @import { ObjectIdentifier, Raw, Record, Sequence, SupportedRecord, _Tag } from './types.ts'
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { bitLength, divUp8 } from '../types/bigint/module.f.mjs'
|
|
12
|
+
import {
|
|
13
|
+
empty,
|
|
14
|
+
isVec,
|
|
15
|
+
length,
|
|
16
|
+
msb,
|
|
17
|
+
uint,
|
|
18
|
+
unpack,
|
|
19
|
+
vec,
|
|
20
|
+
vec8,
|
|
21
|
+
} from '../types/bit_vec/module.f.mjs'
|
|
22
|
+
import { identity } from '../types/function/module.f.mjs'
|
|
23
|
+
import { max } from '../types/function/compare/module.f.mjs'
|
|
24
|
+
import { encode as b128encode, decode as b128decode } from '../basen/base128/module.f.mjs'
|
|
25
|
+
|
|
26
|
+
//
|
|
27
|
+
|
|
28
|
+
const { popFront: pop, listToVec } = msb
|
|
29
|
+
|
|
30
|
+
const pop8 = pop(8n)
|
|
31
|
+
|
|
32
|
+
// tag
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @typedef {|
|
|
36
|
+
* 0b000_00000n |
|
|
37
|
+
* 0b001_00000n |
|
|
38
|
+
* 0b010_00000n |
|
|
39
|
+
* 0b011_00000n |
|
|
40
|
+
* 0b100_00000n |
|
|
41
|
+
* 0b101_00000n |
|
|
42
|
+
* 0b110_00000n |
|
|
43
|
+
* 0b111_00000n
|
|
44
|
+
* } _ClassPc
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
const classPcMask = 0b111_00000n
|
|
48
|
+
|
|
49
|
+
const tagNumberMask = 0b000_11111n
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Note: the tag number (the second parameter) can be arbitrarily large,
|
|
53
|
+
* so we can't just use a single byte to represent it.
|
|
54
|
+
* @typedef {readonly[_ClassPc, bigint]} _ParsedTag
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/** @type {([classPc, number]: _ParsedTag) => Vec} */
|
|
58
|
+
const parsedTagEncode = ([classPc, number]) => {
|
|
59
|
+
const [firstByteNumber, rest] = number < tagNumberMask
|
|
60
|
+
? [number, empty]
|
|
61
|
+
: [tagNumberMask, b128encode(number)]
|
|
62
|
+
return listToVec([vec8(classPc | firstByteNumber), rest])
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** @type {(v: Vec) => readonly[_ParsedTag, Vec]} */
|
|
66
|
+
const parsedTagDecode = v => {
|
|
67
|
+
const [firstByte, rest] = pop8(v)
|
|
68
|
+
const classPc = /** @type {_ClassPc} */(firstByte & classPcMask)
|
|
69
|
+
const firstByteNumber = firstByte & tagNumberMask
|
|
70
|
+
const [number, rest1] = firstByteNumber < tagNumberMask
|
|
71
|
+
? [firstByteNumber, rest]
|
|
72
|
+
: b128decode(rest)
|
|
73
|
+
return [[classPc, number], rest1]
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** @type {(tag: _Tag) => Vec} */
|
|
77
|
+
const tagEncode = tag =>
|
|
78
|
+
vec(max(divUp8(bitLength(tag)))(1n) << 3n)(tag)
|
|
79
|
+
|
|
80
|
+
/** @type {(v: Vec) => readonly[_Tag, Vec]} */
|
|
81
|
+
const tagDecode = v => {
|
|
82
|
+
const [parsedTag, rest] = parsedTagDecode(v)
|
|
83
|
+
return [uint(parsedTagEncode(parsedTag)), rest]
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
//
|
|
87
|
+
|
|
88
|
+
const eoc = 0x00n
|
|
89
|
+
/** ASN.1 universal BOOLEAN tag. */
|
|
90
|
+
export const boolean = 0x01n
|
|
91
|
+
/** ASN.1 universal INTEGER tag. */
|
|
92
|
+
export const integer = 0x02n
|
|
93
|
+
const bitString = 0x03n
|
|
94
|
+
/** ASN.1 universal OCTET STRING tag. */
|
|
95
|
+
export const octetString = 0x04n
|
|
96
|
+
const null_ = 0x05
|
|
97
|
+
/** ASN.1 universal OBJECT IDENTIFIER tag. */
|
|
98
|
+
export const objectIdentifier = 0x06n
|
|
99
|
+
const objectDescriptor = 0x07
|
|
100
|
+
const external = 0x08
|
|
101
|
+
const real = 0x09
|
|
102
|
+
const enumerated = 0x0A
|
|
103
|
+
const embeddedPdv = 0x0B
|
|
104
|
+
const utf8string = 0x0C
|
|
105
|
+
const relativeOid = 0x0D
|
|
106
|
+
const time = 0x0E
|
|
107
|
+
const sequence = 0x10
|
|
108
|
+
const set = 0x11
|
|
109
|
+
const numericString = 0x12
|
|
110
|
+
const printableString = 0x13
|
|
111
|
+
const t61String = 0x14
|
|
112
|
+
const videotexString = 0x15
|
|
113
|
+
const ia5String = 0x16
|
|
114
|
+
const utcTime = 0x17
|
|
115
|
+
const generalizedTime = 0x18
|
|
116
|
+
const graphicString = 0x19
|
|
117
|
+
const visibleString = 0x1A
|
|
118
|
+
const generalString = 0x1B
|
|
119
|
+
const universalString = 0x1C
|
|
120
|
+
const characterString = 0x1D
|
|
121
|
+
const bmpString = 0x1E
|
|
122
|
+
const date = 0x1F
|
|
123
|
+
const timeOfDay = 0x20
|
|
124
|
+
const dateTime = 0x21
|
|
125
|
+
const duration = 0x22
|
|
126
|
+
const oidIri = 0x23
|
|
127
|
+
const relativeOidIri = 0x24
|
|
128
|
+
|
|
129
|
+
const constructed = 0x20
|
|
130
|
+
|
|
131
|
+
export const constructedSequence = 0x30n // constructed | sequence
|
|
132
|
+
export const constructedSet = 0x31n // constructed | set
|
|
133
|
+
|
|
134
|
+
//
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @typedef {{
|
|
138
|
+
* readonly byteLen: bigint
|
|
139
|
+
* readonly v: Vec
|
|
140
|
+
* }} _Round8
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
/** @type {(_: Unpacked) => _Round8} */
|
|
144
|
+
const round8 = ({ length, uint }) => {
|
|
145
|
+
const byteLen = divUp8(length)
|
|
146
|
+
return { byteLen, v: vec(byteLen << 3n)(uint) }
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** @type {(uint: bigint) => Vec} */
|
|
150
|
+
const lenEncode = uint => {
|
|
151
|
+
if (uint < 0x80n) {
|
|
152
|
+
return vec8(uint)
|
|
153
|
+
}
|
|
154
|
+
const { byteLen, v } = round8({ length: bitLength(uint), uint })
|
|
155
|
+
return listToVec([vec8(0x80n | byteLen), v])
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Decodes the length field of an ASN.1 TLV and returns the length in bits and the remaining input.
|
|
160
|
+
*
|
|
161
|
+
* @param {Vec} v - The input bit vector starting with the length field.
|
|
162
|
+
* @returns {readonly[bigint, Vec]} A tuple containing the length in bits and the remaining input after the length field.
|
|
163
|
+
*/
|
|
164
|
+
const lenDecode = v => {
|
|
165
|
+
const firstAndRest = pop8(v)
|
|
166
|
+
const [first, rest1] = firstAndRest
|
|
167
|
+
const [byteLen, rest2] = first < 0x80n ? firstAndRest : pop((first & 0x7Fn) << 3n)(rest1)
|
|
168
|
+
return [byteLen << 3n, rest2]
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// raw
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Encodes a raw ASN.1 TLV tuple into a bit vector.
|
|
175
|
+
*
|
|
176
|
+
* @type {(_: Raw) => Vec}
|
|
177
|
+
*/
|
|
178
|
+
export const encodeRaw = ([tag, value]) => {
|
|
179
|
+
const tagVec = tagEncode(tag)
|
|
180
|
+
const { byteLen, v } = round8(unpack(value))
|
|
181
|
+
return listToVec([tagVec, lenEncode(byteLen), v])
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Decodes a raw ASN.1 TLV tuple and returns the remaining input.
|
|
186
|
+
*
|
|
187
|
+
* @type {(v: Vec) => readonly[Raw, Vec]}
|
|
188
|
+
*/
|
|
189
|
+
export const decodeRaw = v => {
|
|
190
|
+
const [tag, v1] = tagDecode(v)
|
|
191
|
+
const [len, v2] = lenDecode(v1)
|
|
192
|
+
const [result, next] = pop(len)(v2)
|
|
193
|
+
return [[tag, vec(len)(result)], next]
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// boolean
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Encodes a JavaScript boolean as an ASN.1 BOOLEAN value.
|
|
200
|
+
*
|
|
201
|
+
* @type {(b: boolean) => Vec}
|
|
202
|
+
*/
|
|
203
|
+
export const encodeBoolean = b => vec8(b ? 0xFFn : 0x00n)
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Decodes an ASN.1 BOOLEAN value.
|
|
207
|
+
*
|
|
208
|
+
* @type {(v: Vec) => boolean}
|
|
209
|
+
*/
|
|
210
|
+
export const decodeBoolean = v => uint(v) !== 0n
|
|
211
|
+
|
|
212
|
+
// integer (two's compliment)
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Encodes a signed bigint using ASN.1 INTEGER two's complement representation.
|
|
216
|
+
*
|
|
217
|
+
* @type {(uint: bigint) => Vec}
|
|
218
|
+
*/
|
|
219
|
+
export const encodeInteger = uint => {
|
|
220
|
+
const offset = uint < 0n ? 1n : 0n
|
|
221
|
+
return round8({ length: bitLength(uint + offset) + 1n, uint }).v
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Decodes an ASN.1 INTEGER encoded in two's complement.
|
|
226
|
+
*
|
|
227
|
+
* @type {(v: Vec) => bigint}
|
|
228
|
+
*/
|
|
229
|
+
export const decodeInteger = v => {
|
|
230
|
+
const { length, uint } = unpack(v)
|
|
231
|
+
const sign = uint >> (length - 1n)
|
|
232
|
+
return sign === 0n ? uint : uint - (1n << length)
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// octet string
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Encodes an OCTET STRING value.
|
|
239
|
+
*
|
|
240
|
+
* @type {(v: Vec) => Vec}
|
|
241
|
+
*/
|
|
242
|
+
export const encodeOctetString = v => v
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Decodes an OCTET STRING value.
|
|
246
|
+
*
|
|
247
|
+
* @type {(v: Vec) => Vec}
|
|
248
|
+
*/
|
|
249
|
+
export const decodeOctetString = v => v
|
|
250
|
+
|
|
251
|
+
// object identifier
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Encodes an OBJECT IDENTIFIER value.
|
|
255
|
+
*
|
|
256
|
+
* @type {(oid: ObjectIdentifier) => Vec}
|
|
257
|
+
*/
|
|
258
|
+
export const encodeObjectIdentifier = oid => {
|
|
259
|
+
const [first, second, ...rest] = oid
|
|
260
|
+
const firstByte = first * 40n + second
|
|
261
|
+
return listToVec([vec8(firstByte), ...rest.map(b128encode)])
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Drains a bit vector by repeatedly applying a step until the vector is empty,
|
|
266
|
+
* collecting every decoded item into an array.
|
|
267
|
+
*
|
|
268
|
+
* @template T
|
|
269
|
+
* @param {(v: Vec) => readonly [T, Vec]} step
|
|
270
|
+
* @return {(v: Vec) => readonly T[]}
|
|
271
|
+
*/
|
|
272
|
+
const decodeAll = step => v => {
|
|
273
|
+
/** @type {readonly T[]} */
|
|
274
|
+
let result = []
|
|
275
|
+
while (length(v) !== 0n) {
|
|
276
|
+
const [item, rest] = step(v)
|
|
277
|
+
result = [...result, item]
|
|
278
|
+
v = rest
|
|
279
|
+
}
|
|
280
|
+
return result
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Decodes an OBJECT IDENTIFIER value.
|
|
285
|
+
*
|
|
286
|
+
* @type {(v: Vec) => ObjectIdentifier}
|
|
287
|
+
*/
|
|
288
|
+
export const decodeObjectIdentifier = v => {
|
|
289
|
+
const [firstByte, rest] = pop8(v)
|
|
290
|
+
return [firstByte / 40n, firstByte % 40n, ...decodeAll(b128decode)(rest)]
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// sequence
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* @param {(vec: readonly Vec[]) => readonly Vec[]} map
|
|
297
|
+
* @return {(...records: Sequence) => Vec}
|
|
298
|
+
*/
|
|
299
|
+
const genericEncodeSequence = map => (...records) =>
|
|
300
|
+
listToVec(map(records.map(encode)))
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Encodes a SEQUENCE payload from ordered records.
|
|
304
|
+
*
|
|
305
|
+
* @type {(...records: Sequence) => Vec}
|
|
306
|
+
*/
|
|
307
|
+
export const encodeSequence =
|
|
308
|
+
genericEncodeSequence(identity)
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Decodes a SEQUENCE payload into records.
|
|
312
|
+
*
|
|
313
|
+
* @type {(v: Vec) => Sequence}
|
|
314
|
+
*/
|
|
315
|
+
export const decodeSequence = v => decodeAll(decode)(v)
|
|
316
|
+
|
|
317
|
+
// set
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Encodes a SET payload with canonical byte ordering.
|
|
321
|
+
*
|
|
322
|
+
* @type {(...records: Sequence) => Vec}
|
|
323
|
+
*/
|
|
324
|
+
export const encodeSet =
|
|
325
|
+
genericEncodeSequence(v => v.toSorted((a, b) => msb.cmp(a)(b)))
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Decodes a SET payload.
|
|
329
|
+
*
|
|
330
|
+
* @type {(v: Vec) => Sequence}
|
|
331
|
+
*/
|
|
332
|
+
export const decodeSet = decodeSequence
|
|
333
|
+
|
|
334
|
+
// encode
|
|
335
|
+
|
|
336
|
+
/** @type {(_: SupportedRecord) => Vec} */
|
|
337
|
+
const recordToRaw = ([tag, value]) => {
|
|
338
|
+
switch (tag) {
|
|
339
|
+
case boolean: return encodeBoolean(value)
|
|
340
|
+
case integer: return encodeInteger(value)
|
|
341
|
+
case octetString: return encodeOctetString(value)
|
|
342
|
+
case objectIdentifier: return encodeObjectIdentifier(value)
|
|
343
|
+
case constructedSequence: return encodeSequence(...value)
|
|
344
|
+
case constructedSet: return encodeSet(...value)
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Encodes a supported ASN.1 record as TLV.
|
|
350
|
+
*
|
|
351
|
+
* @type {(record: Record) => Vec}
|
|
352
|
+
*/
|
|
353
|
+
export const encode = record =>
|
|
354
|
+
isVec(record) ? record : encodeRaw([record[0], recordToRaw(record)])
|
|
355
|
+
|
|
356
|
+
// decode
|
|
357
|
+
|
|
358
|
+
/** @type {(raw: Raw) => Record} */
|
|
359
|
+
const rawToRecord = raw => {
|
|
360
|
+
const [tag, value] = raw
|
|
361
|
+
switch (tag) {
|
|
362
|
+
case boolean: return [boolean, decodeBoolean(value)]
|
|
363
|
+
case integer: return [integer, decodeInteger(value)]
|
|
364
|
+
case octetString: return [octetString, decodeOctetString(value)]
|
|
365
|
+
case objectIdentifier: return [objectIdentifier, decodeObjectIdentifier(value)]
|
|
366
|
+
case constructedSequence: return [constructedSequence, decodeSequence(value)]
|
|
367
|
+
case constructedSet: return [constructedSet, decodeSet(value)]
|
|
368
|
+
default: return encodeRaw(raw)
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Decodes one supported ASN.1 record and returns the remaining input.
|
|
374
|
+
*
|
|
375
|
+
* @type {(v: Vec) => readonly[Record, Vec]}
|
|
376
|
+
*/
|
|
377
|
+
export const decode = v => {
|
|
378
|
+
const [raw, rest] = decodeRaw(v)
|
|
379
|
+
return [rawToRecord(raw), rest]
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/*
|
|
383
|
+
TimeStampReq ::= SEQUENCE {
|
|
384
|
+
version INTEGER { v1(1) }, // [x]
|
|
385
|
+
messageImprint MessageImprint,
|
|
386
|
+
reqPolicy TSAPolicyId OPTIONAL,
|
|
387
|
+
nonce INTEGER OPTIONAL, // [X]
|
|
388
|
+
certReq BOOLEAN DEFAULT FALSE, // [X]
|
|
389
|
+
extensions [0] IMPLICIT Extensions OPTIONAL // [X]
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
MessageImprint ::= SEQUENCE {
|
|
393
|
+
hashAlgorithm AlgorithmIdentifier,
|
|
394
|
+
hashedMessage OCTET STRING // [X]
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
TSAPolicyId ::= OBJECT IDENTIFIER // [X]
|
|
398
|
+
*/
|
|
399
|
+
|
|
400
|
+
/*
|
|
401
|
+
TimeStampResp ::= SEQUENCE {
|
|
402
|
+
status PKIStatusInfo,
|
|
403
|
+
timeStampToken TimeStampToken OPTIONAL
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
PKIStatusInfo ::= SEQUENCE {
|
|
407
|
+
status PKIStatus,
|
|
408
|
+
statusString PKIFreeText OPTIONAL,
|
|
409
|
+
failInfo PKIFailureInfo OPTIONAL
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
PKIStatus ::= INTEGER { // [X]
|
|
413
|
+
granted (0),
|
|
414
|
+
grantedWithMods (1),
|
|
415
|
+
rejection (2),
|
|
416
|
+
waiting (3),
|
|
417
|
+
revocationWarning (4),
|
|
418
|
+
revocationNotification (5)
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
TimeStampToken ::= ContentInfo
|
|
422
|
+
|
|
423
|
+
ContentInfo ::= SEQUENCE {
|
|
424
|
+
contentType ContentType,
|
|
425
|
+
content [0] EXPLICIT ANY DEFINED BY contentType
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
ContentType ::= OBJECT IDENTIFIER
|
|
429
|
+
|
|
430
|
+
SignedData ::= SEQUENCE {
|
|
431
|
+
version CMSVersion,
|
|
432
|
+
digestAlgorithms SET OF DigestAlgorithmIdentifier, // [X]
|
|
433
|
+
encapContentInfo EncapsulatedContentInfo,
|
|
434
|
+
certificates [0] IMPLICIT CertificateSet OPTIONAL,
|
|
435
|
+
crls [1] IMPLICIT RevocationInfoChoices OPTIONAL,
|
|
436
|
+
signerInfos SET OF SignerInfo // [X]
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
EncapsulatedContentInfo ::= SEQUENCE {
|
|
440
|
+
eContentType ContentType,
|
|
441
|
+
eContent [0] EXPLICIT OCTET STRING OPTIONAL
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
TSTInfo ::= SEQUENCE {
|
|
445
|
+
version INTEGER { v1(1) },
|
|
446
|
+
policy TSAPolicyId,
|
|
447
|
+
messageImprint MessageImprint,
|
|
448
|
+
serialNumber INTEGER,
|
|
449
|
+
genTime GeneralizedTime,
|
|
450
|
+
accuracy Accuracy OPTIONAL,
|
|
451
|
+
ordering BOOLEAN DEFAULT FALSE,
|
|
452
|
+
nonce INTEGER OPTIONAL,
|
|
453
|
+
tsa [0] GeneralName OPTIONAL,
|
|
454
|
+
extensions [1] IMPLICIT Extensions OPTIONAL
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
Bits: 8 7 | 6 | 5 4 3 2 1
|
|
458
|
+
Class | P/C | Tag number
|
|
459
|
+
*/
|