goscript 0.0.37 → 0.0.39

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 (198) hide show
  1. package/compiler/analysis.go +129 -8
  2. package/compiler/compiler.go +4 -1
  3. package/compiler/composite-lit.go +2 -4
  4. package/compiler/expr-call.go +12 -0
  5. package/compiler/lit.go +100 -6
  6. package/compiler/protobuf.go +2 -2
  7. package/compiler/spec-value.go +3 -3
  8. package/compiler/spec.go +6 -3
  9. package/compiler/stmt-assign.go +1 -1
  10. package/dist/gs/builtin/builtin.d.ts +45 -0
  11. package/dist/gs/builtin/builtin.js +197 -0
  12. package/dist/gs/builtin/builtin.js.map +1 -1
  13. package/dist/gs/builtin/slice.js +2 -1
  14. package/dist/gs/builtin/slice.js.map +1 -1
  15. package/dist/gs/bytes/buffer.gs.d.ts +56 -0
  16. package/dist/gs/bytes/buffer.gs.js +611 -0
  17. package/dist/gs/bytes/buffer.gs.js.map +1 -0
  18. package/dist/gs/bytes/bytes.gs.d.ts +78 -0
  19. package/dist/gs/bytes/bytes.gs.js +1011 -0
  20. package/dist/gs/bytes/bytes.gs.js.map +1 -0
  21. package/dist/gs/bytes/index.d.ts +4 -0
  22. package/dist/gs/bytes/index.js +5 -0
  23. package/dist/gs/bytes/index.js.map +1 -0
  24. package/dist/gs/bytes/iter.gs.d.ts +9 -0
  25. package/dist/gs/bytes/iter.gs.js +143 -0
  26. package/dist/gs/bytes/iter.gs.js.map +1 -0
  27. package/dist/gs/bytes/reader.gs.d.ts +34 -0
  28. package/dist/gs/bytes/reader.gs.js +198 -0
  29. package/dist/gs/bytes/reader.gs.js.map +1 -0
  30. package/dist/gs/github.com/pkg/errors/errors.d.ts +1 -1
  31. package/dist/gs/github.com/pkg/errors/errors.js +182 -23
  32. package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
  33. package/dist/gs/github.com/pkg/errors/go113.d.ts +1 -1
  34. package/dist/gs/github.com/pkg/errors/go113.js +1 -1
  35. package/dist/gs/github.com/pkg/errors/go113.js.map +1 -1
  36. package/dist/gs/github.com/pkg/errors/index.d.ts +3 -3
  37. package/dist/gs/github.com/pkg/errors/index.js +3 -3
  38. package/dist/gs/github.com/pkg/errors/index.js.map +1 -1
  39. package/dist/gs/github.com/pkg/errors/stack.d.ts +1 -1
  40. package/dist/gs/github.com/pkg/errors/stack.js +8 -5
  41. package/dist/gs/github.com/pkg/errors/stack.js.map +1 -1
  42. package/dist/gs/internal/abi/index.d.ts +20 -0
  43. package/dist/gs/internal/abi/index.js +20 -0
  44. package/dist/gs/internal/abi/index.js.map +1 -0
  45. package/dist/gs/internal/bytealg/index.d.ts +14 -0
  46. package/dist/gs/internal/bytealg/index.js +139 -0
  47. package/dist/gs/internal/bytealg/index.js.map +1 -0
  48. package/dist/gs/internal/byteorder/index.d.ts +1 -1
  49. package/dist/gs/internal/byteorder/index.js +4 -4
  50. package/dist/gs/internal/byteorder/index.js.map +1 -1
  51. package/dist/gs/math/index.d.ts +44 -44
  52. package/dist/gs/math/index.js +44 -44
  53. package/dist/gs/math/index.js.map +1 -1
  54. package/dist/gs/os/index.d.ts +19 -19
  55. package/dist/gs/os/index.js +19 -19
  56. package/dist/gs/os/index.js.map +1 -1
  57. package/dist/gs/reflect/deepequal.d.ts +2 -0
  58. package/dist/gs/reflect/deepequal.js +91 -0
  59. package/dist/gs/reflect/deepequal.js.map +1 -0
  60. package/dist/gs/reflect/index.d.ts +8 -0
  61. package/dist/gs/reflect/index.js +10 -0
  62. package/dist/gs/reflect/index.js.map +1 -0
  63. package/dist/gs/reflect/iter.d.ts +4 -0
  64. package/dist/gs/reflect/iter.js +24 -0
  65. package/dist/gs/reflect/iter.js.map +1 -0
  66. package/dist/gs/reflect/map.d.ts +20 -0
  67. package/dist/gs/reflect/map.js +74 -0
  68. package/dist/gs/reflect/map.js.map +1 -0
  69. package/dist/gs/reflect/swapper.d.ts +2 -0
  70. package/dist/gs/reflect/swapper.js +46 -0
  71. package/dist/gs/reflect/swapper.js.map +1 -0
  72. package/dist/gs/reflect/type.d.ts +134 -0
  73. package/dist/gs/reflect/type.js +825 -0
  74. package/dist/gs/reflect/type.js.map +1 -0
  75. package/dist/gs/reflect/types.d.ts +90 -0
  76. package/dist/gs/reflect/types.js +119 -0
  77. package/dist/gs/reflect/types.js.map +1 -0
  78. package/dist/gs/reflect/value.d.ts +13 -0
  79. package/dist/gs/reflect/value.js +202 -0
  80. package/dist/gs/reflect/value.js.map +1 -0
  81. package/dist/gs/reflect/visiblefields.d.ts +4 -0
  82. package/dist/gs/reflect/visiblefields.js +149 -0
  83. package/dist/gs/reflect/visiblefields.js.map +1 -0
  84. package/dist/gs/strconv/index.d.ts +6 -6
  85. package/dist/gs/strconv/index.js +6 -6
  86. package/dist/gs/strconv/index.js.map +1 -1
  87. package/dist/gs/strings/index.d.ts +1 -1
  88. package/dist/gs/strings/index.js +1 -1
  89. package/dist/gs/strings/index.js.map +1 -1
  90. package/dist/gs/strings/replace.js.map +1 -1
  91. package/dist/gs/sync/atomic/index.d.ts +4 -4
  92. package/dist/gs/sync/atomic/index.js +4 -4
  93. package/dist/gs/sync/atomic/index.js.map +1 -1
  94. package/dist/gs/syscall/index.d.ts +6 -6
  95. package/dist/gs/syscall/index.js +34 -28
  96. package/dist/gs/syscall/index.js.map +1 -1
  97. package/dist/gs/unicode/utf8/utf8.d.ts +1 -1
  98. package/dist/gs/unicode/utf8/utf8.js +4 -2
  99. package/dist/gs/unicode/utf8/utf8.js.map +1 -1
  100. package/dist/gs/unsafe/unsafe.js.map +1 -1
  101. package/gs/builtin/builtin.ts +219 -0
  102. package/gs/builtin/slice.ts +2 -1
  103. package/gs/bytes/buffer.gs.ts +614 -0
  104. package/gs/bytes/bytes.gs.ts +1180 -0
  105. package/gs/bytes/godoc.txt +69 -0
  106. package/gs/bytes/index.ts +69 -0
  107. package/gs/bytes/iter.gs.ts +149 -0
  108. package/gs/bytes/reader.gs.ts +230 -0
  109. package/gs/github.com/pkg/errors/errors.ts +408 -238
  110. package/gs/github.com/pkg/errors/go113.ts +5 -6
  111. package/gs/github.com/pkg/errors/index.ts +12 -3
  112. package/gs/github.com/pkg/errors/stack.ts +107 -105
  113. package/gs/internal/abi/index.ts +37 -0
  114. package/gs/internal/bytealg/index.ts +149 -0
  115. package/gs/internal/byteorder/index.ts +5 -5
  116. package/gs/math/abs.gs.test.ts +1 -1
  117. package/gs/math/acosh.gs.test.ts +4 -2
  118. package/gs/math/asin.gs.test.ts +1 -1
  119. package/gs/math/asinh.gs.test.ts +7 -3
  120. package/gs/math/atan.gs.test.ts +1 -1
  121. package/gs/math/atan2.gs.test.ts +17 -9
  122. package/gs/math/atanh.gs.test.ts +1 -1
  123. package/gs/math/bits.gs.test.ts +1 -1
  124. package/gs/math/cbrt.gs.test.ts +1 -1
  125. package/gs/math/const.gs.test.ts +34 -8
  126. package/gs/math/copysign.gs.test.ts +7 -3
  127. package/gs/math/dim.gs.test.ts +19 -7
  128. package/gs/math/erf.gs.test.ts +1 -1
  129. package/gs/math/erfinv.gs.test.ts +4 -2
  130. package/gs/math/exp.gs.test.ts +1 -1
  131. package/gs/math/expm1.gs.test.ts +6 -4
  132. package/gs/math/floor.gs.test.ts +17 -4
  133. package/gs/math/fma.gs.test.ts +53 -53
  134. package/gs/math/frexp.gs.test.ts +112 -117
  135. package/gs/math/gamma.gs.test.ts +1 -1
  136. package/gs/math/hypot.gs.test.ts +53 -53
  137. package/gs/math/index.ts +80 -44
  138. package/gs/math/j0.gs.test.ts +6 -2
  139. package/gs/math/j1.gs.test.ts +6 -2
  140. package/gs/math/jn.gs.test.ts +9 -5
  141. package/gs/math/ldexp.gs.test.ts +103 -86
  142. package/gs/math/lgamma.gs.test.ts +10 -10
  143. package/gs/math/log.gs.test.ts +1 -1
  144. package/gs/math/log10.gs.test.ts +1 -1
  145. package/gs/math/log1p.gs.test.ts +2 -2
  146. package/gs/math/logb.gs.test.ts +1 -1
  147. package/gs/math/mod.gs.test.ts +2 -2
  148. package/gs/math/modf.gs.test.ts +7 -7
  149. package/gs/math/nextafter.gs.test.ts +9 -7
  150. package/gs/math/pow.gs.test.ts +6 -4
  151. package/gs/math/pow10.gs.test.ts +1 -1
  152. package/gs/math/remainder.gs.test.ts +1 -1
  153. package/gs/math/signbit.gs.test.ts +1 -1
  154. package/gs/math/sin.gs.test.ts +1 -1
  155. package/gs/math/sincos.gs.test.ts +33 -14
  156. package/gs/math/sinh.gs.test.ts +1 -1
  157. package/gs/math/sqrt.gs.test.ts +1 -1
  158. package/gs/math/tan.gs.test.ts +3 -3
  159. package/gs/math/tanh.gs.test.ts +1 -1
  160. package/gs/os/index.ts +128 -19
  161. package/gs/reflect/ANALYSIS.md +278 -0
  162. package/gs/reflect/deepequal.test.ts +41 -0
  163. package/gs/reflect/deepequal.ts +169 -0
  164. package/gs/reflect/function-types.test.ts +146 -0
  165. package/gs/reflect/godoc.txt +67 -0
  166. package/gs/reflect/index.ts +83 -0
  167. package/gs/reflect/iter.ts +44 -0
  168. package/gs/reflect/map.test.ts +30 -0
  169. package/gs/reflect/map.ts +85 -0
  170. package/gs/reflect/swapper.ts +52 -0
  171. package/gs/reflect/type.ts +1016 -0
  172. package/gs/reflect/types.ts +214 -0
  173. package/gs/reflect/value.ts +270 -0
  174. package/gs/reflect/visiblefields.ts +177 -0
  175. package/gs/strconv/index.ts +39 -6
  176. package/gs/strings/index.ts +7 -1
  177. package/gs/strings/replace.ts +1 -9
  178. package/gs/sync/atomic/index.ts +53 -4
  179. package/gs/syscall/index.ts +45 -37
  180. package/gs/unicode/utf8/utf8.ts +8 -5
  181. package/gs/unsafe/unsafe.ts +1 -1
  182. package/package.json +2 -1
  183. package/dist/gs/internal/testlog/index.d.ts +0 -1
  184. package/dist/gs/internal/testlog/index.js +0 -5
  185. package/dist/gs/internal/testlog/index.js.map +0 -1
  186. package/dist/gs/maps/iter.gs.d.ts +0 -7
  187. package/dist/gs/maps/iter.gs.js +0 -65
  188. package/dist/gs/maps/iter.gs.js.map +0 -1
  189. package/dist/gs/maps/maps.gs.d.ts +0 -7
  190. package/dist/gs/maps/maps.gs.js +0 -79
  191. package/dist/gs/maps/maps.gs.js.map +0 -1
  192. package/dist/gs/stringslite/index.d.ts +0 -1
  193. package/dist/gs/stringslite/index.js +0 -2
  194. package/dist/gs/stringslite/index.js.map +0 -1
  195. package/dist/gs/stringslite/strings.d.ts +0 -11
  196. package/dist/gs/stringslite/strings.js +0 -67
  197. package/dist/gs/stringslite/strings.js.map +0 -1
  198. package/gs/internal/testlog/index.ts +0 -7
