goscript 0.0.25 → 0.0.28

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.
Files changed (190) hide show
  1. package/README.md +4 -4
  2. package/cmd/goscript/cmd_compile.go +0 -3
  3. package/cmd/goscript/deps.go +11 -0
  4. package/compiler/analysis.go +259 -55
  5. package/compiler/assignment.go +2 -2
  6. package/compiler/builtin_test.go +1 -1
  7. package/compiler/compiler.go +201 -49
  8. package/compiler/compiler_test.go +53 -0
  9. package/compiler/composite-lit.go +32 -8
  10. package/compiler/decl.go +6 -6
  11. package/compiler/expr-call.go +83 -0
  12. package/compiler/expr.go +1 -1
  13. package/compiler/protobuf.go +557 -0
  14. package/compiler/spec-struct.go +4 -0
  15. package/compiler/spec-value.go +11 -3
  16. package/compiler/spec.go +18 -1
  17. package/compiler/stmt-assign.go +35 -0
  18. package/compiler/type-assert.go +87 -0
  19. package/compiler/type.go +5 -2
  20. package/dist/gs/builtin/builtin.d.ts +19 -1
  21. package/dist/gs/builtin/builtin.js +85 -5
  22. package/dist/gs/builtin/builtin.js.map +1 -1
  23. package/dist/gs/builtin/channel.js.map +1 -1
  24. package/dist/gs/builtin/slice.d.ts +1 -1
  25. package/dist/gs/builtin/slice.js +59 -26
  26. package/dist/gs/builtin/slice.js.map +1 -1
  27. package/dist/gs/cmp/index.js.map +1 -1
  28. package/dist/gs/context/context.d.ts +1 -1
  29. package/dist/gs/context/context.js +20 -11
  30. package/dist/gs/context/context.js.map +1 -1
  31. package/dist/gs/errors/errors.d.ts +7 -0
  32. package/dist/gs/errors/errors.js +190 -0
  33. package/dist/gs/errors/errors.js.map +1 -0
  34. package/dist/gs/errors/index.d.ts +1 -0
  35. package/dist/gs/errors/index.js +2 -0
  36. package/dist/gs/errors/index.js.map +1 -0
  37. package/dist/gs/internal/goarch/index.js +1 -1
  38. package/dist/gs/internal/goarch/index.js.map +1 -1
  39. package/dist/gs/io/index.d.ts +1 -0
  40. package/dist/gs/io/index.js +2 -0
  41. package/dist/gs/io/index.js.map +1 -0
  42. package/dist/gs/io/io.d.ts +107 -0
  43. package/dist/gs/io/io.js +385 -0
  44. package/dist/gs/io/io.js.map +1 -0
  45. package/dist/gs/iter/iter.js.map +1 -1
  46. package/dist/gs/math/bits/index.js +34 -32
  47. package/dist/gs/math/bits/index.js.map +1 -1
  48. package/dist/gs/runtime/runtime.d.ts +1 -0
  49. package/dist/gs/runtime/runtime.js +15 -18
  50. package/dist/gs/runtime/runtime.js.map +1 -1
  51. package/dist/gs/slices/slices.d.ts +1 -1
  52. package/dist/gs/slices/slices.js +1 -1
  53. package/dist/gs/slices/slices.js.map +1 -1
  54. package/dist/gs/strings/builder.d.ts +18 -0
  55. package/dist/gs/strings/builder.js +205 -0
  56. package/dist/gs/strings/builder.js.map +1 -0
  57. package/dist/gs/strings/clone.d.ts +1 -0
  58. package/dist/gs/strings/clone.js +16 -0
  59. package/dist/gs/strings/clone.js.map +1 -0
  60. package/dist/gs/strings/compare.d.ts +1 -0
  61. package/dist/gs/strings/compare.js +14 -0
  62. package/dist/gs/strings/compare.js.map +1 -0
  63. package/dist/gs/strings/index.d.ts +2 -0
  64. package/dist/gs/strings/index.js +3 -0
  65. package/dist/gs/strings/index.js.map +1 -0
  66. package/dist/gs/strings/iter.d.ts +8 -0
  67. package/dist/gs/strings/iter.js +160 -0
  68. package/dist/gs/strings/iter.js.map +1 -0
  69. package/dist/gs/strings/reader.d.ts +34 -0
  70. package/dist/gs/strings/reader.js +418 -0
  71. package/dist/gs/strings/reader.js.map +1 -0
  72. package/dist/gs/strings/replace.d.ts +106 -0
  73. package/dist/gs/strings/replace.js +1136 -0
  74. package/dist/gs/strings/replace.js.map +1 -0
  75. package/dist/gs/strings/search.d.ts +24 -0
  76. package/dist/gs/strings/search.js +169 -0
  77. package/dist/gs/strings/search.js.map +1 -0
  78. package/dist/gs/strings/strings.d.ts +47 -0
  79. package/dist/gs/strings/strings.js +418 -0
  80. package/dist/gs/strings/strings.js.map +1 -0
  81. package/dist/gs/stringslite/index.d.ts +1 -0
  82. package/dist/gs/stringslite/index.js +2 -0
  83. package/dist/gs/stringslite/index.js.map +1 -0
  84. package/dist/gs/stringslite/strings.d.ts +11 -0
  85. package/dist/gs/stringslite/strings.js +67 -0
  86. package/dist/gs/stringslite/strings.js.map +1 -0
  87. package/dist/gs/sync/index.d.ts +1 -0
  88. package/dist/gs/sync/index.js +2 -0
  89. package/dist/gs/sync/index.js.map +1 -0
  90. package/dist/gs/sync/sync.d.ts +79 -0
  91. package/dist/gs/sync/sync.js +392 -0
  92. package/dist/gs/sync/sync.js.map +1 -0
  93. package/dist/gs/time/time.js +7 -7
  94. package/dist/gs/time/time.js.map +1 -1
  95. package/dist/gs/unicode/index.d.ts +1 -0
  96. package/dist/gs/unicode/index.js +2 -0
  97. package/dist/gs/unicode/index.js.map +1 -0
  98. package/dist/gs/unicode/unicode.d.ts +105 -0
  99. package/dist/gs/unicode/unicode.js +332 -0
  100. package/dist/gs/unicode/unicode.js.map +1 -0
  101. package/dist/gs/unicode/utf8/index.d.ts +1 -0
  102. package/dist/gs/unicode/utf8/index.js +3 -0
  103. package/dist/gs/unicode/utf8/index.js.map +1 -0
  104. package/dist/gs/unicode/utf8/utf8.d.ts +20 -0
  105. package/dist/gs/unicode/utf8/utf8.js +196 -0
  106. package/dist/gs/unicode/utf8/utf8.js.map +1 -0
  107. package/dist/gs/unsafe/index.d.ts +1 -0
  108. package/dist/gs/unsafe/index.js +2 -0
  109. package/dist/gs/unsafe/index.js.map +1 -0
  110. package/dist/gs/unsafe/unsafe.d.ts +11 -0
  111. package/dist/gs/unsafe/unsafe.js +44 -0
  112. package/dist/gs/unsafe/unsafe.js.map +1 -0
  113. package/go.mod +2 -1
  114. package/go.sum +6 -2
  115. package/gs/README.md +6 -0
  116. package/gs/builtin/builtin.ts +158 -0
  117. package/gs/builtin/channel.ts +683 -0
  118. package/gs/builtin/defer.ts +58 -0
  119. package/gs/builtin/index.ts +1 -0
  120. package/gs/builtin/io.ts +22 -0
  121. package/gs/builtin/map.ts +50 -0
  122. package/gs/builtin/slice.ts +1030 -0
  123. package/gs/builtin/type.ts +1106 -0
  124. package/gs/builtin/varRef.ts +25 -0
  125. package/gs/cmp/godoc.txt +8 -0
  126. package/gs/cmp/index.ts +29 -0
  127. package/gs/context/context.ts +401 -0
  128. package/gs/context/godoc.txt +69 -0
  129. package/gs/context/index.ts +1 -0
  130. package/gs/errors/errors.ts +223 -0
  131. package/gs/errors/godoc.txt +63 -0
  132. package/gs/errors/index.ts +1 -0
  133. package/gs/internal/goarch/godoc.txt +39 -0
  134. package/gs/internal/goarch/index.ts +18 -0
  135. package/gs/io/godoc.txt +61 -0
  136. package/gs/io/index.ts +1 -0
  137. package/gs/io/io.go +75 -0
  138. package/gs/io/io.ts +546 -0
  139. package/gs/iter/godoc.txt +203 -0
  140. package/gs/iter/index.ts +1 -0
  141. package/gs/iter/iter.ts +117 -0
  142. package/gs/math/bits/index.ts +356 -0
  143. package/gs/math/godoc.txt +76 -0
  144. package/gs/runtime/godoc.txt +331 -0
  145. package/gs/runtime/index.ts +1 -0
  146. package/gs/runtime/runtime.ts +178 -0
  147. package/gs/slices/godoc.txt +44 -0
  148. package/gs/slices/index.ts +1 -0
  149. package/gs/slices/slices.ts +22 -0
  150. package/gs/strings/builder.test.ts +121 -0
  151. package/gs/strings/builder.ts +223 -0
  152. package/gs/strings/clone.test.ts +43 -0
  153. package/gs/strings/clone.ts +17 -0
  154. package/gs/strings/compare.test.ts +84 -0
  155. package/gs/strings/compare.ts +13 -0
  156. package/gs/strings/godoc.txt +66 -0
  157. package/gs/strings/index.ts +2 -0
  158. package/gs/strings/iter.test.ts +343 -0
  159. package/gs/strings/iter.ts +171 -0
  160. package/gs/strings/reader.test.ts +243 -0
  161. package/gs/strings/reader.ts +451 -0
  162. package/gs/strings/replace.test.ts +181 -0
  163. package/gs/strings/replace.ts +1310 -0
  164. package/gs/strings/search.test.ts +214 -0
  165. package/gs/strings/search.ts +213 -0
  166. package/gs/strings/strings.test.ts +477 -0
  167. package/gs/strings/strings.ts +510 -0
  168. package/gs/stringslite/godoc.txt +17 -0
  169. package/gs/stringslite/index.ts +1 -0
  170. package/gs/stringslite/strings.ts +82 -0
  171. package/gs/sync/godoc.txt +21 -0
  172. package/gs/sync/index.ts +1 -0
  173. package/gs/sync/sync.go +64 -0
  174. package/gs/sync/sync.ts +449 -0
  175. package/gs/time/godoc.md +116 -0
  176. package/gs/time/godoc.txt +116 -0
  177. package/gs/time/index.ts +1 -0
  178. package/gs/time/time.ts +272 -0
  179. package/gs/unicode/godoc.txt +52 -0
  180. package/gs/unicode/index.ts +1 -0
  181. package/gs/unicode/unicode.go +38 -0
  182. package/gs/unicode/unicode.ts +418 -0
  183. package/gs/unicode/utf8/godoc.txt +22 -0
  184. package/gs/unicode/utf8/index.ts +2 -0
  185. package/gs/unicode/utf8/utf8.ts +227 -0
  186. package/gs/unsafe/godoc.txt +19 -0
  187. package/gs/unsafe/index.ts +1 -0
  188. package/gs/unsafe/unsafe.test.ts +68 -0
  189. package/gs/unsafe/unsafe.ts +77 -0
  190. package/package.json +6 -4
