dtsgenerator 2.0.0 → 2.0.6

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 (43) hide show
  1. package/README.md +22 -0
  2. package/SupportedFeatures.md +1 -0
  3. package/ast.js +18 -0
  4. package/dist/core/dtsGenerator.js +17 -4
  5. package/dist/core/dtsGenerator.js.map +1 -1
  6. package/dist/core/referenceResolver.d.ts +1 -0
  7. package/dist/core/referenceResolver.js +31 -6
  8. package/dist/core/referenceResolver.js.map +1 -1
  9. package/dist/jsonPointer.d.ts +1 -0
  10. package/dist/jsonPointer.js +4 -0
  11. package/dist/jsonPointer.js.map +1 -1
  12. package/dist/utils.js +5 -2
  13. package/dist/utils.js.map +1 -1
  14. package/geojson.json +353 -0
  15. package/openapi.json +1607 -0
  16. package/package.json +15 -14
  17. package/src/core/dtsGenerator.js +327 -0
  18. package/src/core/dtsGenerator.js.map +1 -0
  19. package/src/core/dtsGenerator.ts +16 -4
  20. package/src/core/index.js +41 -0
  21. package/src/core/index.js.map +1 -0
  22. package/src/core/jsonSchema.js +371 -0
  23. package/src/core/jsonSchema.js.map +1 -0
  24. package/src/core/jsonSchemaDraft04.d.ts +1 -0
  25. package/src/core/jsonSchemaDraft07.d.ts +1 -0
  26. package/src/core/openApiV2.js +2 -0
  27. package/src/core/openApiV2.js.map +1 -0
  28. package/src/core/referenceResolver.js +199 -0
  29. package/src/core/referenceResolver.js.map +1 -0
  30. package/src/core/referenceResolver.ts +20 -6
  31. package/src/core/schemaConvertor.js +285 -0
  32. package/src/core/schemaConvertor.js.map +1 -0
  33. package/src/core/schemaId.js +51 -0
  34. package/src/core/schemaId.js.map +1 -0
  35. package/src/core/typeNameConvertor.js +43 -0
  36. package/src/core/typeNameConvertor.js.map +1 -0
  37. package/src/core/utils.js +58 -0
  38. package/src/core/utils.js.map +1 -0
  39. package/src/core/writeProcessor.js +130 -0
  40. package/src/core/writeProcessor.js.map +1 -0
  41. package/src/jsonPointer.ts +4 -0
  42. package/src/utils.ts +5 -2
  43. package/tsconfig.json +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtsgenerator",
3
- "version": "2.0.0",
3
+ "version": "2.0.6",
4
4
  "description": "TypeScript d.ts file generator for JSON Schema file",
5
5
  "bin": {
6
6
  "dtsgen": "./bin/dtsgen"
@@ -10,7 +10,7 @@
10
10
  "scripts": {
11
11
  "clean": "rimraf dist/ **/*.js **/*.js.map",
12
12
  "build": "tsc -p ./tsconfig-build.json",
13
- "prepublish": "npm run build",
13
+ "prepublishOnly": "npm run build",
14
14
  "precompile": "tslint --project ./tsconfig.json",
15
15
  "compile": "tsc -p .",
16
16
  "watch": "npm run compile -- -w",
@@ -25,7 +25,8 @@
25
25
  },
26
26
  "keywords": [
27
27
  "TypeScript",
28
- "JSON Schema"
28
+ "JSON Schema",
29
+ "OpenAPI"
29
30
  ],
30
31
  "author": "horiuchi",
31
32
  "license": "MIT",
@@ -42,29 +43,29 @@
42
43
  },
43
44
  "dependencies": {
44
45
  "commander": "^2.19.0",
45
- "cross-fetch": "^2.2.2",
46
- "debug": "^4.1.0",
46
+ "cross-fetch": "^3.0.1",
47
+ "debug": "^4.1.1",
47
48
  "glob": "^7.1.3",
48
- "js-yaml": "^3.12.0",
49
+ "js-yaml": "^3.12.1",
49
50
  "mkdirp": "^0.5.1",
50
51
  "tslib": "^1.9.3"
51
52
  },
