goscript 0.0.38 → 0.0.40

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 (180) hide show
  1. package/compiler/analysis.go +15 -6
  2. package/compiler/compiler.go +184 -34
  3. package/compiler/expr-call.go +19 -9
  4. package/compiler/field.go +17 -3
  5. package/compiler/gs_dependencies_test.go +80 -0
  6. package/compiler/lit.go +12 -6
  7. package/compiler/output.go +10 -4
  8. package/compiler/spec.go +15 -2
  9. package/compiler/type-assert.go +111 -21
  10. package/compiler/type.go +37 -8
  11. package/dist/gs/builtin/builtin.d.ts +55 -0
  12. package/dist/gs/builtin/builtin.js +213 -0
  13. package/dist/gs/builtin/builtin.js.map +1 -1
  14. package/dist/gs/builtin/slice.js +13 -0
  15. package/dist/gs/builtin/slice.js.map +1 -1
  16. package/dist/gs/bytes/buffer.gs.d.ts +56 -0
  17. package/dist/gs/bytes/buffer.gs.js +611 -0
  18. package/dist/gs/bytes/buffer.gs.js.map +1 -0
  19. package/dist/gs/bytes/bytes.gs.d.ts +78 -0
  20. package/dist/gs/bytes/bytes.gs.js +1107 -0
  21. package/dist/gs/bytes/bytes.gs.js.map +1 -0
  22. package/dist/gs/bytes/index.d.ts +4 -0
  23. package/dist/gs/bytes/index.js +5 -0
  24. package/dist/gs/bytes/index.js.map +1 -0
  25. package/dist/gs/bytes/iter.gs.d.ts +9 -0
  26. package/dist/gs/bytes/iter.gs.js +143 -0
  27. package/dist/gs/bytes/iter.gs.js.map +1 -0
  28. package/dist/gs/bytes/reader.gs.d.ts +34 -0
  29. package/dist/gs/bytes/reader.gs.js +198 -0
  30. package/dist/gs/bytes/reader.gs.js.map +1 -0
  31. package/dist/gs/fmt/fmt.d.ts +49 -0
  32. package/dist/gs/fmt/fmt.js +322 -0
  33. package/dist/gs/fmt/fmt.js.map +1 -0
  34. package/dist/gs/fmt/index.d.ts +1 -0
  35. package/dist/gs/fmt/index.js +2 -0
  36. package/dist/gs/fmt/index.js.map +1 -0
  37. package/dist/gs/internal/bytealg/index.d.ts +14 -2
  38. package/dist/gs/internal/bytealg/index.js +114 -8
  39. package/dist/gs/internal/bytealg/index.js.map +1 -1
  40. package/dist/gs/path/filepath/index.d.ts +3 -0
  41. package/dist/gs/path/filepath/index.js +3 -0
  42. package/dist/gs/path/filepath/index.js.map +1 -0
  43. package/dist/gs/path/filepath/match.d.ts +3 -0
  44. package/dist/gs/path/filepath/match.js +212 -0
  45. package/dist/gs/path/filepath/match.js.map +1 -0
  46. package/dist/gs/path/filepath/path.d.ts +25 -0
  47. package/dist/gs/path/filepath/path.js +265 -0
  48. package/dist/gs/path/filepath/path.js.map +1 -0
  49. package/dist/gs/reflect/deepequal.d.ts +2 -1
  50. package/dist/gs/reflect/deepequal.js +5 -53
  51. package/dist/gs/reflect/deepequal.js.map +1 -1
  52. package/dist/gs/reflect/map.d.ts +14 -8
  53. package/dist/gs/reflect/map.js +15 -11
  54. package/dist/gs/reflect/map.js.map +1 -1
  55. package/dist/gs/reflect/type.d.ts +17 -9
  56. package/dist/gs/reflect/type.js +1 -1
  57. package/dist/gs/reflect/type.js.map +1 -1
  58. package/dist/gs/reflect/value.js +15 -6
  59. package/dist/gs/reflect/value.js.map +1 -1
  60. package/dist/gs/reflect/visiblefields.js +18 -12
  61. package/dist/gs/reflect/visiblefields.js.map +1 -1
  62. package/dist/gs/sort/index.d.ts +4 -0
  63. package/dist/gs/sort/index.js +4 -0
  64. package/dist/gs/sort/index.js.map +1 -0
  65. package/dist/gs/sort/search.gs.d.ts +6 -0
  66. package/dist/gs/sort/search.gs.js +125 -0
  67. package/dist/gs/sort/search.gs.js.map +1 -0
  68. package/dist/gs/sort/slice.gs.d.ts +4 -0
  69. package/dist/gs/sort/slice.gs.js +49 -0
  70. package/dist/gs/sort/slice.gs.js.map +1 -0
  71. package/dist/gs/sort/sort.gs.d.ts +37 -0
  72. package/dist/gs/sort/sort.gs.js +203 -0
  73. package/dist/gs/sort/sort.gs.js.map +1 -0
  74. package/dist/gs/unicode/utf8/utf8.d.ts +1 -1
  75. package/dist/gs/unicode/utf8/utf8.js +4 -2
  76. package/dist/gs/unicode/utf8/utf8.js.map +1 -1
  77. package/gs/builtin/builtin.ts +236 -0
  78. package/gs/builtin/slice.ts +17 -1
  79. package/gs/bytes/buffer.gs.ts +614 -0
  80. package/gs/bytes/bytes.gs.ts +1288 -0
  81. package/gs/bytes/godoc.txt +69 -0
  82. package/gs/bytes/index.ts +69 -0
  83. package/gs/bytes/iter.gs.ts +149 -0
  84. package/gs/bytes/metadata.go +12 -0
  85. package/gs/bytes/reader.gs.ts +230 -0
  86. package/gs/fmt/fmt.ts +407 -0
  87. package/gs/fmt/godoc.txt +382 -0
  88. package/gs/fmt/index.ts +31 -0
  89. package/gs/fmt/metadata.go +7 -0
  90. package/gs/internal/bytealg/index.ts +125 -10
  91. package/gs/internal/metadata.go +7 -0
  92. package/gs/io/metadata.go +11 -0
  93. package/gs/maps/metadata.go +8 -0
  94. package/gs/math/metadata.go +7 -0
  95. package/gs/os/metadata.go +17 -0
  96. package/gs/path/filepath/godoc.txt +35 -0
  97. package/gs/path/filepath/index.ts +27 -0
  98. package/gs/path/filepath/match.test.ts +274 -0
  99. package/gs/path/filepath/match.ts +249 -0
  100. package/gs/path/filepath/path.test.ts +246 -0
  101. package/gs/path/filepath/path.ts +328 -0
  102. package/gs/path/metadata.go +8 -0
  103. package/gs/reflect/deepequal.test.ts +41 -0
  104. package/gs/reflect/deepequal.ts +19 -4
  105. package/gs/reflect/map.test.ts +30 -0
  106. package/gs/reflect/map.ts +22 -18
  107. package/gs/reflect/metadata.go +7 -0
  108. package/gs/reflect/type.ts +19 -15
  109. package/gs/reflect/value.ts +21 -7
  110. package/gs/reflect/visiblefields.ts +17 -13
  111. package/gs/sort/godoc.txt +27 -0
  112. package/gs/sort/index.ts +24 -0
  113. package/gs/sort/search.gs.ts +128 -0
  114. package/gs/sort/slice.gs.ts +59 -0
  115. package/gs/sort/sort.gs.ts +227 -0
  116. package/gs/strconv/metadata.go +7 -0
  117. package/gs/strings/metadata.go +11 -0
  118. package/gs/sync/metadata.go +7 -0
  119. package/gs/unicode/utf8/utf8.ts +8 -5
  120. package/package.json +1 -1
  121. package/dist/gs/internal/testlog/index.d.ts +0 -1
  122. package/dist/gs/internal/testlog/index.js +0 -5
  123. package/dist/gs/internal/testlog/index.js.map +0 -1
  124. package/dist/gs/maps/iter.gs.d.ts +0 -7
  125. package/dist/gs/maps/iter.gs.js +0 -65
  126. package/dist/gs/maps/iter.gs.js.map +0 -1
  127. package/dist/gs/maps/maps.gs.d.ts +0 -7
  128. package/dist/gs/maps/maps.gs.js +0 -79
  129. package/dist/gs/maps/maps.gs.js.map +0 -1
  130. package/dist/gs/reflect/abi.d.ts +0 -59
  131. package/dist/gs/reflect/abi.gs.d.ts +0 -59
  132. package/dist/gs/reflect/abi.gs.js +0 -79
  133. package/dist/gs/reflect/abi.gs.js.map +0 -1
  134. package/dist/gs/reflect/abi.js +0 -79
  135. package/dist/gs/reflect/abi.js.map +0 -1
  136. package/dist/gs/reflect/badlinkname.d.ts +0 -52
  137. package/dist/gs/reflect/badlinkname.gs.d.ts +0 -52
  138. package/dist/gs/reflect/badlinkname.gs.js +0 -72
  139. package/dist/gs/reflect/badlinkname.gs.js.map +0 -1
  140. package/dist/gs/reflect/badlinkname.js +0 -72
  141. package/dist/gs/reflect/badlinkname.js.map +0 -1
  142. package/dist/gs/reflect/deepequal.gs.d.ts +0 -25
  143. package/dist/gs/reflect/deepequal.gs.js +0 -308
  144. package/dist/gs/reflect/deepequal.gs.js.map +0 -1
  145. package/dist/gs/reflect/float32reg_generic.gs.d.ts +0 -2
  146. package/dist/gs/reflect/float32reg_generic.gs.js +0 -10
  147. package/dist/gs/reflect/float32reg_generic.gs.js.map +0 -1
  148. package/dist/gs/reflect/index.gs.d.ts +0 -1
  149. package/dist/gs/reflect/index.gs.js +0 -3
  150. package/dist/gs/reflect/index.gs.js.map +0 -1
  151. package/dist/gs/reflect/iter.gs.d.ts +0 -3
  152. package/dist/gs/reflect/iter.gs.js +0 -24
  153. package/dist/gs/reflect/iter.gs.js.map +0 -1
  154. package/dist/gs/reflect/makefunc.gs.d.ts +0 -34
  155. package/dist/gs/reflect/makefunc.gs.js +0 -288
  156. package/dist/gs/reflect/makefunc.gs.js.map +0 -1
  157. package/dist/gs/reflect/map_swiss.gs.d.ts +0 -14
  158. package/dist/gs/reflect/map_swiss.gs.js +0 -70
  159. package/dist/gs/reflect/map_swiss.gs.js.map +0 -1
  160. package/dist/gs/reflect/reflect.gs.d.ts +0 -132
  161. package/dist/gs/reflect/reflect.gs.js +0 -437
  162. package/dist/gs/reflect/reflect.gs.js.map +0 -1
  163. package/dist/gs/reflect/swapper.gs.d.ts +0 -1
  164. package/dist/gs/reflect/swapper.gs.js +0 -32
  165. package/dist/gs/reflect/swapper.gs.js.map +0 -1
  166. package/dist/gs/reflect/type.gs.d.ts +0 -4
  167. package/dist/gs/reflect/type.gs.js +0 -21
  168. package/dist/gs/reflect/type.gs.js.map +0 -1
  169. package/dist/gs/reflect/value.gs.d.ts +0 -4
  170. package/dist/gs/reflect/value.gs.js +0 -12
  171. package/dist/gs/reflect/value.gs.js.map +0 -1
  172. package/dist/gs/reflect/visiblefields.gs.d.ts +0 -3
  173. package/dist/gs/reflect/visiblefields.gs.js +0 -123
  174. package/dist/gs/reflect/visiblefields.gs.js.map +0 -1
  175. package/dist/gs/stringslite/index.d.ts +0 -1
  176. package/dist/gs/stringslite/index.js +0 -2
  177. package/dist/gs/stringslite/index.js.map +0 -1
  178. package/dist/gs/stringslite/strings.d.ts +0 -11
  179. package/dist/gs/stringslite/strings.js +0 -67
  180. package/dist/gs/stringslite/strings.js.map +0 -1
