goscript 0.0.10 → 0.0.13

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 (103) hide show
  1. package/README.md +3 -3
  2. package/builtin/builtin.go +11 -0
  3. package/builtin/builtin.ts +170 -65
  4. package/cmd/goscript/cmd_compile.go +28 -8
  5. package/compiler/compile.go +42 -34
  6. package/compiler/compile_decls.go +12 -0
  7. package/compiler/compile_expr.go +135 -8
  8. package/compiler/compile_field.go +22 -1
  9. package/compiler/compile_spec.go +141 -4
  10. package/compiler/compile_stmt.go +124 -43
  11. package/compiler/compiler.go +1 -0
  12. package/compiler/config.go +2 -0
  13. package/compiler/file_compiler.go +1 -1
  14. package/compiler/index.test.ts +1 -1
  15. package/compiler/output_path.go +1 -1
  16. package/compiler/types/tokens.go +1 -0
  17. package/compiler/writer.go +1 -1
  18. package/dist/builtin/builtin.d.ts +63 -1
  19. package/dist/builtin/builtin.js +81 -0
  20. package/dist/builtin/builtin.js.map +1 -1
  21. package/dist/compliance/tests/async_basic/async_basic.gs.js +1 -1
  22. package/dist/compliance/tests/async_basic/async_basic.gs.js.map +1 -1
  23. package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.d.ts +1 -0
  24. package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js +82 -0
  25. package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js.map +1 -0
  26. package/dist/compliance/tests/channel_basic/channel_basic.gs.js +1 -1
  27. package/dist/compliance/tests/channel_basic/channel_basic.gs.js.map +1 -1
  28. package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.js +1 -1
  29. package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.js.map +1 -1
  30. package/dist/compliance/tests/copy_independence/copy_independence.gs.js +1 -1
  31. package/dist/compliance/tests/copy_independence/copy_independence.gs.js.map +1 -1
  32. package/dist/compliance/tests/defer_statement/defer_statement.gs.d.ts +1 -0
  33. package/dist/compliance/tests/defer_statement/defer_statement.gs.js +75 -0
  34. package/dist/compliance/tests/defer_statement/defer_statement.gs.js.map +1 -0
  35. package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js +3 -3
  36. package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js.map +1 -1
  37. package/dist/compliance/tests/flag_bitwise_op/flag_bitwise_op.gs.d.ts +1 -0
  38. package/dist/compliance/tests/flag_bitwise_op/flag_bitwise_op.gs.js +29 -0
  39. package/dist/compliance/tests/flag_bitwise_op/flag_bitwise_op.gs.js.map +1 -0
  40. package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.d.ts +1 -0
  41. package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js +14 -0
  42. package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js.map +1 -0
  43. package/dist/compliance/tests/for_range/for_range.gs.js +1 -1
  44. package/dist/compliance/tests/for_range/for_range.gs.js.map +1 -1
  45. package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.d.ts +1 -1
  46. package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.js +1 -1
  47. package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.js.map +1 -1
  48. package/dist/compliance/tests/interface_method_comments/interface_method_comments.gs.d.ts +1 -0
  49. package/dist/compliance/tests/interface_method_comments/interface_method_comments.gs.js +12 -0
  50. package/dist/compliance/tests/interface_method_comments/interface_method_comments.gs.js.map +1 -0
  51. package/dist/compliance/tests/interface_multi_param_return/interface_multi_param_return.gs.js +2 -2
  52. package/dist/compliance/tests/interface_multi_param_return/interface_multi_param_return.gs.js.map +1 -1
  53. package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js +3 -3
  54. package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js.map +1 -1
  55. package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js +13 -3
  56. package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js.map +1 -1
  57. package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.d.ts +1 -0
  58. package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js +51 -0
  59. package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js.map +1 -0
  60. package/dist/compliance/tests/map_support/map_support.gs.js +1 -1
  61. package/dist/compliance/tests/map_support/map_support.gs.js.map +1 -1
  62. package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.js +1 -1
  63. package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.js.map +1 -1
  64. package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.js +1 -1
  65. package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.js.map +1 -1
  66. package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.js +1 -1
  67. package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.js.map +1 -1
  68. package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.js +1 -1
  69. package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.js.map +1 -1
  70. package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.js +1 -1
  71. package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.js.map +1 -1
  72. package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.js +1 -1
  73. package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.js.map +1 -1
  74. package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.js +1 -1
  75. package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.js.map +1 -1
  76. package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.js +1 -1
  77. package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.js.map +1 -1
  78. package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.js +1 -1
  79. package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.js.map +1 -1
  80. package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.js +2 -1
  81. package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.js.map +1 -1
  82. package/dist/compliance/tests/select_statement/select_statement.gs.js +2 -4
  83. package/dist/compliance/tests/select_statement/select_statement.gs.js.map +1 -1
  84. package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.js +1 -1
  85. package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.js.map +1 -1
  86. package/dist/compliance/tests/slices/slices.gs.js +281 -8
  87. package/dist/compliance/tests/slices/slices.gs.js.map +1 -1
  88. package/dist/compliance/tests/string_conversion/string_conversion.gs.d.ts +1 -0
  89. package/dist/compliance/tests/string_conversion/string_conversion.gs.js +41 -0
  90. package/dist/compliance/tests/string_conversion/string_conversion.gs.js.map +1 -0
  91. package/dist/compliance/tests/struct_embedding/struct_embedding.gs.d.ts +1 -0
  92. package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js +48 -0
  93. package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js.map +1 -0
  94. package/dist/compliance/tests/struct_field_access/struct_field_access.gs.js +1 -1
  95. package/dist/compliance/tests/struct_field_access/struct_field_access.gs.js.map +1 -1
  96. package/dist/compliance/tests/struct_pointer_interface_fields/struct_pointer_interface_fields.gs.d.ts +1 -0
  97. package/dist/compliance/tests/struct_pointer_interface_fields/struct_pointer_interface_fields.gs.js +26 -0
  98. package/dist/compliance/tests/struct_pointer_interface_fields/struct_pointer_interface_fields.gs.js.map +1 -0
  99. package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.js +1 -1
  100. package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.js.map +1 -1
  101. package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.js +1 -1
  102. package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.js.map +1 -1
  103. package/package.json +4 -3
