functionalscript 0.43.1 → 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.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 -223
- package/fjs/cas/evo/module.f.js +0 -455
- package/fjs/cas/evo/proof.f.d.ts +0 -47
- package/fjs/cas/evo/proof.f.js +0 -707
- 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 -94
- package/fjs/media/revision/module.f.js +0 -143
- package/fjs/media/revision/proof.f.js +0 -190
- 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/revision/{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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level API for `fjs/djs/tokenizer/module.f.mjs`: the DJS token shapes
|
|
3
|
+
* `tokenize`/`tokenizeJs`/`tokenizeString` produce.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { StringToken, NumberToken, ErrorToken, IdToken, BigIntToken, WhitespaceToken, NewLineToken, CommentToken, EofToken, TokenMetadata } from '../../js/tokenizer/types.ts';
|
|
8
|
+
/**
|
|
9
|
+
* DJS-level token set: a narrower view of JsToken (only true/false/null/undefined survive
|
|
10
|
+
* as bare keywords; every other keyword becomes an id) plus its own punctuator kinds.
|
|
11
|
+
*/
|
|
12
|
+
export type DjsToken = {
|
|
13
|
+
readonly kind: 'true' | 'false' | 'null' | 'undefined';
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: '{' | '}' | ':' | ',' | '[' | ']' | '.' | '=';
|
|
16
|
+
} | StringToken | NumberToken | ErrorToken | IdToken | BigIntToken | WhitespaceToken | NewLineToken | CommentToken | EofToken;
|
|
17
|
+
export type DjsTokenWithMetadata = {
|
|
18
|
+
readonly token: DjsToken;
|
|
19
|
+
readonly metadata: TokenMetadata;
|
|
20
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DJS transpiler for transforming parsed trees into JavaScript output.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Unknown } from '../types.ts'
|
|
7
|
+
* @import { Result } from '../../types/result/types.ts'
|
|
8
|
+
* @import { List } from '../../types/list/types.ts'
|
|
9
|
+
* @import { OrderedMap } from '../../types/ordered_map/types.ts'
|
|
10
|
+
* @import { ParseError } from '../parser/types.ts'
|
|
11
|
+
* @import { AstModule } from '../ast/types.ts'
|
|
12
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
13
|
+
* @import { ReadFile } from '../../effects/node/types.ts'
|
|
14
|
+
*/
|
|
15
|
+
import type { Unknown } from '../types.ts';
|
|
16
|
+
import type { Result } from '../../types/result/types.ts';
|
|
17
|
+
import type { List } from '../../types/list/types.ts';
|
|
18
|
+
import type { OrderedMap } from '../../types/ordered_map/types.ts';
|
|
19
|
+
import type { ParseError } from '../parser/types.ts';
|
|
20
|
+
import type { Effect } from '../../effects/types.ts';
|
|
21
|
+
import type { ReadFile } from '../../effects/node/types.ts';
|
|
22
|
+
export type ParseContext = {
|
|
23
|
+
readonly complete: OrderedMap<djsResult>;
|
|
24
|
+
readonly stack: List<string>;
|
|
25
|
+
readonly error: ParseError | null;
|
|
26
|
+
};
|
|
27
|
+
export type djsResult = {
|
|
28
|
+
djs: Unknown;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Transpiles a DJS module graph rooted at `path` into a single `Unknown` value.
|
|
32
|
+
*
|
|
33
|
+
* Reads each file via the `ReadFile` effect, resolves imports recursively, and
|
|
34
|
+
* evaluates the AST. Returns `['ok', value]` on success, or `['error', ParseError]`
|
|
35
|
+
* on a parse failure or circular dependency.
|
|
36
|
+
*
|
|
37
|
+
* @type {(path: string) => Effect<ReadFile, Result<Unknown, ParseError>>}
|
|
38
|
+
*/
|
|
39
|
+
export declare const transpile: (path: string) => Effect<ReadFile, Result<Unknown, ParseError>>;
|
|
40
|
+
export declare const proof: {
|
|
41
|
+
throw: {
|
|
42
|
+
mapDjsUnresolvedImport: () => Unknown;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DJS transpiler for transforming parsed trees into JavaScript output.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*
|
|
6
|
+
* @import { Unknown } from '../types.ts'
|
|
7
|
+
* @import { Result } from '../../types/result/types.ts'
|
|
8
|
+
* @import { List } from '../../types/list/types.ts'
|
|
9
|
+
* @import { OrderedMap } from '../../types/ordered_map/types.ts'
|
|
10
|
+
* @import { ParseError } from '../parser/types.ts'
|
|
11
|
+
* @import { AstModule } from '../ast/types.ts'
|
|
12
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
13
|
+
* @import { ReadFile } from '../../effects/node/types.ts'
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { error, ok } from '../../types/result/module.f.mjs'
|
|
17
|
+
import { drop, map as listMap, toArray, includes } from '../../types/list/module.f.mjs'
|
|
18
|
+
import { tokenize } from '../tokenizer/module.f.mjs'
|
|
19
|
+
import { setReplace, at } from '../../types/ordered_map/module.f.mjs'
|
|
20
|
+
import { stringToList } from '../../text/utf16/module.f.mjs'
|
|
21
|
+
import { concat as pathConcat } from '../../path/module.f.mjs'
|
|
22
|
+
import { parseFromTokens } from '../parser/module.f.mjs'
|
|
23
|
+
import { run } from '../ast/module.f.mjs'
|
|
24
|
+
import { foldStep, pure, step } from '../../effects/module.f.mjs'
|
|
25
|
+
import { readUtf8File } from '../../effects/node/module.f.mjs'
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* State threaded through the recursive transpilation of a DJS module graph.
|
|
29
|
+
*
|
|
30
|
+
* - `complete`: modules that have been fully parsed and evaluated, keyed by path.
|
|
31
|
+
* - `stack`: import chain currently being resolved (used to detect circular dependencies).
|
|
32
|
+
* - `error`: the first parse error encountered, or `null` while everything is clean.
|
|
33
|
+
* @typedef {{
|
|
34
|
+
* readonly complete: OrderedMap<djsResult>
|
|
35
|
+
* readonly stack: List<string>
|
|
36
|
+
* readonly error: ParseError | null
|
|
37
|
+
* }} ParseContext
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The evaluated DJS value produced for one successfully transpiled module.
|
|
42
|
+
* @typedef {{ djs: Unknown }} djsResult
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/** @type {(context: ParseContext) => (path: string) => Unknown} */
|
|
46
|
+
const mapDjs = context => path => {
|
|
47
|
+
const res = at(path)(context.complete)
|
|
48
|
+
if (res === null)
|
|
49
|
+
{
|
|
50
|
+
throw 'unexpected behaviour'
|
|
51
|
+
}
|
|
52
|
+
return res.djs
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** @type {(path: string) => Effect<ReadFile, Result<AstModule, ParseError>>} */
|
|
56
|
+
const parseModule = path => step(
|
|
57
|
+
readUtf8File(path),
|
|
58
|
+
result => {
|
|
59
|
+
if (result[0] === 'error') {
|
|
60
|
+
return pure(error({ message: 'file not found', metadata: null }))
|
|
61
|
+
}
|
|
62
|
+
const tokens = tokenize(stringToList(result[1]))(path)
|
|
63
|
+
return pure(parseFromTokens(tokens))
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
/** @type {(path: string) => (parseModuleResult: Result<AstModule, ParseError>) => (context: ParseContext) => Effect<ReadFile, ParseContext>} */
|
|
67
|
+
const transpileWithImports = path => parseModuleResult => context => {
|
|
68
|
+
if (parseModuleResult[0] === 'ok') {
|
|
69
|
+
const dir = pathConcat(path)('..')
|
|
70
|
+
const pathsCombine = listMap(pathConcat(dir))(parseModuleResult[1][0])
|
|
71
|
+
const pathsArray = toArray(pathsCombine)
|
|
72
|
+
const contextWithStack = { ...context, stack: { first: path, tail: context.stack } }
|
|
73
|
+
const x0 = foldStep(pure(pathsArray), contextWithStack, foldNextModuleOp)
|
|
74
|
+
return step(
|
|
75
|
+
x0,
|
|
76
|
+
contextWithImports => {
|
|
77
|
+
if (contextWithImports.error !== null) {
|
|
78
|
+
return pure(contextWithImports)
|
|
79
|
+
}
|
|
80
|
+
const args = toArray(listMap(mapDjs(contextWithImports))(pathsCombine))
|
|
81
|
+
const djs = { djs: run(parseModuleResult[1][1])(args) }
|
|
82
|
+
return pure({
|
|
83
|
+
...contextWithImports,
|
|
84
|
+
stack: drop(1)(contextWithImports.stack),
|
|
85
|
+
complete: setReplace(path)(djs)(contextWithImports.complete),
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
return pure({ ...context, error: parseModuleResult[1] })
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** @type {(path: string) => (context: ParseContext) => Effect<ReadFile, ParseContext>} */
|
|
93
|
+
const foldNextModuleOp = path => context => {
|
|
94
|
+
if (context.error !== null) {
|
|
95
|
+
return pure(context)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (includes(path)(context.stack)) {
|
|
99
|
+
return pure({ ...context, error: { message: 'circular dependency', metadata: null } })
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (at(path)(context.complete) !== null) {
|
|
103
|
+
return pure(context)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return step(
|
|
107
|
+
parseModule(path),
|
|
108
|
+
parseModuleResult => transpileWithImports(path)(parseModuleResult)(context))
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Transpiles a DJS module graph rooted at `path` into a single `Unknown` value.
|
|
113
|
+
*
|
|
114
|
+
* Reads each file via the `ReadFile` effect, resolves imports recursively, and
|
|
115
|
+
* evaluates the AST. Returns `['ok', value]` on success, or `['error', ParseError]`
|
|
116
|
+
* on a parse failure or circular dependency.
|
|
117
|
+
*
|
|
118
|
+
* @type {(path: string) => Effect<ReadFile, Result<Unknown, ParseError>>}
|
|
119
|
+
*/
|
|
120
|
+
export const transpile = path => step(
|
|
121
|
+
foldNextModuleOp(path)({ stack: null, complete: null, error: null }),
|
|
122
|
+
/** @type {(context: ParseContext) => Effect<ReadFile, Result<Unknown, ParseError>>} */
|
|
123
|
+
(context) => {
|
|
124
|
+
if (context.error !== null) {
|
|
125
|
+
return pure(error(context.error))
|
|
126
|
+
}
|
|
127
|
+
const result = at(path)(context.complete)?.djs
|
|
128
|
+
return pure(ok(result))
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
// ── Tests ────────────────────────────────────────────────────────────────────
|
|
132
|
+
|
|
133
|
+
export const proof = {
|
|
134
|
+
throw: {
|
|
135
|
+
// `mapDjs` is only ever called with an import path that `foldNextModuleOp`
|
|
136
|
+
// has already resolved into `context.complete`, so the `res === null`
|
|
137
|
+
// guard is an internal-invariant check unreachable through `transpile`'s
|
|
138
|
+
// public API. Call it directly with an empty `complete` map to cover it.
|
|
139
|
+
mapDjsUnresolvedImport: () => mapDjs({ complete: null, stack: null, error: null })('missing.djs'),
|
|
140
|
+
},
|
|
141
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { Dir } from '../../effects/node/virtual/types.ts'
|
|
3
|
+
* @import { Result } from '../../types/result/types.ts'
|
|
4
|
+
* @import { Unknown } from '../types.ts'
|
|
5
|
+
* @import { ParseError } from '../parser/types.ts'
|
|
6
|
+
*/
|
|
7
|
+
import { sort } from '../../types/object/module.f.mjs'
|
|
8
|
+
import { transpile } from './module.f.mjs'
|
|
9
|
+
import { stringifyAsTree } from '../serializer/module.f.mjs'
|
|
10
|
+
import { virtual, emptyState } from '../../effects/node/virtual/module.f.mjs'
|
|
11
|
+
import { utf8 } from '../../text/module.f.mjs'
|
|
12
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
13
|
+
|
|
14
|
+
/** @type {(root: Dir) => (path: string) => Result<Unknown, ParseError>} */
|
|
15
|
+
const run = root => path => {
|
|
16
|
+
const [, result] = virtual({ ...emptyState, root })(transpile(path))
|
|
17
|
+
return result
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const proof = {
|
|
21
|
+
parse: () => {
|
|
22
|
+
const result = run({ a: [utf8('export default 1')] })('a')
|
|
23
|
+
assert(result[0] !== 'error', result[1])
|
|
24
|
+
const s = stringifyAsTree(sort)(result[1])
|
|
25
|
+
assertEq(s, '1')
|
|
26
|
+
},
|
|
27
|
+
parseWithSubModule: () => {
|
|
28
|
+
const result = run({ a: { b: [utf8('import c from "c"\nexport default c')], c: [utf8('export default 2')] } })('a/b')
|
|
29
|
+
assert(result[0] !== 'error', result[1])
|
|
30
|
+
const s = stringifyAsTree(sort)(result[1])
|
|
31
|
+
assertEq(s, '2')
|
|
32
|
+
},
|
|
33
|
+
parseWithSubModules: () => {
|
|
34
|
+
const result = run({
|
|
35
|
+
a: [utf8('import b from "b"\nimport c from "c"\nexport default [b,c,b]')],
|
|
36
|
+
b: [utf8('import d from "d"\nexport default [0,d]')],
|
|
37
|
+
c: [utf8('import d from "d"\nexport default [1,d]')],
|
|
38
|
+
d: [utf8('export default 2')],
|
|
39
|
+
})('a')
|
|
40
|
+
assert(result[0] !== 'error', result[1])
|
|
41
|
+
const s = stringifyAsTree(sort)(result[1])
|
|
42
|
+
assertEq(s, '[[0,2],[1,2],[0,2]]')
|
|
43
|
+
},
|
|
44
|
+
parseWithIdentifierKeys: () => {
|
|
45
|
+
const result = run({ a: [utf8('export default {a:1,b:2}')] })('a')
|
|
46
|
+
assert(result[0] !== 'error', result[1])
|
|
47
|
+
const s = stringifyAsTree(sort)(result[1])
|
|
48
|
+
assertEq(s, '{"a":1,"b":2}')
|
|
49
|
+
},
|
|
50
|
+
parseWithConstIdentifier: () => {
|
|
51
|
+
const result = run({ a: [utf8('const a = 1\nconst b = a\nexport default {x:a,y:b}')] })('a')
|
|
52
|
+
assert(result[0] !== 'error', result[1])
|
|
53
|
+
const s = stringifyAsTree(sort)(result[1])
|
|
54
|
+
assertEq(s, '{"x":1,"y":1}')
|
|
55
|
+
},
|
|
56
|
+
parseWithUnaryMinusOperator: () => {
|
|
57
|
+
const result = run({ a: [utf8('export default [-1,2,-3]')] })('a')
|
|
58
|
+
assert(result[0] !== 'error', result[1])
|
|
59
|
+
const s = stringifyAsTree(sort)(result[1])
|
|
60
|
+
assertEq(s, '[-1,2,-3]')
|
|
61
|
+
},
|
|
62
|
+
parseWithFileNotFoundError: () => {
|
|
63
|
+
const result = run({ a: [utf8('import b from "b"\nexport default b')] })('a')
|
|
64
|
+
assert(result[0] === 'error', result)
|
|
65
|
+
assertEq(result[1].message, 'file not found', result)
|
|
66
|
+
},
|
|
67
|
+
parseWithCycleError: () => {
|
|
68
|
+
const result = run({
|
|
69
|
+
a: [utf8('import b from "b"\nimport c from "c"\nexport default [b,c,b]')],
|
|
70
|
+
b: [utf8('import c from "c"\nexport default c')],
|
|
71
|
+
c: [utf8('import b from "b"\nexport default b')],
|
|
72
|
+
})('a')
|
|
73
|
+
assert(result[0] === 'error', result)
|
|
74
|
+
assertEq(result[1].message, 'circular dependency', result)
|
|
75
|
+
},
|
|
76
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DJS's own value model: `Primitive`, `Unknown`, `Object`, and `Array`,
|
|
3
|
+
* layered on top of JSON's `Primitive` with `bigint` and `undefined` added.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import type { Primitive as JsonPrimitive } from '../media/json/types.ts';
|
|
8
|
+
export type Object = {
|
|
9
|
+
readonly [k in string]?: Unknown;
|
|
10
|
+
};
|
|
11
|
+
export type Array = readonly Unknown[];
|
|
12
|
+
export type Primitive = JsonPrimitive | bigint | undefined;
|
|
13
|
+
export type Unknown = Primitive | Object | Array;
|
package/fjs/djs/types.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Effect, Operation } from '../types.ts';
|
|
2
|
+
import type { Eff } from './types.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Wraps a raw {@link Effect}; the bridge into the `Eff` world, with an empty
|
|
5
|
+
* history. The empty tuple is spelled out because {@link Eff} deliberately has
|
|
6
|
+
* no default for `P` — see its docs.
|
|
7
|
+
*
|
|
8
|
+
* @type {<O extends Operation, T>(value: Effect<O, T>) => Eff<O, T, readonly[]>}
|
|
9
|
+
*/
|
|
10
|
+
export declare const eff: <O extends Operation, T>(value: Effect<O, T>) => Eff<O, T, readonly []>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fluent, method-chaining wrapper over the raw `Effect`.
|
|
3
|
+
*
|
|
4
|
+
* See `./types.ts` for the `Eff` type-level API.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { history, historyStep, mapStep, pure } from '../module.f.mjs'
|
|
9
|
+
/** @import { Effect, Operation } from '../types.ts' */
|
|
10
|
+
/** @import { Eff } from './types.ts' */
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Builds an `Eff` from two views of the same chain: `value`, the effect for the
|
|
14
|
+
* current value alone, and `h`, a thunk for the `[current, ...history]` tuple.
|
|
15
|
+
*
|
|
16
|
+
* **The two must denote the same computation** — `value` has to be what `h()`
|
|
17
|
+
* produces with the history dropped. Nothing enforces it. The
|
|
18
|
+
* redundancy is deliberate: `value` used to be derived from `h` on demand,
|
|
19
|
+
* which made disagreement impossible but also forced the entry case to rebuild
|
|
20
|
+
* an effect it was already holding. Passing it in is what lets {@link eff} hand
|
|
21
|
+
* the original back.
|
|
22
|
+
*
|
|
23
|
+
* The asymmetry between the two — one built, one deferred — is the point.
|
|
24
|
+
* `value` is either already in hand ({@link eff} was given it) or already built
|
|
25
|
+
* (`.step` has just composed the chain it projects from), so storing it costs
|
|
26
|
+
* no more than the projection itself. `h` is different: nothing needs the
|
|
27
|
+
* history tuple until a later `.step` asks for it, and composing effects is
|
|
28
|
+
* eager, so holding a thunk is the only way to not compose it yet. That keeps
|
|
29
|
+
* `eff(e)` free of work entirely.
|
|
30
|
+
*
|
|
31
|
+
* `.step` calls `h()` once and closes over the effect, so everything built
|
|
32
|
+
* from that link shares it. `eff`'s thunk is not memoized, so calling `.step`
|
|
33
|
+
* twice on the same `eff(e)` rebuilds and re-forces `e` — harmless under
|
|
34
|
+
* `Pure`'s contract, which requires the thunk to be pure and to tolerate
|
|
35
|
+
* repeat calls.
|
|
36
|
+
*
|
|
37
|
+
* @template {Operation} O
|
|
38
|
+
* @template T
|
|
39
|
+
* @template {readonly unknown[]} P
|
|
40
|
+
* @param {Effect<O, T>} value
|
|
41
|
+
* @param {() => Effect<O, readonly[T, ...P]>} h
|
|
42
|
+
* @returns {Eff<O, T, P>}
|
|
43
|
+
*/
|
|
44
|
+
const create = (value, h) => {
|
|
45
|
+
// `self` is named so `.map` can be *defined* as the `.step` call it is
|
|
46
|
+
// documented to equal, rather than as a second copy of `.step`'s body that
|
|
47
|
+
// has to be re-checked against it.
|
|
48
|
+
/** @type {Eff<O, T, P>} */
|
|
49
|
+
const self = {
|
|
50
|
+
value,
|
|
51
|
+
step: f => {
|
|
52
|
+
const x1 = historyStep(h(), f)
|
|
53
|
+
return create(mapStep(x1, ([t]) => t), () => x1)
|
|
54
|
+
},
|
|
55
|
+
map: f => self.step((...tp) => pure(f(...tp)))
|
|
56
|
+
}
|
|
57
|
+
return self
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Wraps a raw {@link Effect}; the bridge into the `Eff` world, with an empty
|
|
62
|
+
* history. The empty tuple is spelled out because {@link Eff} deliberately has
|
|
63
|
+
* no default for `P` — see its docs.
|
|
64
|
+
*
|
|
65
|
+
* @type {<O extends Operation, T>(value: Effect<O, T>) => Eff<O, T, readonly[]>}
|
|
66
|
+
*/
|
|
67
|
+
export const eff = value =>
|
|
68
|
+
create(value, () => history(value))
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type _AddOp = readonly ['add', (a: number, b: number) => number];
|
|
2
|
+
export declare const proof: {
|
|
3
|
+
value: () => void;
|
|
4
|
+
pure: () => void;
|
|
5
|
+
chain: () => void;
|
|
6
|
+
overDo: () => void;
|
|
7
|
+
map: {
|
|
8
|
+
chain: () => void;
|
|
9
|
+
growsHistory: () => void;
|
|
10
|
+
overDo: () => void;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { do_, match, pure } from '../module.f.mjs'
|
|
2
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
3
|
+
import { assertPure } from '../proof.f.mjs'
|
|
4
|
+
import { eff } from './module.f.mjs'
|
|
5
|
+
/** @import { Effect, OperationMap } from '../types.ts' */
|
|
6
|
+
|
|
7
|
+
/** @typedef {readonly['add', (a: number, b: number) => number]} _AddOp */
|
|
8
|
+
|
|
9
|
+
/** @type {(command: 'add') => (a: number, b: number) => Effect<_AddOp, number>} */
|
|
10
|
+
const doAdd = do_
|
|
11
|
+
|
|
12
|
+
const next = match(/** @type {OperationMap<_AddOp, number>} */ ({ add: (a, b) => a + b }))
|
|
13
|
+
|
|
14
|
+
export const proof = {
|
|
15
|
+
value: () => {
|
|
16
|
+
assertPure(eff(pure(5)).value, 5)
|
|
17
|
+
},
|
|
18
|
+
pure: () => {
|
|
19
|
+
assertPure(pure(5), 5)
|
|
20
|
+
},
|
|
21
|
+
chain: () => {
|
|
22
|
+
const x = eff(pure(5))
|
|
23
|
+
.step(v => pure(v + 1))
|
|
24
|
+
.step(v => pure(v * 2))
|
|
25
|
+
.value
|
|
26
|
+
assertPure(x, 12)
|
|
27
|
+
},
|
|
28
|
+
overDo: () => {
|
|
29
|
+
const e = eff(doAdd('add')(2, 3))
|
|
30
|
+
.step(r => pure(r + 1))
|
|
31
|
+
.value
|
|
32
|
+
const r = next(e)
|
|
33
|
+
assert(r[0] === 'cont', r)
|
|
34
|
+
assertEq(r[1], 5)
|
|
35
|
+
assertPure(r[2](r[1]), 6)
|
|
36
|
+
},
|
|
37
|
+
map: {
|
|
38
|
+
chain: () => {
|
|
39
|
+
const x = eff(pure(5))
|
|
40
|
+
.map(v => v + 1)
|
|
41
|
+
.map(v => v * 2)
|
|
42
|
+
.value
|
|
43
|
+
assertPure(x, 12)
|
|
44
|
+
},
|
|
45
|
+
// `.map` grows the history exactly as `.step` does, so a callback after
|
|
46
|
+
// it still reaches the pre-`map` value. This is the contract that makes
|
|
47
|
+
// rewriting `.step(v => pure(f(v)))` into `.map(f)` a pure readability
|
|
48
|
+
// change rather than one that alters what later callbacks receive.
|
|
49
|
+
growsHistory: () => {
|
|
50
|
+
const x = eff(pure(5))
|
|
51
|
+
.map(v => v + 1)
|
|
52
|
+
.step((v, prev) => pure(`${prev}${v}`))
|
|
53
|
+
.value
|
|
54
|
+
assertPure(x, '56')
|
|
55
|
+
},
|
|
56
|
+
overDo: () => {
|
|
57
|
+
const e = eff(doAdd('add')(2, 3))
|
|
58
|
+
.map(r => r + 1)
|
|
59
|
+
.value
|
|
60
|
+
const r = next(e)
|
|
61
|
+
assert(r[0] === 'cont', r)
|
|
62
|
+
assertEq(r[1], 5)
|
|
63
|
+
assertPure(r[2](r[1]), 6)
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the `Eff` fluent, method-chaining monad.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Effect, Operation } from '../types.ts';
|
|
7
|
+
/**
|
|
8
|
+
* A fluent, method-chaining monad over a raw `Effect` that also
|
|
9
|
+
* accumulates the history of every value the chain has produced. `.step(f)`
|
|
10
|
+
* is bind — `f` receives the current value followed by every prior value,
|
|
11
|
+
* most recent first (`f(t, ...p)`), and returns a raw `Effect`; `.step`
|
|
12
|
+
* re-wraps the result together with that history so `.step(f).step(g)`
|
|
13
|
+
* chains and stays in the `Eff` world throughout. `.map(f)` is the functor
|
|
14
|
+
* map — the same thing for an `f` that returns a plain value rather than an
|
|
15
|
+
* effect, so it is exactly `.step((...tp) => pure(f(...tp)))`. `P` is the
|
|
16
|
+
* tuple of prior values available to the *next* `.step` call; it grows by one
|
|
17
|
+
* element (the current `T`) on every step, starting empty at `eff`.
|
|
18
|
+
* `.value` is the exit back to a raw `Effect`, discarding the history. An
|
|
19
|
+
* `Eff` is not assignable to `Effect`; unwrap through `.value`.
|
|
20
|
+
*
|
|
21
|
+
* **`.map` grows the history just as `.step` does, and does not widen `O`.**
|
|
22
|
+
* Both follow from it being that `.step` call and nothing else: a chain
|
|
23
|
+
* rewritten from `.step(v => pure(f(v)))` to `.map(f)` must hand later
|
|
24
|
+
* callbacks the same prior values it did before, and a projection performs no
|
|
25
|
+
* command, so it contributes no operation for a runner to interpret.
|
|
26
|
+
*
|
|
27
|
+
* **The history is positional, so every parameter a callback declares is
|
|
28
|
+
* meaningful.** `f` is applied as `f(...tp)`, so a callback written
|
|
29
|
+
* `(v, n = 1) => …` or `(v, ...rest) => …` receives prior chain values in `n` /
|
|
30
|
+
* `rest` rather than the default or an empty rest — and where the types line up,
|
|
31
|
+
* TypeScript will not object. Declare exactly as many parameters as the callback
|
|
32
|
+
* intends to read; a defaulted or rest parameter after the current value is a
|
|
33
|
+
* bug, not a convenience. This is what makes `.map(g)` a *different* call from
|
|
34
|
+
* `.step(v => pure(g(v)))` whenever `g` is not genuinely unary — the lambda
|
|
35
|
+
* pins the arity at one, while passing `g` point-free exposes it to the prior
|
|
36
|
+
* values, the way `['1', '2', '3'].map(parseInt)` does.
|
|
37
|
+
*
|
|
38
|
+
* **`.value` is always an already-built `Effect`.** Reading it composes
|
|
39
|
+
* nothing: the projection that drops the history tuple to its current value is
|
|
40
|
+
* performed by the `.step` that produced the link, not deferred to the read.
|
|
41
|
+
* An `Eff` is a record to look into, not an object with a method that quietly
|
|
42
|
+
* does work when called.
|
|
43
|
+
*
|
|
44
|
+
* That costs one projection per link, paid whether or not the link is ever
|
|
45
|
+
* unwrapped — an n-link chain builds n of them where a deferred `.result()`
|
|
46
|
+
* method would build one. It is a constant factor on construction, with no
|
|
47
|
+
* extra forcing of the wrapped effect and no change in growth rate, bought in
|
|
48
|
+
* exchange for a uniform rule at the boundary every caller touches.
|
|
49
|
+
*
|
|
50
|
+
* At the entry it costs nothing at all: `eff(e).value` **is** `e`, because
|
|
51
|
+
* `eff` stores what it was handed rather than rebuilding it from the
|
|
52
|
+
* history, so wrapping and unwrapping round-trip to identity. `h` is still a
|
|
53
|
+
* thunk, so `eff(e)` composes nothing and never forces `e`: an `Eff` that is
|
|
54
|
+
* built and only read does no work at all.
|
|
55
|
+
*
|
|
56
|
+
* **`P` has no default, on purpose.** A default of `readonly[]` would make
|
|
57
|
+
* `Eff<O, T>` a spelling that silently erases history: an
|
|
58
|
+
* `Eff<O, T, readonly[A]>` is assignable to it, because `f` sits in a
|
|
59
|
+
* contravariant position and TypeScript accepts a callback declaring fewer
|
|
60
|
+
* parameters than the type it is checked against. The next `.step` callback
|
|
61
|
+
* would then be typed as receiving no prior values while the runtime still
|
|
62
|
+
* passes them, and any callback destructuring a rest parameter would be handed
|
|
63
|
+
* entries its type says cannot exist. Requiring the third argument means that
|
|
64
|
+
* erasure cannot be written at all, rather than merely being discouraged;
|
|
65
|
+
* `eff` spells `readonly[]` itself.
|
|
66
|
+
*/
|
|
67
|
+
export type Eff<O extends Operation, T, P extends readonly unknown[]> = {
|
|
68
|
+
readonly value: Effect<O, T>;
|
|
69
|
+
readonly step: <Q extends Operation, R>(f: (...tp: readonly [T, ...P]) => Effect<Q, R>) => Eff<O | Q, R, readonly [T, ...P]>;
|
|
70
|
+
readonly map: <R>(f: (...tp: readonly [T, ...P]) => R) => Eff<O, R, readonly [T, ...P]>;
|
|
71
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Effect, Operation } from "../types.ts";
|
|
2
|
+
import type { List, Next } from "./types.ts";
|
|
3
|
+
/** @import { Effect, Operation } from "../types.ts" */
|
|
4
|
+
/** @import { List, Next } from "./types.ts" */
|
|
5
|
+
/**
|
|
6
|
+
* The empty `List`: a pure end-of-stream marker (`undefined`).
|
|
7
|
+
*
|
|
8
|
+
* The explicit `Effect<O, Next<O, T>>` return type lets the contextual type drive the
|
|
9
|
+
* check, so the recursive payload type-checks without a cast. Construct streams through
|
|
10
|
+
* these two combinators.
|
|
11
|
+
*
|
|
12
|
+
* Note: we use `Effect<O, Next<O, T>>` because TypeScript can't convert `pure(...)` to
|
|
13
|
+
* `List<O, T>`.
|
|
14
|
+
*
|
|
15
|
+
* @type {<O extends Operation, T>() => Effect<O, Next<O, T>>}
|
|
16
|
+
*/
|
|
17
|
+
export declare const empty: <O extends Operation, T>() => Effect<O, Next<O, T>>;
|
|
18
|
+
/**
|
|
19
|
+
* Prepends `first` to a {@link List} `tail`, as a pure cons cell. `tail` is an
|
|
20
|
+
* ordinary argument, so it is built before the cell is — see {@link Next}.
|
|
21
|
+
*
|
|
22
|
+
* @type {<O extends Operation, T>(first: T, tail: List<O, T>) => Effect<O, Next<O, T>>}
|
|
23
|
+
*/
|
|
24
|
+
export declare const nonEmpty: <O extends Operation, T>(first: T, tail: List<O, T>) => Effect<O, Next<O, T>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effectful cons-list construction.
|
|
3
|
+
*
|
|
4
|
+
* See `./types.ts` for the type-level API.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { pure } from "../module.f.mjs"
|
|
9
|
+
/** @import { Effect, Operation } from "../types.ts" */
|
|
10
|
+
/** @import { List, Next } from "./types.ts" */
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The empty `List`: a pure end-of-stream marker (`undefined`).
|
|
14
|
+
*
|
|
15
|
+
* The explicit `Effect<O, Next<O, T>>` return type lets the contextual type drive the
|
|
16
|
+
* check, so the recursive payload type-checks without a cast. Construct streams through
|
|
17
|
+
* these two combinators.
|
|
18
|
+
*
|
|
19
|
+
* Note: we use `Effect<O, Next<O, T>>` because TypeScript can't convert `pure(...)` to
|
|
20
|
+
* `List<O, T>`.
|
|
21
|
+
*
|
|
22
|
+
* @type {<O extends Operation, T>() => Effect<O, Next<O, T>>}
|
|
23
|
+
*/
|
|
24
|
+
export const empty = () =>
|
|
25
|
+
pure(undefined)
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Prepends `first` to a {@link List} `tail`, as a pure cons cell. `tail` is an
|
|
29
|
+
* ordinary argument, so it is built before the cell is — see {@link Next}.
|
|
30
|
+
*
|
|
31
|
+
* @type {<O extends Operation, T>(first: T, tail: List<O, T>) => Effect<O, Next<O, T>>}
|
|
32
|
+
*/
|
|
33
|
+
export const nonEmpty = (first, tail) =>
|
|
34
|
+
pure({ first, tail })
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the effectful cons-list.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Effect, Operation } from '../types.ts';
|
|
7
|
+
export type NonEmpty<O extends Operation, T> = {
|
|
8
|
+
readonly first: T;
|
|
9
|
+
readonly tail: List<O, T>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The payload of a `List` effect: the next cons cell, or `undefined` at
|
|
13
|
+
* end-of-stream.
|
|
14
|
+
*
|
|
15
|
+
* A `List` suspends only where a `Do` node does. `Pure` is a thunk, but that
|
|
16
|
+
* thunk is a discriminator rather than a suspension, and {@link nonEmpty} takes
|
|
17
|
+
* `tail` as an ordinary argument — already evaluated by the time the cell is
|
|
18
|
+
* built. A chain of pure cells is therefore constructed in full, up front;
|
|
19
|
+
* streaming comes from cells produced inside a command's continuation, where
|
|
20
|
+
* the tail is not reached until a runner performs the command.
|
|
21
|
+
*
|
|
22
|
+
* `Effect<O, Next<O, T>>` is used directly in places where `List<O, T>` cannot
|
|
23
|
+
* be written as a return type (see `empty`).
|
|
24
|
+
*/
|
|
25
|
+
export type Next<O extends Operation, T> = NonEmpty<O, T> | undefined;
|
|
26
|
+
export type List<O extends Operation, T> = Effect<O, Next<O, T>>;
|