@@ -1,6 +1,6 @@
1
- import * as $ from "../../../builtin/builtin.js";
1
+ import * as $ from '../../../builtin/builtin.js'
2
2
 
3
- import * as stderrors from "../../../errors/index.js"
3
+ import * as stderrors from '../../../errors/index.js'
4
4
 
5
5
  // Is reports whether any error in err's chain matches target.
6
6
  //
@@ -10,7 +10,7 @@ import * as stderrors from "../../../errors/index.js"
10
10
  // An error is considered to match a target if it is equal to that target or if
11
11
  // it implements a method Is(error) bool such that Is(target) returns true.
12
12
  export function Is(err: $.GoError, target: $.GoError): boolean {
13
- return stderrors.Is(err, target)
13
+ return stderrors.Is(err, target)
14
14
  }
15
15
 
16
16
  // As finds the first error in err's chain that matches target, and if so, sets
@@ -27,13 +27,12 @@ export function Is(err: $.GoError, target: $.GoError): boolean {
27
27
  // As will panic if target is not a non-nil pointer to either a type that implements
28
28
  // error, or to any interface type. As returns false if err is nil.
29
29
  export function As(err: $.GoError, target: null | any): boolean {
30
- return stderrors.As(err, target)
30
+ return stderrors.As(err, target)
31
31
  }
32
32
 
33
33
  // Unwrap returns the result of calling the Unwrap method on err, if err's
34
34
  // type contains an Unwrap method returning error.
35
35
  // Otherwise, Unwrap returns nil.
36
36
  export function Unwrap(err: $.GoError): $.GoError {
37
- return stderrors.Unwrap(err)
37
+ return stderrors.Unwrap(err)
38
38
  }
39
-
@@ -1,3 +1,12 @@
1
- export { Cause, Errorf, New, WithMessage, WithMessagef, WithStack, Wrap, Wrapf } from "./errors.js"
2
- export { As, Is, Unwrap } from "./go113.js"
3
- export { Frame, StackTrace } from "./stack.js"
1
+ export {
2
+ Cause,
3
+ Errorf,
4
+ New,
5
+ WithMessage,
6
+ WithMessagef,
7
+ WithStack,
8
+ Wrap,
9
+ Wrapf,
10
+ } from './errors.js'
11
+ export { As, Is, Unwrap } from './go113.js'
12
+ export { Frame, StackTrace } from './stack.js'
@@ -1,127 +1,129 @@
1
- import * as $ from "../../../builtin/builtin.js";
1
+ import * as $ from '../../../builtin/builtin.js'
2
2
 
3
3
  // Type definitions
4
- export type uintptr = number;
4
+ export type uintptr = number
5
5
 
6
6
  export class Frame {
7
- constructor(private _value: uintptr) {}
8
-
9
- valueOf(): uintptr {
10
- return this._value
11
- }
12
-
13
- toString(): string {
14
- return String(this._value)
15
- }
16
-
17
- static from(value: uintptr): Frame {
18
- return new Frame(value)
19
- }
20
-
21
- // pc returns the program counter for this frame;
22
- // multiple frames may have the same PC value.
23
- public pc(): uintptr {
24
- return this._value - 1
25
- }
26
-
27
- // file returns the full path to the file that contains the
28
- // function for this Frame's pc.
29
- public file(): string {
30
- return "unknown"
31
- }
32
-
33
- // line returns the line number of source code of the
34
- // function for this Frame's pc.
35
- public line(): number {
36
- return 0
37
- }
38
-
39
- // name returns the name of this function, if known.
40
- public name(): string {
41
- return "unknown"
42
- }
43
-
44
- // MarshalText formats a stacktrace Frame as a text string.
45
- public MarshalText(): [$.Bytes, $.GoError] {
46
- const name = this.name()
47
- if (name == "unknown") {
48
- return [new TextEncoder().encode(name), null]
49
- }
50
- return [new TextEncoder().encode(`${name} ${this.file()}:${this.line()}`), null]
51
- }
7
+ constructor(private _value: uintptr) {}
8
+
9
+ valueOf(): uintptr {
10
+ return this._value
11
+ }
12
+
13
+ toString(): string {
14
+ return String(this._value)
15
+ }
16
+
17
+ static from(value: uintptr): Frame {
18
+ return new Frame(value)
19
+ }
20
+
21
+ // pc returns the program counter for this frame;
22
+ // multiple frames may have the same PC value.
23
+ public pc(): uintptr {
24
+ return this._value - 1
25
+ }
26
+
27
+ // file returns the full path to the file that contains the
28
+ // function for this Frame's pc.
29
+ public file(): string {
30
+ return 'unknown'
31
+ }
32
+
33
+ // line returns the line number of source code of the
34
+ // function for this Frame's pc.
35
+ public line(): number {
36
+ return 0
37
+ }
38
+
39
+ // name returns the name of this function, if known.
40
+ public name(): string {
41
+ return 'unknown'
42
+ }
43
+
44
+ // MarshalText formats a stacktrace Frame as a text string.
45
+ public MarshalText(): [$.Bytes, $.GoError] {
46
+ const name = this.name()
47
+ if (name == 'unknown') {
48
+ return [new TextEncoder().encode(name), null]
49
+ }
50
+ return [
51
+ new TextEncoder().encode(`${name} ${this.file()}:${this.line()}`),
52
+ null,
53
+ ]
54
+ }
52
55
  }
53
56
 
54
57
  export class StackTrace {
55
- constructor(private _value: Frame[] | null) {}
58
+ constructor(private _value: Frame[] | null) {}
56
59
 
57
- valueOf(): Frame[] | null {
58
- return this._value
59
- }
60
+ valueOf(): Frame[] | null {
61
+ return this._value
62
+ }
60
63
 
61
- toString(): string {
62
- return String(this._value)
63
- }
64
+ toString(): string {
65
+ return String(this._value)
66
+ }
64
67
 
65
- static from(value: Frame[] | null): StackTrace {
66
- return new StackTrace(value)
67
- }
68
+ static from(value: Frame[] | null): StackTrace {
69
+ return new StackTrace(value)
70
+ }
68
71
  }
69
72
 
70
73
  class stack {
71
- constructor(private _value: uintptr[]) {}
72
-
73
- valueOf(): uintptr[] {
74
- return this._value
75
- }
76
-
77
- toString(): string {
78
- return String(this._value)
79
- }
80
-
81
- static from(value: uintptr[]): stack {
82
- return new stack(value)
83
- }
84
-
85
- public StackTrace(): StackTrace {
86
- const s = this._value
87
- if (!s || s.length === 0) {
88
- return new StackTrace(null)
89
- }
90
-
91
- const frames: Frame[] = []
92
- for (let i = 0; i < s.length; i++) {
93
- frames.push(new Frame(s[i]))
94
- }
95
- return new StackTrace(frames)
96
- }
74
+ constructor(private _value: uintptr[]) {}
75
+
76
+ valueOf(): uintptr[] {
77
+ return this._value
78
+ }
79
+
80
+ toString(): string {
81
+ return String(this._value)
82
+ }
83
+
84
+ static from(value: uintptr[]): stack {
85
+ return new stack(value)
86
+ }
87
+
88
+ public StackTrace(): StackTrace {
89
+ const s = this._value
90
+ if (!s || s.length === 0) {
91
+ return new StackTrace(null)
92
+ }
93
+
94
+ const frames: Frame[] = []
95
+ for (let i = 0; i < s.length; i++) {
96
+ frames.push(new Frame(s[i]))
97
+ }
98
+ return new StackTrace(frames)
99
+ }
97
100
  }
98
101
 
99
102
  // callers returns a simplified stack trace using JavaScript's native stack
100
103
  export function callers(): $.VarRef<stack> | null {
101
- try {
102
- // Get JavaScript stack trace
103
- throw new Error();
104
- } catch(e: any) {
105
- // Parse the stack trace to get some basic frame information
106
- const stackLines = e.stack ? e.stack.split('\n') : []
107
-
108
- // Create simplified frame data - just use line numbers as uintptr values
109
- const pcs: uintptr[] = []
110
- for (let i = 0; i < Math.min(stackLines.length, 8); i++) {
111
- pcs.push(i + 1) // Simple frame counter
112
- }
113
-
114
- const st = new stack(pcs)
115
- return $.varRef(st)
116
- }
104
+ try {
105
+ // Get JavaScript stack trace
106
+ throw new Error()
107
+ } catch (e: any) {
108
+ // Parse the stack trace to get some basic frame information
109
+ const stackLines = e.stack ? e.stack.split('\n') : []
110
+
111
+ // Create simplified frame data - just use line numbers as uintptr values
112
+ const pcs: uintptr[] = []
113
+ for (let i = 0; i < Math.min(stackLines.length, 8); i++) {
114
+ pcs.push(i + 1) // Simple frame counter
115
+ }
116
+
117
+ const st = new stack(pcs)
118
+ return $.varRef(st)
119
+ }
117
120
  }
118
121
 
119
122
  // funcname extracts the function name from a full function path
120
123
  export function funcname(name: string): string {
121
- const lastDot = name.lastIndexOf('.')
122
- if (lastDot >= 0) {
123
- return name.substring(lastDot + 1)
124
- }
125
- return name
124
+ const lastDot = name.lastIndexOf('.')
125
+ if (lastDot >= 0) {
126
+ return name.substring(lastDot + 1)
127
+ }
128
+ return name
126
129
  }
127
-
@@ -0,0 +1,37 @@
1
+ // Placeholder abi module for reflect package compatibility
2
+
3
+ // Type represents the ABI type information
4
+ export interface Type {
5
+ Size_: number
6
+ PtrBytes: number
7
+ Hash: number
8
+ TFlag: number
9
+ Align_: number
10
+ FieldAlign_: number
11
+ Kind_: number
12
+ }
13
+
14
+ // RegArgs represents register arguments
15
+ export interface RegArgs {
16
+ Ptrs?: any[]
17
+ Ints?: any[]
18
+ }
19
+
20
+ // IntArgRegBitmap represents register usage for integer arguments
21
+ export class IntArgRegBitmap {
22
+ constructor(public value: number = 0) {}
23
+
24
+ Get(index: number): boolean {
25
+ return (this.value & (1 << index)) !== 0
26
+ }
27
+ }
28
+
29
+ // FuncPCABI0 returns the entry PC of the function f for ABI0
30
+ export function FuncPCABI0(_f: any): number {
31
+ return 0 // Placeholder
32
+ }
33
+
34
+ // FuncPCABIInternal returns the entry PC of the function f for the internal ABI
35
+ export function FuncPCABIInternal(_f: any): number {
36
+ return 0 // Placeholder
37
+ }
@@ -0,0 +1,149 @@
1
+ // Placeholder bytealg module for reflect package compatibility
2
+
3
+ // Helper function to normalize bytes input
4
+ function normalizeBytes(b: any): any[] {
5
+ if (b === null || b === undefined) {
6
+ return []
7
+ }
8
+ if (Array.isArray(b)) {
9
+ return b
10
+ }
11
+ if (b instanceof Uint8Array) {
12
+ return Array.from(b)
13
+ }
14
+ if (b && typeof b === 'object' && 'data' in b && Array.isArray(b.data)) {
15
+ return b.data
16
+ }
17
+ return []
18
+ }
19
+
20
+ // Equal reports whether a and b are the same length and contain the same bytes.
21
+ export function Equal(a: any, b: any): boolean {
22
+ const aNorm = normalizeBytes(a)
23
+ const bNorm = normalizeBytes(b)
24
+ if (aNorm.length !== bNorm.length) {
25
+ return false
26
+ }
27
+ for (let i = 0; i < aNorm.length; i++) {
28
+ if (aNorm[i] !== bNorm[i]) {
29
+ return false
30
+ }
31
+ }
32
+ return true
33
+ }
34
+
35
+ // Compare returns an integer comparing two byte slices lexicographically.
36
+ export function Compare(a: any, b: any): number {
37
+ const aNorm = normalizeBytes(a)
38
+ const bNorm = normalizeBytes(b)
39
+ const minLen = Math.min(aNorm.length, bNorm.length)
40
+ for (let i = 0; i < minLen; i++) {
41
+ if (aNorm[i] < bNorm[i]) {
42
+ return -1
43
+ }
44
+ if (aNorm[i] > bNorm[i]) {
45
+ return 1
46
+ }
47
+ }
48
+ if (aNorm.length < bNorm.length) {
49
+ return -1
50
+ }
51
+ if (aNorm.length > bNorm.length) {
52
+ return 1
53
+ }
54
+ return 0
55
+ }
56
+
57
+ // Additional functions needed by bytes package
58
+ export function Count(s: any, b: number): number {
59
+ const sNorm = normalizeBytes(s)
60
+ let count = 0
61
+ for (let i = 0; i < sNorm.length; i++) {
62
+ if (sNorm[i] === b) {
63
+ count++
64
+ }
65
+ }
66
+ return count
67
+ }
68
+
69
+ export function IndexByte(s: any, b: number): number {
70
+ const sNorm = normalizeBytes(s)
71
+ for (let i = 0; i < sNorm.length; i++) {
72
+ if (sNorm[i] === b) {
73
+ return i
74
+ }
75
+ }
76
+ return -1
77
+ }
78
+
79
+ export function LastIndexByte(s: any, b: number): number {
80
+ const sNorm = normalizeBytes(s)
81
+ for (let i = sNorm.length - 1; i >= 0; i--) {
82
+ if (sNorm[i] === b) {
83
+ return i
84
+ }
85
+ }
86
+ return -1
87
+ }
88
+
89
+ export function Index(s: any, sep: any): number {
90
+ const sNorm = normalizeBytes(s)
91
+ const sepNorm = normalizeBytes(sep)
92
+ if (sepNorm.length === 0) return 0
93
+ if (sepNorm.length > sNorm.length) return -1
94
+
95
+ for (let i = 0; i <= sNorm.length - sepNorm.length; i++) {
96
+ let found = true
97
+ for (let j = 0; j < sepNorm.length; j++) {
98
+ if (sNorm[i + j] !== sepNorm[j]) {
99
+ found = false
100
+ break
101
+ }
102
+ }
103
+ if (found) return i
104
+ }
105
+ return -1
106
+ }
107
+
108
+ export function LastIndexRabinKarp(s: any, sep: any): number {
109
+ const sNorm = normalizeBytes(s)
110
+ const sepNorm = normalizeBytes(sep)
111
+ // Simple implementation
112
+ for (let i = sNorm.length - sepNorm.length; i >= 0; i--) {
113
+ let found = true
114
+ for (let j = 0; j < sepNorm.length; j++) {
115
+ if (sNorm[i + j] !== sepNorm[j]) {
116
+ found = false
117
+ break
118
+ }
119
+ }
120
+ if (found) return i
121
+ }
122
+ return -1
123
+ }
124
+
125
+ export function IndexRabinKarp(s: any, sep: any): number {
126
+ return Index(s, sep)
127
+ }
128
+
129
+ export function IndexByteString(s: string, b: number): number {
130
+ const char = String.fromCharCode(b)
131
+ return s.indexOf(char)
132
+ }
133
+
134
+ export function IndexString(s: string, substr: string): number {
135
+ return s.indexOf(substr)
136
+ }
137
+
138
+ export function MakeNoZero(n: number): Uint8Array {
139
+ return new Uint8Array(n)
140
+ }
141
+
142
+ export function Cutover(_n: number): number {
143
+ // TODO: Implement Cutover function
144
+ return 10 // Simple threshold
145
+ }
146
+
147
+ // Constants needed by bytes package
148
+ export const MaxBruteForce = 64
149
+ export const MaxLen = 32
@@ -1,4 +1,4 @@
1
- import * as $ from "@goscript/builtin/builtin.js";
1
+ import * as $ from '@goscript/builtin/builtin.js'
2
2
 
3
3
  // Stub implementations for internal/byteorder package
4
4
  export function LittleEndian(): boolean {
@@ -19,10 +19,10 @@ export function BEUint64(b: $.Bytes): number {
19
19
  // For our stub purposes, this should be sufficient
20
20
  let high = BEUint32(b)
21
21
  let low = BEUint32($.goSlice(b, 4, undefined))
22
- return (high * 0x100000000) + low
22
+ return high * 0x100000000 + low
23
23
  }
24
24
 
25
- // Little Endian byte order functions
25
+ // Little Endian byte order functions
26
26
  export function LEUint16(b: $.Bytes): number {
27
27
  return b![0] | (b![1] << 8)
28
28
  }
@@ -36,5 +36,5 @@ export function LEUint64(b: $.Bytes): number {
36
36
  // For our stub purposes, this should be sufficient
37
37
  let low = LEUint32(b)
38
38
  let high = LEUint32($.goSlice(b, 4, undefined))
39
- return low + (high * 0x100000000)
40
- }
39
+ return low + high * 0x100000000
40
+ }
@@ -26,4 +26,4 @@ describe('Abs', () => {
26
26
  expect(Abs(Number.MIN_VALUE)).toBe(Number.MIN_VALUE)
27
27
  expect(Abs(-Number.MIN_VALUE)).toBe(Number.MIN_VALUE)
28
28
  })
29
- })
29
+ })
@@ -34,6 +34,8 @@ describe('acosh', () => {
34
34
  expect(acosh(1)).toBe(Acosh(1))
35
35
  expect(acosh(2)).toBe(Acosh(2))
36
36
  expect(acosh(10)).toBe(Acosh(10))
37
- expect(acosh(Number.POSITIVE_INFINITY)).toBe(Acosh(Number.POSITIVE_INFINITY))
37
+ expect(acosh(Number.POSITIVE_INFINITY)).toBe(
38
+ Acosh(Number.POSITIVE_INFINITY),
39
+ )
38
40
  })
