@djvlc/contracts-validators 1.2.0 → 1.3.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.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @djvlc/contracts-validators - DJV 低代码平台预编译校验器包\n *\n * 提供预编译的 Ajv 校验器,避免各仓库自行编写校验逻辑导致分叉\n *\n * @packageDocumentation\n */\n\nimport Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport {\n pageSchema,\n componentMetaSchema,\n actionSpecSchema,\n dataQuerySpecSchema,\n} from '@djvlc/contracts-schemas';\nimport type {\n PageSchema,\n ComponentMeta,\n ActionDefinition,\n DataQueryDefinition,\n ActionExecuteRequest,\n DataQueryRequest,\n} from '@djvlc/contracts-types';\n\n// ==================== 校验结果类型 ====================\n\n/**\n * 校验结果\n */\nexport interface ValidationResult {\n /** 是否有效 */\n valid: boolean;\n /** 错误列表 */\n errors: ValidationError[];\n}\n\n/**\n * 校验错误\n */\nexport interface ValidationError {\n /** 错误路径 */\n path: string;\n /** 错误消息 */\n message: string;\n /** 错误关键字 */\n keyword?: string;\n /** 期望值 */\n expected?: unknown;\n /** 实际值 */\n actual?: unknown;\n}\n\n// ==================== Ajv 实例 ====================\n\nconst ajv = new Ajv({\n allErrors: true,\n verbose: true,\n strict: false,\n});\n\naddFormats(ajv);\n\n// 预编译 Schema\nconst pageValidator = ajv.compile(pageSchema);\nconst componentMetaValidator = ajv.compile(componentMetaSchema);\nconst actionSpecValidator = ajv.compile(actionSpecSchema);\nconst dataQuerySpecValidator = ajv.compile(dataQuerySpecSchema);\n\n// ==================== 工具函数 ====================\n\n/**\n * 将 Ajv 错误转换为标准格式\n */\nfunction convertAjvErrors(errors: typeof ajv.errors): ValidationError[] {\n if (!errors) return [];\n\n return errors.map((error) => ({\n path: error.instancePath || '/',\n message: error.message || 'Unknown error',\n keyword: error.keyword,\n expected: error.params,\n actual: error.data,\n }));\n}\n\n/**\n * 创建校验结果\n */\nfunction createResult(valid: boolean, errors: typeof ajv.errors): ValidationResult {\n return {\n valid,\n errors: convertAjvErrors(errors),\n };\n}\n\n\n// ==================== 页面校验 ====================\n\n/**\n * 校验 PageSchema\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validatePage(data: unknown): ValidationResult {\n const valid = pageValidator(data);\n return createResult(valid, pageValidator.errors);\n}\n\n/**\n * 校验 PageSchema,返回类型安全的结果\n */\nexport function validatePageSchema(data: unknown): ValidationResult & { data?: PageSchema } {\n const result = validatePage(data);\n if (result.valid) {\n return { ...result, data: data as PageSchema };\n }\n return result;\n}\n\n/**\n * 断言为 PageSchema\n */\nexport function assertPageSchema(data: unknown): asserts data is PageSchema {\n const result = validatePage(data);\n if (!result.valid) {\n throw new Error(`Invalid PageSchema: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 组件元数据校验 ====================\n\n/**\n * 校验 ComponentMeta\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateComponentMeta(data: unknown): ValidationResult {\n const valid = componentMetaValidator(data);\n return createResult(valid, componentMetaValidator.errors);\n}\n\n/**\n * 断言为 ComponentMeta\n */\nexport function assertComponentMeta(data: unknown): asserts data is ComponentMeta {\n const result = validateComponentMeta(data);\n if (!result.valid) {\n throw new Error(`Invalid ComponentMeta: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Action 校验 ====================\n\n/**\n * 校验 ActionDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateActionDefinition(data: unknown): ValidationResult {\n const valid = actionSpecValidator(data);\n return createResult(valid, actionSpecValidator.errors);\n}\n\n/**\n * 断言为 ActionDefinition\n */\nexport function assertActionDefinition(data: unknown): asserts data is ActionDefinition {\n const result = validateActionDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 ActionExecuteRequest\n */\nexport function validateActionRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'ActionExecuteRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.actionType !== 'string' || !obj.actionType) {\n errors.push({ path: '/actionType', message: 'actionType is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n if (obj.context === undefined || typeof obj.context !== 'object') {\n errors.push({ path: '/context', message: 'context is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 ActionExecuteRequest\n */\nexport function assertActionRequest(data: unknown): asserts data is ActionExecuteRequest {\n const result = validateActionRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionExecuteRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Data Query 校验 ====================\n\n/**\n * 校验 DataQueryDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateDataQueryDefinition(data: unknown): ValidationResult {\n const valid = dataQuerySpecValidator(data);\n return createResult(valid, dataQuerySpecValidator.errors);\n}\n\n/**\n * 断言为 DataQueryDefinition\n */\nexport function assertDataQueryDefinition(data: unknown): asserts data is DataQueryDefinition {\n const result = validateDataQueryDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 DataQueryRequest\n */\nexport function validateQueryRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'DataQueryRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.queryVersionId !== 'string' || !obj.queryVersionId) {\n errors.push({ path: '/queryVersionId', message: 'queryVersionId is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 DataQueryRequest\n */\nexport function assertQueryRequest(data: unknown): asserts data is DataQueryRequest {\n const result = validateQueryRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 类型保护函数 ====================\n\n/**\n * 检查是否为有效的 PageSchema\n */\nexport function isPageSchema(value: unknown): value is PageSchema {\n return validatePage(value).valid;\n}\n\n/**\n * 检查是否为有效的 ComponentMeta\n */\nexport function isComponentMeta(value: unknown): value is ComponentMeta {\n return validateComponentMeta(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionDefinition\n */\nexport function isActionDefinition(value: unknown): value is ActionDefinition {\n return validateActionDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryDefinition\n */\nexport function isDataQueryDefinition(value: unknown): value is DataQueryDefinition {\n return validateDataQueryDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionExecuteRequest\n */\nexport function isActionRequest(value: unknown): value is ActionExecuteRequest {\n return validateActionRequest(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryRequest\n */\nexport function isQueryRequest(value: unknown): value is DataQueryRequest {\n return validateQueryRequest(value).valid;\n}\n\n// ==================== 批量校验 ====================\n\n/**\n * 批量校验结果\n */\nexport interface BatchValidationResult<T> {\n /** 全部有效 */\n allValid: boolean;\n /** 有效项数量 */\n validCount: number;\n /** 无效项数量 */\n invalidCount: number;\n /** 各项结果 */\n results: Array<{\n index: number;\n valid: boolean;\n data?: T;\n errors: ValidationError[];\n }>;\n}\n\n/**\n * 批量校验 PageSchema\n */\nexport function validatePages(items: unknown[]): BatchValidationResult<PageSchema> {\n const results = items.map((item, index) => {\n const result = validatePage(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as PageSchema) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n/**\n * 批量校验 ComponentMeta\n */\nexport function validateComponentMetas(items: unknown[]): BatchValidationResult<ComponentMeta> {\n const results = items.map((item, index) => {\n const result = validateComponentMeta(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as ComponentMeta) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n// ==================== 导出 Ajv 实例(供高级用法) ====================\n\nexport { ajv };\n"],"mappings":"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","names":["Ajv","addFormats"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @djvlc/contracts-validators - DJV 低代码平台预编译校验器包\n *\n * 提供预编译的 Ajv 校验器,避免各仓库自行编写校验逻辑导致分叉\n *\n * @packageDocumentation\n */\n\nimport Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport {\n pageSchema,\n componentMetaSchema,\n actionSpecSchema,\n dataQuerySpecSchema,\n} from '@djvlc/contracts-schemas';\nimport type {\n PageSchema,\n ComponentMeta,\n ActionDefinition,\n DataQueryDefinition,\n ActionExecuteRequest,\n DataQueryRequest,\n} from '@djvlc/contracts-types';\n\n// ==================== 校验结果类型 ====================\n\n/**\n * 校验结果\n */\nexport interface ValidationResult {\n /** 是否有效 */\n valid: boolean;\n /** 错误列表 */\n errors: ValidationError[];\n}\n\n/**\n * 校验错误\n */\nexport interface ValidationError {\n /** 错误路径 */\n path: string;\n /** 错误消息 */\n message: string;\n /** 错误关键字 */\n keyword?: string;\n /** 期望值 */\n expected?: unknown;\n /** 实际值 */\n actual?: unknown;\n}\n\n// ==================== Ajv 实例 ====================\n\nconst ajv = new Ajv({\n allErrors: true,\n verbose: true,\n strict: false,\n});\n\naddFormats(ajv);\n\n// 预编译 Schema\nconst pageValidator = ajv.compile(pageSchema);\nconst componentMetaValidator = ajv.compile(componentMetaSchema);\nconst actionSpecValidator = ajv.compile(actionSpecSchema);\nconst dataQuerySpecValidator = ajv.compile(dataQuerySpecSchema);\n\n// ==================== 工具函数 ====================\n\n/**\n * 将 Ajv 错误转换为标准格式\n */\nfunction convertAjvErrors(errors: typeof ajv.errors): ValidationError[] {\n if (!errors) return [];\n\n return errors.map((error) => ({\n path: error.instancePath || '/',\n message: error.message || 'Unknown error',\n keyword: error.keyword,\n expected: error.params,\n actual: error.data,\n }));\n}\n\n/**\n * 创建校验结果\n */\nfunction createResult(valid: boolean, errors: typeof ajv.errors): ValidationResult {\n return {\n valid,\n errors: convertAjvErrors(errors),\n };\n}\n\n// ==================== 页面校验 ====================\n\n/**\n * 校验 PageSchema\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validatePage(data: unknown): ValidationResult {\n const valid = pageValidator(data);\n return createResult(valid, pageValidator.errors);\n}\n\n/**\n * 校验 PageSchema,返回类型安全的结果\n */\nexport function validatePageSchema(data: unknown): ValidationResult & { data?: PageSchema } {\n const result = validatePage(data);\n if (result.valid) {\n return { ...result, data: data as PageSchema };\n }\n return result;\n}\n\n/**\n * 断言为 PageSchema\n */\nexport function assertPageSchema(data: unknown): asserts data is PageSchema {\n const result = validatePage(data);\n if (!result.valid) {\n throw new Error(`Invalid PageSchema: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 组件元数据校验 ====================\n\n/**\n * 校验 ComponentMeta\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateComponentMeta(data: unknown): ValidationResult {\n const valid = componentMetaValidator(data);\n return createResult(valid, componentMetaValidator.errors);\n}\n\n/**\n * 断言为 ComponentMeta\n */\nexport function assertComponentMeta(data: unknown): asserts data is ComponentMeta {\n const result = validateComponentMeta(data);\n if (!result.valid) {\n throw new Error(`Invalid ComponentMeta: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Action 校验 ====================\n\n/**\n * 校验 ActionDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateActionDefinition(data: unknown): ValidationResult {\n const valid = actionSpecValidator(data);\n return createResult(valid, actionSpecValidator.errors);\n}\n\n/**\n * 断言为 ActionDefinition\n */\nexport function assertActionDefinition(data: unknown): asserts data is ActionDefinition {\n const result = validateActionDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 ActionExecuteRequest\n */\nexport function validateActionRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'ActionExecuteRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.actionType !== 'string' || !obj.actionType) {\n errors.push({ path: '/actionType', message: 'actionType is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n if (obj.context === undefined || typeof obj.context !== 'object') {\n errors.push({ path: '/context', message: 'context is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 ActionExecuteRequest\n */\nexport function assertActionRequest(data: unknown): asserts data is ActionExecuteRequest {\n const result = validateActionRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionExecuteRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Data Query 校验 ====================\n\n/**\n * 校验 DataQueryDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateDataQueryDefinition(data: unknown): ValidationResult {\n const valid = dataQuerySpecValidator(data);\n return createResult(valid, dataQuerySpecValidator.errors);\n}\n\n/**\n * 断言为 DataQueryDefinition\n */\nexport function assertDataQueryDefinition(data: unknown): asserts data is DataQueryDefinition {\n const result = validateDataQueryDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 DataQueryRequest\n */\nexport function validateQueryRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'DataQueryRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.queryVersionId !== 'string' || !obj.queryVersionId) {\n errors.push({ path: '/queryVersionId', message: 'queryVersionId is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 DataQueryRequest\n */\nexport function assertQueryRequest(data: unknown): asserts data is DataQueryRequest {\n const result = validateQueryRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 类型保护函数 ====================\n\n/**\n * 检查是否为有效的 PageSchema\n */\nexport function isPageSchema(value: unknown): value is PageSchema {\n return validatePage(value).valid;\n}\n\n/**\n * 检查是否为有效的 ComponentMeta\n */\nexport function isComponentMeta(value: unknown): value is ComponentMeta {\n return validateComponentMeta(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionDefinition\n */\nexport function isActionDefinition(value: unknown): value is ActionDefinition {\n return validateActionDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryDefinition\n */\nexport function isDataQueryDefinition(value: unknown): value is DataQueryDefinition {\n return validateDataQueryDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionExecuteRequest\n */\nexport function isActionRequest(value: unknown): value is ActionExecuteRequest {\n return validateActionRequest(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryRequest\n */\nexport function isQueryRequest(value: unknown): value is DataQueryRequest {\n return validateQueryRequest(value).valid;\n}\n\n// ==================== 批量校验 ====================\n\n/**\n * 批量校验结果\n */\nexport interface BatchValidationResult<T> {\n /** 全部有效 */\n allValid: boolean;\n /** 有效项数量 */\n validCount: number;\n /** 无效项数量 */\n invalidCount: number;\n /** 各项结果 */\n results: Array<{\n index: number;\n valid: boolean;\n data?: T;\n errors: ValidationError[];\n }>;\n}\n\n/**\n * 批量校验 PageSchema\n */\nexport function validatePages(items: unknown[]): BatchValidationResult<PageSchema> {\n const results = items.map((item, index) => {\n const result = validatePage(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as PageSchema) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n/**\n * 批量校验 ComponentMeta\n */\nexport function validateComponentMetas(items: unknown[]): BatchValidationResult<ComponentMeta> {\n const results = items.map((item, index) => {\n const result = validateComponentMeta(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as ComponentMeta) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n// ==================== 导出 Ajv 实例(供高级用法) ====================\n\nexport { ajv };\n"],"mappings":"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","names":["Ajv","addFormats"]}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @djvlc/contracts-validators - DJV 低代码平台预编译校验器包\n *\n * 提供预编译的 Ajv 校验器,避免各仓库自行编写校验逻辑导致分叉\n *\n * @packageDocumentation\n */\n\nimport Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport {\n pageSchema,\n componentMetaSchema,\n actionSpecSchema,\n dataQuerySpecSchema,\n} from '@djvlc/contracts-schemas';\nimport type {\n PageSchema,\n ComponentMeta,\n ActionDefinition,\n DataQueryDefinition,\n ActionExecuteRequest,\n DataQueryRequest,\n} from '@djvlc/contracts-types';\n\n// ==================== 校验结果类型 ====================\n\n/**\n * 校验结果\n */\nexport interface ValidationResult {\n /** 是否有效 */\n valid: boolean;\n /** 错误列表 */\n errors: ValidationError[];\n}\n\n/**\n * 校验错误\n */\nexport interface ValidationError {\n /** 错误路径 */\n path: string;\n /** 错误消息 */\n message: string;\n /** 错误关键字 */\n keyword?: string;\n /** 期望值 */\n expected?: unknown;\n /** 实际值 */\n actual?: unknown;\n}\n\n// ==================== Ajv 实例 ====================\n\nconst ajv = new Ajv({\n allErrors: true,\n verbose: true,\n strict: false,\n});\n\naddFormats(ajv);\n\n// 预编译 Schema\nconst pageValidator = ajv.compile(pageSchema);\nconst componentMetaValidator = ajv.compile(componentMetaSchema);\nconst actionSpecValidator = ajv.compile(actionSpecSchema);\nconst dataQuerySpecValidator = ajv.compile(dataQuerySpecSchema);\n\n// ==================== 工具函数 ====================\n\n/**\n * 将 Ajv 错误转换为标准格式\n */\nfunction convertAjvErrors(errors: typeof ajv.errors): ValidationError[] {\n if (!errors) return [];\n\n return errors.map((error) => ({\n path: error.instancePath || '/',\n message: error.message || 'Unknown error',\n keyword: error.keyword,\n expected: error.params,\n actual: error.data,\n }));\n}\n\n/**\n * 创建校验结果\n */\nfunction createResult(valid: boolean, errors: typeof ajv.errors): ValidationResult {\n return {\n valid,\n errors: convertAjvErrors(errors),\n };\n}\n\n\n// ==================== 页面校验 ====================\n\n/**\n * 校验 PageSchema\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validatePage(data: unknown): ValidationResult {\n const valid = pageValidator(data);\n return createResult(valid, pageValidator.errors);\n}\n\n/**\n * 校验 PageSchema,返回类型安全的结果\n */\nexport function validatePageSchema(data: unknown): ValidationResult & { data?: PageSchema } {\n const result = validatePage(data);\n if (result.valid) {\n return { ...result, data: data as PageSchema };\n }\n return result;\n}\n\n/**\n * 断言为 PageSchema\n */\nexport function assertPageSchema(data: unknown): asserts data is PageSchema {\n const result = validatePage(data);\n if (!result.valid) {\n throw new Error(`Invalid PageSchema: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 组件元数据校验 ====================\n\n/**\n * 校验 ComponentMeta\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateComponentMeta(data: unknown): ValidationResult {\n const valid = componentMetaValidator(data);\n return createResult(valid, componentMetaValidator.errors);\n}\n\n/**\n * 断言为 ComponentMeta\n */\nexport function assertComponentMeta(data: unknown): asserts data is ComponentMeta {\n const result = validateComponentMeta(data);\n if (!result.valid) {\n throw new Error(`Invalid ComponentMeta: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Action 校验 ====================\n\n/**\n * 校验 ActionDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateActionDefinition(data: unknown): ValidationResult {\n const valid = actionSpecValidator(data);\n return createResult(valid, actionSpecValidator.errors);\n}\n\n/**\n * 断言为 ActionDefinition\n */\nexport function assertActionDefinition(data: unknown): asserts data is ActionDefinition {\n const result = validateActionDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 ActionExecuteRequest\n */\nexport function validateActionRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'ActionExecuteRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.actionType !== 'string' || !obj.actionType) {\n errors.push({ path: '/actionType', message: 'actionType is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n if (obj.context === undefined || typeof obj.context !== 'object') {\n errors.push({ path: '/context', message: 'context is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 ActionExecuteRequest\n */\nexport function assertActionRequest(data: unknown): asserts data is ActionExecuteRequest {\n const result = validateActionRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionExecuteRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Data Query 校验 ====================\n\n/**\n * 校验 DataQueryDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateDataQueryDefinition(data: unknown): ValidationResult {\n const valid = dataQuerySpecValidator(data);\n return createResult(valid, dataQuerySpecValidator.errors);\n}\n\n/**\n * 断言为 DataQueryDefinition\n */\nexport function assertDataQueryDefinition(data: unknown): asserts data is DataQueryDefinition {\n const result = validateDataQueryDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 DataQueryRequest\n */\nexport function validateQueryRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'DataQueryRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.queryVersionId !== 'string' || !obj.queryVersionId) {\n errors.push({ path: '/queryVersionId', message: 'queryVersionId is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 DataQueryRequest\n */\nexport function assertQueryRequest(data: unknown): asserts data is DataQueryRequest {\n const result = validateQueryRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 类型保护函数 ====================\n\n/**\n * 检查是否为有效的 PageSchema\n */\nexport function isPageSchema(value: unknown): value is PageSchema {\n return validatePage(value).valid;\n}\n\n/**\n * 检查是否为有效的 ComponentMeta\n */\nexport function isComponentMeta(value: unknown): value is ComponentMeta {\n return validateComponentMeta(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionDefinition\n */\nexport function isActionDefinition(value: unknown): value is ActionDefinition {\n return validateActionDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryDefinition\n */\nexport function isDataQueryDefinition(value: unknown): value is DataQueryDefinition {\n return validateDataQueryDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionExecuteRequest\n */\nexport function isActionRequest(value: unknown): value is ActionExecuteRequest {\n return validateActionRequest(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryRequest\n */\nexport function isQueryRequest(value: unknown): value is DataQueryRequest {\n return validateQueryRequest(value).valid;\n}\n\n// ==================== 批量校验 ====================\n\n/**\n * 批量校验结果\n */\nexport interface BatchValidationResult<T> {\n /** 全部有效 */\n allValid: boolean;\n /** 有效项数量 */\n validCount: number;\n /** 无效项数量 */\n invalidCount: number;\n /** 各项结果 */\n results: Array<{\n index: number;\n valid: boolean;\n data?: T;\n errors: ValidationError[];\n }>;\n}\n\n/**\n * 批量校验 PageSchema\n */\nexport function validatePages(items: unknown[]): BatchValidationResult<PageSchema> {\n const results = items.map((item, index) => {\n const result = validatePage(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as PageSchema) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n/**\n * 批量校验 ComponentMeta\n */\nexport function validateComponentMetas(items: unknown[]): BatchValidationResult<ComponentMeta> {\n const results = items.map((item, index) => {\n const result = validateComponentMeta(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as ComponentMeta) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n// ==================== 导出 Ajv 实例(供高级用法) ====================\n\nexport { ajv };\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @djvlc/contracts-validators - DJV 低代码平台预编译校验器包\n *\n * 提供预编译的 Ajv 校验器,避免各仓库自行编写校验逻辑导致分叉\n *\n * @packageDocumentation\n */\n\nimport Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport {\n pageSchema,\n componentMetaSchema,\n actionSpecSchema,\n dataQuerySpecSchema,\n} from '@djvlc/contracts-schemas';\nimport type {\n PageSchema,\n ComponentMeta,\n ActionDefinition,\n DataQueryDefinition,\n ActionExecuteRequest,\n DataQueryRequest,\n} from '@djvlc/contracts-types';\n\n// ==================== 校验结果类型 ====================\n\n/**\n * 校验结果\n */\nexport interface ValidationResult {\n /** 是否有效 */\n valid: boolean;\n /** 错误列表 */\n errors: ValidationError[];\n}\n\n/**\n * 校验错误\n */\nexport interface ValidationError {\n /** 错误路径 */\n path: string;\n /** 错误消息 */\n message: string;\n /** 错误关键字 */\n keyword?: string;\n /** 期望值 */\n expected?: unknown;\n /** 实际值 */\n actual?: unknown;\n}\n\n// ==================== Ajv 实例 ====================\n\nconst ajv = new Ajv({\n allErrors: true,\n verbose: true,\n strict: false,\n});\n\naddFormats(ajv);\n\n// 预编译 Schema\nconst pageValidator = ajv.compile(pageSchema);\nconst componentMetaValidator = ajv.compile(componentMetaSchema);\nconst actionSpecValidator = ajv.compile(actionSpecSchema);\nconst dataQuerySpecValidator = ajv.compile(dataQuerySpecSchema);\n\n// ==================== 工具函数 ====================\n\n/**\n * 将 Ajv 错误转换为标准格式\n */\nfunction convertAjvErrors(errors: typeof ajv.errors): ValidationError[] {\n if (!errors) return [];\n\n return errors.map((error) => ({\n path: error.instancePath || '/',\n message: error.message || 'Unknown error',\n keyword: error.keyword,\n expected: error.params,\n actual: error.data,\n }));\n}\n\n/**\n * 创建校验结果\n */\nfunction createResult(valid: boolean, errors: typeof ajv.errors): ValidationResult {\n return {\n valid,\n errors: convertAjvErrors(errors),\n };\n}\n\n// ==================== 页面校验 ====================\n\n/**\n * 校验 PageSchema\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validatePage(data: unknown): ValidationResult {\n const valid = pageValidator(data);\n return createResult(valid, pageValidator.errors);\n}\n\n/**\n * 校验 PageSchema,返回类型安全的结果\n */\nexport function validatePageSchema(data: unknown): ValidationResult & { data?: PageSchema } {\n const result = validatePage(data);\n if (result.valid) {\n return { ...result, data: data as PageSchema };\n }\n return result;\n}\n\n/**\n * 断言为 PageSchema\n */\nexport function assertPageSchema(data: unknown): asserts data is PageSchema {\n const result = validatePage(data);\n if (!result.valid) {\n throw new Error(`Invalid PageSchema: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 组件元数据校验 ====================\n\n/**\n * 校验 ComponentMeta\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateComponentMeta(data: unknown): ValidationResult {\n const valid = componentMetaValidator(data);\n return createResult(valid, componentMetaValidator.errors);\n}\n\n/**\n * 断言为 ComponentMeta\n */\nexport function assertComponentMeta(data: unknown): asserts data is ComponentMeta {\n const result = validateComponentMeta(data);\n if (!result.valid) {\n throw new Error(`Invalid ComponentMeta: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Action 校验 ====================\n\n/**\n * 校验 ActionDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateActionDefinition(data: unknown): ValidationResult {\n const valid = actionSpecValidator(data);\n return createResult(valid, actionSpecValidator.errors);\n}\n\n/**\n * 断言为 ActionDefinition\n */\nexport function assertActionDefinition(data: unknown): asserts data is ActionDefinition {\n const result = validateActionDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 ActionExecuteRequest\n */\nexport function validateActionRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'ActionExecuteRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.actionType !== 'string' || !obj.actionType) {\n errors.push({ path: '/actionType', message: 'actionType is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n if (obj.context === undefined || typeof obj.context !== 'object') {\n errors.push({ path: '/context', message: 'context is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 ActionExecuteRequest\n */\nexport function assertActionRequest(data: unknown): asserts data is ActionExecuteRequest {\n const result = validateActionRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid ActionExecuteRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== Data Query 校验 ====================\n\n/**\n * 校验 DataQueryDefinition\n * @param data 待校验数据\n * @returns 校验结果\n */\nexport function validateDataQueryDefinition(data: unknown): ValidationResult {\n const valid = dataQuerySpecValidator(data);\n return createResult(valid, dataQuerySpecValidator.errors);\n}\n\n/**\n * 断言为 DataQueryDefinition\n */\nexport function assertDataQueryDefinition(data: unknown): asserts data is DataQueryDefinition {\n const result = validateDataQueryDefinition(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryDefinition: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n/**\n * 校验 DataQueryRequest\n */\nexport function validateQueryRequest(data: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n\n if (!data || typeof data !== 'object') {\n errors.push({ path: '/', message: 'DataQueryRequest must be an object' });\n return { valid: false, errors };\n }\n\n const obj = data as Record<string, unknown>;\n\n if (typeof obj.queryVersionId !== 'string' || !obj.queryVersionId) {\n errors.push({ path: '/queryVersionId', message: 'queryVersionId is required and must be a string' });\n }\n\n if (obj.params === undefined || typeof obj.params !== 'object') {\n errors.push({ path: '/params', message: 'params is required and must be an object' });\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * 断言为 DataQueryRequest\n */\nexport function assertQueryRequest(data: unknown): asserts data is DataQueryRequest {\n const result = validateQueryRequest(data);\n if (!result.valid) {\n throw new Error(`Invalid DataQueryRequest: ${result.errors.map((e) => e.message).join(', ')}`);\n }\n}\n\n// ==================== 类型保护函数 ====================\n\n/**\n * 检查是否为有效的 PageSchema\n */\nexport function isPageSchema(value: unknown): value is PageSchema {\n return validatePage(value).valid;\n}\n\n/**\n * 检查是否为有效的 ComponentMeta\n */\nexport function isComponentMeta(value: unknown): value is ComponentMeta {\n return validateComponentMeta(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionDefinition\n */\nexport function isActionDefinition(value: unknown): value is ActionDefinition {\n return validateActionDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryDefinition\n */\nexport function isDataQueryDefinition(value: unknown): value is DataQueryDefinition {\n return validateDataQueryDefinition(value).valid;\n}\n\n/**\n * 检查是否为有效的 ActionExecuteRequest\n */\nexport function isActionRequest(value: unknown): value is ActionExecuteRequest {\n return validateActionRequest(value).valid;\n}\n\n/**\n * 检查是否为有效的 DataQueryRequest\n */\nexport function isQueryRequest(value: unknown): value is DataQueryRequest {\n return validateQueryRequest(value).valid;\n}\n\n// ==================== 批量校验 ====================\n\n/**\n * 批量校验结果\n */\nexport interface BatchValidationResult<T> {\n /** 全部有效 */\n allValid: boolean;\n /** 有效项数量 */\n validCount: number;\n /** 无效项数量 */\n invalidCount: number;\n /** 各项结果 */\n results: Array<{\n index: number;\n valid: boolean;\n data?: T;\n errors: ValidationError[];\n }>;\n}\n\n/**\n * 批量校验 PageSchema\n */\nexport function validatePages(items: unknown[]): BatchValidationResult<PageSchema> {\n const results = items.map((item, index) => {\n const result = validatePage(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as PageSchema) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n/**\n * 批量校验 ComponentMeta\n */\nexport function validateComponentMetas(items: unknown[]): BatchValidationResult<ComponentMeta> {\n const results = items.map((item, index) => {\n const result = validateComponentMeta(item);\n return {\n index,\n valid: result.valid,\n data: result.valid ? (item as ComponentMeta) : undefined,\n errors: result.errors,\n };\n });\n\n const validCount = results.filter((r) => r.valid).length;\n\n return {\n allValid: validCount === items.length,\n validCount,\n invalidCount: items.length - validCount,\n results,\n };\n}\n\n// ==================== 导出 Ajv 实例(供高级用法) ====================\n\nexport { ajv };\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@djvlc/contracts-validators",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "DJV Low-code Platform - 预编译的 Ajv 校验器包",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"clean": "rimraf dist"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@djvlc/contracts-types": "1.
|
|
30
|
-
"@djvlc/contracts-schemas": "1.
|
|
29
|
+
"@djvlc/contracts-types": "1.4.0",
|
|
30
|
+
"@djvlc/contracts-schemas": "1.3.0",
|
|
31
31
|
"ajv": "^8.12.0",
|
|
32
32
|
"ajv-formats": "^3.0.1"
|
|
33
33
|
},
|