@@ -0,0 +1,227 @@
1
+ import * as $ from '../builtin/builtin.js'
2
+
3
+ // Interface defines the methods required for sorting
4
+ export interface Interface {
5
+ Len(): number
6
+ Less(i: number, j: number): boolean
7
+ Swap(i: number, j: number): void
8
+ }
9
+
10
+ // Helper type for slice metadata
11
+ interface SliceMetadata<T> {
12
+ backing: T[]
13
+ offset: number
14
+ length: number
15
+ capacity: number
16
+ }
17
+
18
+ // IntSlice type for sorting integers
19
+ export class IntSlice {
20
+ constructor(private _value: $.Slice<number>) {}
21
+
22
+ Len(): number {
23
+ return $.len(this._value)
24
+ }
25
+
26
+ Less(i: number, j: number): boolean {
27
+ return ($.index(this._value, i) as number) < ($.index(this._value, j) as number)
28
+ }
29
+
30
+ Swap(i: number, j: number): void {
31
+ const temp = $.index(this._value, i) as number
32
+ if (Array.isArray(this._value)) {
33
+ this._value[i] = $.index(this._value, j) as number
34
+ this._value[j] = temp
35
+ } else if (this._value && typeof this._value === 'object' && '__meta__' in this._value) {
36
+ const meta = (this._value as any).__meta__ as SliceMetadata<number>
37
+ const backing = meta.backing
38
+ backing[meta.offset + i] = $.index(this._value, j) as number
39
+ backing[meta.offset + j] = temp
40
+ }
41
+ }
42
+ }
43
+
44
+ // Float64Slice type for sorting float64s
45
+ export class Float64Slice {
46
+ constructor(private _value: $.Slice<number>) {}
47
+
48
+ Len(): number {
49
+ return $.len(this._value)
50
+ }
51
+
52
+ Less(i: number, j: number): boolean {
53
+ return ($.index(this._value, i) as number) < ($.index(this._value, j) as number)
54
+ }
55
+
56
+ Swap(i: number, j: number): void {
57
+ const temp = $.index(this._value, i) as number
58
+ if (Array.isArray(this._value)) {
59
+ this._value[i] = $.index(this._value, j) as number
60
+ this._value[j] = temp
61
+ } else if (this._value && typeof this._value === 'object' && '__meta__' in this._value) {
62
+ const meta = (this._value as any).__meta__ as SliceMetadata<number>
63
+ const backing = meta.backing
64
+ backing[meta.offset + i] = $.index(this._value, j) as number
65
+ backing[meta.offset + j] = temp
66
+ }
67
+ }
68
+ }
69
+
70
+ // StringSlice type for sorting strings
71
+ export class StringSlice {
72
+ constructor(private _value: $.Slice<string>) {}
73
+
74
+ Len(): number {
75
+ return $.len(this._value)
76
+ }
77
+
78
+ Less(i: number, j: number): boolean {
79
+ return ($.index(this._value, i) as string) < ($.index(this._value, j) as string)
80
+ }
81
+
82
+ Swap(i: number, j: number): void {
83
+ const temp = $.index(this._value, i) as string
84
+ if (Array.isArray(this._value)) {
85
+ this._value[i] = $.index(this._value, j) as string
86
+ this._value[j] = temp
87
+ } else if (this._value && typeof this._value === 'object' && '__meta__' in this._value) {
88
+ const meta = (this._value as any).__meta__ as SliceMetadata<string>
89
+ const backing = meta.backing
90
+ backing[meta.offset + i] = $.index(this._value, j) as string
91
+ backing[meta.offset + j] = temp
92
+ }
93
+ }
94
+ }
95
+
96
+ // Sort sorts data in ascending order as determined by the Less method
97
+ export function Sort(data: Interface): void {
98
+ // Use a simple insertion sort for now - can be optimized later
99
+ const n = data.Len()
100
+ for (let i = 1; i < n; i++) {
101
+ for (let j = i; j > 0 && data.Less(j, j - 1); j--) {
102
+ data.Swap(j, j - 1)
103
+ }
104
+ }
105
+ }
106
+
107
+ // Stable sorts data while keeping the original order of equal elements
108
+ export function Stable(data: Interface): void {
109
+ // For simplicity, use the same sort - can be improved later
110
+ Sort(data)
111
+ }
112
+
113
+ // IsSorted reports whether data is sorted
114
+ export function IsSorted(data: Interface): boolean {
115
+ const n = data.Len()
116
+ for (let i = n - 1; i > 0; i--) {
117
+ if (data.Less(i, i - 1)) {
118
+ return false
119
+ }
120
+ }
121
+ return true
122
+ }
123
+
124
+ // Reverse returns the reverse order for data
125
+ export function Reverse(data: Interface): Interface {
126
+ return {
127
+ Len: () => data.Len(),
128
+ Less: (i: number, j: number) => data.Less(j, i),
129
+ Swap: (i: number, j: number) => data.Swap(i, j)
130
+ }
131
+ }
132
+
133
+ // Helper function to swap elements in a slice
134
+ function swapInSlice<T>(slice: $.Slice<T>, i: number, j: number): void {
135
+ if (!slice) return
136
+
137
+ const temp = $.index(slice, i)
138
+ if (Array.isArray(slice)) {
139
+ const val_j = $.index(slice, j)
140
+ const val_i = temp
141
+ slice[i] = val_j as T
142
+ slice[j] = val_i as T
143
+ } else if (typeof slice === 'object' && '__meta__' in slice) {
144
+ const meta = (slice as any).__meta__ as SliceMetadata<T>
145
+ const backing = meta.backing
146
+ backing[meta.offset + i] = $.index(slice, j) as T
147
+ backing[meta.offset + j] = temp as T
148
+ }
149
+ }
150
+
151
+ // Ints sorts a slice of ints in increasing order
152
+ export function Ints(x: $.Slice<number>): void {
153
+ if (!x) return
154
+
155
+ const n = $.len(x)
156
+ // Simple insertion sort
157
+ for (let i = 1; i < n; i++) {
158
+ for (let j = i; j > 0 && ($.index(x, j) as number) < ($.index(x, j - 1) as number); j--) {
159
+ swapInSlice(x, j, j - 1)
160
+ }
161
+ }
162
+ }
163
+
164
+ // IntsAreSorted reports whether the slice x is sorted in increasing order
165
+ export function IntsAreSorted(x: $.Slice<number>): boolean {
166
+ if (!x) return true
167
+
168
+ const n = $.len(x)
169
+ for (let i = n - 1; i > 0; i--) {
170
+ if (($.index(x, i) as number) < ($.index(x, i - 1) as number)) {
171
+ return false
172
+ }
173
+ }
174
+ return true
175
+ }
176
+
177
+ // Float64s sorts a slice of float64s in increasing order
178
+ export function Float64s(x: $.Slice<number>): void {
179
+ if (!x) return
180
+
181
+ const n = $.len(x)
182
+ // Simple insertion sort
183
+ for (let i = 1; i < n; i++) {
184
+ for (let j = i; j > 0 && ($.index(x, j) as number) < ($.index(x, j - 1) as number); j--) {
185
+ swapInSlice(x, j, j - 1)
186
+ }
187
+ }
188
+ }
189
+
190
+ // Float64sAreSorted reports whether the slice x is sorted in increasing order
191
+ export function Float64sAreSorted(x: $.Slice<number>): boolean {
192
+ if (!x) return true
193
+
194
+ const n = $.len(x)
195
+ for (let i = n - 1; i > 0; i--) {
196
+ if (($.index(x, i) as number) < ($.index(x, i - 1) as number)) {
197
+ return false
198
+ }
199
+ }
200
+ return true
201
+ }
202
+
203
+ // Strings sorts a slice of strings in increasing order
204
+ export function Strings(x: $.Slice<string>): void {
205
+ if (!x) return
206
+
207
+ const n = $.len(x)
208
+ // Simple insertion sort
209
+ for (let i = 1; i < n; i++) {
210
+ for (let j = i; j > 0 && ($.index(x, j) as string) < ($.index(x, j - 1) as string); j--) {
211
+ swapInSlice(x, j, j - 1)
212
+ }
213
+ }
214
+ }
215
+
216
+ // StringsAreSorted reports whether the slice x is sorted in increasing order
217
+ export function StringsAreSorted(x: $.Slice<string>): boolean {
218
+ if (!x) return true
219
+
220
+ const n = $.len(x)
221
+ for (let i = n - 1; i > 0; i--) {
222
+ if (($.index(x, i) as string) < ($.index(x, i - 1) as string)) {
223
+ return false
224
+ }
225
+ }
226
+ return true
227
+ }
@@ -0,0 +1,7 @@
1
+ package strconv
2
+
3
+ // GsDependencies lists the import paths that this gs/ package requires
4
+ // These dependencies will be automatically copied when this package is included
5
+ var GsDependencies = []string{
6
+ "errors",
7
+ }
@@ -0,0 +1,11 @@
1
+ package strings
2
+
3
+ // GsDependencies lists the import paths that this gs/ package requires
4
+ // These dependencies will be automatically copied when this package is included
5
+ var GsDependencies = []string{
6
+ "errors",
7
+ "io",
8
+ "iter",
9
+ "unicode",
10
+ "unicode/utf8",
11
+ }
@@ -0,0 +1,7 @@
1
+ package sync
2
+
3
+ // GsDependencies lists the import paths that this gs/ package requires
4
+ // These dependencies will be automatically copied when this package is included
5
+ var GsDependencies = []string{
6
+ "unsafe",
7
+ }
@@ -63,18 +63,21 @@ export function DecodeLastRuneInString(s: string): [number, number] {
63
63
  }