39
- })
41
+ })
@@ -63,4 +63,4 @@ describe('acos', () => {
63
63
  expect(acos(-1)).toBe(Acos(-1))
64
64
  expect(acos(0.5)).toBe(Acos(0.5))
65
65
  })
66
- })
66
+ })
@@ -22,7 +22,9 @@ describe('Asinh', () => {
22
22
  const resultPos = Asinh(Number.MAX_VALUE)
23
23
  expect(resultPos > 700 || resultPos === Number.POSITIVE_INFINITY).toBe(true)
24
24
  const resultNeg = Asinh(-Number.MAX_VALUE)
25
- expect(resultNeg < -700 || resultNeg === Number.NEGATIVE_INFINITY).toBe(true)
25
+ expect(resultNeg < -700 || resultNeg === Number.NEGATIVE_INFINITY).toBe(
26
+ true,
27
+ )
26
28
  expect(Asinh(Number.MIN_VALUE)).toBeCloseTo(Number.MIN_VALUE, 14)
27
29
  })
28
30
  })
@@ -32,6 +34,8 @@ describe('asinh', () => {
32
34
  expect(asinh(0)).toBe(Asinh(0))
33
35
  expect(asinh(1)).toBe(Asinh(1))
34
36
  expect(asinh(-1)).toBe(Asinh(-1))
35
- expect(asinh(Number.POSITIVE_INFINITY)).toBe(Asinh(Number.POSITIVE_INFINITY))
37
+ expect(asinh(Number.POSITIVE_INFINITY)).toBe(
38
+ Asinh(Number.POSITIVE_INFINITY),
39
+ )
36
40
  })