@@ -1,24 +1,20 @@
1
1
  // Runtime constants for the JavaScript/WebAssembly target
2
- export const GOOS = "js";
3
- export const GOARCH = "wasm";
2
+ export const GOOS = 'js';
3
+ export const GOARCH = 'wasm';
4
4
  // Version returns the Go version as a string
5
+ export const GOVERSION = 'go1.24.3';
5
6
  export function Version() {
6
- return "go1.22.0"; // Static version for goscript compatibility
7
+ return GOVERSION;
7
8
  }
8
9
  // GOMAXPROCS sets the maximum number of operating system threads
9
- // In JavaScript/browser environment, this is mostly informational
10
+ //
11
+ // JavaScript is single threaded so this always returns 1.
10
12
  export function GOMAXPROCS(n) {
11
- // In browser/JS environment, we can't actually control OS threads
12
- // Return number of logical CPUs available, or previous value
13
- if (n < 1) {
14
- // Return current "setting" (number of logical CPUs)
15
- return NumCPU();
16
- }
17
- // In a real implementation, we would set the max procs
18
- // For JS/browser, we just return the requested value
19
- return n;
13
+ // In a full implementation, we would set the max procs
14
+ // Since JavaScript only supports 1, just return 1.
15
+ return 1;
20
16
  }
