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,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prints the shared operator test data as Rust.
|
|
3
|
+
*
|
|
4
|
+
* The output is `nanvm-lib/tests/test/generated.rs`: one statement per case,
|
|
5
|
+
* calling the hand-written helpers in `nanvm-lib/tests/test/harness.rs`. Only
|
|
6
|
+
* the helpers are written by hand — a new operator case is added to
|
|
7
|
+
* [`../module.f.mjs`](../module.f.mjs) and appears on both the JavaScript and
|
|
8
|
+
* the Rust side at once.
|
|
9
|
+
*
|
|
10
|
+
* Literal syntax comes from [`fjs/media/rust`](../../media/rust/module.f.mjs);
|
|
11
|
+
* what is specific to this module is the `nanvm-lib` API the statements target.
|
|
12
|
+
*
|
|
13
|
+
* Every emitted function carries `#[rustfmt::skip]`: the line layout here is
|
|
14
|
+
* one statement per case, and `cargo fmt -- --check` runs in CI, so the
|
|
15
|
+
* printer would otherwise have to reproduce rustfmt's wrapping exactly.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*
|
|
19
|
+
* @import { Case, Data, Eq, Group, Op, Value } from '../types.ts'
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* import { generate } from './module.f.mjs'
|
|
25
|
+
* import { data } from '../module.f.mjs'
|
|
26
|
+
*
|
|
27
|
+
* generate(data) // the contents of `nanvm-lib/tests/test/generated.rs`
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import {
|
|
32
|
+
f64Literal,
|
|
33
|
+
i64Literal,
|
|
34
|
+
snakeCase,
|
|
35
|
+
stringLiteral,
|
|
36
|
+
} from '../../media/rust/module.f.mjs'
|
|
37
|
+
|
|
38
|
+
const { entries } = Object
|
|
39
|
+
|
|
40
|
+
const indent = ' '
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Where this printer's output goes, relative to the repository root.
|
|
44
|
+
*
|
|
45
|
+
* `tests/test/` rather than `tests/`: cargo turns every `tests/*.rs` into its
|
|
46
|
+
* own test target, so a generated file directly in `tests/` would be built as
|
|
47
|
+
* a second, harness-less crate. Inside `tests/test/` it is an ordinary
|
|
48
|
+
* submodule of the `tests/test/main.rs` target.
|
|
49
|
+
*/
|
|
50
|
+
export const directory = 'nanvm-lib/tests/test'
|
|
51
|
+
|
|
52
|
+
/** @type {string} */
|
|
53
|
+
export const path = `${directory}/generated.rs`
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* A Rust expression of type `Any<A>`.
|
|
57
|
+
*
|
|
58
|
+
* Every use site fixes `A`, so no expression needs a turbofish: the harness
|
|
59
|
+
* helpers take `Any<A>` arguments and the shared `let` bindings are annotated.
|
|
60
|
+
*
|
|
61
|
+
* @type {(v: Value) => string}
|
|
62
|
+
*/
|
|
63
|
+
export const valueExpr = v => {
|
|
64
|
+
if (v === null) { return 'Nullish::Null.to_any()' }
|
|
65
|
+
if (typeof v === 'function') {
|
|
66
|
+
const info = v()
|
|
67
|
+
switch (info[0]) {
|
|
68
|
+
case 'function': { return 'function_any()' }
|
|
69
|
+
case 'ref': { return `${snakeCase(info[1])}.clone()` }
|
|
70
|
+
case 'throw': { throw ['`throws` is not a value', info] }
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
switch (typeof v) {
|
|
74
|
+
case 'undefined': { return 'Nullish::Undefined.to_any()' }
|
|
75
|
+
case 'boolean': { return `${v}.to_any()` }
|
|
76
|
+
case 'number': { return `(${f64Literal(v)}).to_any()` }
|
|
77
|
+
case 'string': { return `string_any(${stringLiteral(v)})` }
|
|
78
|
+
case 'bigint': { return `bigint_any(${i64Literal(v)})` }
|
|
79
|
+
}
|
|
80
|
+
if (Array.isArray(v)) {
|
|
81
|
+
const items = /** @type {readonly Value[]} */(v)
|
|
82
|
+
return items.length === 0
|
|
83
|
+
? 'Array::default().to_any()'
|
|
84
|
+
: `[${items.map(valueExpr).join(', ')}].to_array().to_any()`
|
|
85
|
+
}
|
|
86
|
+
const properties = entries(v)
|
|
87
|
+
return properties.length === 0
|
|
88
|
+
? 'Object::default().to_any()'
|
|
89
|
+
: `[${properties.map(
|
|
90
|
+
([k, p]) => `(string_key(${stringLiteral(k)}), ${valueExpr(p)})`).join(', ')}].to_object().to_any()`
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** @type {(op: Op) => (args: readonly string[]) => string} */
|
|
94
|
+
export const call = op => args => {
|
|
95
|
+
switch (op) {
|
|
96
|
+
case 'unaryPlus': { return `Any::unary_plus(${args[0]})` }
|
|
97
|
+
case 'unaryMinus': { return `-(${args[0]})` }
|
|
98
|
+
case 'mul': { return `${args[0]} * ${args[1]}` }
|
|
99
|
+
case 'stringCoercion': { return `${args[0]}.to_string().map(|v| v.to_any())` }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Comments out a statement `nanvm-lib` cannot pass yet, keeping the case
|
|
105
|
+
* visible in the generated file as the work still to do.
|
|
106
|
+
*
|
|
107
|
+
* @type {(reason: string|undefined) => (statement: string) => readonly string[]}
|
|
108
|
+
*/
|
|
109
|
+
const emit = reason => statement => reason === undefined
|
|
110
|
+
? [`${indent}${statement}`]
|
|
111
|
+
: [`${indent}// TODO: ${reason}`, `${indent}// ${statement}`]
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Every argument order a case is checked in — both for a commutative
|
|
115
|
+
* operator, matching what the JavaScript proof does.
|
|
116
|
+
*
|
|
117
|
+
* @type {(commutative: boolean) => (c: Case) => readonly (readonly[string, readonly Value[]])[]}
|
|
118
|
+
*/
|
|
119
|
+
const orders = commutative => c => commutative
|
|
120
|
+
? [[c.name, c.args], [`${c.name}Swapped`, c.args.toReversed()]]
|
|
121
|
+
: [[c.name, c.args]]
|
|
122
|
+
|
|
123
|
+
/** @type {(expected: Value) => (name: string) => (result: string) => string} */
|
|
124
|
+
const assertion = expected => name => result =>
|
|
125
|
+
typeof expected === 'function' && expected()[0] === 'throw'
|
|
126
|
+
? `check_throws::<A>(${stringLiteral(name)}, ${result});`
|
|
127
|
+
: `check::<A>(${stringLiteral(name)}, ${result}, ${valueExpr(expected)});`
|
|
128
|
+
|
|
129
|
+
/** @type {(g: Group) => readonly string[]} */
|
|
130
|
+
const groupFn = g => [
|
|
131
|
+
'#[rustfmt::skip]',
|
|
132
|
+
`fn ${snakeCase(g.op)}<A: IVm>() {`,
|
|
133
|
+
...g.cases.flatMap(c => orders(g.commutative === true)(c).flatMap(
|
|
134
|
+
([name, args]) => emit(c.rust)(
|
|
135
|
+
assertion(c.expected)(name)(call(g.op)(args.map(valueExpr)))))),
|
|
136
|
+
'}',
|
|
137
|
+
'',
|
|
138
|
+
]
|
|
139
|
+
|
|
140
|
+
/** @type {(eq: Eq) => readonly string[]} */
|
|
141
|
+
const eqFn = eq => [
|
|
142
|
+
'#[rustfmt::skip]',
|
|
143
|
+
'fn eq<A: IVm>() {',
|
|
144
|
+
...entries(eq.shared).map(
|
|
145
|
+
([k, v]) => `${indent}let ${snakeCase(k)}: Any<A> = ${valueExpr(v)};`),
|
|
146
|
+
...eq.cases.flatMap(c => emit(c.rust)(
|
|
147
|
+
`check_eq::<A>(${stringLiteral(c.name)}, ${valueExpr(c.a)}, ${valueExpr(c.b)}, ${c.eq});`)),
|
|
148
|
+
'}',
|
|
149
|
+
'',
|
|
150
|
+
]
|
|
151
|
+
|
|
152
|
+
/** @type {(data: Data) => string} */
|
|
153
|
+
export const generate = data => [
|
|
154
|
+
'// @generated by `npm run ci-update` from `fjs/nanvm/module.f.mjs`.',
|
|
155
|
+
'// Do not edit: change the shared operator test data and regenerate.',
|
|
156
|
+
'',
|
|
157
|
+
'use super::harness::*;',
|
|
158
|
+
'',
|
|
159
|
+
...eqFn(data.eq),
|
|
160
|
+
...data.groups.flatMap(groupFn),
|
|
161
|
+
'pub fn all<A: IVm>() {',
|
|
162
|
+
`${indent}eq::<A>();`,
|
|
163
|
+
...data.groups.map(g => `${indent}${snakeCase(g.op)}::<A>();`),
|
|
164
|
+
'}',
|
|
165
|
+
'',
|
|
166
|
+
].join('\n')
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proofs for the Rust printer.
|
|
3
|
+
*
|
|
4
|
+
* The interesting assertion is `generate`'s on a tiny synthetic corpus: it
|
|
5
|
+
* pins the exact text of every construct the printer can emit, so a change in
|
|
6
|
+
* layout is a visible diff here and not only in the generated file.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*
|
|
10
|
+
* @import { Data } from '../types.ts'
|
|
11
|
+
*/
|
|
12
|
+
export declare const proof: {
|
|
13
|
+
path: () => void;
|
|
14
|
+
valueExpr: () => void;
|
|
15
|
+
call: () => void;
|
|
16
|
+
generate: () => void;
|
|
17
|
+
generateData: () => void;
|
|
18
|
+
throw: {
|
|
19
|
+
throwsIsNotAValue: () => string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proofs for the Rust printer.
|
|
3
|
+
*
|
|
4
|
+
* The interesting assertion is `generate`'s on a tiny synthetic corpus: it
|
|
5
|
+
* pins the exact text of every construct the printer can emit, so a change in
|
|
6
|
+
* layout is a visible diff here and not only in the generated file.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*
|
|
10
|
+
* @import { Data } from '../types.ts'
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
14
|
+
import { data, functionValue, ref, throws } from '../module.f.mjs'
|
|
15
|
+
import { call, directory, generate, path, valueExpr } from './module.f.mjs'
|
|
16
|
+
import { snakeCase } from '../../media/rust/module.f.mjs'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* One case of every shape the printer can emit: a shared value and a
|
|
20
|
+
* reference to it, a skipped case, a throwing case, and a commutative binary
|
|
21
|
+
* operator.
|
|
22
|
+
*
|
|
23
|
+
* @type {Data}
|
|
24
|
+
*/
|
|
25
|
+
const sample = {
|
|
26
|
+
eq: {
|
|
27
|
+
shared: { emptyArray: [] },
|
|
28
|
+
cases: [
|
|
29
|
+
{ name: 'itself', a: ref('emptyArray'), b: ref('emptyArray'), eq: true },
|
|
30
|
+
{ name: 'skipped', a: null, b: null, eq: true, rust: 'not yet' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
groups: [
|
|
34
|
+
{ op: 'unaryPlus', cases: [{ name: 'bigint', args: [0n], expected: throws }] },
|
|
35
|
+
{
|
|
36
|
+
op: 'mul',
|
|
37
|
+
commutative: true,
|
|
38
|
+
cases: [{ name: 'oneByTwo', args: [1, 2], expected: 2 }],
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const expected = `// @generated by \`npm run ci-update\` from \`fjs/nanvm/module.f.mjs\`.
|
|
44
|
+
// Do not edit: change the shared operator test data and regenerate.
|
|
45
|
+
|
|
46
|
+
use super::harness::*;
|
|
47
|
+
|
|
48
|
+
#[rustfmt::skip]
|
|
49
|
+
fn eq<A: IVm>() {
|
|
50
|
+
let empty_array: Any<A> = Array::default().to_any();
|
|
51
|
+
check_eq::<A>("itself", empty_array.clone(), empty_array.clone(), true);
|
|
52
|
+
// TODO: not yet
|
|
53
|
+
// check_eq::<A>("skipped", Nullish::Null.to_any(), Nullish::Null.to_any(), true);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
#[rustfmt::skip]
|
|
57
|
+
fn unary_plus<A: IVm>() {
|
|
58
|
+
check_throws::<A>("bigint", Any::unary_plus(bigint_any(0)));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#[rustfmt::skip]
|
|
62
|
+
fn mul<A: IVm>() {
|
|
63
|
+
check::<A>("oneByTwo", (1f64).to_any() * (2f64).to_any(), (2f64).to_any());
|
|
64
|
+
check::<A>("oneByTwoSwapped", (2f64).to_any() * (1f64).to_any(), (2f64).to_any());
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
pub fn all<A: IVm>() {
|
|
68
|
+
eq::<A>();
|
|
69
|
+
unary_plus::<A>();
|
|
70
|
+
mul::<A>();
|
|
71
|
+
}
|
|
72
|
+
`
|
|
73
|
+
|
|
74
|
+
export const proof = {
|
|
75
|
+
path: () => {
|
|
76
|
+
assertEq(directory, 'nanvm-lib/tests/test')
|
|
77
|
+
assertEq(path, 'nanvm-lib/tests/test/generated.rs')
|
|
78
|
+
},
|
|
79
|
+
valueExpr: () => {
|
|
80
|
+
assertEq(valueExpr(null), 'Nullish::Null.to_any()')
|
|
81
|
+
assertEq(valueExpr(undefined), 'Nullish::Undefined.to_any()')
|
|
82
|
+
assertEq(valueExpr(true), 'true.to_any()')
|
|
83
|
+
assertEq(valueExpr(false), 'false.to_any()')
|
|
84
|
+
assertEq(valueExpr(-0.3), '(-0.3f64).to_any()')
|
|
85
|
+
assertEq(valueExpr('a'), 'string_any("a")')
|
|
86
|
+
assertEq(valueExpr(-1n), 'bigint_any(-1)')
|
|
87
|
+
assertEq(valueExpr([]), 'Array::default().to_any()')
|
|
88
|
+
assertEq(valueExpr([null]), '[Nullish::Null.to_any()].to_array().to_any()')
|
|
89
|
+
assertEq(valueExpr({}), 'Object::default().to_any()')
|
|
90
|
+
assertEq(
|
|
91
|
+
valueExpr({ k: null }),
|
|
92
|
+
'[(string_key("k"), Nullish::Null.to_any())].to_object().to_any()')
|
|
93
|
+
assertEq(valueExpr(functionValue), 'function_any()')
|
|
94
|
+
assertEq(valueExpr(ref('stringArray')), 'string_array.clone()')
|
|
95
|
+
},
|
|
96
|
+
call: () => {
|
|
97
|
+
assertEq(call('unaryPlus')(['x']), 'Any::unary_plus(x)')
|
|
98
|
+
assertEq(call('unaryMinus')(['x']), '-(x)')
|
|
99
|
+
assertEq(call('mul')(['x', 'y']), 'x * y')
|
|
100
|
+
assertEq(call('stringCoercion')(['x']), 'x.to_string().map(|v| v.to_any())')
|
|
101
|
+
},
|
|
102
|
+
generate: () => {
|
|
103
|
+
assertEq(generate(sample), expected)
|
|
104
|
+
},
|
|
105
|
+
generateData: () => {
|
|
106
|
+
// The real corpus, which is what `ci-update` writes. Only its shape is
|
|
107
|
+
// asserted here: its contents are checked by `cargo test`.
|
|
108
|
+
const result = generate(data)
|
|
109
|
+
assert(result.endsWith('}\n'), result)
|
|
110
|
+
assert(result.includes('pub fn all<A: IVm>() {'), result)
|
|
111
|
+
for (const g of data.groups) {
|
|
112
|
+
assert(result.includes(`fn ${snakeCase(g.op)}<A: IVm>() {`), g.op)
|
|
113
|
+
assert(result.includes(`${snakeCase(g.op)}::<A>();`), g.op)
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
throw: {
|
|
117
|
+
throwsIsNotAValue: () => valueExpr(throws),
|
|
118
|
+
},
|
|
119
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level API for the shared operator test data.
|
|
3
|
+
*
|
|
4
|
+
* The data described here is the single source of truth for operator
|
|
5
|
+
* behaviour: [`proof.f.mjs`](./proof.f.mjs) runs it against a standard
|
|
6
|
+
* JavaScript engine, and [`rust/module.f.mjs`](./rust/module.f.mjs) prints it
|
|
7
|
+
* as the Rust tests in [`test/generated.rs`](./test/generated.rs).
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A value under test, written as itself.
|
|
13
|
+
*
|
|
14
|
+
* The shape follows `fjs/types/rtti`, where a constant is its own schema and a
|
|
15
|
+
* thunk describes anything that needs a tag: `2.3`, `'a'`, `12n`, `[1, 2]`,
|
|
16
|
+
* and `{ a: 1 }` mean exactly what they look like, and the only tagged forms
|
|
17
|
+
* are the ones a literal cannot express — see {@link Special}.
|
|
18
|
+
*
|
|
19
|
+
* Writing operands as plain JavaScript is what makes the corpus readable
|
|
20
|
+
* (`args: [[2.3]], expected: 2.3` rather than a tree of constructor calls) and
|
|
21
|
+
* costs nothing: both consumers already have to walk the value, and `typeof`
|
|
22
|
+
* plus `Array.isArray` recovers everything a tag would have carried.
|
|
23
|
+
*/
|
|
24
|
+
export type Value = Const | Special;
|
|
25
|
+
/** A value that is its own description. */
|
|
26
|
+
export type Const = null | undefined | boolean | number | string | bigint | readonly Value[] | Struct;
|
|
27
|
+
/** An object value. Property order is the order the Rust printer emits. */
|
|
28
|
+
export type Struct = {
|
|
29
|
+
readonly [k in string]?: Value;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Something no literal can express, described by a thunk.
|
|
33
|
+
*
|
|
34
|
+
* A function in the data is therefore always a *description*, never a value
|
|
35
|
+
* that happens to be a function — `functionValue` is how the data says "a
|
|
36
|
+
* function".
|
|
37
|
+
*/
|
|
38
|
+
export type Special = () => Info;
|
|
39
|
+
/**
|
|
40
|
+
* What a {@link Special} describes.
|
|
41
|
+
*
|
|
42
|
+
* - `function` — a function value. Every operator here coerces one through
|
|
43
|
+
* `ToPrimitive`, which never inspects it, so there is nothing to carry.
|
|
44
|
+
* - `ref` — one of the {@link Eq} `shared` values, so the *same* object
|
|
45
|
+
* reaches both sides of a comparison.
|
|
46
|
+
* - `throw` — not a value at all: the case must throw. Valid only as a
|
|
47
|
+
* {@link Case}'s `expected`.
|
|
48
|
+
*/
|
|
49
|
+
export type Info = readonly ['function'] | readonly ['ref', string] | readonly ['throw'];
|
|
50
|
+
/** The operators covered by the shared data. */
|
|
51
|
+
export type Op = 'unaryPlus' | 'unaryMinus' | 'mul' | 'stringCoercion';
|
|
52
|
+
/**
|
|
53
|
+
* One operator test case.
|
|
54
|
+
*
|
|
55
|
+
* `expected` is compared with `Object.is`, so `NaN` matches `NaN` and `0` does
|
|
56
|
+
* not match `-0`; `throws` there means the operation must throw, and the
|
|
57
|
+
* exception value — being engine-specific — is not part of the data.
|
|
58
|
+
*
|
|
59
|
+
* `rust` marks a case `nanvm-lib` does not implement yet: the value is the
|
|
60
|
+
* reason, the generated Rust keeps the case as a commented-out `TODO`, and
|
|
61
|
+
* the JavaScript proof still runs it. Removing the property is what turns the
|
|
62
|
+
* case on for Rust — the gap list is data, not prose in a README.
|
|
63
|
+
*/
|
|
64
|
+
export type Case = {
|
|
65
|
+
readonly name: string;
|
|
66
|
+
readonly args: readonly Value[];
|
|
67
|
+
readonly expected: Value;
|
|
68
|
+
readonly rust?: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* The cases of one operator.
|
|
72
|
+
*
|
|
73
|
+
* `commutative` additionally checks every case with its arguments swapped,
|
|
74
|
+
* which is what the hand-written tests did for `*`.
|
|
75
|
+
*/
|
|
76
|
+
export type Group = {
|
|
77
|
+
readonly op: Op;
|
|
78
|
+
readonly commutative?: boolean;
|
|
79
|
+
readonly cases: readonly Case[];
|
|
80
|
+
};
|
|
81
|
+
/** One strict-equality (`===`) case; `eq` is the expected result. */
|
|
82
|
+
export type EqCase = {
|
|
83
|
+
readonly name: string;
|
|
84
|
+
readonly name2?: string;
|
|
85
|
+
readonly a: Value;
|
|
86
|
+
readonly b: Value;
|
|
87
|
+
readonly eq: boolean;
|
|
88
|
+
readonly rust?: string;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Strict-equality cases plus the values they share.
|
|
92
|
+
*
|
|
93
|
+
* Equality of arrays and objects is reference equality in both JavaScript and
|
|
94
|
+
* `nanvm-lib`, so a case can only express "the same object" by naming a value
|
|
95
|
+
* in `shared` and reaching it with a `ref`.
|
|
96
|
+
*/
|
|
97
|
+
export type Eq = {
|
|
98
|
+
readonly shared: Struct;
|
|
99
|
+
readonly cases: readonly EqCase[];
|
|
100
|
+
};
|
|
101
|
+
/** The whole shared test corpus. */
|
|
102
|
+
export type Data = {
|
|
103
|
+
readonly eq: Eq;
|
|
104
|
+
readonly groups: readonly Group[];
|
|
105
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level API for the shared operator test data.
|
|
3
|
+
*
|
|
4
|
+
* The data described here is the single source of truth for operator
|
|
5
|
+
* behaviour: [`proof.f.mjs`](./proof.f.mjs) runs it against a standard
|
|
6
|
+
* JavaScript engine, and [`rust/module.f.mjs`](./rust/module.f.mjs) prints it
|
|
7
|
+
* as the Rust tests in [`test/generated.rs`](./test/generated.rs).
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Writes the generated Rust operator tests.
|
|
3
|
+
*
|
|
4
|
+
* The printer in [`../rust/module.f.mjs`](../rust/module.f.mjs) is pure; this
|
|
5
|
+
* module is the thin effectful shell around it, invoked from `ci-update` so
|
|
6
|
+
* the CI drift check regenerates the file on every pull request and fails
|
|
7
|
+
* when the committed copy is stale.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*
|
|
11
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
12
|
+
* @import { Mkdir, NodeProgram, WriteFile } from '../../effects/node/types.ts'
|
|
13
|
+
*/
|
|
14
|
+
import type { Effect } from '../../effects/types.ts';
|
|
15
|
+
import type { Mkdir, NodeProgram, WriteFile } from '../../effects/node/types.ts';
|
|
16
|
+
/**
|
|
17
|
+
* Regenerates `nanvm-lib/tests/test/generated.rs` from the shared test data.
|
|
18
|
+
*
|
|
19
|
+
* @type {() => Effect<Mkdir | WriteFile, void>}
|
|
20
|
+
*/
|
|
21
|
+
export declare const generateRustTests: () => Effect<Mkdir | WriteFile, void>;
|
|
22
|
+
/** @type {NodeProgram} */
|
|
23
|
+
export declare const main: NodeProgram;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Writes the generated Rust operator tests.
|
|
3
|
+
*
|
|
4
|
+
* The printer in [`../rust/module.f.mjs`](../rust/module.f.mjs) is pure; this
|
|
5
|
+
* module is the thin effectful shell around it, invoked from `ci-update` so
|
|
6
|
+
* the CI drift check regenerates the file on every pull request and fails
|
|
7
|
+
* when the committed copy is stale.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*
|
|
11
|
+
* @import { Effect } from '../../effects/types.ts'
|
|
12
|
+
* @import { Mkdir, NodeProgram, WriteFile } from '../../effects/node/types.ts'
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { mapStep, step } from '../../effects/module.f.mjs'
|
|
16
|
+
import { mkdir, writeUtf8File } from '../../effects/node/module.f.mjs'
|
|
17
|
+
import { unwrap } from '../../types/result/module.f.mjs'
|
|
18
|
+
import { data } from '../module.f.mjs'
|
|
19
|
+
import { directory, generate, path } from '../rust/module.f.mjs'
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Regenerates `nanvm-lib/tests/test/generated.rs` from the shared test data.
|
|
23
|
+
*
|
|
24
|
+
* @type {() => Effect<Mkdir | WriteFile, void>}
|
|
25
|
+
*/
|
|
26
|
+
export const generateRustTests = () => {
|
|
27
|
+
const directoryReady = mapStep(mkdir(directory, { recursive: true }), unwrap)
|
|
28
|
+
const written = step(directoryReady, () => writeUtf8File(path, generate(data)))
|
|
29
|
+
return mapStep(written, unwrap)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** @type {NodeProgram} */
|
|
33
|
+
export const main = () => mapStep(generateRustTests(), () => 0)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proofs for the generated-Rust writer.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { assert, assertEq } from '../../asserts/module.f.mjs'
|
|
8
|
+
import { step } from '../../effects/module.f.mjs'
|
|
9
|
+
import { readUtf8File } from '../../effects/node/module.f.mjs'
|
|
10
|
+
import {
|
|
11
|
+
defaultNodeProgramOptions,
|
|
12
|
+
emptyState,
|
|
13
|
+
virtual,
|
|
14
|
+
} from '../../effects/node/virtual/module.f.mjs'
|
|
15
|
+
import { data } from '../module.f.mjs'
|
|
16
|
+
import { generate, path } from '../rust/module.f.mjs'
|
|
17
|
+
import { generateRustTests, main } from './module.f.mjs'
|
|
18
|
+
|
|
19
|
+
export const proof = {
|
|
20
|
+
generateRustTests: () => {
|
|
21
|
+
// The target directory does not exist in `emptyState`, so this also
|
|
22
|
+
// covers the `mkdir` the writer does before the file write.
|
|
23
|
+
const written = step(generateRustTests(), () => readUtf8File(path))
|
|
24
|
+
const [, [tag, result]] = virtual(emptyState)(written)
|
|
25
|
+
assert(tag === 'ok', result)
|
|
26
|
+
assertEq(result, generate(data))
|
|
27
|
+
},
|
|
28
|
+
main: () => {
|
|
29
|
+
const [, result] = virtual(emptyState)(main(defaultNodeProgramOptions))
|
|
30
|
+
assertEq(result, 0)
|
|
31
|
+
},
|
|
32
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Reduce, Unary } from '../types/function/operator/types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Converts Windows separators (`\`) to POSIX separators (`/`).
|
|
4
|
+
*
|
|
5
|
+
* @type {(path: string) => string}
|
|
6
|
+
*/
|
|
7
|
+
export declare const toPosix: (path: string) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Splits a path into normalized segments.
|
|
10
|
+
*
|
|
11
|
+
* Empty (`""`) and current-directory (`"."`) segments are removed, parent-directory
|
|
12
|
+
* (`".."`) segments collapse the previous segment when possible, and Windows
|
|
13
|
+
* separators are converted to POSIX separators.
|
|
14
|
+
*
|
|
15
|
+
* @type {(path: string) => readonly string[]}
|
|
16
|
+
*/
|
|
17
|
+
export declare const parse: (path: string) => readonly string[];
|
|
18
|
+
/**
|
|
19
|
+
* Normalizes a path string by parsing and rejoining it with POSIX separators.
|
|
20
|
+
*
|
|
21
|
+
* @type {Unary<string, string>}
|
|
22
|
+
*/
|
|
23
|
+
export declare const normalize: Unary<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Concatenates two path fragments and returns a normalized path.
|
|
26
|
+
*
|
|
27
|
+
* @type {Reduce<string>}
|
|
28
|
+
*/
|
|
29
|
+
export declare const concat: Reduce<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Joins path segments with single POSIX `/` separators, without
|
|
32
|
+
* normalization. Unlike {@link concat}, the result is not parsed/collapsed,
|
|
33
|
+
* so absolute roots and `.`/`..` segments are preserved verbatim. Use this
|
|
34
|
+
* for building paths from already-clean segments (directory walks, store
|
|
35
|
+
* layouts); use {@link concat} when normalization is desired.
|
|
36
|
+
*
|
|
37
|
+
* @type {(...list: readonly string[]) => string}
|
|
38
|
+
*/
|
|
39
|
+
export declare const join: (...list: readonly string[]) => string;
|
|
40
|
+
/**
|
|
41
|
+
* Returns `path` relative to `base` with a `./` prefix, or `path` unchanged
|
|
42
|
+
* if it does not start with `base` or `base` is empty.
|
|
43
|
+
* E.g. `relativize('/repo', '/repo/fs/a.ts')` → `'./fs/a.ts'`.
|
|
44
|
+
*
|
|
45
|
+
* @type {(base: string, path: string) => string}
|
|
46
|
+
*/
|
|
47
|
+
export declare const relativize: (base: string, path: string) => string;
|
|
48
|
+
/**
|
|
49
|
+
* Returns `true` when `prefix` is a strict ancestor of `path` in segment space:
|
|
50
|
+
* every segment of `prefix` matches the corresponding segment of `path`, and
|
|
51
|
+
* `path` has at least one additional segment.
|
|
52
|
+
*
|
|
53
|
+
* @type {(prefix: readonly string[], path: readonly string[]) => boolean}
|
|
54
|
+
*/
|
|
55
|
+
export declare const isProperPrefix: (prefix: readonly string[], path: readonly string[]) => boolean;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path parsing and normalization helpers for portable module paths.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
/** @import { Fold, Reduce, Unary } from '../types/function/operator/types.ts' */
|
|
7
|
+
/** @import { List } from '../types/list/types.ts' */
|
|
8
|
+
import { fold, last, take, length, concat as listConcat, toArray } from '../types/list/module.f.mjs'
|
|
9
|
+
import { join as listJoin, concat as stringConcat } from '../types/string/module.f.mjs'
|
|
10
|
+
|
|
11
|
+
/** @type {Fold<string, List<string>>} */
|
|
12
|
+
const foldNormalizeOp = input => state => {
|
|
13
|
+
switch(input) {
|
|
14
|
+
case '': case '.': { return state }
|
|
15
|
+
case '..': {
|
|
16
|
+
switch(last(undefined)(state)) {
|
|
17
|
+
case undefined:
|
|
18
|
+
case '..': { return listConcat(state)([input]) }
|
|
19
|
+
}
|
|
20
|
+
return take(length(state) - 1)(state)
|
|
21
|
+
}
|
|
22
|
+
default: { return listConcat(state)([input]) }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Converts Windows separators (`\`) to POSIX separators (`/`).
|
|
28
|
+
*
|
|
29
|
+
* @type {(path: string) => string}
|
|
30
|
+
*/
|
|
31
|
+
export const toPosix = path => path.replaceAll('\\', '/')
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Splits a path into normalized segments.
|
|
35
|
+
*
|
|
36
|
+
* Empty (`""`) and current-directory (`"."`) segments are removed, parent-directory
|
|
37
|
+
* (`".."`) segments collapse the previous segment when possible, and Windows
|
|
38
|
+
* separators are converted to POSIX separators.
|
|
39
|
+
*
|
|
40
|
+
* @type {(path: string) => readonly string[]}
|
|
41
|
+
*/
|
|
42
|
+
export const parse = path => {
|
|
43
|
+
const split = toPosix(path).split('/')
|
|
44
|
+
return toArray(fold(foldNormalizeOp)([])(split))
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Normalizes a path string by parsing and rejoining it with POSIX separators.
|
|
49
|
+
*
|
|
50
|
+
* @type {Unary<string, string>}
|
|
51
|
+
*/
|
|
52
|
+
export const normalize = path => {
|
|
53
|
+
const foldResult = parse(path)
|
|
54
|
+
return listJoin('/')(foldResult)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Concatenates two path fragments and returns a normalized path.
|
|
59
|
+
*
|
|
60
|
+
* @type {Reduce<string>}
|
|
61
|
+
*/
|
|
62
|
+
export const concat = a => b => {
|
|
63
|
+
const s = stringConcat([a, '/', b])
|
|
64
|
+
return normalize(s)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Joins path segments with single POSIX `/` separators, without
|
|
69
|
+
* normalization. Unlike {@link concat}, the result is not parsed/collapsed,
|
|
70
|
+
* so absolute roots and `.`/`..` segments are preserved verbatim. Use this
|
|
71
|
+
* for building paths from already-clean segments (directory walks, store
|
|
72
|
+
* layouts); use {@link concat} when normalization is desired.
|
|
73
|
+
*
|
|
74
|
+
* @type {(...list: readonly string[]) => string}
|
|
75
|
+
*/
|
|
76
|
+
export const join = (...list) => list.join('/')
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Returns `path` relative to `base` with a `./` prefix, or `path` unchanged
|
|
80
|
+
* if it does not start with `base` or `base` is empty.
|
|
81
|
+
* E.g. `relativize('/repo', '/repo/fs/a.ts')` → `'./fs/a.ts'`.
|
|
82
|
+
*
|
|
83
|
+
* @type {(base: string, path: string) => string}
|
|
84
|
+
*/
|
|
85
|
+
export const relativize = (base, path) =>
|
|
86
|
+
base !== '' && path.startsWith(base) ? `.${path.slice(base.length)}` : path
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Returns `true` when `prefix` is a strict ancestor of `path` in segment space:
|
|
90
|
+
* every segment of `prefix` matches the corresponding segment of `path`, and
|
|
91
|
+
* `path` has at least one additional segment.
|
|
92
|
+
*
|
|
93
|
+
* @type {(prefix: readonly string[], path: readonly string[]) => boolean}
|
|
94
|
+
*/
|
|
95
|
+
export const isProperPrefix = (prefix, path) =>
|
|
96
|
+
prefix.length < path.length && prefix.every((seg, i) => seg === path[i])
|