@podlite/schema 0.0.12 → 0.0.14

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 (46) hide show
  1. package/CHANGELOG.md +38 -4
  2. package/README.md +40 -0
  3. package/lib/ast-helpers.js +1 -0
  4. package/lib/ast-inerator.d.ts +0 -1
  5. package/lib/ast-inerator.js +5 -13
  6. package/lib/blocks-helpers.d.ts +1 -1
  7. package/lib/blocks-helpers.js +15 -12
  8. package/lib/exportAny.js +14 -6
  9. package/lib/exportHtml.js +43 -36
  10. package/lib/grammar.js +30 -21
  11. package/lib/grammarfc.js +1099 -243
  12. package/lib/helpers/config.js +8 -3
  13. package/lib/helpers/corePlugins.d.ts +12 -0
  14. package/lib/helpers/corePlugins.js +26 -0
  15. package/lib/helpers/handlers.js +1 -0
  16. package/lib/helpers/ids.d.ts +18 -0
  17. package/lib/helpers/ids.js +74 -0
  18. package/lib/helpers/makeInterator.js +6 -3
  19. package/lib/helpers/makeQuery.js +5 -1
  20. package/lib/helpers/makeQuery.test.js +32 -22
  21. package/lib/helpers/makeTransformer.js +7 -10
  22. package/lib/helpers/plugins.d.ts +2 -0
  23. package/lib/helpers/plugins.js +27 -0
  24. package/lib/index.d.ts +24 -21
  25. package/lib/index.js +18 -8
  26. package/lib/pluggableParser.d.ts +27 -0
  27. package/lib/pluggableParser.js +80 -0
  28. package/lib/plugin-clean-location.js +6 -3
  29. package/lib/plugin-defn-fill-term.js +7 -4
  30. package/lib/plugin-formatting-codes.js +41 -12
  31. package/lib/plugin-group-defn.js +10 -10
  32. package/lib/plugin-group-items.js +22 -20
  33. package/lib/plugin-heading.js +6 -3
  34. package/lib/plugin-items.js +9 -6
  35. package/lib/plugin-tables.js +46 -31
  36. package/lib/plugin-vmargin.js +5 -3
  37. package/lib/query-helpers.js +9 -6
  38. package/lib/types.d.ts +78 -70
  39. package/lib/types.js +1 -0
  40. package/lib/writer.js +22 -7
  41. package/lib/writerHtml.js +3 -2
  42. package/package.json +9 -9
  43. package/schema/AstTree.json +116 -0
  44. package/schema/PodliteDocument.json +116 -0
  45. package/schema/index.d.ts +3 -3
  46. package/index.js +0 -2
