@carbonenginejs/runtime-utils 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 (101) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +23 -0
  3. package/README.md +56 -0
  4. package/THIRD-PARTY-NOTICES.md +38 -0
  5. package/docs/README.md +81 -0
  6. package/docs/architecture.md +101 -0
  7. package/docs/concepts/foundation-consolidation.md +86 -0
  8. package/docs/const-kb.md +92 -0
  9. package/docs/core-types/DECORATOR-TODOS.md +25 -0
  10. package/docs/core-types/README.md +203 -0
  11. package/docs/reference/api.md +70 -0
  12. package/docs/reference/classes/README.md +115 -0
  13. package/package.json +132 -0
  14. package/src/arrays.js +5 -0
  15. package/src/audio/audioFormats.js +34 -0
  16. package/src/audio/index.js +1 -0
  17. package/src/box3.js +1385 -0
  18. package/src/bytes.js +56 -0
  19. package/src/compression.js +56 -0
  20. package/src/constants/index.js +6 -0
  21. package/src/constants.js +15 -0
  22. package/src/curve.js +419 -0
  23. package/src/d3d/dxgiFormats.js +46 -0
  24. package/src/d3d/index.js +2 -0
  25. package/src/d3d/primitiveTopology.js +11 -0
  26. package/src/document/CjsCarbonDocument.js +212 -0
  27. package/src/document/CjsClassRegistry.js +373 -0
  28. package/src/document/CjsDocumentDehydrator.js +142 -0
  29. package/src/document/CjsDocumentHydrator.js +156 -0
  30. package/src/document/CjsStructRegistry.js +348 -0
  31. package/src/document/hydrationAdapter.js +129 -0
  32. package/src/document/index.js +6 -0
  33. package/src/geometry/box.js +137 -0
  34. package/src/geometry/cylinder.js +244 -0
  35. package/src/geometry/helpers/LICENSE +15 -0
  36. package/src/geometry/helpers/earcut.js +766 -0
  37. package/src/geometry/helpers/misc.js +103 -0
  38. package/src/geometry/index.js +8 -0
  39. package/src/geometry/json.js +165 -0
  40. package/src/geometry/lathe.js +172 -0
  41. package/src/geometry/octahedron.js +0 -0
  42. package/src/geometry/plane.js +81 -0
  43. package/src/geometry/shape.js +95 -0
  44. package/src/geometry/sphere.js +123 -0
  45. package/src/geometry/torus.js +96 -0
  46. package/src/graphics/colorSpaces.js +22 -0
  47. package/src/graphics/index.js +4 -0
  48. package/src/graphics/pixelFormats.js +158 -0
  49. package/src/graphics/textureDimensions.js +22 -0
  50. package/src/graphics/trinityEnums.js +87 -0
  51. package/src/index.js +58 -0
  52. package/src/is.js +524 -0
  53. package/src/json.js +23 -0
  54. package/src/lifecycle/CjsLifecycleState.js +77 -0
  55. package/src/lifecycle/index.js +1 -0
  56. package/src/lne3.js +497 -0
  57. package/src/lookup.js +48 -0
  58. package/src/mat3.js +131 -0
  59. package/src/mat4.js +699 -0
  60. package/src/math/index.js +25 -0
  61. package/src/math/scalar.js +63 -0
  62. package/src/media/index.js +1 -0
  63. package/src/media/mediaTypes.js +50 -0
  64. package/src/mesh.js +394 -0
  65. package/src/model/CjsEventEmitter.js +333 -0
  66. package/src/model/CjsModel.js +1544 -0
  67. package/src/model/CjsModelState.js +72 -0
  68. package/src/model/index.js +4 -0
  69. package/src/model/sourceRecordUtils.js +54 -0
  70. package/src/noise.js +310 -0
  71. package/src/num.js +827 -0
  72. package/src/path.js +21 -0
  73. package/src/pln.js +762 -0
  74. package/src/pool.js +160 -0
  75. package/src/quat.js +144 -0
  76. package/src/ray3.js +1085 -0
  77. package/src/renderContext/formats.js +145 -0
  78. package/src/renderContext/index.js +5 -0
  79. package/src/renderContext/presentation.js +125 -0
  80. package/src/renderContext/resources.js +27 -0
  81. package/src/renderContext/upscaling.js +22 -0
  82. package/src/renderContext/window.js +20 -0
  83. package/src/runtime/CjsRuntimeState.js +50 -0
  84. package/src/schema/CjsSchema.js +1009 -0
  85. package/src/schema/index.js +17 -0
  86. package/src/shader/index.js +1 -0
  87. package/src/shader/shaderStages.js +37 -0
  88. package/src/sph3.js +754 -0
  89. package/src/tangent.js +288 -0
  90. package/src/text.js +40 -0
  91. package/src/tri3.js +650 -0
  92. package/src/types/carbonTypes.js +635 -0
  93. package/src/types/index.js +2 -0
  94. package/src/utils.js +58 -0
  95. package/src/validation.js +46 -0
  96. package/src/vec2.js +229 -0
  97. package/src/vec3.js +1172 -0
  98. package/src/vec4.js +347 -0
  99. package/src/vertex.js +108 -0
  100. package/src/webgpu/index.js +1 -0
  101. package/src/webgpu/textureFormats.js +121 -0
