@kurot/ui-document 0.5.2 → 0.6.1

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 (53) hide show
  1. package/README.md +16 -15
  2. package/dist/kurot/model/UIDocument.d.ts +1 -1
  3. package/dist/kurot/model/index.d.ts +2 -0
  4. package/dist/kurot/model/index.d.ts.map +1 -1
  5. package/dist/kurot/model/index.js +2 -0
  6. package/dist/kurot/model/index.js.map +1 -1
  7. package/dist/kurot/model/synthetic-node-id.d.ts +9 -0
  8. package/dist/kurot/model/synthetic-node-id.d.ts.map +1 -0
  9. package/dist/kurot/model/synthetic-node-id.js +14 -0
  10. package/dist/kurot/model/synthetic-node-id.js.map +1 -0
  11. package/dist/kurot/serialization/UIDocumentParseError.d.ts +1 -1
  12. package/dist/kurot/serialization/UIDocumentParseError.js +1 -1
  13. package/dist/kurot/serialization/index.d.ts +1 -1
  14. package/dist/kurot/serialization/index.d.ts.map +1 -1
  15. package/dist/kurot/serialization/index.js +1 -1
  16. package/dist/kurot/serialization/index.js.map +1 -1
  17. package/dist/kurot/serialization/xml/xml-node.d.ts +23 -0
  18. package/dist/kurot/serialization/xml/xml-node.d.ts.map +1 -0
  19. package/dist/kurot/serialization/xml/xml-node.js +224 -0
  20. package/dist/kurot/serialization/xml/xml-node.js.map +1 -0
  21. package/dist/kurot/serialization/xml/xml-parser.d.ts +10 -0
  22. package/dist/kurot/serialization/xml/xml-parser.d.ts.map +1 -0
  23. package/dist/kurot/serialization/xml/xml-parser.js +134 -0
  24. package/dist/kurot/serialization/xml/xml-parser.js.map +1 -0
  25. package/dist/kurot/serialization/xml/xml-values.d.ts +15 -0
  26. package/dist/kurot/serialization/xml/xml-values.d.ts.map +1 -0
  27. package/dist/kurot/serialization/xml/xml-values.js +73 -0
  28. package/dist/kurot/serialization/xml/xml-values.js.map +1 -0
  29. package/dist/kurot/serialization/xml.d.ts +14 -0
  30. package/dist/kurot/serialization/xml.d.ts.map +1 -0
  31. package/dist/kurot/serialization/xml.js +162 -0
  32. package/dist/kurot/serialization/xml.js.map +1 -0
  33. package/dist/kurot/validation/UIDiagnostic.d.ts +1 -1
  34. package/dist/kurot/validation/UIDiagnostic.d.ts.map +1 -1
  35. package/dist/kurot/validation/validateUIAssetContract.d.ts.map +1 -1
  36. package/dist/kurot/validation/validateUIAssetContract.js +3 -1
  37. package/dist/kurot/validation/validateUIAssetContract.js.map +1 -1
  38. package/dist/kurot/validation/validateUIAssetModes.d.ts.map +1 -1
  39. package/dist/kurot/validation/validateUIAssetModes.js.map +1 -1
  40. package/dist/kurot/validation/validateUIComponentInstance.d.ts.map +1 -1
  41. package/dist/kurot/validation/validateUIComponentInstance.js +1 -7
  42. package/dist/kurot/validation/validateUIComponentInstance.js.map +1 -1
  43. package/dist/kurot/validation/validateUIDocument.d.ts.map +1 -1
  44. package/dist/kurot/validation/validateUIDocument.js +4 -17
  45. package/dist/kurot/validation/validateUIDocument.js.map +1 -1
  46. package/dist/kurot/validation/validationHelpers.d.ts.map +1 -1
  47. package/dist/kurot/validation/validationHelpers.js +1 -1
  48. package/dist/kurot/validation/validationHelpers.js.map +1 -1
  49. package/package.json +1 -1
  50. package/dist/kurot/serialization/json.d.ts +0 -10
  51. package/dist/kurot/serialization/json.d.ts.map +0 -1
  52. package/dist/kurot/serialization/json.js +0 -234
  53. package/dist/kurot/serialization/json.js.map +0 -1