package/lib/types.d.ts CHANGED
@@ -28,8 +28,8 @@ export interface RulesStrict {
28
28
  'U<>': RuleHandler<FormattingCodeAny>;
29
29
  'Z<>': RuleHandler<FormattingCodeAny>;
30
30
  'Delete<>': RuleHandler<FormattingCodeAny>;
31
- 'pod': RuleHandler<Para>;
32
- 'root': RuleHandler<RootBlock>;
31
+ pod: RuleHandler<Para>;
32
+ root: RuleHandler<RootBlock>;
33
33
  ':para': RuleHandler<Para>;
34
34
  ':text': RuleHandler<Text>;
35
35
  ':blankline': RuleHandler<BlankLine>;
@@ -39,33 +39,35 @@ export interface RulesStrict {
39
39
  ':list': RuleHandler<List>;
40
40
  ':config': RuleHandler<BlockConfig>;
41
41
  ':alias': RuleHandler<Alias>;
42
- 'data': RuleHandler<BlockData>;
43
- 'code': RuleHandler<BlockCode>;
44
- 'para': RuleHandler<BlockPara>;
45
- 'defn': RuleHandler<BlockDefn>;
46
- 'nested': RuleHandler<BlockNested>;
47
- 'output': RuleHandler<BlockOutput>;
48
- 'input': RuleHandler<BlockInput>;
49
- 'image': RuleHandler<BlockImage>;
42
+ data: RuleHandler<BlockData>;
43
+ code: RuleHandler<BlockCode>;
44
+ para: RuleHandler<BlockPara>;
45
+ defn: RuleHandler<BlockDefn>;
46
+ nested: RuleHandler<BlockNested>;
47
+ output: RuleHandler<BlockOutput>;
48
+ input: RuleHandler<BlockInput>;
49
+ image: RuleHandler<BlockImage>;
50
50
  ':image': RuleHandler<Image>;
51
51
  'item:block': RuleHandler<BlockItem>;
52
- 'item': RuleHandler<BlockItem>;
52
+ item: RuleHandler<BlockItem>;
53
53
  'comment:block': RuleHandler<BlockComment>;
54
- 'comment': RuleHandler<BlockComment>;
54
+ comment: RuleHandler<BlockComment>;
55
55
  'head:block': RuleHandler<BlockHead>;
56
- 'head': RuleHandler<BlockHead>;
56
+ head: RuleHandler<BlockHead>;
57
57
  ':fcode': RuleHandler<FormattingCodes>;
58
58
  'table:block': RuleHandler<BlockTable>;
59
- 'table': RuleHandler<BlockTable>;
59
+ table: RuleHandler<BlockTable>;
60
60
  ':separator': RuleHandler<Separator>;
61
- 'table_row': RuleHandler<TableRow>;
62
- 'table_cell': RuleHandler<TableCell>;
63
- 'table_head': RuleHandler<TableHead>;
61
+ table_row: RuleHandler<TableRow>;
62
+ table_cell: RuleHandler<TableCell>;
63
+ table_head: RuleHandler<TableHead>;
64
+ toc: RuleHandler<BlockToc>;
64
65
  ':toc': RuleHandler<Toc>;
65
66
  ':toc-list': RuleHandler<TocList>;
66
67
  ':toc-item': RuleHandler<TocItem>;
67
- 'Diagram': RuleHandler<BlockDiagram>;
68
- 'Image': RuleHandler<BlockNamed>;
68
+ markdown: RuleHandler<BlockMarkdown>;
69
+ Diagram: RuleHandler<BlockDiagram>;
70
+ Image: RuleHandler<BlockNamed>;
69
71
  }
70
72
  export interface Rules extends RulesStrict {
71
73
  [name: string]: RuleHandler;
@@ -114,112 +116,112 @@ export interface RootBlock extends Omit<Block, 'location'> {
114
116
  content: AstTree;
115
117
  }
116
118
  export interface FormattingCodeB {
117
- type: "fcode";
118
- name: "B";
119
+ type: 'fcode';
120
+ name: 'B';
119
121
  content?: Array<Node>;
120
122
  }
121
123
  export interface FormattingCodeC {
122
- type: "fcode";
123
- name: "C";
124
+ type: 'fcode';
125
+ name: 'C';
124
126
  content?: Array<FormattingCodes | string>;
125
127
  }
126
128
  export interface FormattingCodeE {
127
- type: "fcode";
128
- name: "E";
129
+ type: 'fcode';
130
+ name: 'E';
129
131
  content: Array<{
130
- type: "number";
132
+ type: 'number';
131
133
  value: number;
132
134
  }>;
133
135
  }
134
136
  export interface FormattingCodeN {
135
- type: "fcode";
136
- name: "N";
137
+ type: 'fcode';
138
+ name: 'N';
137
139
  content?: Array<FormattingCodes | string>;
138
140
  }
139
141
  export interface FormattingCodeX {
140
- type: "fcode";
141
- name: "X";
142
+ type: 'fcode';
143
+ name: 'X';
142
144
  entry: Array<string> | null;
143
145
  content?: Array<FormattingCodes | string>;
144
146
  }
145
147
  export interface FormattingCodeZ {
146
- type: "fcode";
147
- name: "Z";
148
+ type: 'fcode';
149
+ name: 'Z';
148
150
  content?: string;
149
151
  }
150
152
  export interface FormattingCodeV {
151
- type: "fcode";
152
- name: "V";
153
+ type: 'fcode';
154
+ name: 'V';
153
155
  content?: string;
154
156
  }
155
157
  export interface FormattingCodeS {
156
- type: "fcode";
157
- name: "S";
158
+ type: 'fcode';
159
+ name: 'S';
158
160
  content?: string | Text;
159
161
  }
160
162
  export interface FormattingCodeA {
161
- type: "fcode";
162
- name: "A";
163
+ type: 'fcode';
164
+ name: 'A';
163
165
  content: string | Text;
164
166
  }
165
167
  export interface FormattingCodeD {
166
- type: "fcode";
167
- name: "D";
168
+ type: 'fcode';
169
+ name: 'D';
168
170
  synonyms: Array<string>;
169
171
  content: string;
170
172
  }
171
173
  export interface FormattingCodeL {
172
- type: "fcode";
173
- name: "L";
174
+ type: 'fcode';
175
+ name: 'L';
174
176
  meta: string | null;
175
177
  content: string | Text;
176
178
  }
177
179
  export interface FormattingCodeI {
178
- type: "fcode";
179
- name: "I";
180
+ type: 'fcode';
181
+ name: 'I';
180
182
  meta: string;
181
183
  content: string | Text;
182
184
  }
183
185
  export interface FormattingCodeAny {
184
- type: "fcode";
186
+ type: 'fcode';
185
187
  name: string;
186
188
  content?: Array<FormattingCodes | string>;
187
189
  }
188
190
  export interface Ambient {
189
- type: "ambient";
191
+ type: 'ambient';
190
192
  text: string;
191
193
  location: Location;
192
194
  }
193
195
  export interface Verbatim {
194
- type: "verbatim";
196
+ type: 'verbatim';
195
197
  value: string;
196
198
  }
197
199
  export interface Text {
198
- type: "text";
200
+ type: 'text';
199
201
  value: string;
200
202
  }
201
203
  export interface Para {
202
- type: "para";
204
+ type: 'para';
203
205
  text: string;
204
206
  margin: string;
205
207
  location: Location;
206
208
  content: Array<Node | FormattingCodes>;
207
209
  }
208
210
  export interface Code {
209
- type: "code";
211
+ type: 'code';
210
212
  text: string;
211
213
  margin: string;
212
214
  location: Location;
213
215
  content: Array<Verbatim | string>;
214
216
  }
215
217
  export interface BlankLine {
216
- type: "blankline";
218
+ type: 'blankline';
217
219
  }
218
220
  export interface List {
219
- type: "list";
221
+ type: 'list';
220
222
  level: string | number;
221
223
  content: Array<BlockItem | BlankLine | List>;
222
- list: "itemized";
224
+ list: 'itemized';
223
225
  }
224
226
  export interface ConfigItemKV {
225
227
  [key: string]: string | number | boolean;
@@ -233,13 +235,13 @@ export interface ConfigItem {
233
235
  }
234
236
  export interface BlockConfig {
235
237
  name: string;
236
- type: "config";
238
+ type: 'config';
237
239
  config: Array<ConfigItem>;
238
240
  margin: string;
239
241
  }
240
242
  export interface Alias {
241
243
  name: string;
242
- type: "alias";
244
+ type: 'alias';
243
245
  replacement: Array<string>;
244
246
  margin: string;
245
247
  }
@@ -248,7 +250,7 @@ export interface Separator {
248
250
  text: string;
249
251
  }
250
252
  export interface Block {
251
- type: "block";
253
+ type: 'block';
252
254
  location: Location;
253
255
  content: Array<Node>;
254
256
  margin: string;
@@ -268,22 +270,28 @@ export interface BlockDefn extends Block {
268
270
  name: 'defn';
269
271
  }
270
272
  export interface BlockItem extends Block {
271
- name: "item";
273
+ name: 'item';
272
274
  content: Array<Node>;
273
275
  level: string | number;
274
276
  }
275
277
  export interface BlockOutput extends Block {
276
- name: "output";
278
+ name: 'output';
277
279
  }
278
280
  export interface BlockInput extends Block {
279
- name: "input";
281
+ name: 'input';
280
282
  }
281
283
  export interface BlockPara extends Block {
282
- name: "para";
284
+ name: 'para';
283
285
  }
284
286
  export interface BlockCode extends Block {
285
287
  name: 'code';
286
288
  }
289
+ export interface BlockToc extends Block {
290
+ name: 'toc';
291
+ }
292
+ export interface BlockMarkdown extends Block {
293
+ name: 'markdown';
294
+ }
287
295
  export interface BlockNested extends Block {
288
296
  name: 'nested';
289
297
  }
@@ -292,28 +300,28 @@ export interface BlockHead extends Block {
292
300
  level: number | string;
293
301
  }
294
302
  export interface BlockTable extends Omit<Block, 'content'> {
295
- name: "table";
303
+ name: 'table';
296
304
  content: Array<TableHead | TableSeparator | TableRow | BlankLine>;
297
305
  text?: string;
298
306
  }
299
307
  export interface TableCell {
300
- name: "table_cell";
301
- type: "block";
308
+ name: 'table_cell';
309
+ type: 'block';
302
310
  content: Array<string>;
303
311
  }
304
312
  export interface TableRow {
305
- name: "table_row";
306
- type: "block";
313
+ name: 'table_row';
314
+ type: 'block';
307
315
  content: Array<TableCell>;
308
316
  }
309
317
  export interface TableHead {
310
- name: "table_head";
311
- type: "block";
318
+ name: 'table_head';
319
+ type: 'block';
312
320
  content: Array<TableCell>;
313
321
  }
314
322
  export interface TableSeparator {
315
- "type": "separator";
316
- "text": string;
323
+ type: 'separator';
324
+ text: string;
317
325
  }
318
326
  export declare type BlockAny = BlockNamed;
319
327
  export interface BlockNamed extends Omit<Block, 'content'> {
@@ -328,7 +336,7 @@ export interface BlockDiagram extends Omit<BlockNamed, 'content'> {
328
336
  };
329
337
  }
330
338
  export declare type FormattingCodes = FormattingCodeA | FormattingCodeC | FormattingCodeB | FormattingCodeD | FormattingCodeE | FormattingCodeI | FormattingCodeL | FormattingCodeN | FormattingCodeX | FormattingCodeZ | FormattingCodeV | FormattingCodeS | FormattingCodeAny;
331
- export declare type PodNode = Ambient | BlockPod | BlockData | BlockCode | BlankLine | BlockNested | BlockOutput | BlockInput | BlockPara | BlockHead | BlockComment | BlockDefn | string | Para | Text | Code | BlockNamed | BlockAny | Verbatim | BlockTable | List | BlockConfig | BlockItem | Alias | BlockImage | Image | RootBlock | Separator | BlockCaption | FormattingCodes | Toc;
339
+ export declare type PodNode = Ambient | BlockPod | BlockData | BlockCode | BlankLine | BlockNested | BlockMarkdown | BlockOutput | BlockInput | BlockPara | BlockHead | BlockComment | BlockDefn | string | Para | Text | Code | BlockNamed | BlockAny | Verbatim | BlockTable | List | BlockConfig | BlockItem | Alias | BlockToc | BlockImage | Image | RootBlock | Separator | BlockCaption | FormattingCodes | Toc;
332
340
  export declare type Node = PodNode;
333
341
  export declare type AstTree = Array<PodNode>;
334
342
  export declare type PodliteDocument = RootBlock;
package/lib/types.js CHANGED
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
package/lib/writer.js CHANGED
@@ -24,6 +24,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  const Events = __importStar(require("events"));
26
26
  class Writer extends Events.EventEmitter {
27
+ INDEXTERMS;
28
+ FOOTNOTES;
29
+ output;
30
+ errors;
31
+ out;
32
+ ons;
27
33
  // write: (p: any) => void;
28
34
  // getStr: () => { errors: any; toString: () => any; valueOf: () => any; };
29
35
  // errors: any;
@@ -33,9 +39,6 @@ class Writer extends Events.EventEmitter {
33
39
  // endWrite: () => void;
34
40
  constructor(output) {
35
41
  super();
36
- this.endWrite = () => {
37
- this.emit('end');
38
- };
39
42
  // save X<> entries
40
43
  this.INDEXTERMS = [];
41
44
  // save N<> annotates
@@ -45,9 +48,13 @@ class Writer extends Events.EventEmitter {
45
48
  this.emit('ready');
46
49
  }
47
50
  // escape function for output
48
- escape(p) { return p; }
51
+ escape(p) {
52
+ return p;
53
+ }
49
54
  // write with escape special symbols
50
- write(p) { return this.writeRaw(this.escape(p)); }
55
+ write(p) {
56
+ return this.writeRaw(this.escape(p));
57
+ }
51
58
  // raw write as is
52
59
  writeRaw(str) {
53
60
  if ('function' === typeof this.output) {
@@ -61,16 +68,20 @@ class Writer extends Events.EventEmitter {
61
68
  return {
62
69
  errors: this.errors,
63
70
  toString: () => this.out,
64
- valueOf: () => this.out
71
+ valueOf: () => this.out,
65
72
  };
66
73
  }
67
74
  startWrite(tree) {
68
75
  // setup events
76
+ ;
69
77
  (this.ons || []).map(a =>
70
78
  //@ts-ignore
71
79
  super.on(...a));
72
80
  this.emit('start', tree);
73
- this.addListener('errors', (err) => { this.errors = this.errors || []; this.errors.push(err); });
81
+ this.addListener('errors', err => {
82
+ this.errors = this.errors || [];
83
+ this.errors.push(err);
84
+ });
74
85
  }
75
86
  on(...params) {
76
87
  // overload 'on' method for reverse setup handlers
@@ -78,6 +89,9 @@ class Writer extends Events.EventEmitter {
78
89
  this.ons.unshift([...params]);
79
90
  return this;
80
91
  }
92
+ endWrite = () => {
93
+ this.emit('end');
94
+ };
81
95
  // nesting methods
82
96
  _add_nesting(n) { }
83
97
  _remove_nesting(n) { }
@@ -89,3 +103,4 @@ class Writer extends Events.EventEmitter {
89
103
  }
90
104
  }
91
105
  exports.default = Writer;
106
+ //# sourceMappingURL=writer.js.map
package/lib/writerHtml.js CHANGED
@@ -19,9 +19,9 @@ class WriterHTML extends writer_1.default {
19
19
  '"': '&quot;',
20
20
  "'": '&#x27;',
21
21
  '/': '&#x2F;',
22
- '`': '&#x60;'
22
+ '`': '&#x60;',
23
23
  };
24
- return (string + '').replace(/[&<>"'\/`]/g, (match) => HTML_CHARS[match]);
24
+ return (string + '').replace(/[&<>"'\/`]/g, match => HTML_CHARS[match]);
25
25
  }
26
26
  _add_nesting(n) {
27
27
  this.writeRaw('<blockquote>'.repeat(n));
@@ -31,3 +31,4 @@ class WriterHTML extends writer_1.default {
31
31
  }
32
32
  }
33
33
  exports.default = WriterHTML;
34
+ //# sourceMappingURL=writerHtml.js.map
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@podlite/schema",
3
- "version": "0.0.12",
4
- "description": "podlite schema",
5
- "main": "index.js",
3
+ "version": "0.0.14",
4
+ "description": "AST tools for Podlite markup language",
5
+ "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
7
7
  "license": "MIT",
8
8
  "files": [
@@ -18,17 +18,18 @@
18
18
  "engineStrict": true,
19
19
  "publishConfig": {
20
20
  "access": "public",
21
- "main": "index.js",
22
- "module": "index.js",
21
+ "main": "lib/index.js",
23
22
  "types": "./lib/index.d.ts"
24
23
  },
25
24
  "scripts": {
26
- "clean": "rm -rf lib tsconfig.tsbuildinfo",
27
- "build": "run-s build:ts build:ast build:pegjs",
25
+ "clean": "rm -rf lib esm tsconfig.tsbuildinfo",
26
+ "build": "run-s build:pegjs build:ts build:ast ",
28
27
  "build:ast": "ts-node scripts/make-ast-scheme.ts",
29
28
  "build:ts": "yarn g:tsc --build $INIT_CWD",
29
+ "build:esm": "yarn g:tsctest -p tsconfig.esm.json",
30
30
  "build:pegjs": "pegjs -o src/grammar.js src/grammar.pegjs && pegjs -o src/grammarfc.js src/grammarfc.pegjs",
31
31
  "watch": "npx nodemon -e js,ts --exec 'yarn' build",
32
+ "watch:pegjs": "npx nodemon -e pegjs --exec 'yarn' build:pegjs",
32
33
  "test": "yarn g:jest --passWithNoTests"
33
34
  },
34
35
  "keywords": [
@@ -51,6 +52,5 @@
51
52
  "ts-node": "^9.1.1",
52
53
  "typescript": "4.5.5",
53
54
  "typescript-json-schema": "0.53.0"
54
- },
55
- "module": "index.js"
55
+ }
56
56
  }
@@ -213,6 +213,12 @@
213
213
  {
214
214
  "$ref": "#/definitions/BlockCode"
215
215
  },
216
+ {
217
+ "$ref": "#/definitions/BlockToc"
218
+ },
219
+ {
220
+ "$ref": "#/definitions/BlockMarkdown"
221
+ },
216
222
  {
217
223
  "$ref": "#/definitions/BlockNested"
218
224
  },
@@ -1264,6 +1270,12 @@
1264
1270
  {
1265
1271
  "$ref": "#/definitions/BlockCode"
1266
1272
  },
1273
+ {
1274
+ "$ref": "#/definitions/BlockToc"
1275
+ },
1276
+ {
1277
+ "$ref": "#/definitions/BlockMarkdown"
1278
+ },
1267
1279
  {
1268
1280
  "$ref": "#/definitions/BlockNested"
1269
1281
  },
@@ -1941,6 +1953,110 @@
1941
1953
  "type"
1942
1954
  ]
1943
1955
  },
1956
+ "BlockToc": {
1957
+ "type": "object",
1958
+ "properties": {
1959
+ "name": {
1960
+ "type": "string",
1961
+ "enum": [
1962
+ "toc"
1963
+ ]
1964
+ },
1965
+ "type": {
1966
+ "type": "string",
1967
+ "enum": [
1968
+ "block"
1969
+ ]
1970
+ },
1971
+ "location": {
1972
+ "$ref": "#/definitions/Location"
1973
+ },
1974
+ "content": {
1975
+ "type": "array",
1976
+ "items": {
1977
+ "$ref": "#/definitions/PodNode"
1978
+ }
1979
+ },
1980
+ "margin": {
1981
+ "type": "string"
1982
+ },
1983
+ "config": {
1984
+ "type": "array",
1985
+ "items": {
1986
+ "anyOf": [
1987
+ {
1988
+ "$ref": "#/definitions/BrokenConfigItem"
1989
+ },
1990
+ {
1991
+ "$ref": "#/definitions/ConfigItem"
1992
+ }
1993
+ ]
1994
+ }
1995
+ },
1996
+ "id": {
1997
+ "type": "string"
1998
+ }
1999
+ },
2000
+ "required": [
2001
+ "content",
2002
+ "location",
2003
+ "margin",
2004
+ "name",
2005
+ "type"
2006
+ ]
2007
+ },
2008
+ "BlockMarkdown": {
2009
+ "type": "object",
2010
+ "properties": {
2011
+ "name": {
2012
+ "type": "string",
2013
+ "enum": [
2014
+ "markdown"
2015
+ ]
2016
+ },
2017
+ "type": {
2018
+ "type": "string",
2019
+ "enum": [
2020
+ "block"
2021
+ ]
2022
+ },
2023
+ "location": {
2024
+ "$ref": "#/definitions/Location"
2025
+ },
2026
+ "content": {
2027
+ "type": "array",
2028
+ "items": {
2029
+ "$ref": "#/definitions/PodNode"
2030
+ }
2031
+ },
2032
+ "margin": {
2033
+ "type": "string"
2034
+ },
2035
+ "config": {
2036
+ "type": "array",
2037
+ "items": {
2038
+ "anyOf": [
2039
+ {
2040
+ "$ref": "#/definitions/BrokenConfigItem"
2041
+ },
2042
+ {
2043
+ "$ref": "#/definitions/ConfigItem"
2044
+ }
2045
+ ]
2046
+ }
2047
+ },
2048
+ "id": {
2049
+ "type": "string"
2050
+ }
2051
+ },
2052
+ "required": [
2053
+ "content",
2054
+ "location",
2055
+ "margin",
2056
+ "name",
2057
+ "type"
2058
+ ]
2059
+ },
1944
2060
  "BlockNested": {
1945
2061
  "type": "object",
1946
2062
  "properties": {