json-as 1.2.6 → 1.3.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/.as-test/coverage/naive/coverage.arbitrary.spec.ts.log.json +5628 -0
- package/.as-test/coverage/naive/coverage.array.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.bool.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.box.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.custom.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.date.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.enum.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.float.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.generics.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.hierarchy.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.integer.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.map.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.namespace.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.null.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.raw.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.resolving.spec.ts.log.json +5628 -0
- package/.as-test/coverage/naive/coverage.set.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.staticarray.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.string.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.struct.spec.ts.log.json +5187 -0
- package/.as-test/coverage/naive/coverage.types.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.arbitrary.spec.ts.log.json +5628 -0
- package/.as-test/coverage/simd/coverage.array.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.bool.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.box.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.custom.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.date.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.enum.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.float.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.generics.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.hierarchy.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.integer.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.map.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.namespace.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.null.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.raw.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.resolving.spec.ts.log.json +5628 -0
- package/.as-test/coverage/simd/coverage.set.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.staticarray.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.string.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.struct.spec.ts.log.json +5187 -0
- package/.as-test/coverage/simd/coverage.types.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.arbitrary.spec.ts.log.json +5628 -0
- package/.as-test/coverage/swar/coverage.array.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.bool.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.box.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.custom.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.date.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.enum.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.float.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.generics.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.hierarchy.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.integer.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.map.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.namespace.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.null.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.raw.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.resolving.spec.ts.log.json +5628 -0
- package/.as-test/coverage/swar/coverage.set.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.staticarray.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.string.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.struct.spec.ts.log.json +5187 -0
- package/.as-test/coverage/swar/coverage.types.spec.ts.log.json +5187 -0
- package/.as-test/logs/naive/run.arbitrary.spec.ts.log.json +943 -0
- package/.as-test/logs/naive/run.array.spec.ts.log.json +1053 -0
- package/.as-test/logs/naive/run.bool.spec.ts.log.json +257 -0
- package/.as-test/logs/naive/run.box.spec.ts.log.json +353 -0
- package/.as-test/logs/naive/run.custom.spec.ts.log.json +309 -0
- package/.as-test/logs/naive/run.date.spec.ts.log.json +397 -0
- package/.as-test/logs/naive/run.enum.spec.ts.log.json +343 -0
- package/.as-test/logs/naive/run.float.spec.ts.log.json +453 -0
- package/.as-test/logs/naive/run.generics.spec.ts.log.json +393 -0
- package/.as-test/logs/naive/run.hierarchy.spec.ts.log.json +325 -0
- package/.as-test/logs/naive/run.integer.spec.ts.log.json +373 -0
- package/.as-test/logs/naive/run.map.spec.ts.log.json +247 -0
- package/.as-test/logs/naive/run.namespace.spec.ts.log.json +361 -0
- package/.as-test/logs/naive/run.null.spec.ts.log.json +273 -0
- package/.as-test/logs/naive/run.raw.spec.ts.log.json +309 -0
- package/.as-test/logs/naive/run.resolving.spec.ts.log.json +273 -0
- package/.as-test/logs/naive/run.set.spec.ts.log.json +733 -0
- package/.as-test/logs/naive/run.staticarray.spec.ts.log.json +931 -0
- package/.as-test/logs/naive/run.string.spec.ts.log.json +2289 -0
- package/.as-test/logs/naive/run.struct.spec.ts.log.json +523 -0
- package/.as-test/logs/naive/run.types.spec.ts.log.json +273 -0
- package/.as-test/logs/naive/test.arbitrary.spec.ts.log.json +943 -0
- package/.as-test/logs/naive/test.array.spec.ts.log.json +1053 -0
- package/.as-test/logs/naive/test.bool.spec.ts.log.json +257 -0
- package/.as-test/logs/naive/test.box.spec.ts.log.json +353 -0
- package/.as-test/logs/naive/test.custom.spec.ts.log.json +309 -0
- package/.as-test/logs/naive/test.date.spec.ts.log.json +397 -0
- package/.as-test/logs/naive/test.enum.spec.ts.log.json +343 -0
- package/.as-test/logs/naive/test.float.spec.ts.log.json +453 -0
- package/.as-test/logs/naive/test.generics.spec.ts.log.json +393 -0
- package/.as-test/logs/naive/test.hierarchy.spec.ts.log.json +325 -0
- package/.as-test/logs/naive/test.integer.spec.ts.log.json +373 -0
- package/.as-test/logs/naive/test.log.json +2289 -0
- package/.as-test/logs/naive/test.map.spec.ts.log.json +247 -0
- package/.as-test/logs/naive/test.namespace.spec.ts.log.json +361 -0
- package/.as-test/logs/naive/test.null.spec.ts.log.json +273 -0
- package/.as-test/logs/naive/test.raw.spec.ts.log.json +309 -0
- package/.as-test/logs/naive/test.resolving.spec.ts.log.json +273 -0
- package/.as-test/logs/naive/test.set.spec.ts.log.json +733 -0
- package/.as-test/logs/naive/test.staticarray.spec.ts.log.json +931 -0
- package/.as-test/logs/naive/test.string.spec.ts.log.json +2345 -0
- package/.as-test/logs/naive/test.struct.spec.ts.log.json +523 -0
- package/.as-test/logs/naive/test.types.spec.ts.log.json +273 -0
- package/.as-test/logs/simd/run.arbitrary.spec.ts.log.json +943 -0
- package/.as-test/logs/simd/run.array.spec.ts.log.json +1053 -0
- package/.as-test/logs/simd/run.bool.spec.ts.log.json +257 -0
- package/.as-test/logs/simd/run.box.spec.ts.log.json +353 -0
- package/.as-test/logs/simd/run.custom.spec.ts.log.json +309 -0
- package/.as-test/logs/simd/run.date.spec.ts.log.json +397 -0
- package/.as-test/logs/simd/run.enum.spec.ts.log.json +343 -0
- package/.as-test/logs/simd/run.float.spec.ts.log.json +453 -0
- package/.as-test/logs/simd/run.generics.spec.ts.log.json +393 -0
- package/.as-test/logs/simd/run.hierarchy.spec.ts.log.json +325 -0
- package/.as-test/logs/simd/run.integer.spec.ts.log.json +373 -0
- package/.as-test/logs/simd/run.map.spec.ts.log.json +247 -0
- package/.as-test/logs/simd/run.namespace.spec.ts.log.json +361 -0
- package/.as-test/logs/simd/run.null.spec.ts.log.json +273 -0
- package/.as-test/logs/simd/run.raw.spec.ts.log.json +309 -0
- package/.as-test/logs/simd/run.resolving.spec.ts.log.json +273 -0
- package/.as-test/logs/simd/run.set.spec.ts.log.json +733 -0
- package/.as-test/logs/simd/run.staticarray.spec.ts.log.json +931 -0
- package/.as-test/logs/simd/run.string.spec.ts.log.json +2289 -0
- package/.as-test/logs/simd/run.struct.spec.ts.log.json +523 -0
- package/.as-test/logs/simd/run.types.spec.ts.log.json +273 -0
- package/.as-test/logs/simd/test.arbitrary.spec.ts.log.json +943 -0
- package/.as-test/logs/simd/test.array.spec.ts.log.json +1053 -0
- package/.as-test/logs/simd/test.bool.spec.ts.log.json +257 -0
- package/.as-test/logs/simd/test.box.spec.ts.log.json +353 -0
- package/.as-test/logs/simd/test.custom.spec.ts.log.json +309 -0
- package/.as-test/logs/simd/test.date.spec.ts.log.json +397 -0
- package/.as-test/logs/simd/test.enum.spec.ts.log.json +343 -0
- package/.as-test/logs/simd/test.float.spec.ts.log.json +453 -0
- package/.as-test/logs/simd/test.generics.spec.ts.log.json +393 -0
- package/.as-test/logs/simd/test.hierarchy.spec.ts.log.json +325 -0
- package/.as-test/logs/simd/test.integer.spec.ts.log.json +373 -0
- package/.as-test/logs/simd/test.log.json +11371 -0
- package/.as-test/logs/simd/test.map.spec.ts.log.json +247 -0
- package/.as-test/logs/simd/test.namespace.spec.ts.log.json +361 -0
- package/.as-test/logs/simd/test.null.spec.ts.log.json +273 -0
- package/.as-test/logs/simd/test.raw.spec.ts.log.json +309 -0
- package/.as-test/logs/simd/test.resolving.spec.ts.log.json +273 -0
- package/.as-test/logs/simd/test.set.spec.ts.log.json +733 -0
- package/.as-test/logs/simd/test.staticarray.spec.ts.log.json +931 -0
- package/.as-test/logs/simd/test.string.spec.ts.log.json +2345 -0
- package/.as-test/logs/simd/test.struct.spec.ts.log.json +523 -0
- package/.as-test/logs/simd/test.types.spec.ts.log.json +273 -0
- package/.as-test/logs/swar/run.arbitrary.spec.ts.log.json +943 -0
- package/.as-test/logs/swar/run.array.spec.ts.log.json +1053 -0
- package/.as-test/logs/swar/run.bool.spec.ts.log.json +257 -0
- package/.as-test/logs/swar/run.box.spec.ts.log.json +353 -0
- package/.as-test/logs/swar/run.custom.spec.ts.log.json +309 -0
- package/.as-test/logs/swar/run.date.spec.ts.log.json +397 -0
- package/.as-test/logs/swar/run.enum.spec.ts.log.json +343 -0
- package/.as-test/logs/swar/run.float.spec.ts.log.json +453 -0
- package/.as-test/logs/swar/run.generics.spec.ts.log.json +393 -0
- package/.as-test/logs/swar/run.hierarchy.spec.ts.log.json +325 -0
- package/.as-test/logs/swar/run.integer.spec.ts.log.json +373 -0
- package/.as-test/logs/swar/run.map.spec.ts.log.json +247 -0
- package/.as-test/logs/swar/run.namespace.spec.ts.log.json +361 -0
- package/.as-test/logs/swar/run.null.spec.ts.log.json +273 -0
- package/.as-test/logs/swar/run.raw.spec.ts.log.json +309 -0
- package/.as-test/logs/swar/run.resolving.spec.ts.log.json +273 -0
- package/.as-test/logs/swar/run.set.spec.ts.log.json +733 -0
- package/.as-test/logs/swar/run.staticarray.spec.ts.log.json +931 -0
- package/.as-test/logs/swar/run.string.spec.ts.log.json +2289 -0
- package/.as-test/logs/swar/run.struct.spec.ts.log.json +523 -0
- package/.as-test/logs/swar/run.types.spec.ts.log.json +273 -0
- package/.as-test/logs/swar/test.arbitrary.spec.ts.log.json +943 -0
- package/.as-test/logs/swar/test.array.spec.ts.log.json +1053 -0
- package/.as-test/logs/swar/test.bool.spec.ts.log.json +257 -0
- package/.as-test/logs/swar/test.box.spec.ts.log.json +353 -0
- package/.as-test/logs/swar/test.custom.spec.ts.log.json +309 -0
- package/.as-test/logs/swar/test.date.spec.ts.log.json +397 -0
- package/.as-test/logs/swar/test.enum.spec.ts.log.json +343 -0
- package/.as-test/logs/swar/test.float.spec.ts.log.json +453 -0
- package/.as-test/logs/swar/test.generics.spec.ts.log.json +393 -0
- package/.as-test/logs/swar/test.hierarchy.spec.ts.log.json +325 -0
- package/.as-test/logs/swar/test.integer.spec.ts.log.json +373 -0
- package/.as-test/logs/swar/test.log.json +11371 -0
- package/.as-test/logs/swar/test.map.spec.ts.log.json +247 -0
- package/.as-test/logs/swar/test.namespace.spec.ts.log.json +361 -0
- package/.as-test/logs/swar/test.null.spec.ts.log.json +273 -0
- package/.as-test/logs/swar/test.raw.spec.ts.log.json +309 -0
- package/.as-test/logs/swar/test.resolving.spec.ts.log.json +273 -0
- package/.as-test/logs/swar/test.set.spec.ts.log.json +733 -0
- package/.as-test/logs/swar/test.staticarray.spec.ts.log.json +931 -0
- package/.as-test/logs/swar/test.string.spec.ts.log.json +2345 -0
- package/.as-test/logs/swar/test.struct.spec.ts.log.json +523 -0
- package/.as-test/logs/swar/test.types.spec.ts.log.json +273 -0
- package/.as-test/logs/test.arbitrary.spec.ts.log.json +943 -0
- package/.as-test/logs/test.array.spec.ts.log.json +1053 -0
- package/.as-test/logs/test.bool.spec.ts.log.json +257 -0
- package/.as-test/logs/test.box.spec.ts.log.json +353 -0
- package/.as-test/logs/test.custom.spec.ts.log.json +309 -0
- package/.as-test/logs/test.date.spec.ts.log.json +397 -0
- package/.as-test/logs/test.enum.spec.ts.log.json +343 -0
- package/.as-test/logs/test.float.spec.ts.log.json +453 -0
- package/.as-test/logs/test.generics.spec.ts.log.json +393 -0
- package/.as-test/logs/test.hierarchy.spec.ts.log.json +325 -0
- package/.as-test/logs/test.integer.spec.ts.log.json +373 -0
- package/.as-test/logs/test.log.json +11371 -0
- package/.as-test/logs/test.map.spec.ts.log.json +247 -0
- package/.as-test/logs/test.namespace.spec.ts.log.json +361 -0
- package/.as-test/logs/test.null.spec.ts.log.json +273 -0
- package/.as-test/logs/test.raw.spec.ts.log.json +309 -0
- package/.as-test/logs/test.resolving.spec.ts.log.json +273 -0
- package/.as-test/logs/test.set.spec.ts.log.json +733 -0
- package/.as-test/logs/test.staticarray.spec.ts.log.json +931 -0
- package/.as-test/logs/test.string.spec.ts.log.json +2289 -0
- package/.as-test/logs/test.struct.spec.ts.log.json +523 -0
- package/.as-test/logs/test.types.spec.ts.log.json +273 -0
- package/.as-test/runners/default.bindings.js +68 -0
- package/.as-test/runners/default.wasi.js +38 -0
- package/ARCHITECTURE.md +6 -3
- package/CONTRIBUTING.md +9 -3
- package/README.md +39 -22
- package/as-test.config.json +40 -0
- package/assembly/custom/util.ts +24 -70
- package/assembly/deserialize/float.ts +181 -0
- package/assembly/deserialize/helpers/uint.ts +12 -0
- package/assembly/deserialize/index/arbitrary.ts +25 -0
- package/assembly/deserialize/index/array.ts +61 -0
- package/assembly/deserialize/index/bool.ts +1 -0
- package/assembly/deserialize/index/date.ts +1 -0
- package/assembly/deserialize/index/float.ts +1 -0
- package/assembly/deserialize/index/integer.ts +1 -0
- package/assembly/deserialize/index/map.ts +1 -0
- package/assembly/deserialize/index/object.ts +1 -0
- package/assembly/deserialize/index/raw.ts +1 -0
- package/assembly/deserialize/index/set.ts +1 -0
- package/assembly/deserialize/index/staticarray.ts +1 -0
- package/assembly/deserialize/index/string.ts +15 -0
- package/assembly/deserialize/index/struct.ts +1 -0
- package/assembly/deserialize/index/typedarray.ts +1 -0
- package/assembly/deserialize/index/unsigned.ts +1 -0
- package/assembly/deserialize/index.ts +14 -0
- package/assembly/deserialize/integer.ts +42 -0
- package/assembly/deserialize/simd/array/integer.ts +307 -0
- package/assembly/deserialize/simd/string.ts +129 -10
- package/assembly/deserialize/simple/arbitrary.ts +5 -12
- package/assembly/deserialize/simple/array/arbitrary.ts +12 -36
- package/assembly/deserialize/simple/array/array.ts +2 -8
- package/assembly/deserialize/simple/array/bool.ts +2 -8
- package/assembly/deserialize/simple/array/box.ts +2 -8
- package/assembly/deserialize/simple/array/float.ts +2 -8
- package/assembly/deserialize/simple/array/integer.ts +2 -8
- package/assembly/deserialize/simple/array/map.ts +6 -26
- package/assembly/deserialize/simple/array/object.ts +6 -26
- package/assembly/deserialize/simple/array/raw.ts +18 -61
- package/assembly/deserialize/simple/array/string.ts +5 -10
- package/assembly/deserialize/simple/array/struct.ts +6 -26
- package/assembly/deserialize/simple/array.ts +2 -5
- package/assembly/deserialize/simple/bool.ts +2 -6
- package/assembly/deserialize/simple/map.ts +29 -102
- package/assembly/deserialize/simple/object.ts +24 -81
- package/assembly/deserialize/simple/raw.ts +1 -4
- package/assembly/deserialize/simple/set.ts +11 -37
- package/assembly/deserialize/simple/staticarray/array.ts +1 -1
- package/assembly/deserialize/simple/staticarray/bool.ts +1 -1
- package/assembly/deserialize/simple/staticarray/float.ts +1 -1
- package/assembly/deserialize/simple/staticarray/integer.ts +1 -1
- package/assembly/deserialize/simple/staticarray/string.ts +7 -14
- package/assembly/deserialize/simple/staticarray/struct.ts +1 -1
- package/assembly/deserialize/simple/staticarray.ts +57 -21
- package/assembly/deserialize/simple/string.ts +2 -8
- package/assembly/deserialize/simple/struct.ts +25 -121
- package/assembly/deserialize/simple/typedarray.ts +94 -0
- package/assembly/deserialize/swar/array/arbitrary.ts +8 -0
- package/assembly/deserialize/swar/array/array.ts +39 -0
- package/assembly/deserialize/swar/array/bool.ts +47 -0
- package/assembly/deserialize/swar/array/box.ts +8 -0
- package/assembly/deserialize/swar/array/float.ts +39 -0
- package/assembly/deserialize/swar/array/integer.ts +461 -0
- package/assembly/deserialize/swar/array/map.ts +7 -0
- package/assembly/deserialize/swar/array/object.ts +44 -0
- package/assembly/deserialize/swar/array/raw.ts +8 -0
- package/assembly/deserialize/swar/array/shared.ts +96 -0
- package/assembly/deserialize/swar/array/string.ts +39 -0
- package/assembly/deserialize/swar/array/struct.ts +44 -0
- package/assembly/deserialize/swar/array.ts +49 -0
- package/assembly/deserialize/swar/string.ts +650 -14
- package/assembly/deserialize/unsigned.ts +75 -0
- package/assembly/index.d.ts +1 -3
- package/assembly/index.ts +251 -265
- package/assembly/serialize/index/arbitrary.ts +70 -0
- package/assembly/serialize/index/array.ts +1 -0
- package/assembly/serialize/index/bool.ts +1 -0
- package/assembly/serialize/index/date.ts +1 -0
- package/assembly/serialize/index/float.ts +1 -0
- package/assembly/serialize/index/integer.ts +1 -0
- package/assembly/serialize/index/map.ts +1 -0
- package/assembly/serialize/index/object.ts +46 -0
- package/assembly/serialize/index/raw.ts +1 -0
- package/assembly/serialize/index/set.ts +1 -0
- package/assembly/serialize/index/staticarray.ts +1 -0
- package/assembly/serialize/index/string.ts +15 -0
- package/assembly/serialize/index/struct.ts +1 -0
- package/assembly/serialize/index/typedarray.ts +1 -0
- package/assembly/serialize/index.ts +13 -0
- package/assembly/serialize/simd/string.ts +1 -2
- package/assembly/serialize/simple/raw.ts +1 -5
- package/assembly/serialize/simple/typedarray.ts +63 -0
- package/assembly/serialize/swar/string.ts +3 -10
- package/assembly/test.ts +21 -27
- package/assembly/util/concat.ts +1 -5
- package/assembly/util/index.ts +1 -0
- package/assembly/util/masks.ts +12 -18
- package/assembly/util/memory.ts +0 -0
- package/assembly/util/snp.ts +1 -4
- package/assembly/util/stringScan.ts +24 -0
- package/assembly/util/swar.ts +1 -6
- package/eslint.config.js +21 -13
- package/lib/as-bs.ts +69 -78
- package/package.json +8 -5
- package/test.ts +99 -0
- package/tools/assemblyscript-eslint-local.js +1 -24
- package/tools/assemblyscript-eslint.js +38 -14
- package/tools/assemblyscript-prettier-plugin.js +33 -0
- package/tools/replacer.js +63 -0
- package/transform/lib/builder.d.ts.map +1 -1
- package/transform/lib/builder.js +5 -13
- package/transform/lib/builder.js.map +1 -1
- package/transform/lib/index.d.ts.map +1 -1
- package/transform/lib/index.js +529 -735
- package/transform/lib/index.js.map +1 -1
- package/transform/lib/linkers/alias.d.ts.map +1 -1
- package/transform/lib/linkers/alias.js.map +1 -1
- package/transform/lib/linkers/custom.d.ts.map +1 -1
- package/transform/lib/linkers/custom.js +4 -9
- package/transform/lib/linkers/custom.js.map +1 -1
- package/transform/lib/linkers/imports.d.ts.map +1 -1
- package/transform/lib/linkers/imports.js.map +1 -1
- package/transform/lib/types.d.ts +4 -0
- package/transform/lib/types.d.ts.map +1 -1
- package/transform/lib/types.js +70 -21
- package/transform/lib/types.js.map +1 -1
- package/transform/lib/util.d.ts.map +1 -1
- package/transform/lib/util.js +1 -1
- package/transform/lib/util.js.map +1 -1
- package/transform/lib/visitor.d.ts.map +1 -1
- package/transform/lib/visitor.js +1 -2
- package/transform/lib/visitor.js.map +1 -1
- package/.prettierrc +0 -3
- package/assembly/deserialize/simple/float.ts +0 -11
- package/assembly/deserialize/simple/integer.ts +0 -9
package/lib/as-bs.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { OBJECT, TOTAL_OVERHEAD } from "rt/common";
|
|
2
|
+
import { heap } from "memory";
|
|
2
3
|
|
|
3
4
|
// Buffer management constants
|
|
4
|
-
const
|
|
5
|
+
const SHRINK_EVERY_N_MASK: usize = 255; // check every 256 outputs
|
|
5
6
|
const MIN_BUFFER_SIZE: usize = 128;
|
|
6
7
|
|
|
7
8
|
// Exponential moving average smoothing factor (0.0 to 1.0)
|
|
@@ -13,11 +14,11 @@ const EMA_ALPHA_SHIFT: usize = 3; // 1/8 = 0.125
|
|
|
13
14
|
* Central buffer namespace for managing memory operations.
|
|
14
15
|
*/
|
|
15
16
|
export namespace bs {
|
|
16
|
-
/** Current
|
|
17
|
-
export let buffer:
|
|
17
|
+
/** Current unmanaged backing store pointer. */
|
|
18
|
+
export let buffer: usize = heap.alloc(MIN_BUFFER_SIZE);
|
|
18
19
|
|
|
19
20
|
/** Current offset within the buffer. */
|
|
20
|
-
export let offset: usize =
|
|
21
|
+
export let offset: usize = buffer;
|
|
21
22
|
|
|
22
23
|
/** Byte length of the buffer. */
|
|
23
24
|
let bufferSize: usize = MIN_BUFFER_SIZE;
|
|
@@ -46,15 +47,50 @@ export namespace bs {
|
|
|
46
47
|
typicalSize += (newSize - typicalSize) >> EMA_ALPHA_SHIFT;
|
|
47
48
|
}
|
|
48
49
|
|
|
50
|
+
// @ts-expect-error: @inline is a valid decorator
|
|
51
|
+
@inline function renewBuffer(newSize: usize): void {
|
|
52
|
+
const oldPtr = buffer;
|
|
53
|
+
const newPtr = heap.realloc(oldPtr, newSize);
|
|
54
|
+
const delta = newPtr - oldPtr;
|
|
55
|
+
offset += delta;
|
|
56
|
+
if (pauseOffset != 0) pauseOffset += delta;
|
|
57
|
+
buffer = newPtr;
|
|
58
|
+
bufferSize = newSize;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// @ts-expect-error: @inline is a valid decorator
|
|
62
|
+
@inline function reserve(requiredSize: usize, extra: usize): void {
|
|
63
|
+
if (requiredSize <= bufferSize) return;
|
|
64
|
+
// Grow aggressively (2x) to minimize realloc frequency in hot serialization paths.
|
|
65
|
+
let next = bufferSize << 1;
|
|
66
|
+
const minNext = requiredSize + extra;
|
|
67
|
+
if (next < minNext) next = minNext;
|
|
68
|
+
renewBuffer(next);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// @ts-expect-error: @inline is a valid decorator
|
|
72
|
+
@inline function finalizeDynamicOutput(len: usize): void {
|
|
73
|
+
counter += 1;
|
|
74
|
+
updateTypicalSize(len);
|
|
75
|
+
if ((counter & SHRINK_EVERY_N_MASK) == 0 && bufferSize > typicalSize << 2) {
|
|
76
|
+
resize(u32(typicalSize << 1));
|
|
77
|
+
}
|
|
78
|
+
offset = buffer;
|
|
79
|
+
stackSize = 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
49
82
|
export let cacheOutput: usize = 0;
|
|
50
83
|
export let cacheOutputLen: usize = 0;
|
|
51
84
|
|
|
52
85
|
// @ts-expect-error: @inline is a valid decorator
|
|
53
86
|
@inline export function digestArena(): void {
|
|
54
87
|
if (cacheOutput === 0) return;
|
|
55
|
-
|
|
56
|
-
|
|
88
|
+
const len = cacheOutputLen;
|
|
89
|
+
proposeSize(<u32>len);
|
|
90
|
+
memory.copy(offset, cacheOutput, len);
|
|
91
|
+
offset += len;
|
|
57
92
|
bs.cacheOutput = 0;
|
|
93
|
+
bs.cacheOutputLen = 0;
|
|
58
94
|
}
|
|
59
95
|
/**
|
|
60
96
|
* Stores the state of the buffer, allowing further changes to be reset
|
|
@@ -93,16 +129,7 @@ export namespace bs {
|
|
|
93
129
|
*/
|
|
94
130
|
// @ts-expect-error: @inline is a valid decorator
|
|
95
131
|
@inline export function ensureSize(size: u32): void {
|
|
96
|
-
|
|
97
|
-
const deltaBytes = usize(size) + MIN_BUFFER_SIZE;
|
|
98
|
-
bufferSize += deltaBytes;
|
|
99
|
-
// @ts-expect-error: __renew is a runtime builtin
|
|
100
|
-
const newPtr = changetype<ArrayBuffer>(
|
|
101
|
-
__renew(changetype<usize>(buffer), bufferSize),
|
|
102
|
-
);
|
|
103
|
-
offset = offset + changetype<usize>(newPtr) - changetype<usize>(buffer);
|
|
104
|
-
buffer = newPtr;
|
|
105
|
-
}
|
|
132
|
+
reserve(offset - buffer + usize(size), MIN_BUFFER_SIZE);
|
|
106
133
|
}
|
|
107
134
|
|
|
108
135
|
/**
|
|
@@ -112,16 +139,8 @@ export namespace bs {
|
|
|
112
139
|
*/
|
|
113
140
|
// @ts-expect-error: @inline is a valid decorator
|
|
114
141
|
@inline export function proposeSize(size: u32): void {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
bufferSize += deltaBytes;
|
|
118
|
-
// @ts-expect-error: __renew is a runtime builtin
|
|
119
|
-
const newPtr = changetype<ArrayBuffer>(
|
|
120
|
-
__renew(changetype<usize>(buffer), bufferSize),
|
|
121
|
-
);
|
|
122
|
-
offset = offset + changetype<usize>(newPtr) - changetype<usize>(buffer);
|
|
123
|
-
buffer = newPtr;
|
|
124
|
-
}
|
|
142
|
+
stackSize += size;
|
|
143
|
+
reserve(stackSize, 0);
|
|
125
144
|
}
|
|
126
145
|
|
|
127
146
|
/**
|
|
@@ -131,16 +150,8 @@ export namespace bs {
|
|
|
131
150
|
*/
|
|
132
151
|
// @ts-expect-error: @inline is a valid decorator
|
|
133
152
|
@inline export function growSize(size: u32): void {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
bufferSize += deltaBytes;
|
|
137
|
-
// @ts-expect-error: __renew is a runtime builtin
|
|
138
|
-
const newPtr = changetype<ArrayBuffer>(
|
|
139
|
-
__renew(changetype<usize>(buffer), bufferSize),
|
|
140
|
-
);
|
|
141
|
-
offset = offset + changetype<usize>(newPtr) - changetype<usize>(buffer);
|
|
142
|
-
buffer = newPtr;
|
|
143
|
-
}
|
|
153
|
+
stackSize += size;
|
|
154
|
+
reserve(stackSize, MIN_BUFFER_SIZE);
|
|
144
155
|
}
|
|
145
156
|
|
|
146
157
|
/**
|
|
@@ -149,13 +160,13 @@ export namespace bs {
|
|
|
149
160
|
*/
|
|
150
161
|
// @ts-expect-error: @inline is a valid decorator
|
|
151
162
|
@inline export function resize(newSize: u32): void {
|
|
152
|
-
|
|
153
|
-
const newPtr =
|
|
154
|
-
|
|
155
|
-
);
|
|
156
|
-
bufferSize = newSize;
|
|
157
|
-
offset = changetype<usize>(newPtr);
|
|
163
|
+
const oldPtr = buffer;
|
|
164
|
+
const newPtr = heap.realloc(buffer, newSize);
|
|
165
|
+
const delta = newPtr - oldPtr;
|
|
166
|
+
if (pauseOffset != 0) pauseOffset += delta;
|
|
158
167
|
buffer = newPtr;
|
|
168
|
+
bufferSize = newSize;
|
|
169
|
+
offset = buffer;
|
|
159
170
|
stackSize = 0;
|
|
160
171
|
}
|
|
161
172
|
|
|
@@ -166,10 +177,10 @@ export namespace bs {
|
|
|
166
177
|
// @ts-expect-error: @inline is a valid decorator
|
|
167
178
|
@inline export function cpyOut<T>(): T {
|
|
168
179
|
if (pauseOffset == 0) {
|
|
169
|
-
const len = offset -
|
|
180
|
+
const len = offset - buffer;
|
|
170
181
|
// @ts-expect-error: __new is a runtime builtin
|
|
171
182
|
const _out = __new(len, idof<T>());
|
|
172
|
-
memory.copy(_out,
|
|
183
|
+
memory.copy(_out, buffer, len);
|
|
173
184
|
return changetype<T>(_out);
|
|
174
185
|
} else {
|
|
175
186
|
const len = offset - pauseOffset;
|
|
@@ -191,19 +202,11 @@ export namespace bs {
|
|
|
191
202
|
@inline export function out<T>(): T {
|
|
192
203
|
let out: usize;
|
|
193
204
|
if (cacheOutput === 0) {
|
|
194
|
-
const len = offset -
|
|
205
|
+
const len = offset - buffer;
|
|
195
206
|
// @ts-expect-error: __new is a runtime builtin
|
|
196
207
|
out = __new(len, idof<T>());
|
|
197
|
-
memory.copy(out,
|
|
198
|
-
|
|
199
|
-
counter++;
|
|
200
|
-
// Use exponential moving average for smoother size tracking
|
|
201
|
-
updateTypicalSize(len);
|
|
202
|
-
if (counter >= SHRINK_EVERY_N) {
|
|
203
|
-
// Shrink if buffer is 4x larger than typical, resize to 2x typical
|
|
204
|
-
if (bufferSize > typicalSize << 2) resize(u32(typicalSize << 1));
|
|
205
|
-
counter = 0;
|
|
206
|
-
}
|
|
208
|
+
memory.copy(out, buffer, len);
|
|
209
|
+
finalizeDynamicOutput(len);
|
|
207
210
|
} else {
|
|
208
211
|
// zero-copy path
|
|
209
212
|
// @ts-expect-error: __new is a runtime builtin
|
|
@@ -211,10 +214,10 @@ export namespace bs {
|
|
|
211
214
|
memory.copy(out, cacheOutput, cacheOutputLen);
|
|
212
215
|
// reset arena flag
|
|
213
216
|
cacheOutput = 0;
|
|
217
|
+
cacheOutputLen = 0;
|
|
218
|
+
offset = buffer;
|
|
219
|
+
stackSize = 0;
|
|
214
220
|
}
|
|
215
|
-
|
|
216
|
-
offset = changetype<usize>(buffer);
|
|
217
|
-
stackSize = 0;
|
|
218
221
|
return changetype<T>(out);
|
|
219
222
|
}
|
|
220
223
|
|
|
@@ -224,10 +227,10 @@ export namespace bs {
|
|
|
224
227
|
*/
|
|
225
228
|
// @ts-expect-error: @inline is a valid decorator
|
|
226
229
|
@inline export function view<T>(): T {
|
|
227
|
-
const len = offset -
|
|
230
|
+
const len = offset - buffer;
|
|
228
231
|
// @ts-expect-error: __new is a runtime builtin
|
|
229
232
|
const _out = __new(len, idof<T>());
|
|
230
|
-
memory.copy(_out,
|
|
233
|
+
memory.copy(_out, buffer, len);
|
|
231
234
|
return changetype<T>(_out);
|
|
232
235
|
}
|
|
233
236
|
|
|
@@ -239,26 +242,14 @@ export namespace bs {
|
|
|
239
242
|
*/
|
|
240
243
|
// @ts-expect-error: @inline is a valid decorator
|
|
241
244
|
@inline export function outTo<T>(dst: usize): T {
|
|
242
|
-
const len = offset -
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
__renew(
|
|
246
|
-
memory.copy(dst, changetype<usize>(buffer), len);
|
|
247
|
-
|
|
248
|
-
counter++;
|
|
249
|
-
// Use exponential moving average for smoother size tracking
|
|
250
|
-
updateTypicalSize(len);
|
|
251
|
-
|
|
252
|
-
if (counter >= SHRINK_EVERY_N) {
|
|
253
|
-
// Shrink if buffer is 4x larger than typical, resize to 2x typical
|
|
254
|
-
if (bufferSize > typicalSize << 2) {
|
|
255
|
-
resize(typicalSize << 1);
|
|
256
|
-
}
|
|
257
|
-
counter = 0;
|
|
245
|
+
const len = offset - buffer;
|
|
246
|
+
if (len != changetype<OBJECT>(dst - TOTAL_OVERHEAD).rtSize) {
|
|
247
|
+
// @ts-expect-error: __renew is a runtime builtin
|
|
248
|
+
dst = __renew(dst, len);
|
|
258
249
|
}
|
|
250
|
+
memory.copy(dst, buffer, len);
|
|
259
251
|
|
|
260
|
-
|
|
261
|
-
stackSize = 0;
|
|
252
|
+
finalizeDynamicOutput(len);
|
|
262
253
|
return changetype<T>(dst);
|
|
263
254
|
}
|
|
264
255
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-as",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"author": "Jairus Tanaka",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,14 +12,13 @@
|
|
|
12
12
|
"@assemblyscript/wasi-shim": "^0.1.0",
|
|
13
13
|
"@eslint/js": "^9.0.0",
|
|
14
14
|
"@types/node": "^25.0.10",
|
|
15
|
-
"as-
|
|
15
|
+
"as-test": "^1.0.1",
|
|
16
16
|
"assemblyscript": "^0.28.9",
|
|
17
17
|
"assemblyscript-prettier": "^3.0.1",
|
|
18
18
|
"chartjs-node-canvas": "^5.0.0",
|
|
19
19
|
"chartjs-plugin-datalabels": "^2.2.0",
|
|
20
20
|
"eslint": "^10.0.0",
|
|
21
|
-
"
|
|
22
|
-
"prettier": "3.6.2",
|
|
21
|
+
"prettier": "3.8.1",
|
|
23
22
|
"tinybench": "^6.0.0",
|
|
24
23
|
"typescript": "^5.9.3",
|
|
25
24
|
"typescript-eslint": "^8.0.0"
|
|
@@ -63,9 +62,13 @@
|
|
|
63
62
|
},
|
|
64
63
|
"scripts": {
|
|
65
64
|
"ci": "act",
|
|
66
|
-
"test": "
|
|
65
|
+
"test": "ast test --disable coverage --disable try-as",
|
|
66
|
+
"test:ci": "ast test --disable coverage --clean",
|
|
67
|
+
"test:coverage": "ast test --enable coverage",
|
|
68
|
+
"bench": "npm run bench:as && npm run bench:js && ./build-charts.sh",
|
|
67
69
|
"bench:as": "bash ./run-bench.as.sh",
|
|
68
70
|
"bench:js": "bash ./run-bench.js.sh",
|
|
71
|
+
"bench:publish": "bash ./publish-benchmarks.sh",
|
|
69
72
|
"build:test": "JSON_DEBUG=0 JSON_WRITE=assembly/test.ts asc assembly/test.ts --transform ./transform -o ./build/test.wasm --textFile ./build/test.wat --enable simd --debug --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json",
|
|
70
73
|
"build:tmp:test": "JSON_DEBUG=1 asc assembly/test.tmp.ts -o ./build/test.wasm --textFile ./build/test.wat --enable simd --debug --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json",
|
|
71
74
|
"build:test:wine": "JSON_DEBUG=1 JSON_WRITE=assembly/test.ts NODE_SKIP_PLATFORM_CHECK=1 wine ~/.win-bin/node/node.exe ./node_modules/assemblyscript/bin/asc.js assembly/test.ts --transform ./transform -o ./build/test.wasm --textFile ./build/test.wat --debug --config ./node_modules/@assemblyscript/wasi-shim/asconfig.json",
|
package/test.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
class UserPreferences {
|
|
2
|
+
theme!: string;
|
|
3
|
+
notifications!: boolean;
|
|
4
|
+
language!: string;
|
|
5
|
+
timezone!: string;
|
|
6
|
+
privacy_level!: string;
|
|
7
|
+
two_factor_enabled!: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
class RecentActivity {
|
|
11
|
+
action!: string;
|
|
12
|
+
timestamp!: string;
|
|
13
|
+
target!: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
class MediumAPIResponse {
|
|
17
|
+
id!: number;
|
|
18
|
+
username!: string;
|
|
19
|
+
full_name!: string;
|
|
20
|
+
email!: string;
|
|
21
|
+
avatar_url!: string;
|
|
22
|
+
bio!: string;
|
|
23
|
+
website!: string;
|
|
24
|
+
location!: string;
|
|
25
|
+
joined_at!: string;
|
|
26
|
+
is_verified!: boolean;
|
|
27
|
+
is_premium!: boolean;
|
|
28
|
+
follower_count!: number;
|
|
29
|
+
following_count!: number;
|
|
30
|
+
|
|
31
|
+
preferences!: UserPreferences;
|
|
32
|
+
tags!: string[];
|
|
33
|
+
|
|
34
|
+
recent_activity!: RecentActivity[];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const v1 = new MediumAPIResponse();
|
|
38
|
+
const prefs = new UserPreferences();
|
|
39
|
+
|
|
40
|
+
prefs.theme = "dark";
|
|
41
|
+
prefs.notifications = true;
|
|
42
|
+
prefs.language = "en-US";
|
|
43
|
+
prefs.timezone = "America/Los_Angeles";
|
|
44
|
+
prefs.privacy_level = "friends_only";
|
|
45
|
+
prefs.two_factor_enabled = false;
|
|
46
|
+
|
|
47
|
+
v1.id = 42;
|
|
48
|
+
v1.username = "jairus";
|
|
49
|
+
v1.full_name = "Jairus Tanaka";
|
|
50
|
+
v1.email = "me@jairus.dev";
|
|
51
|
+
v1.avatar_url = "https://avatars.githubusercontent.com/u/123456?v=4";
|
|
52
|
+
v1.bio = "I like compilers, elegant algorithms, bare metal, simd, and wasm.";
|
|
53
|
+
v1.website = "https://jairus.dev/";
|
|
54
|
+
v1.location = "Seattle, WA";
|
|
55
|
+
v1.joined_at = "2020-01-15T08:30:00Z";
|
|
56
|
+
v1.is_verified = true;
|
|
57
|
+
v1.is_premium = true;
|
|
58
|
+
v1.follower_count = 61;
|
|
59
|
+
v1.following_count = 39;
|
|
60
|
+
|
|
61
|
+
v1.preferences = prefs;
|
|
62
|
+
|
|
63
|
+
v1.tags = ["typescript", "webassembly", "performance", "rust", "assemblyscript", "json"];
|
|
64
|
+
|
|
65
|
+
v1.recent_activity = new Array<RecentActivity>(5);
|
|
66
|
+
|
|
67
|
+
const act0 = new RecentActivity();
|
|
68
|
+
act0.action = "starred";
|
|
69
|
+
act0.timestamp = "2025-12-22T10:15:00Z";
|
|
70
|
+
act0.target = "assemblyscript/json-as";
|
|
71
|
+
v1.recent_activity[0] = act0;
|
|
72
|
+
|
|
73
|
+
const act1 = new RecentActivity();
|
|
74
|
+
act1.action = "commented";
|
|
75
|
+
act1.timestamp = "2025-12-22T09:42:00Z";
|
|
76
|
+
act1.target = "issue #142";
|
|
77
|
+
v1.recent_activity[1] = act1;
|
|
78
|
+
|
|
79
|
+
const act2 = new RecentActivity();
|
|
80
|
+
act2.action = "pushed";
|
|
81
|
+
act2.timestamp = "2025-12-21T23:58:00Z";
|
|
82
|
+
act2.target = "main branch";
|
|
83
|
+
v1.recent_activity[2] = act2;
|
|
84
|
+
|
|
85
|
+
const act3 = new RecentActivity();
|
|
86
|
+
act3.action = "forked";
|
|
87
|
+
act3.timestamp = "2025-12-21T18:20:00Z";
|
|
88
|
+
act3.target = "fast-json-wasm";
|
|
89
|
+
v1.recent_activity[3] = act3;
|
|
90
|
+
|
|
91
|
+
const act4 = new RecentActivity();
|
|
92
|
+
act4.action = "created";
|
|
93
|
+
act4.timestamp = "2025-12-21T14:10:00Z";
|
|
94
|
+
act4.target = "new benchmark suite";
|
|
95
|
+
v1.recent_activity[4] = act4;
|
|
96
|
+
|
|
97
|
+
const serialized = JSON.stringify(v1);
|
|
98
|
+
|
|
99
|
+
console.log(serialized);
|
|
@@ -3,27 +3,4 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import * as ts from "typescript";
|
|
9
|
-
import * as parser from "@typescript-eslint/parser";
|
|
10
|
-
import utils from "../node_modules/@typescript-eslint/typescript-estree/dist/node-utils.js";
|
|
11
|
-
|
|
12
|
-
// In AssemblyScript, functions and variables can be decorated
|
|
13
|
-
const nodeCanBeDecorated = utils.nodeCanBeDecorated;
|
|
14
|
-
utils.nodeCanBeDecorated = function (node) {
|
|
15
|
-
switch (node.kind) {
|
|
16
|
-
case ts.SyntaxKind.FunctionDeclaration:
|
|
17
|
-
case ts.SyntaxKind.VariableStatement:
|
|
18
|
-
return true;
|
|
19
|
-
default:
|
|
20
|
-
return nodeCanBeDecorated(node);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
const config = {
|
|
25
|
-
files: ["assembly/**/*.ts"],
|
|
26
|
-
languageOptions: { parser: parser },
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export default { config };
|
|
6
|
+
export { default } from "./assemblyscript-eslint.js";
|
|
@@ -5,24 +5,48 @@
|
|
|
5
5
|
|
|
6
6
|
/* ESLint configuration for AssemblyScript */
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { createRequire } from "node:module";
|
|
9
10
|
import * as parser from "@typescript-eslint/parser";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
const PATCH_FLAG = "__json_as_eslint_assemblyscript_patch__";
|
|
12
|
+
|
|
13
|
+
function isDecoratorPlacementError(error) {
|
|
14
|
+
return error instanceof Error && typeof error.message === "string" && error.message.includes("Decorators are not valid here");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function patchDecoratorChecksForAssemblyScript() {
|
|
18
|
+
if (globalThis[PATCH_FLAG]) return;
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const require = createRequire(import.meta.url);
|
|
22
|
+
const estreePackagePath = require.resolve("@typescript-eslint/typescript-estree/package.json");
|
|
23
|
+
const estreePackageRoot = path.dirname(estreePackagePath);
|
|
24
|
+
const checkModifiers = require(path.join(estreePackageRoot, "dist/check-modifiers.js"));
|
|
25
|
+
|
|
26
|
+
if (typeof checkModifiers.checkModifiers !== "function") return;
|
|
27
|
+
|
|
28
|
+
const originalCheckModifiers = checkModifiers.checkModifiers;
|
|
29
|
+
checkModifiers.checkModifiers = function (node) {
|
|
30
|
+
try {
|
|
31
|
+
return originalCheckModifiers(node);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (isDecoratorPlacementError(error)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
globalThis[PATCH_FLAG] = true;
|
|
41
|
+
} catch {
|
|
42
|
+
// Ignore when internals are unavailable; linting falls back to default behavior.
|
|
21
43
|
}
|
|
22
|
-
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
patchDecoratorChecksForAssemblyScript();
|
|
23
47
|
|
|
24
48
|
const config = {
|
|
25
|
-
files: ["
|
|
49
|
+
files: ["**/*.ts"],
|
|
26
50
|
languageOptions: { parser: parser },
|
|
27
51
|
};
|
|
28
52
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import pluginEstree from "prettier/plugins/estree";
|
|
2
|
+
import pluginTypescript from "prettier/plugins/typescript";
|
|
3
|
+
import { magic, preProcess } from "./replacer.js";
|
|
4
|
+
import { builders } from "prettier/doc";
|
|
5
|
+
|
|
6
|
+
const estreePrinter = pluginEstree.printers.estree;
|
|
7
|
+
|
|
8
|
+
const as_estree = {
|
|
9
|
+
...estreePrinter,
|
|
10
|
+
printComment(commentPath, options) {
|
|
11
|
+
const comment = commentPath.getValue().value;
|
|
12
|
+
if (comment.startsWith(magic) && comment.endsWith(magic)) {
|
|
13
|
+
const doc = [];
|
|
14
|
+
if (commentPath.stack[commentPath.stack.length - 2] === 0) {
|
|
15
|
+
doc.push(builders.hardline);
|
|
16
|
+
}
|
|
17
|
+
doc.push(comment.slice(magic.length, -magic.length));
|
|
18
|
+
return doc;
|
|
19
|
+
}
|
|
20
|
+
return estreePrinter.printComment(commentPath, options);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
parsers: {
|
|
26
|
+
typescript: {
|
|
27
|
+
...pluginTypescript.parsers.typescript,
|
|
28
|
+
astFormat: "as-estree",
|
|
29
|
+
preprocess: preProcess,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
printers: { "as-estree": as_estree },
|
|
33
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import assemblyscript from "assemblyscript";
|
|
2
|
+
|
|
3
|
+
export const magic = "MAGIC_ASSEMBLYSCRIPT_PRETTIER_1996";
|
|
4
|
+
const prefix = "/*" + magic;
|
|
5
|
+
const postfix = magic + "*/";
|
|
6
|
+
const NodeKind = assemblyscript.NodeKind;
|
|
7
|
+
|
|
8
|
+
function visitDecorators(node) {
|
|
9
|
+
let list = [];
|
|
10
|
+
let _visit = (_node) => {
|
|
11
|
+
switch (_node.kind) {
|
|
12
|
+
case NodeKind.Source: {
|
|
13
|
+
_node.statements.forEach((statement) => {
|
|
14
|
+
_visit(statement);
|
|
15
|
+
});
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
case NodeKind.ClassDeclaration:
|
|
19
|
+
case NodeKind.InterfaceDeclaration:
|
|
20
|
+
case NodeKind.NamespaceDeclaration: {
|
|
21
|
+
_node.members.forEach((statement) => {
|
|
22
|
+
_visit(statement);
|
|
23
|
+
});
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (_node.decorators) {
|
|
28
|
+
list.push(
|
|
29
|
+
..._node.decorators.map((decorator) => {
|
|
30
|
+
return {
|
|
31
|
+
start: decorator.range.start,
|
|
32
|
+
end: decorator.range.end,
|
|
33
|
+
};
|
|
34
|
+
}),
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
_visit(node);
|
|
39
|
+
return list;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param {string} code
|
|
45
|
+
* @returns {string}
|
|
46
|
+
*/
|
|
47
|
+
export function preProcess(code) {
|
|
48
|
+
let parser = new assemblyscript.Parser();
|
|
49
|
+
parser.parseFile(code, "pre_process.ts", false);
|
|
50
|
+
let source = parser.sources[0];
|
|
51
|
+
|
|
52
|
+
const decorators = visitDecorators(source);
|
|
53
|
+
decorators.sort((a, b) => a.start - b.start);
|
|
54
|
+
let cursor = 0;
|
|
55
|
+
const removeDecoratorCodes = decorators.map((decorator) => {
|
|
56
|
+
let s1 = code.slice(cursor, decorator.start);
|
|
57
|
+
let s2 = code.slice(decorator.start, decorator.end);
|
|
58
|
+
cursor = decorator.end;
|
|
59
|
+
return `${s1}${prefix}${s2}`;
|
|
60
|
+
});
|
|
61
|
+
removeDecoratorCodes.push(code.slice(cursor));
|
|
62
|
+
return removeDecoratorCodes.join(postfix);
|
|
63
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
package/transform/lib/builder.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isTypeOmitted, operatorTokenToString, util
|
|
1
|
+
import { isTypeOmitted, operatorTokenToString, util } from "assemblyscript/dist/assemblyscript.js";
|
|
2
2
|
import { Visitor } from "./visitor.js";
|
|
3
3
|
function assert(isTruish, message = "assertion error") {
|
|
4
4
|
if (!isTruish)
|
|
@@ -522,9 +522,7 @@ export class ASTBuilder extends Visitor {
|
|
|
522
522
|
else {
|
|
523
523
|
const last = sb[sb.length - 1];
|
|
524
524
|
const lastCharPos = last.length - 1;
|
|
525
|
-
if (lastCharPos >= 0 &&
|
|
526
|
-
(last.charCodeAt(lastCharPos) == 125 ||
|
|
527
|
-
last.charCodeAt(lastCharPos) == 59)) {
|
|
525
|
+
if (lastCharPos >= 0 && (last.charCodeAt(lastCharPos) == 125 || last.charCodeAt(lastCharPos) == 59)) {
|
|
528
526
|
sb.push("\n");
|
|
529
527
|
}
|
|
530
528
|
else {
|
|
@@ -632,8 +630,7 @@ export class ASTBuilder extends Visitor {
|
|
|
632
630
|
}
|
|
633
631
|
for (let i = 0, k = members.length; i < k; ++i) {
|
|
634
632
|
const member = members[i];
|
|
635
|
-
if (member.kind != 54 ||
|
|
636
|
-
member.parameterIndex < 0) {
|
|
633
|
+
if (member.kind != 54 || member.parameterIndex < 0) {
|
|
637
634
|
util.indent(sb, indentLevel);
|
|
638
635
|
this.visitNodeAndTerminate(member);
|
|
639
636
|
}
|
|
@@ -928,8 +925,7 @@ export class ASTBuilder extends Visitor {
|
|
|
928
925
|
}
|
|
929
926
|
}
|
|
930
927
|
else {
|
|
931
|
-
if (!isTypeOmitted(returnType) &&
|
|
932
|
-
!node.isAny(524288 | 4096)) {
|
|
928
|
+
if (!isTypeOmitted(returnType) && !node.isAny(524288 | 4096)) {
|
|
933
929
|
sb.push("): ");
|
|
934
930
|
this.visitTypeNode(returnType);
|
|
935
931
|
}
|
|
@@ -1250,11 +1246,7 @@ export class ASTBuilder extends Visitor {
|
|
|
1250
1246
|
const numDeclarations = declarations.length;
|
|
1251
1247
|
const firstDeclaration = declarations[0];
|
|
1252
1248
|
this.serializeExternalModifiers(firstDeclaration);
|
|
1253
|
-
sb.push(firstDeclaration.is(8)
|
|
1254
|
-
? "const "
|
|
1255
|
-
: firstDeclaration.is(16)
|
|
1256
|
-
? "let "
|
|
1257
|
-
: "var ");
|
|
1249
|
+
sb.push(firstDeclaration.is(8) ? "const " : firstDeclaration.is(16) ? "let " : "var ");
|
|
1258
1250
|
this.visitVariableDeclaration(node.declarations[0]);
|
|
1259
1251
|
for (let i = 1; i < numDeclarations; ++i) {
|
|
1260
1252
|
sb.push(", ");
|