toilscript 0.0.1 → 0.1.0

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 (120) hide show
  1. package/LICENSE +201 -201
  2. package/NOTICE +94 -94
  3. package/README.md +101 -114
  4. package/bin/asc.js +0 -0
  5. package/bin/asinit.js +0 -0
  6. package/dist/asc.generated.d.ts +10022 -0
  7. package/dist/asc.js +24457 -0
  8. package/dist/asc.js.map +7 -0
  9. package/dist/importmap.json +9 -0
  10. package/dist/toilscript.generated.d.ts +11237 -0
  11. package/dist/toilscript.js +337 -0
  12. package/dist/toilscript.js.map +7 -0
  13. package/dist/web.js +22 -0
  14. package/lib/binaryen.d.ts +2 -2
  15. package/lib/binaryen.js +2 -2
  16. package/package.json +115 -114
  17. package/std/README.md +6 -6
  18. package/std/assembly/array.ts +550 -550
  19. package/std/assembly/arraybuffer.ts +77 -77
  20. package/std/assembly/atomics.ts +127 -127
  21. package/std/assembly/bindings/asyncify.ts +16 -16
  22. package/std/assembly/bindings/dom.ts +291 -291
  23. package/std/assembly/bindings/node.ts +6 -6
  24. package/std/assembly/bitflags.ts +53 -53
  25. package/std/assembly/builtins.ts +2650 -2650
  26. package/std/assembly/byteslice.ts +177 -177
  27. package/std/assembly/compat.ts +2 -2
  28. package/std/assembly/console.ts +42 -42
  29. package/std/assembly/crypto.ts +9 -9
  30. package/std/assembly/dataview.ts +181 -181
  31. package/std/assembly/date.ts +375 -375
  32. package/std/assembly/diagnostics.ts +11 -11
  33. package/std/assembly/encoding.ts +151 -151
  34. package/std/assembly/endian.ts +45 -45
  35. package/std/assembly/error.ts +44 -44
  36. package/std/assembly/fixedarray.ts +173 -173
  37. package/std/assembly/fixedmap.ts +326 -326
  38. package/std/assembly/fixedset.ts +275 -275
  39. package/std/assembly/function.ts +42 -42
  40. package/std/assembly/index.d.ts +2891 -2891
  41. package/std/assembly/iterator.ts +35 -35
  42. package/std/assembly/map.ts +269 -269
  43. package/std/assembly/math.ts +3289 -3289
  44. package/std/assembly/memory.ts +123 -123
  45. package/std/assembly/number.ts +388 -388
  46. package/std/assembly/object.ts +36 -36
  47. package/std/assembly/performance.ts +9 -9
  48. package/std/assembly/pointer.ts +80 -80
  49. package/std/assembly/polyfills.ts +27 -27
  50. package/std/assembly/process.ts +50 -50
  51. package/std/assembly/reference.ts +48 -48
  52. package/std/assembly/regexp.ts +12 -12
  53. package/std/assembly/rt/README.md +83 -83
  54. package/std/assembly/rt/common.ts +81 -81
  55. package/std/assembly/rt/index-incremental.ts +2 -2
  56. package/std/assembly/rt/index-memory.ts +1 -1
  57. package/std/assembly/rt/index-minimal.ts +2 -2
  58. package/std/assembly/rt/index-stub.ts +1 -1
  59. package/std/assembly/rt/index.d.ts +37 -37
  60. package/std/assembly/rt/itcms.ts +419 -419
  61. package/std/assembly/rt/memory-runtime.ts +94 -94
  62. package/std/assembly/rt/rtrace.ts +15 -15
  63. package/std/assembly/rt/stub.ts +133 -133
  64. package/std/assembly/rt/tcms.ts +254 -254
  65. package/std/assembly/rt/tlsf.ts +592 -592
  66. package/std/assembly/rt.ts +90 -90
  67. package/std/assembly/set.ts +225 -225
  68. package/std/assembly/shared/feature.ts +68 -68
  69. package/std/assembly/shared/runtime.ts +13 -13
  70. package/std/assembly/shared/target.ts +11 -11
  71. package/std/assembly/shared/tsconfig.json +11 -11
  72. package/std/assembly/shared/typeinfo.ts +72 -72
  73. package/std/assembly/staticarray.ts +423 -423
  74. package/std/assembly/string.ts +850 -850
  75. package/std/assembly/symbol.ts +114 -114
  76. package/std/assembly/table.ts +16 -16
  77. package/std/assembly/tsconfig.json +6 -6
  78. package/std/assembly/typedarray.ts +1954 -1954
  79. package/std/assembly/uri.ts +17 -17
  80. package/std/assembly/util/bytes.ts +107 -107
  81. package/std/assembly/util/casemap.ts +497 -497
  82. package/std/assembly/util/error.ts +58 -58
  83. package/std/assembly/util/hash.ts +117 -117
  84. package/std/assembly/util/math.ts +1922 -1922
  85. package/std/assembly/util/memory.ts +290 -290
  86. package/std/assembly/util/number.ts +873 -873
  87. package/std/assembly/util/sort.ts +313 -313
  88. package/std/assembly/util/string.ts +1202 -1202
  89. package/std/assembly/util/uri.ts +275 -275
  90. package/std/assembly/vector.ts +4 -4
  91. package/std/assembly.json +16 -16
  92. package/std/portable/index.d.ts +461 -461
  93. package/std/portable/index.js +416 -416
  94. package/std/portable.json +11 -11
  95. package/std/types/assembly/index.d.ts +1 -1
  96. package/std/types/assembly/package.json +2 -2
  97. package/std/types/portable/index.d.ts +1 -1
  98. package/std/types/portable/package.json +2 -2
  99. package/tsconfig-base.json +13 -13
  100. package/util/README.md +23 -23
  101. package/util/browser/fs.js +1 -1
  102. package/util/browser/module.js +5 -5
  103. package/util/browser/path.js +520 -520
  104. package/util/browser/process.js +59 -59
  105. package/util/browser/url.js +23 -23
  106. package/util/cpu.d.ts +9 -9
  107. package/util/cpu.js +42 -42
  108. package/util/find.d.ts +6 -6
  109. package/util/find.js +20 -20
  110. package/util/node.d.ts +21 -21
  111. package/util/node.js +34 -34
  112. package/util/options.d.ts +70 -70
  113. package/util/options.js +262 -262
  114. package/util/terminal.d.ts +52 -52
  115. package/util/terminal.js +35 -35
  116. package/util/text.d.ts +26 -26
  117. package/util/text.js +114 -114
  118. package/util/tsconfig.json +9 -9
  119. package/util/web.d.ts +11 -11
  120. package/util/web.js +33 -33
