@oazmi/superbuild 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 (118) hide show
  1. package/esm/_dnt.shims.d.ts +2 -0
  2. package/esm/_dnt.shims.d.ts.map +1 -0
  3. package/esm/_dnt.shims.js +57 -0
  4. package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.d.ts +598 -0
  5. package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.d.ts.map +1 -0
  6. package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.js +1 -0
  7. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.d.ts +617 -0
  8. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.d.ts.map +1 -0
  9. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.js +671 -0
  10. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.d.ts +487 -0
  11. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.d.ts.map +1 -0
  12. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.js +536 -0
  13. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.d.ts +266 -0
  14. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.d.ts.map +1 -0
  15. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.js +318 -0
  16. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.d.ts +368 -0
  17. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.d.ts.map +1 -0
  18. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.js +380 -0
  19. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.d.ts +711 -0
  20. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.d.ts.map +1 -0
  21. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.js +1173 -0
  22. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.d.ts +171 -0
  23. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.d.ts.map +1 -0
  24. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.js +308 -0
  25. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.d.ts +10 -0
  26. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.d.ts.map +1 -0
  27. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.js +10 -0
  28. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.d.ts +168 -0
  29. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.d.ts.map +1 -0
  30. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.js +236 -0
  31. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.d.ts +90 -0
  32. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.d.ts.map +1 -0
  33. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.js +237 -0
  34. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.d.ts +213 -0
  35. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.d.ts.map +1 -0
  36. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.js +363 -0
  37. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.d.ts +233 -0
  38. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.d.ts.map +1 -0
  39. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.js +256 -0
  40. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.d.ts +1436 -0
  41. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.d.ts.map +1 -0
  42. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.js +1730 -0
  43. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.d.ts +647 -0
  44. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.d.ts.map +1 -0
  45. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.js +762 -0
  46. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.d.ts +538 -0
  47. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.d.ts.map +1 -0
  48. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.js +626 -0
  49. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.d.ts +734 -0
  50. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.d.ts.map +1 -0
  51. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.js +764 -0
  52. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.d.ts +137 -0
  53. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.d.ts.map +1 -0
  54. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.js +234 -0
  55. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.d.ts +391 -0
  56. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.d.ts.map +1 -0
  57. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.js +8 -0
  58. package/esm/deps.d.ts +56 -0
  59. package/esm/deps.d.ts.map +1 -0
  60. package/esm/deps.js +37 -0
  61. package/esm/esbuild/metafile.d.ts +90 -0
  62. package/esm/esbuild/metafile.d.ts.map +1 -0
  63. package/esm/esbuild/metafile.js +275 -0
  64. package/esm/esbuild/native.d.ts +95 -0
  65. package/esm/esbuild/native.d.ts.map +1 -0
  66. package/esm/esbuild/native.js +127 -0
  67. package/esm/esbuild/outputfile.d.ts +86 -0
  68. package/esm/esbuild/outputfile.d.ts.map +1 -0
  69. package/esm/esbuild/outputfile.js +221 -0
  70. package/esm/esbuild/strongtypes.d.ts +90 -0
  71. package/esm/esbuild/strongtypes.d.ts.map +1 -0
  72. package/esm/esbuild/strongtypes.js +8 -0
  73. package/esm/esbuild/typedefs.d.ts +121 -0
  74. package/esm/esbuild/typedefs.d.ts.map +1 -0
  75. package/esm/esbuild/typedefs.js +55 -0
  76. package/esm/esbuild/weaktypes.d.ts +46 -0
  77. package/esm/esbuild/weaktypes.d.ts.map +1 -0
  78. package/esm/esbuild/weaktypes.js +8 -0
  79. package/esm/funcdefs.d.ts +89 -0
  80. package/esm/funcdefs.d.ts.map +1 -0
  81. package/esm/funcdefs.js +145 -0
  82. package/esm/mod.d.ts +4 -0
  83. package/esm/mod.d.ts.map +1 -0
  84. package/esm/mod.js +2 -0
  85. package/esm/package.json +3 -0
  86. package/esm/plugins/emissions_driver.d.ts +33 -0
  87. package/esm/plugins/emissions_driver.d.ts.map +1 -0
  88. package/esm/plugins/emissions_driver.js +260 -0
  89. package/esm/plugins/long_build.d.ts +138 -0
  90. package/esm/plugins/long_build.d.ts.map +1 -0
  91. package/esm/plugins/long_build.js +288 -0
  92. package/esm/plugins/native_replica.d.ts +48 -0
  93. package/esm/plugins/native_replica.d.ts.map +1 -0
  94. package/esm/plugins/native_replica.js +122 -0
  95. package/esm/super/build.d.ts +53 -0
  96. package/esm/super/build.d.ts.map +1 -0
  97. package/esm/super/build.js +39 -0
  98. package/esm/super/build_context.d.ts +83 -0
  99. package/esm/super/build_context.d.ts.map +1 -0
  100. package/esm/super/build_context.js +124 -0
  101. package/esm/super/mod.d.ts +12 -0
  102. package/esm/super/mod.d.ts.map +1 -0
  103. package/esm/super/mod.js +9 -0
  104. package/esm/super/plugin.d.ts +23 -0
  105. package/esm/super/plugin.d.ts.map +1 -0
  106. package/esm/super/plugin.js +31 -0
  107. package/esm/super/plugin_build.d.ts +38 -0
  108. package/esm/super/plugin_build.d.ts.map +1 -0
  109. package/esm/super/plugin_build.js +198 -0
  110. package/esm/super/typedefs.d.ts +323 -0
  111. package/esm/super/typedefs.d.ts.map +1 -0
  112. package/esm/super/typedefs.js +10 -0
  113. package/esm/typedefs.d.ts +21 -0
  114. package/esm/typedefs.d.ts.map +1 -0
  115. package/esm/typedefs.js +5 -0
  116. package/license.md +37 -0
  117. package/package.json +88 -0
  118. package/readme.md +181 -0
