@kumwe/studio-protocol 0.1.0-alpha.2

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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -0
  3. package/dist/guards.d.ts +4 -0
  4. package/dist/guards.d.ts.map +1 -0
  5. package/dist/guards.js +288 -0
  6. package/dist/guards.js.map +1 -0
  7. package/dist/index.d.ts +4 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +4 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/schemas.d.ts +24 -0
  12. package/dist/schemas.d.ts.map +1 -0
  13. package/dist/schemas.js +66 -0
  14. package/dist/schemas.js.map +1 -0
  15. package/dist/types.d.ts +989 -0
  16. package/dist/types.d.ts.map +1 -0
  17. package/dist/types.js +3 -0
  18. package/dist/types.js.map +1 -0
  19. package/package.json +38 -0
  20. package/schemas/block-definition.schema.json +218 -0
  21. package/schemas/blueprint.schema.json +236 -0
  22. package/schemas/command-vector.schema.json +64 -0
  23. package/schemas/command.schema.json +373 -0
  24. package/schemas/common.schema.json +222 -0
  25. package/schemas/content-model.schema.json +216 -0
  26. package/schemas/entry.schema.json +32 -0
  27. package/schemas/host-capabilities.schema.json +64 -0
  28. package/schemas/host-error.schema.json +42 -0
  29. package/schemas/manifest.json +117 -0
  30. package/schemas/media-asset.schema.json +83 -0
  31. package/schemas/media-reference.schema.json +112 -0
  32. package/schemas/media-upload-session.schema.json +109 -0
  33. package/schemas/pattern.schema.json +50 -0
  34. package/schemas/plugin-manifest.schema.json +124 -0
  35. package/schemas/preview-message.schema.json +226 -0
  36. package/schemas/provenance.schema.json +57 -0
  37. package/schemas/rich-text-projection.schema.json +70 -0
  38. package/schemas/rich-text.schema.json +174 -0
  39. package/schemas/schema-profile.schema.json +161 -0
  40. package/schemas/studio-config.schema.json +244 -0
  41. package/schemas/theme.schema.json +164 -0
  42. package/schemas/unresolved-contribution.schema.json +48 -0
