@a2ui/web_core 0.8.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.
- package/README.md +13 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/src/v0_8/data/guards.d.ts +24 -0
- package/dist/src/v0_8/data/guards.d.ts.map +1 -0
- package/dist/src/v0_8/data/guards.js +153 -0
- package/dist/src/v0_8/data/guards.js.map +1 -0
- package/dist/src/v0_8/data/model-processor.d.ts +79 -0
- package/dist/src/v0_8/data/model-processor.d.ts.map +1 -0
- package/dist/src/v0_8/data/model-processor.js +627 -0
- package/dist/src/v0_8/data/model-processor.js.map +1 -0
- package/dist/src/v0_8/events/base.d.ts +24 -0
- package/dist/src/v0_8/events/base.d.ts.map +1 -0
- package/dist/src/v0_8/events/base.js +17 -0
- package/dist/src/v0_8/events/base.js.map +1 -0
- package/dist/src/v0_8/events/index.d.ts +18 -0
- package/dist/src/v0_8/events/index.d.ts.map +1 -0
- package/dist/src/v0_8/events/index.js +18 -0
- package/dist/src/v0_8/events/index.js.map +1 -0
- package/dist/src/v0_8/events/validation-event.d.ts +46 -0
- package/dist/src/v0_8/events/validation-event.d.ts.map +1 -0
- package/dist/src/v0_8/events/validation-event.js +33 -0
- package/dist/src/v0_8/events/validation-event.js.map +1 -0
- package/dist/src/v0_8/index.d.ts +743 -0
- package/dist/src/v0_8/index.d.ts.map +1 -0
- package/dist/src/v0_8/index.js +12 -0
- package/dist/src/v0_8/index.js.map +1 -0
- package/dist/src/v0_8/schemas/a2ui_client_capabilities_schema.json +23 -0
- package/dist/src/v0_8/schemas/catalog_description_schema.json +34 -0
- package/dist/src/v0_8/schemas/client_to_server.json +53 -0
- package/dist/src/v0_8/schemas/server_to_client.json +148 -0
- package/dist/src/v0_8/schemas/server_to_client_with_standard_catalog.json +823 -0
- package/dist/src/v0_8/schemas/standard_catalog_definition.json +772 -0
- package/dist/src/v0_8/styles/behavior.d.ts +2 -0
- package/dist/src/v0_8/styles/behavior.d.ts.map +1 -0
- package/dist/src/v0_8/styles/behavior.js +54 -0
- package/dist/src/v0_8/styles/behavior.js.map +1 -0
- package/dist/src/v0_8/styles/border.d.ts +2 -0
- package/dist/src/v0_8/styles/border.d.ts.map +1 -0
- package/dist/src/v0_8/styles/border.js +41 -0
- package/dist/src/v0_8/styles/border.js.map +1 -0
- package/dist/src/v0_8/styles/colors.d.ts +2 -0
- package/dist/src/v0_8/styles/colors.d.ts.map +1 -0
- package/dist/src/v0_8/styles/colors.js +80 -0
- package/dist/src/v0_8/styles/colors.js.map +1 -0
- package/dist/src/v0_8/styles/icons.d.ts +11 -0
- package/dist/src/v0_8/styles/icons.d.ts.map +1 -0
- package/dist/src/v0_8/styles/icons.js +60 -0
- package/dist/src/v0_8/styles/icons.js.map +1 -0
- package/dist/src/v0_8/styles/index.d.ts +3 -0
- package/dist/src/v0_8/styles/index.d.ts.map +1 -0
- package/dist/src/v0_8/styles/index.js +35 -0
- package/dist/src/v0_8/styles/index.js.map +1 -0
- package/dist/src/v0_8/styles/layout.d.ts +2 -0
- package/dist/src/v0_8/styles/layout.d.ts.map +1 -0
- package/dist/src/v0_8/styles/layout.js +232 -0
- package/dist/src/v0_8/styles/layout.js.map +1 -0
- package/dist/src/v0_8/styles/opacity.d.ts +2 -0
- package/dist/src/v0_8/styles/opacity.d.ts.map +1 -0
- package/dist/src/v0_8/styles/opacity.js +24 -0
- package/dist/src/v0_8/styles/opacity.js.map +1 -0
- package/dist/src/v0_8/styles/shared.d.ts +2 -0
- package/dist/src/v0_8/styles/shared.d.ts.map +1 -0
- package/dist/src/v0_8/styles/shared.js +17 -0
- package/dist/src/v0_8/styles/shared.js.map +1 -0
- package/dist/src/v0_8/styles/type.d.ts +2 -0
- package/dist/src/v0_8/styles/type.d.ts.map +1 -0
- package/dist/src/v0_8/styles/type.js +156 -0
- package/dist/src/v0_8/styles/type.js.map +1 -0
- package/dist/src/v0_8/styles/utils.d.ts +6 -0
- package/dist/src/v0_8/styles/utils.d.ts.map +1 -0
- package/dist/src/v0_8/styles/utils.js +81 -0
- package/dist/src/v0_8/styles/utils.js.map +1 -0
- package/dist/src/v0_8/types/client-event.d.ts +66 -0
- package/dist/src/v0_8/types/client-event.d.ts.map +1 -0
- package/dist/src/v0_8/types/client-event.js +17 -0
- package/dist/src/v0_8/types/client-event.js.map +1 -0
- package/dist/src/v0_8/types/colors.d.ts +25 -0
- package/dist/src/v0_8/types/colors.d.ts.map +1 -0
- package/dist/src/v0_8/types/colors.js +19 -0
- package/dist/src/v0_8/types/colors.js.map +1 -0
- package/dist/src/v0_8/types/components.d.ts +176 -0
- package/dist/src/v0_8/types/components.d.ts.map +1 -0
- package/dist/src/v0_8/types/components.js +17 -0
- package/dist/src/v0_8/types/components.js.map +1 -0
- package/dist/src/v0_8/types/primitives.d.ts +43 -0
- package/dist/src/v0_8/types/primitives.d.ts.map +1 -0
- package/dist/src/v0_8/types/primitives.js +17 -0
- package/dist/src/v0_8/types/primitives.js.map +1 -0
- package/dist/src/v0_8/types/types.d.ts +411 -0
- package/dist/src/v0_8/types/types.d.ts.map +1 -0
- package/dist/src/v0_8/types/types.js +17 -0
- package/dist/src/v0_8/types/types.js.map +1 -0
- package/dist/src/v0_9/catalog/types.d.ts +27 -0
- package/dist/src/v0_9/catalog/types.d.ts.map +1 -0
- package/dist/src/v0_9/catalog/types.js +11 -0
- package/dist/src/v0_9/catalog/types.js.map +1 -0
- package/dist/src/v0_9/common/events.d.ts +24 -0
- package/dist/src/v0_9/common/events.d.ts.map +1 -0
- package/dist/src/v0_9/common/events.js +29 -0
- package/dist/src/v0_9/common/events.js.map +1 -0
- package/dist/src/v0_9/index.d.ts +11 -0
- package/dist/src/v0_9/index.d.ts.map +1 -0
- package/dist/src/v0_9/index.js +11 -0
- package/dist/src/v0_9/index.js.map +1 -0
- package/dist/src/v0_9/processing/message-processor.d.ts +34 -0
- package/dist/src/v0_9/processing/message-processor.d.ts.map +1 -0
- package/dist/src/v0_9/processing/message-processor.js +128 -0
- package/dist/src/v0_9/processing/message-processor.js.map +1 -0
- package/dist/src/v0_9/processing/message-processor.test.d.ts +2 -0
- package/dist/src/v0_9/processing/message-processor.test.d.ts.map +1 -0
- package/dist/src/v0_9/processing/message-processor.test.js +112 -0
- package/dist/src/v0_9/processing/message-processor.test.js.map +1 -0
- package/dist/src/v0_9/rendering/component-context.d.ts +17 -0
- package/dist/src/v0_9/rendering/component-context.d.ts.map +1 -0
- package/dist/src/v0_9/rendering/component-context.js +21 -0
- package/dist/src/v0_9/rendering/component-context.js.map +1 -0
- package/dist/src/v0_9/rendering/data-context.d.ts +37 -0
- package/dist/src/v0_9/rendering/data-context.d.ts.map +1 -0
- package/dist/src/v0_9/rendering/data-context.js +97 -0
- package/dist/src/v0_9/rendering/data-context.js.map +1 -0
- package/dist/src/v0_9/rendering/data-context.test.d.ts +2 -0
- package/dist/src/v0_9/rendering/data-context.test.d.ts.map +1 -0
- package/dist/src/v0_9/rendering/data-context.test.js +71 -0
- package/dist/src/v0_9/rendering/data-context.test.js.map +1 -0
- package/dist/src/v0_9/schema/common-types.d.ts +608 -0
- package/dist/src/v0_9/schema/common-types.d.ts.map +1 -0
- package/dist/src/v0_9/schema/common-types.js +92 -0
- package/dist/src/v0_9/schema/common-types.js.map +1 -0
- package/dist/src/v0_9/schema/index.d.ts +3 -0
- package/dist/src/v0_9/schema/index.d.ts.map +1 -0
- package/dist/src/v0_9/schema/index.js +3 -0
- package/dist/src/v0_9/schema/index.js.map +1 -0
- package/dist/src/v0_9/schema/server-to-client.d.ts +84 -0
- package/dist/src/v0_9/schema/server-to-client.d.ts.map +1 -0
- package/dist/src/v0_9/schema/server-to-client.js +21 -0
- package/dist/src/v0_9/schema/server-to-client.js.map +1 -0
- package/dist/src/v0_9/state/component-model.d.ts +16 -0
- package/dist/src/v0_9/state/component-model.d.ts.map +1 -0
- package/dist/src/v0_9/state/component-model.js +24 -0
- package/dist/src/v0_9/state/component-model.js.map +1 -0
- package/dist/src/v0_9/state/component-model.test.d.ts +2 -0
- package/dist/src/v0_9/state/component-model.test.d.ts.map +1 -0
- package/dist/src/v0_9/state/component-model.test.js +39 -0
- package/dist/src/v0_9/state/component-model.test.js.map +1 -0
- package/dist/src/v0_9/state/data-model.d.ts +47 -0
- package/dist/src/v0_9/state/data-model.d.ts.map +1 -0
- package/dist/src/v0_9/state/data-model.js +191 -0
- package/dist/src/v0_9/state/data-model.js.map +1 -0
- package/dist/src/v0_9/state/data-model.test.d.ts +2 -0
- package/dist/src/v0_9/state/data-model.test.d.ts.map +1 -0
- package/dist/src/v0_9/state/data-model.test.js +204 -0
- package/dist/src/v0_9/state/data-model.test.js.map +1 -0
- package/dist/src/v0_9/state/surface-components-model.d.ts +19 -0
- package/dist/src/v0_9/state/surface-components-model.d.ts.map +1 -0
- package/dist/src/v0_9/state/surface-components-model.js +42 -0
- package/dist/src/v0_9/state/surface-components-model.js.map +1 -0
- package/dist/src/v0_9/state/surface-components-model.test.d.ts +2 -0
- package/dist/src/v0_9/state/surface-components-model.test.d.ts.map +1 -0
- package/dist/src/v0_9/state/surface-components-model.test.js +49 -0
- package/dist/src/v0_9/state/surface-components-model.test.js.map +1 -0
- package/dist/src/v0_9/state/surface-group-model.d.ts +25 -0
- package/dist/src/v0_9/state/surface-group-model.d.ts.map +1 -0
- package/dist/src/v0_9/state/surface-group-model.js +56 -0
- package/dist/src/v0_9/state/surface-group-model.js.map +1 -0
- package/dist/src/v0_9/state/surface-group-model.test.d.ts +2 -0
- package/dist/src/v0_9/state/surface-group-model.test.d.ts.map +1 -0
- package/dist/src/v0_9/state/surface-group-model.test.js +67 -0
- package/dist/src/v0_9/state/surface-group-model.test.js.map +1 -0
- package/dist/src/v0_9/state/surface-model.d.ts +23 -0
- package/dist/src/v0_9/state/surface-model.d.ts.map +1 -0
- package/dist/src/v0_9/state/surface-model.js +28 -0
- package/dist/src/v0_9/state/surface-model.js.map +1 -0
- package/dist/src/v0_9/state/surface-model.test.d.ts +2 -0
- package/dist/src/v0_9/state/surface-model.test.d.ts.map +1 -0
- package/dist/src/v0_9/state/surface-model.test.js +39 -0
- package/dist/src/v0_9/state/surface-model.test.js.map +1 -0
- package/dist/src/v0_9/test/test-utils.d.ts +8 -0
- package/dist/src/v0_9/test/test-utils.d.ts.map +1 -0
- package/dist/src/v0_9/test/test-utils.js +18 -0
- package/dist/src/v0_9/test/test-utils.js.map +1 -0
- package/package.json +94 -0
- package/src/v0_8/data/guards.ts +236 -0
- package/src/v0_8/data/model-processor.ts +855 -0
- package/src/v0_8/events/base.ts +24 -0
- package/src/v0_8/events/index.ts +18 -0
- package/src/v0_8/events/validation-event.ts +66 -0
- package/src/v0_8/index.ts +12 -0
- package/src/v0_8/schemas/server_to_client_with_standard_catalog.json +823 -0
- package/src/v0_8/styles/behavior.ts +55 -0
- package/src/v0_8/styles/border.ts +42 -0
- package/src/v0_8/styles/colors.ts +100 -0
- package/src/v0_8/styles/icons.ts +60 -0
- package/src/v0_8/styles/index.ts +37 -0
- package/src/v0_8/styles/layout.ts +235 -0
- package/src/v0_8/styles/opacity.ts +24 -0
- package/src/v0_8/styles/shared.ts +17 -0
- package/src/v0_8/styles/type.ts +156 -0
- package/src/v0_8/styles/utils.ts +104 -0
- package/src/v0_8/types/client-event.ts +80 -0
- package/src/v0_8/types/colors.ts +66 -0
- package/src/v0_8/types/components.ts +213 -0
- package/src/v0_8/types/primitives.ts +60 -0
- package/src/v0_8/types/types.ts +557 -0
- package/src/v0_9/catalog/types.ts +38 -0
- package/src/v0_9/common/events.ts +44 -0
- package/src/v0_9/index.ts +12 -0
- package/src/v0_9/processing/message-processor.test.ts +133 -0
- package/src/v0_9/processing/message-processor.ts +150 -0
- package/src/v0_9/rendering/component-context.ts +36 -0
- package/src/v0_9/rendering/data-context.test.ts +85 -0
- package/src/v0_9/rendering/data-context.ts +110 -0
- package/src/v0_9/schema/common-types.ts +125 -0
- package/src/v0_9/schema/index.ts +2 -0
- package/src/v0_9/schema/server-to-client.ts +23 -0
- package/src/v0_9/state/component-model.test.ts +50 -0
- package/src/v0_9/state/component-model.ts +32 -0
- package/src/v0_9/state/data-model.test.ts +257 -0
- package/src/v0_9/state/data-model.ts +239 -0
- package/src/v0_9/state/surface-components-model.test.ts +59 -0
- package/src/v0_9/state/surface-components-model.ts +48 -0
- package/src/v0_9/state/surface-group-model.test.ts +82 -0
- package/src/v0_9/state/surface-group-model.ts +66 -0
- package/src/v0_9/state/surface-model.test.ts +44 -0
- package/src/v0_9/state/surface-model.ts +39 -0
- package/src/v0_9/test/test-utils.ts +22 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const DataBindingSchema = z.object({
|
|
3
|
+
path: z.string().describe('A JSON Pointer path to a value in the data model.')
|
|
4
|
+
});
|
|
5
|
+
export const FunctionCallSchema = z.object({
|
|
6
|
+
call: z.string().describe('The name of the function to call.'),
|
|
7
|
+
args: z.record(z.any()).describe('Arguments passed to the function.'),
|
|
8
|
+
returnType: z.enum(['string', 'number', 'boolean', 'array', 'object', 'any', 'void']).default('boolean')
|
|
9
|
+
});
|
|
10
|
+
export const LogicExpressionSchema = z.lazy(() => z.union([
|
|
11
|
+
z.object({ and: z.array(LogicExpressionSchema).min(1) }),
|
|
12
|
+
z.object({ or: z.array(LogicExpressionSchema).min(1) }),
|
|
13
|
+
z.object({ not: LogicExpressionSchema }),
|
|
14
|
+
z.intersection(FunctionCallSchema, z.object({ returnType: z.literal('boolean').optional() })), // FunctionCall returning boolean
|
|
15
|
+
z.object({ true: z.literal(true) }),
|
|
16
|
+
z.object({ false: z.literal(false) })
|
|
17
|
+
]));
|
|
18
|
+
export const DynamicStringSchema = z.union([
|
|
19
|
+
z.string(),
|
|
20
|
+
DataBindingSchema,
|
|
21
|
+
// FunctionCall returning string (simplified schema for Zod, stricter in JSON Schema)
|
|
22
|
+
FunctionCallSchema
|
|
23
|
+
]);
|
|
24
|
+
export const DynamicNumberSchema = z.union([
|
|
25
|
+
z.number(),
|
|
26
|
+
DataBindingSchema,
|
|
27
|
+
FunctionCallSchema
|
|
28
|
+
]);
|
|
29
|
+
export const DynamicBooleanSchema = z.union([
|
|
30
|
+
z.boolean(),
|
|
31
|
+
DataBindingSchema,
|
|
32
|
+
LogicExpressionSchema
|
|
33
|
+
]);
|
|
34
|
+
export const DynamicStringListSchema = z.union([
|
|
35
|
+
z.array(z.string()),
|
|
36
|
+
DataBindingSchema,
|
|
37
|
+
FunctionCallSchema
|
|
38
|
+
]);
|
|
39
|
+
export const DynamicValueSchema = z.union([
|
|
40
|
+
z.string(),
|
|
41
|
+
z.number(),
|
|
42
|
+
z.boolean(),
|
|
43
|
+
z.array(z.any()),
|
|
44
|
+
DataBindingSchema,
|
|
45
|
+
FunctionCallSchema
|
|
46
|
+
]);
|
|
47
|
+
export const ComponentIdSchema = z.string().describe('The unique identifier for a component.');
|
|
48
|
+
export const ChildListSchema = z.union([
|
|
49
|
+
z.array(ComponentIdSchema).describe('A static list of child component IDs.'),
|
|
50
|
+
z.object({
|
|
51
|
+
componentId: ComponentIdSchema,
|
|
52
|
+
path: z.string().describe('The path to the list of component property objects in the data model.')
|
|
53
|
+
}).describe('A template for generating a dynamic list of children.')
|
|
54
|
+
]);
|
|
55
|
+
export const ActionSchema = z.union([
|
|
56
|
+
z.object({
|
|
57
|
+
event: z.object({
|
|
58
|
+
name: z.string(),
|
|
59
|
+
context: z.record(DynamicValueSchema).optional()
|
|
60
|
+
})
|
|
61
|
+
}).describe('Triggers a server-side event.'),
|
|
62
|
+
z.object({
|
|
63
|
+
functionCall: FunctionCallSchema
|
|
64
|
+
}).describe('Executes a local client-side function.')
|
|
65
|
+
]);
|
|
66
|
+
export const CheckRuleSchema = z.intersection(LogicExpressionSchema, z.object({
|
|
67
|
+
message: z.string().describe('The error message to display if the check fails.')
|
|
68
|
+
}));
|
|
69
|
+
export const CheckableSchema = z.object({
|
|
70
|
+
checks: z.array(CheckRuleSchema).optional().describe('A list of checks to perform.')
|
|
71
|
+
});
|
|
72
|
+
export const AccessibilityAttributesSchema = z.object({
|
|
73
|
+
label: DynamicStringSchema.optional().describe('REF:common_types.json#/$defs/DynamicString|A short string used by assistive technologies to convey the purpose of an element.'),
|
|
74
|
+
description: DynamicStringSchema.optional().describe('REF:common_types.json#/$defs/DynamicString|Additional information provided by assistive technologies about an element.')
|
|
75
|
+
}).describe('REF:common_types.json#/$defs/AccessibilityAttributes|Attributes to enhance accessibility.');
|
|
76
|
+
export const CommonSchemas = {
|
|
77
|
+
ComponentId: ComponentIdSchema,
|
|
78
|
+
ChildList: ChildListSchema,
|
|
79
|
+
DataBinding: DataBindingSchema,
|
|
80
|
+
DynamicValue: DynamicValueSchema,
|
|
81
|
+
DynamicString: DynamicStringSchema,
|
|
82
|
+
DynamicNumber: DynamicNumberSchema,
|
|
83
|
+
DynamicBoolean: DynamicBooleanSchema,
|
|
84
|
+
DynamicStringList: DynamicStringListSchema,
|
|
85
|
+
FunctionCall: FunctionCallSchema,
|
|
86
|
+
LogicExpression: LogicExpressionSchema,
|
|
87
|
+
CheckRule: CheckRuleSchema,
|
|
88
|
+
Checkable: CheckableSchema,
|
|
89
|
+
Action: ActionSchema,
|
|
90
|
+
AccessibilityAttributes: AccessibilityAttributesSchema,
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=common-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common-types.js","sourceRoot":"","sources":["../../../../src/v0_9/schema/common-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v0_9/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v0_9/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const A2uiMessageSchema: z.ZodObject<{
|
|
3
|
+
createSurface: z.ZodOptional<z.ZodObject<{
|
|
4
|
+
surfaceId: z.ZodString;
|
|
5
|
+
catalogId: z.ZodString;
|
|
6
|
+
theme: z.ZodOptional<z.ZodAny>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
surfaceId: string;
|
|
9
|
+
catalogId: string;
|
|
10
|
+
theme?: any;
|
|
11
|
+
}, {
|
|
12
|
+
surfaceId: string;
|
|
13
|
+
catalogId: string;
|
|
14
|
+
theme?: any;
|
|
15
|
+
}>>;
|
|
16
|
+
updateComponents: z.ZodOptional<z.ZodObject<{
|
|
17
|
+
surfaceId: z.ZodString;
|
|
18
|
+
components: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
|
|
19
|
+
}, "strip", z.ZodTypeAny, {
|
|
20
|
+
components: Record<string, any>[];
|
|
21
|
+
surfaceId: string;
|
|
22
|
+
}, {
|
|
23
|
+
components: Record<string, any>[];
|
|
24
|
+
surfaceId: string;
|
|
25
|
+
}>>;
|
|
26
|
+
updateDataModel: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
surfaceId: z.ZodString;
|
|
28
|
+
path: z.ZodOptional<z.ZodString>;
|
|
29
|
+
value: z.ZodAny;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
surfaceId: string;
|
|
32
|
+
path?: string | undefined;
|
|
33
|
+
value?: any;
|
|
34
|
+
}, {
|
|
35
|
+
surfaceId: string;
|
|
36
|
+
path?: string | undefined;
|
|
37
|
+
value?: any;
|
|
38
|
+
}>>;
|
|
39
|
+
deleteSurface: z.ZodOptional<z.ZodObject<{
|
|
40
|
+
surfaceId: z.ZodString;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
surfaceId: string;
|
|
43
|
+
}, {
|
|
44
|
+
surfaceId: string;
|
|
45
|
+
}>>;
|
|
46
|
+
}, "strip", z.ZodTypeAny, {
|
|
47
|
+
createSurface?: {
|
|
48
|
+
surfaceId: string;
|
|
49
|
+
catalogId: string;
|
|
50
|
+
theme?: any;
|
|
51
|
+
} | undefined;
|
|
52
|
+
updateComponents?: {
|
|
53
|
+
components: Record<string, any>[];
|
|
54
|
+
surfaceId: string;
|
|
55
|
+
} | undefined;
|
|
56
|
+
updateDataModel?: {
|
|
57
|
+
surfaceId: string;
|
|
58
|
+
path?: string | undefined;
|
|
59
|
+
value?: any;
|
|
60
|
+
} | undefined;
|
|
61
|
+
deleteSurface?: {
|
|
62
|
+
surfaceId: string;
|
|
63
|
+
} | undefined;
|
|
64
|
+
}, {
|
|
65
|
+
createSurface?: {
|
|
66
|
+
surfaceId: string;
|
|
67
|
+
catalogId: string;
|
|
68
|
+
theme?: any;
|
|
69
|
+
} | undefined;
|
|
70
|
+
updateComponents?: {
|
|
71
|
+
components: Record<string, any>[];
|
|
72
|
+
surfaceId: string;
|
|
73
|
+
} | undefined;
|
|
74
|
+
updateDataModel?: {
|
|
75
|
+
surfaceId: string;
|
|
76
|
+
path?: string | undefined;
|
|
77
|
+
value?: any;
|
|
78
|
+
} | undefined;
|
|
79
|
+
deleteSurface?: {
|
|
80
|
+
surfaceId: string;
|
|
81
|
+
} | undefined;
|
|
82
|
+
}>;
|
|
83
|
+
export type A2uiMessage = z.infer<typeof A2uiMessageSchema>;
|
|
84
|
+
//# sourceMappingURL=server-to-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-to-client.d.ts","sourceRoot":"","sources":["../../../../src/v0_9/schema/server-to-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const A2uiMessageSchema = z.object({
|
|
3
|
+
createSurface: z.object({
|
|
4
|
+
surfaceId: z.string(),
|
|
5
|
+
catalogId: z.string(),
|
|
6
|
+
theme: z.any().optional(),
|
|
7
|
+
}).optional(),
|
|
8
|
+
updateComponents: z.object({
|
|
9
|
+
surfaceId: z.string(),
|
|
10
|
+
components: z.array(z.record(z.any())),
|
|
11
|
+
}).optional(),
|
|
12
|
+
updateDataModel: z.object({
|
|
13
|
+
surfaceId: z.string(),
|
|
14
|
+
path: z.string().optional(),
|
|
15
|
+
value: z.any(),
|
|
16
|
+
}).optional(),
|
|
17
|
+
deleteSurface: z.object({
|
|
18
|
+
surfaceId: z.string(),
|
|
19
|
+
}).optional(),
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=server-to-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-to-client.js","sourceRoot":"","sources":["../../../../src/v0_9/schema/server-to-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KAC1B,CAAC,CAAC,QAAQ,EAAE;IACb,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;KACvC,CAAC,CAAC,QAAQ,EAAE;IACb,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC;QACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;KACf,CAAC,CAAC,QAAQ,EAAE;IACb,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventSource } from '../common/events.js';
|
|
2
|
+
export declare class ComponentModel {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly type: string;
|
|
5
|
+
private _properties;
|
|
6
|
+
private readonly _onUpdated;
|
|
7
|
+
/**
|
|
8
|
+
* Fires whenever the component's properties are updated.
|
|
9
|
+
*/
|
|
10
|
+
readonly onUpdated: EventSource<ComponentModel>;
|
|
11
|
+
constructor(id: string, type: string, initialProperties: Record<string, any>);
|
|
12
|
+
get properties(): Record<string, any>;
|
|
13
|
+
set properties(newProperties: Record<string, any>);
|
|
14
|
+
dispose(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=component-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-model.d.ts","sourceRoot":"","sources":["../../../../src/v0_9/state/component-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEhE,qBAAa,cAAc;IAUvB,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAVvB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IAEjE;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,CAAmB;gBAGvD,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKxC,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEpC;IAED,IAAI,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAGhD;IAED,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventEmitter } from '../common/events.js';
|
|
2
|
+
export class ComponentModel {
|
|
3
|
+
constructor(id, type, initialProperties) {
|
|
4
|
+
this.id = id;
|
|
5
|
+
this.type = type;
|
|
6
|
+
this._onUpdated = new EventEmitter();
|
|
7
|
+
/**
|
|
8
|
+
* Fires whenever the component's properties are updated.
|
|
9
|
+
*/
|
|
10
|
+
this.onUpdated = this._onUpdated;
|
|
11
|
+
this._properties = initialProperties;
|
|
12
|
+
}
|
|
13
|
+
get properties() {
|
|
14
|
+
return this._properties;
|
|
15
|
+
}
|
|
16
|
+
set properties(newProperties) {
|
|
17
|
+
this._properties = newProperties;
|
|
18
|
+
this._onUpdated.emit(this);
|
|
19
|
+
}
|
|
20
|
+
dispose() {
|
|
21
|
+
this._onUpdated.dispose();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=component-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-model.js","sourceRoot":"","sources":["../../../../src/v0_9/state/component-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AAEhE,MAAM,OAAO,cAAc;IASzB,YACW,EAAU,EACV,IAAY,EACrB,iBAAsC;QAF7B,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAQ;QATN,eAAU,GAAG,IAAI,YAAY,EAAkB,CAAC;QAEjE;;WAEG;QACM,cAAS,GAAgC,IAAI,CAAC,UAAU,CAAC;QAOhE,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;IACvC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU,CAAC,aAAkC;QAC/C,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-model.test.d.ts","sourceRoot":"","sources":["../../../../src/v0_9/state/component-model.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
3
|
+
import { ComponentModel } from './component-model.js';
|
|
4
|
+
describe('ComponentModel', () => {
|
|
5
|
+
let component;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
component = new ComponentModel('c1', 'Button', { label: 'Click Me' });
|
|
8
|
+
});
|
|
9
|
+
it('initializes properties', () => {
|
|
10
|
+
assert.strictEqual(component.id, 'c1');
|
|
11
|
+
assert.strictEqual(component.type, 'Button');
|
|
12
|
+
assert.strictEqual(component.properties.label, 'Click Me');
|
|
13
|
+
});
|
|
14
|
+
it('updates properties', () => {
|
|
15
|
+
component.properties = { label: 'Clicked' };
|
|
16
|
+
assert.strictEqual(component.properties.label, 'Clicked');
|
|
17
|
+
});
|
|
18
|
+
it('notifies listeners on update', () => {
|
|
19
|
+
let updatedComponent;
|
|
20
|
+
component.onUpdated.subscribe((c) => {
|
|
21
|
+
updatedComponent = c;
|
|
22
|
+
});
|
|
23
|
+
component.properties = { label: 'New' };
|
|
24
|
+
assert.strictEqual(updatedComponent, component);
|
|
25
|
+
assert.strictEqual(updatedComponent?.properties.label, 'New');
|
|
26
|
+
});
|
|
27
|
+
it('unsubscribes listeners', () => {
|
|
28
|
+
let callCount = 0;
|
|
29
|
+
const sub = component.onUpdated.subscribe(() => {
|
|
30
|
+
callCount++;
|
|
31
|
+
});
|
|
32
|
+
component.properties = { label: '1' };
|
|
33
|
+
assert.strictEqual(callCount, 1);
|
|
34
|
+
sub.unsubscribe();
|
|
35
|
+
component.properties = { label: '2' };
|
|
36
|
+
assert.strictEqual(callCount, 1);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=component-model.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-model.test.js","sourceRoot":"","sources":["../../../../src/v0_9/state/component-model.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,SAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,SAAS,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,IAAI,gBAA4C,CAAC;QAEjD,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAiB,EAAE,EAAE;YAClD,gBAAgB,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAExC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;YAC7C,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEjC,GAAG,CAAC,WAAW,EAAE,CAAC;QAClB,SAAS,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Subscription as BaseSubscription } from '../common/events.js';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a reactive connection to a specific path in the data model.
|
|
4
|
+
*/
|
|
5
|
+
export interface DataSubscription<T> extends BaseSubscription {
|
|
6
|
+
/**
|
|
7
|
+
* The current value at the subscribed path.
|
|
8
|
+
*/
|
|
9
|
+
readonly value: T | undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A standalone, observable data store representing the client-side state.
|
|
13
|
+
* It handles JSON Pointer path resolution and subscription management.
|
|
14
|
+
*/
|
|
15
|
+
export declare class DataModel {
|
|
16
|
+
private data;
|
|
17
|
+
private readonly subscriptions;
|
|
18
|
+
constructor(initialData?: Record<string, unknown>);
|
|
19
|
+
/**
|
|
20
|
+
* Updates the model at the specific path and notifies all relevant subscribers.
|
|
21
|
+
* If path is '/' or empty, replaces the entire root.
|
|
22
|
+
*
|
|
23
|
+
* Note on `undefined` values:
|
|
24
|
+
* - For objects: Setting a property to `undefined` removes the key from the object.
|
|
25
|
+
* - For arrays: Setting an index to `undefined` sets that index to `undefined` but preserves the array length (sparse array).
|
|
26
|
+
*/
|
|
27
|
+
set(path: string, value: any): this;
|
|
28
|
+
/**
|
|
29
|
+
* Retrieves data at a specific path.
|
|
30
|
+
*/
|
|
31
|
+
get(path: string): any;
|
|
32
|
+
/**
|
|
33
|
+
* Subscribes to changes at a specific path. Returns a Subscription object.
|
|
34
|
+
*/
|
|
35
|
+
subscribe<T>(path: string, onChange: (value: T | undefined) => void): DataSubscription<T>;
|
|
36
|
+
/**
|
|
37
|
+
* Clears all internal subscriptions.
|
|
38
|
+
*/
|
|
39
|
+
dispose(): void;
|
|
40
|
+
private normalizePath;
|
|
41
|
+
private parsePath;
|
|
42
|
+
private notifySubscribers;
|
|
43
|
+
private notify;
|
|
44
|
+
private notifyAllSubscribers;
|
|
45
|
+
private isDescendant;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-model.d.ts","sourceRoot":"","sources":["../../../../src/v0_9/state/data-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IAC3D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;CAC/B;AA+BD;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsD;gBAExE,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIrD;;;;;;;OAOG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAoDnC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAmBtB;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC;IA0BzF;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2025 Google LLC
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
class SubscriptionImpl {
|
|
17
|
+
constructor(initialValue, onChange, unsubscribe) {
|
|
18
|
+
this._value = initialValue;
|
|
19
|
+
this.onChange = onChange;
|
|
20
|
+
this._unsubscribe = unsubscribe;
|
|
21
|
+
}
|
|
22
|
+
get value() {
|
|
23
|
+
return this._value;
|
|
24
|
+
}
|
|
25
|
+
setValue(value) {
|
|
26
|
+
this._value = value;
|
|
27
|
+
this.onChange(value);
|
|
28
|
+
}
|
|
29
|
+
unsubscribe() {
|
|
30
|
+
this._unsubscribe();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function isNumeric(value) {
|
|
34
|
+
return /^\d+$/.test(value);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A standalone, observable data store representing the client-side state.
|
|
38
|
+
* It handles JSON Pointer path resolution and subscription management.
|
|
39
|
+
*/
|
|
40
|
+
export class DataModel {
|
|
41
|
+
constructor(initialData = {}) {
|
|
42
|
+
this.data = {};
|
|
43
|
+
this.subscriptions = new Map();
|
|
44
|
+
this.data = initialData;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Updates the model at the specific path and notifies all relevant subscribers.
|
|
48
|
+
* If path is '/' or empty, replaces the entire root.
|
|
49
|
+
*
|
|
50
|
+
* Note on `undefined` values:
|
|
51
|
+
* - For objects: Setting a property to `undefined` removes the key from the object.
|
|
52
|
+
* - For arrays: Setting an index to `undefined` sets that index to `undefined` but preserves the array length (sparse array).
|
|
53
|
+
*/
|
|
54
|
+
set(path, value) {
|
|
55
|
+
if (path === null || path === undefined) {
|
|
56
|
+
throw new Error("Path cannot be null or undefined.");
|
|
57
|
+
}
|
|
58
|
+
if (path === '/' || path === '') {
|
|
59
|
+
this.data = value;
|
|
60
|
+
this.notifyAllSubscribers();
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
const segments = this.parsePath(path);
|
|
64
|
+
const lastSegment = segments.pop();
|
|
65
|
+
let current = this.data;
|
|
66
|
+
for (let i = 0; i < segments.length; i++) {
|
|
67
|
+
const segment = segments[i];
|
|
68
|
+
if (Array.isArray(current) && !isNumeric(segment)) {
|
|
69
|
+
throw new Error(`Cannot use non-numeric segment '${segment}' on an array in path '${path}'.`);
|
|
70
|
+
}
|
|
71
|
+
// If we encounter a primitive where a container is expected, we cannot proceed.
|
|
72
|
+
// We allow undefined/null to be overwritten by a new container.
|
|
73
|
+
if (current[segment] !== undefined && current[segment] !== null && typeof current[segment] !== 'object') {
|
|
74
|
+
throw new Error(`Cannot set path '${path}': segment '${segment}' is a primitive value.`);
|
|
75
|
+
}
|
|
76
|
+
if (current[segment] === undefined || current[segment] === null) {
|
|
77
|
+
const nextSegment = (i < segments.length - 1) ? segments[i + 1] : lastSegment;
|
|
78
|
+
current[segment] = isNumeric(nextSegment) ? [] : {};
|
|
79
|
+
}
|
|
80
|
+
current = current[segment];
|
|
81
|
+
}
|
|
82
|
+
if (Array.isArray(current) && !isNumeric(lastSegment)) {
|
|
83
|
+
throw new Error(`Cannot use non-numeric segment '${lastSegment}' on an array in path '${path}'.`);
|
|
84
|
+
}
|
|
85
|
+
if (value === undefined) {
|
|
86
|
+
if (Array.isArray(current)) {
|
|
87
|
+
current[parseInt(lastSegment, 10)] = undefined;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
delete current[lastSegment];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
current[lastSegment] = value;
|
|
95
|
+
}
|
|
96
|
+
this.notifySubscribers(path);
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Retrieves data at a specific path.
|
|
101
|
+
*/
|
|
102
|
+
get(path) {
|
|
103
|
+
if (path === null || path === undefined) {
|
|
104
|
+
throw new Error("Path cannot be null or undefined.");
|
|
105
|
+
}
|
|
106
|
+
if (path === '/' || path === '') {
|
|
107
|
+
return this.data;
|
|
108
|
+
}
|
|
109
|
+
const segments = this.parsePath(path);
|
|
110
|
+
let current = this.data;
|
|
111
|
+
for (const segment of segments) {
|
|
112
|
+
if (current === undefined || current === null) {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
current = current[segment];
|
|
116
|
+
}
|
|
117
|
+
return current;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Subscribes to changes at a specific path. Returns a Subscription object.
|
|
121
|
+
*/
|
|
122
|
+
subscribe(path, onChange) {
|
|
123
|
+
const normalizedPath = this.normalizePath(path);
|
|
124
|
+
const initialValue = this.get(normalizedPath);
|
|
125
|
+
const subscription = new SubscriptionImpl(initialValue, onChange, () => {
|
|
126
|
+
const set = this.subscriptions.get(normalizedPath);
|
|
127
|
+
if (set) {
|
|
128
|
+
set.delete(subscription);
|
|
129
|
+
if (set.size === 0) {
|
|
130
|
+
this.subscriptions.delete(normalizedPath);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
if (!this.subscriptions.has(normalizedPath)) {
|
|
135
|
+
this.subscriptions.set(normalizedPath, new Set());
|
|
136
|
+
}
|
|
137
|
+
this.subscriptions.get(normalizedPath).add(subscription);
|
|
138
|
+
return subscription;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Clears all internal subscriptions.
|
|
142
|
+
*/
|
|
143
|
+
dispose() {
|
|
144
|
+
this.subscriptions.clear();
|
|
145
|
+
}
|
|
146
|
+
normalizePath(path) {
|
|
147
|
+
if (path.length > 1 && path.endsWith('/')) {
|
|
148
|
+
return path.slice(0, -1);
|
|
149
|
+
}
|
|
150
|
+
return path || '/';
|
|
151
|
+
}
|
|
152
|
+
parsePath(path) {
|
|
153
|
+
return path.split('/').filter(p => p.length > 0);
|
|
154
|
+
}
|
|
155
|
+
notifySubscribers(path) {
|
|
156
|
+
const normalizedPath = this.normalizePath(path);
|
|
157
|
+
this.notify(normalizedPath);
|
|
158
|
+
// Notify Ancestors
|
|
159
|
+
let parentPath = normalizedPath;
|
|
160
|
+
while (parentPath !== '/' && parentPath !== '') {
|
|
161
|
+
parentPath = parentPath.substring(0, parentPath.lastIndexOf('/')) || '/';
|
|
162
|
+
this.notify(parentPath);
|
|
163
|
+
}
|
|
164
|
+
// Notify Descendants
|
|
165
|
+
for (const subPath of this.subscriptions.keys()) {
|
|
166
|
+
if (this.isDescendant(subPath, normalizedPath)) {
|
|
167
|
+
this.notify(subPath);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
notify(path) {
|
|
172
|
+
const set = this.subscriptions.get(path);
|
|
173
|
+
if (!set) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const value = this.get(path);
|
|
177
|
+
set.forEach(sub => sub.setValue(value));
|
|
178
|
+
}
|
|
179
|
+
notifyAllSubscribers() {
|
|
180
|
+
for (const path of this.subscriptions.keys()) {
|
|
181
|
+
this.notify(path);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
isDescendant(childPath, parentPath) {
|
|
185
|
+
if (parentPath === '/' || parentPath === '') {
|
|
186
|
+
return childPath !== '/';
|
|
187
|
+
}
|
|
188
|
+
return childPath.startsWith(parentPath + '/');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=data-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-model.js","sourceRoot":"","sources":["../../../../src/v0_9/state/data-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-model.test.d.ts","sourceRoot":"","sources":["../../../../src/v0_9/state/data-model.test.ts"],"names":[],"mappings":""}
|