@pactor-app/schema 1.21.0 → 1.23.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/dist/index.cjs +60 -16
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +60 -16
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -322,11 +322,59 @@ var pageDslSchema = {
|
|
|
322
322
|
|
|
323
323
|
// src/validate.ts
|
|
324
324
|
var import_ajv = __toESM(require("ajv"), 1);
|
|
325
|
-
var ajv
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
325
|
+
var ajv;
|
|
326
|
+
var codegenUnavailableWarned = false;
|
|
327
|
+
function isCodeGenerationError(error) {
|
|
328
|
+
return error instanceof EvalError || error instanceof Error && /Code generation from strings/.test(error.message);
|
|
329
|
+
}
|
|
330
|
+
function getAjv() {
|
|
331
|
+
if (ajv !== void 0) {
|
|
332
|
+
return ajv;
|
|
333
|
+
}
|
|
334
|
+
try {
|
|
335
|
+
const instance = new import_ajv.default({ allErrors: true, strict: false });
|
|
336
|
+
instance.addSchema(actionConfigSchema);
|
|
337
|
+
instance.addSchema(dslSourceRefSchema);
|
|
338
|
+
instance.addSchema(dslNodeSchema);
|
|
339
|
+
instance.addSchema(pageDslSchema);
|
|
340
|
+
ajv = instance;
|
|
341
|
+
} catch (error) {
|
|
342
|
+
if (isCodeGenerationError(error)) {
|
|
343
|
+
warnCodegenUnavailable();
|
|
344
|
+
ajv = null;
|
|
345
|
+
} else {
|
|
346
|
+
throw error;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return ajv;
|
|
350
|
+
}
|
|
351
|
+
function warnCodegenUnavailable() {
|
|
352
|
+
if (!codegenUnavailableWarned) {
|
|
353
|
+
codegenUnavailableWarned = true;
|
|
354
|
+
globalThis.console?.warn(
|
|
355
|
+
"[@pactor-app/schema] \u5F53\u524D\u8FD0\u884C\u65F6\u7981\u6B62\u4EE3\u7801\u751F\u6210\uFF08\u5982 Cloudflare Workers\uFF09\uFF0CDSL Schema \u6821\u9A8C\u5DF2\u8DF3\u8FC7"
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
function getCompiledValidator(schemaId) {
|
|
360
|
+
const instance = getAjv();
|
|
361
|
+
if (!instance) {
|
|
362
|
+
return void 0;
|
|
363
|
+
}
|
|
364
|
+
try {
|
|
365
|
+
const validate = instance.getSchema(schemaId);
|
|
366
|
+
if (!validate) {
|
|
367
|
+
throw new Error(`schema not registered: ${schemaId}`);
|
|
368
|
+
}
|
|
369
|
+
return validate;
|
|
370
|
+
} catch (error) {
|
|
371
|
+
if (isCodeGenerationError(error)) {
|
|
372
|
+
warnCodegenUnavailable();
|
|
373
|
+
return void 0;
|
|
374
|
+
}
|
|
375
|
+
throw error;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
330
378
|
function toStructuredErrors(errors) {
|
|
331
379
|
return errors.map((error) => {
|
|
332
380
|
let path = error.instancePath || "/";
|
|
@@ -343,15 +391,11 @@ function toStructuredErrors(errors) {
|
|
|
343
391
|
};
|
|
344
392
|
});
|
|
345
393
|
}
|
|
346
|
-
function
|
|
347
|
-
const validate =
|
|
394
|
+
function validatePageDsl(document) {
|
|
395
|
+
const validate = getCompiledValidator(PAGE_DSL_SCHEMA_ID);
|
|
348
396
|
if (!validate) {
|
|
349
|
-
|
|
397
|
+
return { valid: true, errors: [], warnings: collectWarnings(document) };
|
|
350
398
|
}
|
|
351
|
-
return validate;
|
|
352
|
-
}
|
|
353
|
-
function validatePageDsl(document) {
|
|
354
|
-
const validate = getValidator();
|
|
355
399
|
const valid = validate(document);
|
|
356
400
|
return {
|
|
357
401
|
valid,
|
|
@@ -376,17 +420,17 @@ function collectWarnings(document) {
|
|
|
376
420
|
return [];
|
|
377
421
|
}
|
|
378
422
|
function validateDslNode(value) {
|
|
379
|
-
const validate =
|
|
423
|
+
const validate = getCompiledValidator(DSL_NODE_SCHEMA_ID);
|
|
380
424
|
if (!validate) {
|
|
381
|
-
|
|
425
|
+
return [];
|
|
382
426
|
}
|
|
383
427
|
const valid = validate(value);
|
|
384
428
|
return valid ? [] : toStructuredErrors(validate.errors ?? []);
|
|
385
429
|
}
|
|
386
430
|
function validateDslSourceRef(value) {
|
|
387
|
-
const validate =
|
|
431
|
+
const validate = getCompiledValidator(DSL_SOURCE_REF_SCHEMA_ID);
|
|
388
432
|
if (!validate) {
|
|
389
|
-
|
|
433
|
+
return [];
|
|
390
434
|
}
|
|
391
435
|
const valid = validate(value);
|
|
392
436
|
return valid ? [] : toStructuredErrors(validate.errors ?? []);
|
package/dist/index.d.cts
CHANGED
|
@@ -549,10 +549,12 @@ interface DslValidationResult {
|
|
|
549
549
|
/**
|
|
550
550
|
* 校验 Page DSL 文档是否符合根结构 Schema。
|
|
551
551
|
* 校验通过时 errors 为空数组;warnings 为提示级信息(不阻断校验)。
|
|
552
|
+
* 禁代码生成的运行时(如 Cloudflare Workers)跳过 Schema 校验,仅保留 warnings。
|
|
552
553
|
*/
|
|
553
554
|
declare function validatePageDsl(document: unknown): DslValidationResult;
|
|
554
555
|
/**
|
|
555
556
|
* 校验单个 DslNode(如远端动态加载的子树),返回结构化错误列表(空数组为通过)。
|
|
557
|
+
* 禁代码生成的运行时空数组返回(跳过校验)。
|
|
556
558
|
*/
|
|
557
559
|
declare function validateDslNode(value: unknown): DslValidationError[];
|
|
558
560
|
/** 校验单个 DslSourceRef(children 数组中的引用元素) */
|
package/dist/index.d.ts
CHANGED
|
@@ -549,10 +549,12 @@ interface DslValidationResult {
|
|
|
549
549
|
/**
|
|
550
550
|
* 校验 Page DSL 文档是否符合根结构 Schema。
|
|
551
551
|
* 校验通过时 errors 为空数组;warnings 为提示级信息(不阻断校验)。
|
|
552
|
+
* 禁代码生成的运行时(如 Cloudflare Workers)跳过 Schema 校验,仅保留 warnings。
|
|
552
553
|
*/
|
|
553
554
|
declare function validatePageDsl(document: unknown): DslValidationResult;
|
|
554
555
|
/**
|
|
555
556
|
* 校验单个 DslNode(如远端动态加载的子树),返回结构化错误列表(空数组为通过)。
|
|
557
|
+
* 禁代码生成的运行时空数组返回(跳过校验)。
|
|
556
558
|
*/
|
|
557
559
|
declare function validateDslNode(value: unknown): DslValidationError[];
|
|
558
560
|
/** 校验单个 DslSourceRef(children 数组中的引用元素) */
|
package/dist/index.js
CHANGED
|
@@ -274,11 +274,59 @@ var pageDslSchema = {
|
|
|
274
274
|
|
|
275
275
|
// src/validate.ts
|
|
276
276
|
import Ajv from "ajv";
|
|
277
|
-
var ajv
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
277
|
+
var ajv;
|
|
278
|
+
var codegenUnavailableWarned = false;
|
|
279
|
+
function isCodeGenerationError(error) {
|
|
280
|
+
return error instanceof EvalError || error instanceof Error && /Code generation from strings/.test(error.message);
|
|
281
|
+
}
|
|
282
|
+
function getAjv() {
|
|
283
|
+
if (ajv !== void 0) {
|
|
284
|
+
return ajv;
|
|
285
|
+
}
|
|
286
|
+
try {
|
|
287
|
+
const instance = new Ajv({ allErrors: true, strict: false });
|
|
288
|
+
instance.addSchema(actionConfigSchema);
|
|
289
|
+
instance.addSchema(dslSourceRefSchema);
|
|
290
|
+
instance.addSchema(dslNodeSchema);
|
|
291
|
+
instance.addSchema(pageDslSchema);
|
|
292
|
+
ajv = instance;
|
|
293
|
+
} catch (error) {
|
|
294
|
+
if (isCodeGenerationError(error)) {
|
|
295
|
+
warnCodegenUnavailable();
|
|
296
|
+
ajv = null;
|
|
297
|
+
} else {
|
|
298
|
+
throw error;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return ajv;
|
|
302
|
+
}
|
|
303
|
+
function warnCodegenUnavailable() {
|
|
304
|
+
if (!codegenUnavailableWarned) {
|
|
305
|
+
codegenUnavailableWarned = true;
|
|
306
|
+
globalThis.console?.warn(
|
|
307
|
+
"[@pactor-app/schema] \u5F53\u524D\u8FD0\u884C\u65F6\u7981\u6B62\u4EE3\u7801\u751F\u6210\uFF08\u5982 Cloudflare Workers\uFF09\uFF0CDSL Schema \u6821\u9A8C\u5DF2\u8DF3\u8FC7"
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
function getCompiledValidator(schemaId) {
|
|
312
|
+
const instance = getAjv();
|
|
313
|
+
if (!instance) {
|
|
314
|
+
return void 0;
|
|
315
|
+
}
|
|
316
|
+
try {
|
|
317
|
+
const validate = instance.getSchema(schemaId);
|
|
318
|
+
if (!validate) {
|
|
319
|
+
throw new Error(`schema not registered: ${schemaId}`);
|
|
320
|
+
}
|
|
321
|
+
return validate;
|
|
322
|
+
} catch (error) {
|
|
323
|
+
if (isCodeGenerationError(error)) {
|
|
324
|
+
warnCodegenUnavailable();
|
|
325
|
+
return void 0;
|
|
326
|
+
}
|
|
327
|
+
throw error;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
282
330
|
function toStructuredErrors(errors) {
|
|
283
331
|
return errors.map((error) => {
|
|
284
332
|
let path = error.instancePath || "/";
|
|
@@ -295,15 +343,11 @@ function toStructuredErrors(errors) {
|
|
|
295
343
|
};
|
|
296
344
|
});
|
|
297
345
|
}
|
|
298
|
-
function
|
|
299
|
-
const validate =
|
|
346
|
+
function validatePageDsl(document) {
|
|
347
|
+
const validate = getCompiledValidator(PAGE_DSL_SCHEMA_ID);
|
|
300
348
|
if (!validate) {
|
|
301
|
-
|
|
349
|
+
return { valid: true, errors: [], warnings: collectWarnings(document) };
|
|
302
350
|
}
|
|
303
|
-
return validate;
|
|
304
|
-
}
|
|
305
|
-
function validatePageDsl(document) {
|
|
306
|
-
const validate = getValidator();
|
|
307
351
|
const valid = validate(document);
|
|
308
352
|
return {
|
|
309
353
|
valid,
|
|
@@ -328,17 +372,17 @@ function collectWarnings(document) {
|
|
|
328
372
|
return [];
|
|
329
373
|
}
|
|
330
374
|
function validateDslNode(value) {
|
|
331
|
-
const validate =
|
|
375
|
+
const validate = getCompiledValidator(DSL_NODE_SCHEMA_ID);
|
|
332
376
|
if (!validate) {
|
|
333
|
-
|
|
377
|
+
return [];
|
|
334
378
|
}
|
|
335
379
|
const valid = validate(value);
|
|
336
380
|
return valid ? [] : toStructuredErrors(validate.errors ?? []);
|
|
337
381
|
}
|
|
338
382
|
function validateDslSourceRef(value) {
|
|
339
|
-
const validate =
|
|
383
|
+
const validate = getCompiledValidator(DSL_SOURCE_REF_SCHEMA_ID);
|
|
340
384
|
if (!validate) {
|
|
341
|
-
|
|
385
|
+
return [];
|
|
342
386
|
}
|
|
343
387
|
const valid = validate(value);
|
|
344
388
|
return valid ? [] : toStructuredErrors(validate.errors ?? []);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pactor-app/schema",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.23.0",
|
|
4
4
|
"description": "Pactor schema: DSL version constants, JSON Schemas and Ajv-based validator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pactor",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"ajv": "^8.17.1",
|
|
49
|
-
"@pactor-app/core": "1.
|
|
49
|
+
"@pactor-app/core": "1.23.0"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"build": "tsup",
|