@@ -0,0 +1,46 @@
1
+ import { isPlainObject } from "./is.js";
2
+
3
+ export { isPlainObject } from "./is.js";
4
+
5
+ /** Returns a plain object or throws a labelled TypeError. */
6
+ export function assertPlainObject(value, label = "value")
7
+ {
8
+ if (!isPlainObject(value))
9
+ {
10
+ throw new TypeError(`${label} must be a plain object.`);
11
+ }
12
+
13
+ return value;
14
+ }
15
+
16
+ /** Returns a trimmed non-empty string or throws a labelled TypeError. */
17
+ export function assertNonEmptyString(value, label = "value")
18
+ {
19
+ if (typeof value !== "string" || value.trim() === "")
20
+ {
21
+ throw new TypeError(`${label} must be a non-empty string.`);
22
+ }
23
+
24
+ return value.trim();
25
+ }
26
+
27
+ /** Normalizes and validates a non-negative safe-integer version. */
28
+ export function assertSupportedVersion(value, supportedVersions, label = "version")
29
+ {
30
+ const version = Number(value);
31
+ const supported = Array.from(supportedVersions, Number);
32
+
33
+ if (!Number.isSafeInteger(version) || version < 0)
34
+ {
35
+ throw new TypeError(`${label} must be a non-negative safe integer.`);
36
+ }
37
+
38
+ if (!supported.includes(version))
39
+ {
40
+ throw new RangeError(
41
+ `Unsupported ${label} ${JSON.stringify(value)}; expected one of ${supported.join(", ")}.`
42
+ );
43
+ }
44
+
45
+ return version;
46
+ }
package/src/vec2.js ADDED
@@ -0,0 +1,229 @@
1
+ import * as glVec2 from "gl-matrix/esm/vec2.js";
2
+ import { pool } from "./pool.js";
3
+
4
+ const vec2 = { ...glVec2 };
5
+
6
+ export { vec2 };
7
+
8
+ /**
9
+ *
10
+ * @returns {Float32Array}
11
+ */
12
+ vec2.alloc = function()
13
+ {
14
+ return pool.allocF32(2);
15
+ };
16
+
17
+ /**
18
+ *
19
+ * @param a
20
+ */
21
+ vec2.unalloc = function(a)
22
+ {
23
+ pool.freeType(a);
24
+ };
25
+
26
+ /**
27
+ * Adds a scalar to a vec2
28
+ *
29
+ * @param {vec2} out
30
+ * @param {vec2} a
31
+ * @param {Number} s
32
+ * @returns {vec2} out
33
+ */
34
+ vec2.addScalar = function(out, a, s)
35
+ {
36
+ out[0] = a[0] + s;
37
+ out[1] = a[1] + s;
38
+ return out;
39
+ };
40
+
41
+ /**
42
+ * Checks if a vector2 is empty
43
+ * @param {vec2} a
44
+ * @returns {boolean}
45
+ */
46
+ vec2.isEmpty = function(a)
47
+ {
48
+ return a[0] === 0 && a[1] === 0;
49
+ };
50
+
51
+ /**
52
+ * Divides a vec2 by a scalar
53
+ *
54
+ * @param {vec2} out
55
+ * @param {vec2} a
56
+ * @param {Number} s
57
+ * @returns {vec2} out
58
+ */
59
+ vec2.divideScalar = function(out, a, s)
60
+ {
61
+ return vec2.multiplyScalar(out, a, 1 / s);
62
+ };
63
+
64
+
65
+ /**
66
+ * Multiplies a vec2 by a scalar
67
+ *
68
+ * @param {vec2} out
69
+ * @param {vec2} a
70
+ * @param {Number} s
71
+ * @returns {vec2} out
72
+ */
73
+ vec2.multiplyScalar = function(out, a, s)
74
+ {
75
+ out[0] = a[0] * s;
76
+ out[1] = a[1] * s;
77
+ return out;
78
+ };
79
+
80
+ /**
81
+ * Sets a vec2 from a scalar
82
+ *
83
+ * @param {vec2} out
84
+ * @param {Number} s
85
+ * @returns {vec2} out
86
+ */
87
+ vec2.setScalar = function(out, s)
88
+ {
89
+ out[0] = s;
90
+ out[1] = s;
91
+ return out;
92
+ };
93
+
94
+ /**
95
+ * Subtracts a scalar from a vec2
96
+ *
97
+ * @param {vec2} out
98
+ * @param {vec2} a
99
+ * @param {Number} s
100
+ * @returns {vec2} out
101
+ */
102
+ vec2.subtractScalar = function(out, a, s)
103
+ {
104
+ out[0] = a[0] - s;
105
+ out[1] = a[1] - s;
106
+ return out;
107
+ };
108
+
109
+ /**
110
+ * Sets a vec2 from an array with an optional offset
111
+ * @param {vec3} out
112
+ * @param {TypedArray|Array} array
113
+ * @param {Number} [offset=0]
114
+ * @returns {vec3} out
115
+ */
116
+ vec2.fromArray = function(out, array, offset=0)
117
+ {
118
+ out[0] = array[offset];
119
+ out[1] = array[offset + 1];
120
+ return out;
121
+ };
122
+
123
+ /**
124
+ * Gets mouse position from a mouse event
125
+ * @param {vec2} out
126
+ * @param {MouseEvent} event
127
+ * @returns {vec2} out - mouse coordinates
128
+ */
129
+ vec2.mousePositionFromEvent = function(out, event)
130
+ {
131
+ out[0] = event.clientX;
132
+ out[1] = event.clientY;
133
+ return out;
134
+ };
135
+
136
+ /**
137
+ * Gets CSS position from an event
138
+ * @param {vec2} out
139
+ * @param {MouseEvent} event
140
+ * @param {HTMLElement} [element=element.target]
141
+ * @returns {vec2} out - css coordinates
142
+ */
143
+ vec2.cssPositionFromEvent = function(out, event, element=event.target)
144
+ {
145
+ const rect = element.getBoundingClientRect();
146
+ out[0] = event.clientX - rect.left;
147
+ out[1] = event.clientY - rect.top;
148
+ return out;
149
+ };
150
+
151
+ /**
152
+ * Gets the pixel coordinates from an element event
153
+ * @param {vec2} out
154
+ * @param {MouseEvent} event
155
+ * @param {HTMLElement} [element=element.target]
156
+ * @returns {vec2} out - the pixel coordinates
157
+ */
158
+ vec2.pixelPositionFromEvent = function(out, event, element=event.target)
159
+ {
160
+ const
161
+ rect = element.getBoundingClientRect(),
162
+ cssX = event.clientX - rect.left,
163
+ cssY = event.clientY - rect.top;
164
+
165
+ out[0] = cssX * element.width / element.clientWidth;
166
+ out[1] = element.height - cssY * element.height / element.clientHeight - 1;
167
+ return out;
168
+ };
169
+
170
+ export const {
171
+ add,
172
+ angle,
173
+ ceil,
174
+ clone,
175
+ copy,
176
+ create,
177
+ cross,
178
+ dist,
179
+ distance,
180
+ div,
181
+ divide,
182
+ dot,
183
+ equals,
184
+ exactEquals,
185
+ floor,
186
+ forEach,
187
+ fromValues,
188
+ inverse,
189
+ len,
190
+ length,
191
+ lerp,
192
+ max,
193
+ min,
194
+ mul,
195
+ multiply,
196
+ negate,
197
+ normalize,
198
+ random,
199
+ rotate,
200
+ round,
201
+ scale,
202
+ scaleAndAdd,
203
+ set,
204
+ signedAngle,
205
+ sqrDist,
206
+ sqrLen,
207
+ squaredDistance,
208
+ squaredLength,
209
+ str,
210
+ sub,
211
+ subtract,
212
+ transformMat2,
213
+ transformMat2d,
214
+ transformMat3,
215
+ transformMat4,
216
+ zero,
217
+ alloc,
218
+ unalloc,
219
+ addScalar,
220
+ isEmpty,
221
+ divideScalar,
222
+ multiplyScalar,
223
+ setScalar,
224
+ subtractScalar,
225
+ fromArray,
226
+ mousePositionFromEvent,
227
+ cssPositionFromEvent,
228
+ pixelPositionFromEvent
229
+ } = vec2;