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
@@ -0,0 +1,371 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var JsonPointer = tslib_1.__importStar(require("../jsonPointer"));
5
+ var schemaId_1 = tslib_1.__importDefault(require("./schemaId"));
6
+ var typeNameConvertor_1 = require("./typeNameConvertor");
7
+ function parseSchema(content, url) {
8
+ var _a = selectSchemaType(content), type = _a.type, openApiVersion = _a.openApiVersion;
9
+ if (url != null) {
10
+ setId(type, content, url);
11
+ }
12
+ var id = getId(type, content);
13
+ return {
14
+ type: type,
15
+ openApiVersion: openApiVersion,
16
+ id: id ? new schemaId_1.default(id) : schemaId_1.default.empty,
17
+ content: content,
18
+ };
19
+ }
20
+ exports.parseSchema = parseSchema;
21
+ function getSubSchema(rootSchema, pointer, id) {
22
+ var content = JsonPointer.get(rootSchema.content, JsonPointer.parse(pointer));
23
+ if (id == null) {
24
+ var subId = getId(rootSchema.type, content);
25
+ var getParentIds_1 = function (s, result) {
26
+ result.push(s.id.getAbsoluteId());
27
+ return s.rootSchema == null ? result : getParentIds_1(s.rootSchema, result);
28
+ };
29
+ if (subId) {
30
+ id = new schemaId_1.default(subId, getParentIds_1(rootSchema, []));
31
+ }
32
+ else {
33
+ id = new schemaId_1.default(pointer, getParentIds_1(rootSchema, []));
34
+ }
35
+ }
36
+ return {
37
+ type: rootSchema.type,
38
+ id: id,
39
+ content: content,
40
+ rootSchema: rootSchema,
41
+ };
42
+ }
43
+ exports.getSubSchema = getSubSchema;
44
+ function getId(type, content) {
45
+ return content[getIdPropertyName(type)];
46
+ }
47
+ exports.getId = getId;
48
+ function setId(type, content, id) {
49
+ var key = getIdPropertyName(type);
50
+ if (content[key] == null) {
51
+ content[key] = id;
52
+ }
53
+ }
54
+ function getIdPropertyName(type) {
55
+ switch (type) {
56
+ case 'Draft04': return 'id';
57
+ case 'Draft07': return '$id';
58
+ }
59
+ }
60
+ function searchAllSubSchema(schema, onFoundSchema, onFoundReference) {
61
+ var walkArray = function (array, paths, parentIds) {
62
+ if (array == null) {
63
+ return;
64
+ }
65
+ array.forEach(function (item, index) {
66
+ walk(item, paths.concat(index.toString()), parentIds);
67
+ });
68
+ };
69
+ var walkObject = function (obj, paths, parentIds) {
70
+ if (obj == null) {
71
+ return;
72
+ }
73
+ Object.keys(obj).forEach(function (key) {
74
+ var sub = obj[key];
75
+ if (sub != null) {
76
+ walk(sub, paths.concat(key), parentIds);
77
+ }
78
+ });
79
+ };
80
+ var walkMaybeArray = function (item, paths, parentIds) {
81
+ if (Array.isArray(item)) {
82
+ walkArray(item, paths, parentIds);
83
+ }
84
+ else {
85
+ walk(item, paths, parentIds);
86
+ }
87
+ };
88
+ var walk = function (s, paths, parentIds) {
89
+ if (s == null || typeof s !== 'object') {
90
+ return;
91
+ }
92
+ var id = getId(schema.type, s);
93
+ if (id && typeof id === 'string') {
94
+ var schemaId = new schemaId_1.default(id, parentIds);
95
+ var subSchema = {
96
+ type: schema.type,
97
+ id: schemaId,
98
+ content: s,
99
+ rootSchema: schema,
100
+ };
101
+ onFoundSchema(subSchema);
102
+ parentIds = parentIds.concat([schemaId.getAbsoluteId()]);
103
+ }
104
+ if (typeof s.$ref === 'string') {
105
+ var schemaId = new schemaId_1.default(s.$ref, parentIds);
106
+ s.$ref = schemaId.getAbsoluteId();
107
+ onFoundReference(schemaId);
108
+ }
109
+ walkArray(s.allOf, paths.concat('allOf'), parentIds);
110
+ walkArray(s.anyOf, paths.concat('anyOf'), parentIds);
111
+ walkArray(s.oneOf, paths.concat('oneOf'), parentIds);
112
+ walk(s.not, paths.concat('not'), parentIds);
113
+ walkMaybeArray(s.items, paths.concat('items'), parentIds);
114
+ walk(s.additionalItems, paths.concat('additionalItems'), parentIds);
115
+ walk(s.additionalProperties, paths.concat('additionalProperties'), parentIds);
116
+ walkObject(s.definitions, paths.concat('definitions'), parentIds);
117
+ walkObject(s.properties, paths.concat('properties'), parentIds);
118
+ walkObject(s.patternProperties, paths.concat('patternProperties'), parentIds);
119
+ walkMaybeArray(s.dependencies, paths.concat('dependencies'), parentIds);
120
+ if (schema.type === 'Draft07') {
121
+ if ('propertyNames' in s) {
122
+ walk(s.propertyNames, paths.concat('propertyNames'), parentIds);
123
+ walk(s.contains, paths.concat('contains'), parentIds);
124
+ walk(s.if, paths.concat('if'), parentIds);
125
+ walk(s.then, paths.concat('then'), parentIds);
126
+ walk(s.else, paths.concat('else'), parentIds);
127
+ }
128
+ }
129
+ };
130
+ function searchOpenApiSubSchema(openApi) {
131
+ function createId(paths) {
132
+ return '#/' + paths.join('/');
133
+ }
134
+ function convertKeyToTypeName(key) {
135
+ return typeNameConvertor_1.normalizeTypeName(key.replace(/[\/}]/g, '').replace(/{/, '$'));
136
+ }
137
+ function setSubIdToAnyObject(f, obj, keys) {
138
+ if (obj == null) {
139
+ return;
140
+ }
141
+ Object.keys(obj).forEach(function (key) {
142
+ var item = obj[key];
143
+ f(item, keys.concat(convertKeyToTypeName(key)));
144
+ });
145
+ }
146
+ // for OpenAPI
147
+ var setSubIdToParameterObject = function (obj, keys) { return setSubIdToAnyObject(setSubIdToParameter, obj, keys); };
148
+ function setSubIdToParameter(param, keys) {
149
+ if ('schema' in param) {
150
+ setSubId(param.schema, keys.concat(param.name));
151
+ }
152
+ }
153
+ function setSubIdToParameters(array, keys) {
154
+ if (array == null) {
155
+ return;
156
+ }
157
+ var map = new Map();
158
+ array.forEach(function (item) {
159
+ if ('schema' in item) {
160
+ setSubIdToParameter(item, keys);
161
+ var work = map.get(item.in);
162
+ if (work == null) {
163
+ work = [];
164
+ map.set(item.in, work);
165
+ }
166
+ work.push(item);
167
+ }
168
+ });
169
+ addParameterSchema(map, keys);
170
+ }
171
+ function addParameterSchema(input, keys) {
172
+ var e_1, _a;
173
+ try {
174
+ for (var input_1 = tslib_1.__values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {
175
+ var _b = tslib_1.__read(input_1_1.value, 2), key = _b[0], params = _b[1];
176
+ var _c = tslib_1.__read(buildParameterSchema(key, params, keys), 2), paths = _c[0], obj = _c[1];
177
+ setSubId(obj, paths);
178
+ }
179
+ }
180
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
181
+ finally {
182
+ try {
183
+ if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);
184
+ }
185
+ finally { if (e_1) throw e_1.error; }
186
+ }
187
+ }
188
+ function buildParameterSchema(inType, params, keys) {
189
+ var paths = keys.slice(0, keys.length - 1).concat(inType + 'Parameters');
190
+ var properties = {};
191
+ params.forEach(function (item) {
192
+ properties[item.name] = { $ref: createId(keys.concat(item.name)) };
193
+ });
194
+ return [paths, {
195
+ id: createId(paths),
196
+ type: 'object',
197
+ properties: properties,
198
+ required: params.filter(function (item) { return item.required === true; }).map(function (item) { return item.name; }),
199
+ }];
200
+ }
201
+ /// for OpenAPI V2 only
202
+ var setSubIdToResponsesV2 = function (responses, keys) { return setSubIdToAnyObject(setSubIdToResponseV2, responses, keys); };
203
+ function setSubIdToResponseV2(response, keys) {
204
+ if (response == null) {
205
+ return;
206
+ }
207
+ if ('schema' in response) {
208
+ var s = response.schema;
209
+ if (s != null && s.type === 'file') {
210
+ return;
211
+ }
212
+ setSubId(s, keys);
213
+ }
214
+ }
215
+ function setSubIdToOperationV2(ops, keys) {
216
+ if (ops == null) {
217
+ return;
218
+ }
219
+ var operationId = ops.operationId;
220
+ if (operationId) {
221
+ keys = [keys[0], convertKeyToTypeName(operationId)];
222
+ }
223
+ setSubIdToParameters(ops.parameters, keys.concat('parameters'));
224
+ setSubIdToResponsesV2(ops.responses, keys.concat('responses'));
225
+ }
226
+ var setSubIdToPathsV2 = function (paths, keys) { return setSubIdToAnyObject(setSubIdToPathItemV2, paths, keys); };
227
+ function setSubIdToPathItemV2(pathItem, keys) {
228
+ setSubIdToParameters(pathItem.parameters, keys.concat('parameters'));
229
+ setSubIdToOperationV2(pathItem.get, keys.concat('get'));
230
+ setSubIdToOperationV2(pathItem.put, keys.concat('put'));
231
+ setSubIdToOperationV2(pathItem.post, keys.concat('post'));
232
+ setSubIdToOperationV2(pathItem.delete, keys.concat('delete'));
233
+ setSubIdToOperationV2(pathItem.options, keys.concat('options'));
234
+ setSubIdToOperationV2(pathItem.head, keys.concat('head'));
235
+ setSubIdToOperationV2(pathItem.patch, keys.concat('patch'));
236
+ }
237
+ /// for OpenAPI V3 only
238
+ function setSubIdToMediaTypes(types, keys) {
239
+ if (types == null) {
240
+ return;
241
+ }
242
+ var mime = 'application/json';
243
+ var mt = types[mime];
244
+ if (mt != null) {
245
+ setSubId(mt.schema, keys);
246
+ }
247
+ }
248
+ var setSubIdToRequestBodies = function (bodys, keys) { return setSubIdToAnyObject(setSubIdToRequestBody, bodys, keys); };
249
+ function setSubIdToRequestBody(body, keys) {
250
+ if (body == null) {
251
+ return;
252
+ }
253
+ if ('content' in body) {
254
+ setSubIdToMediaTypes(body.content, keys);
255
+ }
256
+ }
257
+ var setSubIdToResponsesV3 = function (responses, keys) { return setSubIdToAnyObject(setSubIdToResponseV3, responses, keys); };
258
+ function setSubIdToResponseV3(response, keys) {
259
+ if (response == null) {
260
+ return;
261
+ }
262
+ if ('content' in response) {
263
+ setSubIdToMediaTypes(response.content, keys);
264
+ }
265
+ }
266
+ function setSubIdToOperationV3(ops, keys) {
267
+ if (ops == null) {
268
+ return;
269
+ }
270
+ var operationId = ops.operationId;
271
+ if (operationId) {
272
+ keys = [keys[0], convertKeyToTypeName(operationId)];
273
+ }
274
+ setSubIdToParameters(ops.parameters, keys.concat('parameters'));
275
+ setSubIdToRequestBody(ops.requestBody, keys.concat('requestBody'));
276
+ setSubIdToResponsesV3(ops.responses, keys.concat('responses'));
277
+ }
278
+ var setSubIdToPathsV3 = function (paths, keys) { return setSubIdToAnyObject(setSubIdToPathItemV3, paths, keys); };
279
+ function setSubIdToPathItemV3(pathItem, keys) {
280
+ setSubIdToParameters(pathItem.parameters, keys.concat('parameters'));
281
+ setSubIdToOperationV3(pathItem.get, keys.concat('get'));
282
+ setSubIdToOperationV3(pathItem.put, keys.concat('put'));
283
+ setSubIdToOperationV3(pathItem.post, keys.concat('post'));
284
+ setSubIdToOperationV3(pathItem.delete, keys.concat('delete'));
285
+ setSubIdToOperationV3(pathItem.options, keys.concat('options'));
286
+ setSubIdToOperationV3(pathItem.head, keys.concat('head'));
287
+ setSubIdToOperationV3(pathItem.patch, keys.concat('patch'));
288
+ setSubIdToOperationV3(pathItem.trace, keys.concat('trace'));
289
+ }
290
+ function setSubIdToObject(obj, paths) {
291
+ if (obj == null) {
292
+ return;
293
+ }
294
+ Object.keys(obj).forEach(function (key) {
295
+ var sub = obj[key];
296
+ setSubId(sub, paths.concat(key));
297
+ });
298
+ }
299
+ function setSubId(s, paths) {
300
+ if (typeof s !== 'object') {
301
+ return;
302
+ }
303
+ if (typeof s.$ref === 'string') {
304
+ var schemaId = new schemaId_1.default(s.$ref);
305
+ s.$ref = schemaId.getAbsoluteId();
306
+ onFoundReference(schemaId);
307
+ }
308
+ var id = createId(paths);
309
+ setId(schema.type, s, id);
310
+ walk(s, paths, []);
311
+ }
312
+ if ('swagger' in openApi) {
313
+ setSubIdToObject(openApi.definitions, ['definitions']);
314
+ setSubIdToParameterObject(openApi.parameters, ['parameters']);
315
+ setSubIdToResponsesV2(openApi.responses, ['responses']);
316
+ setSubIdToPathsV2(openApi.paths, ['paths']);
317
+ }
318
+ else {
319
+ if (openApi.components) {
320
+ var components = openApi.components;
321
+ setSubIdToObject(components.schemas, ['components', 'schemas']);
322
+ setSubIdToResponsesV3(components.responses, ['components', 'responses']);
323
+ setSubIdToParameterObject(components.parameters, ['components', 'parameters']);
324
+ setSubIdToRequestBodies(components.requestBodies, ['components', 'requestBodies']);
325
+ }
326
+ if (openApi.paths) {
327
+ setSubIdToPathsV3(openApi.paths, ['paths']);
328
+ }
329
+ }
330
+ }
331
+ if (schema.openApiVersion != null) {
332
+ var obj = schema.content;
333
+ searchOpenApiSubSchema(obj);
334
+ return;
335
+ }
336
+ walk(schema.content, ['#'], []);
337
+ }
338
+ exports.searchAllSubSchema = searchAllSubSchema;
339
+ function selectSchemaType(content) {
340
+ if (content.$schema) {
341
+ var schema = content.$schema;
342
+ var match = schema.match(/http\:\/\/json-schema\.org\/draft-(\d+)\/schema#?/);
343
+ if (match) {
344
+ var version = Number(match[1]);
345
+ if (version <= 4) {
346
+ return { type: 'Draft04' };
347
+ }
348
+ else {
349
+ return { type: 'Draft07' };
350
+ }
351
+ }
352
+ }
353
+ if (content.swagger === '2.0') {
354
+ return {
355
+ type: 'Draft04',
356
+ openApiVersion: 2,
357
+ };
358
+ }
359
+ if (content.openapi) {
360
+ var openapi = content.openapi;
361
+ if (/^3\.\d+\.\d+$/.test(openapi)) {
362
+ return {
363
+ type: 'Draft07',
364
+ openApiVersion: 3,
365
+ };
366
+ }
367
+ }
368
+ // fallback to old version JSON Schema
369
+ return { type: 'Draft04' };
370
+ }
371
+ //# sourceMappingURL=jsonSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonSchema.js","sourceRoot":"","sources":["jsonSchema.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ declare namespace JsonSchemaOrg {
11
11
  description?: string;
12
12
  example?: string;
13
13
  default?: any;
14
+ nullable?: boolean;
14
15
  multipleOf?: number;
15
16
  maximum?: number;
16
17
  exclusiveMaximum?: boolean;
@@ -8,6 +8,7 @@ declare namespace JsonSchemaOrg {
8
8
  title?: string;
9
9
  description?: string;
10
10
  default?: any;
11
+ nullable?: boolean;
11
12
  readOnly?: boolean;
12
13
  examples?: any[];
13
14
  multipleOf?: number;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=openApiV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openApiV2.js","sourceRoot":"","sources":["openApiV2.ts"],"names":[],"mappings":""}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ require("cross-fetch/polyfill");
5
+ var debug_1 = tslib_1.__importDefault(require("debug"));
6
+ var utils_1 = require("../utils");
7
+ var jsonSchema_1 = require("./jsonSchema");
8
+ var schemaId_1 = tslib_1.__importDefault(require("./schemaId"));
9
+ var debug = debug_1.default('dtsgen');
10
+ var ReferenceResolver = /** @class */ (function () {
11
+ function ReferenceResolver() {
12
+ this.schemaCache = new Map();
13
+ this.referenceCache = new Map();
14
+ }
15
+ ReferenceResolver.prototype.dereference = function (refId) {
16
+ var result = this.referenceCache.get(refId);
17
+ if (result == null) {
18
+ throw new Error('Target reference is not found: ' + refId);
19
+ }
20
+ return result;
21
+ };
22
+ ReferenceResolver.prototype.getAllRegisteredSchema = function () {
23
+ return this.schemaCache.values();
24
+ };
25
+ ReferenceResolver.prototype.resolve = function () {
26
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
27
+ var e_1, _a, error, _b, _c, _d, key, schema, id, fileId, result, refSchema, e_2, rootSchema, targetSchema, e_1_1;
28
+ return tslib_1.__generator(this, function (_e) {
29
+ switch (_e.label) {
30
+ case 0:
31
+ debug("resolve reference: reference schema count=" + this.referenceCache.size + ".");
32
+ error = [];
33
+ _e.label = 1;
34
+ case 1:
35
+ _e.trys.push([1, 10, 11, 12]);
36
+ _b = tslib_1.__values(this.referenceCache.entries()), _c = _b.next();
37
+ _e.label = 2;
38
+ case 2:
39
+ if (!!_c.done) return [3 /*break*/, 9];
40
+ _d = tslib_1.__read(_c.value, 2), key = _d[0], schema = _d[1];
41
+ if (schema != null) {
42
+ return [3 /*break*/, 8];
43
+ }
44
+ id = new schemaId_1.default(key);
45
+ fileId = id.getFileId();
46
+ result = this.schemaCache.get(id.getAbsoluteId());
47
+ if (!(result == null)) return [3 /*break*/, 7];
48
+ refSchema = this.schemaCache.get(fileId);
49
+ debug("get from schema cache, fileId=" + fileId + ", exists=" + (refSchema != null) + ", " + id.getAbsoluteId());
50
+ if (!(refSchema == null && id.isFetchable())) return [3 /*break*/, 6];
51
+ _e.label = 3;
52
+ case 3:
53
+ _e.trys.push([3, 5, , 6]);
54
+ debug("fetch remote schema: id=[" + fileId + "].");
55
+ return [4 /*yield*/, this.registerRemoteSchema(fileId)];
56
+ case 4:
57
+ _e.sent();
58
+ return [3 /*break*/, 6];
59
+ case 5:
60
+ e_2 = _e.sent();
61
+ error.push("Fail to fetch the $ref target: " + id.getAbsoluteId() + ", " + e_2);
62
+ return [3 /*break*/, 8];
63
+ case 6:
64
+ result = this.schemaCache.get(id.getAbsoluteId());
65
+ _e.label = 7;
66
+ case 7:
67
+ debug("resolve reference: ref=[" + id.getAbsoluteId() + "]");
68
+ if (result != null) {
69
+ this.referenceCache.set(id.getAbsoluteId(), result);
70
+ }
71
+ else {
72
+ if (id.existsJsonPointerHash()) {
73
+ rootSchema = this.searchParentSchema(id);
74
+ if (rootSchema == null) {
75
+ error.push("The $ref targets root is not found: " + id.getAbsoluteId());
76
+ return [3 /*break*/, 8];
77
+ }
78
+ targetSchema = jsonSchema_1.getSubSchema(rootSchema, id.getJsonPointerHash(), id);
79
+ this.addSchema(targetSchema);
80
+ this.registerSchema(targetSchema);
81
+ this.referenceCache.set(id.getAbsoluteId(), targetSchema);
82
+ }
83
+ else {
84
+ error.push("The $ref target is not found: " + id.getAbsoluteId());
85
+ return [3 /*break*/, 8];
86
+ }
87
+ }
88
+ _e.label = 8;
89
+ case 8:
90
+ _c = _b.next();
91
+ return [3 /*break*/, 2];
92
+ case 9: return [3 /*break*/, 12];
93
+ case 10:
94
+ e_1_1 = _e.sent();
95
+ e_1 = { error: e_1_1 };
96
+ return [3 /*break*/, 12];
97
+ case 11:
98
+ try {
99
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
100
+ }
101
+ finally { if (e_1) throw e_1.error; }
102
+ return [7 /*endfinally*/];
103
+ case 12:
104
+ if (error.length > 0) {
105
+ throw new Error(error.join('\n'));
106
+ }
107
+ return [2 /*return*/];
108
+ }
109
+ });
110
+ });
111
+ };
112
+ ReferenceResolver.prototype.searchParentSchema = function (id) {
113
+ var e_3, _a;
114
+ var fileId = id.getFileId();
115
+ var rootSchema = this.schemaCache.get(fileId);
116
+ if (rootSchema != null) {
117
+ return rootSchema;
118
+ }
119
+ var key = id.getAbsoluteId();
120
+ try {
121
+ for (var _b = tslib_1.__values(this.schemaCache.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {
122
+ var k = _c.value;
123
+ if (key.startsWith(k)) {
124
+ var s = this.schemaCache.get(k);
125
+ if (s != null && s.rootSchema != null) {
126
+ return s.rootSchema;
127
+ }
128
+ }
129
+ }
130
+ }
131
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
132
+ finally {
133
+ try {
134
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
135
+ }
136
+ finally { if (e_3) throw e_3.error; }
137
+ }
138
+ return;
139
+ };
140
+ ReferenceResolver.prototype.registerRemoteSchema = function (url) {
141
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
142
+ var res, body, content, schema;
143
+ return tslib_1.__generator(this, function (_a) {
144
+ switch (_a.label) {
145
+ case 0: return [4 /*yield*/, fetch(url)];
146
+ case 1:
147
+ res = _a.sent();
148
+ return [4 /*yield*/, res.text()];
149
+ case 2:
150
+ body = _a.sent();
151
+ if (!res.ok) {
152
+ throw new Error("Error on fetch from url(" + url + "): " + res.status + ", " + body);
153
+ }
154
+ content = utils_1.parseFileContent(body, url);
155
+ schema = jsonSchema_1.parseSchema(content, url);
156
+ this.registerSchema(schema);
157
+ return [2 /*return*/];
158
+ }
159
+ });
160
+ });
161
+ };
162
+ ReferenceResolver.prototype.registerSchema = function (schema) {
163
+ var _this = this;
164
+ debug("register schema: schemaId=[" + schema.id.getAbsoluteId() + "].");
165
+ jsonSchema_1.searchAllSubSchema(schema, function (subSchema) {
166
+ _this.addSchema(subSchema);
167
+ }, function (refId) {
168
+ _this.addReference(refId);
169
+ });
170
+ };
171
+ ReferenceResolver.prototype.addSchema = function (schema) {
172
+ var id = schema.id;
173
+ var key = id.getAbsoluteId();
174
+ if (!this.schemaCache.has(key)) {
175
+ debug(" add schema: id=" + key);
176
+ this.schemaCache.set(key, schema);
177
+ if (schema.rootSchema == null) {
178
+ var fileId = id.getFileId();
179
+ if (!this.schemaCache.has(fileId)) {
180
+ this.schemaCache.set(fileId, schema);
181
+ }
182
+ }
183
+ }
184
+ };
185
+ ReferenceResolver.prototype.addReference = function (refId) {
186
+ if (!this.referenceCache.has(refId.getAbsoluteId())) {
187
+ debug(" add reference: id=" + refId.getAbsoluteId());
188
+ this.referenceCache.set(refId.getAbsoluteId(), undefined);
189
+ }
190
+ };
191
+ ReferenceResolver.prototype.clear = function () {
192
+ debug('clear resolver cache.');
193
+ this.schemaCache.clear();
194
+ this.referenceCache.clear();
195
+ };
196
+ return ReferenceResolver;
197
+ }());
198
+ exports.default = ReferenceResolver;
199
+ //# sourceMappingURL=referenceResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referenceResolver.js","sourceRoot":"","sources":["referenceResolver.ts"],"names":[],"mappings":"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"}