21
- // NumCPU returns the number of logical CPUs usable by the current process
17
+ // NumCPU returns the number of logical CPUs on the system.
22
18
  export function NumCPU() {
23
19
  // In browser environment, use navigator.hardwareConcurrency if available
24
20
  if (typeof navigator !== 'undefined' && navigator.hardwareConcurrency) {
@@ -33,6 +29,7 @@ export function GC() {
33
29
  // In JavaScript, we can't force garbage collection
34
30
  // Some engines have gc() function in development, but it's not standard
35
31
  if (typeof globalThis.gc === 'function') {
32
+ ;
36
33
  globalThis.gc();
37
34
  }
38
35
  // Otherwise, this is a no-op
@@ -40,7 +37,7 @@ export function GC() {
40
37
  // Gosched yields the processor, allowing other goroutines to run.
41
38
  // In JavaScript, we can use setTimeout(0) or queueMicrotask for similar effect
42
39
  export function Gosched() {
43
- return new Promise(resolve => {
40
+ return new Promise((resolve) => {
44
41
  queueMicrotask(resolve);
45
42
  });
46
43
  }
@@ -66,7 +63,7 @@ export function Caller(skip) {
66
63
  // In JavaScript, we can use Error stack trace, but it's limited
67
64
  // Return dummy values for goscript compatibility
68
65
  const pc = 0; // program counter (not meaningful in JS)
69
- const file = "unknown";
66
+ const file = 'unknown';
70
67
  const line = 0;
71
68
  const ok = false; // indicate we don't have real stack info
72
69
  return [pc, file, line, ok];
@@ -74,7 +71,7 @@ export function Caller(skip) {
74
71
  // Stack returns a formatted stack trace of the calling goroutine.
75
72
  // In JavaScript, we use Error.stack
76
73
  export function Stack() {
77
- const stack = new Error().stack || "stack trace unavailable";
74
+ const stack = new Error().stack || 'stack trace unavailable';
78
75
  const encoder = new TextEncoder();
79
76
  return encoder.encode(stack);
80
77
  }
@@ -144,7 +141,7 @@ export class PanicError {
144
141
  // SetFinalizer sets the finalizer associated with obj to the provided finalizer function.
145
142
  // In goscript/TypeScript environment, finalizers are not supported, so this throws an error.
146
143
  export function SetFinalizer(obj, finalizer) {
147
- throw new Error("runtime.SetFinalizer is not supported in goscript TypeScript environment");
144
+ throw new Error('runtime.SetFinalizer is not supported in goscript TypeScript environment');
148
145
  }
149
146
  // KeepAlive keeps obj reachable until the point where KeepAlive is called
150
147
  export function KeepAlive(obj) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../gs/runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../gs/runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
2
  /**
3
3
  * All returns an iterator over index-value pairs in the slice.
4
4
  * This is equivalent to Go's slices.All function.
@@ -1,5 +1,5 @@
1
1
  // TypeScript implementation of Go's slices package
2
- import * as $ from "@goscript/builtin/builtin.js";
2
+ import * as $ from '@goscript/builtin/builtin.js';
3
3
  /**
4
4
  * All returns an iterator over index-value pairs in the slice.
5
5
  * This is equivalent to Go's slices.All function.
@@ -1 +1 @@
1
- {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../gs/slices/slices.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAElD;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAI,CAAa;IAClC,OAAO,UAAS,MAA4C;QAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,KAAK,GAAI,CAAS,CAAC,CAAC,CAAM,CAAC,CAAC,2CAA2C;YAC7E,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../gs/slices/slices.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAA;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CACjB,CAAa;IAEb,OAAO,UAAU,MAA4C;QAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,KAAK,GAAI,CAAS,CAAC,CAAC,CAAM,CAAA,CAAC,2CAA2C;YAC5E,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
+ export declare class Builder {
3
+ private _content;
4
+ private _addr;
5
+ constructor(init?: Partial<{}>);
6
+ clone(): Builder;
7
+ private copyCheck;
8
+ String(): string;
9
+ Len(): number;
10
+ Cap(): number;
11
+ Reset(): void;
12
+ Grow(n: number): void;
13
+ Write(p: Uint8Array): [number, $.GoError];
14
+ WriteByte(c: number): $.GoError;
15
+ WriteRune(r: number): [number, $.GoError];
16
+ WriteString(s: string): [number, $.GoError];
17
+ static __typeInfo: $.StructTypeInfo;
18
+ }
@@ -0,0 +1,205 @@
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
+ export class Builder {
3
+ _content = '';
4
+ _addr = null;
5
+ constructor(init) {
6
+ // Simple constructor - no complex initialization needed
7
+ }
8
+ clone() {
9
+ const cloned = new Builder();
10
+ cloned._content = this._content;
11
+ cloned._addr = this._addr;
12
+ return cloned;
13
+ }
14
+ copyCheck() {
15
+ if (this._addr == null) {
16
+ this._addr = this;
17
+ }
18
+ else if (this._addr !== this) {
19
+ $.panic('strings: illegal use of non-zero Builder copied by value');
20
+ }
21
+ }
22
+ // String returns the accumulated string.
23
+ String() {
24
+ return this._content;
25
+ }
26
+ // Len returns the number of accumulated bytes; b.Len() == len(b.String()).
27
+ Len() {
28
+ return this._content.length;
29
+ }
30
+ // Cap returns the capacity of the builder's underlying byte slice. It is the
31
+ // total space allocated for the string being built and includes any bytes
32
+ // already written.
33
+ Cap() {
34
+ // For simplicity, return the current length since JavaScript strings are dynamic
35
+ return this._content.length;
36
+ }
37
+ // Reset resets the Builder to be empty.
38
+ Reset() {
39
+ this._addr = null;
40
+ this._content = '';
41
+ }
42
+ // Grow grows b's capacity, if necessary, to guarantee space for
43
+ // another n bytes. After Grow(n), at least n bytes can be written to b
44
+ // without another allocation. If n is negative, Grow panics.
45
+ Grow(n) {
46
+ this.copyCheck();
47
+ if (n < 0) {
48
+ $.panic('strings.Builder.Grow: negative count');
49
+ }
50
+ // JavaScript strings are dynamic, so no need to pre-allocate
51
+ }
52
+ // Write appends the contents of p to b's buffer.
53
+ // Write always returns len(p), nil.
54
+ Write(p) {
55
+ this.copyCheck();
56
+ // Convert byte array to string
57
+ const str = new TextDecoder('utf-8').decode(p);
58
+ this._content += str;
59
+ return [p.length, null];
60
+ }
61
+ // WriteByte appends the byte c to b's buffer.
62
+ // The returned error is always nil.
63
+ WriteByte(c) {
64
+ this.copyCheck();
65
+ this._content += String.fromCharCode(c);
66
+ return null;
67
+ }
68
+ // WriteRune appends the UTF-8 encoding of Unicode code point r to b's buffer.
69
+ // It returns the length of r and a nil error.
70
+ WriteRune(r) {
71
+ this.copyCheck();
72
+ const str = String.fromCodePoint(r);
73
+ this._content += str;
74
+ // Return the byte length of the UTF-8 encoding
75
+ const byteLength = new TextEncoder().encode(str).length;
76
+ return [byteLength, null];
77
+ }
78
+ // WriteString appends the contents of s to b's buffer.
79
+ // It returns the length of s and a nil error.
80
+ WriteString(s) {
81
+ this.copyCheck();
82
+ this._content += s;
83
+ return [s.length, null];
84
+ }
85
+ // Register this type with the runtime type system
86
+ static __typeInfo = $.registerStructType('Builder', new Builder(), [
87
+ {
88
+ name: 'String',
89
+ args: [],
90
+ returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
91
+ },
92
+ {
93
+ name: 'Len',
94
+ args: [],
95
+ returns: [{ type: { kind: $.TypeKind.Basic, name: 'number' } }],
96
+ },
97
+ {
98
+ name: 'Cap',
99
+ args: [],
100
+ returns: [{ type: { kind: $.TypeKind.Basic, name: 'number' } }],
101
+ },
102
+ { name: 'Reset', args: [], returns: [] },
103
+ {
104
+ name: 'Grow',
105
+ args: [{ name: 'n', type: { kind: $.TypeKind.Basic, name: 'number' } }],
106
+ returns: [],
107
+ },
108
+ {
109
+ name: 'Write',
110
+ args: [
111
+ {
112
+ name: 'p',
113
+ type: {
114
+ kind: $.TypeKind.Slice,
115
+ elemType: { kind: $.TypeKind.Basic, name: 'number' },
116
+ },
117
+ },
118
+ ],
119
+ returns: [
120
+ { type: { kind: $.TypeKind.Basic, name: 'number' } },
121
+ {
122
+ type: {
123
+ kind: $.TypeKind.Interface,
124
+ name: 'GoError',
125
+ methods: [
126
+ {
127
+ name: 'Error',
128
+ args: [],
129
+ returns: [
130
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
131
+ ],
132
+ },
133
+ ],
134
+ },
135
+ },
136
+ ],
137
+ },
138
+ {
139
+ name: 'WriteByte',
140
+ args: [{ name: 'c', type: { kind: $.TypeKind.Basic, name: 'number' } }],
141
+ returns: [
142
+ {
143
+ type: {
144
+ kind: $.TypeKind.Interface,
145
+ name: 'GoError',
146
+ methods: [
147
+ {
148
+ name: 'Error',
149
+ args: [],
150
+ returns: [
151
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
152
+ ],
153
+ },
154
+ ],
155
+ },
156
+ },
157
+ ],
158
+ },
159
+ {
160
+ name: 'WriteRune',
161
+ args: [{ name: 'r', type: { kind: $.TypeKind.Basic, name: 'number' } }],
162
+ returns: [
163
+ { type: { kind: $.TypeKind.Basic, name: 'number' } },
164
+ {
165
+ type: {
166
+ kind: $.TypeKind.Interface,
167
+ name: 'GoError',
168
+ methods: [
169
+ {
170
+ name: 'Error',
171
+ args: [],
172
+ returns: [
173
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
174
+ ],
175
+ },
176
+ ],
177
+ },
178
+ },
179
+ ],
180
+ },
181
+ {
182
+ name: 'WriteString',
183
+ args: [{ name: 's', type: { kind: $.TypeKind.Basic, name: 'string' } }],
184
+ returns: [
185
+ { type: { kind: $.TypeKind.Basic, name: 'number' } },
186
+ {
187
+ type: {
188
+ kind: $.TypeKind.Interface,
189
+ name: 'GoError',
190
+ methods: [
191
+ {
192
+ name: 'Error',
193
+ args: [],
194
+ returns: [
195
+ { type: { kind: $.TypeKind.Basic, name: 'string' } },
196
+ ],
197
+ },
198
+ ],
199
+ },
200
+ },
201
+ ],
202
+ },
203
+ ], Builder, {});
204
+ }
205
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../gs/strings/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function Clone(s: string): string;
@@ -0,0 +1,16 @@
1
+ // Clone returns a fresh copy of s.
2
+ // It guarantees to make a copy of s into a new allocation,
3
+ // which can be important when retaining only a small substring
4
+ // of a much larger string. Using Clone can help such programs
5
+ // use less memory. Of course, since using Clone makes a copy,
6
+ // overuse of Clone can make programs use more memory.
7
+ // Clone should typically be used only rarely, and only when
8
+ // profiling indicates that it is needed.
9
+ // For strings of length zero the string "" will be returned
10
+ // and no allocation is made.
11
+ export function Clone(s) {
12
+ // In JavaScript, strings are immutable, so we can just return the string
13
+ // But to match Go semantics, we'll create a new string
14
+ return String(s);
15
+ }
16
+ //# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../gs/strings/clone.ts"],"names":[],"mappings":"AAEA,mCAAmC;AACnC,2DAA2D;AAC3D,+DAA+D;AAC/D,8DAA8D;AAC9D,8DAA8D;AAC9D,sDAAsD;AACtD,4DAA4D;AAC5D,yCAAyC;AACzC,4DAA4D;AAC5D,6BAA6B;AAC7B,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,yEAAyE;IACzE,uDAAuD;IACvD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function Compare(a: string, b: string): number;
@@ -0,0 +1,14 @@
1
+ // Compare returns an integer comparing two strings lexicographically.
2
+ // The result will be 0 if a == b, -1 if a < b, and +1 if a > b.
3
+ //
4
+ // Compare is included only for symmetry with package bytes.
5
+ // It is usually clearer and always faster to use the built-in
6
+ // string comparison operators ==, <, >, and so on.
7
+ export function Compare(a, b) {
8
+ if (a < b)
9
+ return -1;
10
+ if (a > b)
11
+ return 1;
12
+ return 0;
13
+ }
14
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../gs/strings/compare.ts"],"names":[],"mappings":"AAEA,sEAAsE;AACtE,gEAAgE;AAChE,EAAE;AACF,4DAA4D;AAC5D,8DAA8D;AAC9D,mDAAmD;AACnD,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAA;IACpB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IACnB,OAAO,CAAC,CAAA;AACV,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './builder.js';
2
+ export * from './strings.js';
@@ -0,0 +1,3 @@
1
+ export * from './builder.js';
2
+ export * from './strings.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/strings/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as iter from '@goscript/iter/index.js';
2
+ export declare function Lines(s: string): iter.Seq<string>;
3
+ export declare function explodeSeq(s: string): iter.Seq<string>;
4
+ export declare function splitSeq(s: string, sep: string, sepSave: number): iter.Seq<string>;
5
+ export declare function SplitSeq(s: string, sep: string): iter.Seq<string>;
6
+ export declare function SplitAfterSeq(s: string, sep: string): iter.Seq<string>;
7
+ export declare function FieldsSeq(s: string): iter.Seq<string>;
8
+ export declare function FieldsFuncSeq(s: string, f: ((p0: number) => boolean) | null): iter.Seq<string>;
@@ -0,0 +1,160 @@
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
+ import { Index, IndexByte } from './strings.js';
3
+ import * as unicode from '@goscript/unicode/index.js';
4
+ import * as utf8 from '@goscript/unicode/utf8/index.js';
5
+ // ASCII space characters lookup map
6
+ const asciiSpace = {
7
+ 9: true, // \t
8
+ 10: true, // \n
9
+ 11: true, // \v
10
+ 12: true, // \f
11
+ 13: true, // \r
12
+ 32: true, // space
13
+ };
14
+ // Lines returns an iterator over the newline-terminated lines in the string s.
15
+ // The lines yielded by the iterator include their terminating newlines.
16
+ // If s is empty, the iterator yields no lines at all.
17
+ // If s does not end in a newline, the final yielded line will not end in a newline.
18
+ // It returns a single-use iterator.
19
+ export function Lines(s) {
20
+ return (_yield) => {
21
+ for (; $.len(s) > 0;) {
22
+ let line = '';
23
+ {
24
+ let i = IndexByte(s, 10);
25
+ if (i >= 0) {
26
+ ;
27
+ [line, s] = [
28
+ $.sliceString(s, undefined, i + 1),
29
+ $.sliceString(s, i + 1, undefined),
30
+ ];
31
+ }
32
+ else {
33
+ ;
34
+ [line, s] = [s, ''];
35
+ }
36
+ }
37
+ if (!_yield(line)) {
38
+ return;
39
+ }
40
+ }
41
+ return;
42
+ };
43
+ }
44
+ // explodeSeq returns an iterator over the runes in s.
45
+ export function explodeSeq(s) {
46
+ return (_yield) => {
47
+ for (; $.len(s) > 0;) {
48
+ let [, size] = utf8.DecodeRuneInString(s);
49
+ if (!_yield($.sliceString(s, undefined, size))) {
50
+ return;
51
+ }
52
+ s = $.sliceString(s, size, undefined);
53
+ }
54
+ };
55
+ }
56
+ // splitSeq is SplitSeq or SplitAfterSeq, configured by how many
57
+ // bytes of sep to include in the results (none or all).
58
+ export function splitSeq(s, sep, sepSave) {
59
+ if ($.len(sep) == 0) {
60
+ return explodeSeq(s);
61
+ }
62
+ return (_yield) => {
63
+ for (;;) {
64
+ let i = Index(s, sep);
65
+ if (i < 0) {
66
+ break;
67
+ }
68
+ let frag = $.sliceString(s, undefined, i + sepSave);
69
+ if (!_yield(frag)) {
70
+ return;
71
+ }
72
+ s = $.sliceString(s, i + $.len(sep), undefined);
73
+ }
74
+ _yield(s);
75
+ };
76
+ }
77
+ // SplitSeq returns an iterator over all substrings of s separated by sep.
78
+ // The iterator yields the same strings that would be returned by [Split](s, sep),
79
+ // but without constructing the slice.
80
+ // It returns a single-use iterator.
81
+ export function SplitSeq(s, sep) {
82
+ return splitSeq(s, sep, 0);
83
+ }
84
+ // SplitAfterSeq returns an iterator over substrings of s split after each instance of sep.
85
+ // The iterator yields the same strings that would be returned by [SplitAfter](s, sep),
86
+ // but without constructing the slice.
87
+ // It returns a single-use iterator.
88
+ export function SplitAfterSeq(s, sep) {
89
+ return splitSeq(s, sep, $.len(sep));
90
+ }
91
+ // FieldsSeq returns an iterator over substrings of s split around runs of
92
+ // whitespace characters, as defined by [unicode.IsSpace].
93
+ // The iterator yields the same strings that would be returned by [Fields](s),
94
+ // but without constructing the slice.
95
+ export function FieldsSeq(s) {
96
+ return (_yield) => {
97
+ let start = -1;
98
+ for (let i = 0; i < $.len(s);) {
99
+ let size = 1;
100
+ let r = $.indexString(s, i);
101
+ let isSpace = asciiSpace[$.indexString(s, i)] === true;
102
+ if (r >= utf8.RuneSelf) {
103
+ ;
104
+ [r, size] = utf8.DecodeRuneInString($.sliceString(s, i, undefined));
105
+ isSpace = unicode.IsSpace(r);
106
+ }
107
+ if (isSpace) {
108
+ if (start >= 0) {
109
+ if (!_yield($.sliceString(s, start, i))) {
110
+ return;
111
+ }
112
+ start = -1;
113
+ }
114
+ }
115
+ else if (start < 0) {
116
+ start = i;
117
+ }
118
+ i += size;
119
+ }
120
+ if (start >= 0) {
121
+ _yield($.sliceString(s, start, undefined));
122
+ }
123
+ };
124
+ }
125
+ // FieldsFuncSeq returns an iterator over substrings of s split around runs of
126
+ // Unicode code points satisfying f(c).
127
+ // The iterator yields the same strings that would be returned by [FieldsFunc](s),
128
+ // but without constructing the slice.
129
+ export function FieldsFuncSeq(s, f) {
130
+ return (_yield) => {
131
+ if (f === null) {
132
+ return;
133
+ }
134
+ let start = -1;
135
+ for (let i = 0; i < $.len(s);) {
136
+ let size = 1;
137
+ let r = $.indexString(s, i);
138
+ if (r >= utf8.RuneSelf) {
139
+ ;
140
+ [r, size] = utf8.DecodeRuneInString($.sliceString(s, i, undefined));
141
+ }
142
+ if (f(r)) {
143
+ if (start >= 0) {
144
+ if (!_yield($.sliceString(s, start, i))) {
145
+ return;
146
+ }
147
+ start = -1;
148
+ }
149
+ }
150
+ else if (start < 0) {
151
+ start = i;
152
+ }
153
+ i += size;
154
+ }
155
+ if (start >= 0) {
156
+ _yield($.sliceString(s, start, undefined));
157
+ }
158
+ };
159
+ }
160
+ //# sourceMappingURL=iter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iter.js","sourceRoot":"","sources":["../../../gs/strings/iter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
+ import * as io from '@goscript/io/index.js';
3
+ export declare class Reader {
4
+ get s(): string;
5
+ set s(value: string);
6
+ get i(): number;
7
+ set i(value: number);
8
+ get prevRune(): number;
9
+ set prevRune(value: number);
10
+ _fields: {
11
+ s: $.VarRef<string>;
12
+ i: $.VarRef<number>;
13
+ prevRune: $.VarRef<number>;
14
+ };
15
+ constructor(init?: Partial<{
16
+ i?: number;
17
+ prevRune?: number;
18
+ s?: string;
19
+ }>);
20
+ clone(): Reader;
21
+ Len(): number;
22
+ Size(): number;
23
+ Read(b: Uint8Array): [number, $.GoError];
24
+ ReadAt(b: Uint8Array, off: number): [number, $.GoError];
25
+ ReadByte(): [number, $.GoError];
26
+ UnreadByte(): $.GoError;
27
+ ReadRune(): [number, number, $.GoError];
28
+ UnreadRune(): $.GoError;
29
+ Seek(offset: number, whence: number): [number, $.GoError];
30
+ WriteTo(w: io.Writer): [number, $.GoError];
31
+ Reset(s: string): void;
32
+ static __typeInfo: $.StructTypeInfo;
33
+ }
34
+ export declare function NewReader(s: string): Reader | null;