goscript 0.0.84 → 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 -243
- package/cmd/goscript/cmd-test.go +193 -0
- package/cmd/goscript/cmd-test_test.go +76 -0
- package/cmd/goscript/cmd_compile.go +70 -69
- package/cmd/goscript/cmd_compile_test.go +79 -0
- package/cmd/goscript/main.go +11 -5
- package/compiler/build-flags.go +38 -0
- package/compiler/compile-request.go +220 -0
- package/compiler/compiler.go +16 -1336
- package/compiler/compliance_test.go +188 -0
- package/compiler/config.go +6 -13
- package/compiler/diagnostic.go +70 -0
- 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 +28 -28
- package/compiler/index.ts +40 -72
- package/compiler/lowered-program.go +184 -0
- package/compiler/lowering.go +8072 -0
- package/compiler/override-facts.go +307 -0
- package/compiler/override-registry.go +283 -0
- package/compiler/override-registry_test.go +254 -0
- package/compiler/package-graph.go +254 -0
- package/compiler/package-graph_test.go +316 -0
- 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/result.go +13 -0
- package/compiler/runtime-contract.go +439 -0
- package/compiler/runtime-contract_test.go +104 -0
- package/compiler/semantic-model-types.go +113 -0
- package/compiler/semantic-model.go +1422 -0
- package/compiler/semantic-model_test.go +471 -0
- package/compiler/service.go +133 -0
- package/compiler/skeleton_test.go +1775 -0
- 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 +1040 -0
- package/compiler/wasm/compile.go +2 -3
- package/compiler/wasm/compile_test.go +79 -0
- package/compiler/wasm_api.go +140 -124
- package/dist/compiler/index.d.ts +1 -3
- package/dist/compiler/index.js +31 -55
- package/dist/compiler/index.js.map +1 -1
- package/dist/gs/builtin/builtin.d.ts +33 -2
- package/dist/gs/builtin/builtin.js +217 -6
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +11 -3
- package/dist/gs/builtin/channel.js +12 -0
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/hostio.d.ts +15 -1
- package/dist/gs/builtin/hostio.js +134 -49
- package/dist/gs/builtin/hostio.js.map +1 -1
- package/dist/gs/builtin/index.d.ts +1 -0
- package/dist/gs/builtin/index.js +1 -0
- package/dist/gs/builtin/index.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +23 -3
- package/dist/gs/builtin/slice.js +216 -44
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +16 -2
- package/dist/gs/builtin/type.js +134 -21
- 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/bytes.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/crypto/rand/index.d.ts +5 -0
- package/dist/gs/crypto/rand/index.js +77 -0
- package/dist/gs/crypto/rand/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 +4 -0
- package/dist/gs/encoding/json/index.js +178 -0
- package/dist/gs/encoding/json/index.js.map +1 -0
- 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 +36 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +212 -2
- 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/aperturerobotics/wasivm/wazero/kernel/runtime/browser/browser.js.map +1 -1
- 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/github.com/pkg/errors/errors.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/stack.js.map +1 -1
- 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 +42 -0
- package/dist/gs/go/scanner/index.js +155 -0
- package/dist/gs/go/scanner/index.js.map +1 -0
- package/dist/gs/go/token/index.d.ts +187 -0
- package/dist/gs/go/token/index.js +578 -0
- package/dist/gs/go/token/index.js.map +1 -0
- 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/fs.js.map +1 -1
- 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/readdir.js.map +1 -1
- package/dist/gs/io/fs/readfile.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/stat.js.map +1 -1
- package/dist/gs/io/fs/sub.js.map +1 -1
- 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/error.gs.js +2 -4
- package/dist/gs/os/error.gs.js.map +1 -1
- package/dist/gs/os/exec.gs.js.map +1 -1
- package/dist/gs/os/exec_posix.gs.js.map +1 -1
- package/dist/gs/os/rawconn_js.gs.js.map +1 -1
- package/dist/gs/os/root_js.gs.js.map +1 -1
- package/dist/gs/os/tempfile.gs.js +66 -9
- package/dist/gs/os/tempfile.gs.js.map +1 -1
- package/dist/gs/os/types.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.js +9 -9
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/dist/gs/os/types_unix.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/match.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 +3 -3
- package/dist/gs/reflect/index.js +2 -2
- 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 +9 -5
- package/dist/gs/reflect/type.js +233 -21
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/reflect/types.js.map +1 -1
- package/dist/gs/reflect/visiblefields.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/strconv/atoi.gs.js.map +1 -1
- package/dist/gs/strconv/quote.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/strings/reader.js.map +1 -1
- package/dist/gs/strings/replace.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/atomic/value.gs.js.map +1 -1
- package/dist/gs/sync/sync.d.ts +3 -0
- package/dist/gs/sync/sync.js +39 -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.mod +2 -2
- package/go.sum +9 -0
- package/gs/builtin/builtin.ts +266 -8
- package/gs/builtin/channel.ts +22 -0
- package/gs/builtin/hostio.test.ts +177 -0
- package/gs/builtin/hostio.ts +171 -56
- package/gs/builtin/index.ts +1 -0
- package/gs/builtin/runtime-contract.test.ts +356 -0
- package/gs/builtin/slice.ts +259 -50
- package/gs/builtin/type.ts +188 -30
- 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/crypto/rand/index.test.ts +32 -0
- package/gs/crypto/rand/index.ts +90 -0
- package/gs/crypto/rand/meta.json +5 -0
- package/gs/embed/index.ts +20 -0
- package/gs/embed/meta.json +5 -0
- package/gs/encoding/json/index.test.ts +79 -0
- package/gs/encoding/json/index.ts +210 -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 +95 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +300 -2
- 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/aperturerobotics/wasivm/wazero/kernel/runtime/browser/meta.json +3 -1
- 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 +72 -0
- package/gs/go/scanner/index.ts +204 -0
- package/gs/go/token/index.test.ts +67 -0
- package/gs/go/token/index.ts +686 -0
- 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/file_unix_js.test.ts +50 -0
- package/gs/os/meta.json +1 -2
- package/gs/os/tempfile.gs.test.ts +85 -0
- package/gs/os/tempfile.gs.ts +71 -11
- package/gs/os/types_js.gs.ts +11 -11
- 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 +2 -1
- package/gs/reflect/map.test.ts +19 -0
- package/gs/reflect/map.ts +4 -0
- package/gs/reflect/type.ts +298 -29
- package/gs/reflect/typefor.test.ts +75 -0
- 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 +36 -0
- package/gs/sync/sync.ts +39 -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 +14 -13
- package/compiler/analysis.go +0 -3475
- package/compiler/analysis_test.go +0 -338
- package/compiler/assignment.go +0 -580
- package/compiler/builtin_test.go +0 -92
- package/compiler/code-writer.go +0 -115
- package/compiler/compiler_test.go +0 -149
- package/compiler/composite-lit.go +0 -779
- package/compiler/config_test.go +0 -62
- package/compiler/constraint.go +0 -86
- package/compiler/decl.go +0 -801
- package/compiler/expr-call-async.go +0 -188
- package/compiler/expr-call-builtins.go +0 -208
- package/compiler/expr-call-helpers.go +0 -382
- package/compiler/expr-call-make.go +0 -318
- package/compiler/expr-call-type-conversion.go +0 -520
- package/compiler/expr-call.go +0 -413
- package/compiler/expr-selector.go +0 -343
- package/compiler/expr-star.go +0 -82
- package/compiler/expr-type.go +0 -442
- package/compiler/expr-value.go +0 -89
- package/compiler/expr.go +0 -773
- package/compiler/field.go +0 -183
- package/compiler/gs_dependencies_test.go +0 -298
- package/compiler/lit.go +0 -322
- package/compiler/output.go +0 -72
- package/compiler/primitive.go +0 -149
- package/compiler/protobuf.go +0 -697
- package/compiler/sanitize.go +0 -100
- package/compiler/spec-struct.go +0 -995
- package/compiler/spec-value.go +0 -540
- package/compiler/spec.go +0 -725
- package/compiler/stmt-assign.go +0 -664
- package/compiler/stmt-for.go +0 -266
- package/compiler/stmt-range.go +0 -475
- package/compiler/stmt-select.go +0 -262
- package/compiler/stmt-type-switch.go +0 -147
- package/compiler/stmt.go +0 -1308
- package/compiler/type-assert.go +0 -386
- package/compiler/type-info.go +0 -156
- package/compiler/type-utils.go +0 -207
- package/compiler/type.go +0 -892
package/compiler/index.ts
CHANGED
|
@@ -1,95 +1,63 @@
|
|
|
1
|
-
import * as path from
|
|
2
|
-
import { dirname } from
|
|
3
|
-
import { fileURLToPath } from
|
|
4
|
-
import {
|
|
5
|
-
import { promisify } from
|
|
1
|
+
import * as path from 'node:path'
|
|
2
|
+
import { dirname } from 'node:path'
|
|
3
|
+
import { fileURLToPath } from 'node:url'
|
|
4
|
+
import { execFile } from 'node:child_process'
|
|
5
|
+
import { promisify } from 'node:util'
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const __dirname = dirname(__filename)
|
|
10
|
-
const projectRoot = dirname(__dirname)
|
|
7
|
+
const execFileAsync = promisify(execFile)
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
9
|
+
const __dirname = dirname(__filename)
|
|
10
|
+
const projectRoot = dirname(__dirname)
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Configuration options for the GoScript compiler.
|
|
14
14
|
*/
|
|
15
15
|
export interface CompileConfig {
|
|
16
16
|
/** The Go package path or pattern to compile. */
|
|
17
|
-
pkg: string
|
|
17
|
+
pkg: string
|
|
18
18
|
/** The output directory for the generated TypeScript files. Defaults to './output'. */
|
|
19
|
-
output?: string
|
|
19
|
+
output?: string
|
|
20
20
|
/** The working directory for the compiler. Defaults to the current working directory. */
|
|
21
|
-
dir?: string
|
|
22
|
-
/** The path to the goscript executable. Defaults to
|
|
23
|
-
goscriptPath?: string
|
|
21
|
+
dir?: string
|
|
22
|
+
/** The path to the goscript executable. Defaults to `go run ./cmd/goscript`. */
|
|
23
|
+
goscriptPath?: string
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Compiles a Go package to TypeScript using the goscript compiler.
|
|
28
|
-
* @param config - The compilation configuration.
|
|
29
|
-
* @returns A promise that resolves when compilation is complete, or rejects on error.
|
|
30
28
|
*/
|
|
31
29
|
export async function compile(config: CompileConfig): Promise<void> {
|
|
32
30
|
if (!config.pkg) {
|
|
33
|
-
throw new Error(
|
|
31
|
+
throw new Error('Package path (pkg) must be specified.')
|
|
34
32
|
}
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
config.goscriptPath ??
|
|
39
|
-
`go run "${path.join(projectRoot, "./cmd/goscript")}"`;
|
|
34
|
+
const cwd = config.dir ? path.resolve(config.dir) : process.cwd()
|
|
35
|
+
const output = config.output ? path.resolve(config.output) : './output'
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
args.push("--dir", `"${path.resolve(config.dir)}"`);
|
|
37
|
+
if (config.goscriptPath) {
|
|
38
|
+
await execFileAsync(config.goscriptPath, [
|
|
39
|
+
'compile',
|
|
40
|
+
'--package',
|
|
41
|
+
config.pkg,
|
|
42
|
+
'--output',
|
|
43
|
+
output,
|
|
44
|
+
'--dir',
|
|
45
|
+
cwd,
|
|
46
|
+
])
|
|
47
|
+
return
|
|
53
48
|
}
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
console.info(`GoScript stderr:\n${stderr}`);
|
|
67
|
-
}
|
|
68
|
-
} catch (error: unknown) {
|
|
69
|
-
const compileErr =
|
|
70
|
-
error instanceof Error ? error : new Error(String(error));
|
|
71
|
-
|
|
72
|
-
console.error(`GoScript compilation failed: ${compileErr.message}`);
|
|
73
|
-
if (
|
|
74
|
-
typeof error === "object" &&
|
|
75
|
-
error !== null &&
|
|
76
|
-
"stderr" in error &&
|
|
77
|
-
typeof error.stderr === "string"
|
|
78
|
-
) {
|
|
79
|
-
console.error(`GoScript stderr:\n${error.stderr}`);
|
|
80
|
-
}
|
|
81
|
-
if (
|
|
82
|
-
typeof error === "object" &&
|
|
83
|
-
error !== null &&
|
|
84
|
-
"stdout" in error &&
|
|
85
|
-
typeof error.stdout === "string"
|
|
86
|
-
) {
|
|
87
|
-
console.error(`GoScript stdout:\n${error.stdout}`);
|
|
88
|
-
}
|
|
89
|
-
throw new Error(`GoScript compilation failed: ${compileErr.message}`, {
|
|
90
|
-
cause: error,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
50
|
+
await execFileAsync('go', [
|
|
51
|
+
'run',
|
|
52
|
+
path.join(projectRoot, 'cmd/goscript'),
|
|
53
|
+
'compile',
|
|
54
|
+
'--package',
|
|
55
|
+
config.pkg,
|
|
56
|
+
'--output',
|
|
57
|
+
output,
|
|
58
|
+
'--dir',
|
|
59
|
+
cwd,
|
|
60
|
+
])
|
|
93
61
|
}
|
|
94
62
|
|
|
95
63
|
/**
|
|
@@ -97,4 +65,4 @@ export async function compile(config: CompileConfig): Promise<void> {
|
|
|
97
65
|
*/
|
|
98
66
|
export default {
|
|
99
67
|
compile,
|
|
100
|
-
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
package compiler
|
|
2
|
+
|
|
3
|
+
// LoweredProgram is the compiler-owned IR consumed by TypeScript emission.
|
|
4
|
+
type LoweredProgram struct {
|
|
5
|
+
packages []*loweredPackage
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
type loweredPackage struct {
|
|
9
|
+
pkgPath string
|
|
10
|
+
name string
|
|
11
|
+
files []*loweredFile
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type loweredFile struct {
|
|
15
|
+
sourcePath string
|
|
16
|
+
outputName string
|
|
17
|
+
imports []loweredImport
|
|
18
|
+
decls []loweredDecl
|
|
19
|
+
exports []string
|
|
20
|
+
typeExports []string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
type loweredImport struct {
|
|
24
|
+
alias string
|
|
25
|
+
source string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
type loweredExpr struct {
|
|
29
|
+
text string
|
|
30
|
+
async bool
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type loweredNamedStructConversionExpr struct {
|
|
34
|
+
value loweredExpr
|
|
35
|
+
target string
|
|
36
|
+
temp string
|
|
37
|
+
helper string
|
|
38
|
+
fields []loweredConversionField
|
|
39
|
+
castOnly bool
|
|
40
|
+
castTarget string
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type loweredConversionField struct {
|
|
44
|
+
name string
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
type loweredDecl struct {
|
|
48
|
+
code string
|
|
49
|
+
indexExport string
|
|
50
|
+
typeIndexExport string
|
|
51
|
+
function *loweredFunction
|
|
52
|
+
structType *loweredStruct
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
type loweredStruct struct {
|
|
56
|
+
exported bool
|
|
57
|
+
indexExported bool
|
|
58
|
+
name string
|
|
59
|
+
typeName string
|
|
60
|
+
cloneMethod string
|
|
61
|
+
fields []loweredStructField
|
|
62
|
+
methods []loweredFunction
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
type loweredStructField struct {
|
|
66
|
+
name string
|
|
67
|
+
runtimeName string
|
|
68
|
+
typ string
|
|
69
|
+
zero string
|
|
70
|
+
runtimeType string
|
|
71
|
+
doc string
|
|
72
|
+
tag string
|
|
73
|
+
structValue bool
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
type loweredFunction struct {
|
|
77
|
+
exported bool
|
|
78
|
+
indexExported bool
|
|
79
|
+
init bool
|
|
80
|
+
async bool
|
|
81
|
+
name string
|
|
82
|
+
runtimeName string
|
|
83
|
+
receiverAlias string
|
|
84
|
+
receiverType string
|
|
85
|
+
receiverValue string
|
|
86
|
+
receiverMutable bool
|
|
87
|
+
params []loweredParam
|
|
88
|
+
paramBindings []loweredStmt
|
|
89
|
+
namedResults []loweredNamedResult
|
|
90
|
+
result string
|
|
91
|
+
body []loweredStmt
|
|
92
|
+
deferState *loweredDeferState
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
type loweredParam struct {
|
|
96
|
+
name string
|
|
97
|
+
typ string
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
type loweredNamedResult struct {
|
|
101
|
+
name string
|
|
102
|
+
typ string
|
|
103
|
+
zero string
|
|
104
|
+
returnExpr string
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
type loweredStmt struct {
|
|
108
|
+
text string
|
|
109
|
+
leading []string
|
|
110
|
+
hasBlock bool
|
|
111
|
+
children []loweredStmt
|
|
112
|
+
elseBody []loweredStmt
|
|
113
|
+
rangeFunc *loweredRangeFunc
|
|
114
|
+
switchStmt *loweredSwitch
|
|
115
|
+
selectStmt *loweredSelect
|
|
116
|
+
typeSwitch *loweredTypeSwitch
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
type loweredRangeFunc struct {
|
|
120
|
+
value string
|
|
121
|
+
params []string
|
|
122
|
+
body []loweredStmt
|
|
123
|
+
async bool
|
|
124
|
+
returnBranch *loweredRangeBranch
|
|
125
|
+
parentBranch *loweredRangeBranch
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
type loweredRangeBranch struct {
|
|
129
|
+
hasReturn string
|
|
130
|
+
value string
|
|
131
|
+
resultType string
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
type loweredDeferState struct {
|
|
135
|
+
used bool
|
|
136
|
+
async bool
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
type loweredSwitch struct {
|
|
140
|
+
value string
|
|
141
|
+
cases []loweredSwitchCase
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
type loweredSwitchCase struct {
|
|
145
|
+
defaultCase bool
|
|
146
|
+
values []string
|
|
147
|
+
body []loweredStmt
|
|
148
|
+
fallsThrough bool
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
type loweredSelect struct {
|
|
152
|
+
hasReturn string
|
|
153
|
+
value string
|
|
154
|
+
resultType string
|
|
155
|
+
cases []loweredSelectCase
|
|
156
|
+
hasDefault bool
|
|
157
|
+
returns bool
|
|
158
|
+
external bool
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
type loweredSelectCase struct {
|
|
162
|
+
id int
|
|
163
|
+
isSend bool
|
|
164
|
+
channel string
|
|
165
|
+
value string
|
|
166
|
+
prelude []loweredStmt
|
|
167
|
+
body []loweredStmt
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
type loweredTypeSwitch struct {
|
|
171
|
+
value string
|
|
172
|
+
varName string
|
|
173
|
+
varRef bool
|
|
174
|
+
cases []loweredTypeSwitchCase
|
|
175
|
+
defaultBody []loweredStmt
|
|
176
|
+
defaultRef bool
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
type loweredTypeSwitchCase struct {
|
|
180
|
+
types []string
|
|
181
|
+
tsTypes []string
|
|
182
|
+
varRef bool
|
|
183
|
+
body []loweredStmt
|
|
184
|
+
}
|