@carbonenginejs/runtime-utils 0.1.2 → 0.1.4

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 (104) hide show
  1. package/LICENSE +21 -21
  2. package/NOTICE +23 -23
  3. package/README.md +69 -69
  4. package/THIRD-PARTY-NOTICES.md +64 -64
  5. package/docs/README.md +74 -73
  6. package/docs/architecture.md +101 -101
  7. package/docs/concepts/foundation-consolidation.md +85 -85
  8. package/docs/concepts/model-lifecycle.md +154 -0
  9. package/docs/const-kb.md +85 -87
  10. package/docs/core-types/DECORATOR-TODOS.md +25 -25
  11. package/docs/core-types/README.md +241 -168
  12. package/docs/reference/api.md +105 -102
  13. package/docs/reference/classes/README.md +135 -135
  14. package/package.json +139 -139
  15. package/src/arrays.js +5 -5
  16. package/src/audio/audioFormats.js +34 -34
  17. package/src/audio/index.js +1 -1
  18. package/src/box3.js +331 -331
  19. package/src/bytes.js +56 -56
  20. package/src/compression.js +56 -56
  21. package/src/constants/index.js +7 -7
  22. package/src/constants/trinity.js +13 -13
  23. package/src/constants.js +15 -15
  24. package/src/curve.js +79 -79
  25. package/src/d3d/dxgiFormats.js +46 -46
  26. package/src/d3d/index.js +2 -2
  27. package/src/d3d/primitiveTopology.js +11 -11
  28. package/src/document/CjsCarbonDocument.js +212 -212
  29. package/src/document/CjsClassRegistry.js +373 -373
  30. package/src/document/CjsDocumentDehydrator.js +142 -142
  31. package/src/document/CjsDocumentHydrator.js +156 -156
  32. package/src/document/CjsStructRegistry.js +348 -348
  33. package/src/document/hydrationAdapter.js +129 -129
  34. package/src/document/index.js +6 -6
  35. package/src/errors/CjsError.js +286 -286
  36. package/src/errors/index.js +5 -5
  37. package/src/geometry/box.js +22 -22
  38. package/src/geometry/cylinder.js +22 -22
  39. package/src/geometry/helpers/earcut.js +1 -1
  40. package/src/geometry/helpers/misc.js +3 -3
  41. package/src/geometry/index.js +8 -8
  42. package/src/geometry/json.js +67 -67
  43. package/src/geometry/lathe.js +44 -44
  44. package/src/geometry/plane.js +14 -14
  45. package/src/geometry/shape.js +4 -4
  46. package/src/geometry/sphere.js +24 -24
  47. package/src/geometry/torus.js +14 -14
  48. package/src/graphics/colorSpaces.js +22 -22
  49. package/src/graphics/index.js +4 -4
  50. package/src/graphics/pixelFormats.js +158 -158
  51. package/src/graphics/textureDimensions.js +22 -22
  52. package/src/graphics/trinityEnums.js +87 -87
  53. package/src/index.js +62 -62
  54. package/src/is.js +117 -117
  55. package/src/json.js +23 -23
  56. package/src/lifecycle/CjsLifecycleState.js +77 -77
  57. package/src/lifecycle/index.js +1 -1
  58. package/src/lne3.js +70 -70
  59. package/src/lookup.js +48 -48
  60. package/src/mat3.js +51 -51
  61. package/src/mat4.js +699 -699
  62. package/src/math/index.js +25 -25
  63. package/src/math/scalar.js +63 -63
  64. package/src/media/index.js +1 -1
  65. package/src/media/mediaTypes.js +50 -50
  66. package/src/mesh.js +424 -424
  67. package/src/model/CjsEventEmitter.js +333 -333
  68. package/src/model/CjsModel.js +1744 -1463
  69. package/src/model/CjsModelState.js +72 -72
  70. package/src/model/index.js +4 -4
  71. package/src/model/sourceRecordUtils.js +54 -54
  72. package/src/noise.js +310 -310
  73. package/src/num.js +827 -827
  74. package/src/object.js +39 -39
  75. package/src/path.js +53 -53
  76. package/src/pln.js +125 -125
  77. package/src/pool.js +9 -9
  78. package/src/quat.js +144 -144
  79. package/src/ray3.js +188 -188
  80. package/src/renderContext/formats.js +145 -145
  81. package/src/renderContext/index.js +5 -5
  82. package/src/renderContext/presentation.js +125 -125
  83. package/src/renderContext/resources.js +27 -27
  84. package/src/renderContext/upscaling.js +22 -22
  85. package/src/renderContext/window.js +20 -20
  86. package/src/runtime/CjsRuntimeState.js +50 -50
  87. package/src/schema/CjsSchema.js +141 -23
  88. package/src/schema/index.js +4 -4
  89. package/src/shader/index.js +1 -1
  90. package/src/shader/shaderStages.js +37 -37
  91. package/src/sph3.js +181 -181
  92. package/src/tangent.js +288 -288
  93. package/src/text.js +40 -40
  94. package/src/tri3.js +98 -98
  95. package/src/types/carbonTypes.js +635 -635
  96. package/src/types/index.js +2 -2
  97. package/src/utils.js +58 -58
  98. package/src/validation.js +46 -46
  99. package/src/vec2.js +229 -229
  100. package/src/vec3.js +1188 -1188
  101. package/src/vec4.js +347 -347
  102. package/src/vertex.js +108 -108
  103. package/src/webgpu/index.js +1 -1
  104. package/src/webgpu/textureFormats.js +121 -121
