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,212 @@
1
+ // Pattern matching functions for filepath
2
+ export const ErrBadPattern = new Error('syntax error in pattern');
3
+ // Match reports whether name matches the shell file name pattern.
4
+ // The pattern syntax is:
5
+ //
6
+ // pattern:
7
+ // { term }
8
+ // term:
9
+ // '*' matches any sequence of non-Separator characters
10
+ // '?' matches any single non-Separator character
11
+ // '[' [ '^' ] { character-range } ']'
12
+ // character class (must be non-empty)
13
+ // c matches character c (c != '*', '?', '\\', '[')
14
+ // '\\' c matches character c
15
+ //
16
+ // character-range:
17
+ // c matches character c (c != '\\', '-', ']')
18
+ // '\\' c matches character c
19
+ // lo '-' hi matches character c for lo <= c <= hi
20
+ //
21
+ // Match requires pattern to match all of name, not just a substring.
22
+ // The only possible returned error is ErrBadPattern, when pattern
23
+ // is malformed.
24
+ export function Match(pattern, name) {
25
+ try {
26
+ // Validate pattern first
27
+ validatePattern(pattern);
28
+ return [matchPattern(pattern, name), null];
29
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
+ }
31
+ catch (err) {
32
+ return [false, ErrBadPattern];
33
+ }
34
+ }
35
+ function validatePattern(pattern) {
36
+ let i = 0;
37
+ while (i < pattern.length) {
38
+ const char = pattern[i];
39
+ switch (char) {
40
+ case '\\':
41
+ // Must be followed by another character
42
+ i++;
43
+ if (i >= pattern.length) {
44
+ throw new Error('bad pattern');
45
+ }
46
+ i++;
47
+ break;
48
+ case '[': {
49
+ // Must have a properly closed character class
50
+ i++;
51
+ let foundContent = false;
52
+ let foundClose = false;
53
+ // Skip negation
54
+ if (i < pattern.length && pattern[i] === '^') {
55
+ i++;
56
+ }
57
+ while (i < pattern.length) {
58
+ if (pattern[i] === ']') {
59
+ foundClose = true;
60
+ i++;
61
+ break;
62
+ }
63
+ foundContent = true;
64
+ if (pattern[i] === '\\') {
65
+ i++; // Skip escape character
66
+ if (i >= pattern.length) {
67
+ throw new Error('bad pattern');
68
+ }
69
+ }
70
+ i++;
71
+ }
72
+ if (!foundClose || !foundContent) {
73
+ throw new Error('bad pattern');
74
+ }
75
+ break;
76
+ }
77
+ default:
78
+ i++;
79
+ break;
80
+ }
81
+ }
82
+ }
83
+ function matchPattern(pattern, name) {
84
+ let patternIndex = 0;
85
+ let nameIndex = 0;
86
+ while (patternIndex < pattern.length && nameIndex < name.length) {
87
+ const p = pattern[patternIndex];
88
+ switch (p) {
89
+ case '*':
90
+ // Handle star - match any sequence of characters
91
+ patternIndex++;
92
+ if (patternIndex >= pattern.length) {
93
+ // Pattern ends with *, matches rest of name
94
+ return true;
95
+ }
96
+ // Try to match the rest of the pattern with remaining name
97
+ for (let i = nameIndex; i <= name.length; i++) {
98
+ if (matchPattern(pattern.substring(patternIndex), name.substring(i))) {
99
+ return true;
100
+ }
101
+ }
102
+ return false;
103
+ case '?':
104
+ // Match any single character except separator
105
+ if (name[nameIndex] === '/') {
106
+ return false;
107
+ }
108
+ patternIndex++;
109
+ nameIndex++;
110
+ break;
111
+ case '[': {
112
+ // Character class
113
+ const [matched, newPatternIndex] = matchCharClass(pattern, patternIndex, name[nameIndex]);
114
+ if (!matched) {
115
+ return false;
116
+ }
117
+ patternIndex = newPatternIndex;
118
+ nameIndex++;
119
+ break;
120
+ }
121
+ case '\\':
122
+ // Escaped character (pattern already validated)
123
+ patternIndex++;
124
+ if (pattern[patternIndex] !== name[nameIndex]) {
125
+ return false;
126
+ }
127
+ patternIndex++;
128
+ nameIndex++;
129
+ break;
130
+ default:
131
+ // Literal character
132
+ if (p !== name[nameIndex]) {
133
+ return false;
134
+ }
135
+ patternIndex++;
136
+ nameIndex++;
137
+ break;
138
+ }
139
+ }
140
+ // Handle any remaining stars in pattern
141
+ while (patternIndex < pattern.length && pattern[patternIndex] === '*') {
142
+ patternIndex++;
143
+ }
144
+ // Both pattern and name should be fully consumed
145
+ return patternIndex >= pattern.length && nameIndex >= name.length;
146
+ }
147
+ function matchCharClass(pattern, start, char) {
148
+ let index = start + 1;
149
+ let negated = false;
150
+ // Check for negation
151
+ if (index < pattern.length && pattern[index] === '^') {
152
+ negated = true;
153
+ index++;
154
+ }
155
+ let matched = false;
156
+ while (index < pattern.length) {
157
+ if (pattern[index] === ']') {
158
+ index++;
159
+ break;
160
+ }
161
+ if (pattern[index] === '\\') {
162
+ // Escaped character
163
+ index++;
164
+ if (pattern[index] === char) {
165
+ matched = true;
166
+ }
167
+ index++;
168
+ }
169
+ else if (index + 2 < pattern.length &&
170
+ pattern[index + 1] === '-' &&
171
+ pattern[index + 2] !== ']') {
172
+ // Character range
173
+ const lo = pattern[index];
174
+ const hi = pattern[index + 2];
175
+ if (char >= lo && char <= hi) {
176
+ matched = true;
177
+ }
178
+ index += 3;
179
+ }
180
+ else {
181
+ // Single character
182
+ if (pattern[index] === char) {
183
+ matched = true;
184
+ }
185
+ index++;
186
+ }
187
+ }
188
+ if (negated) {
189
+ matched = !matched;
190
+ }
191
+ return [matched, index];
192
+ }
193
+ // Glob returns the names of all files matching pattern or null
194
+ // if there is no matching file. The syntax of patterns is the same
195
+ // as in Match. The pattern may describe hierarchical names such as
196
+ // /usr/*/bin/ed (assuming the Separator is '/').
197
+ //
198
+ // Glob ignores file system errors such as I/O errors reading directories.
199
+ // The only possible returned error is ErrBadPattern, when pattern is malformed.
200
+ export function Glob(pattern) {
201
+ try {
202
+ // Validate the pattern using the same logic as Match
203
+ validatePattern(pattern);
204
+ // We don't have filesystem access, so return empty array
205
+ return [[], null];
206
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
207
+ }
208
+ catch (err) {
209
+ return [[], ErrBadPattern];
210
+ }
211
+ }
212
+ //# sourceMappingURL=match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../../../gs/path/filepath/match.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export declare const Separator = "/";
2
+ export declare const ListSeparator = ":";
3
+ export declare const SkipDir: Error;
4
+ export declare const SkipAll: Error;
5
+ export declare function Base(path: string): string;
6
+ export declare function Dir(path: string): string;
7
+ export declare function Ext(path: string): string;
8
+ export declare function Clean(path: string): string;
9
+ export declare function Join(...elem: string[]): string;
10
+ export declare function Split(path: string): [string, string];
11
+ export declare function IsAbs(path: string): boolean;
12
+ export declare function ToSlash(path: string): string;
13
+ export declare function FromSlash(path: string): string;
14
+ export declare function VolumeName(_path: string): string;
15
+ export declare function IsLocal(path: string): boolean;
16
+ export declare function SplitList(path: string): string[];
17
+ export declare function HasPrefix(p: string, prefix: string): boolean;
18
+ export declare function Abs(path: string): [string, Error | null];
19
+ export declare function Rel(basepath: string, targpath: string): [string, Error | null];
20
+ export declare function EvalSymlinks(path: string): [string, Error | null];
21
+ export declare function Glob(_pattern: string): [string[], Error | null];
22
+ export type WalkFunc = (path: string, info: any, err: Error | null) => Error | null;
23
+ export declare function Walk(root: string, walkFn: WalkFunc): Error | null;
24
+ export declare function WalkDir(_root: string, _walkFn: any): Error | null;
25
+ export declare function Localize(path: string): [string, Error | null];
@@ -0,0 +1,265 @@
1
+ // Package filepath implements utility routines for manipulating filename paths
2
+ // in a way compatible with the target operating system-defined file paths.
3
+ // Path separator constants
4
+ export const Separator = '/';
5
+ export const ListSeparator = ':';
6
+ // Error constants
7
+ export const SkipDir = new Error('skip this directory');
8
+ export const SkipAll = new Error('skip everything and stop the walk');
9
+ // Base returns the last element of path.
10
+ // Trailing path separators are removed before extracting the last element.
11
+ // If the path is empty, Base returns ".".
12
+ // If the path consists entirely of separators, Base returns a single separator.
13
+ export function Base(path) {
14
+ if (path === '') {
15
+ return '.';
16
+ }
17
+ // Strip trailing slashes
18
+ path = path.replace(/\/+$/, '');
19
+ if (path === '') {
20
+ return '/';
21
+ }
22
+ // Find the last slash
23
+ const i = path.lastIndexOf('/');
24
+ if (i >= 0) {
25
+ return path.substring(i + 1);
26
+ }
27
+ return path;
28
+ }
29
+ // Dir returns all but the last element of path, typically the path's directory.
30
+ // After dropping the final element, Dir calls Clean on the path and trailing
31
+ // slashes are removed. If the path is empty, Dir returns ".".
32
+ // If the path consists entirely of separators, Dir returns a single separator.
33
+ export function Dir(path) {
34
+ if (path === '') {
35
+ return '.';
36
+ }
37
+ // Strip trailing slashes
38
+ path = path.replace(/\/+$/, '');
39
+ if (path === '') {
40
+ return '/';
41
+ }
42
+ // Find the last slash
43
+ const i = path.lastIndexOf('/');
44
+ if (i >= 0) {
45
+ const dir = path.substring(0, i);
46
+ return Clean(dir === '' ? '/' : dir);
47
+ }
48
+ return '.';
49
+ }
50
+ // Ext returns the file name extension used by path.
51
+ // The extension is the suffix beginning at the final dot
52
+ // in the final element of path; it is empty if there is no dot.
53
+ export function Ext(path) {
54
+ const base = Base(path);
55
+ // Handle special case: if the base starts with a dot and has no other dots,
56
+ // it's a hidden file with no extension
57
+ if (base.startsWith('.') && base.indexOf('.', 1) === -1) {
58
+ return '';
59
+ }
60
+ const i = base.lastIndexOf('.');
61
+ if (i >= 0) {
62
+ return base.substring(i);
63
+ }
64
+ return '';
65
+ }
66
+ // Clean returns the shortest path name equivalent to path
67
+ // by purely lexical processing.
68
+ export function Clean(path) {
69
+ if (path === '') {
70
+ return '.';
71
+ }
72
+ const isAbs = path.startsWith('/');
73
+ const segments = path
74
+ .split('/')
75
+ .filter((segment) => segment !== '' && segment !== '.');
76
+ const result = [];
77
+ for (const segment of segments) {
78
+ if (segment === '..') {
79
+ if (result.length > 0 && result[result.length - 1] !== '..') {
80
+ result.pop();
81
+ }
82
+ else if (!isAbs) {
83
+ result.push('..');
84
+ }
85
+ }
86
+ else {
87
+ result.push(segment);
88
+ }
89
+ }
90
+ let cleaned = result.join('/');
91
+ if (isAbs) {
92
+ cleaned = '/' + cleaned;
93
+ }
94
+ return (cleaned === '' ?
95
+ isAbs ? '/'
96
+ : '.'
97
+ : cleaned);
98
+ }
99
+ // Join joins any number of path elements into a single path,
100
+ // separating them with an OS specific Separator. Empty elements
101
+ // are ignored. The result is Cleaned. However, if the argument
102
+ // list is empty or all its elements are empty, Join returns
103
+ // an empty string.
104
+ export function Join(...elem) {
105
+ if (elem.length === 0) {
106
+ return '';
107
+ }
108
+ // Filter out empty elements but handle absolute paths
109
+ const parts = [];
110
+ for (const e of elem) {
111
+ if (e === '') {
112
+ continue;
113
+ }
114
+ // If this element is absolute, start over from here
115
+ if (IsAbs(e)) {
116
+ parts.length = 0; // Clear previous parts
117
+ parts.push(e);
118
+ }
119
+ else {
120
+ parts.push(e);
121
+ }
122
+ }
123
+ if (parts.length === 0) {
124
+ return '';
125
+ }
126
+ return Clean(parts.join('/'));
127
+ }
128
+ // Split splits path immediately following the final Separator,
129
+ // separating it into a directory and file name component.
130
+ // If there is no Separator in path, Split returns an empty dir
131
+ // and file set to path. The returned values have the property
132
+ // that path = dir+file.
133
+ export function Split(path) {
134
+ const i = path.lastIndexOf('/');
135
+ if (i < 0) {
136
+ return ['', path];
137
+ }
138
+ return [path.substring(0, i + 1), path.substring(i + 1)];
139
+ }
140
+ // IsAbs reports whether the path is absolute.
141
+ export function IsAbs(path) {
142
+ return path.startsWith('/');
143
+ }
144
+ // ToSlash returns the result of replacing each separator character
145
+ // in path with a slash ('/') character. Multiple separators are
146
+ // replaced by multiple slashes.
147
+ export function ToSlash(path) {
148
+ // On Unix-like systems (including our JS environment), the separator is already '/'
149
+ // so backslashes are just regular characters and should not be converted
150
+ // This matches Go's behavior on Unix systems
151
+ return path;
152
+ }
153
+ // FromSlash returns the result of replacing each slash ('/') character
154
+ // in path with a separator character. Multiple slashes are replaced
155
+ // by multiple separators.
156
+ export function FromSlash(path) {
157
+ // On Unix-like systems (including our JS environment), separator is '/'
158
+ // so no conversion needed
159
+ return path;
160
+ }
161
+ // VolumeName returns leading volume name.
162
+ // Given "C:\foo\bar" it returns "C:" on Windows.
163
+ // Given "\\host\share\foo" it returns "\\host\share".
164
+ // On other systems, it returns "".
165
+ export function VolumeName(_path) {
166
+ // In our JS environment, we don't have volume names
167
+ return '';
168
+ }
169
+ // IsLocal reports whether path, using lexical analysis only,
170
+ // has all of these properties:
171
+ // - is within the subtree rooted at the directory in which path is evaluated
172
+ // - is not an absolute path
173
+ // - is not empty
174
+ // - on Windows, is not a reserved name such as "NUL"
175
+ export function IsLocal(path) {
176
+ if (path === '' || IsAbs(path)) {
177
+ return false;
178
+ }
179
+ // Check for .. components that would escape
180
+ const segments = path.split('/');
181
+ let depth = 0;
182
+ for (const segment of segments) {
183
+ if (segment === '..') {
184
+ depth--;
185
+ if (depth < 0) {
186
+ return false;
187
+ }
188
+ }
189
+ else if (segment !== '.' && segment !== '') {
190
+ depth++;
191
+ }
192
+ }
193
+ return true;
194
+ }
195
+ // SplitList splits a list of paths joined by the OS-specific ListSeparator,
196
+ // usually found in PATH or GOPATH environment variables.
197
+ // Unlike strings.Split, SplitList returns an empty slice when passed an empty string.
198
+ export function SplitList(path) {
199
+ if (path === '') {
200
+ return [];
201
+ }
202
+ return path.split(ListSeparator);
203
+ }
204
+ // HasPrefix tests whether the path p begins with prefix.
205
+ export function HasPrefix(p, prefix) {
206
+ if (prefix === '') {
207
+ return true;
208
+ }
209
+ // Normalize both paths
210
+ const normalP = Clean(p);
211
+ const normalPrefix = Clean(prefix);
212
+ if (normalP === normalPrefix) {
213
+ return true;
214
+ }
215
+ // Check if p starts with prefix followed by a separator
216
+ if (normalP.startsWith(normalPrefix)) {
217
+ const remaining = normalP.substring(normalPrefix.length);
218
+ return remaining.startsWith('/');
219
+ }
220
+ return false;
221
+ }
222
+ // Stubs for functions that require filesystem operations
223
+ // These are simplified implementations for compatibility
224
+ export function Abs(path) {
225
+ if (IsAbs(path)) {
226
+ return [Clean(path), null];
227
+ }
228
+ // In a real implementation, this would resolve relative to current working directory
229
+ // For our purposes, we'll just prepend a fake absolute path
230
+ return ['/' + Clean(path), null];
231
+ }
232
+ export function Rel(basepath, targpath) {
233
+ // Simplified implementation - in reality this is much more complex
234
+ const base = Clean(basepath);
235
+ const targ = Clean(targpath);
236
+ if (base === targ) {
237
+ return ['.', null];
238
+ }
239
+ // Very basic relative path calculation
240
+ if (targ.startsWith(base + '/')) {
241
+ return [targ.substring(base.length + 1), null];
242
+ }
243
+ return [targ, null];
244
+ }
245
+ export function EvalSymlinks(path) {
246
+ // No filesystem support, just return the cleaned path
247
+ return [Clean(path), null];
248
+ }
249
+ export function Glob(_pattern) {
250
+ // No filesystem support, return empty array
251
+ return [[], null];
252
+ }
253
+ export function Walk(root, walkFn) {
254
+ // No filesystem support, just call the function with the root
255
+ return walkFn(root, null, new Error('filesystem not supported'));
256
+ }
257
+ export function WalkDir(_root, _walkFn) {
258
+ // No filesystem support
259
+ return new Error('filesystem not supported');
260
+ }
261
+ // Localize is a stub - in Go it's used for Windows path localization
262
+ export function Localize(path) {
263
+ return [path, null];
264
+ }
265
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../../../gs/path/filepath/path.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
- export declare function DeepEqual(x: null | any, y: null | any): boolean;
1
+ import { ReflectValue } from './types.js';
2
+ export declare function DeepEqual(x: ReflectValue | null | undefined, y: ReflectValue | null | undefined): boolean;
@@ -1,54 +1,3 @@
1
- // DeepEqual reports whether x and y are "deeply equal," defined as follows.
2
- // Two values of identical type are deeply equal if one of the following cases applies.
3
- // Values of distinct types are never deeply equal.
4
- //
5
- // Array values are deeply equal when their corresponding elements are deeply equal.
6
- //
7
- // Struct values are deeply equal if their corresponding fields,
8
- // both exported and unexported, are deeply equal.
9
- //
10
- // Func values are deeply equal if both are nil; otherwise they are not deeply equal.
11
- //
12
- // Interface values are deeply equal if they hold deeply equal concrete values.
13
- //
14
- // Map values are deeply equal when all of the following are true:
15
- // they are both nil or both non-nil, they have the same length,
16
- // and either they are the same map object or their corresponding keys
17
- // (matched using Go equality) map to deeply equal values.
18
- //
19
- // Pointer values are deeply equal if they are equal using Go's == operator
20
- // or if they point to deeply equal values.
21
- //
22
- // Slice values are deeply equal when all of the following are true:
23
- // they are both nil or both non-nil, they have the same length,
24
- // and either they point to the same initial entry of the same underlying array
25
- // (that is, &x[0] == &y[0]) or their corresponding elements (up to length) are deeply equal.
26
- // Note that a non-nil empty slice and a nil slice (for example, []byte{} and []byte(nil))
27
- // are not deeply equal.
28
- //
29
- // Other values - numbers, bools, strings, and channels - are deeply equal
30
- // if they are equal using Go's == operator.
31
- //
32
- // In general DeepEqual is a recursive relaxation of Go's == operator.
33
- // However, this idea is impossible to implement without some inconsistency.
34
- // Specifically, it is possible for a value to be unequal to itself,
35
- // either because it is of func type (uncomparable in general)
36
- // or because it is a floating-point NaN value (not equal to itself in floating-point comparison),
37
- // or because it is an array, struct, or interface containing
38
- // such a value.
39
- // On the other hand, pointer values are always equal to themselves,
40
- // even if they point at or contain such problematic values,
41
- // because they compare equal using Go's == operator, and that
42
- // is a sufficient condition to be deeply equal, regardless of content.
43
- // DeepEqual has been defined so that the same short-cut applies
44
- // to slices and maps: if x and y are the same slice or the same map,
45
- // they are deeply equal regardless of content.
46
- //
47
- // As DeepEqual traverses the data values it may find a cycle. The
48
- // second and subsequent times that DeepEqual compares two pointer
49
- // values that have been compared before, it treats the values as
50
- // equal rather than examining the values to which they point.
51
- // This ensures that DeepEqual terminates.
52
1
  export function DeepEqual(x, y) {
53
2
  // Handle null/undefined cases
54
3
  if (x === y) {
@@ -113,7 +62,8 @@ export function DeepEqual(x, y) {
113
62
  return false;
114
63
  }
115
64
  for (const [key, value] of x) {
116
- if (!y.has(key) || !DeepEqual(value, y.get(key))) {
65
+ if (!y.has(key) ||
66
+ !DeepEqual(value, y.get(key))) {
117
67
  return false;
118
68
  }
119
69
  }
@@ -127,7 +77,9 @@ export function DeepEqual(x, y) {
127
77
  return false;
128
78
  }
129
79
  for (const key of keysX) {
130
- if (!keysY.includes(key) || !DeepEqual(x[key], y[key])) {
80
+ const xObj = x;
81
+ const yObj = y;
82
+ if (!keysY.includes(key) || !DeepEqual(xObj[key], yObj[key])) {
131
83
  return false;
132
84
  }
133
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deepequal.js","sourceRoot":"","sources":["../../../gs/reflect/deepequal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deepequal.js","sourceRoot":"","sources":["../../../gs/reflect/deepequal.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,20 @@
1
1
  import { Type, Value } from './type.js';
2
2
  export declare function MapOf(key: Type, elem: Type): Type;
3
- export declare class MapIter {
4
- private map;
5
- private iterator;
6
- private currentEntry;
7
- constructor(map: Map<any, any>);
3
+ /**
4
+ * MapIter provides an iterator interface for Go maps.
5
+ * It wraps a JavaScript Map iterator and provides methods to iterate over key-value pairs.
6
+ * @template K - The type of keys in the map
7
+ * @template V - The type of values in the map
8
+ */
9
+ export declare class MapIter<K = unknown, V = unknown> {
10
+ map: Map<K, V>;
11
+ iterator: Iterator<[K, V]>;
12
+ current: IteratorResult<[K, V]> | null;
13
+ constructor(map: Map<K, V>);
8
14
  Next(): boolean;
9
- Key(): any;
10
- Value(): any;
11
- Reset(m: any): void;
15
+ Key(): K | null;
16
+ Value(): V | null;
17
+ Reset(m: Map<K, V>): void;
12
18
  }
13
19
  export declare function MakeMap(typ: Type): Value;
14
20
  export declare function MakeMapWithSize(typ: Type, _n: number): Value;