@@ -0,0 +1,174 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/rich-text.schema.json",
4
+ "title": "Studio portable rich text",
5
+ "$ref": "#/$defs/doc",
6
+ "$defs": {
7
+ "doc": {
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "required": ["type"],
11
+ "properties": {
12
+ "type": { "const": "doc" },
13
+ "content": {
14
+ "type": "array",
15
+ "maxItems": 5000,
16
+ "items": { "$ref": "#/$defs/block" }
17
+ }
18
+ }
19
+ },
20
+ "block": {
21
+ "oneOf": [
22
+ { "$ref": "#/$defs/paragraph" },
23
+ { "$ref": "#/$defs/heading" },
24
+ { "$ref": "#/$defs/blockquote" },
25
+ { "$ref": "#/$defs/bulletList" },
26
+ { "$ref": "#/$defs/orderedList" },
27
+ { "$ref": "#/$defs/horizontalRule" }
28
+ ]
29
+ },
30
+ "paragraph": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": ["type"],
34
+ "properties": {
35
+ "type": { "const": "paragraph" },
36
+ "content": {
37
+ "type": "array",
38
+ "maxItems": 5000,
39
+ "items": { "$ref": "#/$defs/inline" }
40
+ }
41
+ }
42
+ },
43
+ "heading": {
44
+ "type": "object",
45
+ "additionalProperties": false,
46
+ "required": ["type", "attrs"],
47
+ "properties": {
48
+ "type": { "const": "heading" },
49
+ "attrs": {
50
+ "type": "object",
51
+ "additionalProperties": false,
52
+ "required": ["level"],
53
+ "properties": {
54
+ "level": { "enum": [2, 3, 4] }
55
+ }
56
+ },
57
+ "content": {
58
+ "type": "array",
59
+ "maxItems": 5000,
60
+ "items": { "$ref": "#/$defs/inline" }
61
+ }
62
+ }
63
+ },
64
+ "blockquote": {
65
+ "type": "object",
66
+ "additionalProperties": false,
67
+ "required": ["type", "content"],
68
+ "properties": {
69
+ "type": { "const": "blockquote" },
70
+ "content": {
71
+ "type": "array",
72
+ "minItems": 1,
73
+ "maxItems": 5000,
74
+ "items": { "$ref": "#/$defs/block" }
75
+ }
76
+ }
77
+ },
78
+ "bulletList": {
79
+ "type": "object",
80
+ "additionalProperties": false,
81
+ "required": ["type", "content"],
82
+ "properties": {
83
+ "type": { "const": "bulletList" },
84
+ "content": {
85
+ "type": "array",
86
+ "minItems": 1,
87
+ "maxItems": 5000,
88
+ "items": { "$ref": "#/$defs/listItem" }
89
+ }
90
+ }
91
+ },
92
+ "orderedList": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "required": ["type", "content"],
96
+ "properties": {
97
+ "type": { "const": "orderedList" },
98
+ "attrs": {
99
+ "type": "object",
100
+ "additionalProperties": false,
101
+ "required": ["start"],
102
+ "properties": {
103
+ "start": { "type": "integer", "minimum": 1, "maximum": 1000000 }
104
+ }
105
+ },
106
+ "content": {
107
+ "type": "array",
108
+ "minItems": 1,
109
+ "maxItems": 5000,
110
+ "items": { "$ref": "#/$defs/listItem" }
111
+ }
112
+ }
113
+ },
114
+ "listItem": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": ["type", "content"],
118
+ "properties": {
119
+ "type": { "const": "listItem" },
120
+ "content": {
121
+ "type": "array",
122
+ "minItems": 1,
123
+ "maxItems": 5000,
124
+ "items": { "$ref": "#/$defs/block" }
125
+ }
126
+ }
127
+ },
128
+ "horizontalRule": {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "required": ["type"],
132
+ "properties": {
133
+ "type": { "const": "horizontalRule" }
134
+ }
135
+ },
136
+ "hardBreak": {
137
+ "type": "object",
138
+ "additionalProperties": false,
139
+ "required": ["type"],
140
+ "properties": {
141
+ "type": { "const": "hardBreak" }
142
+ }
143
+ },
144
+ "text": {
145
+ "type": "object",
146
+ "additionalProperties": false,
147
+ "required": ["type", "text"],
148
+ "properties": {
149
+ "type": { "const": "text" },
150
+ "text": {
151
+ "type": "string",
152
+ "minLength": 1,
153
+ "maxLength": 250000
154
+ },
155
+ "marks": {
156
+ "type": "array",
157
+ "maxItems": 4,
158
+ "items": { "$ref": "#/$defs/mark" }
159
+ }
160
+ }
161
+ },
162
+ "inline": {
163
+ "oneOf": [{ "$ref": "#/$defs/text" }, { "$ref": "#/$defs/hardBreak" }]
164
+ },
165
+ "mark": {
166
+ "type": "object",
167
+ "additionalProperties": false,
168
+ "required": ["type"],
169
+ "properties": {
170
+ "type": { "enum": ["bold", "code", "italic", "strike"] }
171
+ }
172
+ }
173
+ }
174
+ }
@@ -0,0 +1,161 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/schema-profile.schema.json",
4
+ "title": "Studio Schema Profile meta-schema",
5
+ "$ref": "#/$defs/schema",
6
+ "$defs": {
7
+ "schema": {
8
+ "type": "object",
9
+ "propertyNames": {
10
+ "enum": [
11
+ "$defs",
12
+ "$ref",
13
+ "$schema",
14
+ "additionalProperties",
15
+ "allOf",
16
+ "anyOf",
17
+ "const",
18
+ "default",
19
+ "dependentRequired",
20
+ "description",
21
+ "else",
22
+ "enum",
23
+ "examples",
24
+ "exclusiveMaximum",
25
+ "exclusiveMinimum",
26
+ "if",
27
+ "items",
28
+ "maxItems",
29
+ "maxLength",
30
+ "maxProperties",
31
+ "maximum",
32
+ "minItems",
33
+ "minLength",
34
+ "minProperties",
35
+ "minimum",
36
+ "multipleOf",
37
+ "not",
38
+ "oneOf",
39
+ "prefixItems",
40
+ "properties",
41
+ "propertyNames",
42
+ "readOnly",
43
+ "required",
44
+ "then",
45
+ "title",
46
+ "type",
47
+ "uniqueItems",
48
+ "writeOnly"
49
+ ]
50
+ },
51
+ "properties": {
52
+ "$defs": { "$ref": "#/$defs/schemaMap" },
53
+ "$ref": {
54
+ "type": "string",
55
+ "maxLength": 500,
56
+ "pattern": "^#(?:/[^\\u0000-\\u001F\\u007F]*)?(?![\\s\\S])"
57
+ },
58
+ "$schema": { "const": "https://json-schema.org/draft/2020-12/schema" },
59
+ "additionalProperties": { "$ref": "#/$defs/subschema" },
60
+ "allOf": { "$ref": "#/$defs/schemaArray" },
61
+ "anyOf": { "$ref": "#/$defs/schemaArray" },
62
+ "const": { "$ref": "common.schema.json#/$defs/jsonValue" },
63
+ "default": { "$ref": "common.schema.json#/$defs/jsonValue" },
64
+ "dependentRequired": {
65
+ "type": "object",
66
+ "maxProperties": 512,
67
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
68
+ "additionalProperties": {
69
+ "type": "array",
70
+ "maxItems": 512,
71
+ "items": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" }
72
+ }
73
+ },
74
+ "description": { "type": "string", "maxLength": 10000 },
75
+ "else": { "$ref": "#/$defs/subschema" },
76
+ "enum": {
77
+ "type": "array",
78
+ "maxItems": 1024,
79
+ "items": { "$ref": "common.schema.json#/$defs/jsonValue" }
80
+ },
81
+ "examples": {
82
+ "type": "array",
83
+ "maxItems": 100,
84
+ "items": { "$ref": "common.schema.json#/$defs/jsonValue" }
85
+ },
86
+ "exclusiveMaximum": { "type": "number" },
87
+ "exclusiveMinimum": { "type": "number" },
88
+ "if": { "$ref": "#/$defs/subschema" },
89
+ "items": { "$ref": "#/$defs/subschema" },
90
+ "maxItems": { "type": "integer", "minimum": 0 },
91
+ "maxLength": { "type": "integer", "minimum": 0 },
92
+ "maxProperties": { "type": "integer", "minimum": 0 },
93
+ "maximum": { "type": "number" },
94
+ "minItems": { "type": "integer", "minimum": 0 },
95
+ "minLength": { "type": "integer", "minimum": 0 },
96
+ "minProperties": { "type": "integer", "minimum": 0 },
97
+ "minimum": { "type": "number" },
98
+ "multipleOf": { "type": "number", "exclusiveMinimum": 0 },
99
+ "not": { "$ref": "#/$defs/subschema" },
100
+ "oneOf": { "$ref": "#/$defs/schemaArray" },
101
+ "prefixItems": { "$ref": "#/$defs/schemaArray" },
102
+ "properties": { "$ref": "#/$defs/schemaMap" },
103
+ "propertyNames": { "$ref": "#/$defs/subschema" },
104
+ "readOnly": { "type": "boolean" },
105
+ "required": {
106
+ "type": "array",
107
+ "maxItems": 512,
108
+ "items": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" }
109
+ },
110
+ "then": { "$ref": "#/$defs/subschema" },
111
+ "title": { "type": "string", "maxLength": 1000 },
112
+ "type": {
113
+ "oneOf": [
114
+ { "$ref": "#/$defs/typeName" },
115
+ {
116
+ "type": "array",
117
+ "minItems": 1,
118
+ "maxItems": 7,
119
+ "uniqueItems": true,
120
+ "items": { "$ref": "#/$defs/typeName" }
121
+ }
122
+ ]
123
+ },
124
+ "uniqueItems": { "type": "boolean" },
125
+ "writeOnly": { "type": "boolean" }
126
+ }
127
+ },
128
+ "schemaArray": {
129
+ "type": "array",
130
+ "maxItems": 64,
131
+ "items": { "$ref": "#/$defs/subschema" }
132
+ },
133
+ "schemaMap": {
134
+ "type": "object",
135
+ "maxProperties": 512,
136
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
137
+ "additionalProperties": { "$ref": "#/$defs/schema" }
138
+ },
139
+ "subschema": {
140
+ "oneOf": [{ "type": "boolean" }, { "$ref": "#/$defs/schema" }]
141
+ },
142
+ "typeName": {
143
+ "enum": ["array", "boolean", "integer", "null", "number", "object", "string"]
144
+ },
145
+ "limits": {
146
+ "const": {
147
+ "maxAlternatives": 64,
148
+ "maxEnumMembers": 1024,
149
+ "maxJsonDepth": 64,
150
+ "maxJsonItems": 10000,
151
+ "maxJsonProperties": 1000,
152
+ "maxObjectKeyLength": 200,
153
+ "maxReferences": 128,
154
+ "maxSchemaBytes": 262144,
155
+ "maxSchemaDepth": 32,
156
+ "maxSchemaMapProperties": 512,
157
+ "maxSchemaNodes": 1024
158
+ }
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,244 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/studio-config.schema.json",
4
+ "title": "Studio resolved session configuration",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "contractVersion",
9
+ "protocolVersion",
10
+ "sessionId",
11
+ "sessionGeneration",
12
+ "mode",
13
+ "composite",
14
+ "sessionState",
15
+ "actor",
16
+ "locale",
17
+ "displayPreferences",
18
+ "resourceContext",
19
+ "permissions",
20
+ "artifacts",
21
+ "blocks",
22
+ "plugins",
23
+ "hostCapabilities",
24
+ "limits",
25
+ "features",
26
+ "preview"
27
+ ],
28
+ "properties": {
29
+ "contractVersion": { "$ref": "common.schema.json#/$defs/contractVersion" },
30
+ "protocolVersion": { "$ref": "common.schema.json#/$defs/semanticVersion" },
31
+ "sessionId": { "$ref": "common.schema.json#/$defs/stableId" },
32
+ "sessionGeneration": { "$ref": "common.schema.json#/$defs/revision" },
33
+ "mode": {
34
+ "enum": ["model", "blueprint", "content"]
35
+ },
36
+ "composite": { "enum": ["single", "hybrid"] },
37
+ "sessionState": { "enum": ["editable", "read-only"] },
38
+ "actor": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["id", "displayName"],
42
+ "properties": {
43
+ "id": { "$ref": "common.schema.json#/$defs/stableId" },
44
+ "displayName": { "type": "string", "minLength": 1, "maxLength": 200 }
45
+ }
46
+ },
47
+ "locale": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": ["requested", "resolved", "fallbacks", "direction", "timeZone"],
51
+ "properties": {
52
+ "requested": { "$ref": "common.schema.json#/$defs/locale" },
53
+ "resolved": { "$ref": "common.schema.json#/$defs/locale" },
54
+ "fallbacks": {
55
+ "type": "array",
56
+ "maxItems": 10,
57
+ "uniqueItems": true,
58
+ "items": { "$ref": "common.schema.json#/$defs/locale" }
59
+ },
60
+ "direction": { "enum": ["ltr", "rtl"] },
61
+ "timeZone": { "type": "string", "minLength": 1, "maxLength": 100 }
62
+ }
63
+ },
64
+ "displayPreferences": {
65
+ "type": "object",
66
+ "additionalProperties": false,
67
+ "required": ["calendar", "numberingSystem", "hourCycle"],
68
+ "properties": {
69
+ "calendar": { "$ref": "common.schema.json#/$defs/localName" },
70
+ "numberingSystem": { "$ref": "common.schema.json#/$defs/localName" },
71
+ "hourCycle": { "enum": ["h11", "h12", "h23", "h24"] },
72
+ "measurementSystem": { "enum": ["metric", "us", "uk"] }
73
+ }
74
+ },
75
+ "resourceContext": {
76
+ "type": "object",
77
+ "additionalProperties": false,
78
+ "required": ["key", "surface", "scopes"],
79
+ "properties": {
80
+ "key": { "$ref": "common.schema.json#/$defs/stableId" },
81
+ "surface": { "$ref": "common.schema.json#/$defs/qualifiedName" },
82
+ "revision": { "$ref": "common.schema.json#/$defs/revision" },
83
+ "scopes": {
84
+ "type": "array",
85
+ "maxItems": 20,
86
+ "uniqueItems": true,
87
+ "items": {
88
+ "type": "object",
89
+ "additionalProperties": false,
90
+ "required": ["kind", "id"],
91
+ "properties": {
92
+ "kind": { "$ref": "common.schema.json#/$defs/qualifiedName" },
93
+ "id": { "$ref": "common.schema.json#/$defs/stableId" }
94
+ }
95
+ }
96
+ },
97
+ "resource": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": ["type", "id"],
101
+ "properties": {
102
+ "type": { "$ref": "common.schema.json#/$defs/qualifiedName" },
103
+ "id": { "$ref": "common.schema.json#/$defs/stableId" }
104
+ }
105
+ }
106
+ }
107
+ },
108
+ "permissions": {
109
+ "type": "array",
110
+ "maxItems": 500,
111
+ "uniqueItems": true,
112
+ "items": { "$ref": "common.schema.json#/$defs/qualifiedName" }
113
+ },
114
+ "artifacts": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "properties": {
118
+ "model": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" },
119
+ "blueprint": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" },
120
+ "entry": { "$ref": "common.schema.json#/$defs/resolvedEntryReference" },
121
+ "theme": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" }
122
+ }
123
+ },
124
+ "plugins": {
125
+ "type": "array",
126
+ "maxItems": 100,
127
+ "uniqueItems": true,
128
+ "items": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" }
129
+ },
130
+ "blocks": {
131
+ "type": "array",
132
+ "maxItems": 5000,
133
+ "items": {
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "required": ["type", "version", "revision"],
137
+ "properties": {
138
+ "type": { "$ref": "common.schema.json#/$defs/qualifiedName" },
139
+ "version": { "$ref": "common.schema.json#/$defs/semanticVersion" },
140
+ "revision": { "$ref": "common.schema.json#/$defs/revision" },
141
+ "integrity": { "$ref": "common.schema.json#/$defs/integrity" }
142
+ }
143
+ }
144
+ },
145
+ "hostCapabilities": {
146
+ "$ref": "host-capabilities.schema.json"
147
+ },
148
+ "limits": {
149
+ "type": "object",
150
+ "additionalProperties": false,
151
+ "required": [
152
+ "maxNodes",
153
+ "maxDepth",
154
+ "maxSlotsPerNode",
155
+ "maxChildrenPerSlot",
156
+ "maxPropertyBytes",
157
+ "maxExtensionBytes",
158
+ "maxCommandBatch",
159
+ "maxHistoryEntries",
160
+ "maxRichTextBytes",
161
+ "maxRichTextDepth",
162
+ "maxPreviewRequestsPerMinute",
163
+ "maxPreviewBytes",
164
+ "maxMediaUploadBytes",
165
+ "maxMediaBatch",
166
+ "maxPluginCount",
167
+ "maxContributionsPerPlugin",
168
+ "maxLocaleBytes"
169
+ ],
170
+ "properties": {
171
+ "maxNodes": { "type": "integer", "minimum": 1, "maximum": 100000 },
172
+ "maxDepth": { "type": "integer", "minimum": 1, "maximum": 128 },
173
+ "maxSlotsPerNode": { "type": "integer", "minimum": 0, "maximum": 100 },
174
+ "maxChildrenPerSlot": { "type": "integer", "minimum": 0, "maximum": 10000 },
175
+ "maxPropertyBytes": { "type": "integer", "minimum": 0, "maximum": 10485760 },
176
+ "maxExtensionBytes": { "type": "integer", "minimum": 0, "maximum": 10485760 },
177
+ "maxCommandBatch": { "type": "integer", "minimum": 1, "maximum": 10000 },
178
+ "maxHistoryEntries": { "type": "integer", "minimum": 1, "maximum": 100000 },
179
+ "maxRichTextBytes": { "type": "integer", "minimum": 1, "maximum": 10485760 },
180
+ "maxRichTextDepth": { "type": "integer", "minimum": 1, "maximum": 128 },
181
+ "maxPreviewRequestsPerMinute": {
182
+ "type": "integer",
183
+ "minimum": 1,
184
+ "maximum": 60000
185
+ },
186
+ "maxPreviewBytes": { "type": "integer", "minimum": 1, "maximum": 52428800 },
187
+ "maxMediaUploadBytes": { "type": "integer", "minimum": 1, "maximum": 1099511627776 },
188
+ "maxMediaBatch": { "type": "integer", "minimum": 1, "maximum": 1000 },
189
+ "maxPluginCount": { "type": "integer", "minimum": 0, "maximum": 100 },
190
+ "maxContributionsPerPlugin": {
191
+ "type": "integer",
192
+ "minimum": 0,
193
+ "maximum": 5000
194
+ },
195
+ "maxLocaleBytes": { "type": "integer", "minimum": 1, "maximum": 104857600 }
196
+ }
197
+ },
198
+ "features": {
199
+ "type": "object",
200
+ "additionalProperties": false,
201
+ "required": [
202
+ "executablePlugins",
203
+ "customInspectors",
204
+ "externalMediaImport",
205
+ "clipboardMediaUpload",
206
+ "collaboration",
207
+ "offlineRecovery"
208
+ ],
209
+ "properties": {
210
+ "executablePlugins": { "type": "boolean" },
211
+ "customInspectors": { "type": "boolean" },
212
+ "externalMediaImport": { "type": "boolean" },
213
+ "clipboardMediaUpload": { "type": "boolean" },
214
+ "collaboration": { "type": "boolean" },
215
+ "offlineRecovery": { "type": "boolean" }
216
+ }
217
+ },
218
+ "preview": {
219
+ "type": "object",
220
+ "additionalProperties": false,
221
+ "required": ["enabled", "sameOriginRequired", "allowApproximateRenderer"],
222
+ "properties": {
223
+ "enabled": { "type": "boolean" },
224
+ "sameOriginRequired": { "type": "boolean" },
225
+ "allowApproximateRenderer": { "type": "boolean" },
226
+ "initialViewport": { "$ref": "common.schema.json#/$defs/localName" }
227
+ }
228
+ },
229
+ "extensions": { "$ref": "common.schema.json#/$defs/extensions" }
230
+ },
231
+ "allOf": [
232
+ {
233
+ "if": {
234
+ "properties": { "composite": { "const": "hybrid" } },
235
+ "required": ["composite"]
236
+ },
237
+ "then": {
238
+ "properties": {
239
+ "mode": { "enum": ["blueprint", "content"] }
240
+ }
241
+ }
242
+ }
243
+ ]
244
+ }