@@ -1,203 +1,276 @@
1
- # @carbonenginejs/runtime-utils
2
-
3
- Status: Evolving
4
- Scope: `@carbonenginejs/runtime-utils` Carbon type and model families
5
- Audience: Runtime authors and integrators
6
- Summary: Explains Carbon type descriptors, schemas, models, lifecycle state, documents, and hydration.
7
-
8
- Shared CarbonEngineJS type, schema, document, hydration, and runtime model
9
- helpers.
10
-
11
- This package is the common contract for packages that read, write, or generate
12
- CarbonEngineJS data. Format packages can stop at plain JSON or a neutral
13
- `CjsCarbonDocument`; runtime packages can opt into registered classes and
14
- `CjsModel` when they want live objects.
15
-
16
- ## Install
17
-
18
- ```sh
19
- npm install @carbonenginejs/runtime-utils
20
- ```
21
-
22
- ## What It Owns
23
-
24
- - `document`: neutral `CjsCarbonDocument`, class/struct registries, hydration,
25
- and dehydration.
26
- - `hydration`: adapter seam for construction, value application, and finalize
27
- behavior.
28
- - `schema`: decorators, class/field/method metadata, the direct
29
- name-to-constructor map, enum registration, Carbon-method provenance, and
30
- component metadata helpers.
31
- - `types`: Carbon type descriptors, defaults, coercion, cloning, and export
32
- helpers.
33
- - `model`: `CjsModel`, `CjsEventEmitter`, model dirty state, traversal helpers,
34
- and source-record utilities.
35
-
36
- Generated enums and generated class catalogs should live in schema or generated
37
- runtime packages, not in this foundational package.
38
-
39
- ## Hydration Contract
40
-
41
- `runtime-utils` does not impose a runtime lifecycle on callers. The hydrator only
42
- guarantees ordering:
43
-
44
- 1. `construct`
45
- 2. `applyValues`
46
- 3. `finalize`
47
-
48
- The default behavior is intentionally minimal: construction through
49
- `CjsSchema.GetConstructor(name)`, `Object.assign` for values, and no finalize
50
- step. Callers opt into stricter population rules by supplying an adapter.
51
-
52
- Use `createLifecycleAdapter()` when your runtime classes follow a
53
- `SetValues`-style contract. `Initialize` is optional; disable it explicitly
54
- when a project only wants `SetValues`.
55
-
56
- ## Usage
57
-
58
- ### Hydrate a neutral document into runtime classes
59
-
60
- ```js
61
- import {
62
- CjsCarbonDocument,
63
- CjsClassRegistry,
64
- CjsDocumentHydrator
65
- } from "@carbonenginejs/runtime-utils/document";
66
- import { createLifecycleAdapter } from "@carbonenginejs/runtime-utils/hydration";
67
- import { CjsModel } from "@carbonenginejs/runtime-utils/model";
68
- import { CjsSchema } from "@carbonenginejs/runtime-utils/schema";
69
-
70
- class DemoNode extends CjsModel
71
- {
72
- position = [0, 0, 0];
73
- }
74
-
75
- CjsSchema.define(DemoNode, {
76
- className: "DemoNode",
77
- alias: "LegacyDemoNode",
78
- fields: [{
79
- name: "position",
80
- type: { kind: "vec3" },
81
- io: {
82
- read: true,
83
- write: true,
84
- persist: true,
85
- notify: true
86
- }
87
- }]
88
- });
89
-
90
- const document = CjsCarbonDocument.create({
91
- format: "example",
92
- roots: [{ ref: { $ref: 1 } }],
93
- nodes: [{
94
- id: 1,
95
- kind: "DemoNode",
96
- fields: { position: [1, 2, 3] }
97
- }]
98
- });
99
-
100
- const registry = CjsClassRegistry.fromMaps({
101
- constructors: { DemoNode }
102
- });
103
-
104
- const adapter = createLifecycleAdapter({ initialize: false });
105
- const { root } = CjsDocumentHydrator.hydrate(document, { registry, adapter });
106
- ```
107
-
1
+ # @carbonenginejs/runtime-utils
2
+
3
+ Status: Evolving
4
+ Scope: `@carbonenginejs/runtime-utils` Carbon type and model families
5
+ Audience: Runtime authors and integrators
6
+ Summary: Explains Carbon type descriptors, schemas, models, lifecycle state, documents, and hydration.
7
+
8
+ Shared CarbonEngineJS type, schema, document, hydration, and runtime model
9
+ helpers.
10
+
11
+ This package is the common contract for packages that read, write, or generate
12
+ CarbonEngineJS data. Format packages can stop at plain JSON or a neutral
13
+ `CjsCarbonDocument`; runtime packages can opt into registered classes and
14
+ `CjsModel` when they want live objects.
15
+
16
+ ## Install
17
+
18
+ ```sh
19
+ npm install @carbonenginejs/runtime-utils
20
+ ```
21
+
22
+ ## What It Owns
23
+
24
+ - `document`: neutral `CjsCarbonDocument`, class/struct registries, hydration,
25
+ and dehydration.
26
+ - `hydration`: adapter seam for construction, value application, and finalize
27
+ behavior.
28
+ - `schema`: decorators, class/field/method metadata, the direct
29
+ name-to-constructor map, enum registration, Carbon-method provenance, and
30
+ component metadata helpers.
31
+ - `types`: Carbon type descriptors, defaults, coercion, cloning, and export
32
+ helpers.
33
+ - `model`: `CjsModel`, `CjsEventEmitter`, model dirty state, traversal helpers,
34
+ and source-record utilities.
35
+
36
+ Generated enums and generated class catalogs should live in schema or generated
37
+ runtime packages, not in this foundational package.
38
+
39
+ ## Hydration Contract
40
+
41
+ `runtime-utils` does not impose a runtime lifecycle on callers. The hydrator only
42
+ guarantees ordering:
43
+
44
+ 1. `construct`
45
+ 2. `applyValues`
46
+ 3. `finalize`
47
+
48
+ The default behavior is intentionally minimal: construction through
49
+ `CjsSchema.GetConstructor(name)`, `Object.assign` for values, and no finalize
50
+ step. Callers opt into stricter population rules by supplying an adapter.
51
+
52
+ Use `createLifecycleAdapter()` when your runtime classes follow a
53
+ `SetValues`-style contract. `Initialize` is optional; disable it explicitly
54
+ when a project only wants `SetValues`.
55
+
56
+ ## Usage
57
+
58
+ ### Hydrate a neutral document into runtime classes
59
+
60
+ ```js
61
+ import {
62
+ CjsCarbonDocument,
63
+ CjsClassRegistry,
64
+ CjsDocumentHydrator
65
+ } from "@carbonenginejs/runtime-utils/document";
66
+ import { createLifecycleAdapter } from "@carbonenginejs/runtime-utils/hydration";
67
+ import { CjsModel } from "@carbonenginejs/runtime-utils/model";
68
+ import { CjsSchema } from "@carbonenginejs/runtime-utils/schema";
69
+
70
+ class DemoNode extends CjsModel
71
+ {
72
+ position = [0, 0, 0];
73
+ }
74
+
75
+ CjsSchema.define(DemoNode, {
76
+ className: "DemoNode",
77
+ alias: "LegacyDemoNode",
78
+ fields: [{
79
+ name: "position",
80
+ type: { kind: "vec3" },
81
+ io: {
82
+ read: true,
83
+ write: true,
84
+ persist: true,
85
+ notify: true
86
+ }
87
+ }]
88
+ });
89
+
90
+ const document = CjsCarbonDocument.create({
91
+ format: "example",
92
+ roots: [{ ref: { $ref: 1 } }],
93
+ nodes: [{
94
+ id: 1,
95
+ kind: "DemoNode",
96
+ fields: { position: [1, 2, 3] }
97
+ }]
98
+ });
99
+
100
+ const registry = CjsClassRegistry.fromMaps({
101
+ constructors: { DemoNode }
102
+ });
103
+
104
+ const adapter = createLifecycleAdapter({ initialize: false });
105
+ const { root } = CjsDocumentHydrator.hydrate(document, { registry, adapter });
106
+ ```
107
+
108
108
  `CjsSchema` stores constructors in one direct name-to-constructor map.
