@depup/angular-devkit__core 21.2.2-depup.0
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.
- package/LICENSE +21 -0
- package/README.md +25 -0
- package/changes.json +5 -0
- package/index.d.ts +8 -0
- package/index.js +25 -0
- package/index.js.map +1 -0
- package/node/cli-logger.d.ts +15 -0
- package/node/cli-logger.js +58 -0
- package/node/cli-logger.js.map +1 -0
- package/node/host.d.ts +43 -0
- package/node/host.js +211 -0
- package/node/host.js.map +1 -0
- package/node/index.d.ts +9 -0
- package/node/index.js +26 -0
- package/node/index.js.map +1 -0
- package/node/testing/index.d.ts +20 -0
- package/node/testing/index.js +90 -0
- package/node/testing/index.js.map +1 -0
- package/package.json +76 -0
- package/src/exception.d.ts +25 -0
- package/src/exception.js +48 -0
- package/src/exception.js.map +1 -0
- package/src/index.d.ts +15 -0
- package/src/index.js +57 -0
- package/src/index.js.map +1 -0
- package/src/json/index.d.ts +10 -0
- package/src/json/index.js +50 -0
- package/src/json/index.js.map +1 -0
- package/src/json/schema/index.d.ts +15 -0
- package/src/json/schema/index.js +55 -0
- package/src/json/schema/index.js.map +1 -0
- package/src/json/schema/interface.d.ts +84 -0
- package/src/json/schema/interface.js +10 -0
- package/src/json/schema/interface.js.map +1 -0
- package/src/json/schema/pointer.d.ts +11 -0
- package/src/json/schema/pointer.js +39 -0
- package/src/json/schema/pointer.js.map +1 -0
- package/src/json/schema/registry.d.ts +79 -0
- package/src/json/schema/registry.js +565 -0
- package/src/json/schema/registry.js.map +1 -0
- package/src/json/schema/schema.d.ts +22 -0
- package/src/json/schema/schema.js +52 -0
- package/src/json/schema/schema.js.map +1 -0
- package/src/json/schema/transforms.d.ts +12 -0
- package/src/json/schema/transforms.js +101 -0
- package/src/json/schema/transforms.js.map +1 -0
- package/src/json/schema/utility.d.ts +9 -0
- package/src/json/schema/utility.js +88 -0
- package/src/json/schema/utility.js.map +1 -0
- package/src/json/schema/visitor.d.ts +34 -0
- package/src/json/schema/visitor.js +147 -0
- package/src/json/schema/visitor.js.map +1 -0
- package/src/json/utils.d.ts +15 -0
- package/src/json/utils.js +18 -0
- package/src/json/utils.js.map +1 -0
- package/src/logger/indent.d.ts +11 -0
- package/src/logger/indent.js +41 -0
- package/src/logger/indent.js.map +1 -0
- package/src/logger/index.d.ts +12 -0
- package/src/logger/index.js +29 -0
- package/src/logger/index.js.map +1 -0
- package/src/logger/level.d.ts +28 -0
- package/src/logger/level.js +51 -0
- package/src/logger/level.js.map +1 -0
- package/src/logger/logger.d.ts +55 -0
- package/src/logger/logger.js +123 -0
- package/src/logger/logger.js.map +1 -0
- package/src/logger/null-logger.d.ts +12 -0
- package/src/logger/null-logger.js +31 -0
- package/src/logger/null-logger.js.map +1 -0
- package/src/logger/transform-logger.d.ts +12 -0
- package/src/logger/transform-logger.js +19 -0
- package/src/logger/transform-logger.js.map +1 -0
- package/src/utils/index.d.ts +15 -0
- package/src/utils/index.js +56 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/lang.d.ts +11 -0
- package/src/utils/lang.js +21 -0
- package/src/utils/lang.js.map +1 -0
- package/src/utils/literals.d.ts +15 -0
- package/src/utils/literals.js +59 -0
- package/src/utils/literals.js.map +1 -0
- package/src/utils/object.d.ts +8 -0
- package/src/utils/object.js +37 -0
- package/src/utils/object.js.map +1 -0
- package/src/utils/partially-ordered-set.d.ts +38 -0
- package/src/utils/partially-ordered-set.js +145 -0
- package/src/utils/partially-ordered-set.js.map +1 -0
- package/src/utils/priority-queue.d.ts +19 -0
- package/src/utils/priority-queue.js +50 -0
- package/src/utils/priority-queue.js.map +1 -0
- package/src/utils/strings.d.ts +112 -0
- package/src/utils/strings.js +179 -0
- package/src/utils/strings.js.map +1 -0
- package/src/utils/template.d.ts +89 -0
- package/src/utils/template.js +260 -0
- package/src/utils/template.js.map +1 -0
- package/src/virtual-fs/host/alias.d.ts +60 -0
- package/src/virtual-fs/host/alias.js +84 -0
- package/src/virtual-fs/host/alias.js.map +1 -0
- package/src/virtual-fs/host/buffer.d.ts +10 -0
- package/src/virtual-fs/host/buffer.js +22 -0
- package/src/virtual-fs/host/buffer.js.map +1 -0
- package/src/virtual-fs/host/create.d.ts +21 -0
- package/src/virtual-fs/host/create.js +55 -0
- package/src/virtual-fs/host/create.js.map +1 -0
- package/src/virtual-fs/host/empty.d.ts +19 -0
- package/src/virtual-fs/host/empty.js +38 -0
- package/src/virtual-fs/host/empty.js.map +1 -0
- package/src/virtual-fs/host/index.d.ts +21 -0
- package/src/virtual-fs/host/index.js +61 -0
- package/src/virtual-fs/host/index.js.map +1 -0
- package/src/virtual-fs/host/interface.d.ts +53 -0
- package/src/virtual-fs/host/interface.js +18 -0
- package/src/virtual-fs/host/interface.js.map +1 -0
- package/src/virtual-fs/host/memory.d.ts +49 -0
- package/src/virtual-fs/host/memory.js +332 -0
- package/src/virtual-fs/host/memory.js.map +1 -0
- package/src/virtual-fs/host/pattern.d.ts +17 -0
- package/src/virtual-fs/host/pattern.js +35 -0
- package/src/virtual-fs/host/pattern.js.map +1 -0
- package/src/virtual-fs/host/record.d.ts +92 -0
- package/src/virtual-fs/host/record.js +315 -0
- package/src/virtual-fs/host/record.js.map +1 -0
- package/src/virtual-fs/host/resolver.d.ts +30 -0
- package/src/virtual-fs/host/resolver.js +57 -0
- package/src/virtual-fs/host/resolver.js.map +1 -0
- package/src/virtual-fs/host/safe.d.ts +25 -0
- package/src/virtual-fs/host/safe.js +46 -0
- package/src/virtual-fs/host/safe.js.map +1 -0
- package/src/virtual-fs/host/scoped.d.ts +15 -0
- package/src/virtual-fs/host/scoped.js +24 -0
- package/src/virtual-fs/host/scoped.js.map +1 -0
- package/src/virtual-fs/host/sync.d.ts +34 -0
- package/src/virtual-fs/host/sync.js +93 -0
- package/src/virtual-fs/host/sync.js.map +1 -0
- package/src/virtual-fs/host/test.d.ts +48 -0
- package/src/virtual-fs/host/test.js +119 -0
- package/src/virtual-fs/host/test.js.map +1 -0
- package/src/virtual-fs/index.d.ts +10 -0
- package/src/virtual-fs/index.js +50 -0
- package/src/virtual-fs/index.js.map +1 -0
- package/src/virtual-fs/path.d.ts +111 -0
- package/src/virtual-fs/path.js +286 -0
- package/src/virtual-fs/path.js.map +1 -0
- package/src/workspace/core.d.ts +61 -0
- package/src/workspace/core.js +133 -0
- package/src/workspace/core.js.map +1 -0
- package/src/workspace/definitions.d.ts +63 -0
- package/src/workspace/definitions.js +169 -0
- package/src/workspace/definitions.js.map +1 -0
- package/src/workspace/host.d.ts +15 -0
- package/src/workspace/host.js +43 -0
- package/src/workspace/host.js.map +1 -0
- package/src/workspace/index.d.ts +10 -0
- package/src/workspace/index.js +32 -0
- package/src/workspace/index.js.map +1 -0
- package/src/workspace/json/metadata.d.ts +40 -0
- package/src/workspace/json/metadata.js +60 -0
- package/src/workspace/json/metadata.js.map +1 -0
- package/src/workspace/json/reader.d.ts +14 -0
- package/src/workspace/json/reader.js +231 -0
- package/src/workspace/json/reader.js.map +1 -0
- package/src/workspace/json/utilities.d.ts +14 -0
- package/src/workspace/json/utilities.js +113 -0
- package/src/workspace/json/utilities.js.map +1 -0
- package/src/workspace/json/writer.d.ts +12 -0
- package/src/workspace/json/writer.js +145 -0
- package/src/workspace/json/writer.js.map +1 -0
|
@@ -0,0 +1,565 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
+
};
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.CoreSchemaRegistry = exports.SchemaValidationException = void 0;
|
|
47
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
48
|
+
const ajv_formats_1 = __importDefault(require("ajv-formats"));
|
|
49
|
+
const http = __importStar(require("node:http"));
|
|
50
|
+
const https = __importStar(require("node:https"));
|
|
51
|
+
const Url = __importStar(require("node:url"));
|
|
52
|
+
const rxjs_1 = require("rxjs");
|
|
53
|
+
const exception_1 = require("../../exception");
|
|
54
|
+
const utils_1 = require("../../utils");
|
|
55
|
+
const utils_2 = require("../utils");
|
|
56
|
+
const utility_1 = require("./utility");
|
|
57
|
+
const visitor_1 = require("./visitor");
|
|
58
|
+
class SchemaValidationException extends exception_1.BaseException {
|
|
59
|
+
errors;
|
|
60
|
+
constructor(errors, baseMessage = 'Schema validation failed with the following errors:') {
|
|
61
|
+
if (!errors || errors.length === 0) {
|
|
62
|
+
super('Schema validation failed.');
|
|
63
|
+
this.errors = [];
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const messages = SchemaValidationException.createMessages(errors);
|
|
67
|
+
super(`${baseMessage}\n ${messages.join('\n ')}`);
|
|
68
|
+
this.errors = errors;
|
|
69
|
+
}
|
|
70
|
+
static createMessages(errors) {
|
|
71
|
+
if (!errors || errors.length === 0) {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
const messages = errors.map((err) => {
|
|
75
|
+
let message = `Data path ${JSON.stringify(err.instancePath)} ${err.message}`;
|
|
76
|
+
if (err.params) {
|
|
77
|
+
switch (err.keyword) {
|
|
78
|
+
case 'additionalProperties':
|
|
79
|
+
message += `(${err.params.additionalProperty})`;
|
|
80
|
+
break;
|
|
81
|
+
case 'enum':
|
|
82
|
+
message += `. Allowed values are: ${err.params.allowedValues
|
|
83
|
+
?.map((v) => `"${v}"`)
|
|
84
|
+
.join(', ')}`;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return message + '.';
|
|
89
|
+
});
|
|
90
|
+
return messages;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.SchemaValidationException = SchemaValidationException;
|
|
94
|
+
class CoreSchemaRegistry {
|
|
95
|
+
_ajv;
|
|
96
|
+
_uriCache = new Map();
|
|
97
|
+
_uriHandlers = new Set();
|
|
98
|
+
_pre = new utils_1.PartiallyOrderedSet();
|
|
99
|
+
_post = new utils_1.PartiallyOrderedSet();
|
|
100
|
+
_currentCompilationSchemaInfo;
|
|
101
|
+
_smartDefaultKeyword = false;
|
|
102
|
+
_promptProvider;
|
|
103
|
+
_sourceMap = new Map();
|
|
104
|
+
constructor(formats = []) {
|
|
105
|
+
this._ajv = new ajv_1.default({
|
|
106
|
+
strict: false,
|
|
107
|
+
loadSchema: (uri) => this._fetch(uri),
|
|
108
|
+
passContext: true,
|
|
109
|
+
});
|
|
110
|
+
(0, ajv_formats_1.default)(this._ajv);
|
|
111
|
+
for (const format of formats) {
|
|
112
|
+
this.addFormat(format);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async _fetch(uri) {
|
|
116
|
+
const maybeSchema = this._uriCache.get(uri);
|
|
117
|
+
if (maybeSchema) {
|
|
118
|
+
return maybeSchema;
|
|
119
|
+
}
|
|
120
|
+
// Try all handlers, one after the other.
|
|
121
|
+
for (const handler of this._uriHandlers) {
|
|
122
|
+
let handlerResult = handler(uri);
|
|
123
|
+
if (handlerResult === null || handlerResult === undefined) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if ((0, rxjs_1.isObservable)(handlerResult)) {
|
|
127
|
+
handlerResult = (0, rxjs_1.lastValueFrom)(handlerResult);
|
|
128
|
+
}
|
|
129
|
+
const value = await handlerResult;
|
|
130
|
+
this._uriCache.set(uri, value);
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
// If none are found, handle using http client.
|
|
134
|
+
return new Promise((resolve, reject) => {
|
|
135
|
+
const url = new Url.URL(uri);
|
|
136
|
+
const client = url.protocol === 'https:' ? https : http;
|
|
137
|
+
client.get(url, (res) => {
|
|
138
|
+
if (!res.statusCode || res.statusCode >= 300) {
|
|
139
|
+
// Consume the rest of the data to free memory.
|
|
140
|
+
res.resume();
|
|
141
|
+
reject(new Error(`Request failed. Status Code: ${res.statusCode}`));
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
res.setEncoding('utf8');
|
|
145
|
+
let data = '';
|
|
146
|
+
res.on('data', (chunk) => {
|
|
147
|
+
data += chunk;
|
|
148
|
+
});
|
|
149
|
+
res.on('end', () => {
|
|
150
|
+
try {
|
|
151
|
+
const json = JSON.parse(data);
|
|
152
|
+
this._uriCache.set(uri, json);
|
|
153
|
+
resolve(json);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
reject(err);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Add a transformation step before the validation of any Json.
|
|
165
|
+
* @param {JsonVisitor} visitor The visitor to transform every value.
|
|
166
|
+
* @param {JsonVisitor[]} deps A list of other visitors to run before.
|
|
167
|
+
*/
|
|
168
|
+
addPreTransform(visitor, deps) {
|
|
169
|
+
this._pre.add(visitor, deps);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Add a transformation step after the validation of any Json. The JSON will not be validated
|
|
173
|
+
* after the POST, so if transformations are not compatible with the Schema it will not result
|
|
174
|
+
* in an error.
|
|
175
|
+
* @param {JsonVisitor} visitor The visitor to transform every value.
|
|
176
|
+
* @param {JsonVisitor[]} deps A list of other visitors to run before.
|
|
177
|
+
*/
|
|
178
|
+
addPostTransform(visitor, deps) {
|
|
179
|
+
this._post.add(visitor, deps);
|
|
180
|
+
}
|
|
181
|
+
_resolver(ref, validate) {
|
|
182
|
+
if (!validate || !ref) {
|
|
183
|
+
return {};
|
|
184
|
+
}
|
|
185
|
+
const schema = validate.schemaEnv.root.schema;
|
|
186
|
+
const id = typeof schema === 'object' ? schema.$id : null;
|
|
187
|
+
let fullReference = ref;
|
|
188
|
+
if (typeof id === 'string') {
|
|
189
|
+
fullReference = Url.resolve(id, ref);
|
|
190
|
+
if (ref.startsWith('#')) {
|
|
191
|
+
fullReference = id + fullReference;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const resolvedSchema = this._ajv.getSchema(fullReference);
|
|
195
|
+
return {
|
|
196
|
+
context: resolvedSchema?.schemaEnv.validate,
|
|
197
|
+
schema: resolvedSchema?.schema,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Flatten the Schema, resolving and replacing all the refs. Makes it into a synchronous schema
|
|
202
|
+
* that is also easier to traverse. Does not cache the result.
|
|
203
|
+
*
|
|
204
|
+
* Producing a flatten schema document does not in all cases produce a schema with identical behavior to the original.
|
|
205
|
+
* See: https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.appendix.B.2
|
|
206
|
+
*
|
|
207
|
+
* @param schema The schema or URI to flatten.
|
|
208
|
+
* @returns An Observable of the flattened schema object.
|
|
209
|
+
* @private since 11.2 without replacement.
|
|
210
|
+
*/
|
|
211
|
+
async ɵflatten(schema) {
|
|
212
|
+
this._ajv.removeSchema(schema);
|
|
213
|
+
this._currentCompilationSchemaInfo = undefined;
|
|
214
|
+
const validate = await this._ajv.compileAsync(schema);
|
|
215
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
216
|
+
const self = this;
|
|
217
|
+
function visitor(current, pointer, parentSchema, index) {
|
|
218
|
+
if (current &&
|
|
219
|
+
parentSchema &&
|
|
220
|
+
index &&
|
|
221
|
+
(0, utils_2.isJsonObject)(current) &&
|
|
222
|
+
Object.prototype.hasOwnProperty.call(current, '$ref') &&
|
|
223
|
+
typeof current['$ref'] == 'string') {
|
|
224
|
+
const resolved = self._resolver(current['$ref'], validate);
|
|
225
|
+
if (resolved.schema) {
|
|
226
|
+
parentSchema[index] = resolved.schema;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
const schemaCopy = (0, utils_1.deepCopy)(validate.schema);
|
|
231
|
+
(0, visitor_1.visitJsonSchema)(schemaCopy, visitor);
|
|
232
|
+
return schemaCopy;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Compile and return a validation function for the Schema.
|
|
236
|
+
*
|
|
237
|
+
* @param schema The schema to validate. If a string, will fetch the schema before compiling it
|
|
238
|
+
* (using schema as a URI).
|
|
239
|
+
*/
|
|
240
|
+
async compile(schema) {
|
|
241
|
+
const validate = await this._compile(schema);
|
|
242
|
+
return (value, options) => validate(value, options);
|
|
243
|
+
}
|
|
244
|
+
async _compile(schema) {
|
|
245
|
+
if (typeof schema === 'boolean') {
|
|
246
|
+
return async (data) => ({ success: schema, data });
|
|
247
|
+
}
|
|
248
|
+
const schemaInfo = {
|
|
249
|
+
smartDefaultRecord: new Map(),
|
|
250
|
+
promptDefinitions: [],
|
|
251
|
+
};
|
|
252
|
+
this._ajv.removeSchema(schema);
|
|
253
|
+
let validator;
|
|
254
|
+
try {
|
|
255
|
+
this._currentCompilationSchemaInfo = schemaInfo;
|
|
256
|
+
validator = this._ajv.compile(schema);
|
|
257
|
+
}
|
|
258
|
+
catch (e) {
|
|
259
|
+
// This should eventually be refactored so that we we handle race condition where the same schema is validated at the same time.
|
|
260
|
+
if (!(e instanceof ajv_1.default.MissingRefError)) {
|
|
261
|
+
throw e;
|
|
262
|
+
}
|
|
263
|
+
validator = await this._ajv.compileAsync(schema);
|
|
264
|
+
}
|
|
265
|
+
finally {
|
|
266
|
+
this._currentCompilationSchemaInfo = undefined;
|
|
267
|
+
}
|
|
268
|
+
return async (data, options) => {
|
|
269
|
+
const validationOptions = {
|
|
270
|
+
withPrompts: true,
|
|
271
|
+
applyPostTransforms: true,
|
|
272
|
+
applyPreTransforms: true,
|
|
273
|
+
...options,
|
|
274
|
+
};
|
|
275
|
+
const validationContext = {
|
|
276
|
+
promptFieldsWithValue: new Set(),
|
|
277
|
+
};
|
|
278
|
+
// Apply pre-validation transforms
|
|
279
|
+
if (validationOptions.applyPreTransforms) {
|
|
280
|
+
for (const visitor of this._pre.values()) {
|
|
281
|
+
data = await (0, rxjs_1.lastValueFrom)((0, visitor_1.visitJson)(data, visitor, schema, this._resolver.bind(this), validator));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Apply smart defaults
|
|
285
|
+
await this._applySmartDefaults(data, schemaInfo.smartDefaultRecord);
|
|
286
|
+
// Apply prompts
|
|
287
|
+
if (validationOptions.withPrompts) {
|
|
288
|
+
const visitor = (value, pointer) => {
|
|
289
|
+
if (value !== undefined) {
|
|
290
|
+
validationContext.promptFieldsWithValue.add(pointer);
|
|
291
|
+
}
|
|
292
|
+
return value;
|
|
293
|
+
};
|
|
294
|
+
if (typeof schema === 'object') {
|
|
295
|
+
await (0, rxjs_1.lastValueFrom)((0, visitor_1.visitJson)(data, visitor, schema, this._resolver.bind(this), validator));
|
|
296
|
+
}
|
|
297
|
+
const definitions = schemaInfo.promptDefinitions.filter((def) => !validationContext.promptFieldsWithValue.has(def.id));
|
|
298
|
+
if (definitions.length > 0) {
|
|
299
|
+
await this._applyPrompts(data, definitions);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Validate using ajv
|
|
303
|
+
try {
|
|
304
|
+
// eslint-disable-next-line @typescript-eslint/await-thenable
|
|
305
|
+
const success = await validator.call(validationContext, data);
|
|
306
|
+
if (!success) {
|
|
307
|
+
return { data, success, errors: validator.errors ?? [] };
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
if (error instanceof ajv_1.default.ValidationError) {
|
|
312
|
+
return { data, success: false, errors: error.errors };
|
|
313
|
+
}
|
|
314
|
+
throw error;
|
|
315
|
+
}
|
|
316
|
+
// Apply post-validation transforms
|
|
317
|
+
if (validationOptions.applyPostTransforms) {
|
|
318
|
+
for (const visitor of this._post.values()) {
|
|
319
|
+
data = await (0, rxjs_1.lastValueFrom)((0, visitor_1.visitJson)(data, visitor, schema, this._resolver.bind(this), validator));
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return { data, success: true };
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
addFormat(format) {
|
|
326
|
+
this._ajv.addFormat(format.name, format.formatter);
|
|
327
|
+
}
|
|
328
|
+
addSmartDefaultProvider(source, provider) {
|
|
329
|
+
if (this._sourceMap.has(source)) {
|
|
330
|
+
throw new Error(source);
|
|
331
|
+
}
|
|
332
|
+
this._sourceMap.set(source, provider);
|
|
333
|
+
if (!this._smartDefaultKeyword) {
|
|
334
|
+
this._smartDefaultKeyword = true;
|
|
335
|
+
this._ajv.addKeyword({
|
|
336
|
+
keyword: '$default',
|
|
337
|
+
errors: false,
|
|
338
|
+
valid: true,
|
|
339
|
+
compile: (schema, _parentSchema, it) => {
|
|
340
|
+
const compilationSchemInfo = this._currentCompilationSchemaInfo;
|
|
341
|
+
if (compilationSchemInfo === undefined) {
|
|
342
|
+
return () => true;
|
|
343
|
+
}
|
|
344
|
+
// We cheat, heavily.
|
|
345
|
+
const pathArray = this.normalizeDataPathArr(it);
|
|
346
|
+
compilationSchemInfo.smartDefaultRecord.set(JSON.stringify(pathArray), schema);
|
|
347
|
+
return () => true;
|
|
348
|
+
},
|
|
349
|
+
metaSchema: {
|
|
350
|
+
type: 'object',
|
|
351
|
+
properties: {
|
|
352
|
+
'$source': { type: 'string' },
|
|
353
|
+
},
|
|
354
|
+
additionalProperties: true,
|
|
355
|
+
required: ['$source'],
|
|
356
|
+
},
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
registerUriHandler(handler) {
|
|
361
|
+
this._uriHandlers.add(handler);
|
|
362
|
+
}
|
|
363
|
+
usePromptProvider(provider) {
|
|
364
|
+
const isSetup = !!this._promptProvider;
|
|
365
|
+
this._promptProvider = provider;
|
|
366
|
+
if (isSetup) {
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
this._ajv.addKeyword({
|
|
370
|
+
keyword: 'x-prompt',
|
|
371
|
+
errors: false,
|
|
372
|
+
valid: true,
|
|
373
|
+
compile: (schema, parentSchema, it) => {
|
|
374
|
+
const compilationSchemInfo = this._currentCompilationSchemaInfo;
|
|
375
|
+
if (!compilationSchemInfo) {
|
|
376
|
+
return () => true;
|
|
377
|
+
}
|
|
378
|
+
const path = '/' + this.normalizeDataPathArr(it).join('/');
|
|
379
|
+
let type;
|
|
380
|
+
let items;
|
|
381
|
+
let message;
|
|
382
|
+
if (typeof schema == 'string') {
|
|
383
|
+
message = schema;
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
message = schema.message;
|
|
387
|
+
type = schema.type;
|
|
388
|
+
items = schema.items;
|
|
389
|
+
}
|
|
390
|
+
const propertyTypes = (0, utility_1.getTypesOfSchema)(parentSchema);
|
|
391
|
+
if (!type) {
|
|
392
|
+
if (propertyTypes.size === 1 && propertyTypes.has('boolean')) {
|
|
393
|
+
type = 'confirmation';
|
|
394
|
+
}
|
|
395
|
+
else if (Array.isArray(parentSchema.enum)) {
|
|
396
|
+
type = 'list';
|
|
397
|
+
}
|
|
398
|
+
else if (propertyTypes.size === 1 &&
|
|
399
|
+
propertyTypes.has('array') &&
|
|
400
|
+
parentSchema.items &&
|
|
401
|
+
Array.isArray(parentSchema.items.enum)) {
|
|
402
|
+
type = 'list';
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
type = 'input';
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
let multiselect;
|
|
409
|
+
if (type === 'list') {
|
|
410
|
+
multiselect =
|
|
411
|
+
schema.multiselect === undefined
|
|
412
|
+
? propertyTypes.size === 1 && propertyTypes.has('array')
|
|
413
|
+
: schema.multiselect;
|
|
414
|
+
const enumValues = multiselect
|
|
415
|
+
? parentSchema.items &&
|
|
416
|
+
parentSchema.items.enum
|
|
417
|
+
: parentSchema.enum;
|
|
418
|
+
if (!items && Array.isArray(enumValues)) {
|
|
419
|
+
items = [];
|
|
420
|
+
for (const value of enumValues) {
|
|
421
|
+
if (typeof value == 'string') {
|
|
422
|
+
items.push(value);
|
|
423
|
+
}
|
|
424
|
+
else if (typeof value == 'object') {
|
|
425
|
+
// Invalid
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
items.push({ label: value.toString(), value });
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
const definition = {
|
|
434
|
+
id: path,
|
|
435
|
+
type,
|
|
436
|
+
message,
|
|
437
|
+
raw: schema,
|
|
438
|
+
items,
|
|
439
|
+
multiselect,
|
|
440
|
+
propertyTypes,
|
|
441
|
+
default: typeof parentSchema.default == 'object' &&
|
|
442
|
+
parentSchema.default !== null &&
|
|
443
|
+
!Array.isArray(parentSchema.default)
|
|
444
|
+
? undefined
|
|
445
|
+
: parentSchema.default,
|
|
446
|
+
async validator(data) {
|
|
447
|
+
try {
|
|
448
|
+
const result = await it.self.validate(parentSchema, data);
|
|
449
|
+
// If the schema is sync then false will be returned on validation failure
|
|
450
|
+
if (result) {
|
|
451
|
+
return result;
|
|
452
|
+
}
|
|
453
|
+
else if (it.self.errors?.length) {
|
|
454
|
+
// Validation errors will be present on the Ajv instance when sync
|
|
455
|
+
return it.self.errors[0].message;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
catch (e) {
|
|
459
|
+
const validationError = e;
|
|
460
|
+
// If the schema is async then an error will be thrown on validation failure
|
|
461
|
+
if (Array.isArray(validationError.errors) && validationError.errors.length) {
|
|
462
|
+
return validationError.errors[0].message;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return false;
|
|
466
|
+
},
|
|
467
|
+
};
|
|
468
|
+
compilationSchemInfo.promptDefinitions.push(definition);
|
|
469
|
+
return function () {
|
|
470
|
+
// If 'this' is undefined in the call, then it defaults to the global
|
|
471
|
+
// 'this'.
|
|
472
|
+
if (this && this.promptFieldsWithValue) {
|
|
473
|
+
this.promptFieldsWithValue.add(path);
|
|
474
|
+
}
|
|
475
|
+
return true;
|
|
476
|
+
};
|
|
477
|
+
},
|
|
478
|
+
metaSchema: {
|
|
479
|
+
oneOf: [
|
|
480
|
+
{ type: 'string' },
|
|
481
|
+
{
|
|
482
|
+
type: 'object',
|
|
483
|
+
properties: {
|
|
484
|
+
'type': { type: 'string' },
|
|
485
|
+
'message': { type: 'string' },
|
|
486
|
+
},
|
|
487
|
+
additionalProperties: true,
|
|
488
|
+
required: ['message'],
|
|
489
|
+
},
|
|
490
|
+
],
|
|
491
|
+
},
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
async _applyPrompts(data, prompts) {
|
|
495
|
+
const provider = this._promptProvider;
|
|
496
|
+
if (!provider) {
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
const answers = await (0, rxjs_1.lastValueFrom)((0, rxjs_1.from)(provider(prompts)));
|
|
500
|
+
for (const path in answers) {
|
|
501
|
+
const pathFragments = path.split('/').slice(1);
|
|
502
|
+
CoreSchemaRegistry._set(data, pathFragments, answers[path], null, undefined, true);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
static _set(
|
|
506
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
507
|
+
data, fragments, value,
|
|
508
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
509
|
+
parent = null, parentProperty, force) {
|
|
510
|
+
for (let index = 0; index < fragments.length; index++) {
|
|
511
|
+
const fragment = fragments[index];
|
|
512
|
+
if (/^i\d+$/.test(fragment)) {
|
|
513
|
+
if (!Array.isArray(data)) {
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
for (let dataIndex = 0; dataIndex < data.length; dataIndex++) {
|
|
517
|
+
CoreSchemaRegistry._set(data[dataIndex], fragments.slice(index + 1), value, data, `${dataIndex}`);
|
|
518
|
+
}
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
if (!data && parent !== null && parentProperty) {
|
|
522
|
+
data = parent[parentProperty] = {};
|
|
523
|
+
}
|
|
524
|
+
parent = data;
|
|
525
|
+
parentProperty = fragment;
|
|
526
|
+
data = data[fragment];
|
|
527
|
+
}
|
|
528
|
+
if (parent && parentProperty && (force || parent[parentProperty] === undefined)) {
|
|
529
|
+
parent[parentProperty] = value;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
async _applySmartDefaults(data, smartDefaults) {
|
|
533
|
+
for (const [pointer, schema] of smartDefaults.entries()) {
|
|
534
|
+
const fragments = JSON.parse(pointer);
|
|
535
|
+
const source = this._sourceMap.get(schema.$source);
|
|
536
|
+
if (!source) {
|
|
537
|
+
continue;
|
|
538
|
+
}
|
|
539
|
+
let value = source(schema);
|
|
540
|
+
if ((0, rxjs_1.isObservable)(value)) {
|
|
541
|
+
value = (await (0, rxjs_1.lastValueFrom)(value));
|
|
542
|
+
}
|
|
543
|
+
CoreSchemaRegistry._set(data, fragments, value);
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
useXDeprecatedProvider(onUsage) {
|
|
547
|
+
this._ajv.addKeyword({
|
|
548
|
+
keyword: 'x-deprecated',
|
|
549
|
+
validate: (schema, _data, _parentSchema, dataCxt) => {
|
|
550
|
+
if (schema) {
|
|
551
|
+
onUsage(`Option "${dataCxt?.parentDataProperty}" is deprecated${typeof schema == 'string' ? ': ' + schema : '.'}`);
|
|
552
|
+
}
|
|
553
|
+
return true;
|
|
554
|
+
},
|
|
555
|
+
errors: false,
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
normalizeDataPathArr(it) {
|
|
559
|
+
return it.dataPathArr
|
|
560
|
+
.slice(1, it.dataLevel + 1)
|
|
561
|
+
.map((p) => (typeof p === 'number' ? p : p.str.replace(/"/g, '')));
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
exports.CoreSchemaRegistry = CoreSchemaRegistry;
|
|
565
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
import { JsonObject } from '../utils';
|
|
9
|
+
/**
|
|
10
|
+
* A specialized interface for JsonSchema (to come). JsonSchemas are also JsonObject.
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export type JsonSchema = JsonObject | boolean;
|
|
15
|
+
export declare function isJsonSchema(value: unknown): value is JsonSchema;
|
|
16
|
+
/**
|
|
17
|
+
* Return a schema that is the merge of all subschemas, ie. it should validate all the schemas
|
|
18
|
+
* that were passed in. It is possible to make an invalid schema this way, e.g. by using
|
|
19
|
+
* `mergeSchemas({ type: 'number' }, { type: 'string' })`, which will never validate.
|
|
20
|
+
* @param schemas All schemas to be merged.
|
|
21
|
+
*/
|
|
22
|
+
export declare function mergeSchemas(...schemas: (JsonSchema | undefined)[]): JsonSchema;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright Google LLC All Rights Reserved.
|
|
5
|
+
*
|
|
6
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
7
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.isJsonSchema = isJsonSchema;
|
|
11
|
+
exports.mergeSchemas = mergeSchemas;
|
|
12
|
+
const utils_1 = require("../utils");
|
|
13
|
+
function isJsonSchema(value) {
|
|
14
|
+
return (0, utils_1.isJsonObject)(value) || value === false || value === true;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Return a schema that is the merge of all subschemas, ie. it should validate all the schemas
|
|
18
|
+
* that were passed in. It is possible to make an invalid schema this way, e.g. by using
|
|
19
|
+
* `mergeSchemas({ type: 'number' }, { type: 'string' })`, which will never validate.
|
|
20
|
+
* @param schemas All schemas to be merged.
|
|
21
|
+
*/
|
|
22
|
+
function mergeSchemas(...schemas) {
|
|
23
|
+
return schemas.reduce((prev, curr) => {
|
|
24
|
+
if (curr === undefined) {
|
|
25
|
+
return prev;
|
|
26
|
+
}
|
|
27
|
+
if (prev === false || curr === false) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
else if (prev === true) {
|
|
31
|
+
return curr;
|
|
32
|
+
}
|
|
33
|
+
else if (curr === true) {
|
|
34
|
+
return prev;
|
|
35
|
+
}
|
|
36
|
+
else if (Array.isArray(prev.allOf)) {
|
|
37
|
+
if (Array.isArray(curr.allOf)) {
|
|
38
|
+
return { ...prev, allOf: [...prev.allOf, ...curr.allOf] };
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return { ...prev, allOf: [...prev.allOf, curr] };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (Array.isArray(curr.allOf)) {
|
|
45
|
+
return { ...prev, allOf: [prev, ...curr.allOf] };
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return { ...prev, allOf: [prev, curr] };
|
|
49
|
+
}
|
|
50
|
+
}, true);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAWH,oCAEC;AAQD,oCAwBC;AA3CD,oCAA+D;AAS/D,SAAgB,YAAY,CAAC,KAAc;IACzC,OAAO,IAAA,oBAAY,EAAC,KAAkB,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,GAAG,OAAmC;IACjE,OAAO,OAAO,CAAC,MAAM,CAAa,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC"}
|