@@ -1,11 +1,11 @@
1
- // @ts-ignore: decorator
2
- @builtin
3
- export declare function ERROR(message?: string): void;
4
-
5
- // @ts-ignore: decorator
6
- @builtin
7
- export declare function WARNING(message?: string): void;
8
-
9
- // @ts-ignore: decorator
10
- @builtin
11
- export declare function INFO(message?: string): void;
1
+ // @ts-ignore: decorator
2
+ @builtin
3
+ export declare function ERROR(message?: string): void;
4
+
5
+ // @ts-ignore: decorator
6
+ @builtin
7
+ export declare function WARNING(message?: string): void;
8
+
9
+ // @ts-ignore: decorator
10
+ @builtin
11
+ export declare function INFO(message?: string): void;
@@ -1,151 +1,151 @@
1
- import { Pointer } from "./pointer";
2
-
3
- // Hex and varint encoding utilities.
4
- // Inline functions for zero-overhead encoding/decoding.
5
-
6
- export namespace Encoding {
7
-
8
- export namespace Hex {
9
- /** Encode bytes at `src` (length `srcLen`) to hex chars at `dst`. Returns chars written (srcLen * 2). */
10
- @inline export function encode(src: usize, srcLen: i32, dst: usize): i32 {
11
- for (let i: i32 = 0; i < srcLen; ++i) {
12
- encodeByte(load<u8>(src + <usize>i), dst + <usize>(i << 1));
13
- }
14
- return srcLen << 1;
15
- }
16
-
17
- /** Decode hex chars at `src` (length `srcLen`, must be even) to bytes at `dst`. Returns bytes written, or -1 on error. */
18
- @inline export function decode(src: usize, srcLen: i32, dst: usize): i32 {
19
- if (srcLen & 1) return -1; // odd length
20
- let outLen = srcLen >> 1;
21
- for (let i: i32 = 0; i < outLen; ++i) {
22
- let b = decodeByte(src + <usize>(i << 1));
23
- if (b < 0) return -1;
24
- store<u8>(dst + <usize>i, <u8>b);
25
- }
26
- return outLen;
27
- }
28
-
29
- /** Encode a single byte to 2 hex chars at `dst`. */
30
- @inline export function encodeByte(value: u8, dst: usize): void {
31
- let hi = (value >>> 4) & 0x0F;
32
- let lo = value & 0x0F;
33
- store<u8>(dst, hi < 10 ? hi + 48 : hi + 87); // '0'-'9' or 'a'-'f'
34
- store<u8>(dst + 1, lo < 10 ? lo + 48 : lo + 87);
35
- }
36
-
37
- /** Decode 2 hex chars at `src` to a byte value. Returns -1 on invalid input. */
38
- @inline export function decodeByte(src: usize): i32 {
39
- let hi = decodeNibble(load<u8>(src));
40
- let lo = decodeNibble(load<u8>(src + 1));
41
- if ((hi | lo) < 0) return -1;
42
- return (hi << 4) | lo;
43
- }
44
-
45
- // Internal nibble decoder
46
- @inline function decodeNibble(c: u8): i32 {
47
- if (c >= 48 && c <= 57) return <i32>(c - 48); // '0'-'9'
48
- if (c >= 97 && c <= 102) return <i32>(c - 87); // 'a'-'f'
49
- if (c >= 65 && c <= 70) return <i32>(c - 55); // 'A'-'F'
50
- return -1;
51
- }
52
- }
53
-
54
- export namespace Varint {
55
- /** Encode a u32 as unsigned LEB128 at `dst`. Returns bytes written. */
56
- @inline export function encodeU32(value: u32, dst: usize): i32 {
57
- let i: i32 = 0;
58
- while (value >= 0x80) {
59
- store<u8>(dst + <usize>i, <u8>((value & 0x7F) | 0x80));
60
- value >>= 7;
61
- ++i;
62
- }
63
- store<u8>(dst + <usize>i, <u8>value);
64
- return i + 1;
65
- }
66
-
67
- /** Encode a u64 as unsigned LEB128 at `dst`. Returns bytes written. */
68
- @inline export function encodeU64(value: u64, dst: usize): i32 {
69
- let i: i32 = 0;
70
- while (value >= 0x80) {
71
- store<u8>(dst + <usize>i, <u8>((<u32>(value & 0x7F)) | 0x80));
72
- value >>= 7;
73
- ++i;
74
- }
75
- store<u8>(dst + <usize>i, <u8><u32>value);
76
- return i + 1;
77
- }
78
-
79
- /** Decode an unsigned LEB128-encoded u32 from `src`. Writes bytes consumed to `bytesRead`. Max 5 bytes. */
80
- @inline export function decodeU32(src: usize, bytesRead: Pointer<i32>): u32 {
81
- let result: u32 = 0;
82
- let shift: u32 = 0;
83
- let i: i32 = 0;
84
- let b: u8;
85
- do {
86
- b = load<u8>(src + <usize>i);
87
- result |= <u32>(b & 0x7F) << shift;
88
- shift += 7;
89
- ++i;
90
- if (i >= 5) break; // u32 needs at most 5 LEB128 bytes
91
- } while (b & 0x80);
92
- bytesRead.value = i;
93
- return result;
94
- }
95
-
96
- /** Decode an unsigned LEB128-encoded u64 from `src`. Writes bytes consumed to `bytesRead`. Max 10 bytes. */
97
- @inline export function decodeU64(src: usize, bytesRead: Pointer<i32>): u64 {
98
- let result: u64 = 0;
99
- let shift: u64 = 0;
100
- let i: i32 = 0;
101
- let b: u8;
102
- do {
103
- b = load<u8>(src + <usize>i);
104
- result |= <u64>(b & 0x7F) << shift;
105
- shift += 7;
106
- ++i;
107
- if (i >= 10) break; // u64 needs at most 10 LEB128 bytes
108
- } while (b & 0x80);
109
- bytesRead.value = i;
110
- return result;
111
- }
112
-
113
- /** Encode a u64 as Bitcoin CompactSize at `dst`. Returns bytes written. */
114
- @inline export function encodeCompact(value: u64, dst: usize): i32 {
115
- if (value < 0xFD) {
116
- store<u8>(dst, <u8><u32>value);
117
- return 1;
118
- } else if (value <= 0xFFFF) {
119
- store<u8>(dst, 0xFD);
120
- store<u16>(dst + 1, <u16><u32>value); // LE
121
- return 3;
122
- } else if (value <= 0xFFFFFFFF) {
123
- store<u8>(dst, 0xFE);
124
- store<u32>(dst + 1, <u32>value); // LE
125
- return 5;
126
- } else {
127
- store<u8>(dst, 0xFF);
128
- store<u64>(dst + 1, value); // LE
129
- return 9;
130
- }
131
- }
132
-
133
- /** Decode a Bitcoin CompactSize from `src`. Writes bytes consumed to `bytesRead`. */
134
- @inline export function decodeCompact(src: usize, bytesRead: Pointer<i32>): u64 {
135
- let first = load<u8>(src);
136
- if (first < 0xFD) {
137
- bytesRead.value = 1;
138
- return <u64>first;
139
- } else if (first == 0xFD) {
140
- bytesRead.value = 3;
141
- return <u64>load<u16>(src + 1);
142
- } else if (first == 0xFE) {
143
- bytesRead.value = 5;
144
- return <u64>load<u32>(src + 1);
145
- } else {
146
- bytesRead.value = 9;
147
- return load<u64>(src + 1);
148
- }
149
- }
150
- }
151
- }
1
+ import { Pointer } from "./pointer";
2
+
3
+ // Hex and varint encoding utilities.
4
+ // Inline functions for zero-overhead encoding/decoding.
5
+
6
+ export namespace Encoding {
7
+
8
+ export namespace Hex {
9
+ /** Encode bytes at `src` (length `srcLen`) to hex chars at `dst`. Returns chars written (srcLen * 2). */
10
+ @inline export function encode(src: usize, srcLen: i32, dst: usize): i32 {
11
+ for (let i: i32 = 0; i < srcLen; ++i) {
12
+ encodeByte(load<u8>(src + <usize>i), dst + <usize>(i << 1));
13
+ }
14
+ return srcLen << 1;
15
+ }
16
+
17
+ /** Decode hex chars at `src` (length `srcLen`, must be even) to bytes at `dst`. Returns bytes written, or -1 on error. */
18
+ @inline export function decode(src: usize, srcLen: i32, dst: usize): i32 {
19
+ if (srcLen & 1) return -1; // odd length
20
+ let outLen = srcLen >> 1;
21
+ for (let i: i32 = 0; i < outLen; ++i) {
22
+ let b = decodeByte(src + <usize>(i << 1));
23
+ if (b < 0) return -1;
24
+ store<u8>(dst + <usize>i, <u8>b);
25
+ }
26
+ return outLen;
27
+ }
28
+
29
+ /** Encode a single byte to 2 hex chars at `dst`. */
30
+ @inline export function encodeByte(value: u8, dst: usize): void {
31
+ let hi = (value >>> 4) & 0x0F;
32
+ let lo = value & 0x0F;
33
+ store<u8>(dst, hi < 10 ? hi + 48 : hi + 87); // '0'-'9' or 'a'-'f'
34
+ store<u8>(dst + 1, lo < 10 ? lo + 48 : lo + 87);
35
+ }
36
+
37
+ /** Decode 2 hex chars at `src` to a byte value. Returns -1 on invalid input. */
38
+ @inline export function decodeByte(src: usize): i32 {
39
+ let hi = decodeNibble(load<u8>(src));
40
+ let lo = decodeNibble(load<u8>(src + 1));
41
+ if ((hi | lo) < 0) return -1;
42
+ return (hi << 4) | lo;
43
+ }
44
+
45
+ // Internal nibble decoder
46
+ @inline function decodeNibble(c: u8): i32 {
47
+ if (c >= 48 && c <= 57) return <i32>(c - 48); // '0'-'9'
48
+ if (c >= 97 && c <= 102) return <i32>(c - 87); // 'a'-'f'
49
+ if (c >= 65 && c <= 70) return <i32>(c - 55); // 'A'-'F'
50
+ return -1;
51
+ }
52
+ }
53
+
54
+ export namespace Varint {
55
+ /** Encode a u32 as unsigned LEB128 at `dst`. Returns bytes written. */
56
+ @inline export function encodeU32(value: u32, dst: usize): i32 {
57
+ let i: i32 = 0;
58
+ while (value >= 0x80) {
59
+ store<u8>(dst + <usize>i, <u8>((value & 0x7F) | 0x80));
60
+ value >>= 7;
61
+ ++i;
62
+ }
63
+ store<u8>(dst + <usize>i, <u8>value);
64
+ return i + 1;
65
+ }
66
+
67
+ /** Encode a u64 as unsigned LEB128 at `dst`. Returns bytes written. */
68
+ @inline export function encodeU64(value: u64, dst: usize): i32 {
69
+ let i: i32 = 0;
70
+ while (value >= 0x80) {
71
+ store<u8>(dst + <usize>i, <u8>((<u32>(value & 0x7F)) | 0x80));
72
+ value >>= 7;
73
+ ++i;
74
+ }
75
+ store<u8>(dst + <usize>i, <u8><u32>value);
76
+ return i + 1;
77
+ }
78
+
79
+ /** Decode an unsigned LEB128-encoded u32 from `src`. Writes bytes consumed to `bytesRead`. Max 5 bytes. */
80
+ @inline export function decodeU32(src: usize, bytesRead: Pointer<i32>): u32 {
81
+ let result: u32 = 0;
82
+ let shift: u32 = 0;
83
+ let i: i32 = 0;
84
+ let b: u8;
85
+ do {
86
+ b = load<u8>(src + <usize>i);
87
+ result |= <u32>(b & 0x7F) << shift;
88
+ shift += 7;
89
+ ++i;
90
+ if (i >= 5) break; // u32 needs at most 5 LEB128 bytes
91
+ } while (b & 0x80);
92
+ bytesRead.value = i;
93
+ return result;
94
+ }
95
+
96
+ /** Decode an unsigned LEB128-encoded u64 from `src`. Writes bytes consumed to `bytesRead`. Max 10 bytes. */
97
+ @inline export function decodeU64(src: usize, bytesRead: Pointer<i32>): u64 {
98
+ let result: u64 = 0;
99
+ let shift: u64 = 0;
100
+ let i: i32 = 0;
101
+ let b: u8;
102
+ do {
103
+ b = load<u8>(src + <usize>i);
104
+ result |= <u64>(b & 0x7F) << shift;
105
+ shift += 7;
106
+ ++i;
107
+ if (i >= 10) break; // u64 needs at most 10 LEB128 bytes
108
+ } while (b & 0x80);
109
+ bytesRead.value = i;
110
+ return result;
111
+ }
112
+
113
+ /** Encode a u64 as Bitcoin CompactSize at `dst`. Returns bytes written. */
114
+ @inline export function encodeCompact(value: u64, dst: usize): i32 {
115
+ if (value < 0xFD) {
116
+ store<u8>(dst, <u8><u32>value);
117
+ return 1;
118
+ } else if (value <= 0xFFFF) {
119
+ store<u8>(dst, 0xFD);
120
+ store<u16>(dst + 1, <u16><u32>value); // LE
121
+ return 3;
122
+ } else if (value <= 0xFFFFFFFF) {
123
+ store<u8>(dst, 0xFE);
124
+ store<u32>(dst + 1, <u32>value); // LE
125
+ return 5;
126
+ } else {
127
+ store<u8>(dst, 0xFF);
128
+ store<u64>(dst + 1, value); // LE
129
+ return 9;
130
+ }
131
+ }
132
+
133
+ /** Decode a Bitcoin CompactSize from `src`. Writes bytes consumed to `bytesRead`. */
134
+ @inline export function decodeCompact(src: usize, bytesRead: Pointer<i32>): u64 {
135
+ let first = load<u8>(src);
136
+ if (first < 0xFD) {
137
+ bytesRead.value = 1;
138
+ return <u64>first;
139
+ } else if (first == 0xFD) {
140
+ bytesRead.value = 3;
141
+ return <u64>load<u16>(src + 1);
142
+ } else if (first == 0xFE) {
143
+ bytesRead.value = 5;
144
+ return <u64>load<u32>(src + 1);
145
+ } else {
146
+ bytesRead.value = 9;
147
+ return load<u64>(src + 1);
148
+ }
149
+ }
150
+ }
151
+ }
@@ -1,45 +1,45 @@
1
- // Zero-overhead endian conversion utilities.
2
- // Wasm is little-endian; protocols (Bitcoin, networking) often need big-endian.
3
-
4
- export namespace Endian {
5
-
6
- /** Load a value from memory in big-endian byte order. */
7
- @inline export function loadBE<T>(ptr: usize, offset: usize = 0): T {
8
- return bswap<T>(load<T>(ptr + offset));
9
- }
10
-
11
- /** Store a value to memory in big-endian byte order. */
12
- @inline export function storeBE<T>(ptr: usize, value: T, offset: usize = 0): void {
13
- store<T>(ptr + offset, bswap<T>(value));
14
- }
15
-
16
- /** Load a value from memory in little-endian byte order (identity on wasm). */
17
- @inline export function loadLE<T>(ptr: usize, offset: usize = 0): T {
18
- return load<T>(ptr + offset);
19
- }
20
-
21
- /** Store a value to memory in little-endian byte order (identity on wasm). */
22
- @inline export function storeLE<T>(ptr: usize, value: T, offset: usize = 0): void {
23
- store<T>(ptr + offset, value);
24
- }
25
-
26
- /** Convert a value to big-endian byte order (bswap on wasm). */
27
- @inline export function toBE<T>(value: T): T {
28
- return bswap<T>(value);
29
- }
30
-
31
- /** Convert a value from big-endian byte order (bswap on wasm). */
32
- @inline export function fromBE<T>(value: T): T {
33
- return bswap<T>(value);
34
- }
35
-
36
- /** Convert a value to little-endian byte order (identity on wasm). */
37
- @inline export function toLE<T>(value: T): T {
38
- return value;
39
- }
40
-
41
- /** Convert a value from little-endian byte order (identity on wasm). */
42
- @inline export function fromLE<T>(value: T): T {
43
- return value;
44
- }
45
- }
1
+ // Zero-overhead endian conversion utilities.
2
+ // Wasm is little-endian; protocols (Bitcoin, networking) often need big-endian.
3
+
4
+ export namespace Endian {
5
+
6
+ /** Load a value from memory in big-endian byte order. */
7
+ @inline export function loadBE<T>(ptr: usize, offset: usize = 0): T {
8
+ return bswap<T>(load<T>(ptr + offset));
9
+ }
10
+
11
+ /** Store a value to memory in big-endian byte order. */
12
+ @inline export function storeBE<T>(ptr: usize, value: T, offset: usize = 0): void {
13
+ store<T>(ptr + offset, bswap<T>(value));
14
+ }
15
+
16
+ /** Load a value from memory in little-endian byte order (identity on wasm). */
17
+ @inline export function loadLE<T>(ptr: usize, offset: usize = 0): T {
18
+ return load<T>(ptr + offset);
19
+ }
20
+
21
+ /** Store a value to memory in little-endian byte order (identity on wasm). */
22
+ @inline export function storeLE<T>(ptr: usize, value: T, offset: usize = 0): void {
23
+ store<T>(ptr + offset, value);
24
+ }
25
+
26
+ /** Convert a value to big-endian byte order (bswap on wasm). */
27
+ @inline export function toBE<T>(value: T): T {
28
+ return bswap<T>(value);
29
+ }
30
+
31
+ /** Convert a value from big-endian byte order (bswap on wasm). */
32
+ @inline export function fromBE<T>(value: T): T {
33
+ return bswap<T>(value);
34
+ }
35
+
36
+ /** Convert a value to little-endian byte order (identity on wasm). */
37
+ @inline export function toLE<T>(value: T): T {
38
+ return value;
39
+ }
40
+
41
+ /** Convert a value from little-endian byte order (identity on wasm). */
42
+ @inline export function fromLE<T>(value: T): T {
43
+ return value;
44
+ }
45
+ }
@@ -1,44 +1,44 @@
1
- export class Error {
2
-
3
- name: string = "Error";
4
- stack: string = ""; // TODO
5
-
6
- constructor(
7
- public message: string = ""
8
- ) {}
9
-
10
- toString(): string {
11
- let message = this.message;
12
- return message.length
13
- ? this.name + ": " + message
14
- : this.name;
15
- }
16
- }
17
-
18
- export class RangeError extends Error {
19
- constructor(message: string = "") {
20
- super(message);
21
- this.name = "RangeError";
22
- }
23
- }
24
-
25
- export class TypeError extends Error {
26
- constructor(message: string = "") {
27
- super(message);
28
- this.name = "TypeError";
29
- }
30
- }
31
-
32
- export class SyntaxError extends Error {
33
- constructor(message: string = "") {
34
- super(message);
35
- this.name = "SyntaxError";
36
- }
37
- }
38
-
39
- export class URIError extends Error {
40
- constructor(message: string = "") {
41
- super(message);
42
- this.name = "URIError";
43
- }
44
- }
1
+ export class Error {
2
+
3
+ name: string = "Error";
4
+ stack: string = ""; // TODO
5
+
6
+ constructor(
7
+ public message: string = ""
8
+ ) {}
9
+
10
+ toString(): string {
11
+ let message = this.message;
12
+ return message.length
13
+ ? this.name + ": " + message
14
+ : this.name;
15
+ }
16
+ }
17
+
18
+ export class RangeError extends Error {
19
+ constructor(message: string = "") {
20
+ super(message);
21
+ this.name = "RangeError";
22
+ }
23
+ }
24
+
25
+ export class TypeError extends Error {
26
+ constructor(message: string = "") {
27
+ super(message);
28
+ this.name = "TypeError";
29
+ }
30
+ }
31
+
32
+ export class SyntaxError extends Error {
33
+ constructor(message: string = "") {
34
+ super(message);
35
+ this.name = "SyntaxError";
36
+ }
37
+ }
38
+
39
+ export class URIError extends Error {
40
+ constructor(message: string = "") {
41
+ super(message);
42
+ this.name = "URIError";
43
+ }
44
+ }