goscript 0.1.0 → 0.1.1
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 +267 -255
- package/cmd/goscript/cmd-test.go +193 -0
- package/cmd/goscript/cmd-test_test.go +76 -0
- package/cmd/goscript/main.go +1 -0
- package/compiler/build-flags.go +38 -0
- package/compiler/compile-request.go +2 -0
- package/compiler/compliance_test.go +0 -8
- package/compiler/gotest/owner.go +24 -0
- package/compiler/gotest/package-result.go +67 -0
- package/compiler/gotest/request.go +145 -0
- package/compiler/gotest/result.go +28 -0
- package/compiler/gotest/runner.go +588 -0
- package/compiler/gotest/runner_test.go +627 -0
- package/compiler/gotest/test.go +9 -0
- package/compiler/index.test.ts +1 -1
- package/compiler/lowered-program.go +71 -19
- package/compiler/lowering.go +5065 -569
- package/compiler/override-facts.go +307 -0
- package/compiler/override-registry.go +50 -189
- package/compiler/override-registry_test.go +47 -0
- package/compiler/package-graph.go +50 -27
- package/compiler/package-graph_test.go +37 -2
- package/compiler/package-test-function.go +9 -0
- package/compiler/package-test-graph-package.go +40 -0
- package/compiler/package-test-graph-variant.go +105 -0
- package/compiler/package-test-graph.go +117 -0
- package/compiler/package-test-graph_test.go +144 -0
- package/compiler/runtime-contract.go +189 -29
- package/compiler/runtime-contract_test.go +44 -30
- package/compiler/semantic-model-types.go +9 -6
- package/compiler/semantic-model.go +538 -38
- package/compiler/semantic-model_test.go +55 -0
- package/compiler/service.go +1 -1
- package/compiler/skeleton_test.go +679 -49
- package/compiler/tsworkspace/owner.go +334 -0
- package/compiler/tsworkspace/owner_test.go +93 -0
- package/compiler/tsworkspace/result.go +17 -0
- package/compiler/typescript-emitter.go +459 -82
- package/compiler/wasm/compile.go +1 -1
- package/compiler/wasm/compile_test.go +61 -11
- package/compiler/wasm_api.go +172 -7
- package/dist/gs/builtin/builtin.d.ts +20 -2
- package/dist/gs/builtin/builtin.js +194 -6
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +8 -0
- package/dist/gs/builtin/channel.js +12 -0
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +22 -2
- package/dist/gs/builtin/slice.js +216 -44
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +5 -2
- package/dist/gs/builtin/type.js +83 -24
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/builtin/varRef.d.ts +5 -0
- package/dist/gs/builtin/varRef.js +23 -0
- package/dist/gs/builtin/varRef.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.js +48 -44
- package/dist/gs/bytes/buffer.gs.js.map +1 -1
- package/dist/gs/bytes/reader.gs.js +20 -18
- package/dist/gs/bytes/reader.gs.js.map +1 -1
- package/dist/gs/context/context.d.ts +5 -4
- package/dist/gs/context/context.js +10 -10
- package/dist/gs/context/context.js.map +1 -1
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.d.ts +1 -0
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.js +2 -0
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.js.map +1 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.d.ts +1 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.js +2 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.js.map +1 -0
- package/dist/gs/embed/index.d.ts +7 -0
- package/dist/gs/embed/index.js +16 -0
- package/dist/gs/embed/index.js.map +1 -0
- package/dist/gs/encoding/json/index.d.ts +1 -0
- package/dist/gs/encoding/json/index.js +18 -0
- package/dist/gs/encoding/json/index.js.map +1 -1
- package/dist/gs/errors/errors.d.ts +4 -0
- package/dist/gs/errors/errors.js +81 -0
- package/dist/gs/errors/errors.js.map +1 -1
- package/dist/gs/fmt/fmt.d.ts +4 -4
- package/dist/gs/fmt/fmt.js +42 -11
- package/dist/gs/fmt/fmt.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +35 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +211 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.d.ts +189 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +825 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +163 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +449 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.d.ts +9 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js +71 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -0
- package/dist/gs/go/internal/scannerhooks/index.d.ts +3 -0
- package/dist/gs/go/internal/scannerhooks/index.js +5 -0
- package/dist/gs/go/internal/scannerhooks/index.js.map +1 -0
- package/dist/gs/go/scanner/index.d.ts +13 -0
- package/dist/gs/go/scanner/index.js +35 -0
- package/dist/gs/go/scanner/index.js.map +1 -1
- package/dist/gs/go/token/index.d.ts +156 -0
- package/dist/gs/go/token/index.js +500 -4
- package/dist/gs/go/token/index.js.map +1 -1
- package/dist/gs/internal/abi/index.d.ts +4 -0
- package/dist/gs/internal/abi/index.js +10 -0
- package/dist/gs/internal/abi/index.js.map +1 -1
- package/dist/gs/internal/bytealg/index.d.ts +2 -0
- package/dist/gs/internal/bytealg/index.js +14 -0
- package/dist/gs/internal/bytealg/index.js.map +1 -1
- package/dist/gs/internal/byteorder/index.d.ts +8 -2
- package/dist/gs/internal/byteorder/index.js +56 -25
- package/dist/gs/internal/byteorder/index.js.map +1 -1
- package/dist/gs/internal/godebug/index.d.ts +12 -0
- package/dist/gs/internal/godebug/index.js +30 -0
- package/dist/gs/internal/godebug/index.js.map +1 -0
- package/dist/gs/io/fs/index.d.ts +1 -0
- package/dist/gs/io/fs/index.js +1 -0
- package/dist/gs/io/fs/index.js.map +1 -1
- package/dist/gs/io/fs/readlink.d.ts +8 -0
- package/dist/gs/io/fs/readlink.js +64 -0
- package/dist/gs/io/fs/readlink.js.map +1 -0
- package/dist/gs/io/fs/walk.d.ts +3 -3
- package/dist/gs/io/fs/walk.js +7 -7
- package/dist/gs/io/fs/walk.js.map +1 -1
- package/dist/gs/io/io.d.ts +40 -6
- package/dist/gs/io/io.js +151 -26
- package/dist/gs/io/io.js.map +1 -1
- package/dist/gs/maps/iter.d.ts +3 -3
- package/dist/gs/maps/iter.js +3 -3
- package/dist/gs/maps/iter.js.map +1 -1
- package/dist/gs/maps/maps.d.ts +2 -2
- package/dist/gs/maps/maps.js +1 -1
- package/dist/gs/maps/maps.js.map +1 -1
- package/dist/gs/math/bits/index.d.ts +13 -4
- package/dist/gs/math/bits/index.js +66 -34
- package/dist/gs/math/bits/index.js.map +1 -1
- package/dist/gs/math/const.gs.d.ts +5 -5
- package/dist/gs/math/const.gs.js +4 -4
- package/dist/gs/math/const.gs.js.map +1 -1
- package/dist/gs/mime/index.d.ts +1 -0
- package/dist/gs/mime/index.js +50 -0
- package/dist/gs/mime/index.js.map +1 -0
- package/dist/gs/net/http/httptest/index.d.ts +11 -0
- package/dist/gs/net/http/httptest/index.js +21 -0
- package/dist/gs/net/http/httptest/index.js.map +1 -0
- package/dist/gs/net/http/index.d.ts +27 -0
- package/dist/gs/net/http/index.js +61 -0
- package/dist/gs/net/http/index.js.map +1 -0
- package/dist/gs/os/dir_unix.gs.js +2 -2
- package/dist/gs/os/dir_unix.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/dist/gs/path/filepath/match.js +165 -3
- package/dist/gs/path/filepath/match.js.map +1 -1
- package/dist/gs/path/filepath/path.d.ts +3 -1
- package/dist/gs/path/filepath/path.js +133 -4
- package/dist/gs/path/filepath/path.js.map +1 -1
- package/dist/gs/path/path.d.ts +4 -1
- package/dist/gs/path/path.js +16 -4
- package/dist/gs/path/path.js.map +1 -1
- package/dist/gs/reflect/index.d.ts +1 -1
- package/dist/gs/reflect/index.js +1 -1
- package/dist/gs/reflect/index.js.map +1 -1
- package/dist/gs/reflect/map.js +3 -0
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +7 -4
- package/dist/gs/reflect/type.js +148 -7
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/runtime/debug/index.d.ts +2 -0
- package/dist/gs/runtime/debug/index.js +8 -0
- package/dist/gs/runtime/debug/index.js.map +1 -0
- package/dist/gs/runtime/runtime.d.ts +35 -3
- package/dist/gs/runtime/runtime.js +72 -0
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/slices/slices.d.ts +24 -5
- package/dist/gs/slices/slices.js +214 -5
- package/dist/gs/slices/slices.js.map +1 -1
- package/dist/gs/sort/slice.gs.d.ts +3 -3
- package/dist/gs/sort/slice.gs.js +6 -6
- package/dist/gs/sort/slice.gs.js.map +1 -1
- package/dist/gs/sort/sort.gs.d.ts +4 -4
- package/dist/gs/sort/sort.gs.js +11 -8
- package/dist/gs/sort/sort.gs.js.map +1 -1
- package/dist/gs/strings/builder.d.ts +1 -1
- package/dist/gs/strings/builder.js +3 -2
- package/dist/gs/strings/builder.js.map +1 -1
- package/dist/gs/sync/atomic/type.gs.d.ts +9 -8
- package/dist/gs/sync/atomic/type.gs.js +0 -2
- package/dist/gs/sync/atomic/type.gs.js.map +1 -1
- package/dist/gs/sync/sync.d.ts +2 -0
- package/dist/gs/sync/sync.js +27 -0
- package/dist/gs/sync/sync.js.map +1 -1
- package/dist/gs/syscall/constants.d.ts +36 -24
- package/dist/gs/syscall/constants.js +12 -0
- package/dist/gs/syscall/constants.js.map +1 -1
- package/dist/gs/syscall/errors.d.ts +2 -0
- package/dist/gs/syscall/errors.js +8 -0
- package/dist/gs/syscall/errors.js.map +1 -1
- package/dist/gs/syscall/fs.d.ts +43 -0
- package/dist/gs/syscall/fs.js +102 -0
- package/dist/gs/syscall/fs.js.map +1 -1
- package/dist/gs/syscall/js/index.d.ts +90 -0
- package/dist/gs/syscall/js/index.js +375 -0
- package/dist/gs/syscall/js/index.js.map +1 -0
- package/dist/gs/syscall/types.d.ts +22 -0
- package/dist/gs/syscall/types.js +45 -1
- package/dist/gs/syscall/types.js.map +1 -1
- package/dist/gs/testing/index.d.ts +1 -0
- package/dist/gs/testing/index.js +2 -0
- package/dist/gs/testing/index.js.map +1 -0
- package/dist/gs/testing/testing.d.ts +77 -0
- package/dist/gs/testing/testing.js +301 -0
- package/dist/gs/testing/testing.js.map +1 -0
- package/dist/gs/time/time.d.ts +41 -4
- package/dist/gs/time/time.js +205 -36
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unicode/unicode.d.ts +23 -1
- package/dist/gs/unicode/unicode.js +79 -10
- package/dist/gs/unicode/unicode.js.map +1 -1
- package/dist/gs/unicode/utf8/utf8.d.ts +4 -4
- package/dist/gs/unicode/utf8/utf8.js +24 -11
- package/dist/gs/unicode/utf8/utf8.js.map +1 -1
- package/dist/gs/unique/index.d.ts +11 -0
- package/dist/gs/unique/index.js +71 -0
- package/dist/gs/unique/index.js.map +1 -0
- package/go.sum +9 -0
- package/gs/builtin/builtin.ts +239 -8
- package/gs/builtin/channel.ts +22 -0
- package/gs/builtin/runtime-contract.test.ts +126 -0
- package/gs/builtin/slice.ts +259 -50
- package/gs/builtin/type.ts +109 -34
- package/gs/builtin/varRef.ts +38 -1
- package/gs/bytes/buffer.gs.ts +48 -44
- package/gs/bytes/meta.json +8 -3
- package/gs/bytes/reader.gs.ts +20 -19
- package/gs/context/context.test.ts +41 -0
- package/gs/context/context.ts +22 -26
- package/gs/crypto/internal/fips140deps/byteorder/index.ts +1 -0
- package/gs/crypto/internal/fips140deps/godebug/index.ts +1 -0
- package/gs/embed/index.ts +20 -0
- package/gs/embed/meta.json +5 -0
- package/gs/encoding/json/index.test.ts +15 -1
- package/gs/encoding/json/index.ts +24 -0
- package/gs/errors/errors.test.ts +82 -0
- package/gs/errors/errors.ts +104 -0
- package/gs/fmt/fmt.ts +56 -16
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +73 -1
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +297 -1
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +159 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +1005 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +719 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +40 -0
- package/gs/github.com/klauspost/compress/internal/le/index.test.ts +36 -0
- package/gs/github.com/klauspost/compress/internal/le/index.ts +114 -0
- package/gs/go/internal/scannerhooks/index.test.ts +14 -0
- package/gs/go/internal/scannerhooks/index.ts +9 -0
- package/gs/go/scanner/index.test.ts +22 -0
- package/gs/go/scanner/index.ts +47 -0
- package/gs/go/token/index.test.ts +47 -1
- package/gs/go/token/index.ts +570 -4
- package/gs/internal/abi/index.test.ts +18 -0
- package/gs/internal/abi/index.ts +14 -0
- package/gs/internal/bytealg/index.test.ts +18 -0
- package/gs/internal/bytealg/index.ts +16 -0
- package/gs/internal/byteorder/index.test.ts +39 -0
- package/gs/internal/byteorder/index.ts +100 -27
- package/gs/internal/godebug/index.test.ts +16 -0
- package/gs/internal/godebug/index.ts +35 -0
- package/gs/io/fs/index.ts +1 -0
- package/gs/io/fs/meta.json +5 -0
- package/gs/io/fs/readlink.test.ts +43 -0
- package/gs/io/fs/readlink.ts +77 -0
- package/gs/io/fs/walk.test.ts +61 -0
- package/gs/io/fs/walk.ts +9 -9
- package/gs/io/io.ts +174 -31
- package/gs/io/meta.json +10 -2
- package/gs/maps/iter.ts +12 -6
- package/gs/maps/maps.ts +8 -6
- package/gs/math/bits/index.ts +103 -47
- package/gs/math/const.gs.test.ts +11 -5
- package/gs/math/const.gs.ts +5 -6
- package/gs/mime/index.ts +54 -0
- package/gs/net/http/httptest/index.ts +25 -0
- package/gs/net/http/index.test.ts +20 -0
- package/gs/net/http/index.ts +81 -0
- package/gs/os/dir_unix.gs.ts +2 -3
- package/gs/os/types_js.gs.ts +2 -2
- package/gs/path/filepath/match.test.ts +31 -12
- package/gs/path/filepath/match.ts +178 -3
- package/gs/path/filepath/path.test.ts +25 -0
- package/gs/path/filepath/path.ts +159 -5
- package/gs/path/path.ts +20 -5
- package/gs/reflect/index.ts +1 -0
- package/gs/reflect/map.test.ts +19 -0
- package/gs/reflect/map.ts +4 -0
- package/gs/reflect/type.ts +197 -17
- package/gs/runtime/debug/index.test.ts +24 -0
- package/gs/runtime/debug/index.ts +8 -0
- package/gs/runtime/runtime.test.ts +19 -0
- package/gs/runtime/runtime.ts +98 -3
- package/gs/slices/slices.test.ts +94 -0
- package/gs/slices/slices.ts +245 -5
- package/gs/sort/meta.json +7 -0
- package/gs/sort/slice.gs.ts +16 -7
- package/gs/sort/sort.gs.ts +16 -13
- package/gs/strings/builder.ts +4 -3
- package/gs/sync/atomic/type.gs.ts +13 -14
- package/gs/sync/meta.json +3 -1
- package/gs/sync/sync.test.ts +13 -1
- package/gs/sync/sync.ts +27 -0
- package/gs/syscall/constants.ts +39 -24
- package/gs/syscall/errors.ts +10 -0
- package/gs/syscall/fs.ts +195 -0
- package/gs/syscall/js/index.ts +458 -0
- package/gs/syscall/js/meta.json +4 -0
- package/gs/syscall/net.test.ts +85 -0
- package/gs/syscall/types.ts +56 -0
- package/gs/testing/index.ts +1 -0
- package/gs/testing/meta.json +5 -0
- package/gs/testing/testing.test.ts +90 -0
- package/gs/testing/testing.ts +382 -0
- package/gs/time/time.test.ts +106 -0
- package/gs/time/time.ts +278 -57
- package/gs/unicode/unicode.test.ts +25 -0
- package/gs/unicode/unicode.ts +119 -9
- package/gs/unicode/utf8/utf8.test.ts +13 -0
- package/gs/unicode/utf8/utf8.ts +28 -16
- package/gs/unique/index.ts +91 -0
- package/package.json +2 -1
|
@@ -342,6 +342,9 @@ class BufferedChannel {
|
|
|
342
342
|
this.receivers.length > 0 ||
|
|
343
343
|
this.receiversWithOk.length > 0);
|
|
344
344
|
}
|
|
345
|
+
len() {
|
|
346
|
+
return this.buffer.length;
|
|
347
|
+
}
|
|
345
348
|
}
|
|
346
349
|
/**
|
|
347
350
|
* A bidirectional channel reference.
|
|
@@ -377,6 +380,9 @@ export class BidirectionalChannelRef {
|
|
|
377
380
|
selectReceive(id) {
|
|
378
381
|
return this.channel.selectReceive(id);
|
|
379
382
|
}
|
|
383
|
+
len() {
|
|
384
|
+
return this.channel.len();
|
|
385
|
+
}
|
|
380
386
|
}
|
|
381
387
|
/**
|
|
382
388
|
* A send-only channel reference.
|
|
@@ -414,6 +420,9 @@ export class SendOnlyChannelRef {
|
|
|
414
420
|
selectReceive(_id) {
|
|
415
421
|
throw new Error('Cannot receive from send-only channel');
|
|
416
422
|
}
|
|
423
|
+
len() {
|
|
424
|
+
return this.channel.len();
|
|
425
|
+
}
|
|
417
426
|
}
|
|
418
427
|
/**
|
|
419
428
|
* A receive-only channel reference.
|
|
@@ -451,6 +460,9 @@ export class ReceiveOnlyChannelRef {
|
|
|
451
460
|
selectSend(_value, _id) {
|
|
452
461
|
throw new Error('Cannot send to receive-only channel');
|
|
453
462
|
}
|
|
463
|
+
len() {
|
|
464
|
+
return this.channel.len();
|
|
465
|
+
}
|
|
454
466
|
}
|
|
455
467
|
/**
|
|
456
468
|
* Creates a new channel reference with the specified direction.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../gs/builtin/channel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../gs/builtin/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type VarRef } from './varRef.js';
|
|
1
2
|
/**
|
|
2
3
|
* GoSliceObject contains metadata for complex slice views
|
|
3
4
|
*/
|
|
@@ -21,6 +22,8 @@ export type SliceProxy<T> = T[] & {
|
|
|
21
22
|
*/
|
|
22
23
|
export type Slice<T> = T[] | SliceProxy<T> | null | (T extends number ? Uint8Array : never);
|
|
23
24
|
export declare function asArray<T>(slice: Slice<T>): T[];
|
|
25
|
+
export declare function sliceToArray<T>(slice: Slice<T> | Uint8Array, length: number, typeHint?: string): T[] | Uint8Array;
|
|
26
|
+
export declare function sliceToArrayPointer<T>(slice: Slice<T> | Uint8Array, length: number, typeHint?: string): VarRef<T[] | Uint8Array>;
|
|
24
27
|
/**
|
|
25
28
|
* isSliceProxy checks if a slice is a SliceProxy (has __meta__ property)
|
|
26
29
|
* This is an alias for isComplexSlice for better type hinting
|
|
@@ -32,7 +35,7 @@ export declare function isSliceProxy<T>(slice: Slice<T>): slice is SliceProxy<T>
|
|
|
32
35
|
* @param capacity The capacity of the slice (optional).
|
|
33
36
|
* @returns A new slice.
|
|
34
37
|
*/
|
|
35
|
-
export declare const makeSlice: <T>(length: number, capacity?: number, typeHint?: string) => Slice<T>;
|
|
38
|
+
export declare const makeSlice: <T>(length: number, capacity?: number, typeHint?: string, zeroFactory?: () => T) => Slice<T>;
|
|
36
39
|
/**
|
|
37
40
|
* goSlice creates a slice from s[low:high:max]
|
|
38
41
|
* Arguments mirror Go semantics; omitted indices are undefined.
|
|
@@ -57,7 +60,9 @@ export declare const arrayToSlice: <T>(arr: T[] | null | undefined, depth?: numb
|
|
|
57
60
|
* @param obj The collection to get the length of.
|
|
58
61
|
* @returns The length of the collection.
|
|
59
62
|
*/
|
|
60
|
-
export declare const len: <T = unknown, V = unknown>(obj: string | Array<T> | Slice<T> | Map<T, V> | Set<T> | Uint8Array |
|
|
63
|
+
export declare const len: <T = unknown, V = unknown>(obj: string | Array<T> | Slice<T> | Map<T, V> | Set<T> | Uint8Array | {
|
|
64
|
+
len(): number;
|
|
65
|
+
} | null | undefined) => number;
|
|
61
66
|
/**
|
|
62
67
|
* Returns the capacity of a slice.
|
|
63
68
|
* @param obj The slice.
|
|
@@ -97,12 +102,27 @@ export declare function copy<T>(dst: Slice<T>, src: string): number;
|
|
|
97
102
|
* @throws Error if index is out of bounds or type is unsupported.
|
|
98
103
|
*/
|
|
99
104
|
export declare function index<T>(collection: string | Slice<T> | T[], index: number): T | number;
|
|
105
|
+
/**
|
|
106
|
+
* indexRef returns an addressable reference to a slice or array element.
|
|
107
|
+
*/
|
|
108
|
+
export declare function indexRef<T>(collection: Slice<T> | T[] | Uint8Array, index: number): VarRef<T>;
|
|
109
|
+
/**
|
|
110
|
+
* indexAddress returns a stable synthetic address for an addressable slice or
|
|
111
|
+
* array element.
|
|
112
|
+
*/
|
|
113
|
+
export declare function indexAddress<T>(collection: Slice<T> | T[] | Uint8Array, index: number): number;
|
|
100
114
|
/**
|
|
101
115
|
* Converts a string to an array of Unicode code points (runes).
|
|
102
116
|
* @param str The input string.
|
|
103
117
|
* @returns An array of numbers representing the Unicode code points.
|
|
104
118
|
*/
|
|
105
119
|
export declare const stringToRunes: (str: string) => number[];
|
|
120
|
+
/**
|
|
121
|
+
* Returns Go range pairs for a string: UTF-8 byte offset and rune value.
|
|
122
|
+
* @param str The input string.
|
|
123
|
+
* @returns Index/rune pairs matching Go's `for i, r := range str`.
|
|
124
|
+
*/
|
|
125
|
+
export declare const rangeString: (str: string) => Array<[number, number]>;
|
|
106
126
|
/**
|
|
107
127
|
* Converts a single-character string to its Unicode code point (rune).
|
|
108
128
|
* Used for readable rune constants like $.stringToRune('/') instead of 47.
|
package/dist/gs/builtin/slice.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { varRef } from './varRef.js';
|
|
2
|
+
const addressStride = 0x100000000;
|
|
3
|
+
let nextAddressBase = 1;
|
|
4
|
+
const addressBases = new WeakMap();
|
|
1
5
|
/**
|
|
2
6
|
* wrapSliceProxy wraps a SliceProxy in a Proxy to intercept index access
|
|
3
7
|
* and route it through the backing array.
|
|
@@ -58,6 +62,30 @@ export function asArray(slice) {
|
|
|
58
62
|
}
|
|
59
63
|
return [];
|
|
60
64
|
}
|
|
65
|
+
export function sliceToArray(slice, length, typeHint) {
|
|
66
|
+
if (len(slice) < length) {
|
|
67
|
+
throw new Error(`runtime error: cannot convert slice with length ${len(slice)} to array with length ${length}`);
|
|
68
|
+
}
|
|
69
|
+
if (typeHint === 'byte') {
|
|
70
|
+
return new Uint8Array(asArray(slice).slice(0, length));
|
|
71
|
+
}
|
|
72
|
+
return asArray(slice).slice(0, length);
|
|
73
|
+
}
|
|
74
|
+
export function sliceToArrayPointer(slice, length, typeHint) {
|
|
75
|
+
if (len(slice) < length) {
|
|
76
|
+
throw new Error(`runtime error: cannot convert slice with length ${len(slice)} to array pointer with length ${length}`);
|
|
77
|
+
}
|
|
78
|
+
if (typeHint === 'byte') {
|
|
79
|
+
if (slice instanceof Uint8Array) {
|
|
80
|
+
return varRef(goSlice(slice, 0, length));
|
|
81
|
+
}
|
|
82
|
+
return varRef(goSlice(slice, 0, length));
|
|
83
|
+
}
|
|
84
|
+
if (slice instanceof Uint8Array) {
|
|
85
|
+
return varRef(goSlice(slice, 0, length));
|
|
86
|
+
}
|
|
87
|
+
return varRef(goSlice(slice, 0, length));
|
|
88
|
+
}
|
|
61
89
|
/**
|
|
62
90
|
* isComplexSlice checks if a slice is a complex slice (has __meta__ property)
|
|
63
91
|
*/
|
|
@@ -68,6 +96,12 @@ function isComplexSlice(slice) {
|
|
|
68
96
|
'__meta__' in slice &&
|
|
69
97
|
slice.__meta__ !== undefined);
|
|
70
98
|
}
|
|
99
|
+
function normalizeSliceIndex(value) {
|
|
100
|
+
if (value === undefined) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
return Number(value);
|
|
104
|
+
}
|
|
71
105
|
/**
|
|
72
106
|
* isSliceProxy checks if a slice is a SliceProxy (has __meta__ property)
|
|
73
107
|
* This is an alias for isComplexSlice for better type hinting
|
|
@@ -81,7 +115,7 @@ export function isSliceProxy(slice) {
|
|
|
81
115
|
* @param capacity The capacity of the slice (optional).
|
|
82
116
|
* @returns A new slice.
|
|
83
117
|
*/
|
|
84
|
-
export const makeSlice = (length, capacity, typeHint) => {
|
|
118
|
+
export const makeSlice = (length, capacity, typeHint, zeroFactory) => {
|
|
85
119
|
if (typeHint === 'byte') {
|
|
86
120
|
const actualCapacity = capacity === undefined ? length : capacity;
|
|
87
121
|
if (length < 0 || actualCapacity < 0 || length > actualCapacity) {
|
|
@@ -111,24 +145,25 @@ export const makeSlice = (length, capacity, typeHint) => {
|
|
|
111
145
|
if (length < 0 || actualCapacity < 0 || length > actualCapacity) {
|
|
112
146
|
throw new Error(`Invalid slice length (${length}) or capacity (${actualCapacity})`);
|
|
113
147
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
148
|
+
const zeroValue = () => {
|
|
149
|
+
if (zeroFactory !== undefined) {
|
|
150
|
+
return zeroFactory();
|
|
151
|
+
}
|
|
152
|
+
switch (typeHint) {
|
|
153
|
+
case 'number':
|
|
154
|
+
return 0;
|
|
155
|
+
case 'boolean':
|
|
156
|
+
return false;
|
|
157
|
+
case 'string':
|
|
158
|
+
return '';
|
|
159
|
+
default:
|
|
160
|
+
return null; // Default for objects, complex types, or unspecified
|
|
161
|
+
}
|
|
162
|
+
};
|
|
128
163
|
const backingArr = new Array(actualCapacity);
|
|
129
164
|
// Initialize the relevant part of the backing array
|
|
130
165
|
for (let i = 0; i < length; i++) {
|
|
131
|
-
backingArr[i] =
|
|
166
|
+
backingArr[i] = zeroValue();
|
|
132
167
|
}
|
|
133
168
|
// The rest of backingArr (from length to actualCapacity-1) remains uninitialized (undefined),
|
|
134
169
|
// representing available capacity.
|
|
@@ -140,7 +175,7 @@ export const makeSlice = (length, capacity, typeHint) => {
|
|
|
140
175
|
// Its elements up to 'length' should reflect the initialized part of the slice.
|
|
141
176
|
const proxyTargetArray = new Array(length);
|
|
142
177
|
for (let i = 0; i < length; i++) {
|
|
143
|
-
proxyTargetArray[i] = backingArr[i];
|
|
178
|
+
proxyTargetArray[i] = backingArr[i];
|
|
144
179
|
}
|
|
145
180
|
const proxy = proxyTargetArray;
|
|
146
181
|
proxy.__meta__ = {
|
|
@@ -187,6 +222,9 @@ export const makeSlice = (length, capacity, typeHint) => {
|
|
|
187
222
|
};
|
|
188
223
|
export function goSlice(// T can be number for Uint8Array case
|
|
189
224
|
s, low, high, max) {
|
|
225
|
+
low = normalizeSliceIndex(low);
|
|
226
|
+
high = normalizeSliceIndex(high);
|
|
227
|
+
max = normalizeSliceIndex(max);
|
|
190
228
|
const handler = {
|
|
191
229
|
get(target, prop) {
|
|
192
230
|
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
@@ -218,11 +256,13 @@ s, low, high, max) {
|
|
|
218
256
|
const index = Number(prop);
|
|
219
257
|
if (index >= 0 && index < target.__meta__.length) {
|
|
220
258
|
target.__meta__.backing[target.__meta__.offset + index] = value;
|
|
259
|
+
target[index] = value;
|
|
221
260
|
return true;
|
|
222
261
|
}
|
|
223
262
|
if (index === target.__meta__.length &&
|
|
224
263
|
target.__meta__.length < target.__meta__.capacity) {
|
|
225
264
|
target.__meta__.backing[target.__meta__.offset + index] = value;
|
|
265
|
+
target[index] = value;
|
|
226
266
|
target.__meta__.length++;
|
|
227
267
|
return true;
|
|
228
268
|
}
|
|
@@ -240,38 +280,40 @@ s, low, high, max) {
|
|
|
240
280
|
if (actualLow < 0 || actualHigh < actualLow || actualHigh > s.length) {
|
|
241
281
|
throw new Error(`Invalid slice indices: low ${actualLow}, high ${actualHigh} for Uint8Array of length ${s.length}`);
|
|
242
282
|
}
|
|
243
|
-
const
|
|
283
|
+
const newLength = actualHigh - actualLow;
|
|
244
284
|
if (max !== undefined) {
|
|
245
285
|
if (max < actualHigh || max > s.length) {
|
|
246
286
|
// max is relative to the original s.length (capacity)
|
|
247
287
|
throw new Error(`Invalid max index: ${max}. Constraints: low ${actualLow} <= high ${actualHigh} <= max <= original_length ${s.length}`);
|
|
248
288
|
}
|
|
249
|
-
const newLength = subArrayView.length; // actualHigh - actualLow
|
|
250
289
|
const newCap = max - actualLow; // Capacity of the new slice view
|
|
251
290
|
if (newCap !== newLength) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
offset: 0, // Offset is 0 because backingNumbers is a direct copy
|
|
259
|
-
length: newLength,
|
|
260
|
-
capacity: newCap,
|
|
261
|
-
},
|
|
291
|
+
const proxyTarget = new Array(newLength);
|
|
292
|
+
proxyTarget.__meta__ = {
|
|
293
|
+
backing: s,
|
|
294
|
+
offset: actualLow,
|
|
295
|
+
length: newLength,
|
|
296
|
+
capacity: newCap,
|
|
262
297
|
};
|
|
263
|
-
// Explicitly cast to Slice<T> after ensuring T is number for this branch.
|
|
264
298
|
return new Proxy(proxyTarget, handler);
|
|
265
299
|
}
|
|
266
300
|
else {
|
|
267
301
|
// newCap === newLength, standard Uint8Array is fine.
|
|
268
|
-
return
|
|
302
|
+
return s.subarray(actualLow, actualHigh); // T is number
|
|
269
303
|
}
|
|
270
304
|
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
305
|
+
if (actualHigh !== s.length) {
|
|
306
|
+
const proxyTarget = new Array(newLength);
|
|
307
|
+
proxyTarget.__meta__ = {
|
|
308
|
+
backing: s,
|
|
309
|
+
offset: actualLow,
|
|
310
|
+
length: newLength,
|
|
311
|
+
capacity: s.length - actualLow,
|
|
312
|
+
};
|
|
313
|
+
return new Proxy(proxyTarget, handler);
|
|
274
314
|
}
|
|
315
|
+
// max is not defined and length equals capacity, return the Uint8Array view directly.
|
|
316
|
+
return s.subarray(actualLow, actualHigh); // T is number
|
|
275
317
|
}
|
|
276
318
|
// Handle nil slices - in Go, slicing a nil slice with valid bounds returns nil
|
|
277
319
|
if (s === null || s === undefined) {
|
|
@@ -461,6 +503,9 @@ export const len = (obj) => {
|
|
|
461
503
|
if (obj instanceof Uint8Array) {
|
|
462
504
|
return obj.length;
|
|
463
505
|
}
|
|
506
|
+
if (typeof obj.len === 'function') {
|
|
507
|
+
return obj.len();
|
|
508
|
+
}
|
|
464
509
|
if (isComplexSlice(obj)) {
|
|
465
510
|
return obj.__meta__.length;
|
|
466
511
|
}
|
|
@@ -493,16 +538,13 @@ export function append(slice, ...elements) {
|
|
|
493
538
|
// 1. Flatten all elements from the varargs `...elements` into `varargsElements`.
|
|
494
539
|
// Determine if the result should be a Uint8Array.
|
|
495
540
|
const inputIsUint8Array = slice instanceof Uint8Array;
|
|
496
|
-
const
|
|
497
|
-
const produceUint8Array = inputIsUint8Array ||
|
|
498
|
-
appendingUint8Array ||
|
|
499
|
-
(slice === null && appendingUint8Array);
|
|
541
|
+
const produceUint8Array = inputIsUint8Array;
|
|
500
542
|
// If producing Uint8Array, all elements must be numbers and potentially flattened from other Uint8Arrays/number slices.
|
|
501
543
|
if (produceUint8Array) {
|
|
502
544
|
let combinedBytes = [];
|
|
503
545
|
// Add bytes from the original slice if it exists and is numeric.
|
|
504
546
|
if (inputIsUint8Array) {
|
|
505
|
-
combinedBytes
|
|
547
|
+
appendBytes(combinedBytes, slice);
|
|
506
548
|
}
|
|
507
549
|
else if (slice !== null && slice !== undefined) {
|
|
508
550
|
// Original was Slice<number> or number[]
|
|
@@ -519,7 +561,7 @@ export function append(slice, ...elements) {
|
|
|
519
561
|
// For Uint8Array, elements are always flattened if they are slices/Uint8Arrays.
|
|
520
562
|
for (const item of elements) {
|
|
521
563
|
if (item instanceof Uint8Array) {
|
|
522
|
-
combinedBytes
|
|
564
|
+
appendBytes(combinedBytes, item);
|
|
523
565
|
}
|
|
524
566
|
else if (isComplexSlice(item) || Array.isArray(item)) {
|
|
525
567
|
const itemLen = len(item);
|
|
@@ -621,6 +663,11 @@ export function append(slice, ...elements) {
|
|
|
621
663
|
};
|
|
622
664
|
return wrapSliceProxy(resultProxy);
|
|
623
665
|
}
|
|
666
|
+
function appendBytes(dst, src) {
|
|
667
|
+
for (let i = 0; i < src.length; i++) {
|
|
668
|
+
dst.push(src[i]);
|
|
669
|
+
}
|
|
670
|
+
}
|
|
624
671
|
export function copy(dst, src) {
|
|
625
672
|
if (dst === null) {
|
|
626
673
|
return 0;
|
|
@@ -794,6 +841,101 @@ export function index(collection, index) {
|
|
|
794
841
|
}
|
|
795
842
|
throw new Error('runtime error: index on unsupported type');
|
|
796
843
|
}
|
|
844
|
+
/**
|
|
845
|
+
* indexRef returns an addressable reference to a slice or array element.
|
|
846
|
+
*/
|
|
847
|
+
export function indexRef(collection, index) {
|
|
848
|
+
if (collection === null || collection === undefined) {
|
|
849
|
+
throw new Error('runtime error: index on nil or undefined collection');
|
|
850
|
+
}
|
|
851
|
+
if (collection instanceof Uint8Array) {
|
|
852
|
+
if (index < 0 || index >= collection.length) {
|
|
853
|
+
throw new Error(`runtime error: index out of range [${index}] with length ${collection.length}`);
|
|
854
|
+
}
|
|
855
|
+
return {
|
|
856
|
+
get value() {
|
|
857
|
+
return collection[index];
|
|
858
|
+
},
|
|
859
|
+
set value(value) {
|
|
860
|
+
collection[index] = value;
|
|
861
|
+
},
|
|
862
|
+
__isVarRef: true,
|
|
863
|
+
__goAddress: () => indexAddress(collection, index),
|
|
864
|
+
};
|
|
865
|
+
}
|
|
866
|
+
if (isComplexSlice(collection)) {
|
|
867
|
+
if (index < 0 || index >= collection.__meta__.length) {
|
|
868
|
+
throw new Error(`runtime error: index out of range [${index}] with length ${collection.__meta__.length}`);
|
|
869
|
+
}
|
|
870
|
+
const backingIndex = collection.__meta__.offset + index;
|
|
871
|
+
return {
|
|
872
|
+
get value() {
|
|
873
|
+
return collection.__meta__.backing[backingIndex];
|
|
874
|
+
},
|
|
875
|
+
set value(value) {
|
|
876
|
+
collection[index] = value;
|
|
877
|
+
},
|
|
878
|
+
__isVarRef: true,
|
|
879
|
+
__goAddress: () => indexAddress(collection, index),
|
|
880
|
+
};
|
|
881
|
+
}
|
|
882
|
+
if (Array.isArray(collection)) {
|
|
883
|
+
if (index < 0 || index >= collection.length) {
|
|
884
|
+
throw new Error(`runtime error: index out of range [${index}] with length ${collection.length}`);
|
|
885
|
+
}
|
|
886
|
+
return {
|
|
887
|
+
get value() {
|
|
888
|
+
return collection[index];
|
|
889
|
+
},
|
|
890
|
+
set value(value) {
|
|
891
|
+
collection[index] = value;
|
|
892
|
+
},
|
|
893
|
+
__isVarRef: true,
|
|
894
|
+
__goAddress: () => indexAddress(collection, index),
|
|
895
|
+
};
|
|
896
|
+
}
|
|
897
|
+
throw new Error('runtime error: index on unsupported type');
|
|
898
|
+
}
|
|
899
|
+
/**
|
|
900
|
+
* indexAddress returns a stable synthetic address for an addressable slice or
|
|
901
|
+
* array element.
|
|
902
|
+
*/
|
|
903
|
+
export function indexAddress(collection, index) {
|
|
904
|
+
if (collection === null || collection === undefined) {
|
|
905
|
+
throw new Error('runtime error: index on nil or undefined collection');
|
|
906
|
+
}
|
|
907
|
+
let backing;
|
|
908
|
+
let backingIndex;
|
|
909
|
+
let length;
|
|
910
|
+
if (collection instanceof Uint8Array) {
|
|
911
|
+
backing = collection.buffer;
|
|
912
|
+
backingIndex = collection.byteOffset + index;
|
|
913
|
+
length = collection.length;
|
|
914
|
+
}
|
|
915
|
+
else if (isComplexSlice(collection)) {
|
|
916
|
+
backing = collection.__meta__.backing;
|
|
917
|
+
backingIndex = collection.__meta__.offset + index;
|
|
918
|
+
length = collection.__meta__.length;
|
|
919
|
+
}
|
|
920
|
+
else if (Array.isArray(collection)) {
|
|
921
|
+
backing = collection;
|
|
922
|
+
backingIndex = index;
|
|
923
|
+
length = collection.length;
|
|
924
|
+
}
|
|
925
|
+
else {
|
|
926
|
+
throw new Error('runtime error: index on unsupported type');
|
|
927
|
+
}
|
|
928
|
+
if (index < 0 || index >= length) {
|
|
929
|
+
throw new Error(`runtime error: index out of range [${index}] with length ${length}`);
|
|
930
|
+
}
|
|
931
|
+
let base = addressBases.get(backing);
|
|
932
|
+
if (base === undefined) {
|
|
933
|
+
base = nextAddressBase * addressStride;
|
|
934
|
+
nextAddressBase++;
|
|
935
|
+
addressBases.set(backing, base);
|
|
936
|
+
}
|
|
937
|
+
return base + backingIndex;
|
|
938
|
+
}
|
|
797
939
|
/**
|
|
798
940
|
* Converts a string to an array of Unicode code points (runes).
|
|
799
941
|
* @param str The input string.
|
|
@@ -802,6 +944,21 @@ export function index(collection, index) {
|
|
|
802
944
|
export const stringToRunes = (str) => {
|
|
803
945
|
return Array.from(str).map((c) => c.codePointAt(0) || 0);
|
|
804
946
|
};
|
|
947
|
+
/**
|
|
948
|
+
* Returns Go range pairs for a string: UTF-8 byte offset and rune value.
|
|
949
|
+
* @param str The input string.
|
|
950
|
+
* @returns Index/rune pairs matching Go's `for i, r := range str`.
|
|
951
|
+
*/
|
|
952
|
+
export const rangeString = (str) => {
|
|
953
|
+
const encoder = new TextEncoder();
|
|
954
|
+
const pairs = [];
|
|
955
|
+
let offset = 0;
|
|
956
|
+
for (const char of str) {
|
|
957
|
+
pairs.push([offset, char.codePointAt(0) || 0]);
|
|
958
|
+
offset += encoder.encode(char).length;
|
|
959
|
+
}
|
|
960
|
+
return pairs;
|
|
961
|
+
};
|
|
805
962
|
/**
|
|
806
963
|
* Converts a single-character string to its Unicode code point (rune).
|
|
807
964
|
* Used for readable rune constants like $.stringToRune('/') instead of 47.
|
|
@@ -922,9 +1079,8 @@ export const bytesToString = (bytes) => {
|
|
|
922
1079
|
// If it's already a string, just return it
|
|
923
1080
|
if (typeof bytes === 'string')
|
|
924
1081
|
return bytes;
|
|
925
|
-
if (bytes instanceof Uint8Array)
|
|
926
|
-
return
|
|
927
|
-
}
|
|
1082
|
+
if (bytes instanceof Uint8Array)
|
|
1083
|
+
return decodeGoStringBytes(bytes);
|
|
928
1084
|
// Ensure we get a plain number[] for Uint8Array.from
|
|
929
1085
|
let byteArray;
|
|
930
1086
|
if (isComplexSlice(bytes)) {
|
|
@@ -935,8 +1091,24 @@ export const bytesToString = (bytes) => {
|
|
|
935
1091
|
// For simple T[] slices
|
|
936
1092
|
byteArray = bytes;
|
|
937
1093
|
}
|
|
938
|
-
return
|
|
1094
|
+
return decodeGoStringBytes(Uint8Array.from(byteArray));
|
|
939
1095
|
};
|
|
1096
|
+
function decodeGoStringBytes(bytes) {
|
|
1097
|
+
try {
|
|
1098
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
1099
|
+
}
|
|
1100
|
+
catch {
|
|
1101
|
+
return bytesToBinaryString(bytes);
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
function bytesToBinaryString(bytes) {
|
|
1105
|
+
const chunkSize = 0x8000;
|
|
1106
|
+
let out = '';
|
|
1107
|
+
for (let i = 0; i < bytes.length; i += chunkSize) {
|
|
1108
|
+
out += String.fromCharCode(...bytes.subarray(i, i + chunkSize));
|
|
1109
|
+
}
|
|
1110
|
+
return out;
|
|
1111
|
+
}
|
|
940
1112
|
/**
|
|
941
1113
|
* Converts a string to a Uint8Array (byte slice).
|
|
942
1114
|
* @param s The input string.
|