109
109
  `CjsSchema.define` registers the explicit `className` and each alias as keys;
110
110
  manual code can use `CjsSchema.SetConstructor(name, Constructor)`. A supplied
111
111
  scoped registry replaces the default constructor lookup and must implement
112
112
  `GetConstructor(name)`.
113
113
 
114
- ### Model references, value structs, and raw inline values
114
+ ### Decorators and imperative schema registration
115
115
 
116
- Use `type.model("ClassName")` for reference-shaped fields that hydrate through
117
- the registered `CjsModel` constructor map. Legacy `type.objectRef` remains
118
- supported while runtime packages migrate.
116
+ The decorator namespaces and imperative methods write the same metadata.
117
+ Generated code and other tools may register a complete class with
118
+ `CjsSchema.define`, then add individual entries with `defineField`,
119
+ `defineMethod`, or `defineEnum`. They may instead apply the public decorators
120
+ through `decorateField` and `decorateMethod`; those helpers do not require
121
+ decorator syntax.
119
122
 
120
- Use `type.struct("ClassName")` for a registered model with value semantics. If
121
- the owner constructor installs a struct instance, `SetValues` populates that
122
- instance in place instead of storing the incoming model by reference. This
123
- keeps constructor-owned identity and mutable math buffers stable.
123
+ `defineEnum(values, definition)` registers a stable enum name and optional
124
+ member, source, family, and line metadata. Registration works for frozen enum
125
+ objects through the schema registry; extensible objects also receive the
126
+ exported `CJS_ENUM_NAME` symbol. A field decorated with `CjsSchema.enum(values)`
127
+ or an enum name resolves that registered identity lazily.
124
128
 
