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,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed key-value memory effects for state that persists across effect steps.
|
|
3
|
+
*
|
|
4
|
+
* A memory key is opaque at runtime and carries the value type at compile time,
|
|
5
|
+
* so a key returned by {@link create} can only be read and written with values
|
|
6
|
+
* of the same type. The concrete interpreter owns the actual storage and key
|
|
7
|
+
* generation strategy.
|
|
8
|
+
*
|
|
9
|
+
* Memory effects compose with other effects by unioning operation types, for
|
|
10
|
+
* example `Effect<IoOp | MemOp, T>` for a program that performs both I/O and
|
|
11
|
+
* memory operations.
|
|
12
|
+
*
|
|
13
|
+
* See `./types.ts` for the `Key`/`MemCreate`/`MemRead`/`MemWrite`/`MemOp`
|
|
14
|
+
* type-level API.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import type { Nominal } from '../../types/nominal/types.ts';
|
|
19
|
+
import type { Effect } from '../types.ts';
|
|
20
|
+
import type { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts';
|
|
21
|
+
/** @import { Effect } from '../types.ts' */
|
|
22
|
+
/** @import { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts' */
|
|
23
|
+
/** @type {(n: Nominal<'MemKey', _MemKeyHash, string>) => string} */
|
|
24
|
+
export declare const asBase: (n: Nominal<'MemKey', _MemKeyHash, string>) => string;
|
|
25
|
+
/** @type {(b: string) => Nominal<'MemKey', _MemKeyHash, string>} */
|
|
26
|
+
export declare const asNominal: (b: string) => Nominal<'MemKey', _MemKeyHash, string>;
|
|
27
|
+
/** Creates a new typed memory slot with `value` as its initial contents. */
|
|
28
|
+
export declare const create: <T>(value: T) => Effect<MemCreate, Key<T>>;
|
|
29
|
+
/** Reads the current contents of a typed memory slot. */
|
|
30
|
+
export declare const read: <T>(key: Key<T>) => Effect<MemRead, T>;
|
|
31
|
+
/** Replaces the current contents of a typed memory slot. */
|
|
32
|
+
export declare const write: <T>(key: Key<T>, value: T) => Effect<MemWrite, void>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed key-value memory effects for state that persists across effect steps.
|
|
3
|
+
*
|
|
4
|
+
* A memory key is opaque at runtime and carries the value type at compile time,
|
|
5
|
+
* so a key returned by {@link create} can only be read and written with values
|
|
6
|
+
* of the same type. The concrete interpreter owns the actual storage and key
|
|
7
|
+
* generation strategy.
|
|
8
|
+
*
|
|
9
|
+
* Memory effects compose with other effects by unioning operation types, for
|
|
10
|
+
* example `Effect<IoOp | MemOp, T>` for a program that performs both I/O and
|
|
11
|
+
* memory operations.
|
|
12
|
+
*
|
|
13
|
+
* See `./types.ts` for the `Key`/`MemCreate`/`MemRead`/`MemWrite`/`MemOp`
|
|
14
|
+
* type-level API.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { asBase as nominalAsBase, asNominal as nominalAsNominal } from '../../types/nominal/module.f.mjs'
|
|
20
|
+
/** @import { Nominal } from '../../types/nominal/types.ts' */
|
|
21
|
+
import { do_ } from '../module.f.mjs'
|
|
22
|
+
/** @import { Effect } from '../types.ts' */
|
|
23
|
+
/** @import { Key, MemCreate, MemRead, MemWrite, _MemKeyHash } from './types.ts' */
|
|
24
|
+
|
|
25
|
+
/** @type {(n: Nominal<'MemKey', _MemKeyHash, string>) => string} */
|
|
26
|
+
export const asBase = nominalAsBase
|
|
27
|
+
|
|
28
|
+
/** @type {(b: string) => Nominal<'MemKey', _MemKeyHash, string>} */
|
|
29
|
+
export const asNominal = nominalAsNominal
|
|
30
|
+
|
|
31
|
+
/** Creates a new typed memory slot with `value` as its initial contents. */
|
|
32
|
+
export const create =
|
|
33
|
+
/** @type {<T>(value: T) => Effect<MemCreate, Key<T>>} */
|
|
34
|
+
(do_('memCreate'))
|
|
35
|
+
|
|
36
|
+
/** Reads the current contents of a typed memory slot. */
|
|
37
|
+
export const read =
|
|
38
|
+
/** @type {<T>(key: Key<T>) => Effect<MemRead, T>} */
|
|
39
|
+
(do_('memRead'))
|
|
40
|
+
|
|
41
|
+
/** Replaces the current contents of a typed memory slot. */
|
|
42
|
+
export const write =
|
|
43
|
+
/** @type {<T>(key: Key<T>, value: T) => Effect<MemWrite, void>} */
|
|
44
|
+
(do_('memWrite'))
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type _MemoryState = {
|
|
2
|
+
readonly next: number;
|
|
3
|
+
readonly values: {
|
|
4
|
+
readonly [key: string]: unknown;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export declare const proof: {
|
|
8
|
+
roundTrip: () => void;
|
|
9
|
+
allocatesFreshKeys: () => void;
|
|
10
|
+
typeTest: () => void;
|
|
11
|
+
throw: () => void;
|
|
12
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
2
|
+
import { run } from '../mock/module.f.mjs'
|
|
3
|
+
/** @import { MemOperationMap } from '../mock/types.ts' */
|
|
4
|
+
import { pure, step } from '../module.f.mjs'
|
|
5
|
+
import {
|
|
6
|
+
asBase, asNominal,
|
|
7
|
+
create, read, write,
|
|
8
|
+
} from './module.f.mjs'
|
|
9
|
+
/** @import { Key, MemOp } from './types.ts' */
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {{
|
|
13
|
+
* readonly next: number,
|
|
14
|
+
* readonly values: { readonly [key: string]: unknown },
|
|
15
|
+
* }} _MemoryState
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** @type {_MemoryState} */
|
|
19
|
+
const initial = { next: 0, values: {} }
|
|
20
|
+
|
|
21
|
+
/** @type {MemOperationMap<MemOp, _MemoryState>} */
|
|
22
|
+
const mock = {
|
|
23
|
+
memCreate: value => state => {
|
|
24
|
+
const id = `k${state.next}`
|
|
25
|
+
/** @type {Key<unknown>} */
|
|
26
|
+
const key = asNominal(id)
|
|
27
|
+
return [{
|
|
28
|
+
next: state.next + 1,
|
|
29
|
+
values: { ...state.values, [id]: value },
|
|
30
|
+
}, key]
|
|
31
|
+
},
|
|
32
|
+
memRead: key => state =>
|
|
33
|
+
[state, state.values[asBase(key)]],
|
|
34
|
+
memWrite: (key, value) => state => {
|
|
35
|
+
const id = asBase(key)
|
|
36
|
+
assert(id in state.values, id)
|
|
37
|
+
return [{
|
|
38
|
+
...state,
|
|
39
|
+
values: { ...state.values, [id]: value },
|
|
40
|
+
}, undefined]
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const program = step(
|
|
45
|
+
create(1),
|
|
46
|
+
key => {
|
|
47
|
+
const x = step(
|
|
48
|
+
read(key),
|
|
49
|
+
value => write(key, value + 41))
|
|
50
|
+
return step(
|
|
51
|
+
x,
|
|
52
|
+
() => read(key))
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
export const proof = {
|
|
56
|
+
roundTrip: () => {
|
|
57
|
+
const [state, result] = run(mock)(initial)(program)
|
|
58
|
+
assertEq(result, 42)
|
|
59
|
+
assertEq(state.values.k0, 42, state)
|
|
60
|
+
},
|
|
61
|
+
allocatesFreshKeys: () => {
|
|
62
|
+
const effect = step(
|
|
63
|
+
create('a'),
|
|
64
|
+
a => step(
|
|
65
|
+
create('b'),
|
|
66
|
+
b => pure(/** @type {const} */ ([asBase(a), asBase(b)]))))
|
|
67
|
+
const [state, [a, b]] = run(mock)(initial)(effect)
|
|
68
|
+
assertEq(a, 'k0')
|
|
69
|
+
assertEq(b, 'k1')
|
|
70
|
+
assertEq(state.values.k0, 'a', state)
|
|
71
|
+
assertEq(state.values.k1, 'b', state)
|
|
72
|
+
},
|
|
73
|
+
typeTest: () => {
|
|
74
|
+
step(
|
|
75
|
+
create(1),
|
|
76
|
+
k => step(write(k, 5), () => read(k)))
|
|
77
|
+
},
|
|
78
|
+
throw: () => {
|
|
79
|
+
/** @type {Key<number>} */
|
|
80
|
+
const key = asNominal('missing')
|
|
81
|
+
run(mock)(initial)(write(key, 1))
|
|
82
|
+
},
|
|
83
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for typed key-value memory effects.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Phantom } from '../../types/phantom/types.ts';
|
|
7
|
+
import type { Nominal } from '../../types/nominal/types.ts';
|
|
8
|
+
/** Nominal brand version for memory keys. */
|
|
9
|
+
export type _MemKeyHash = '3f114fa6036a8da026b827f0c3e6d901f5e81ad9a320e431ccce31451892d286';
|
|
10
|
+
/** Opaque handle for a value stored by the memory interpreter. */
|
|
11
|
+
export type Key<T> = Phantom<Nominal<'MemKey', _MemKeyHash, string>, T>;
|
|
12
|
+
/** Allocates a fresh memory slot and initializes it with `value`. */
|
|
13
|
+
export type MemCreate = readonly ['memCreate', <T>(value: T) => Key<T>];
|
|
14
|
+
/** Reads the current value stored at `key`. */
|
|
15
|
+
export type MemRead = readonly ['memRead', <T>(key: Key<T>) => T];
|
|
16
|
+
/** Replaces the current value stored at `key`. */
|
|
17
|
+
export type MemWrite = readonly ['memWrite', <T>(key: Key<T>, value: T) => void];
|
|
18
|
+
export type MemOp = MemCreate | MemRead | MemWrite;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Operation } from '../types.ts';
|
|
2
|
+
import type { MemOperationMap, RunInstance } from './types.ts';
|
|
3
|
+
/** @import { Operation } from '../types.ts' */
|
|
4
|
+
/** @import { MemOperationMap, RunInstance } from './types.ts' */
|
|
5
|
+
/** @type {<O extends Operation, S>(o: MemOperationMap<O, S>) => RunInstance<O, S>} */
|
|
6
|
+
export declare const run: <O extends Operation, S>(o: MemOperationMap<O, S>) => RunInstance<O, S>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock effect runtimes for testing effectful programs.
|
|
3
|
+
*
|
|
4
|
+
* See `./types.ts` for the `MemOperationMap`/`RunInstance` type-level API.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { match } from "../module.f.mjs"
|
|
9
|
+
/** @import { Operation } from '../types.ts' */
|
|
10
|
+
/** @import { MemOperationMap, RunInstance } from './types.ts' */
|
|
11
|
+
|
|
12
|
+
/** @type {<O extends Operation, S>(o: MemOperationMap<O, S>) => RunInstance<O, S>} */
|
|
13
|
+
export const run = o => state => effect => {
|
|
14
|
+
const next = match(o)
|
|
15
|
+
let s = state
|
|
16
|
+
let e = effect
|
|
17
|
+
while (true) {
|
|
18
|
+
const r = next(e)
|
|
19
|
+
if (r[0] === 'done') {
|
|
20
|
+
return [s, r[1]]
|
|
21
|
+
}
|
|
22
|
+
const [ns, m] = r[1](s)
|
|
23
|
+
s = ns
|
|
24
|
+
e = r[2](m)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for mock effect runtimes.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Effect, Operation, Pr } from "../types.ts";
|
|
7
|
+
/**
|
|
8
|
+
* A synchronous, state-threading operation map. An entry takes the command's
|
|
9
|
+
* payload (fixed when the command is issued) and returns a state transition —
|
|
10
|
+
* the curried `state` parameter is data the runner supplies on each step.
|
|
11
|
+
*/
|
|
12
|
+
export type MemOperationMap<O extends Operation, S> = {
|
|
13
|
+
readonly [K in O[0]]: (...payload: Pr<O, K>[0]) => (state: S) => readonly [S, Pr<O, K>[1]];
|
|
14
|
+
};
|
|
15
|
+
export type RunInstance<O extends Operation, S> = (state: S) => <O1 extends O, T>(effect: Effect<O1, T>) => readonly [S, T];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Effect, Operation, ToAsyncOperationMap } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* @template {Operation} O
|
|
4
|
+
* @param {ToAsyncOperationMap<O>} map
|
|
5
|
+
* @returns {<T>(effect: Effect<O, T>) => Promise<T>}
|
|
6
|
+
*/
|
|
7
|
+
export declare const asyncRun: <O extends Operation>(map: ToAsyncOperationMap<O>) => <T>(effect: Effect<O, T>) => Promise<T>;
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core effect type constructors and combinators.
|
|
3
|
+
*
|
|
4
|
+
* An `Effect<O, T>` **is** the raw value — a `Pure` thunk (`() => T`) or a `Do`
|
|
5
|
+
* node (`{ command, payload, continuation }`). It is plain data with no methods.
|
|
6
|
+
* Composition is provided externally by {@link step}. The optional
|
|
7
|
+
* method-chaining wrapper lives in `fjs/effects/eff/module.f.mjs`.
|
|
8
|
+
*
|
|
9
|
+
* **Three functions discriminate `Pure` from `Do`** — {@link step},
|
|
10
|
+
* {@link match}, and {@link runPure} — plus the node proof in
|
|
11
|
+
* `fjs/effects/proof.f.mjs` that pins the representation on purpose. Everything
|
|
12
|
+
* else, interpreters included, goes through `match` or `runPure`. The count is
|
|
13
|
+
* the point: a `typeof e === 'function'` check appearing in a fifth place is a
|
|
14
|
+
* review flag, because the representation is only cheap to change while its
|
|
15
|
+
* readers stay enumerable.
|
|
16
|
+
*
|
|
17
|
+
* A `decode` function (`(e: Effect<O, T>) => Decoded<O, T>`) once funnelled all
|
|
18
|
+
* of that through a single `{ done, result }` / `{ done, command, payload,
|
|
19
|
+
* continuation }` record, so that exactly one function held the shape test. It
|
|
20
|
+
* has been removed. `Effect` is a function type unioned with an object type, so
|
|
21
|
+
* `typeof e === 'function'` is already a complete discriminant: `decode` bought
|
|
22
|
+
* no narrowing, it re-encoded that narrowing as a `done` flag to be re-narrowed
|
|
23
|
+
* one indirection later, and its `Decoded` record was declared in terms of the
|
|
24
|
+
* node it claimed to hide. The price was a second vocabulary every consumer had
|
|
25
|
+
* to learn for a shape it could already read. Reintroducing it would buy back
|
|
26
|
+
* the same nothing — and with {@link Do} now carrying named fields there is not
|
|
27
|
+
* even a positional layout left for it to insulate anyone from.
|
|
28
|
+
*
|
|
29
|
+
* Effect helpers come in two shapes. **Step adapters** return a continuation
|
|
30
|
+
* `(t: T) => Effect<Q, R>` meant to be passed into a step — see {@link okStep}.
|
|
31
|
+
* **Step variants** take the effect itself first, like {@link step} — see
|
|
32
|
+
* {@link historyStep}. {@link mapStep} is the variant for the end of a chain:
|
|
33
|
+
* a pure projection over an effect's result, which is a `step` that continues
|
|
34
|
+
* with no further effect.
|
|
35
|
+
*
|
|
36
|
+
* **Do not nest steps.** Bind each intermediate effect to its own name, so a
|
|
37
|
+
* sequence reads top-to-bottom in evaluation order:
|
|
38
|
+
*
|
|
39
|
+
* ```js
|
|
40
|
+
* // avoid — reads inside-out, and gains a level of indentation per link
|
|
41
|
+
* step(a, x => step(f(x), y => step(g(y), z => h(z))))
|
|
42
|
+
*
|
|
43
|
+
* // prefer — flat, one name per link
|
|
44
|
+
* const x0 = step(a, f)
|
|
45
|
+
* const x1 = step(x0, g)
|
|
46
|
+
* return step(x1, h)
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* **A step call that does not fit one line breaks after `(`, one argument per
|
|
50
|
+
* line.** This holds for every step variant — {@link step}, {@link mapStep},
|
|
51
|
+
* {@link historyStep}, {@link foldStep}, {@link forEachStep} — and it is the
|
|
52
|
+
* same rule as taking the effect first, written out at the call site. A step
|
|
53
|
+
* variant is this module's
|
|
54
|
+
* `do` notation: the arguments are a statement list in execution order, so each
|
|
55
|
+
* one gets a line and the sequence reads down the page. Packing the leading
|
|
56
|
+
* effect onto the `(` line and wrapping the rest beneath it hides which of them
|
|
57
|
+
* runs first. The closing `)` may sit on its own line or trail the last
|
|
58
|
+
* argument:
|
|
59
|
+
*
|
|
60
|
+
* ```js
|
|
61
|
+
* return step(
|
|
62
|
+
* collectRead(cas.read(hash)),
|
|
63
|
+
* ([tag, value]) => pure(tag === 'error' ? null : decodeRevisionVec(value)))
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* When a later link needs a value from an earlier one, that is not a reason to
|
|
67
|
+
* nest: a nested continuation only reaches back because it closes over the
|
|
68
|
+
* enclosing scope. {@link historyStep} carries the value forward instead, so
|
|
69
|
+
* the chain stays flat:
|
|
70
|
+
*
|
|
71
|
+
* ```js
|
|
72
|
+
* // avoid — nested only so `h` can still see `x`
|
|
73
|
+
* step(a, x => step(f(x), y => h(x, y)))
|
|
74
|
+
*
|
|
75
|
+
* // prefer — the history tuple carries `x` forward alongside `y`
|
|
76
|
+
* const x0 = historyStep(history(a), f)
|
|
77
|
+
* return step(x0, ([y, x]) => h(x, y))
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* Nesting is often forced by nothing more than a local declared inside a
|
|
81
|
+
* continuation that does not depend on it. Hoist such locals above the chain
|
|
82
|
+
* and the nesting usually dissolves on its own.
|
|
83
|
+
*
|
|
84
|
+
* That advice is for code *using* this module, and the combinators defined
|
|
85
|
+
* here are what make it followable. The nesting has to exist somewhere: a name
|
|
86
|
+
* cannot be bound to an effect that has not been produced yet, so `f(param)`
|
|
87
|
+
* cannot become a `const` until `e` resolves. {@link step} recurses into
|
|
88
|
+
* itself inside the continuation it rebuilds, {@link foldStep} composes one
|
|
89
|
+
* step per item, and {@link historyStep} runs `f` inside `e`'s continuation.
|
|
90
|
+
* Each writes that nesting down **once**, in one line, so that no caller ever
|
|
91
|
+
* writes it again — that is what a combinator here is *for*. Without
|
|
92
|
+
* {@link historyStep} the flat form would be unavailable the moment a later
|
|
93
|
+
* link needed an earlier link's value.
|
|
94
|
+
*
|
|
95
|
+
* See `./types.ts` for the type-level API.
|
|
96
|
+
*
|
|
97
|
+
* @module
|
|
98
|
+
*/
|
|
99
|
+
import type { List } from '../types/list/types.ts';
|
|
100
|
+
import type { Option } from '../types/option/types.ts';
|
|
101
|
+
import type { Result } from '../types/result/types.ts';
|
|
102
|
+
import type { Effect, History, MatchResult, Operation, OperationMap, Param, Return } from './types.ts';
|
|
103
|
+
/** @import { Option } from '../types/option/types.ts' */
|
|
104
|
+
/** @import { Result } from '../types/result/types.ts' */
|
|
105
|
+
/** @import { Fold } from '../types/function/operator/types.ts' */
|
|
106
|
+
/** @import { Cont, Do, Effect, F, History, MatchResult, Operation, OperationMap, Param, Pr, Pure, Return, ToAsyncOperationMap } from './types.ts' */
|
|
107
|
+
/** @type {<T>(v: T) => Effect<never, T>} */
|
|
108
|
+
export declare const pure: <T>(v: T) => Effect<never, T>;
|
|
109
|
+
/**
|
|
110
|
+
* Composes effects: run `e`, then continue with `f` applied to its result.
|
|
111
|
+
* The data-first primitive — raw `Effect` in, raw `Effect` out. Chains as
|
|
112
|
+
* `step(step(e, f), g)`.
|
|
113
|
+
*
|
|
114
|
+
* **`step` is not lazy.** It reads `e`'s shape immediately, so a `Pure` head is
|
|
115
|
+
* forced and `f` is called right there: `step(pure(v), f)` *is* `f(v)`,
|
|
116
|
+
* evaluated where the composition is written rather than where the effect is
|
|
117
|
+
* run. Only the `Do` case defers — the continuation rebuilt around `f` runs
|
|
118
|
+
* when a runner reaches that node.
|
|
119
|
+
*
|
|
120
|
+
* That is sound rather than an oversight, and it is sound only because of
|
|
121
|
+
* {@link Pure}'s contract: a `Pure` holds a value that has already been
|
|
122
|
+
* computed, so forcing it early observes nothing, repeats nothing, and can
|
|
123
|
+
* throw nothing. `step` never performs a `Do` node, which is where anything
|
|
124
|
+
* real lives. Break the contract — hide work behind the thunk — and merely
|
|
125
|
+
* composing a chain starts running the program.
|
|
126
|
+
*
|
|
127
|
+
* A composition cannot be suspended, and no combinator can fix that:
|
|
128
|
+
* `defer: (() => Effect<O, T>) => Effect<O, T>` cannot be written here, because
|
|
129
|
+
* the `Pure` / `Do` tag must be known before anything runs and the union has no
|
|
130
|
+
* third case meaning "not yet decided". That is inherent to the representation,
|
|
131
|
+
* not a gap in this module's API. A caller that needs to name a composition
|
|
132
|
+
* without performing it yet has to keep the ingredients and defer the `step`
|
|
133
|
+
* itself — `Eff` does exactly this, holding its history tuple as a thunk (`h`)
|
|
134
|
+
* precisely because composing it eagerly is the one thing it cannot take back.
|
|
135
|
+
*
|
|
136
|
+
* @type {<O extends Operation, T, Q extends Operation, R>(e: Effect<O, T>, f: (t: T) => Effect<Q, R>) => Effect<O | Q, R>}
|
|
137
|
+
*/
|
|
138
|
+
export declare const step: <O extends Operation, T, Q extends Operation, R>(e: Effect<O, T>, f: (t: T) => Effect<Q, R>) => Effect<O | Q, R>;
|
|
139
|
+
/**
|
|
140
|
+
* Applies a pure function to an effect's result: the functor `map` of the
|
|
141
|
+
* effect monad, and a {@link step} whose continuation performs nothing further.
|
|
142
|
+
*
|
|
143
|
+
* Prefer it over the `step(e, t => pure(f(t)))` it abbreviates. The two are the
|
|
144
|
+
* same value, but they read as different things: a `step` announces another
|
|
145
|
+
* link in a sequence of effects, and a trailing pure projection is not one —
|
|
146
|
+
* it is where the sequence ends. Saying so in the combinator's name keeps the
|
|
147
|
+
* "one name per link" shape of a chain honest about how many effects it runs.
|
|
148
|
+
*
|
|
149
|
+
* **The operation set does not widen.** The result is `Effect<O, R>`, not
|
|
150
|
+
* `Effect<O | Q, R>`, because a pure projection issues no commands — nothing a
|
|
151
|
+
* runner has to know how to interpret is added by `f`. That is what separates
|
|
152
|
+
* this from `step`, beyond the shorter spelling.
|
|
153
|
+
*
|
|
154
|
+
* A constant variant (`constStep(e, v)`) is deliberately absent: `mapStep(e,
|
|
155
|
+
* () => v)` already reads clearly, and it keeps `v`'s evaluation inside the
|
|
156
|
+
* continuation where `step` puts it, rather than moving it to where the
|
|
157
|
+
* composition is written.
|
|
158
|
+
*
|
|
159
|
+
* @type {<O extends Operation, T, R>(e: Effect<O, T>, f: (t: T) => R) => Effect<O, R>}
|
|
160
|
+
*/
|
|
161
|
+
export declare const mapStep: <O extends Operation, T, R>(e: Effect<O, T>, f: (t: T) => R) => Effect<O, R>;
|
|
162
|
+
/**
|
|
163
|
+
* Like {@link step}, but keeps the values instead of discarding them: runs `e`
|
|
164
|
+
* to get the history `p`, continues with `f(...p)` to get `r`, and yields
|
|
165
|
+
* `[r, ...p]` — the same history with `r` prepended.
|
|
166
|
+
*
|
|
167
|
+
* This is what a chain of named intermediate effects cannot otherwise express.
|
|
168
|
+
* Each `step`'s continuation sees only the result of the effect it consumes, so
|
|
169
|
+
* a later link has no way to reach an earlier one. `historyStep` carries every
|
|
170
|
+
* earlier value forward, and the next destructuring names the parts:
|
|
171
|
+
*
|
|
172
|
+
* ```js
|
|
173
|
+
* const b = historyStep(history(a), decodeRevisionBlob(cas))
|
|
174
|
+
* const c = step(b, ([revision, hash]) => ...)
|
|
175
|
+
* ```
|
|
176
|
+
*
|
|
177
|
+
* Chaining mimics an async function, one `await` per link — `const hash = ...`
|
|
178
|
+
* then `const revision = ...`, with both still reachable at the end. It takes a
|
|
179
|
+
* history and returns one, so it composes with itself to any depth; only the
|
|
180
|
+
* entry point needs {@link history}:
|
|
181
|
+
*
|
|
182
|
+
* ```js
|
|
183
|
+
* const h0 = history(readHash(cas))
|
|
184
|
+
* const h1 = historyStep(h0, hash => decodeRevisionBlob(cas)(hash))
|
|
185
|
+
* const h2 = historyStep(h1, (revision, hash) => ...)
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* **Newest first.** A position is distance back from the current link, not
|
|
189
|
+
* evaluation order, so a destructuring reads reverse-chronologically:
|
|
190
|
+
* `([z, y, x]) => ...` binds `x` earliest. Reaching further back costs an index
|
|
191
|
+
* rather than a traversal, but a long chain makes the positions hard to count.
|
|
192
|
+
* When that starts to hurt, collapse it into a record of named fields
|
|
193
|
+
* (`pure({ hash, revision } as const)`) and start a fresh history from there.
|
|
194
|
+
*
|
|
195
|
+
* `Readonly<P>` on `f`'s rest parameter is load-bearing: inferring `P` from a
|
|
196
|
+
* bare rest parameter yields a *mutable*, labelled tuple (`[next: string]`),
|
|
197
|
+
* which then rejects the `readonly` tuples every history is built from.
|
|
198
|
+
*
|
|
199
|
+
* @type {<O extends Operation, P extends readonly unknown[], Q extends Operation, R>(
|
|
200
|
+
* e: History<O, P>,
|
|
201
|
+
* f: (...p: Readonly<P>) => Effect<Q, R>
|
|
202
|
+
* ) => History<O | Q, readonly[R, ...P]>}
|
|
203
|
+
*/
|
|
204
|
+
export declare const historyStep: <O extends Operation, P extends readonly unknown[], Q extends Operation, R>(e: History<O, P>, f: (...p: Readonly<P>) => Effect<Q, R>) => History<O | Q, readonly [R, ...P]>;
|
|
205
|
+
/**
|
|
206
|
+
* Starts a history, lifting a plain result into a one-element tuple so that
|
|
207
|
+
* {@link historyStep} can extend it.
|
|
208
|
+
*
|
|
209
|
+
* Creating a history is the *only* thing this does — every later link goes
|
|
210
|
+
* through `historyStep`, which is what lets one combinator cover chains of any
|
|
211
|
+
* length. Fusing the two (a step that both starts and extends) is what makes
|
|
212
|
+
* chains stop composing: such a step nests its predecessor's tuple instead of
|
|
213
|
+
* flattening it, so link two would have to be spelled differently from link
|
|
214
|
+
* three.
|
|
215
|
+
*
|
|
216
|
+
* @type {<O extends Operation, T>(e: Effect<O, T>) => History<O, readonly[T]>}
|
|
217
|
+
*/
|
|
218
|
+
export declare const history: <O extends Operation, T>(e: Effect<O, T>) => History<O, readonly [T]>;
|
|
219
|
+
/**
|
|
220
|
+
* @type {<O extends Operation>(command: O[0]) => (...payload: Param<O>) => Effect<O, Return<O>>}
|
|
221
|
+
*/
|
|
222
|
+
export declare const do_: <O extends Operation>(command: O[0]) => (...payload: Param<O>) => Effect<O, Return<O>>;
|
|
223
|
+
/**
|
|
224
|
+
* Sequentially threads a state value through an effect for each item produced by
|
|
225
|
+
* `items`.
|
|
226
|
+
*
|
|
227
|
+
* Given `f: item => state => Effect<Q, state>`, `init: S`, and an `items` that
|
|
228
|
+
* yields `[x₀, x₁, …]`, builds `step(step(f(x₀)(init), f(x₁)), f(x₂))…` and
|
|
229
|
+
* yields a single effect producing the final state.
|
|
230
|
+
*
|
|
231
|
+
* Sequential — each step depends on the previous state. Compare to `all`,
|
|
232
|
+
* which fans out independent effects.
|
|
233
|
+
*
|
|
234
|
+
* **A step variant** (see the two shapes described in this module's header): the
|
|
235
|
+
* effect comes first, as in {@link step} and {@link historyStep}. `items` is an
|
|
236
|
+
* `Effect<O, List<T>>` rather than a bare `List<T>` because the list a caller
|
|
237
|
+
* folds over is normally *produced* by an effect — `cas.list()`, a `readdir`.
|
|
238
|
+
* Taking the plain list would force every such caller to open a continuation
|
|
239
|
+
* just to name the list (`step(cas.list(), foldStep(…))`), which is the nesting
|
|
240
|
+
* this module exists to keep out of call sites. A caller that already holds the
|
|
241
|
+
* list lifts it with `pure`, which costs a wrapper but no indentation.
|
|
242
|
+
*
|
|
243
|
+
* `O` and `Q` are separate on purpose: the operations needed to produce the list
|
|
244
|
+
* are rarely the ones the body performs, and the result unions them.
|
|
245
|
+
*
|
|
246
|
+
* **The argument order is deliberately not `fold`'s** from `fjs/types/list`, and
|
|
247
|
+
* the difference is what the two combinators are *for*. `fold` is a data
|
|
248
|
+
* pipeline: it is curried `f`-first because the list is the thing being threaded
|
|
249
|
+
* through, and nothing about it happens in time. A step variant is a sequencing
|
|
250
|
+
* construct — it is this module's `do` notation, and reading one top-to-bottom
|
|
251
|
+
* is reading the order the program executes in. The effect therefore has to come
|
|
252
|
+
* first, because it is what happens first. Currying `f` ahead of `items` would
|
|
253
|
+
* put the *body* of the loop above the thing it loops over, which is exactly the
|
|
254
|
+
* inversion `do` exists to remove.
|
|
255
|
+
*
|
|
256
|
+
* That is also why the whole family — `step`, `historyStep`, `foldStep`,
|
|
257
|
+
* `forEachStep` — takes its effect first and breaks one argument per line when
|
|
258
|
+
* it wraps (see this module's header): every such call is a statement list, and
|
|
259
|
+
* each line is one statement in execution order.
|
|
260
|
+
*
|
|
261
|
+
* @template {Operation} O
|
|
262
|
+
* @template T
|
|
263
|
+
* @template {Operation} Q
|
|
264
|
+
* @template S
|
|
265
|
+
* @param {Effect<O, List<T>>} items
|
|
266
|
+
* @param {S} init
|
|
267
|
+
* @param {(item: T) => (state: S) => Effect<Q, S>} f
|
|
268
|
+
* @returns {Effect<O | Q, S>}
|
|
269
|
+
*/
|
|
270
|
+
export declare const foldStep: <O extends Operation, T, Q extends Operation, S>(items: Effect<O, List<T>>, init: S, f: (item: T) => (state: S) => Effect<Q, S>) => Effect<O | Q, S>;
|
|
271
|
+
/**
|
|
272
|
+
* Sequentially runs `f(item)` for each item produced by `items`, discarding
|
|
273
|
+
* intermediate results. The `void` accumulator sibling of {@link foldStep}, and
|
|
274
|
+
* a step variant on the same grounds.
|
|
275
|
+
*
|
|
276
|
+
* @type {<O extends Operation, T, Q extends Operation>(items: Effect<O, List<T>>, f: (item: T) => Effect<Q, void>) => Effect<O | Q, void>}
|
|
277
|
+
*/
|
|
278
|
+
export declare const forEachStep: <O extends Operation, T, Q extends Operation>(items: Effect<O, List<T>>, f: (item: T) => Effect<Q, void>) => Effect<O | Q, void>;
|
|
279
|
+
/**
|
|
280
|
+
* A step adapter for the `error` short-circuit: `error` → pass it through
|
|
281
|
+
* unchanged as `pure`, `ok` → continue with `f`. Collapses the hand-written
|
|
282
|
+
* `r[0] === 'error' ? pure(r) : f(r[1])` check that recurs at every site
|
|
283
|
+
* chaining `Effect<O, Result<T, E>>` steps.
|
|
284
|
+
*
|
|
285
|
+
* @type {<T, E, O extends Operation, R>(f: (value: T) => Effect<O, Result<R, E>>) => (r: Result<T, E>) => Effect<O, Result<R, E>>}
|
|
286
|
+
*/
|
|
287
|
+
export declare const okStep: <T, E, O extends Operation, R>(f: (value: T) => Effect<O, Result<R, E>>) => (r: Result<T, E>) => Effect<O, Result<R, E>>;
|
|
288
|
+
/**
|
|
289
|
+
* Runs an effect that reaches its value without performing a command: `[t]` for
|
|
290
|
+
* a {@link Pure}, empty for a {@link Do}. Forces the thunk in the `Pure` case,
|
|
291
|
+
* which {@link Pure}'s contract makes free of consequence.
|
|
292
|
+
*
|
|
293
|
+
* The eliminator for callers that expect no operations at all — the other side
|
|
294
|
+
* of {@link match}, which is for callers that intend to perform them.
|
|
295
|
+
*
|
|
296
|
+
* **The result is tagged on purpose.** Returning `T | null` would collapse two
|
|
297
|
+
* distinct outcomes whenever `T` itself admits `null`: `runPure(pure(null))` and
|
|
298
|
+
* `runPure(someDo)` would both be `null`, so a caller asserting `null` would
|
|
299
|
+
* accept an effect that unexpectedly stopped at a command — exactly the case
|
|
300
|
+
* this exists to rule out. `Option<T>` keeps them apart: `[null]` is a pure
|
|
301
|
+
* `null`, `[]` is a `Do`.
|
|
302
|
+
*
|
|
303
|
+
* `O` stays generic rather than narrowing to `Effect<never, T>`. `Effect` is
|
|
304
|
+
* covariant in `O`, so `Effect<never, T>` is assignable to `Effect<O, T>` and
|
|
305
|
+
* not the reverse — a continuation's result is always the wider type and would
|
|
306
|
+
* be rejected. `Do<never, T>` is uninhabited besides, which would make the empty
|
|
307
|
+
* case unreachable without a cast.
|
|
308
|
+
*
|
|
309
|
+
* @type {<O extends Operation, T>(e: Effect<O, T>) => Option<T>}
|
|
310
|
+
*/
|
|
311
|
+
export declare const runPure: <O extends Operation, T>(e: Effect<O, T>) => Option<T>;
|
|
312
|
+
/**
|
|
313
|
+
* Decodes an effect's next step and dispatches its command to `map`,
|
|
314
|
+
* returning either the final result or the operation's output `R` paired
|
|
315
|
+
* with the continuation. The one world-specific step — `await` for async
|
|
316
|
+
* runners, state threading for sync ones — is left to the caller, so every
|
|
317
|
+
* interpreter loop is this skeleton plus a single eliminator line.
|
|
318
|
+
*
|
|
319
|
+
* **The handler is looked up with `at`, never with `map[command]`.**
|
|
320
|
+
* `OperationMap<O, R>` pins `command` to `O[0]` at the type level, but a `Do`
|
|
321
|
+
* node's `command` is runtime data — it can reach an interpreter from a decoded
|
|
322
|
+
* payload or a deserialized continuation, where no type ever constrained it.
|
|
323
|
+
* `map` is an ordinary object, so a plain index read resolves an inherited name
|
|
324
|
+
* (`'constructor'`, `'toString'`, `'hasOwnProperty'`) to the `Object.prototype`
|
|
325
|
+
* member instead of `undefined`, and the line below would then call it with the
|
|
326
|
+
* node's payload: a value the type system promised was `(...payload) => R` turns
|
|
327
|
+
* out to be an arbitrary inherited function, chosen by the same input that
|
|
328
|
+
* supplies its arguments. `at` reads through `getOwnPropertyDescriptor`, which
|
|
329
|
+
* only ever sees own properties, so such a command yields `null` and never a
|
|
330
|
+
* callable.
|
|
331
|
+
*
|
|
332
|
+
* A `null` handler is an invariant violation, not an outcome: every `O1 extends
|
|
333
|
+
* O` the signature admits has its command in `map`, so reaching it means the
|
|
334
|
+
* node's `command` was never the `O1[0]` it claimed to be. It therefore throws
|
|
335
|
+
* (`assert`) rather than widening {@link MatchResult} with a variant no
|
|
336
|
+
* type-correct caller could ever observe — a runner cannot resume a command it
|
|
337
|
+
* has no handler for, so there is nothing for a recovery branch to do.
|
|
338
|
+
*
|
|
339
|
+
* @template {Operation} O
|
|
340
|
+
* @template R
|
|
341
|
+
* @param {OperationMap<O, R>} map
|
|
342
|
+
*/
|
|
343
|
+
export declare const match: <O extends Operation, R>(map: OperationMap<O, R>) => <O1 extends O, T>(
|
|
344
|
+
/**
|
|
345
|
+
* @template {O} O1
|
|
346
|
+
* @template T
|
|
347
|
+
* @param {Effect<O1, T>} e
|
|
348
|
+
* @returns {MatchResult<O1, T, R>}
|
|
349
|
+
*/
|
|
350
|
+
e: Effect<O1, T>) => MatchResult<O1, T, R>;
|