37
- })
41
+ })
@@ -46,4 +46,4 @@ describe('satan', () => {
46
46
  expect(satan(1)).toBeCloseTo(Math.atan(1), 15)
47
47
  expect(satan(2)).toBeCloseTo(Math.atan(2), 15)
48
48
  })
49
- })
49
+ })
@@ -4,9 +4,9 @@ import { Atan2, atan2 } from './atan2.gs.js'
4
4
  describe('Atan2', () => {
5
5
  it('should return correct arctangent values for basic cases', () => {
6
6
  expect(Atan2(1, 1)).toBeCloseTo(Math.PI / 4, 15)
7
- expect(Atan2(1, -1)).toBeCloseTo(3 * Math.PI / 4, 15)
7
+ expect(Atan2(1, -1)).toBeCloseTo((3 * Math.PI) / 4, 15)
8
8
  expect(Atan2(-1, 1)).toBeCloseTo(-Math.PI / 4, 15)
9
- expect(Atan2(-1, -1)).toBeCloseTo(-3 * Math.PI / 4, 15)
9
+ expect(Atan2(-1, -1)).toBeCloseTo((-3 * Math.PI) / 4, 15)
10
10
  })
11
11
 
12
12
  it('should handle zero cases correctly', () => {
@@ -17,15 +17,23 @@ describe('Atan2', () => {
17
17
  })
18
18
 
19
19
  it('should handle infinity cases', () => {
20
- expect(Atan2(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY)).toBeCloseTo(Math.PI / 4, 15)
21
- expect(Atan2(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY)).toBeCloseTo(-Math.PI / 4, 15)
22
- expect(Atan2(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY)).toBeCloseTo(3 * Math.PI / 4, 15)
23
- expect(Atan2(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY)).toBeCloseTo(-3 * Math.PI / 4, 15)
24
-
20
+ expect(
21
+ Atan2(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY),
22
+ ).toBeCloseTo(Math.PI / 4, 15)
23
+ expect(
24
+ Atan2(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY),
25
+ ).toBeCloseTo(-Math.PI / 4, 15)
26
+ expect(
27
+ Atan2(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY),
28
+ ).toBeCloseTo((3 * Math.PI) / 4, 15)
29
+ expect(
30
+ Atan2(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY),
31
+ ).toBeCloseTo((-3 * Math.PI) / 4, 15)
32
+
25
33
  expect(Atan2(1, Number.POSITIVE_INFINITY)).toBe(0)
26
34
  expect(Atan2(1, Number.NEGATIVE_INFINITY)).toBeCloseTo(Math.PI, 15)
27
35
  expect(Atan2(-1, Number.NEGATIVE_INFINITY)).toBeCloseTo(-Math.PI, 15)
28
-
36
+
29
37
  expect(Atan2(Number.POSITIVE_INFINITY, 1)).toBeCloseTo(Math.PI / 2, 15)
30
38
  expect(Atan2(Number.NEGATIVE_INFINITY, 1)).toBeCloseTo(-Math.PI / 2, 15)
31
39
  })
@@ -52,4 +60,4 @@ describe('atan2', () => {
52
60
  expect(atan2(-1, -1)).toBe(Atan2(-1, -1))
53
61
  expect(atan2(0, 1)).toBe(Atan2(0, 1))
54
62
  })
55
- })
63
+ })
@@ -44,4 +44,4 @@ describe('atanh', () => {
44
44
  expect(atanh(1)).toBe(Atanh(1))
45
45
  expect(atanh(-1)).toBe(Atanh(-1))
46
46
  })
47
- })
47
+ })
@@ -85,4 +85,4 @@ describe('normalize', () => {
85
85
  expect(y).toBe(0)
86
86
  expect(exp).toBe(-52)
87
87
  })
88
- })
88
+ })
@@ -54,4 +54,4 @@ describe('cbrt', () => {
54
54
  expect(cbrt(Number.POSITIVE_INFINITY)).toBe(Cbrt(Number.POSITIVE_INFINITY))
55
55
  expect(cbrt(0.125)).toBe(Cbrt(0.125))
56
56
  })
57
- })
57
+ })