64
64
 
65
65
  // DecodeRune unpacks the first UTF-8 encoding in p and returns the rune and its width in bytes.
66
- export function DecodeRune(p: Uint8Array): [number, number] {
67
- if (p.length === 0) {
66
+ export function DecodeRune(p: $.Bytes): [number, number] {
67
+ if (!p?.length) {
68
68
  return [RuneError, 0]
69
69
  }
70
70
 
71
- if (p[0] < RuneSelf) {
72
- return [p[0], 1]
71
+ if (p![0] < RuneSelf) {
72
+ return [p![0], 1]
73
73
  }
74
74
 
75
+ // Convert p to Uint8Array to satisfy AllowsSharedBufferSource requirement
76
+ const bytes = $.normalizeBytes(p)
77
+
75
78
  // Convert bytes to string and decode
76
79
  const decoder = new TextDecoder('utf-8', { fatal: false })
77
- const str = decoder.decode(p.slice(0, Math.min(4, p.length)))
80
+ const str = decoder.decode(bytes.slice(0, Math.min(4, bytes.length)))
78
81
  if (str.length === 0 || str === '\uFFFD') {
79
82
  return [RuneError, 1]
80
83
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "goscript",
3
3
  "description": "Go to TypeScript transpiler",
4
- "version": "0.0.38",
4
+ "version": "0.0.40",
5
5
  "author": {
6
6
  "name": "Aperture Robotics LLC.",
7
7
  "email": "support@aperture.us",
@@ -1 +0,0 @@
1
- export declare function Getenv(key: string): void;
@@ -1,5 +0,0 @@
1
- // Stub implementations for internal/testlog package
2
- export function Getenv(key) {
3
- // Stub for test logging - no-op in runtime
4
- }
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/internal/testlog/index.ts"],"names":[],"mappings":"AAEA,oDAAoD;AAEpD,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,2CAA2C;AAC7C,CAAC"}
@@ -1,7 +0,0 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
2
- import * as iter from "@goscript/iter/index.js";
3
- export declare function All<K extends $.Comparable, V>(m: Map<K, V>): iter.Seq2<K, V>;
4
- export declare function Keys<K extends $.Comparable, V>(m: Map<K, V>): iter.Seq<K>;
5
- export declare function Values<K extends $.Comparable, V>(m: Map<K, V>): iter.Seq<V>;
6
- export declare function Insert<K extends $.Comparable, V>(m: Map<K, V>, seq: iter.Seq2<K, V>): void;
7
- export declare function Collect<K extends $.Comparable, V extends any>(seq: iter.Seq2<K, V>): Map<K, V>;
@@ -1,65 +0,0 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
2
- // All returns an iterator over key-value pairs from m.
3
- // The iteration order is not specified and is not guaranteed
4
- // to be the same from one call to the next.
5
- export function All(m) {
6
- return (_yield) => {
7
- for (const [k, v] of m.entries()) {
8
- {
9
- if (!_yield(k, v)) {
10
- return;
11
- }
12
- }
13
- }
14
- };
15
- }
16
- // Keys returns an iterator over keys in m.
17
- // The iteration order is not specified and is not guaranteed
18
- // to be the same from one call to the next.
19
- export function Keys(m) {
20
- return (_yield) => {
21
- for (const [k, _v] of m.entries()) {
22
- {
23
- if (!_yield(k)) {
24
- return;
25
- }
26
- }
27
- }
28
- };
29
- }
30
- // Values returns an iterator over values in m.
31
- // The iteration order is not specified and is not guaranteed
32
- // to be the same from one call to the next.
33
- export function Values(m) {
34
- return (_yield) => {
35
- for (const [_k, v] of m.entries()) {
36
- {
37
- if (!_yield(v)) {
38
- return;
39
- }
40
- }
41
- }
42
- };
43
- }
44
- // Insert adds the key-value pairs from seq to m.
45
- // If a key in seq already exists in m, its value will be overwritten.
46
- export function Insert(m, seq) {
47
- ;
48
- (() => {
49
- let shouldContinue = true;
50
- seq((k, v) => {
51
- {
52
- $.mapSet(m, k, v);
53
- }
54
- return shouldContinue;
55
- });
56
- })();
57
- }
58
- // Collect collects key-value pairs from seq into a new map
59
- // and returns it.
60
- export function Collect(seq) {
61
- let m = $.makeMap();
62
- Insert(m, seq);
63
- return m;
64
- }
65
- //# sourceMappingURL=iter.gs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iter.gs.js","sourceRoot":"","sources":["../../../gs/maps/iter.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAIlD,uDAAuD;AACvD,6DAA6D;AAC7D,4CAA4C;AAC5C,MAAM,UAAU,GAAG,CAA4B,CAAY;IAC1D,OAAO,CAAC,MAA0C,EAAQ,EAAE;QAC3D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAClC,CAAC;gBACA,IAAI,CAAC,MAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACpB,OAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAA;AACF,CAAC;AAED,2CAA2C;AAC3C,6DAA6D;AAC7D,4CAA4C;AAC5C,MAAM,UAAU,IAAI,CAA4B,CAAY;IAC3D,OAAO,CAAC,MAAmC,EAAQ,EAAE;QACpD,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACnC,CAAC;gBACA,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjB,OAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAA;AACF,CAAC;AAED,+CAA+C;AAC/C,6DAA6D;AAC7D,4CAA4C;AAC5C,MAAM,UAAU,MAAM,CAA4B,CAAY;IAC7D,OAAO,CAAC,MAAmC,EAAQ,EAAE;QACpD,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACnC,CAAC;gBACA,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjB,OAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAA;AACF,CAAC;AAED,iDAAiD;AACjD,sEAAsE;AACtE,MAAM,UAAU,MAAM,CAA4B,CAAY,EAAE,GAAoB;IACnF,CAAC;IAAA,CAAC,GAAG,EAAE;QACN,IAAI,cAAc,GAAG,IAAI,CAAA;QACzB,GAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,CAAC;gBACA,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAClB,CAAC;YACD,OAAO,cAAc,CAAA;QACtB,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,EAAE,CAAA;AACL,CAAC;AAED,2DAA2D;AAC3D,kBAAkB;AAClB,MAAM,UAAU,OAAO,CAAwC,GAAoB;IAClF,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAQ,CAAA;IACzB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACd,OAAO,CAAC,CAAA;AACT,CAAC"}
@@ -1,7 +0,0 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
2
- export declare function Equal<K extends $.Comparable, V extends $.Comparable>(m1: Map<K, V>, m2: Map<K, V>): boolean;
3
- export declare function EqualFunc<K extends $.Comparable, V1, V2>(m1: Map<K, V1>, m2: Map<K, V2>, eq: ((p0: V1, p1: V2) => boolean) | null): boolean;
4
- export declare function clone<K extends $.Comparable, V>(m: Map<K, V> | null): Map<K, V> | null;
5
- export declare function Clone<K extends $.Comparable, V>(m: Map<K, V>): Map<K, V>;
6
- export declare function Copy<K extends $.Comparable, V>(dst: Map<K, V>, src: Map<K, V>): void;
7
- export declare function DeleteFunc<K extends $.Comparable, V>(m: Map<K, V>, del: ((p0: K, p1: V) => boolean) | null): void;
@@ -1,79 +0,0 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
2
- // Equal reports whether two maps contain the same key/value pairs.
3
- // Values are compared using ==.
4
- export function Equal(m1, m2) {
5
- if ($.len(m1) != $.len(m2)) {
6
- return false;
7
- }
8
- for (const [k, v1] of m1.entries()) {
9
- {
10
- {
11
- let [v2, ok] = $.mapGet(m2, k, null);
12
- if (!ok || v1 != v2) {
13
- return false;
14
- }
15
- }
16
- }
17
- }
18
- return true;
19
- }
20
- // EqualFunc is like Equal, but compares values using eq.
21
- // Keys are still compared with ==.
22
- export function EqualFunc(m1, m2, eq) {
23
- if ($.len(m1) != $.len(m2)) {
24
- return false;
25
- }
26
- for (const [k, v1] of m1.entries()) {
27
- {
28
- {
29
- let [v2, ok] = $.mapGet(m2, k, null);
30
- if (!ok || !eq(v1, v2)) {
31
- return false;
32
- }
33
- }
34
- }
35
- }
36
- return true;
37
- }
38
- // clone returns a shallow copy of the map.
39
- export function clone(m) {
40
- if (m == null) {
41
- return null;
42
- }
43
- const result = $.makeMap();
44
- for (const [k, v] of m.entries()) {
45
- $.mapSet(result, k, v);
46
- }
47
- return result;
48
- }
49
- // Clone returns a copy of m. This is a shallow clone:
50
- // the new keys and values are set using ordinary assignment.
51
- export function Clone(m) {
52
- // Preserve nil in case it matters.
53
- if (m == null) {
54
- return null;
55
- }
56
- return clone(m);
57
- }
58
- // Copy copies all key/value pairs in src adding them to dst.
59
- // When a key in src is already present in dst,
60
- // the value in dst will be overwritten by the value associated
61
- // with the key in src.
62
- export function Copy(dst, src) {
63
- for (const [k, v] of src.entries()) {
64
- {
65
- $.mapSet(dst, k, v);
66
- }
67
- }
68
- }
69
- // DeleteFunc deletes any key/value pairs from m for which del returns true.
70
- export function DeleteFunc(m, del) {
71
- for (const [k, v] of m.entries()) {
72
- {
73
- if (del(k, v)) {
74
- $.deleteMapEntry(m, k);
75
- }
76
- }
77
- }
78
- }
79
- //# sourceMappingURL=maps.gs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"maps.gs.js","sourceRoot":"","sources":["../../../gs/maps/maps.gs.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
2
- import { uintptr, Pointer } from "./types.js";
3
- export interface Type {
4
- Kind(): number;
5
- Align(): number;
6
- Size(): number;
7
- }
8
- export declare class abiStep {
9
- freg: number;
10
- ireg: number;
11
- kind: number;
12
- offset: uintptr;
13
- size: uintptr;
14
- stkOff: uintptr;
15
- constructor(init?: Partial<{
16
- freg?: number;
17
- ireg?: number;
18
- kind?: number;
19
- offset?: uintptr;
20
- size?: uintptr;
21
- stkOff?: uintptr;
22
- }>);
23
- }
24
- export declare class abiSeq {
25
- iregs: number;
26
- fregs: number;
27
- stackBytes: uintptr;
28
- steps: $.Slice<abiStep>;
29
- valueStart: $.Slice<number>;
30
- constructor(init?: Partial<{
31
- fregs?: number;
32
- iregs?: number;
33
- stackBytes?: uintptr;
34
- steps?: $.Slice<abiStep>;
35
- valueStart?: $.Slice<number>;
36
- }>);
37
- print(): void;
38
- assignIntN(offset: uintptr, size: uintptr, n: number, ptrMap: number): boolean;
39
- assignFloatN(offset: uintptr, size: uintptr, n: number): boolean;
40
- stackAssign(size: uintptr, alignment: uintptr): void;
41
- regAssign(t: Type | null, offset: uintptr): boolean;
42
- }
43
- export declare class abiDesc {
44
- call: abiSeq;
45
- ret: abiSeq;
46
- stackCallArgsSize: uintptr;
47
- retOffset: uintptr;
48
- spill: uintptr;
49
- inRegPtrs: any;
50
- outRegPtrs: any;
51
- stackPtrs: any;
52
- constructor(init?: any);
53
- dump(): void;
54
- }
55
- export declare function newAbiDesc(t: any, rcvr: any): abiDesc;
56
- export declare function intFromReg(r: any, reg: number, argSize: uintptr, to: Pointer): void;
57
- export declare function intToReg(r: any, reg: number, argSize: uintptr, from: Pointer): void;
58
- export declare function floatFromReg(r: any, reg: number, argSize: uintptr, to: Pointer): void;
59
- export declare function floatToReg(r: any, reg: number, argSize: uintptr, from: Pointer): void;
@@ -1,59 +0,0 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
2
- import { uintptr, Pointer } from "./types.js";
3
- export interface Type {
4
- Kind(): number;
5
- Align(): number;
6
- Size(): number;
7
- }
8
- export declare class abiStep {
9
- freg: number;
10
- ireg: number;
11
- kind: number;
12
- offset: uintptr;
13
- size: uintptr;
14
- stkOff: uintptr;
15
- constructor(init?: Partial<{
16
- freg?: number;
17
- ireg?: number;
18
- kind?: number;
19
- offset?: uintptr;
20
- size?: uintptr;
21
- stkOff?: uintptr;
22
- }>);
23
- }
24
- export declare class abiSeq {
25
- iregs: number;
26
- fregs: number;
27
- stackBytes: uintptr;
28
- steps: $.Slice<abiStep>;
29
- valueStart: $.Slice<number>;
30
- constructor(init?: Partial<{
31
- fregs?: number;
32
- iregs?: number;
33
- stackBytes?: uintptr;
34
- steps?: $.Slice<abiStep>;
35
- valueStart?: $.Slice<number>;
36
- }>);
37
- print(): void;
38
- assignIntN(offset: uintptr, size: uintptr, n: number, ptrMap: number): boolean;
39
- assignFloatN(offset: uintptr, size: uintptr, n: number): boolean;
40
- stackAssign(size: uintptr, alignment: uintptr): void;
41
- regAssign(t: Type | null, offset: uintptr): boolean;
42
- }
43
- export declare class abiDesc {
44
- call: abiSeq;
45
- ret: abiSeq;
46
- stackCallArgsSize: uintptr;
47
- retOffset: uintptr;
48
- spill: uintptr;
49
- inRegPtrs: any;
50
- outRegPtrs: any;
51
- stackPtrs: any;
52
- constructor(init?: any);
53
- dump(): void;
54
- }
55
- export declare function newAbiDesc(t: any, rcvr: any): abiDesc;
56
- export declare function intFromReg(r: any, reg: number, argSize: uintptr, to: Pointer): void;
57
- export declare function intToReg(r: any, reg: number, argSize: uintptr, from: Pointer): void;
58
- export declare function floatFromReg(r: any, reg: number, argSize: uintptr, to: Pointer): void;
59
- export declare function floatToReg(r: any, reg: number, argSize: uintptr, from: Pointer): void;
@@ -1,79 +0,0 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
2
- export class abiStep {
3
- freg = 0;
4
- ireg = 0;
5
- kind = 0;
6
- offset = 0;
7
- size = 0;
8
- stkOff = 0;
9
- constructor(init) {
10
- if (init) {
11
- Object.assign(this, init);
12
- }
13
- }
14
- }
15
- export class abiSeq {
16
- iregs = 0;
17
- fregs = 0;
18
- stackBytes = 0;
19
- steps = $.makeSlice(0, 0);
20
- valueStart = $.makeSlice(0, 0);
21
- constructor(init) {
22
- if (init) {
23
- Object.assign(this, init);
24
- }
25
- }
26
- print() {
27
- // Stub implementation
28
- }
29
- assignIntN(offset, size, n, ptrMap) {
30
- // Stub implementation
31
- return false;
32
- }
33
- assignFloatN(offset, size, n) {
34
- // Stub implementation
35
- return false;
36
- }
37
- stackAssign(size, alignment) {
38
- // Stub implementation
39
- }
40
- regAssign(t, offset) {
41
- // Stub implementation
42
- return false;
43
- }
44
- }
45
- export class abiDesc {
46
- call = new abiSeq();
47
- ret = new abiSeq();
48
- stackCallArgsSize = 0;
49
- retOffset = 0;
50
- spill = 0;
51
- inRegPtrs = {};
52
- outRegPtrs = {};
53
- stackPtrs = null;
54
- constructor(init) {
55
- if (init) {
56
- Object.assign(this, init);
57
- }
58
- }
59
- dump() {
60
- // Stub implementation
61
- }
62
- }
63
- // Stub functions
64
- export function newAbiDesc(t, rcvr) {
65
- return new abiDesc();
66
- }
67
- export function intFromReg(r, reg, argSize, to) {
68
- // Stub implementation
69
- }
70
- export function intToReg(r, reg, argSize, from) {
71
- // Stub implementation
72
- }
73
- export function floatFromReg(r, reg, argSize, to) {
74
- // Stub implementation
75
- }
76
- export function floatToReg(r, reg, argSize, from) {
77
- // Stub implementation
78
- }
79
- //# sourceMappingURL=abi.gs.js.map