goscript 0.2.1 → 0.2.2
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/compiler/gotest/runner.go +98 -0
- package/compiler/gotest/runner_test.go +45 -0
- package/compiler/lowering.go +4 -2
- package/compiler/protobuf-ts-binding.go +1 -1
- package/compiler/protobuf-ts-binding_test.go +109 -0
- package/compiler/skeleton_test.go +4 -1
- package/dist/gs/builtin/hostio.js +2 -2
- package/dist/gs/builtin/hostio.js.map +1 -1
- package/dist/gs/crypto/aes/index.d.ts +15 -0
- package/dist/gs/crypto/aes/index.js +57 -0
- package/dist/gs/crypto/aes/index.js.map +1 -0
- package/dist/gs/crypto/cipher/index.d.ts +41 -0
- package/dist/gs/crypto/cipher/index.js +255 -0
- package/dist/gs/crypto/cipher/index.js.map +1 -0
- package/dist/gs/golang.org/x/crypto/chacha20poly1305/index.d.ts +31 -0
- package/dist/gs/golang.org/x/crypto/chacha20poly1305/index.js +117 -0
- package/dist/gs/golang.org/x/crypto/chacha20poly1305/index.js.map +1 -0
- package/dist/gs/io/io.js +18 -2
- package/dist/gs/io/io.js.map +1 -1
- package/dist/gs/runtime/debug/index.js +2 -1
- package/dist/gs/runtime/debug/index.js.map +1 -1
- package/go.mod +2 -2
- package/go.sum +2 -0
- package/gs/builtin/hostio.test.ts +8 -3
- package/gs/builtin/hostio.ts +2 -4
- package/gs/crypto/aes/index.test.ts +120 -0
- package/gs/crypto/aes/index.ts +76 -0
- package/gs/crypto/cipher/index.ts +345 -0
- package/gs/crypto/cipher/meta.json +6 -0
- package/gs/golang.org/x/crypto/chacha20poly1305/index.test.ts +91 -0
- package/gs/golang.org/x/crypto/chacha20poly1305/index.ts +245 -0
- package/gs/io/io.test.ts +56 -1
- package/gs/io/io.ts +19 -2
- package/gs/runtime/debug/index.test.ts +32 -4
- package/gs/runtime/debug/index.ts +5 -2
- package/package.json +10 -3
|
@@ -141,6 +141,10 @@ func (r *Runner) runPackageTools(
|
|
|
141
141
|
if len(indexes) == 0 {
|
|
142
142
|
return
|
|
143
143
|
}
|
|
144
|
+
if phase := materializeRuntimeModuleShims(req, outputRoots); phase.Failed() {
|
|
145
|
+
markRuntimeFailures(result, indexes, OwnerTestRunner, phase.Error)
|
|
146
|
+
return
|
|
147
|
+
}
|
|
144
148
|
if len(indexes) == 1 {
|
|
145
149
|
r.runPackageTypeCheckAndRuntime(ctx, req, workspace, result, outputRoots, indexes[0])
|
|
146
150
|
return
|
|
@@ -286,6 +290,100 @@ func (r *Runner) runPackageRuntimes(
|
|
|
286
290
|
r.runPackageRuntimesIndividually(ctx, req, workspace, result, outputRoots, indexes)
|
|
287
291
|
}
|
|
288
292
|
|
|
293
|
+
func materializeRuntimeModuleShims(req *normalizedRequest, outputRoots []string) tsworkspace.Result {
|
|
294
|
+
if req.RuntimeBackend != RuntimeBackendBun {
|
|
295
|
+
return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace}
|
|
296
|
+
}
|
|
297
|
+
seen := make(map[string]bool)
|
|
298
|
+
shimRoots := runtimeModuleShimRoots(req, outputRoots)
|
|
299
|
+
for _, outputRoot := range outputRoots {
|
|
300
|
+
if outputRoot == "" {
|
|
301
|
+
continue
|
|
302
|
+
}
|
|
303
|
+
root := filepath.Join(outputRoot, "@goscript")
|
|
304
|
+
if _, err := os.Stat(root); err != nil {
|
|
305
|
+
if os.IsNotExist(err) {
|
|
306
|
+
continue
|
|
307
|
+
}
|
|
308
|
+
return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace, Error: errors.Wrap(err, "stat GoScript runtime output root").Error()}
|
|
309
|
+
}
|
|
310
|
+
err := filepath.WalkDir(root, func(path string, entry os.DirEntry, err error) error {
|
|
311
|
+
if err != nil {
|
|
312
|
+
return err
|
|
313
|
+
}
|
|
314
|
+
if entry.IsDir() || filepath.Ext(path) != ".ts" {
|
|
315
|
+
return nil
|
|
316
|
+
}
|
|
317
|
+
rel, err := filepath.Rel(root, path)
|
|
318
|
+
if err != nil {
|
|
319
|
+
return err
|
|
320
|
+
}
|
|
321
|
+
shimRel := filepath.Join("node_modules", "@goscript", strings.TrimSuffix(rel, ".ts")+".js")
|
|
322
|
+
for _, shimRoot := range shimRoots {
|
|
323
|
+
shimPath := filepath.Join(shimRoot, shimRel)
|
|
324
|
+
seenKey := shimPath
|
|
325
|
+
if seen[seenKey] {
|
|
326
|
+
continue
|
|
327
|
+
}
|
|
328
|
+
seen[seenKey] = true
|
|
329
|
+
shimDir := filepath.Dir(shimPath)
|
|
330
|
+
importPath, err := filepath.Rel(shimDir, path)
|
|
331
|
+
if err != nil {
|
|
332
|
+
return err
|
|
333
|
+
}
|
|
334
|
+
importPath = filepath.ToSlash(importPath)
|
|
335
|
+
if !strings.HasPrefix(importPath, ".") {
|
|
336
|
+
importPath = "./" + importPath
|
|
337
|
+
}
|
|
338
|
+
if err := writeRuntimeModuleShim(shimPath, "export * from "+strconv.Quote(importPath)+"\n"); err != nil {
|
|
339
|
+
return err
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return nil
|
|
343
|
+
})
|
|
344
|
+
if err != nil {
|
|
345
|
+
return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace, Error: errors.Wrap(err, "materialize GoScript runtime module shims").Error()}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
func runtimeModuleShimRoots(req *normalizedRequest, outputRoots []string) []string {
|
|
352
|
+
seen := make(map[string]bool)
|
|
353
|
+
var roots []string
|
|
354
|
+
for _, root := range append([]string{req.WorkDir}, outputRoots...) {
|
|
355
|
+
if root == "" {
|
|
356
|
+
continue
|
|
357
|
+
}
|
|
358
|
+
clean := filepath.Clean(root)
|
|
359
|
+
if seen[clean] {
|
|
360
|
+
continue
|
|
361
|
+
}
|
|
362
|
+
seen[clean] = true
|
|
363
|
+
roots = append(roots, clean)
|
|
364
|
+
}
|
|
365
|
+
return roots
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
func writeRuntimeModuleShim(path string, data string) error {
|
|
369
|
+
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
|
|
370
|
+
return err
|
|
371
|
+
}
|
|
372
|
+
return os.WriteFile(path, []byte(data), 0o644)
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
func markRuntimeFailures(result *Result, indexes []int, owner Owner, message string) {
|
|
376
|
+
for _, idx := range indexes {
|
|
377
|
+
if idx < 0 || idx >= len(result.Packages) {
|
|
378
|
+
continue
|
|
379
|
+
}
|
|
380
|
+
result.Packages[idx].Action = ActionFail
|
|
381
|
+
result.Packages[idx].Owner = owner
|
|
382
|
+
result.Packages[idx].Phases.Runtime = PhaseStatusFail
|
|
383
|
+
result.Packages[idx].Error = message
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
289
387
|
func (r *Runner) runPackageRuntimesIndividually(
|
|
290
388
|
ctx context.Context,
|
|
291
389
|
req *normalizedRequest,
|
|
@@ -1629,6 +1629,51 @@ func TestRenderRuntimeTypeScriptProjectDisablesEmit(t *testing.T) {
|
|
|
1629
1629
|
}
|
|
1630
1630
|
}
|
|
1631
1631
|
|
|
1632
|
+
func TestMaterializeRuntimeModuleShimsReexportsGeneratedTypeScript(t *testing.T) {
|
|
1633
|
+
workDir := t.TempDir()
|
|
1634
|
+
outputRoot := filepath.Join(workDir, "output")
|
|
1635
|
+
for _, name := range []string{
|
|
1636
|
+
"errors/index.ts",
|
|
1637
|
+
"github.com/s4wave/spacewave/core/plugin/space/config.gs.ts",
|
|
1638
|
+
} {
|
|
1639
|
+
path := filepath.Join(outputRoot, "@goscript", filepath.FromSlash(name))
|
|
1640
|
+
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
|
|
1641
|
+
t.Fatalf("create output parent: %v", err)
|
|
1642
|
+
}
|
|
1643
|
+
if err := os.WriteFile(path, []byte("export const value = 1\n"), 0o644); err != nil {
|
|
1644
|
+
t.Fatalf("write output file: %v", err)
|
|
1645
|
+
}
|
|
1646
|
+
}
|
|
1647
|
+
|
|
1648
|
+
req := &normalizedRequest{
|
|
1649
|
+
WorkDir: workDir,
|
|
1650
|
+
RuntimeBackend: RuntimeBackendBun,
|
|
1651
|
+
}
|
|
1652
|
+
phase := materializeRuntimeModuleShims(req, []string{outputRoot})
|
|
1653
|
+
if phase.Failed() {
|
|
1654
|
+
t.Fatalf("materialize shims: %s", phase.Error)
|
|
1655
|
+
}
|
|
1656
|
+
for _, root := range []string{workDir, outputRoot} {
|
|
1657
|
+
for _, name := range []string{
|
|
1658
|
+
"errors/index.js",
|
|
1659
|
+
"github.com/s4wave/spacewave/core/plugin/space/config.gs.js",
|
|
1660
|
+
} {
|
|
1661
|
+
path := filepath.Join(root, "node_modules", "@goscript", filepath.FromSlash(name))
|
|
1662
|
+
data, err := os.ReadFile(path)
|
|
1663
|
+
if err != nil {
|
|
1664
|
+
t.Fatalf("read shim %s: %v", name, err)
|
|
1665
|
+
}
|
|
1666
|
+
text := string(data)
|
|
1667
|
+
if !strings.Contains(text, ".ts\"") {
|
|
1668
|
+
t.Fatalf("shim should re-export generated TypeScript: %s", text)
|
|
1669
|
+
}
|
|
1670
|
+
if strings.Contains(text, workDir) {
|
|
1671
|
+
t.Fatalf("shim should use a portable relative import, got: %s", text)
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1632
1677
|
func TestRenderTypeScriptProjectsCanUseIncrementalBuildInfo(t *testing.T) {
|
|
1633
1678
|
req := &normalizedRequest{
|
|
1634
1679
|
WorkDir: "/work",
|
package/compiler/lowering.go
CHANGED
|
@@ -4554,6 +4554,8 @@ func shortDeclNeedsTypeAnnotation(typ types.Type) bool {
|
|
|
4554
4554
|
return true
|
|
4555
4555
|
case *types.Slice:
|
|
4556
4556
|
return true
|
|
4557
|
+
case *types.Chan:
|
|
4558
|
+
return true
|
|
4557
4559
|
default:
|
|
4558
4560
|
return false
|
|
4559
4561
|
}
|
|
@@ -8688,7 +8690,7 @@ func (o *LoweringOwner) lowerPointerValueExpr(ctx lowerFileContext, expr ast.Exp
|
|
|
8688
8690
|
return value, diagnostics
|
|
8689
8691
|
}
|
|
8690
8692
|
if ref, diagnostics, ok := o.lowerUnsafeArrayPointerRefExpr(ctx, expr); ok {
|
|
8691
|
-
return ref + "
|
|
8693
|
+
return ref + "!.value", diagnostics
|
|
8692
8694
|
}
|
|
8693
8695
|
if ref, diagnostics, ok := o.lowerUnsafePointerRefExpr(ctx, expr); ok {
|
|
8694
8696
|
return ref + ".value", diagnostics
|
|
@@ -8925,7 +8927,7 @@ func sameLoweredSourceExpr(ctx lowerFileContext, left ast.Expr, right ast.Expr)
|
|
|
8925
8927
|
|
|
8926
8928
|
func (o *LoweringOwner) lowerPointerStorageExpr(ctx lowerFileContext, expr ast.Expr) (string, []Diagnostic) {
|
|
8927
8929
|
if ref, diagnostics, ok := o.lowerUnsafeArrayPointerRefExpr(ctx, expr); ok {
|
|
8928
|
-
return ref + "
|
|
8930
|
+
return ref + "!.value", diagnostics
|
|
8929
8931
|
}
|
|
8930
8932
|
if ref, diagnostics, ok := o.lowerUnsafePointerRefExpr(ctx, expr); ok {
|
|
8931
8933
|
return ref + ".value", diagnostics
|
|
@@ -194,7 +194,7 @@ func protobufTypeScriptBindingExportedConsts(tsPath string) map[string]bool {
|
|
|
194
194
|
return nil
|
|
195
195
|
}
|
|
196
196
|
exports := make(map[string]bool)
|
|
197
|
-
for
|
|
197
|
+
for line := range strings.SplitSeq(string(data), "\n") {
|
|
198
198
|
line = strings.TrimSpace(line)
|
|
199
199
|
if !strings.HasPrefix(line, "export const ") {
|
|
200
200
|
continue
|
|
@@ -80,6 +80,115 @@ func NewFoo() Foo {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
func TestProtobufTypeScriptBindingRewritesGeneratedMethodsToBoundHelpers(t *testing.T) {
|
|
84
|
+
dir := t.TempDir()
|
|
85
|
+
writeTestFile(t, dir, "go.mod", `module example.test/protobufbindingmethods
|
|
86
|
+
|
|
87
|
+
go 1.25
|
|
88
|
+
|
|
89
|
+
require github.com/aperturerobotics/protobuf-go-lite v0.0.0
|
|
90
|
+
|
|
91
|
+
replace github.com/aperturerobotics/protobuf-go-lite => ./protobuf-go-lite
|
|
92
|
+
`)
|
|
93
|
+
writeTestFile(t, dir, "protobuf-go-lite/go.mod", `module github.com/aperturerobotics/protobuf-go-lite
|
|
94
|
+
|
|
95
|
+
go 1.25
|
|
96
|
+
`)
|
|
97
|
+
writeTestFile(t, dir, "protobuf-go-lite/protobuf-go-lite.go", `package protobuf_go_lite
|
|
98
|
+
|
|
99
|
+
type CloneMessage interface {
|
|
100
|
+
CloneMessageVT() CloneMessage
|
|
101
|
+
}
|
|
102
|
+
`)
|
|
103
|
+
writeTestFile(t, dir, "foo.pb.go", `package protobufbindingmethods
|
|
104
|
+
|
|
105
|
+
import protobuf_go_lite "github.com/aperturerobotics/protobuf-go-lite"
|
|
106
|
+
|
|
107
|
+
type Foo struct {
|
|
108
|
+
Name string
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
func (x *Foo) CloneMessageVT() protobuf_go_lite.CloneMessage {
|
|
112
|
+
println("inline CloneMessageVT marker")
|
|
113
|
+
return x.CloneVT()
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
func (x *Foo) CloneVT() *Foo {
|
|
117
|
+
println("inline CloneVT marker")
|
|
118
|
+
return &Foo{Name: x.Name}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
func (x *Foo) EqualVT(other *Foo) bool {
|
|
122
|
+
println("inline EqualVT marker")
|
|
123
|
+
return other != nil && x.Name == other.Name
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
func (x *Foo) MarshalVT() ([]byte, error) {
|
|
127
|
+
println("inline MarshalVT marker")
|
|
128
|
+
return []byte(x.Name), nil
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
func (x *Foo) MarshalToSizedBufferVT(data []byte) (int, error) {
|
|
132
|
+
println("inline MarshalToSizedBufferVT marker")
|
|
133
|
+
return copy(data, x.Name), nil
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
func (x *Foo) SizeVT() int {
|
|
137
|
+
println("inline SizeVT marker")
|
|
138
|
+
return len(x.Name)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
func (x *Foo) UnmarshalVT(data []byte) error {
|
|
142
|
+
println("inline UnmarshalVT marker")
|
|
143
|
+
x.Name = string(data)
|
|
144
|
+
return nil
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
func (x *Foo) Reset() {
|
|
148
|
+
println("inline Reset marker")
|
|
149
|
+
*x = Foo{}
|
|
150
|
+
}
|
|
151
|
+
`)
|
|
152
|
+
writeTestFile(t, dir, "foo.pb.ts", `export interface Foo {
|
|
153
|
+
name?: string
|
|
154
|
+
}
|
|
155
|
+
export const Foo = {} as any
|
|
156
|
+
`)
|
|
157
|
+
|
|
158
|
+
out := filepath.Join(dir, "out")
|
|
159
|
+
comp, err := NewCompiler(&Config{
|
|
160
|
+
Dir: dir,
|
|
161
|
+
OutputPath: out,
|
|
162
|
+
ProtobufTypeScriptBinding: true,
|
|
163
|
+
}, nil, nil)
|
|
164
|
+
if err != nil {
|
|
165
|
+
t.Fatal(err)
|
|
166
|
+
}
|
|
167
|
+
if _, err := comp.CompilePackages(context.Background(), "."); err != nil {
|
|
168
|
+
t.Fatalf("compile with protobuf TypeScript binding: %v", err)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
binding := readTestFile(t, filepath.Join(out, "@goscript", "example.test", "protobufbindingmethods", "foo.pb.ts"))
|
|
172
|
+
wantSnippets := []string{
|
|
173
|
+
`$.interfaceValue<protobuf_go_lite.CloneMessage | null>(protobuf_go_lite.CloneBoundMessage(Foo, this) as any, "*protobufbindingmethods.Foo")`,
|
|
174
|
+
`return protobuf_go_lite.CloneBoundMessage(Foo, this) as any`,
|
|
175
|
+
`protobuf_go_lite.EqualBoundMessage(Foo, this, other)`,
|
|
176
|
+
`protobuf_go_lite.MarshalBoundMessageVT(Foo, this)`,
|
|
177
|
+
`protobuf_go_lite.MarshalBoundMessageToSizedBufferVT(Foo, this, data)`,
|
|
178
|
+
`protobuf_go_lite.SizeBoundMessageVT(Foo, this)`,
|
|
179
|
+
`protobuf_go_lite.UnmarshalBoundMessageVT(Foo, this, data)`,
|
|
180
|
+
`$.assignStruct($.pointerValue<Foo>(this), $.markAsStructValue(new Foo()))`,
|
|
181
|
+
}
|
|
182
|
+
for _, snippet := range wantSnippets {
|
|
183
|
+
if !strings.Contains(binding, snippet) {
|
|
184
|
+
t.Fatalf("binding file should rewrite generated methods through %q, got:\n%s", snippet, binding)
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if strings.Contains(binding, "inline ") {
|
|
188
|
+
t.Fatalf("binding file should not preserve inline generated method bodies, got:\n%s", binding)
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
83
192
|
func TestProtobufTypeScriptBindingEmitsMetadataForPreservedOneofFiles(t *testing.T) {
|
|
84
193
|
dir := t.TempDir()
|
|
85
194
|
writeTestFile(t, dir, "go.mod", "module example.test/oneofpb\n\ngo 1.25\n")
|
|
@@ -1541,6 +1541,9 @@ func TestCompilePackagesLowersUnsafeBytePointerArithmetic(t *testing.T) {
|
|
|
1541
1541
|
if !strings.Contains(text, "$.arrayPointerFromIndexRef<number>($.indexRef($.pointerValue<number[]>(words), 0), 64, 4, 1)") {
|
|
1542
1542
|
t.Fatalf("missing byte-view array pointer conversion:\n%s", text)
|
|
1543
1543
|
}
|
|
1544
|
+
if !strings.Contains(text, "($.arrayPointerFromIndexRef<number>($.indexRef(dst!, 0), 64, 1, 1) as unknown as $.VarRef<Uint8Array> | null)!.value =") {
|
|
1545
|
+
t.Fatalf("missing non-null byte-view array pointer storage:\n%s", text)
|
|
1546
|
+
}
|
|
1544
1547
|
}
|
|
1545
1548
|
|
|
1546
1549
|
func TestCompilePackagesEmitsStructMethodsAndPointerAssertions(t *testing.T) {
|
|
@@ -3436,7 +3439,7 @@ func TestCompilePackagesEmitsAsyncChannelsSelectAndDefer(t *testing.T) {
|
|
|
3436
3439
|
for _, want := range []string{
|
|
3437
3440
|
"Process(v: number): number | globalThis.Promise<number>",
|
|
3438
3441
|
"public async Process(v: number): globalThis.Promise<number>",
|
|
3439
|
-
"let ch = $.makeChannel<number>(1, 0, \"both\")",
|
|
3442
|
+
"let ch: $.Channel<number> | null = $.makeChannel<number>(1, 0, \"both\")",
|
|
3440
3443
|
"await $.chanSend($.pointerValue<Worker>(w).ch, v)",
|
|
3441
3444
|
"return await $.chanRecv($.pointerValue<Worker>(w).ch)",
|
|
3442
3445
|
"await using __defer = new $.AsyncDisposableStack()",
|
|
@@ -204,7 +204,7 @@ function detectHostRuntime() {
|
|
|
204
204
|
return writeAllSync((chunk) => nodeFS.writeSync(fd, chunk, 0, chunk.length, null), buffer);
|
|
205
205
|
}
|
|
206
206
|
if (fd === 1 || fd === 2) {
|
|
207
|
-
fallbackConsoleWriter(
|
|
207
|
+
fallbackConsoleWriter('log')(decoder.decode(buffer));
|
|
208
208
|
return buffer.length;
|
|
209
209
|
}
|
|
210
210
|
throw new HostUnsupportedError();
|
|
@@ -231,7 +231,7 @@ function detectHostRuntime() {
|
|
|
231
231
|
writeAllText((chunk) => nodeFS.writeSync(2, chunk, 0, chunk.length, null), data);
|
|
232
232
|
return;
|
|
233
233
|
}
|
|
234
|
-
fallbackConsoleWriter('
|
|
234
|
+
fallbackConsoleWriter('log')(data);
|
|
235
235
|
};
|
|
236
236
|
return {
|
|
237
237
|
deno,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostio.js","sourceRoot":"","sources":["../../../gs/builtin/hostio.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C;QACE,KAAK,CAAC,qDAAqD,CAAC,CAAA;IAC9D,CAAC;CACF;AAqGD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;AACjC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;AAEjC,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,OAAO,QAAQ,CACb,wDAAwD,CACzD,EAA6C,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,UAAyC,EACzC,MAAkB;IAElB,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAA;QAC/C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,IAAI,CAAC,CAAA;IACb,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC;AAED,SAAS,YAAY,CACnB,UAAyC,EACzC,IAAY;IAEZ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAM;IACR,CAAC;IACD,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,YAAY,CAAC,UAAsB;IAC1C,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAChD,IACE,MAAM;YACN,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU;YACrC,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EACtC,CAAC;YACD,OAAO,MAAsB,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAA;IACrC,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,SAAS,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAwB,CAAA;gBAC1D,IACE,MAAM;oBACN,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU;oBACrC,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EACtC,CAAC;oBACD,OAAO,MAAM,CAAA;gBACf,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAsB;IAC9C,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACpD,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACtD,OAAO,MAA0B,CAAA;QACnC,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAA;IACrC,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,SAAS,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAA4B,CAAA;gBAC9D,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBACtD,OAAO,MAAM,CAAA;gBACf,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,WAAoB;IAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,WAAW,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAClE,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,GAAG,CAAC,WAAW,UAAU,GAAG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAA;IACvD,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,UAAU,UAAU,GAAG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAA;AACtD,CAAC;AAED,SAAS,0BAA0B;IACjC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,IAAI,OAAO,OAAO,CAAC,UAAU,EAAE,GAAG,KAAK,UAAU,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAA;QACjC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,UAAU,EAAE,CAAC;YAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;QAC3B,CAAC;QAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,GAAG,GAAG,0BAA0B,EAAE,CAAA;QACxC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAuB;IACpD,OAAO,CAAC,IAAY,EAAE,EAAE;QACtB,MAAM,aAAa,GAAI,UAAkB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAE,UAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAClE,OAAM;QACR,CAAC;QACD,aAAa,CAAC,IAAI,CAAE,UAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,SAAS,GAAG,UAAiB,CAAA;IACnC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,IAAI,CAAA;IACnC,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,CAAA;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IACvC,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAA;IAE/C,MAAM,cAAc,GAAG,CAAC,EAAU,EAAuB,EAAE;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAA;QACb,CAAC;QACD,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAA;YAC3B,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA;YAC5B,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAA;YAC5B;gBACE,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,UAAU,EAAE,QAAQ,IAAI,SAAS,CAAA;IAErE,MAAM,MAAM,GAAG,CAAC,IAAY,EAAU,EAAE;QACtC,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QACD,OAAO,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACtC,CAAC,CAAA;IAED,MAAM,MAAM,GAAe,CACzB,EAAU,EACV,MAAkB,EACH,EAAE;QACjB,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;QACjC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC5D,CAAC;QACD,MAAM,IAAI,oBAAoB,EAAE,CAAA;IAClC,CAAC,CAAA;IACD,MAAM,OAAO,GAAgB,CAAC,EAAU,EAAE,MAAkB,EAAU,EAAE;QACtE,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;QACjC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACrD,OAAO,YAAY,CACjB,CAAC,KAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,SAAU,CAAC,KAAK,CAAC,EAC/C,MAAM,CACP,CAAA;QACH,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,YAAY,CACjB,CAAC,KAAiB,EAAE,EAAE,CACpB,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EACpD,MAAM,CACP,CAAA;QACH,CAAC;QACD,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACzB,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"hostio.js","sourceRoot":"","sources":["../../../gs/builtin/hostio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as $ from '@goscript/builtin/index.js';
|
|
2
|
+
import type * as cipher from '@goscript/crypto/cipher/index.js';
|
|
3
|
+
export declare const BlockSize = 16;
|
|
4
|
+
export type KeySizeError = number;
|
|
5
|
+
export declare class AESBlock implements cipher.Block {
|
|
6
|
+
private readonly key;
|
|
7
|
+
private keyPromise;
|
|
8
|
+
constructor(key: Uint8Array);
|
|
9
|
+
BlockSize(): number;
|
|
10
|
+
Encrypt(dst: $.Bytes, src: $.Bytes): void;
|
|
11
|
+
Decrypt(dst: $.Bytes, src: $.Bytes): void;
|
|
12
|
+
webCryptoKey(): Promise<CryptoKey>;
|
|
13
|
+
}
|
|
14
|
+
export declare function KeySizeError_Error(k: KeySizeError): string;
|
|
15
|
+
export declare function NewCipher(key: $.Bytes): [cipher.Block | null, $.GoError];
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as $ from '@goscript/builtin/index.js';
|
|
2
|
+
import { ecb } from '@noble/ciphers/aes.js';
|
|
3
|
+
export const BlockSize = 16;
|
|
4
|
+
export class AESBlock {
|
|
5
|
+
key;
|
|
6
|
+
keyPromise = null;
|
|
7
|
+
constructor(key) {
|
|
8
|
+
this.key = key;
|
|
9
|
+
}
|
|
10
|
+
BlockSize() {
|
|
11
|
+
return BlockSize;
|
|
12
|
+
}
|
|
13
|
+
Encrypt(dst, src) {
|
|
14
|
+
const srcBytes = $.bytesToUint8Array(src);
|
|
15
|
+
if (srcBytes.length < BlockSize) {
|
|
16
|
+
$.panic('crypto/aes: input not full block');
|
|
17
|
+
}
|
|
18
|
+
if ($.len(dst) < BlockSize) {
|
|
19
|
+
$.panic('crypto/aes: output not full block');
|
|
20
|
+
}
|
|
21
|
+
const out = ecb(this.key, { disablePadding: true }).encrypt(srcBytes.subarray(0, BlockSize));
|
|
22
|
+
$.copy(dst, out);
|
|
23
|
+
}
|
|
24
|
+
Decrypt(dst, src) {
|
|
25
|
+
const srcBytes = $.bytesToUint8Array(src);
|
|
26
|
+
if (srcBytes.length < BlockSize) {
|
|
27
|
+
$.panic('crypto/aes: input not full block');
|
|
28
|
+
}
|
|
29
|
+
if ($.len(dst) < BlockSize) {
|
|
30
|
+
$.panic('crypto/aes: output not full block');
|
|
31
|
+
}
|
|
32
|
+
const out = ecb(this.key, { disablePadding: true }).decrypt(srcBytes.subarray(0, BlockSize));
|
|
33
|
+
$.copy(dst, out);
|
|
34
|
+
}
|
|
35
|
+
async webCryptoKey() {
|
|
36
|
+
this.keyPromise ??= subtleCrypto().importKey('raw', this.key, 'AES-GCM', false, ['encrypt', 'decrypt']);
|
|
37
|
+
return this.keyPromise;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function KeySizeError_Error(k) {
|
|
41
|
+
return `crypto/aes: invalid key size ${k}`;
|
|
42
|
+
}
|
|
43
|
+
export function NewCipher(key) {
|
|
44
|
+
const k = $.len(key);
|
|
45
|
+
if (k !== 16 && k !== 24 && k !== 32) {
|
|
46
|
+
return [null, $.newError(KeySizeError_Error(k))];
|
|
47
|
+
}
|
|
48
|
+
return [new AESBlock($.bytesToUint8Array(key).slice()), null];
|
|
49
|
+
}
|
|
50
|
+
function subtleCrypto() {
|
|
51
|
+
const subtle = globalThis.crypto?.subtle;
|
|
52
|
+
if (subtle == null) {
|
|
53
|
+
throw new Error('crypto/aes: WebCrypto AES-GCM is unavailable');
|
|
54
|
+
}
|
|
55
|
+
return subtle;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/crypto/aes/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as $ from '@goscript/builtin/index.js';
|
|
2
|
+
export type Block = {
|
|
3
|
+
BlockSize(): number;
|
|
4
|
+
Decrypt(dst: $.Bytes, src: $.Bytes): void;
|
|
5
|
+
Encrypt(dst: $.Bytes, src: $.Bytes): void;
|
|
6
|
+
};
|
|
7
|
+
export type AEAD = {
|
|
8
|
+
NonceSize(): number;
|
|
9
|
+
Open(dst: $.Bytes, nonce: $.Bytes, ciphertext: $.Bytes, additionalData: $.Bytes): [$.Bytes, $.GoError] | Promise<[$.Bytes, $.GoError]>;
|
|
10
|
+
Overhead(): number;
|
|
11
|
+
Seal(dst: $.Bytes, nonce: $.Bytes, plaintext: $.Bytes, additionalData: $.Bytes): $.Bytes | Promise<$.Bytes>;
|
|
12
|
+
};
|
|
13
|
+
export type Stream = {
|
|
14
|
+
XORKeyStream(dst: $.Bytes, src: $.Bytes): void;
|
|
15
|
+
};
|
|
16
|
+
export type BlockMode = {
|
|
17
|
+
BlockSize(): number;
|
|
18
|
+
CryptBlocks(dst: $.Bytes, src: $.Bytes): void;
|
|
19
|
+
};
|
|
20
|
+
export declare function NewGCM(block: Block | null): [AEAD | null, $.GoError];
|
|
21
|
+
export declare function NewGCMWithNonceSize(block: Block | null, size: number): [AEAD | null, $.GoError];
|
|
22
|
+
export declare function NewGCMWithTagSize(block: Block | null, tagSize: number): [AEAD | null, $.GoError];
|
|
23
|
+
export declare function NewGCMWithRandomNonce(_block: Block | null): [AEAD | null, $.GoError];
|
|
24
|
+
export declare function NewCBCDecrypter(_b: Block | null, _iv: $.Bytes): BlockMode;
|
|
25
|
+
export declare function NewCBCEncrypter(_b: Block | null, _iv: $.Bytes): BlockMode;
|
|
26
|
+
export declare function NewCFBDecrypter(_b: Block | null, _iv: $.Bytes): Stream;
|
|
27
|
+
export declare function NewCFBEncrypter(_b: Block | null, _iv: $.Bytes): Stream;
|
|
28
|
+
export declare function NewCTR(_b: Block | null, _iv: $.Bytes): Stream;
|
|
29
|
+
export declare function NewOFB(_b: Block | null, _iv: $.Bytes): Stream;
|
|
30
|
+
export declare class StreamReader {
|
|
31
|
+
constructor(_init?: Partial<{
|
|
32
|
+
S: Stream;
|
|
33
|
+
R: unknown;
|
|
34
|
+
}>);
|
|
35
|
+
}
|
|
36
|
+
export declare class StreamWriter {
|
|
37
|
+
constructor(_init?: Partial<{
|
|
38
|
+
S: Stream;
|
|
39
|
+
W: unknown;
|
|
40
|
+
}>);
|
|
41
|
+
}
|