52
53
  "devDependencies": {
53
- "@types/debug": "^0.0.31",
54
+ "@types/debug": "^4.1.0",
54
55
  "@types/glob": "^7.1.1",
55
- "@types/js-yaml": "3.11.2",
56
+ "@types/js-yaml": "3.12.0",
56
57
  "@types/mkdirp": "^0.5.2",
57
58
  "@types/mocha": "^5.2.5",
58
- "@types/node": "^10.12.0",
59
+ "@types/node": "^10.12.26",
59
60
  "@types/power-assert": "^1.5.0",
60
61
  "coveralls": "^3.0.2",
61
62
  "istanbul": "^0.4.5",
62
63
  "mocha": "^5.2.0",
63
64
  "power-assert": "^1.6.1",
64
- "remap-istanbul": "^0.12.0",
65
- "rimraf": "^2.6.2",
66
- "source-map-support": "^0.5.9",
67
- "tslint": "^5.11.0",
68
- "typescript": "^3.1.3"
65
+ "remap-istanbul": "^0.13.0",
66
+ "rimraf": "^2.6.3",
67
+ "source-map-support": "^0.5.10",
68
+ "tslint": "^5.12.1",
69
+ "typescript": "^3.3.3"
69
70
  }
70
71
  }
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var debug_1 = tslib_1.__importDefault(require("debug"));
5
+ var jsonPointer_1 = require("../jsonPointer");
6
+ var jsonSchema_1 = require("./jsonSchema");
7
+ var utils = tslib_1.__importStar(require("./utils"));
8
+ var debug = debug_1.default('dtsgen');
9
+ var typeMarker = Symbol();
10
+ var DtsGenerator = /** @class */ (function () {
11
+ function DtsGenerator(resolver, convertor) {
12
+ this.resolver = resolver;
13
+ this.convertor = convertor;
14
+ }
15
+ DtsGenerator.prototype.generate = function () {
16
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
17
+ var map, result;
18
+ return tslib_1.__generator(this, function (_a) {
19
+ switch (_a.label) {
20
+ case 0:
21
+ debug('generate type definition files.');
22
+ return [4 /*yield*/, this.resolver.resolve()];
23
+ case 1:
24
+ _a.sent();
25
+ map = this.convertor.buildSchemaMergedMap(this.resolver.getAllRegisteredSchema(), typeMarker);
26
+ this.convertor.start();
27
+ this.walk(map);
28
+ result = this.convertor.end();
29
+ return [2 /*return*/, result];
30
+ }
31
+ });
32
+ });
33
+ };
34
+ DtsGenerator.prototype.walk = function (map) {
35
+ var e_1, _a;
36
+ var keys = Object.keys(map).sort();
37
+ try {
38
+ for (var keys_1 = tslib_1.__values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
39
+ var key = keys_1_1.value;
40
+ var value = map[key];
41
+ if (value.hasOwnProperty(typeMarker)) {
42
+ var schema = value[typeMarker];
43
+ debug(" walk doProcess: key=" + key + " schemaId=" + schema.id.getAbsoluteId());
44
+ this.walkSchema(schema);
45
+ delete value[typeMarker];
46
+ }
47
+ if (typeof value === 'object' && Object.keys(value).length > 0) {
48
+ this.convertor.startNest(key);
49
+ this.walk(value);
50
+ this.convertor.endNest();
51
+ }
52
+ }
53
+ }
54
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
55
+ finally {
56
+ try {
57
+ if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
58
+ }
59
+ finally { if (e_1) throw e_1.error; }
60
+ }
61
+ };
62
+ DtsGenerator.prototype.walkSchema = function (schema) {
63
+ var normalized = this.normalizeContent(schema);
64
+ this.currentSchema = normalized;
65
+ this.convertor.outputComments(normalized);
66
+ var type = normalized.content.type;
67
+ switch (type) {
68
+ case 'object':
69
+ case 'any':
70
+ return this.generateTypeModel(normalized);
71
+ case 'array':
72
+ return this.generateTypeCollection(normalized);
73
+ default:
74
+ return this.generateDeclareType(normalized);
75
+ }
76
+ };
77
+ DtsGenerator.prototype.normalizeContent = function (schema, pointer) {
78
+ var e_2, _a;
79
+ if (pointer != null) {
80
+ schema = jsonSchema_1.getSubSchema(schema, pointer);
81
+ }
82
+ var content = schema.content;
83
+ if (typeof content === 'boolean') {
84
+ content = content ? {} : { not: {} };
85
+ }
86
+ else {
87
+ if (content.allOf) {
88
+ var work = content;
89
+ try {
90
+ for (var _b = tslib_1.__values(content.allOf), _c = _b.next(); !_c.done; _c = _b.next()) {
91
+ var sub = _c.value;
92
+ if (typeof sub === 'object' && sub.$ref) {
93
+ var ref = this.resolver.dereference(sub.$ref);
94
+ sub = this.normalizeContent(ref).content;
95
+ }
96
+ utils.mergeSchema(work, sub);
97
+ }
98
+ }
99
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
100
+ finally {
101
+ try {
102
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
103
+ }
104
+ finally { if (e_2) throw e_2.error; }
105
+ }
106
+ delete content.allOf;
107
+ content = work;
108
+ }
109
+ if (content.type === undefined && (content.properties || content.additionalProperties)) {
110
+ content.type = 'object';
111
+ }
112
+ if (content.nullable) {
113
+ var type = content.type;
114
+ if (type == null) {
115
+ content.type = 'null';
116
+ }
117
+ else if (!Array.isArray(type)) {
118
+ content.type = [type, 'null'];
119
+ }
120
+ else {
121
+ type.push('null');
122
+ }
123
+ }
124
+ var types = content.type;
125
+ if (Array.isArray(types)) {
126
+ var reduced = utils.reduceTypes(types);
127
+ content.type = reduced.length === 1 ? reduced[0] : reduced;
128
+ }
129
+ }
130
+ return Object.assign({}, schema, { content: content });
131
+ };
132
+ DtsGenerator.prototype.generateDeclareType = function (schema) {
133
+ this.convertor.outputExportType(schema.id);
134
+ this.generateTypeProperty(schema, true);
135
+ };
136
+ DtsGenerator.prototype.generateTypeModel = function (schema) {
137
+ this.convertor.startInterfaceNest(schema.id);
138
+ if (schema.content.type === 'any') {
139
+ this.convertor.outputRawValue('[name: string]: any; // any', true);
140
+ }
141
+ this.generateProperties(schema);
142
+ this.convertor.endInterfaceNest();
143
+ };
144
+ DtsGenerator.prototype.generateTypeCollection = function (schema) {
145
+ this.convertor.outputExportType(schema.id);
146
+ this.generateArrayTypeProperty(schema, true);
147
+ };
148
+ DtsGenerator.prototype.generateProperties = function (baseSchema) {
149
+ var e_3, _a;
150
+ var content = baseSchema.content;
151
+ if (content.additionalProperties) {
152
+ this.convertor.outputRawValue('[name: string]: ');
153
+ var schema = this.normalizeContent(baseSchema, '/additionalProperties');
154
+ if (content.additionalProperties === true) {
155
+ this.convertor.outputStringTypeName(schema, 'any', true);
156
+ }
157
+ else {
158
+ this.generateTypeProperty(schema, true);
159
+ }
160
+ }
161
+ if (content.properties) {
162
+ try {
163
+ for (var _b = tslib_1.__values(Object.keys(content.properties)), _c = _b.next(); !_c.done; _c = _b.next()) {
164
+ var propertyName = _c.value;
165
+ var schema = this.normalizeContent(baseSchema, '/properties/' + jsonPointer_1.tilde(propertyName));
166
+ this.convertor.outputComments(schema);
167
+ this.convertor.outputPropertyAttribute(schema);
168
+ this.convertor.outputPropertyName(schema, propertyName, baseSchema.content.required);
169
+ this.generateTypeProperty(schema);
170
+ }
171
+ }
172
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
173
+ finally {
174
+ try {
175
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
176
+ }
177
+ finally { if (e_3) throw e_3.error; }
178
+ }
179
+ }
180
+ };
181
+ DtsGenerator.prototype.generateTypeProperty = function (schema, terminate) {
182
+ var _this = this;
183
+ if (terminate === void 0) { terminate = true; }
184
+ var content = schema.content;
185
+ if (content.$ref) {
186
+ var ref = this.resolver.dereference(content.$ref);
187
+ if (ref.id == null) {
188
+ throw new Error('target referenced id is nothing: ' + content.$ref);
189
+ }
190
+ var refSchema = this.normalizeContent(ref);
191
+ return this.convertor.outputTypeIdName(refSchema, this.currentSchema, terminate);
192
+ }
193
+ if (content.anyOf || content.oneOf) {
194
+ this.generateArrayedType(schema, content.anyOf, '/anyOf/', terminate);
195
+ this.generateArrayedType(schema, content.oneOf, '/oneOf/', terminate);
196
+ return;
197
+ }
198
+ if (content.enum) {
199
+ this.convertor.outputArrayedType(schema, content.enum, function (value) {
200
+ if (content.type === 'integer') {
201
+ _this.convertor.outputRawValue('' + value);
202
+ }
203
+ else {
204
+ _this.convertor.outputRawValue("\"" + value + "\"");
205
+ }
206
+ }, terminate);
207
+ }
208
+ else if ('const' in content) {
209
+ var value = content.const;
210
+ if (content.type === 'integer') {
211
+ this.convertor.outputStringTypeName(schema, '' + value, terminate);
212
+ }
213
+ else {
214
+ this.convertor.outputStringTypeName(schema, "\"" + value + "\"", terminate);
215
+ }
216
+ }
217
+ else {
218
+ this.generateType(schema, terminate);
219
+ }
220
+ };
221
+ DtsGenerator.prototype.generateArrayedType = function (baseSchema, contents, path, terminate) {
222
+ var _this = this;
223
+ if (contents) {
224
+ this.convertor.outputArrayedType(baseSchema, contents, function (_content, index) {
225
+ var schema = _this.normalizeContent(baseSchema, path + index);
226
+ if (schema.id.isEmpty()) {
227
+ _this.generateTypeProperty(schema, false);
228
+ }
229
+ else {
230
+ _this.convertor.outputTypeIdName(schema, _this.currentSchema, false);
231
+ }
232
+ }, terminate);
233
+ }
234
+ };
235
+ DtsGenerator.prototype.generateArrayTypeProperty = function (schema, terminate) {
236
+ if (terminate === void 0) { terminate = true; }
237
+ var items = schema.content.items;
238
+ var minItems = schema.content.minItems;
239
+ if (items == null) {
240
+ this.convertor.outputStringTypeName(schema, 'any[]', terminate);
241
+ }
242
+ else if (!Array.isArray(items)) {
243
+ this.generateTypeProperty(this.normalizeContent(schema, '/items'), false);
244
+ this.convertor.outputStringTypeName(schema, '[]', terminate);
245
+ }
246
+ else if (items.length === 0 && minItems === undefined) {
247
+ this.convertor.outputStringTypeName(schema, 'any[]', terminate);
248
+ }
249
+ else {
250
+ var effectiveMaxItems = 1 + Math.max(minItems || 0, items.length);
251
+ for (var unionIndex = minItems === undefined ? 1 : minItems; unionIndex <= effectiveMaxItems; unionIndex++) {
252
+ this.convertor.outputRawValue('[');
253
+ for (var i = 0; i < unionIndex; i++) {
254
+ if (i > 0) {
255
+ this.convertor.outputRawValue(', ');
256
+ }
257
+ if (i < items.length) {
258
+ var type = this.normalizeContent(schema, '/items/' + i);
259
+ if (type.id.isEmpty()) {
260
+ this.generateTypeProperty(type, false);
261
+ }
262
+ else {
263
+ this.convertor.outputTypeIdName(type, this.currentSchema, false);
264
+ }
265
+ }
266
+ else {
267
+ if (i < effectiveMaxItems - 1) {
268
+ this.convertor.outputStringTypeName(schema, 'Object', false, false);
269
+ }
270
+ else {
271
+ this.convertor.outputStringTypeName(schema, 'any', false, false);
272
+ }
273
+ }
274
+ }
275
+ this.convertor.outputRawValue(']');
276
+ if (unionIndex < effectiveMaxItems) {
277
+ this.convertor.outputRawValue(' | ');
278
+ }
279
+ }
280
+ this.convertor.outputStringTypeName(schema, '', terminate);
281
+ }
282
+ };
283
+ DtsGenerator.prototype.generateType = function (schema, terminate, outputOptional) {
284
+ var _this = this;
285
+ if (outputOptional === void 0) { outputOptional = true; }
286
+ var type = schema.content.type;
287
+ if (type == null) {
288
+ this.convertor.outputPrimitiveTypeName(schema, 'any', terminate, outputOptional);
289
+ }
290
+ else if (typeof type === 'string') {
291
+ this.generateTypeName(schema, type, terminate, outputOptional);
292
+ }
293
+ else {
294
+ var types = utils.reduceTypes(type);
295
+ if (types.length <= 1) {
296
+ schema.content.type = types[0];
297
+ this.generateType(schema, terminate, outputOptional);
298
+ }
299
+ else {
300
+ this.convertor.outputArrayedType(schema, types, function (t) {
301
+ _this.generateTypeName(schema, t, false, false);
302
+ }, terminate);
303
+ }
304
+ }
305
+ };
306
+ DtsGenerator.prototype.generateTypeName = function (schema, type, terminate, outputOptional) {
307
+ if (outputOptional === void 0) { outputOptional = true; }
308
+ var tsType = utils.toTSType(type, schema.content);
309
+ if (tsType) {
310
+ this.convertor.outputPrimitiveTypeName(schema, tsType, terminate, outputOptional);
311
+ }
312
+ else if (type === 'object') {
313
+ this.convertor.startTypeNest();
314
+ this.generateProperties(schema);
315
+ this.convertor.endTypeNest(terminate);
316
+ }
317
+ else if (type === 'array') {
318
+ this.generateArrayTypeProperty(schema, terminate);
319
+ }
320
+ else {
321
+ throw new Error('unknown type: ' + type);
322
+ }
323
+ };
324
+ return DtsGenerator;
325
+ }());
326
+ exports.default = DtsGenerator;
327
+ //# sourceMappingURL=dtsGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dtsGenerator.js","sourceRoot":"","sources":["dtsGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import Debug from 'debug';
2
+ import { tilde } from '../jsonPointer';
2
3
  import { getSubSchema, JsonSchema, NormalizedSchema, Schema } from './jsonSchema';