@@ -1,234 +0,0 @@
1
- import { isUIDocument, validateUIDocument } from '../validation/validateUIDocument.js';
2
- import { compareStrings } from '../shared/strings.js';
3
- import { UIDocumentParseError } from './UIDocumentParseError.js';
4
- import { UIDocumentValidationError } from './UIDocumentValidationError.js';
5
- /**
6
- * Serializes a document with stable schema and property-key ordering.
7
- */
8
- export function serializeUIDocument(document, space = 2) {
9
- const diagnostics = validateUIDocument(document);
10
- if (diagnostics.length > 0) {
11
- throw new UIDocumentValidationError(diagnostics);
12
- }
13
- return JSON.stringify(normalizeDocument(document), undefined, space);
14
- }
15
- /**
16
- * Parses and validates a current-format semantic UI document.
17
- */
18
- export function parseUIDocument(source) {
19
- let value;
20
- try {
21
- value = JSON.parse(source);
22
- }
23
- catch (error) {
24
- const message = error instanceof Error ? error.message : 'Input is not valid JSON.';
25
- const diagnostics = [
26
- {
27
- code: 'invalid-json',
28
- severity: 'error',
29
- path: '$',
30
- message,
31
- },
32
- ];
33
- throw new UIDocumentParseError(diagnostics, error instanceof Error ? error : undefined);
34
- }
35
- if (!isUIDocument(value)) {
36
- throw new UIDocumentParseError(validateUIDocument(value));
37
- }
38
- return normalizeDocument(value);
39
- }
40
- function normalizeDocument(document) {
41
- return {
42
- kind: document.kind,
43
- formatVersion: document.formatVersion,
44
- id: document.id,
45
- assetKind: document.assetKind,
46
- contract: normalizeContract(document.contract),
47
- root: normalizeNode(document.root),
48
- };
49
- }
50
- function normalizeNode(node) {
51
- const entries = Object.entries(node.properties)
52
- .sort(([a], [b]) => compareStrings(a, b))
53
- .map(([key, value]) => [key, normalizePropertyValue(value)]);
54
- const properties = Object.fromEntries(entries);
55
- return {
56
- id: node.id,
57
- type: node.type,
58
- properties,
59
- ...(node.instance === undefined
60
- ? {}
61
- : { instance: normalizeInstance(node.instance) }),
62
- ...(node.appearance === undefined
63
- ? {}
64
- : {
65
- appearance: {
66
- kind: node.appearance.kind,
67
- assetId: node.appearance.assetId,
68
- ...(node.appearance.variant === undefined
69
- ? {}
70
- : { variant: node.appearance.variant }),
71
- },
72
- }),
73
- children: node.children.map(normalizeNode),
74
- };
75
- }
76
- function normalizeContract(contract) {
77
- return {
78
- ...(contract.componentType === undefined
79
- ? {}
80
- : { componentType: contract.componentType }),
81
- ...(contract.targetType === undefined ? {} : { targetType: contract.targetType }),
82
- parameters: mapSortedRecord(contract.parameters, normalizeParameterDefinition),
83
- parts: mapSortedRecord(contract.parts, value => ({
84
- nodeId: value.nodeId,
85
- ...(value.required === undefined ? {} : { required: value.required }),
86
- ...(value.description === undefined
87
- ? {}
88
- : { description: value.description }),
89
- })),
90
- slots: mapSortedRecord(contract.slots, value => ({
91
- nodeId: value.nodeId,
92
- capacity: value.capacity,
93
- ...(value.required === undefined ? {} : { required: value.required }),
94
- ...(value.description === undefined
95
- ? {}
96
- : { description: value.description }),
97
- })),
98
- states: mapSortedRecord(contract.states, normalizeState),
99
- variants: mapSortedRecord(contract.variants, normalizeVariant),
100
- dataFields: mapSortedRecord(contract.dataFields ?? {}, normalizePropertyDefinition),
101
- dataBindings: mapSortedRecord(contract.dataBindings ?? {}, normalizeDataBinding),
102
- actions: mapSortedRecord(contract.actions ?? {}, normalizeAction),
103
- };
104
- }
105
- function normalizeDataBinding(binding) {
106
- return {
107
- source: binding.source,
108
- targetId: binding.targetId,
109
- property: binding.property,
110
- };
111
- }
112
- function normalizeAction(definition) {
113
- return {
114
- sourceId: definition.sourceId,
115
- trigger: definition.trigger,
116
- ...(definition.description === undefined
117
- ? {}
118
- : { description: definition.description }),
119
- };
120
- }
121
- function normalizeParameterDefinition(definition) {
122
- return {
123
- ...normalizePropertyDefinition(definition),
124
- ...(definition.bindings === undefined
125
- ? {}
126
- : {
127
- bindings: definition.bindings.map(binding => ({
128
- targetId: binding.targetId,
129
- property: binding.property,
130
- })),
131
- }),
132
- };
133
- }
134
- function normalizePropertyDefinition(definition) {
135
- return {
136
- valueType: Array.isArray(definition.valueType)
137
- ? [...definition.valueType]
138
- : definition.valueType,
139
- ...(definition.format === undefined ? {} : { format: definition.format }),
140
- ...(definition.resourceTypes === undefined
141
- ? {}
142
- : { resourceTypes: [...definition.resourceTypes] }),
143
- ...(definition.tokenTypes === undefined
144
- ? {}
145
- : { tokenTypes: [...definition.tokenTypes] }),
146
- ...(definition.enumValues === undefined
147
- ? {}
148
- : { enumValues: [...definition.enumValues] }),
149
- ...(definition.minimum === undefined ? {} : { minimum: definition.minimum }),
150
- ...(definition.maximum === undefined ? {} : { maximum: definition.maximum }),
151
- ...(definition.integer === undefined ? {} : { integer: definition.integer }),
152
- ...(definition.defaultValue === undefined
153
- ? {}
154
- : { defaultValue: definition.defaultValue }),
155
- ...(definition.required === undefined ? {} : { required: definition.required }),
156
- ...(definition.description === undefined
157
- ? {}
158
- : { description: definition.description }),
159
- };
160
- }
161
- function normalizeState(definition) {
162
- return {
163
- ...(definition.description === undefined
164
- ? {}
165
- : { description: definition.description }),
166
- overrides: definition.overrides.map(normalizePropertyOverride),
167
- };
168
- }
169
- function normalizeVariant(definition) {
170
- return {
171
- ...(definition.description === undefined
172
- ? {}
173
- : { description: definition.description }),
174
- overrides: definition.overrides.map(normalizePropertyOverride),
175
- };
176
- }
177
- function normalizePropertyOverride(override) {
178
- return {
179
- targetId: override.targetId,
180
- property: override.property,
181
- value: normalizePropertyValue(override.value),
182
- ...(override.transition === undefined
183
- ? {}
184
- : {
185
- transition: {
186
- duration: override.transition.duration,
187
- ...(override.transition.delay === undefined
188
- ? {}
189
- : { delay: override.transition.delay }),
190
- ...(override.transition.easing === undefined
191
- ? {}
192
- : { easing: override.transition.easing }),
193
- },
194
- }),
195
- };
196
- }
197
- function normalizeInstance(instance) {
198
- return {
199
- source: {
200
- kind: instance.source.kind,
201
- assetId: instance.source.assetId,
202
- },
203
- parameters: mapSortedRecord(instance.parameters, normalizePropertyValue),
204
- ...(instance.variant === undefined ? {} : { variant: instance.variant }),
205
- overrides: instance.overrides.map(normalizeInstanceOverride),
206
- slots: mapSortedRecord(instance.slots, nodes => nodes.map(normalizeNode)),
207
- };
208
- }
209
- function normalizeInstanceOverride(override) {
210
- return {
211
- part: override.part,
212
- property: override.property,
213
- value: normalizePropertyValue(override.value),
214
- };
215
- }
216
- function normalizePropertyValue(value) {
217
- if (Array.isArray(value)) {
218
- return value.map(normalizePropertyValue);
219
- }
220
- if (typeof value === 'object') {
221
- const objectValue = value;
222
- const entries = Object.entries(objectValue)
223
- .sort(([a], [b]) => compareStrings(a, b))
224
- .map(([key, item]) => [key, normalizePropertyValue(item)]);
225
- return Object.fromEntries(entries);
226
- }
227
- return value;
228
- }
229
- function mapSortedRecord(value, map) {
230
- return Object.fromEntries(Object.entries(value)
231
- .sort(([a], [b]) => compareStrings(a, b))
232
- .map(([key, item]) => [key, map(item)]));
233
- }
234
- //# sourceMappingURL=json.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/kurot/serialization/json.ts"],"names":[],"mappings":"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"}