@@ -0,0 +1,237 @@
1
+ /** submodule for {@link "eightpack"} that adds the ability to encode and decode variable byte-sized integers.
2
+ *
3
+ * this part of the library has been separated from {@link "eightpack"} because of the unlikeyhood of being used.
4
+ *
5
+ * - `uvar` stands for an unsigned variable-sized integer.
6
+ * - `ivar` stands for a signed variable-sized integer.
7
+ *
8
+ * ## Purpose
9
+ *
10
+ * these variable-sized encodings are especially useful for encoding the length of other variables in their header (i.e. at the beginning of their sequence).
11
+ *
12
+ * ## How the encoding works
13
+ *
14
+ * ### Unsigned integer case
15
+ *
16
+ * - the byte form of a `uvar` occupies a variable number of bytes to accommodate the unsigned integer that it is holding.
17
+ * - for each byte, it uses the first bit of the octet (`0bXYYYYYYY`) to signal whether the integer carries on to the next byte (X == 1) or not (X == 0).
18
+ * - the remaining 7 bits in each byte are used for base-7 big-endian encoding of the numeric value of the integer (`YYYYYYY`).
19
+ * - you can read more about it on [wikipedia](https://en.wikipedia.org/wiki/Variable-length_quantity).
20
+ *
21
+ * the following table lists the first few bounds of this encoding:
22
+ *
23
+ * | decimal | unsigned big endian binary | unsigned variable binary |
24
+ * |------------------|---------------------------------------------|----------------------------------|
25
+ * | 0 | 0b00000000 0b00000000 0b00000000 0b00000000 | 0b00000000 |
26
+ * | 127 = 2^7 - 1 | 0b00000000 0b00000000 0b00000000 0b01111111 | 0b01111111 |
27
+ * | 128 = 2^7 | 0b00000000 0b00000000 0b00000000 0b10000000 | 0b10000001 0b00000000 |
28
+ * | 16383 = 2^14 - 1 | 0b00000000 0b00000000 0b00111111 0b11111111 | 0b11111111 0b01111111 |
29
+ * | 16384 = 2^14 | 0b00000000 0b00000000 0b01000000 0b00000000 | 0b10000001 0b10000000 0b00000000 |
30
+ *
31
+ * ### Signed integer case
32
+ *
33
+ * - the `ivar` encoding is similar to the `uvar` encoding, with the exception that in the first byte,
34
+ * the second-major bit `Z` of the octet (0b0ZYYYYYY) signals whether the number is positive (Z == 0), or negative (Z == 1).
35
+ *
36
+ * the following table lists the first few bounds of this encoding:
37
+ *
38
+ * | decimal | signed big endian binary | signed variable binary |
39
+ * |---------------------|---------------------------------------------|----------------------------------|
40
+ * | 0 | 0b00000000 0b00000000 0b00000000 0b00000000 | 0b00000000 or 0b01000000 |
41
+ * | 63 = 2^6 - 1 | 0b00000000 0b00000000 0b00000000 0b00111111 | 0b00111111 |
42
+ * | -63 = -(2^6 - 1) | 0b00000000 0b00000000 0b00000000 0b11000001 | 0b01111111 |
43
+ * | 8191 = 2^13 - 1 | 0b00000000 0b00000000 0b00011111 0b11111111 | 0b10111111 0b01111111 |
44
+ * | -8191 = -(2^13 - 1) | 0b00000000 0b00000000 0b11100000 0b00000001 | 0b11111111 0b01111111 |
45
+ *
46
+ * @module
47
+ */
48
+ /** encode a `number` as a variable sized integer (signed or unsigned) in binary. */
49
+ export const encode_varint = (value, type) => { return encode_varint_array([value,], type); };
50
+ /** encode an array of `number`s as variable sized integers (signed or unsigned) in binary. */
51
+ export const encode_varint_array = (value, type) => {
52
+ return type[0] === "u"
53
+ ? encode_uvar_array(value)
54
+ : encode_ivar_array(value);
55
+ };
56
+ /** decode an byte buffer as a variable sized integer of the given `type` (signed or unsigned). */
57
+ export const decode_varint = (buf, offset, type) => {
58
+ const [value, bytesize] = decode_varint_array(buf, offset, type, 1);
59
+ return [value[0], bytesize];
60
+ };
61
+ /** decode an byte buffer as an array of variable sized integers of the given `type` (signed or unsigned) and `array_length`. */
62
+ export const decode_varint_array = (buf, offset, type, array_length) => {
63
+ return type[0] === "u"
64
+ ? decode_uvar_array(buf, offset, array_length)
65
+ : decode_ivar_array(buf, offset, array_length);
66
+ };
67
+ /** byte encoder for an array of unsigned-integers.
68
+ * use {@link decode_uvar_array} for decoding the result.
69
+ */
70
+ export const encode_uvar_array = (value) => {
71
+ const len = value.length, bytes = [];
72
+ for (let i = 0; i < len; i++) {
73
+ let v = value[i];
74
+ v = v * (v >= 0 ? 1 : -1); // converting to absolute value
75
+ const lsb_to_msb = [];
76
+ do {
77
+ lsb_to_msb.push((v & 0b01111111) + 0b10000000);
78
+ v >>= 7;
79
+ } while (v > 0);
80
+ lsb_to_msb[0] &= 0b01111111;
81
+ bytes.push(...lsb_to_msb.reverse());
82
+ }
83
+ return Uint8Array.from(bytes);
84
+ };
85
+ /** byte buffer decoder for an array of unsigned-integers of the given (optional) `array_length`.
86
+ * use {@link encode_uvar_array} for encoding first.
87
+ */
88
+ export const decode_uvar_array = (buf, offset = 0, array_length) => {
89
+ if (array_length === undefined) {
90
+ array_length = Infinity;
91
+ }
92
+ const array = [], offset_start = offset, buf_length = buf.length;
93
+ // this is a condensed version of {@link decode_uvar}
94
+ let value = 0;
95
+ for (let byte = buf[offset++]; array_length > 0 && offset < buf_length + 1; byte = buf[offset++]) {
96
+ value <<= 7;
97
+ value += byte & 0b01111111;
98
+ if (byte >> 7 === 0) {
99
+ array.push(value);
100
+ array_length--;
101
+ value = 0;
102
+ }
103
+ }
104
+ offset--;
105
+ return [array, offset - offset_start];
106
+ };
107
+ /** byte encoder for an array of signed-integers.
108
+ * use {@link decode_ivar_array} for decoding the result.
109
+ */
110
+ export const encode_ivar_array = (value) => {
111
+ const len = value.length, bytes = [];
112
+ for (let i = 0; i < len; i++) {
113
+ let v = value[i];
114
+ const sign = v >= 0 ? 1 : -1, lsb_to_msb = [];
115
+ v = v * sign; // `v` is now positive
116
+ while (v > 0b00111111) {
117
+ lsb_to_msb.push((v & 0b01111111) + 0b10000000);
118
+ v >>= 7;
119
+ }
120
+ lsb_to_msb.push((v & 0b00111111) | (sign == -1 ? 0b11000000 : 0b10000000));
121
+ lsb_to_msb[0] &= 0b01111111;
122
+ bytes.push(...lsb_to_msb.reverse());
123
+ }
124
+ return Uint8Array.from(bytes);
125
+ };
126
+ /** byte buffer decoder for an array of signed-integers of the given (optional) `array_length`.
127
+ * use {@link encode_ivar_array} for encoding first.
128
+ */
129
+ export const decode_ivar_array = (buf, offset = 0, array_length) => {
130
+ if (array_length === undefined) {
131
+ array_length = Infinity;
132
+ }
133
+ const array = [], offset_start = offset, buf_length = buf.length;
134
+ // this is a condensed version of {@link decode_ivar}
135
+ let sign = 0, value = 0;
136
+ for (let byte = buf[offset++]; array_length > 0 && offset < buf_length + 1; byte = buf[offset++]) {
137
+ if (sign === 0) {
138
+ sign = (byte & 0b01000000) > 0 ? -1 : 1;
139
+ value = (byte & 0b00111111);
140
+ }
141
+ else {
142
+ value <<= 7;
143
+ value += byte & 0b01111111;
144
+ }
145
+ if (byte >> 7 === 0) {
146
+ array.push(value * sign);
147
+ array_length--;
148
+ sign = 0;
149
+ value = 0;
150
+ }
151
+ }
152
+ offset--;
153
+ return [array, offset - offset_start];
154
+ };
155
+ /** a single variable-sized unsigned-integer byte encoder.
156
+ * use {@link decode_uvar} for decoding the result.
157
+ */
158
+ export const encode_uvar = (value) => { return encode_uvar_array([value,]); };
159
+ /// the old implementation, which was designed for a single `number` and was easier to read, has been kept here for reference.
160
+ /*
161
+ const encode_uvar: EncodeFunc<number | bigint> = (value) => {
162
+ value = BigInt(value) * (value >= 0 ? 1n : -1n) // converting to absolute value
163
+ const lsb_to_msb: number[] = []
164
+ do {
165
+ lsb_to_msb.push(Number((value & 0b01111111n) + 0b10000000n))
166
+ value >>= 7n
167
+ } while (value > 0n)
168
+ lsb_to_msb[0] &= 0b01111111
169
+ return Uint8Array.from(lsb_to_msb.reverse())
170
+ }
171
+ */
172
+ /** a single variable-sized unsigned-integers decoder.
173
+ * use {@link encode_uvar} for encoding first.
174
+ */
175
+ export const decode_uvar = (buf, offset = 0) => {
176
+ const [value_arr, bytesize] = decode_uvar_array(buf, offset, 1);
177
+ return [value_arr[0], bytesize];
178
+ };
179
+ /// the old implementation, which was designed for a single `number` and was easier to read, has been kept here for reference.
180
+ /*
181
+ const decode_uvar: DecodeFunc<number> = (buf, offset = 0) => {
182
+ const offset_start = offset
183
+ let
184
+ byte: number,
185
+ value: bigint = 0n
186
+ do {
187
+ byte = buf[offset++]
188
+ value <<= 7n
189
+ value += BigInt(byte & 0b01111111)
190
+ } while (byte >> 7 === 1)
191
+ return [Number(value), offset - offset_start]
192
+ }
193
+ */
194
+ /** a single variable-sized signed-integer byte encoder.
195
+ * use {@link decode_ivar} for decoding the result.
196
+ */
197
+ export const encode_ivar = (value) => { return encode_ivar_array([value,]); };
198
+ /// the old implementation, which was designed for a single `number` and was easier to read, has been kept here for reference.
199
+ /*
200
+ const encode_ivar: EncodeFunc<number | bigint> = (value) => {
201
+ const
202
+ sign = value >= 0 ? 1n : -1n,
203
+ lsb_to_msb: number[] = []
204
+ value = BigInt(value) * sign // `val` is now positive
205
+ while (value > 0b00111111n) {
206
+ lsb_to_msb.push(Number((value & 0b01111111n) + 0b10000000n))
207
+ value >>= 7n
208
+ }
209
+ lsb_to_msb.push(Number((value & 0b00111111n) | (sign == -1n ? 0b11000000n : 0b10000000n)))
210
+ lsb_to_msb[0] &= 0b01111111
211
+ return Uint8Array.from(lsb_to_msb.reverse())
212
+ }
213
+ */
214
+ /** a single variable-sized signed-integers decoder.
215
+ * use {@link encode_ivar} for encoding first.
216
+ */
217
+ export const decode_ivar = (buf, offset = 0) => {
218
+ const [value_arr, bytesize] = decode_ivar_array(buf, offset, 1);
219
+ return [value_arr[0], bytesize];
220
+ };
221
+ /// the old implementation, which was designed for a single `number` and was easier to read, has been kept here for reference.
222
+ /*
223
+ const decode_ivar: DecodeFunc<number> = (buf, offset = 0) => {
224
+ const offset_start = offset
225
+ let
226
+ byte: number = buf[offset++],
227
+ sign: bigint = (byte & 0b01000000) > 0n ? -1n : 1n,
228
+ value: bigint = BigInt(byte & 0b00111111)
229
+ while (byte >> 7 === 1) {
230
+ byte = buf[offset++]
231
+ value <<= 7n
232
+ value += BigInt(byte & 0b01111111)
233
+ }
234
+ value *= sign
235
+ return [Number(value), offset - offset_start]
236
+ }
237
+ */
@@ -0,0 +1,213 @@
1
+ /** utility functions for numeric array manipulation and array math functions.
2
+ *
3
+ * @module
4
+ */
5
+ import type { NumericArray } from "./typedefs.js";
6
+ /** transpose a 2d array (matrix).
7
+ *
8
+ * if you're wondering what's the difference between this and {@link transposeArray2D} from the {@link "array2d"} submodule,
9
+ * then be my guest, because I am just as puzzled as you.
10
+ * perhaps I forgot that I made one or the other, resulting in duplication.
11
+ *
12
+ * however, there are a few implementation differences between the these two functions:
13
+ * - {@link transpose2D} works by calling the array `map` method.
14
+ * - {@link transposeArray2D} works by assigning values to the new array's transposed indexes.
15
+ *
16
+ * similarities between the two functions:
17
+ * - both transpose sparse 2d arrays to full 2d arrays with the sparse entries replaced with `undefined`.
18
+ * - both use the first element (the first row) to determine the number of columns your 2d array has.
19
+ * this can mean disastrous cropped results if a sparse 2d array is provided where the first row's
20
+ * number of elements (i.e. number of columns) is not the greatest out of all the other rows.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { assertEquals } from "jsr:@std/assert"
25
+ *
26
+ * const sparse_arr2d: Array<number[]> = [
27
+ * [1 , 2 , 3 , 4 , 5 ],
28
+ * [6 , 7 , 8 , 9],
29
+ * [11, 12, 13],
30
+ * [16, 17, 18, 19, 20],
31
+ * ]
32
+ *
33
+ * const sparse_arr2d_transposed = transpose2D(sparse_arr2d)
34
+ *
35
+ * sparse_arr2d_transposed satisfies Array<number>[]
36
+ *
37
+ * assertEquals(sparse_arr2d_transposed, [
38
+ * [1 , 6 , 11 , 16],
39
+ * [2 , 7 , 12 , 17],
40
+ * [3 , 8 , 13 , 18],
41
+ * [4 , 9 , undefined , 19],
42
+ * [5 , undefined , undefined , 20],
43
+ * ])
44
+ * ```
45
+ */
46
+ export declare const transpose2D: <T>(matrix: Array<T>[]) => Array<T>[];
47
+ /** compute the left-to-right running difference between successive elements.
48
+ *
49
+ * the returned array's length is decremented by one.
50
+ * as a result, a single element array will turn into an empty array.
51
+ *
52
+ * > [!note]
53
+ * > be careful when using with unsigned typed arrays.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * import { assertEquals } from "jsr:@std/assert"
58
+ *
59
+ * // basic example
60
+ * const arr1 = [1, 2, 3, 4, 5, 99, 88]
61
+ * const arr1_diff = diff(arr1)
62
+ * assertEquals(arr1_diff, [1, 1, 1, 1, 94, -11])
63
+ *
64
+ * // subarray slicing example
65
+ * const arr2 = [1, 2, 3, 4, 5, 99, 88]
66
+ * const arr2_diff = diff(arr2, 2, -1)
67
+ * assertEquals(arr2_diff, [1, 1, 94])
68
+ * ```
69
+ */
70
+ export declare const diff: <A extends NumericArray = any>(arr: A, start?: number, end?: number) => A;
71
+ /** compute the right-to-left (ie reverse) running difference between preceding elements.
72
+ *
73
+ * the returned array's length is decremented by one.
74
+ * as a result, a single element array will turn into an empty array.
75
+ *
76
+ * > [!note]
77
+ * > be careful when using with unsigned typed arrays.
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * import { assertEquals } from "jsr:@std/assert"
82
+ *
83
+ * // basic example
84
+ * const arr1 = [1, 2, 3, 4, 5, 99, 88]
85
+ * const arr1_diff = diff_right(arr1)
86
+ * assertEquals(arr1_diff, [-1, -1, -1, -1, -94, 11])
87
+ *
88
+ * // subarray slicing example
89
+ * const arr2 = [1, 2, 3, 4, 5, 99, 88]
90
+ * const arr2_diff = diff_right(arr2, 2, -1)
91
+ * assertEquals(arr2_diff, [-1, -1, -94])
92
+ * ```
93
+ */
94
+ export declare const diff_right: <A extends NumericArray = any>(arr: A, start?: number, end?: number) => A;
95
+ /** cumulative summation of an array.
96
+ *
97
+ * the returned array has its length increased by one.
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * import { assertEquals } from "jsr:@std/assert"
102
+ *
103
+ * // basic example
104
+ * const arr1 = [10, 20, 30, 40, 50]
105
+ * const arr1_cum_sum = cumulativeSum(arr1)
106
+ * assertEquals(arr1_cum_sum, [0, 10, 30, 60, 100, 150])
107
+ * ```
108
+ */
109
+ export declare const cumulativeSum: <A extends NumericArray = any>(arr: A) => A;
110
+ export type unaryOperator = "abs" | "neg" | "comp";
111
+ export type scalarOperator = "add" | "sub" | "mult" | "div" | "pow" | "rem" | "mod" | "and" | "or" | "xor" | "<<" | ">>" | ">>>";
112
+ export type elementwiseOperator = scalarOperator;
113
+ /** mutate array in-place to get **absolute** value of elements.
114
+ *
115
+ * @category unaryOperator
116
+ * @category inplace
117
+ */
118
+ export declare const abs: <A extends NumericArray = any>(arr: A, start?: number, end?: number) => A;
119
+ /** mutate array in-place to get **negative** value of elements.
120
+ *
121
+ * @category unaryOperator
122
+ * @category inplace
123
+ */
124
+ export declare const neg: <A extends NumericArray = any>(arr: A, start?: number, end?: number) => A;
125
+ /** mutate array in-place to get **bitwise complement** value of elements.
126
+ *
127
+ * @category unaryOperator
128
+ * @category inplace
129
+ */
130
+ export declare const bcomp: <A extends NumericArray = any>(arr: A, start?: number, end?: number) => A;
131
+ /** mutate array in-place to get **bitwise and** against a scalar `value`.
132
+ *
133
+ * @category scalarOperator
134
+ * @category inplace
135
+ */
136
+ export declare const band: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
137
+ /** mutate array in-place to get **bitwise or** against a scalar `value`.
138
+ *
139
+ * @category scalarOperator
140
+ * @category inplace
141
+ */
142
+ export declare const bor: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
143
+ /** mutate array in-place to get **bitwise xor** against a scalar `value`.
144
+ *
145
+ * @category scalarOperator
146
+ * @category inplace
147
+ */
148
+ export declare const bxor: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
149
+ /** mutate array in-place to get **bitwise left-shift** (`<<`) against a scalar `value`.
150
+ *
151
+ * @category scalarOperator
152
+ * @category inplace
153
+ */
154
+ export declare const blsh: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
155
+ /** mutate array in-place to get **bitwise right-shift** (`>>`) against a scalar `value`.
156
+ *
157
+ * @category scalarOperator
158
+ * @category inplace
159
+ */
160
+ export declare const brsh: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
161
+ /** mutate array in-place to get **bitwise unsigned right-shift** (`>>>`) against a scalar `value`.
162
+ *
163
+ * @category scalarOperator
164
+ * @category inplace
165
+ */
166
+ export declare const bursh: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
167
+ /** mutate array in-place to **add** a scalar `value`.
168
+ *
169
+ * @category scalarOperator
170
+ * @category inplace
171
+ */
172
+ export declare const add: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
173
+ /** mutate array in-place to **subtract** a scalar `value`.
174
+ *
175
+ * @category scalarOperator
176
+ * @category inplace
177
+ */
178
+ export declare const sub: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
179
+ /** mutate array in-place to **multiply** by a scalar `value`.
180
+ *
181
+ * @category scalarOperator
182
+ * @category inplace
183
+ */
184
+ export declare const mult: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
185
+ /** mutate array in-place to **divide** by a scalar `value`.
186
+ *
187
+ * @category scalarOperator
188
+ * @category inplace
189
+ */
190
+ export declare const div: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
191
+ /** mutate array in-place to raise it to the **power** of a scalar `value`.
192
+ *
193
+ * @category scalarOperator
194
+ * @category inplace
195
+ */
196
+ export declare const pow: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
197
+ /** mutate array in-place to get the **remainder** (`%`) when divided by scalar `value`.
198
+ *
199
+ * note that this is slightly different from the modulo {@link mod} operator, as this can have a negative sign.
200
+ *
201
+ * @category scalarOperator
202
+ * @category inplace
203
+ */
204
+ export declare const rem: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
205
+ /** mutate array in-place to get the **modulo** when divided by scalar `value`.
206
+ *
207
+ * note that this is slightly different from the remainder {@link rem} operator, as this always returns a positive number.
208
+ *
209
+ * @category scalarOperator
210
+ * @category inplace
211
+ */
212
+ export declare const mod: <A extends NumericArray = any>(arr: A, value: number, start?: number, end?: number) => A;
213
+ //# sourceMappingURL=numericarray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numericarray.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.ts"],"names":[],"mappings":"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"}