3
4
  import ReferenceResolver from './referenceResolver';
4
5
  import SchemaConvertor from './schemaConvertor';
@@ -80,10 +81,21 @@ export default class DtsGenerator {
80
81
  delete content.allOf;
81
82
  content = work;
82
83
  }
83
- const types = content.type;
84
- if (types === undefined && (content.properties || content.additionalProperties)) {
84
+ if (content.type === undefined && (content.properties || content.additionalProperties)) {
85
85
  content.type = 'object';
86
- } else if (Array.isArray(types)) {
86
+ }
87
+ if (content.nullable) {
88
+ const type = content.type;
89
+ if (type == null) {
90
+ content.type = 'null';
91
+ } else if (!Array.isArray(type)) {
92
+ content.type = [type, 'null'];
93
+ } else {
94
+ type.push('null');
95
+ }
96
+ }
97
+ const types = content.type;
98
+ if (Array.isArray(types)) {
87
99
  const reduced = utils.reduceTypes(types);
88
100
  content.type = reduced.length === 1 ? reduced[0] : reduced;
89
101
  }
@@ -122,7 +134,7 @@ export default class DtsGenerator {
122
134
  }
123
135
  if (content.properties) {
124
136
  for (const propertyName of Object.keys(content.properties)) {
125
- const schema = this.normalizeContent(baseSchema, '/properties/' + propertyName);
137
+ const schema = this.normalizeContent(baseSchema, '/properties/' + tilde(propertyName));
126
138
  this.convertor.outputComments(schema);
127
139
  this.convertor.outputPropertyAttribute(schema);
128
140
  this.convertor.outputPropertyName(schema, propertyName, baseSchema.content.required);
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var dtsGenerator_1 = tslib_1.__importDefault(require("./dtsGenerator"));
5
+ var jsonSchema_1 = require("./jsonSchema");
6
+ var referenceResolver_1 = tslib_1.__importDefault(require("./referenceResolver"));
7
+ var schemaConvertor_1 = tslib_1.__importDefault(require("./schemaConvertor"));
8
+ var writeProcessor_1 = tslib_1.__importDefault(require("./writeProcessor"));
9
+ var schemaId_1 = require("./schemaId");
10
+ exports.SchemaId = schemaId_1.default;
11
+ var typeNameConvertor_1 = require("./typeNameConvertor");
12
+ exports.DefaultTypeNameConvertor = typeNameConvertor_1.DefaultTypeNameConvertor;
13
+ function dtsGenerator(options) {
14
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
15
+ var processor, resolver, convertor, generator;
16
+ return tslib_1.__generator(this, function (_a) {
17
+ switch (_a.label) {
18
+ case 0:
19
+ processor = new writeProcessor_1.default(options);
20
+ resolver = new referenceResolver_1.default();
21
+ convertor = new schemaConvertor_1.default(processor, options.typeNameConvertor, options.namespaceName);
22
+ if (options.contents != null) {
23
+ options.contents
24
+ .map(function (content) { return jsonSchema_1.parseSchema(content); })
25
+ .forEach(function (schema) { return resolver.registerSchema(schema); });
26
+ }
27
+ if (!(options.inputUrls != null)) return [3 /*break*/, 2];
28
+ return [4 /*yield*/, Promise.all(options.inputUrls.map(function (url) { return resolver.registerRemoteSchema(url); }))];
29
+ case 1:
30
+ _a.sent();
31
+ _a.label = 2;
32
+ case 2:
33
+ generator = new dtsGenerator_1.default(resolver, convertor);
34
+ return [4 /*yield*/, generator.generate()];
35
+ case 3: return [2 /*return*/, _a.sent()];
36
+ }
37
+ });
38
+ });
39
+ }
40
+ exports.default = dtsGenerator;
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,wEAA0C;AAC1C,2CAA2C;AAC3C,kFAAoD;AACpD,8EAAgD;AAEhD,4EAAyE;AAEzE,uCAAiD;AAAxC,8BAAA,OAAO,CAAY;AAC5B,yDAA+D;AAAtD,uDAAA,wBAAwB,CAAA;AASjC,SAA8B,YAAY,CAAC,OAAgB;;;;;;oBACjD,SAAS,GAAG,IAAI,wBAAc,CAAC,OAAO,CAAC,CAAC;oBACxC,QAAQ,GAAG,IAAI,2BAAiB,EAAE,CAAC;oBACnC,SAAS,GAAG,IAAI,yBAAe,CAAC,SAAS,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;oBAEnG,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE;wBAC1B,OAAO,CAAC,QAAQ;6BACX,GAAG,CAAC,UAAC,OAAO,IAAK,OAAA,wBAAW,CAAC,OAAO,CAAC,EAApB,CAAoB,CAAC;6BACtC,OAAO,CAAC,UAAC,MAAM,IAAK,OAAA,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAA/B,CAA+B,CAAC,CAAC;qBAC7D;yBACG,CAAA,OAAO,CAAC,SAAS,IAAI,IAAI,CAAA,EAAzB,wBAAyB;oBACzB,qBAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAlC,CAAkC,CAAC,CAAC,EAAA;;oBAArF,SAAqF,CAAC;;;oBAGpF,SAAS,GAAG,IAAI,sBAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBACjD,qBAAM,SAAS,CAAC,QAAQ,EAAE,EAAA;wBAAjC,sBAAO,SAA0B,EAAC;;;;CACrC;AAhBD,+BAgBC"}