@forgeax/engine-math 0.1.21 → 0.1.24
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.
- package/README.md +6 -5
- package/dist/color.d.ts +12 -3
- package/dist/color.d.ts.map +1 -1
- package/dist/index.mjs +169 -9
- package/dist/index.mjs.map +1 -1
- package/dist/mat4.d.ts +6 -6
- package/dist/mat4.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/color.ts +222 -14
- package/src/index.ts +1 -1
- package/src/mat4.ts +6 -6
- package/dist/.tsbuildinfo +0 -1
package/dist/mat4.d.ts
CHANGED
|
@@ -175,17 +175,17 @@ export declare function perspectiveReverseZ(out: Mat4, fovYRadians: number, aspe
|
|
|
175
175
|
/**
|
|
176
176
|
* out = orthographic projection (**WebGPU [0, 1] NDC** short name, D-3). Returns out.
|
|
177
177
|
*
|
|
178
|
-
* @degrade near >= far or left >= right or
|
|
178
|
+
* @degrade near >= far or left >= right or top <= bottom → numerically undefined but does not throw.
|
|
179
179
|
*
|
|
180
180
|
* @example
|
|
181
181
|
* ```ts
|
|
182
|
-
* mat4.orthographic(out, -10, 10,
|
|
183
|
-
* // Guard: if (!(left < right &&
|
|
182
|
+
* mat4.orthographic(out, -10, 10, 10, -10, 0.1, 100);
|
|
183
|
+
* // Guard: if (!(left < right && top > bottom && near < far)) handleInvalid();
|
|
184
184
|
* ```
|
|
185
185
|
*/
|
|
186
|
-
export declare function orthographic(out: Mat4, left: number, right: number,
|
|
186
|
+
export declare function orthographic(out: Mat4, left: number, right: number, top: number, bottom: number, near: number, far: number): Mat4;
|
|
187
187
|
/** out = orthographic projection (**WebGL/OpenGL [-1, 1] NDC**, *NO*). Returns out. */
|
|
188
|
-
export declare function orthographicNO(out: Mat4, left: number, right: number,
|
|
188
|
+
export declare function orthographicNO(out: Mat4, left: number, right: number, top: number, bottom: number, near: number, far: number): Mat4;
|
|
189
189
|
/**
|
|
190
190
|
* out = reversed-Z orthographic projection (**WebGPU [0, 1] NDC, near→1 far→0**;
|
|
191
191
|
* D-P3 self-extension).
|
|
@@ -196,7 +196,7 @@ export declare function orthographicNO(out: Mat4, left: number, right: number, b
|
|
|
196
196
|
* Note: this function is an @forgeax/engine-math self-extension; wgpu-matrix / gl-matrix have no matching
|
|
197
197
|
* name (see plan-strategy D-P3 + README quick-ref table footnote).
|
|
198
198
|
*/
|
|
199
|
-
export declare function orthographicReverseZ(out: Mat4, left: number, right: number,
|
|
199
|
+
export declare function orthographicReverseZ(out: Mat4, left: number, right: number, top: number, bottom: number, near: number, far: number): Mat4;
|
|
200
200
|
/**
|
|
201
201
|
* out = M * (v.x, v.y, v.z, 1) (with perspective divide by w'). Returns out.
|
|
202
202
|
*
|
package/dist/mat4.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mat4.d.ts","sourceRoot":"","sources":["../src/mat4.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mat4.d.ts","sourceRoot":"","sources":["../src/mat4.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAG9E,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAE/B,qFAAqF;AACrF,wBAAgB,MAAM,IAAI,IAAI,CAE7B;AAED,gCAAgC;AAChC,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAIvC;AAED,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAkBxC;AAED,+FAA+F;AAC/F,wBAAgB,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,SAAO,GAAG,OAAO,CAQxE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkDlE;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CA8BtD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAuDnD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAqB/D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CA4CnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CA8DhF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAsErF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAuC9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkElF;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkCrD;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkB5D;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkBxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAgCzE;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CA2BN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CA0BN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CA0BN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAqBN;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAC5B,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAqBN;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAuBN;AAoBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkCvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,sBAAgB,CAAC;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAkB5E;AAqBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAK3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAKvD;AAED,4EAA4E;AAC5E,wBAAgB,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAKlD;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAKrD;AAgBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAE9E;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEpF;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,EAChB,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAIN"}
|
package/package.json
CHANGED
package/src/color.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// color.ts — RGBA color namespace (M5 / T-032)
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// 7-function surface: create / clone / srgbToLinear / linearToSrgb / fromHex / fromCss / toHex
|
|
4
4
|
//
|
|
5
5
|
// Design anchors:
|
|
6
6
|
// - branded Float32Array length 4 [r, g, b, a]; `as Color` casts are funneled inside factories (D-P15)
|
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
// - srgbToLinear: cutoff 0.04045 / linear segment v/12.92 / power segment ((v+0.055)/1.055)^2.4
|
|
9
9
|
// - linearToSrgb: cutoff 0.0031308 / linear segment 12.92*v / power segment 1.055*v^(1/2.4) - 0.055
|
|
10
10
|
// - negatives / NaN returned verbatim (HDR-friendly + IEEE-754 NaN propagation)
|
|
11
|
-
// - fromHex (D-P7): only `#RRGGBB` (7 chars) and `#RRGGBBAA` (9 chars);
|
|
11
|
+
// - fromHex (D-P7): only `#RRGGBB` (7 chars) and `#RRGGBBAA` (9 chars); RGB channels are decoded
|
|
12
|
+
// from sRGB to linear; illegal inputs silently fall
|
|
12
13
|
// back to (0, 0, 0, 1) without throwing (D-P12 degenerate family / AC-06)
|
|
13
14
|
// - #RGB / #RGBA short forms are not supported (stricter than bevy_color::Srgba::hex; less ambiguous
|
|
14
15
|
// in practice; wiki/sources/2026-05-05-bevy-0-19-math-transform-color §Srgba::hex mentions short
|
|
15
16
|
// forms but D-P7 actively tightens the contract)
|
|
16
|
-
// -
|
|
17
|
-
//
|
|
17
|
+
// - fromCss: deterministic CSS color boundary for full hex plus common rgb()/rgba()/hsl()/hsla()
|
|
18
|
+
// and named colors; output is linear and illegal inputs use the same black fallback
|
|
19
|
+
// - toHex: alpha=1 → `#rrggbb`; alpha<1 → `#rrggbbaa`; linear components are encoded to sRGB,
|
|
20
|
+
// clamped to [0, 1], multiplied by 255 and rounded; output is lowercase
|
|
18
21
|
//
|
|
19
22
|
// Related: requirements §Surface color lower bound 6 + AC-06 silent fall-back (never raises);
|
|
20
23
|
// plan-strategy D-P7 / D-P12 / §appendix A degenerate registry #14-#16;
|
|
@@ -120,8 +123,8 @@ const HEX_PATTERN = /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA
|
|
|
120
123
|
*
|
|
121
124
|
* @example
|
|
122
125
|
* ```ts
|
|
123
|
-
* color.fromHex(out, '#ff8000'); // → (1, 0.
|
|
124
|
-
* color.fromHex(out, '#ff800080'); // → (1, 0.
|
|
126
|
+
* color.fromHex(out, '#ff8000'); // → (1, ~0.216, 0, 1)
|
|
127
|
+
* color.fromHex(out, '#ff800080'); // → (1, ~0.216, 0, 0.502)
|
|
125
128
|
* color.fromHex(out, '#fff'); // → (0, 0, 0, 1) short form unsupported → silent fall-back
|
|
126
129
|
* ```
|
|
127
130
|
*/
|
|
@@ -134,17 +137,222 @@ export function fromHex(out: Color, hex: string): Color {
|
|
|
134
137
|
out[3] = 1;
|
|
135
138
|
return out;
|
|
136
139
|
}
|
|
137
|
-
out[0] = Number.parseInt(match[1] as string, 16) / 255;
|
|
138
|
-
out[1] = Number.parseInt(match[2] as string, 16) / 255;
|
|
139
|
-
out[2] = Number.parseInt(match[3] as string, 16) / 255;
|
|
140
|
+
out[0] = srgbChannelToLinear(Number.parseInt(match[1] as string, 16) / 255);
|
|
141
|
+
out[1] = srgbChannelToLinear(Number.parseInt(match[2] as string, 16) / 255);
|
|
142
|
+
out[2] = srgbChannelToLinear(Number.parseInt(match[3] as string, 16) / 255);
|
|
140
143
|
out[3] = match[4] !== undefined ? Number.parseInt(match[4], 16) / 255 : 1;
|
|
141
144
|
return out;
|
|
142
145
|
}
|
|
143
146
|
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
const CSS_HEX_PATTERN = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
148
|
+
const CSS_RGB_PATTERN = /^rgba?\(([^()]*)\)$/i;
|
|
149
|
+
const CSS_HSL_PATTERN = /^hsla?\(([^()]*)\)$/i;
|
|
150
|
+
const CSS_DECIMAL_PATTERN = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/;
|
|
151
|
+
|
|
152
|
+
const CSS_NAMED_COLORS: Readonly<Record<string, string>> = {
|
|
153
|
+
black: '#000000',
|
|
154
|
+
blue: '#0000ff',
|
|
155
|
+
cyan: '#00ffff',
|
|
156
|
+
fuchsia: '#ff00ff',
|
|
157
|
+
gray: '#808080',
|
|
158
|
+
green: '#008000',
|
|
159
|
+
grey: '#808080',
|
|
160
|
+
lime: '#00ff00',
|
|
161
|
+
magenta: '#ff00ff',
|
|
162
|
+
maroon: '#800000',
|
|
163
|
+
navy: '#000080',
|
|
164
|
+
olive: '#808000',
|
|
165
|
+
orange: '#ffa500',
|
|
166
|
+
purple: '#800080',
|
|
167
|
+
red: '#ff0000',
|
|
168
|
+
silver: '#c0c0c0',
|
|
169
|
+
teal: '#008080',
|
|
170
|
+
transparent: '#00000000',
|
|
171
|
+
white: '#ffffff',
|
|
172
|
+
yellow: '#ffff00',
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
function clamp01(v: number): number {
|
|
176
|
+
return Math.min(1, Math.max(0, v));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function parseCssChannel(token: string): number | undefined {
|
|
180
|
+
const trimmed = token.trim();
|
|
181
|
+
if (trimmed.endsWith('%')) {
|
|
182
|
+
const raw = trimmed.slice(0, -1).trim();
|
|
183
|
+
if (!CSS_DECIMAL_PATTERN.test(raw)) return undefined;
|
|
184
|
+
const value = Number(raw);
|
|
185
|
+
return Number.isFinite(value) ? clamp01(value / 100) : undefined;
|
|
186
|
+
}
|
|
187
|
+
if (!CSS_DECIMAL_PATTERN.test(trimmed)) return undefined;
|
|
188
|
+
const value = Number(trimmed);
|
|
189
|
+
return Number.isFinite(value) ? clamp01(value / 255) : undefined;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function parseCssAlpha(token: string): number | undefined {
|
|
193
|
+
const trimmed = token.trim();
|
|
194
|
+
if (trimmed.endsWith('%')) {
|
|
195
|
+
const raw = trimmed.slice(0, -1).trim();
|
|
196
|
+
if (!CSS_DECIMAL_PATTERN.test(raw)) return undefined;
|
|
197
|
+
const value = Number(raw);
|
|
198
|
+
return Number.isFinite(value) ? clamp01(value / 100) : undefined;
|
|
199
|
+
}
|
|
200
|
+
if (!CSS_DECIMAL_PATTERN.test(trimmed)) return undefined;
|
|
201
|
+
const value = Number(trimmed);
|
|
202
|
+
return Number.isFinite(value) ? clamp01(value) : undefined;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function parseCssHue(token: string): number | undefined {
|
|
206
|
+
const match = /^([+-]?(?:\d+\.?\d*|\.\d+))(deg|grad|rad|turn)?$/i.exec(token.trim());
|
|
207
|
+
if (match === null) return undefined;
|
|
208
|
+
const raw = Number(match[1] as string);
|
|
209
|
+
if (!Number.isFinite(raw)) return undefined;
|
|
210
|
+
const unit = (match[2] ?? 'deg').toLowerCase();
|
|
211
|
+
const degrees =
|
|
212
|
+
unit === 'grad'
|
|
213
|
+
? raw * 0.9
|
|
214
|
+
: unit === 'rad'
|
|
215
|
+
? (raw * 180) / Math.PI
|
|
216
|
+
: unit === 'turn'
|
|
217
|
+
? raw * 360
|
|
218
|
+
: raw;
|
|
219
|
+
return ((degrees % 360) + 360) % 360;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function parseCssPercentage(token: string): number | undefined {
|
|
223
|
+
const trimmed = token.trim();
|
|
224
|
+
if (!trimmed.endsWith('%')) return undefined;
|
|
225
|
+
const raw = trimmed.slice(0, -1).trim();
|
|
226
|
+
if (!CSS_DECIMAL_PATTERN.test(raw)) return undefined;
|
|
227
|
+
const value = Number(raw);
|
|
228
|
+
return Number.isFinite(value) ? clamp01(value / 100) : undefined;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function splitCssColorArgs(
|
|
232
|
+
body: string,
|
|
233
|
+
): { channels: [string, string, string]; alpha?: string } | undefined {
|
|
234
|
+
const source = body.trim();
|
|
235
|
+
if (source.length === 0) return undefined;
|
|
236
|
+
if (source.includes(',')) {
|
|
237
|
+
if (source.includes('/')) return undefined;
|
|
238
|
+
const parts = source.split(',').map((part) => part.trim());
|
|
239
|
+
if (parts.length !== 3 && parts.length !== 4) return undefined;
|
|
240
|
+
if (parts.some((part) => part.length === 0)) return undefined;
|
|
241
|
+
return {
|
|
242
|
+
channels: [parts[0] as string, parts[1] as string, parts[2] as string],
|
|
243
|
+
...(parts.length === 4 ? { alpha: parts[3] as string } : {}),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
const tokens = source.replaceAll('/', ' / ').split(/\s+/);
|
|
247
|
+
const slash = tokens.indexOf('/');
|
|
248
|
+
if (slash === -1) {
|
|
249
|
+
if (tokens.length !== 3) return undefined;
|
|
250
|
+
return { channels: [tokens[0] as string, tokens[1] as string, tokens[2] as string] };
|
|
251
|
+
}
|
|
252
|
+
if (slash !== 3 || tokens.length !== 5 || tokens[4] === undefined) return undefined;
|
|
253
|
+
return {
|
|
254
|
+
channels: [tokens[0] as string, tokens[1] as string, tokens[2] as string],
|
|
255
|
+
alpha: tokens[4],
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function hslToSrgb(hue: number, saturation: number, lightness: number): [number, number, number] {
|
|
260
|
+
const chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;
|
|
261
|
+
const h = hue / 60;
|
|
262
|
+
const x = chroma * (1 - Math.abs((h % 2) - 1));
|
|
263
|
+
const [r1, g1, b1] =
|
|
264
|
+
h < 1
|
|
265
|
+
? [chroma, x, 0]
|
|
266
|
+
: h < 2
|
|
267
|
+
? [x, chroma, 0]
|
|
268
|
+
: h < 3
|
|
269
|
+
? [0, chroma, x]
|
|
270
|
+
: h < 4
|
|
271
|
+
? [0, x, chroma]
|
|
272
|
+
: h < 5
|
|
273
|
+
? [x, 0, chroma]
|
|
274
|
+
: [chroma, 0, x];
|
|
275
|
+
const m = lightness - chroma / 2;
|
|
276
|
+
return [r1 + m, g1 + m, b1 + m];
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
function cssFallback(out: Color): Color {
|
|
280
|
+
out[0] = 0;
|
|
281
|
+
out[1] = 0;
|
|
282
|
+
out[2] = 0;
|
|
283
|
+
out[3] = 1;
|
|
284
|
+
return out;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Write a Color from a deterministic CSS color string.
|
|
289
|
+
*
|
|
290
|
+
* Supports full and short hex, common named colors, rgb()/rgba() channel
|
|
291
|
+
* numbers or percentages, and hsl()/hsla() with an optional alpha. RGB
|
|
292
|
+
* channels are decoded to linear-sRGB; alpha is passed through unchanged.
|
|
293
|
+
* Unsupported or malformed input silently falls back to opaque black.
|
|
294
|
+
*/
|
|
295
|
+
export function fromCss(out: Color, css: string): Color {
|
|
296
|
+
if (typeof css !== 'string') return cssFallback(out);
|
|
297
|
+
const source = css.trim().toLowerCase();
|
|
298
|
+
const named = CSS_NAMED_COLORS[source];
|
|
299
|
+
if (named !== undefined) return fromHex(out, named);
|
|
300
|
+
const fullHex = CSS_HEX_PATTERN.exec(source);
|
|
301
|
+
if (fullHex !== null) {
|
|
302
|
+
const digits = fullHex[1] as string;
|
|
303
|
+
if (digits.length === 3 || digits.length === 4) {
|
|
304
|
+
const expanded = [...digits].map((channel) => `${channel}${channel}`).join('');
|
|
305
|
+
return fromHex(out, `#${expanded}`);
|
|
306
|
+
}
|
|
307
|
+
return fromHex(out, source);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const rgb = CSS_RGB_PATTERN.exec(source);
|
|
311
|
+
if (rgb !== null) {
|
|
312
|
+
const args = splitCssColorArgs(rgb[1] as string);
|
|
313
|
+
if (args === undefined) return cssFallback(out);
|
|
314
|
+
const r = parseCssChannel(args.channels[0]);
|
|
315
|
+
const g = parseCssChannel(args.channels[1]);
|
|
316
|
+
const b = parseCssChannel(args.channels[2]);
|
|
317
|
+
const alpha = args.alpha === undefined ? 1 : parseCssAlpha(args.alpha);
|
|
318
|
+
if (r === undefined || g === undefined || b === undefined || alpha === undefined)
|
|
319
|
+
return cssFallback(out);
|
|
320
|
+
out[0] = srgbChannelToLinear(r);
|
|
321
|
+
out[1] = srgbChannelToLinear(g);
|
|
322
|
+
out[2] = srgbChannelToLinear(b);
|
|
323
|
+
out[3] = alpha;
|
|
324
|
+
return out;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
const hsl = CSS_HSL_PATTERN.exec(source);
|
|
328
|
+
if (hsl !== null) {
|
|
329
|
+
const args = splitCssColorArgs(hsl[1] as string);
|
|
330
|
+
if (args === undefined) return cssFallback(out);
|
|
331
|
+
const hue = parseCssHue(args.channels[0]);
|
|
332
|
+
const saturation = parseCssPercentage(args.channels[1]);
|
|
333
|
+
const lightness = parseCssPercentage(args.channels[2]);
|
|
334
|
+
const alpha = args.alpha === undefined ? 1 : parseCssAlpha(args.alpha);
|
|
335
|
+
if (
|
|
336
|
+
hue === undefined ||
|
|
337
|
+
saturation === undefined ||
|
|
338
|
+
lightness === undefined ||
|
|
339
|
+
alpha === undefined
|
|
340
|
+
)
|
|
341
|
+
return cssFallback(out);
|
|
342
|
+
const [r, g, b] = hslToSrgb(hue, saturation, lightness);
|
|
343
|
+
out[0] = srgbChannelToLinear(r);
|
|
344
|
+
out[1] = srgbChannelToLinear(g);
|
|
345
|
+
out[2] = srgbChannelToLinear(b);
|
|
346
|
+
out[3] = alpha;
|
|
347
|
+
return out;
|
|
348
|
+
}
|
|
349
|
+
return cssFallback(out);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/** Encode one linear component to sRGB, then clamp + ×255 + round. */
|
|
353
|
+
function toHexByte(v: number, encodeLinear = true): string {
|
|
146
354
|
if (Number.isNaN(v)) return '00';
|
|
147
|
-
const clamped = Math.max(0, Math.min(1, v));
|
|
355
|
+
const clamped = Math.max(0, Math.min(1, encodeLinear ? linearChannelToSrgb(v) : v));
|
|
148
356
|
const byte = Math.round(clamped * 255);
|
|
149
357
|
return byte.toString(16).padStart(2, '0');
|
|
150
358
|
}
|
|
@@ -159,7 +367,7 @@ function toHexByte(v: number): string {
|
|
|
159
367
|
*
|
|
160
368
|
* @example
|
|
161
369
|
* ```ts
|
|
162
|
-
* color.toHex(color.create(2, -0.1, 0.5, 1)); // → '#
|
|
370
|
+
* color.toHex(color.create(2, -0.1, 0.5, 1)); // → '#ff00bc' (linear HDR/negative clamp)
|
|
163
371
|
* color.toHex(color.create(1, 0, 0, 0.5)); // → '#ff000080'
|
|
164
372
|
* color.toHex(color.create(NaN, 0, 0, NaN)); // → '#000000' (NaN→'00', alpha=NaN takes short form)
|
|
165
373
|
* ```
|
|
@@ -172,6 +380,6 @@ export function toHex(c: ColorLike): string {
|
|
|
172
380
|
if (aValue >= 1 || Number.isNaN(aValue)) {
|
|
173
381
|
return `#${r}${g}${b}`;
|
|
174
382
|
}
|
|
175
|
-
const a = toHexByte(aValue);
|
|
383
|
+
const a = toHexByte(aValue, false);
|
|
176
384
|
return `#${r}${g}${b}${a}`;
|
|
177
385
|
}
|
package/src/index.ts
CHANGED
|
@@ -41,7 +41,7 @@ export type {
|
|
|
41
41
|
// - vector family vec2 / vec3 / vec4
|
|
42
42
|
// - matrix family mat3 / mat4
|
|
43
43
|
// - rotation quat / euler
|
|
44
|
-
// - color (sRGB↔linear + hex parse/format)
|
|
44
|
+
// - color (sRGB↔linear + hex/CSS parse/format)
|
|
45
45
|
// - easing (scalar S-curve time remaps)
|
|
46
46
|
// - noise (Perlin noise, growable home for further variants)
|
|
47
47
|
|
package/src/mat4.ts
CHANGED
|
@@ -919,20 +919,20 @@ export function perspectiveReverseZ(
|
|
|
919
919
|
/**
|
|
920
920
|
* out = orthographic projection (**WebGPU [0, 1] NDC** short name, D-3). Returns out.
|
|
921
921
|
*
|
|
922
|
-
* @degrade near >= far or left >= right or
|
|
922
|
+
* @degrade near >= far or left >= right or top <= bottom → numerically undefined but does not throw.
|
|
923
923
|
*
|
|
924
924
|
* @example
|
|
925
925
|
* ```ts
|
|
926
|
-
* mat4.orthographic(out, -10, 10,
|
|
927
|
-
* // Guard: if (!(left < right &&
|
|
926
|
+
* mat4.orthographic(out, -10, 10, 10, -10, 0.1, 100);
|
|
927
|
+
* // Guard: if (!(left < right && top > bottom && near < far)) handleInvalid();
|
|
928
928
|
* ```
|
|
929
929
|
*/
|
|
930
930
|
export function orthographic(
|
|
931
931
|
out: Mat4,
|
|
932
932
|
left: number,
|
|
933
933
|
right: number,
|
|
934
|
-
bottom: number,
|
|
935
934
|
top: number,
|
|
935
|
+
bottom: number,
|
|
936
936
|
near: number,
|
|
937
937
|
far: number,
|
|
938
938
|
): Mat4 {
|
|
@@ -963,8 +963,8 @@ export function orthographicNO(
|
|
|
963
963
|
out: Mat4,
|
|
964
964
|
left: number,
|
|
965
965
|
right: number,
|
|
966
|
-
bottom: number,
|
|
967
966
|
top: number,
|
|
967
|
+
bottom: number,
|
|
968
968
|
near: number,
|
|
969
969
|
far: number,
|
|
970
970
|
): Mat4 {
|
|
@@ -1004,8 +1004,8 @@ export function orthographicReverseZ(
|
|
|
1004
1004
|
out: Mat4,
|
|
1005
1005
|
left: number,
|
|
1006
1006
|
right: number,
|
|
1007
|
-
bottom: number,
|
|
1008
1007
|
top: number,
|
|
1008
|
+
bottom: number,
|
|
1009
1009
|
near: number,
|
|
1010
1010
|
far: number,
|
|
1011
1011
|
): Mat4 {
|
package/dist/.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/types.ts","../src/circle2.ts","../src/box2.ts","../src/box3.ts","../src/color.ts","../src/_internal/scalar.ts","../src/easing.ts","../src/_internal/epsilon.ts","../src/quat.ts","../src/euler.ts","../src/f32-to-f16-bytes.ts","../src/frustum.ts","../src/mat3.ts","../src/vec3.ts","../src/mat4.ts","../src/noise.ts","../src/ray.ts","../src/ray2.ts","../src/sphere.ts","../src/vec2.ts","../src/vec4.ts","../src/index.ts","../../../node_modules/.pnpm/pure-rand@8.4.0/node_modules/pure-rand/lib/esm/RandomGenerator-CKZRB3Fu.d.ts","../../../node_modules/.pnpm/pure-rand@8.4.0/node_modules/pure-rand/lib/esm/types/RandomGenerator.d.ts","../../../node_modules/.pnpm/pure-rand@8.4.0/node_modules/pure-rand/lib/esm/types/JumpableRandomGenerator.d.ts","../../../node_modules/.pnpm/fast-check@4.7.0/node_modules/fast-check/lib/fast-check.d.ts","../../../node_modules/.pnpm/@vitest+pretty-format@4.1.11/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/display.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/types.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/helpers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/timers.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../node_modules/.pnpm/@vitest+utils@4.1.11/node_modules/@vitest/utils/dist/diff.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/tasks.d-DEYaIMIu.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/traces.d.D2T_R8rx.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hmrPayload.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/customEvent.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/types/hot.d.ts","../../../node_modules/.pnpm/vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7/node_modules/vite/dist/node/module-runner.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/environment.d-DOJxxZV9.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/rawSnapshot.d-D_X3-62x.d.ts","../../../node_modules/.pnpm/@vitest+snapshot@4.1.11/node_modules/@vitest/snapshot/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/config.d.A1h_Y6Jt.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/rpc.d.B_8sPU0w.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/worker.d.ZpHpO4yb.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/browser.d.BcoexmFG.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.11/node_modules/@vitest/spy/optional-types.d.ts","../../../node_modules/.pnpm/@vitest+spy@4.1.11/node_modules/@vitest/spy/dist/index.d.ts","../../../node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../../../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../../../node_modules/.pnpm/@vitest+expect@4.1.11/node_modules/@vitest/expect/dist/index.d.ts","../../../node_modules/.pnpm/@vitest+runner@4.1.11/node_modules/@vitest/runner/dist/utils.d.ts","../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/global.d.DVsSRdQ5.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/optional-runtime-types.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/types.d-BjI5eAwu.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d-B41z0AuW.d.ts","../../../node_modules/.pnpm/@vitest+mocker@4.1.11_vite@8.0.10_@types+node@20.19.40_esbuild@0.27.7_jiti@1.21.7_/node_modules/@vitest/mocker/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/suite.d.udJtyAgw.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/runners.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../../../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../../../node_modules/.pnpm/vitest@4.1.11_@types+node@20.19.40_@vitest+browser-playwright@4.1.11_@vitest+coverage-v_127da6c4db5f633b4e0a459eab2c3062/node_modules/vitest/dist/index.d.ts","../../../node_modules/.pnpm/@fast-check+vitest@0.3.0_vitest@4.1.11/node_modules/@fast-check/vitest/lib/vitest-fast-check.d.ts","../src/__tests__/_arbs.ts","../src/__tests__/_fixtures.ts","../src/__tests__/bounds2.test.ts","../src/__tests__/box3.test.ts","../src/__tests__/easing.test.ts","../src/__tests__/euler.test-d.ts","../src/__tests__/mat3.test-d.ts","../src/__tests__/mat4.property.test.ts","../src/__tests__/mat4.test-d.ts","../src/__tests__/mat4.test.ts","../src/__tests__/noise.test.ts","../src/__tests__/quat.basis.test.ts","../src/__tests__/quat.interpolation.test.ts","../src/__tests__/quat.lookat.test.ts","../src/__tests__/quat.property.test.ts","../src/__tests__/quat.rotateaxis.test.ts","../src/__tests__/quat.test-d.ts","../src/__tests__/ray.property.test.ts","../src/__tests__/ray.test.ts","../src/__tests__/types.test-d.ts","../src/__tests__/vec-catmull-rom.test.ts","../src/__tests__/vec-smooth-damp.test.ts","../src/__tests__/vec2.test-d.ts","../src/__tests__/vec3.property.test.ts","../src/__tests__/vec3.test-d.ts","../src/__tests__/vec4.test-d.ts"],"fileIdsList":[[85,134],[114,115],[87,93,111,112,113,116],[123],[123,124],[91,93,94],[91,93],[91],[86,91,102,103],[86,91,102],[110],[86,92],[86],[88],[86,87,88,89,90],[129,130],[129,130,131,132],[129,131],[129],[83,84],[82],[97],[97,98,99,100],[99],[95,118,119,121],[95,96,108,121],[86,93,95,96,104,121],[101],[86,95,96,104,117,120,121],[95,96,101,104,121],[95,118,119,120,121],[95,101,105,106,107,121],[86,91,93,95,96,101,104,105,106,107,108,109,111,117,118,119,120,121,122,125,126,127,128,133],[86,93,95,96,104,105,118,119,120,121,126],[60,74,135],[61,62,77,79,134],[63,134],[81,134],[60,81,134],[60,74,134,135,136],[60,74,134],[60,68,73,74,134],[60,68,72,73,74,134],[60,68,134,135,136],[60,68,134],[60,74,76,79,134,135,136],[60,74,76,79,134],[60,134],[60,73,79,134],[60,73,79,80,134],[73,134,135,136],[60,61],[60],[60,62],[65],[60,68],[60,63],[60,61,62,63,64,66,68,69,70,71,72,73,74,75,76,77,78,79,80],[60,67],[60,67,73],[60,65,67],[60,63,74],[60,61,62]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"815351d287994a67ed2fec4c6c4d01961ed16bd165dc7a536744601aa772dc9e","signature":"728cc7c21f319d38b1dafdbdf1258350b675055a3fb61ae1a7c34562c58b8557"},{"version":"cad47e050375220640b34baf9ea954be53e002f9aac00b5cf089f9ff0927806d","signature":"d474818de812636654d86a3f0f6f3b8f6ae725b5487f344a5d3a32decd68311f"},{"version":"e7627689ceeb278b0aeb0720a1a9f8703cab9bb562ddef2f4bc06d88aed235f8","signature":"87cb945db71dbb2cceac65375b84cc0c55bfe70a749b11e55b59a40df53503f6"},{"version":"9bf3042be6b76a516c42494ab6cf4b5b15231364f216b7a35529d2ef778aff18","signature":"dcadfb7e3411bb19e717855d891658f3d71c065248d25f09e027e4a6cdfa0e9f"},{"version":"c0be9b805cdf9e8b696c11d1fd37c26800525c52f7446140d42e2b5331b84241","signature":"1c3f1fae8db7ce0bb537e509ceb0243892e68a3b6e66ab1245c15932be41d037"},{"version":"696f3ebd199a2c42eadf96c22cd47e8dd60f98034fcd30b075246e3bb3cb1f9a","signature":"bb6454147635e8ff2d3e9a309d3cca87503406472cca99e8d1482f8b2f5e81a5"},{"version":"c02ef73c83c6c33255e312f54fefa2ef0e2ea516b9267af9b55f586b14b72786","signature":"b3b63929f7475d02520bde84913450bf633e86f6a5d51fcc13e95376ec3483a6"},{"version":"0f30e3d16a8bcf72954351e2ae123596d701624cd00f330e8b48f3355f69e6d6","signature":"9d671b7423868c408d03ccd6efbbf31d19a30153096d6f9b77f880ad85c5238e"},{"version":"85586da647b442ba44fac41f03a3491a8e92bcd37db4100c138ba00de3e314dd","signature":"27d3d1f171d4b7b86bdf1c352f22319c0915b17cfd919deb070bef13510a33a2"},{"version":"b4e0b504ada20782f4ac6c99eb90a67dda822a1d7b0a44f7a2c249c41bf0471e","signature":"11fbb66f203aa1855d34dbb3d835879a75924cae9f08eb16997318fed41f9078"},{"version":"591372c97e58a4de81e75557b401df526e0bc657969c34e63d265efdfae2abce","signature":"56d65795b8f53c0f68d66369fc42fb8f79f669f868fc8eda2f634297c47b156f"},{"version":"5b7d6d8a66a3611ab3fe89413fcb288ec3681e6ce78b645927203d9524a98a9e","signature":"a35dc82e5a7955568d2883e308e7a3e138961dd3b40956b22fccd415dd307e4a"},{"version":"563ce7d27ba37599351af70b6993e3377250baeae4496b75db04308231eb3260","signature":"a10051e664b2713d31f07db5fdd71d0854732e57429cbfa00ebb329e89a27981"},{"version":"54c5447d9789b1c488736a2674b4a3ee8cb97a4fae74eac946925ec970131d2f","signature":"a49e93ed1861aa2493d363f26ee826ab71c7105b20c85cf8bd26bbb4e0b32cd6"},{"version":"7974f1c9e4032fb3e6b2676aabf34073d7b15eab1b2650b7ff16ef7ac8980bcc","signature":"3cb9e3f85ef9f989394133fe2e4ef4f39da5578fe583124fc0cbb00474b471e8"},{"version":"e0127bd4db600b90cd0193faec1a268e3e4c5a148d3ce346a3ed804f460bcc67","signature":"8bbc25b37d24570dffba7209cb9e427a63c7eeed18412af5e57c450a37d6c059"},{"version":"c487758164184e9771f45da4c9c2a15a53cd327e99c909dac3f449f5bc22e1fc","signature":"40a12a4c54a6564f2c1547a10bcafc9210fce809dc57d2a7815c918972f48895"},{"version":"034f5eeb6e84af2695419f5fc8a1b0f140e17b4a825ed2cb33321516303d344c","signature":"a8f81f646b1bd12b6b0758d1f97cc6d26646d5ac72d92362cb3b340271589e8f"},{"version":"edd06683b7adfa91fedbd395d480df775249d6cb7b0730e5d7077828ac5581fd","signature":"05d6d9fbf9c8fbb9fa36b4e0ad91292e57f6a9233dc407875d0fb06cdfd59bda"},{"version":"f9f6924e695ff2d97efd8ea530a06a491f7eca3a8f037b800e6f1bffbc7cf838","signature":"d08b909fffadfa1dece31aa587aca1c34782cafd9294c5c8b66cbab2aa897719"},{"version":"581bfb882086bc4228563f90af67aa132f33457c9214c59d9541baf4b6d599cc","signature":"9aca2738b7400d1d8c2d009ec6cbbaf3204e6413219edc962cea5bb6ef50db10"},{"version":"2dc44957305f150a88a04248d86b4603855ab4ef150caa11f38b7226a488c543","signature":"f23fc64dfc9c3e5b718eca7f1fdb0640d5c1f5c8993a599e66ce73ab33502036"},{"version":"80f829c59dfb2ac33d6b02467d78bc88790963fc168ac5e3003880f6a414414b","impliedFormat":99},{"version":"a88ac70da90568928e571a83ff90dafc2942cf390522c94324ad6e564ca0d892","impliedFormat":99},{"version":"7b1c855dcc8538439f185381220e39e7d5c4d09e4b3f8888f41ea068cd7a0839","impliedFormat":99},{"version":"e3adeb3a3100ee41c23b48a21ecf728b60eb2e3eb9f090e59ef2bae067c07e78","impliedFormat":99},{"version":"3a582c6e8906f5b094ccf0de6cc6f4f8a54b05a34f52517aba5c9c7f704f6b28","impliedFormat":99},{"version":"0528f6d21f7a02d4092895090d2dd86104bd5a3e79eced96d5a1a7dd90943d17","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"72ce5b734c05da85c85a6f6dc05823b051d6aa41acaedeeb1d17c72f3b4efa72","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"49ab4f1d153a252779958fc87b700743d32b5ffa42addd70ae23ad3f429daa5c","impliedFormat":99},{"version":"53cf4076f42b29b8d411259d168d51b3a0274c42c8814e5b44dfa8803a35d4fc","impliedFormat":99},{"version":"a39461ee1f27cf3e6cfd63d21045713d26d521da55ea4d8efccb705f689e6dbb","impliedFormat":99},{"version":"61bb64660ee150f3ab618340e15cca0a81664801bede7c966ca0eca3a952fe63","impliedFormat":99},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"82179358c2d9d7347f1602dc9300039a2250e483137b38ebf31d4d2e5519c181","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"605450898939e8abce51e8085a41b60640278337a969c33cd6b169e7c4f9c3f2","impliedFormat":99},{"version":"42a12f2faa483c9b48195ed794d22698162274e755f6e07219c2351c4f08d732","impliedFormat":99},{"version":"ec0c42bb0f465e4993f2bc68a6ce9df9a2dcbc7b83e21748f82f1b69561938e3","impliedFormat":99},{"version":"f50ff37a9cbbe74475f426474d9827083c7c2c138a954d28f1690df338f69291","impliedFormat":99},{"version":"61fd6c17235d530c40f543dd7c40afab091d91c1ef890baeed30db6d82b04b28","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"091767bc841f937654ed597d49e023ed59850355e746ae1a6f20ab31076ee1fb","impliedFormat":99},{"version":"19c6d6135af59693698d384050b45a8a049493500add442f58e4bd7c8a255ab6","impliedFormat":99},{"version":"6a0dba12d55314638a8c51108b20fe2f68f1364a619d098918bda91c22dec154","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"4ead13a482c539b77394b2a97e3b877b809eac596390371cea490286f53b996a","impliedFormat":99},{"version":"06db2f8ba1d1dfacf04529cb731081ab23f133f29c7608ebdfbcab356996827c","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"5c935b7fc4ddc1410ea1cd7cd4e35ed106a6e4920dd27a9480a40fd224359dc3","affectsGlobalScope":true,"impliedFormat":99},{"version":"2b39c6cf59088713babbfc3e20ee85f1375d40e66953156fa658346b8346f24f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"4ffba3c5848b4fe62ee59b754fd5f256ad9656a0db6d37b9a2a8cb40dfc7ac21","impliedFormat":99},{"version":"c76c02846ba7d40b9b3488f0e8d75d02cbdee2f0bc5fcd55dd3bd2e1457646ea","impliedFormat":99},{"version":"5e2ba3d18d78aebbde1f34bde356e41e9c76eeaeaeee56a37036596a9eff4211","impliedFormat":99},{"version":"8280ae8ccc0493b32d1742d585357ab9f0a508ea050af25a5a20d64010d0a5cf","impliedFormat":99},{"version":"7adfd9f9056ecd4ae6c65fde2a98654960c662714c73f048478959d04c09e144","impliedFormat":99},{"version":"32b35cf0dc3a1b1a7118b61c34ce2ad1a29695851679f9ec34e0776f2ece2a69","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"59e5e964b84fdb2378e9455e4e59405030e4ed2b4c6f891ce395f17796af3cbb","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"90ba95a763101bb61b8a799731a2ed60b5016b8135c1a2d5186862d4b534d4a1","impliedFormat":99},{"version":"0a48825748df01f8646118f95a25ac461adb423bc26fbd8dd93ef5cef3e40a10","impliedFormat":99},{"version":"4a25682ee163eb8af4122416643e391a8b715692d123d9877f92e7bfd9641240","signature":"1c0dcc68fe0cfee7627bb6cbde4ba84861567358dd62f9d0485efb36c8cccfe2"},{"version":"288cba4341abe23e9c1482091ca7c496e1eac887d1204e67190a0a9472264e30","signature":"ad0264a4db455b6150685e2d87bdebac2e63f35a085811570b6c1ad36d585fbc"},{"version":"e2352d9254e54ec24b72bc0b434216f012a6734b07acafcd7d3a32897ef3b54a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"77f41d4266314728a3e94a24703d67cf2ffd0de601708e1819ababb68501501d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"d783260e1d667b399f18163ee0eadf4f8ef52950605f838e1d15c82966758842","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"16c8889e9d5f277ef25a4c0e73fffe1db2c8379b9e5232397bbf7a50dfd08d2d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"44b13533d744559306f6df6f9817f47892f3c4e5a96333cfb7f77afe964622fe","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"4e84832542b33f252310603dda92f4b4ff9c41c0d5cd604f471c87602ba2f77d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a1adf396377c9a09ca23a9545870f8071ff02c0853898f12dc925c39af29e630","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2fff96fddad3ebfa324f4d0f81d4e45ea31b0849cb2f92ddd7ff34e3a857a979","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3613a5db7e616b0c7838cc04e7ce9ed552d6cb38e2c7fc33ccad5592076d7d01","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"d770d7c9eb8fd1e67a52623dea9caaa8e612d65b700676d3d1c6dbaf359ae90c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"55b606e8ae32633653b62aa771bb70e6faa38e8dd4d430eabc22a17d3b8a8676","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1b9f692f10da97af91d0ce5fb453c2ec029e1e1a3934d71351af3c2e011f50c8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c02f423ab0b77cf5cac51fbcd79f95f9f768b0fb64258bd0248a1d5fbb996f17","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a39e0b243a0d280b239ed6549f64bf24794b9e243baa7a24ae43b00c9d655259","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"3e5a25e6ef5297c6f99352b53f3c99836fa2fd9b07a991a846d1ee11a89c2454","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"ba1115302d6527e01ec35a66e68cd5bd77aa5e9da2b76c7909ce55804d250879","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"98bc9ca2ff20cf9d5680432f4d41ac6a4a161b57b1f313ad60747d62fec5e5d0","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a65ea0a8d0160b02fbff8a44984268071d6b8b339c7df1ec2ceecc7cbe04b602","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"57b4fac950af09441b8a593a58349181bf5212b7d68840c7cb24096ea36b24ed","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"195e70bbf007668633e0a9af28475d345975477400eaf73d71d4f722e7f84670","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"74e7fd258d101b4a1aa8c5113ffba54ed1980c5b20eab8733fd2be88aa988ef6","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"6a4d28c0bd4756d6451486b020087173a904d44c8956856685bdf6f66ce6612f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"0e137ce87af896dce94d51f286883799bd1064c8ee38b6095e13384a331ed0fd","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"a51b33cb492ae5282cd18ab461a58704f41bb6a2687d1d0d991280216473db22","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[[60,81],[136,161]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":true,"verbatimModuleSyntax":true},"referencedMap":[[135,1],[116,2],[117,3],[124,4],[125,5],[95,6],[94,7],[118,6],[102,8],[104,9],[103,10],[111,11],[93,12],[87,13],[89,14],[91,15],[92,13],[131,16],[133,17],[132,18],[130,19],[85,20],[84,21],[83,21],[98,22],[101,23],[99,22],[100,24],[120,25],[109,26],[105,27],[106,8],[127,28],[121,29],[107,30],[126,31],[108,32],[134,33],[128,34],[136,35],[138,36],[139,37],[140,38],[141,39],[142,39],[143,40],[144,39],[145,41],[146,38],[147,42],[148,38],[149,43],[150,44],[151,45],[152,39],[153,46],[154,47],[155,48],[156,49],[157,50],[158,39],[159,51],[160,39],[161,39],[62,52],[63,53],[61,54],[64,53],[66,55],[69,56],[71,57],[81,58],[72,59],[74,60],[68,61],[76,62],[77,63],[78,57],[79,61],[73,61],[80,61]],"latestChangedDtsFile":"./__tests__/vec4.test-d.d.ts","version":"6.0.3"}
|