@@ -0,0 +1,41 @@
1
+ // Generated file based on string_conversion.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ import * as goscript from "@goscript/builtin";
4
+ export async function main() {
5
+ // === string(string) Conversion ===
6
+ let myVar = "hello world";
7
+ console.log(myVar);
8
+ // === string(rune) Conversion ===
9
+ let r = 65;
10
+ let s = String.fromCharCode(r);
11
+ console.log(s);
12
+ // 'a'
13
+ let r2 = 97;
14
+ let s2 = String.fromCharCode(r2);
15
+ console.log(s2);
16
+ // '€'
17
+ let r3 = 0x20AC;
18
+ let s3 = String.fromCharCode(r3);
19
+ console.log(s3);
20
+ // === string([]rune) Conversion ===
21
+ let myRunes = [71, 111, 83, 99, 114, 105, 112, 116];
22
+ let myStringFromRunes = goscript.runesToString(myRunes);
23
+ console.log(myStringFromRunes);
24
+ let emptyRunes = [];
25
+ let emptyStringFromRunes = goscript.runesToString(emptyRunes);
26
+ console.log(emptyStringFromRunes);
27
+ // === []rune(string) and string([]rune) Round Trip ===
28
+ let originalString = "你好世界"; // Example with multi-byte characters
29
+ let runesFromString = goscript.stringToRunes(originalString);
30
+ let stringFromRunes = goscript.runesToString(runesFromString);
31
+ console.log(originalString);
32
+ console.log(stringFromRunes);
33
+ console.log(originalString == stringFromRunes);
34
+ // === Modify []rune and convert back to string ===
35
+ let mutableRunes = goscript.stringToRunes("Mutable String");
36
+ mutableRunes[0] = 109;
37
+ mutableRunes[8] = 115;
38
+ let modifiedString = goscript.runesToString(mutableRunes);
39
+ console.log(modifiedString);
40
+ }
41
+ //# sourceMappingURL=string_conversion.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string_conversion.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/string_conversion/string_conversion.gs.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,oCAAoC;IACpC,IAAI,KAAK,GAAG,aAAa,CAAA;IACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAElB,kCAAkC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAEd,MAAM;IACN,IAAI,EAAE,GAAW,EAAE,CAAC;IACpB,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,MAAM;IACN,IAAI,EAAE,GAAW,MAAM,CAAC;IACxB,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,oCAAoC;IACpC,IAAI,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACnD,IAAI,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAE9B,IAAI,UAAU,GAAI,EAAe,CAAA;IACjC,IAAI,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAEjC,uDAAuD;IACvD,IAAI,cAAc,GAAG,MAAM,CAAA,CAAC,qCAAqC;IACjE,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAC5D,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,eAAe,CAAC,CAAA;IAE9C,mDAAmD;IACnD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA;IAC3D,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;IACrB,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;IACrB,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;IACzD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,48 @@
1
+ // Generated file based on struct_embedding.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ import * as goscript from "@goscript/builtin";
4
+ class Person {
5
+ Name = "";
6
+ Age = 0;
7
+ Greet() {
8
+ const p = this;
9
+ console.log("Hello, my name is " + p.Name);
10
+ }
11
+ constructor(init) { if (init)
12
+ Object.assign(this, init); }
13
+ clone() { return Object.assign(Object.create(Person.prototype), this); }
14
+ // Register this type with the runtime type system
15
+ static __typeInfo = goscript.registerType('Person', goscript.TypeKind.Struct, new Person(), new Set(['Greet']), Person);
16
+ }
17
+ class Employee extends Person {
18
+ // Embedded struct
19
+ ID = 0;
20
+ constructor(init) {
21
+ super(init?.Person || init);
22
+ if (init) {
23
+ const { Person, ...rest } = init;
24
+ Object.assign(this, rest);
25
+ }
26
+ }
27
+ clone() { return Object.assign(Object.create(Employee.prototype), this); }
28
+ // Register this type with the runtime type system
29
+ static __typeInfo = goscript.registerType('Employee', goscript.TypeKind.Struct, new Employee(), new Set([]), Employee);
30
+ }
31
+ export async function main() {
32
+ let e = new Employee({ Person: new Person({ Name: "Alice", Age: 30 }), ID: 123 });
33
+ // Accessing embedded fields
34
+ console.log("Employee Name:", e.Name);
35
+ console.log("Employee Age:", e.Age);
36
+ console.log("Employee ID:", e.ID);
37
+ // Calling embedded method
38
+ e.Greet();
39
+ // Test with a pointer to Employee
40
+ let ep = new Employee({ Person: new Person({ Name: "Bob", Age: 25 }), ID: 456 });
41
+ // Accessing embedded fields via pointer
42
+ console.log("Employee Pointer Name:", ep.Name);
43
+ console.log("Employee Pointer Age:", ep.Age);
44
+ console.log("Employee Pointer ID:", ep.ID);
45
+ // Calling embedded method via pointer
46
+ ep.Greet();
47
+ }
48
+ //# sourceMappingURL=struct_embedding.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct_embedding.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/struct_embedding/struct_embedding.gs.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  // Generated file based on struct_field_access.go
2
2
  // Updated when compliance tests are re-run, DO NOT EDIT!