125
- Opaque native payloads must not trigger model construction. Use
126
- `type.rawStruct("NativeType")`; it records the canonical `rawStruct`
127
- descriptor and keeps plain object values non-constructing.
129
+ Jessica metadata is editor-facing presentation metadata:
128
130
 
129
- ### Work with schema-backed runtime models directly
131
+ - `jessica.group(name)` groups a field in a compatible editor;
132
+ - `jessica.hidden` asks an editor not to present the field;
133
+ - `jessica.readOnly` asks an editor not to offer writes; and
134
+ - `jessica.widget(name)` suggests one editor control.
130
135
 
136
+ These declarations do not change runtime persistence, validation, or mutation.
137
+ In particular, `jessica.hidden` is not `schema.hideInherited`, and
138
+ `jessica.readOnly` does not block `SetValues`. A runtime restriction must be
139
+ implemented by the owning runtime contract rather than inferred from Jessica
140
+ metadata.
141
+
142
+ ### Model references, value structs, and raw inline values
143
+
144
+ Use `type.model("ClassName")` for reference-shaped fields that hydrate through
145
+ the registered `CjsModel` constructor map. Legacy `type.objectRef` remains
146
+ supported while runtime packages migrate.
147
+
148
+ Use `type.struct("ClassName")` for a registered model with value semantics. If
149
+ the owner constructor installs a struct instance, `SetValues` populates that
150
+ instance in place instead of storing the incoming model by reference. This
151
+ keeps constructor-owned identity and mutable math buffers stable.
152
+
153
+ Opaque native payloads must not trigger model construction. Use
154
+ `type.rawStruct("NativeType")`; it records the canonical `rawStruct`
155
+ descriptor and keeps plain object values non-constructing.
156
+
157
+ ### Work with schema-backed runtime models directly
158
+
131
159
  ```js
132
160
  const node = DemoNode.from({ position: [1, 2, 3] });
133
161
 
134
162
  node.OnEvent("modified", (_target, payload) => {
135
- console.log([...payload.properties]);
163
+ console.log(payload.source);
136
164
  });
137
165
 
138
- node.SetValues({ position: [4, 5, 6] });
166
+ const changed = node.SetValues({ position: [4, 5, 6] });
167
+ console.log([...changed]);
139
168
  node.Merge([{ position: [7, 8, 9] }, { position: [10, 11, 12] }]);
140
-
141
- const copy = new DemoNode();
142
- CjsModel.copy(copy, node, { markDirty: false });
143
- const plain = node.GetValues();
144
- ```
145
-
169
+
170
+ const copy = new DemoNode();
171
+ CjsModel.copy(copy, node, { markDirty: false });
172
+ const plain = node.GetValues();
173
+ ```
174
+
146
175
  `CjsModel` is evented, tracks dirty/update state explicitly, and uses schema
147
176
  metadata as its field contract. Every model class requires an explicit, stable
148
177
  `CjsSchema` `className`; runtime type identity never falls back to
149
178
  `Constructor.name`, which is not stable under minification.
150
179
 
151
- `Merge`/`merge` accept an ordered array of raw value bags or model instances,
152
- deep-merge them, and apply the final bag through one `CjsModel.set` update cycle.
180
+ The ordinary settled `modified` event contains `{ source }`. The changed field
181
+ names are returned by `SetValues`. A `properties` event field is reserved for
182
+ the direct `markDirty: false` notification path.
183
+
184
+ `Merge`/`merge` accept an ordered array of raw value bags or model instances,
185
+ deep-merge them, and apply the final bag through one `CjsModel.set` update cycle.
153
186
  They return the same changed-set, boolean, or `false` result as `SetValues`.
154
187
  `Copy`/`copy` instead require an instantiated
155
188
  `CjsModel` source and forward the supplied `SetValues` options.
156
189
 
157
- ### Hide inherited schema fields
190
+ Schema-backed containers expose domain-named child methods and delegate their
191
+ ordinary `array` or `list` mutations to the programmatic static
192
+ `CjsModel.createChild(owner, ...)`, `addChild`, `removeChild`, `deleteChild`, and
193
+ `clearChildren` helpers. Instances expose only child methods explicitly defined
194
+ by their domain class. The static helpers hydrate declared item types, preserve
195
+ Carbon `OnListModified` notifications, and apply the collection field's normal
196
+ flag/rebuild tokens. They do not manage typed arrays or interpret tokens owned
197
+ by a child; the active domain context remains responsible for consuming child
198
+ work requests.
199
+ See [Model lifecycle](../concepts/model-lifecycle.md#schema-backed-child-collections)
200
+ for removal, deletion, event, and nested-context rules.
158
201
 
159
- Carbon Blue surfaces are defined per class, so a real JavaScript subclass may
160
- persist fewer fields than its parent. Use the class-level
161
- `schema.hideInherited()` decorator to remove named inherited fields from only
162
- that class's schema surface:
202
+ ### Enum-backed fields
163
203
 
164
- ```js
165
- import { schema, type } from "@carbonenginejs/runtime-utils/schema";
166
-
167
- @type.define({ className: "ExampleBucket", family: "example" })
168
- @schema.hideInherited(["distribution", "descriptor", "offset"])
169
- export class ExampleBucket extends ExamplePlacement
170
- {
171
- }
172
- ```
173
-
174
- Hidden fields are omitted from schema introspection, `GetValues`, document
175
- dehydration, and every export option. `SetValues` and document hydration
176
- silently ignore them, matching `SetValues`' existing unknown-field behavior.
177
- The JavaScript properties, accessors, inheritance, and `instanceof` behavior
178
- are unchanged.
179
-
180
- Hides pass to descendants and may be extended by another
181
- `schema.hideInherited()` decorator. There is deliberately no unhide operation.
182
- Naming a field that the parent schema does not expose throws during class
183
- registration.
204
+ Enum metadata resolves lazily from the concrete model constructor's PascalCase
205
+ static. Normal inherited-static lookup is supported.
206
+
207
+ Imports accept:
208
+
209
+ - declared member names;
210
+ - declared numeric values; and
211
+ - identity tuples.
212
+
213
+ The importer prevalidates the complete update before mutating the target.
214
+ Exports select one of:
215
+
216
+ - `enumFormat: "values"` for numeric values;
217
+ - `enumFormat: "names"` for member names; or
218
+ - `enumFormat: "identity"` for identity tuples.
184
219
 
220
+ When multiple names share one numeric value, name export uses the first
221
+ declared key. Schema export includes resolved enum identity and members.
222
+
223
+ A missing or unresolved enum static passes through without enum validation;
224
+ strict missing-static enforcement is not provided by this version.
225
+
226
+ ### Hide inherited schema fields
227
+
228
+ Carbon Blue surfaces are defined per class, so a real JavaScript subclass may
229
+ persist fewer fields than its parent. Use the class-level
230
+ `schema.hideInherited()` decorator to remove named inherited fields from only
231
+ that class's schema surface:
232
+
233
+ ```js
234
+ import { schema, type } from "@carbonenginejs/runtime-utils/schema";
235
+
236
+ @type.define({ className: "ExampleBucket", family: "example" })
237
+ @schema.hideInherited(["distribution", "descriptor", "offset"])
238
+ export class ExampleBucket extends ExamplePlacement
239
+ {
240
+ }
241
+ ```
242
+
243
+ Hidden fields are omitted from schema introspection, `GetValues`, document
244
+ dehydration, and every export option. `SetValues` and document hydration
245
+ silently ignore them, matching `SetValues`' existing unknown-field behavior.
246
+ The JavaScript properties, accessors, inheritance, and `instanceof` behavior
247
+ are unchanged.
248
+
249
+ Hides pass to descendants and may be extended by another
250
+ `schema.hideInherited()` decorator. There is deliberately no unhide operation.
251
+ Naming a field that the parent schema does not expose throws during class
252
+ registration.
253
+
185
254
  Each model owns one non-enumerable `__state` object. Model-owned
186
- `__state.dirty` tracks broad, property, and notification invalidation;
187
- `__state.rebuild` is an independent `Set` of deferred work; and
255
+ `__state.dirty` is the generic settle marker; `__state.flags` contains
256
+ consumer-cleared lazy invalidations; `__state.rebuild` is a separate
257
+ consumer-cleared `Set` of deferred work; and
188
258
  `__state.updating` plus `__state.suppressEvents` coordinate update processing.
189
- The event emitter adds `__state.events` only while listeners exist. A lifecycle
190
- manager may install `__state.lifecycle` with `initializeLifecycleState()`;
259
+ The event emitter adds `__state.events` only while listeners exist. A lifecycle
260
+ manager may install `__state.lifecycle` with `initializeLifecycleState()`;
191
261
  without it, the object remains ordinarily alive and unmanaged. Dirty
192
262
  consumption and clearing do not modify rebuild or lifecycle state.
193
263
 
194
- ## Subpaths
195
-
196
- ```js
197
- import { CjsCarbonDocument, CjsDocumentHydrator } from "@carbonenginejs/runtime-utils/document";
198
- import { createLifecycleAdapter } from "@carbonenginejs/runtime-utils/hydration";
199
- import { CjsLifecycleState } from "@carbonenginejs/runtime-utils/lifecycle";
200
- import { CjsSchema, type, io, carbon, components } from "@carbonenginejs/runtime-utils/schema";
201
- import { CjsModel, CjsEventEmitter, CjsModelState } from "@carbonenginejs/runtime-utils/model";
202
- import { CARBON_TYPE, normalizeCarbonValue } from "@carbonenginejs/runtime-utils/types";
203
- ```
264
+ See [Model lifecycle](../concepts/model-lifecycle.md) for settlement,
265
+ initialization, traversal, resource, and optional lifecycle-state details.
266
+
267
+ ## Subpaths
268
+
269
+ ```js
270
+ import { CjsCarbonDocument, CjsDocumentHydrator } from "@carbonenginejs/runtime-utils/document";
271
+ import { createLifecycleAdapter } from "@carbonenginejs/runtime-utils/hydration";
272
+ import { CjsLifecycleState } from "@carbonenginejs/runtime-utils/lifecycle";
273
+ import { CjsSchema, type, io, jessica, carbon, components } from "@carbonenginejs/runtime-utils/schema";
274
+ import { CjsModel, CjsEventEmitter, CjsModelState } from "@carbonenginejs/runtime-utils/model";
275
+ import { CARBON_TYPE, normalizeCarbonValue } from "@carbonenginejs/runtime-utils/types";
276
+ ```