3
- import * as goscript from "@go/builtin";
3
+ import * as goscript from "@goscript/builtin";
4
4
  class MyStruct {
5
5
  MyInt = 0;
6
6
  MyString = "";
@@ -1 +1 @@
1
- {"version":3,"file":"struct_field_access.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/struct_field_access/struct_field_access.gs.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,MAAM,QAAQ;IACN,KAAK,GAAW,CAAC,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IAE7B,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvG,kDAAkD;IAClD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CACvC,UAAU,EACV,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,QAAQ,EAAE,EACd,IAAI,GAAG,CAAC,EAAE,CAAC,EACX,QAAQ,CACT,CAAC;;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,8BAA8B;IAC9B,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC"}
1
+ {"version":3,"file":"struct_field_access.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/struct_field_access/struct_field_access.gs.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAE9C,MAAM,QAAQ;IACN,KAAK,GAAW,CAAC,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IAE7B,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvG,kDAAkD;IAClD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CACvC,UAAU,EACV,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,QAAQ,EAAE,EACd,IAAI,GAAG,CAAC,EAAE,CAAC,EACX,QAAQ,CACT,CAAC;;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,8BAA8B;IAC9B,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAA;IACnD,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,26 @@
1
+ // Generated file based on struct_pointer_interface_fields.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ import * as goscript from "@goscript/builtin";
4
+ // Register this interface with the runtime type system
5
+ const MyInterface__typeInfo = goscript.registerType('MyInterface', goscript.TypeKind.Interface, null, new Set(['Method']), undefined);
6
+ class MyStruct {
7
+ PointerField = null;
8
+ InterfaceField = null;
9
+ constructor(init) { if (init)
10
+ Object.assign(this, init); }
11
+ clone() { return Object.assign(Object.create(MyStruct.prototype), this); }
12
+ // Register this type with the runtime type system
13
+ static __typeInfo = goscript.registerType('MyStruct', goscript.TypeKind.Struct, new MyStruct(), new Set([]), MyStruct);
14
+ }
15
+ export async function main() {
16
+ let s = new MyStruct({});
17
+ console.log(s.PointerField);
18
+ console.log(s.InterfaceField);
19
+ let i = 10;
20
+ s.PointerField = i;
21
+ console.log(s.PointerField);
22
+ let mi = null;
23
+ s.InterfaceField = mi;
24
+ console.log(s.InterfaceField);
25
+ }
26
+ //# sourceMappingURL=struct_pointer_interface_fields.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"struct_pointer_interface_fields.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/struct_pointer_interface_fields/struct_pointer_interface_fields.gs.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAM9C,uDAAuD;AACvD,MAAM,qBAAqB,GAAG,QAAQ,CAAC,YAAY,CACjD,aAAa,EACb,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAC3B,IAAI,EACJ,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EACnB,SAAS,CACV,CAAC;AAEF,MAAM,QAAQ;IACN,YAAY,GAAkB,IAAI,CAAC;IACnC,cAAc,GAAuB,IAAI,CAAC;IAEjD,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvG,kDAAkD;IAClD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CACvC,UAAU,EACV,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,QAAQ,EAAE,EACd,IAAI,GAAG,CAAC,EAAE,CAAC,EACX,QAAQ,CACT,CAAC;;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;IAE7B,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,CAAC,CAAC,YAAY,GAAG,CAAC,CAAA;IAClB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAE3B,IAAI,EAAE,GAAuB,IAAI,CAAC;IAClC,CAAC,CAAC,cAAc,GAAG,EAAE,CAAA;IACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;AAC9B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // Generated file based on struct_value_init_clone.go
2
2
  // Updated when compliance tests are re-run, DO NOT EDIT!
3
- import * as goscript from "@go/builtin";
3
+ import * as goscript from "@goscript/builtin";
4
4
  class Point {
5
5
  X = 0;
6
6
  Y = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"struct_value_init_clone.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,MAAM,KAAK;IACH,CAAC,GAAW,CAAC,CAAC;IACd,CAAC,GAAW,CAAC,CAAC;IAErB,YAAY,IAAqB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC3E,KAAK,KAAY,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9F,kDAAkD;IAClD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CACvC,OAAO,EACP,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,KAAK,EAAE,EACX,IAAI,GAAG,CAAC,EAAE,CAAC,EACX,KAAK,CACN,CAAC;;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,sBAAsB;IACtB,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9B,oDAAoD;IACpD,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;IACnB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA,CAAC,kBAAkB;IAE5B,0CAA0C;IAC1C,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9B,qCAAqC;IACrC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACjC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA,CAAC,uBAAuB;IAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA,CAAC,kBAAkB;IAE5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"struct_value_init_clone.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAE9C,MAAM,KAAK;IACH,CAAC,GAAW,CAAC,CAAC;IACd,CAAC,GAAW,CAAC,CAAC;IAErB,YAAY,IAAqB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC3E,KAAK,KAAY,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9F,kDAAkD;IAClD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CACvC,OAAO,EACP,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,KAAK,EAAE,EACX,IAAI,GAAG,CAAC,EAAE,CAAC,EACX,KAAK,CACN,CAAC;;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,sBAAsB;IACtB,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAA;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9B,oDAAoD;IACpD,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;IACnB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA,CAAC,kBAAkB;IAE5B,0CAA0C;IAC1C,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9B,qCAAqC;IACrC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAA;IAC/B,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA,CAAC,uBAAuB;IAC1C,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA,CAAC,kBAAkB;IAE5B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAC/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // Generated file based on value_type_copy_behavior.go
2
2
  // Updated when compliance tests are re-run, DO NOT EDIT!
3
- import * as goscript from "@go/builtin";
3
+ import * as goscript from "@goscript/builtin";
4
4
  class MyStruct {
5
5
  MyInt = 0;
6
6
  MyString = "";
@@ -1 +1 @@
1
- {"version":3,"file":"value_type_copy_behavior.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,MAAM,QAAQ;IACN,KAAK,GAAW,CAAC,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IAE7B,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvG,kDAAkD;IAClD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CACvC,UAAU,EACV,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,QAAQ,EAAE,EACd,IAAI,GAAG,CAAC,EAAE,CAAC,EACX,QAAQ,CACT,CAAC;;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,IAAI,sBAAsB,GAAG,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;IACnE,mCAAmC;IACnC,8DAA8D;IAC9D,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,IAAI,WAAW,GAAG,sBAAsB,CAAA;IACxC,kEAAkE;IAClE,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,sBAAsB,CAAC,QAAQ,GAAG,qCAAqC,CAAA,CAAC,kCAAkC;IAC1G,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjF,kDAAkD;IAClD,OAAO,CAAC,GAAG,CAAC,mHAAmH,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAClK,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClF,CAAC"}
1
+ {"version":3,"file":"value_type_copy_behavior.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAC;AAE9C,MAAM,QAAQ;IACN,KAAK,GAAW,CAAC,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IAE7B,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvG,kDAAkD;IAClD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CACvC,UAAU,EACV,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACxB,IAAI,QAAQ,EAAE,EACd,IAAI,GAAG,CAAC,EAAE,CAAC,EACX,QAAQ,CACT,CAAC;;AAGH,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,IAAI,sBAAsB,GAAG,IAAI,QAAQ,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAA;IACjE,mCAAmC;IACnC,8DAA8D;IAC9D,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,IAAI,WAAW,GAAG,sBAAsB,CAAA;IACxC,kEAAkE;IAClE,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,sBAAsB,CAAC,QAAQ,GAAG,qCAAqC,CAAA,CAAC,kCAAkC;IAC1G,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjF,kDAAkD;IAClD,OAAO,CAAC,GAAG,CAAC,mHAAmH,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAClK,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goscript",
3
- "version": "0.0.10",
3
+ "version": "0.0.13",
4
4
  "description": "Go to TypeScript compiler",
5
5
  "bin": {
6
6
  "goscript": "./cmd/goscript/main.js"
@@ -30,9 +30,10 @@
30
30
  "build": "tsc",
31
31
  "prepublishOnly": "npm run build",
32
32
  "example": "cd ./example/simple && bash run.bash",
33
- "test": "npm run test:js && npm run test:go",
33
+ "test": "npm run test:go && npm run test:js",
34
34
  "test:go": "go test -v ./...",
35
- "test:js": "tsc --noEmit && vitest run",
35
+ "test:js": "npm run typecheck && vitest run",
36
+ "typecheck": "tsc --noEmit",
36
37
  "format": "npm run format:go && npm run format:js && npm run format:config",
37
38
  "format:config": "prettier --write tsconfig.json package.json",
38
39
  "format:go": "gofumpt -w .",