@contember/schema-utils 2.1.0-beta.2 → 2.2.0-alpha.1
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/development/index.cjs +11 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +11 -0
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/acl/PredicateDefinitionProcessor.cjs.map +1 -1
- package/dist/development/src/acl/PredicateDefinitionProcessor.js.map +1 -1
- package/dist/development/src/dataUtils.cjs +1 -0
- package/dist/development/src/dataUtils.cjs.map +1 -1
- package/dist/development/src/dataUtils.js +1 -0
- package/dist/development/src/dataUtils.js.map +1 -1
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -1
- package/dist/development/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -1
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs +37 -2
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -1
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js +37 -2
- package/dist/development/src/definition-generator/DefinitionCodeGenerator.js.map +1 -1
- package/dist/development/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -1
- package/dist/development/src/definition-generator/TsDefinitionGenerator.js.map +1 -1
- package/dist/development/src/json-schema/collectUnsupportedKeywords.cjs +45 -0
- package/dist/development/src/json-schema/collectUnsupportedKeywords.cjs.map +1 -0
- package/dist/development/src/json-schema/collectUnsupportedKeywords.js +45 -0
- package/dist/development/src/json-schema/collectUnsupportedKeywords.js.map +1 -0
- package/dist/development/src/json-schema/jsonSchemaToTsType.cjs +138 -0
- package/dist/development/src/json-schema/jsonSchemaToTsType.cjs.map +1 -0
- package/dist/development/src/json-schema/jsonSchemaToTsType.js +138 -0
- package/dist/development/src/json-schema/jsonSchemaToTsType.js.map +1 -0
- package/dist/development/src/json-schema/keywords.cjs +57 -0
- package/dist/development/src/json-schema/keywords.cjs.map +1 -0
- package/dist/development/src/json-schema/keywords.js +57 -0
- package/dist/development/src/json-schema/keywords.js.map +1 -0
- package/dist/development/src/lax/LaxSchemaConverter.cjs.map +1 -1
- package/dist/development/src/lax/LaxSchemaConverter.js.map +1 -1
- package/dist/development/src/model/modelUtils.cjs.map +1 -1
- package/dist/development/src/model/modelUtils.js.map +1 -1
- package/dist/development/src/model/resolveDefaultColumnType.cjs +2 -0
- package/dist/development/src/model/resolveDefaultColumnType.cjs.map +1 -1
- package/dist/development/src/model/resolveDefaultColumnType.js +2 -0
- package/dist/development/src/model/resolveDefaultColumnType.js.map +1 -1
- package/dist/development/src/schemaNormalizer.cjs.map +1 -1
- package/dist/development/src/schemaNormalizer.js.map +1 -1
- package/dist/development/src/type-schema/acl.cjs.map +1 -1
- package/dist/development/src/type-schema/acl.js.map +1 -1
- package/dist/development/src/type-schema/condition.cjs +6 -1
- package/dist/development/src/type-schema/condition.cjs.map +1 -1
- package/dist/development/src/type-schema/condition.js +6 -1
- package/dist/development/src/type-schema/condition.js.map +1 -1
- package/dist/development/src/type-schema/model.cjs +14 -2
- package/dist/development/src/type-schema/model.cjs.map +1 -1
- package/dist/development/src/type-schema/model.js +14 -2
- package/dist/development/src/type-schema/model.js.map +1 -1
- package/dist/development/src/type-schema/settings.cjs +1 -0
- package/dist/development/src/type-schema/settings.cjs.map +1 -1
- package/dist/development/src/type-schema/settings.js +1 -0
- package/dist/development/src/type-schema/settings.js.map +1 -1
- package/dist/development/src/type-schema/where.cjs.map +1 -1
- package/dist/development/src/type-schema/where.js.map +1 -1
- package/dist/development/src/validation/AclValidator.cjs.map +1 -1
- package/dist/development/src/validation/AclValidator.js.map +1 -1
- package/dist/development/src/validation/ActionsValidator.cjs.map +1 -1
- package/dist/development/src/validation/ActionsValidator.js.map +1 -1
- package/dist/development/src/validation/MembershipResolver.cjs.map +1 -1
- package/dist/development/src/validation/MembershipResolver.js.map +1 -1
- package/dist/development/src/validation/ModelValidator.cjs +66 -0
- package/dist/development/src/validation/ModelValidator.cjs.map +1 -1
- package/dist/development/src/validation/ModelValidator.js +66 -0
- package/dist/development/src/validation/ModelValidator.js.map +1 -1
- package/dist/development/src/validation/SchemaValidator.cjs.map +1 -1
- package/dist/development/src/validation/SchemaValidator.js.map +1 -1
- package/dist/development/src/validation/ValidationValidator.cjs.map +1 -1
- package/dist/development/src/validation/ValidationValidator.js.map +1 -1
- package/dist/development/src/validation/errors.cjs.map +1 -1
- package/dist/development/src/validation/errors.js.map +1 -1
- package/dist/production/index.cjs +11 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +11 -0
- package/dist/production/index.js.map +1 -1
- package/dist/production/src/acl/PredicateDefinitionProcessor.cjs.map +1 -1
- package/dist/production/src/acl/PredicateDefinitionProcessor.js.map +1 -1
- package/dist/production/src/dataUtils.cjs +1 -0
- package/dist/production/src/dataUtils.cjs.map +1 -1
- package/dist/production/src/dataUtils.js +1 -0
- package/dist/production/src/dataUtils.js.map +1 -1
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.cjs.map +1 -1
- package/dist/production/src/definition-generator/AclDefinitionCodeGenerator.js.map +1 -1
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs +37 -2
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.cjs.map +1 -1
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js +37 -2
- package/dist/production/src/definition-generator/DefinitionCodeGenerator.js.map +1 -1
- package/dist/production/src/definition-generator/TsDefinitionGenerator.cjs.map +1 -1
- package/dist/production/src/definition-generator/TsDefinitionGenerator.js.map +1 -1
- package/dist/production/src/json-schema/collectUnsupportedKeywords.cjs +45 -0
- package/dist/production/src/json-schema/collectUnsupportedKeywords.cjs.map +1 -0
- package/dist/production/src/json-schema/collectUnsupportedKeywords.js +45 -0
- package/dist/production/src/json-schema/collectUnsupportedKeywords.js.map +1 -0
- package/dist/production/src/json-schema/jsonSchemaToTsType.cjs +138 -0
- package/dist/production/src/json-schema/jsonSchemaToTsType.cjs.map +1 -0
- package/dist/production/src/json-schema/jsonSchemaToTsType.js +138 -0
- package/dist/production/src/json-schema/jsonSchemaToTsType.js.map +1 -0
- package/dist/production/src/json-schema/keywords.cjs +57 -0
- package/dist/production/src/json-schema/keywords.cjs.map +1 -0
- package/dist/production/src/json-schema/keywords.js +57 -0
- package/dist/production/src/json-schema/keywords.js.map +1 -0
- package/dist/production/src/lax/LaxSchemaConverter.cjs.map +1 -1
- package/dist/production/src/lax/LaxSchemaConverter.js.map +1 -1
- package/dist/production/src/model/modelUtils.cjs.map +1 -1
- package/dist/production/src/model/modelUtils.js.map +1 -1
- package/dist/production/src/model/resolveDefaultColumnType.cjs +2 -0
- package/dist/production/src/model/resolveDefaultColumnType.cjs.map +1 -1
- package/dist/production/src/model/resolveDefaultColumnType.js +2 -0
- package/dist/production/src/model/resolveDefaultColumnType.js.map +1 -1
- package/dist/production/src/schemaNormalizer.cjs.map +1 -1
- package/dist/production/src/schemaNormalizer.js.map +1 -1
- package/dist/production/src/type-schema/acl.cjs.map +1 -1
- package/dist/production/src/type-schema/acl.js.map +1 -1
- package/dist/production/src/type-schema/condition.cjs +6 -1
- package/dist/production/src/type-schema/condition.cjs.map +1 -1
- package/dist/production/src/type-schema/condition.js +6 -1
- package/dist/production/src/type-schema/condition.js.map +1 -1
- package/dist/production/src/type-schema/model.cjs +14 -2
- package/dist/production/src/type-schema/model.cjs.map +1 -1
- package/dist/production/src/type-schema/model.js +14 -2
- package/dist/production/src/type-schema/model.js.map +1 -1
- package/dist/production/src/type-schema/settings.cjs +1 -0
- package/dist/production/src/type-schema/settings.cjs.map +1 -1
- package/dist/production/src/type-schema/settings.js +1 -0
- package/dist/production/src/type-schema/settings.js.map +1 -1
- package/dist/production/src/type-schema/where.cjs.map +1 -1
- package/dist/production/src/type-schema/where.js.map +1 -1
- package/dist/production/src/validation/AclValidator.cjs.map +1 -1
- package/dist/production/src/validation/AclValidator.js.map +1 -1
- package/dist/production/src/validation/ActionsValidator.cjs.map +1 -1
- package/dist/production/src/validation/ActionsValidator.js.map +1 -1
- package/dist/production/src/validation/MembershipResolver.cjs.map +1 -1
- package/dist/production/src/validation/MembershipResolver.js.map +1 -1
- package/dist/production/src/validation/ModelValidator.cjs +66 -0
- package/dist/production/src/validation/ModelValidator.cjs.map +1 -1
- package/dist/production/src/validation/ModelValidator.js +66 -0
- package/dist/production/src/validation/ModelValidator.js.map +1 -1
- package/dist/production/src/validation/SchemaValidator.cjs.map +1 -1
- package/dist/production/src/validation/SchemaValidator.js.map +1 -1
- package/dist/production/src/validation/ValidationValidator.cjs.map +1 -1
- package/dist/production/src/validation/ValidationValidator.js.map +1 -1
- package/dist/production/src/validation/errors.cjs.map +1 -1
- package/dist/production/src/validation/errors.js.map +1 -1
- package/dist/tests/cases/unit/jsonSchemaKeywords.test.d.ts +2 -0
- package/dist/tests/cases/unit/jsonSchemaKeywords.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/jsonSchemaToTsType.test.d.ts +2 -0
- package/dist/tests/cases/unit/jsonSchemaToTsType.test.d.ts.map +1 -0
- package/dist/tests/cases/unit/numericColumnCodeGenerator.test.d.ts +2 -0
- package/dist/tests/cases/unit/numericColumnCodeGenerator.test.d.ts.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/acl/index.d.ts +3 -3
- package/dist/types/acl/index.d.ts.map +1 -1
- package/dist/types/dataUtils.d.ts.map +1 -1
- package/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts +1 -1
- package/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts.map +1 -1
- package/dist/types/definition-generator/DefinitionCodeGenerator.d.ts +3 -3
- package/dist/types/definition-generator/DefinitionCodeGenerator.d.ts.map +1 -1
- package/dist/types/definition-generator/TsDefinitionGenerator.d.ts +1 -1
- package/dist/types/definition-generator/TsDefinitionGenerator.d.ts.map +1 -1
- package/dist/types/definition-generator/index.d.ts +4 -4
- package/dist/types/definition-generator/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +11 -10
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/json-schema/collectUnsupportedKeywords.d.ts +20 -0
- package/dist/types/json-schema/collectUnsupportedKeywords.d.ts.map +1 -0
- package/dist/types/json-schema/index.d.ts +4 -0
- package/dist/types/json-schema/index.d.ts.map +1 -0
- package/dist/types/json-schema/jsonSchemaToTsType.d.ts +24 -0
- package/dist/types/json-schema/jsonSchemaToTsType.d.ts.map +1 -0
- package/dist/types/json-schema/keywords.d.ts +28 -0
- package/dist/types/json-schema/keywords.d.ts.map +1 -0
- package/dist/types/lax/LaxSchemaConverter.d.ts +2 -2
- package/dist/types/lax/LaxSchemaConverter.d.ts.map +1 -1
- package/dist/types/lax/index.d.ts +2 -2
- package/dist/types/lax/index.d.ts.map +1 -1
- package/dist/types/model/index.d.ts +3 -3
- package/dist/types/model/index.d.ts.map +1 -1
- package/dist/types/model/resolveDefaultColumnType.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/type-schema/index.d.ts +5 -5
- package/dist/types/type-schema/index.d.ts.map +1 -1
- package/dist/types/type-schema/model.d.ts.map +1 -1
- package/dist/types/type-schema/settings.d.ts +3 -0
- package/dist/types/type-schema/settings.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +3 -3
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/validation/AclValidator.d.ts +1 -1
- package/dist/types/validation/AclValidator.d.ts.map +1 -1
- package/dist/types/validation/ActionsValidator.d.ts +1 -1
- package/dist/types/validation/ActionsValidator.d.ts.map +1 -1
- package/dist/types/validation/ModelValidator.d.ts +3 -1
- package/dist/types/validation/ModelValidator.d.ts.map +1 -1
- package/dist/types/validation/SchemaValidator.d.ts +1 -1
- package/dist/types/validation/SchemaValidator.d.ts.map +1 -1
- package/dist/types/validation/ValidationValidator.d.ts +1 -1
- package/dist/types/validation/ValidationValidator.d.ts.map +1 -1
- package/dist/types/validation/errors.d.ts +1 -1
- package/dist/types/validation/errors.d.ts.map +1 -1
- package/dist/types/validation/index.d.ts +6 -6
- package/dist/types/validation/index.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/acl/PredicateDefinitionProcessor.ts +1 -1
- package/src/acl/index.ts +3 -3
- package/src/dataUtils.ts +1 -0
- package/src/definition-generator/AclDefinitionCodeGenerator.ts +3 -3
- package/src/definition-generator/DefinitionCodeGenerator.ts +44 -7
- package/src/definition-generator/TsDefinitionGenerator.ts +2 -2
- package/src/definition-generator/index.ts +4 -4
- package/src/index.ts +14 -13
- package/src/json-schema/collectUnsupportedKeywords.ts +74 -0
- package/src/json-schema/index.ts +3 -0
- package/src/json-schema/jsonSchemaToTsType.ts +188 -0
- package/src/json-schema/keywords.ts +79 -0
- package/src/lax/LaxSchemaConverter.ts +3 -3
- package/src/lax/index.ts +2 -2
- package/src/model/index.ts +3 -3
- package/src/model/modelUtils.ts +1 -1
- package/src/model/resolveDefaultColumnType.ts +3 -1
- package/src/schemaNormalizer.ts +1 -1
- package/src/type-schema/acl.ts +1 -1
- package/src/type-schema/condition.ts +5 -0
- package/src/type-schema/index.ts +5 -5
- package/src/type-schema/model.ts +12 -0
- package/src/type-schema/settings.ts +1 -0
- package/src/type-schema/where.ts +2 -2
- package/src/utils/index.ts +3 -3
- package/src/validation/AclValidator.ts +4 -4
- package/src/validation/ActionsValidator.ts +4 -4
- package/src/validation/MembershipResolver.ts +3 -3
- package/src/validation/ModelValidator.ts +80 -2
- package/src/validation/SchemaValidator.ts +5 -5
- package/src/validation/ValidationValidator.ts +2 -2
- package/src/validation/errors.ts +2 -0
- package/src/validation/index.ts +6 -6
- package/tests/cases/unit/conditionSchema.test.ts +1 -1
- package/tests/cases/unit/deepCompare.test.ts +1 -1
- package/tests/cases/unit/jsonSchemaKeywords.test.ts +91 -0
- package/tests/cases/unit/jsonSchemaToTsType.test.ts +55 -0
- package/tests/cases/unit/laxSchemaConverter.test.ts +1 -1
- package/tests/cases/unit/membershipResolver.test.ts +1 -1
- package/tests/cases/unit/modelSchema.test.ts +1 -1
- package/tests/cases/unit/modelValidator.test.ts +246 -1
- package/tests/cases/unit/numericColumnCodeGenerator.test.ts +69 -0
- package/tests/cases/unit/printJsvalue.test.ts +1 -1
- package/tests/cases/unit/tsDefinitionGenerator.test.ts +46 -9
- package/tests/cases/unit/whereSchema.test.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/type-schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/type-schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/type-schema/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/type-schema/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAmPzC,eAAO,MAAM,WAAW;;;;;;;;;;;;;kCAzKe,OAAO;;;;;;;;;;;;;EA4K5C,CAAA"}
|
|
@@ -8,6 +8,7 @@ export declare const settingsSchema: {
|
|
|
8
8
|
readonly content?: {
|
|
9
9
|
readonly useExistsInHasManyFilter?: boolean | undefined;
|
|
10
10
|
readonly fullDateTimeResponse?: boolean | undefined;
|
|
11
|
+
readonly dateTimeResponseFormat?: "legacy" | "iso8601" | undefined;
|
|
11
12
|
readonly shortDateResponse?: boolean | undefined;
|
|
12
13
|
readonly uuidVersion?: 4 | 7 | undefined;
|
|
13
14
|
} | undefined;
|
|
@@ -29,12 +30,14 @@ export declare const settingsSchema: {
|
|
|
29
30
|
(input: unknown, path?: PropertyKey[]): {
|
|
30
31
|
readonly useExistsInHasManyFilter?: boolean | undefined;
|
|
31
32
|
readonly fullDateTimeResponse?: boolean | undefined;
|
|
33
|
+
readonly dateTimeResponseFormat?: "legacy" | "iso8601" | undefined;
|
|
32
34
|
readonly shortDateResponse?: boolean | undefined;
|
|
33
35
|
readonly uuidVersion?: 4 | 7 | undefined;
|
|
34
36
|
};
|
|
35
37
|
inner: {
|
|
36
38
|
useExistsInHasManyFilter: Typesafe.Type<boolean>;
|
|
37
39
|
fullDateTimeResponse: Typesafe.Type<boolean>;
|
|
40
|
+
dateTimeResponseFormat: Typesafe.Type<"legacy" | "iso8601">;
|
|
38
41
|
shortDateResponse: Typesafe.Type<boolean>;
|
|
39
42
|
uuidVersion: Typesafe.Type<4 | 7>;
|
|
40
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/type-schema/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAG/C,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/type-schema/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAG/C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBzB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './assertNever';
|
|
2
|
-
export * from './isIt';
|
|
3
|
-
export * from './deepCompare';
|
|
1
|
+
export * from './assertNever.js';
|
|
2
|
+
export * from './isIt.js';
|
|
3
|
+
export * from './deepCompare.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AclValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/AclValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAgB,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"AclValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/AclValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAgB,eAAe,EAAE,MAAM,aAAa,CAAA;AAG3D,qBAAa,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,MAAM;IAEzC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,eAAe,EAAE;IAMtD,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,2BAA2B;IAmCnC,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,iBAAiB;CAYzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ActionsValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAgB,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ActionsValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ActionsValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAgB,eAAe,EAAE,MAAM,aAAa,CAAA;AAa3D,qBAAa,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,MAAM;IAEzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,eAAe,EAAE;IAM1D,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,iBAAiB;CAyCzB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Model } from '@contember/schema';
|
|
2
|
-
import { ValidationError } from './errors';
|
|
2
|
+
import { ValidationError } from './errors.js';
|
|
3
3
|
export declare class ModelValidator {
|
|
4
4
|
private readonly model;
|
|
5
5
|
constructor(model: Model.Schema);
|
|
@@ -7,9 +7,11 @@ export declare class ModelValidator {
|
|
|
7
7
|
private validateEnums;
|
|
8
8
|
private validateEntities;
|
|
9
9
|
private validateEntity;
|
|
10
|
+
private validateIndexes;
|
|
10
11
|
private validateUniqueConstraints;
|
|
11
12
|
private validateColumnNamesCollision;
|
|
12
13
|
private validateField;
|
|
14
|
+
private validateColumnJsonSchema;
|
|
13
15
|
private validateRelation;
|
|
14
16
|
private validateIdentifier;
|
|
15
17
|
private validateEntityName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ModelValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAgB,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ModelValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ModelValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAgB,eAAe,EAAE,MAAM,aAAa,CAAA;AAS3D,qBAAa,cAAc;IACd,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,MAAM;IAEzC,QAAQ,IAAI,eAAe,EAAE;IAQpC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,eAAe;IAwDvB,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,4BAA4B;IA4BpC,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,gBAAgB;IAgIxB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,2BAA2B;IAwCnC,OAAO,CAAC,6BAA6B;CAwBrC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Schema } from '@contember/schema';
|
|
2
|
-
import { ValidationError, ValidationErrorCode } from './errors';
|
|
2
|
+
import { ValidationError, ValidationErrorCode } from './errors.js';
|
|
3
3
|
export interface SchemaValidatorSkippedErrors {
|
|
4
4
|
readonly code: ValidationErrorCode;
|
|
5
5
|
readonly skipUntil?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/SchemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SchemaValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/SchemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAMlE,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qBAAa,eAAe;WACb,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,GAAE,4BAA4B,EAAO,GAAG,eAAe,EAAE;CA0B7G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ValidationValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAgB,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ValidationValidator.d.ts","sourceRoot":"","sources":["../../../src/validation/ValidationValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAgB,eAAe,EAAE,MAAM,aAAa,CAAA;AAG3D,qBAAa,mBAAmB;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK,CAAC,MAAM;IAEzC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,eAAe,EAAE;IAc7D,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,iBAAiB;IA4DzB,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,oBAAoB;CAe5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ValidationErrorCode = 'MODEL_NAME_MISMATCH' | 'MODEL_UNDEFINED_FIELD' | 'MODEL_INVALID_FIELD' | 'MODEL_UNDEFINED_ENTITY' | 'MODEL_RELATION_REQUIRED' | 'MODEL_INVALID_RELATION_DEFINITION' | 'MODEL_INVALID_COLUMN_DEFINITION' | 'MODEL_INVALID_VIEW_USAGE' | 'MODEL_INVALID_IDENTIFIER' | 'MODEL_INVALID_ENTITY_NAME' | 'MODEL_INVALID_CONSTRAINT' | 'MODEL_NAME_COLLISION' | 'ACL_INVALID_CONDITION' | 'ACL_UNDEFINED_VARIABLE' | 'ACL_UNDEFINED_FIELD' | 'ACL_UNDEFINED_PREDICATE' | 'ACL_UNDEFINED_ROLE' | 'ACL_UNDEFINED_ENTITY' | 'ACTIONS_NAME_MISMATCH' | 'ACTIONS_INVALID_CONDITION' | 'ACTIONS_UNDEFINED_FIELD' | 'ACTIONS_UNDEFINED_ENTITY' | 'ACTIONS_UNDEFINED_TRIGGER_TARGET' | 'ACTIONS_INVALID_SELECTION' | 'VALIDATION_UNDEFINED_ENTITY' | 'VALIDATION_UNDEFINED_FIELD' | 'VALIDATION_NOT_IMPLEMENTED';
|
|
1
|
+
export type ValidationErrorCode = 'MODEL_NAME_MISMATCH' | 'MODEL_UNDEFINED_FIELD' | 'MODEL_INVALID_FIELD' | 'MODEL_UNDEFINED_ENTITY' | 'MODEL_RELATION_REQUIRED' | 'MODEL_INVALID_RELATION_DEFINITION' | 'MODEL_INVALID_COLUMN_DEFINITION' | 'MODEL_INVALID_JSON_SCHEMA' | 'MODEL_INVALID_VIEW_USAGE' | 'MODEL_INVALID_IDENTIFIER' | 'MODEL_INVALID_ENTITY_NAME' | 'MODEL_INVALID_CONSTRAINT' | 'MODEL_INVALID_INDEX' | 'MODEL_NAME_COLLISION' | 'ACL_INVALID_CONDITION' | 'ACL_UNDEFINED_VARIABLE' | 'ACL_UNDEFINED_FIELD' | 'ACL_UNDEFINED_PREDICATE' | 'ACL_UNDEFINED_ROLE' | 'ACL_UNDEFINED_ENTITY' | 'ACTIONS_NAME_MISMATCH' | 'ACTIONS_INVALID_CONDITION' | 'ACTIONS_UNDEFINED_FIELD' | 'ACTIONS_UNDEFINED_ENTITY' | 'ACTIONS_UNDEFINED_TRIGGER_TARGET' | 'ACTIONS_INVALID_SELECTION' | 'VALIDATION_UNDEFINED_ENTITY' | 'VALIDATION_UNDEFINED_FIELD' | 'VALIDATION_NOT_IMPLEMENTED';
|
|
2
2
|
export interface ValidationError {
|
|
3
3
|
path: (string | number)[];
|
|
4
4
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/validation/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC5B,qBAAqB,GACrB,uBAAuB,GACvB,qBAAqB,GACrB,wBAAwB,GACxB,yBAAyB,GACzB,mCAAmC,GACnC,iCAAiC,GACjC,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,GAC3B,0BAA0B,GAC1B,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,2BAA2B,GAC3B,yBAAyB,GACzB,0BAA0B,GAC1B,kCAAkC,GAClC,2BAA2B,GAC3B,6BAA6B,GAC7B,4BAA4B,GAC5B,4BAA4B,CAAA;AAE/B,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,mBAAmB,CAAA;CACzB;AAED,qBAAa,YAAY;aACI,MAAM,EAAE,eAAe,EAAE;IAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAhD,MAAM,EAAE,eAAe,EAAE,EAAmB,IAAI,GAAE,MAAM,EAAO;IAE3F,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY;IAIpC,GAAG,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAGrD"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/validation/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC5B,qBAAqB,GACrB,uBAAuB,GACvB,qBAAqB,GACrB,wBAAwB,GACxB,yBAAyB,GACzB,mCAAmC,GACnC,iCAAiC,GACjC,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,GAC3B,0BAA0B,GAC1B,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,2BAA2B,GAC3B,yBAAyB,GACzB,0BAA0B,GAC1B,kCAAkC,GAClC,2BAA2B,GAC3B,6BAA6B,GAC7B,4BAA4B,GAC5B,4BAA4B,CAAA;AAE/B,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,mBAAmB,CAAA;CACzB;AAED,qBAAa,YAAY;aACI,MAAM,EAAE,eAAe,EAAE;IAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAhD,MAAM,EAAE,eAAe,EAAE,EAAmB,IAAI,GAAE,MAAM,EAAO;IAE3F,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY;IAIpC,GAAG,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAGrD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './AclValidator';
|
|
2
|
-
export * from './ModelValidator';
|
|
3
|
-
export * from './ValidationValidator';
|
|
4
|
-
export * from './errors';
|
|
5
|
-
export * from './SchemaValidator';
|
|
6
|
-
export * from './MembershipResolver';
|
|
1
|
+
export * from './AclValidator.js';
|
|
2
|
+
export * from './ModelValidator.js';
|
|
3
|
+
export * from './ValidationValidator.js';
|
|
4
|
+
export * from './errors.js';
|
|
5
|
+
export * from './SchemaValidator.js';
|
|
6
|
+
export * from './MembershipResolver.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/schema-utils",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0-alpha.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/production/index.js",
|
|
6
6
|
"typings": "./dist/types/index.d.ts",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@contember/schema": "2.1.0-beta.
|
|
27
|
-
"@contember/typesafe": "2.1.0-beta.
|
|
26
|
+
"@contember/schema": "2.1.0-beta.2",
|
|
27
|
+
"@contember/typesafe": "2.1.0-beta.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@contember/schema-definition": "2.1.0-beta.
|
|
30
|
+
"@contember/schema-definition": "2.1.0-beta.2",
|
|
31
31
|
"@types/node": "^24.12.0"
|
|
32
32
|
},
|
|
33
33
|
"type": "module",
|
package/src/acl/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './AllowAllPermissionFactory'
|
|
2
|
-
export * from './PredicateDefinitionProcessor'
|
|
3
|
-
export * from './schemaUtils'
|
|
1
|
+
export * from './AllowAllPermissionFactory.js'
|
|
2
|
+
export * from './PredicateDefinitionProcessor.js'
|
|
3
|
+
export * from './schemaUtils.js'
|
package/src/dataUtils.ts
CHANGED
|
@@ -17,6 +17,7 @@ export const resolveDefaultValue = (column: Model.AnyColumn, providers: Pick<Pro
|
|
|
17
17
|
case Model.ColumnType.Int:
|
|
18
18
|
case Model.ColumnType.Enum:
|
|
19
19
|
case Model.ColumnType.Double:
|
|
20
|
+
case Model.ColumnType.Numeric:
|
|
20
21
|
case Model.ColumnType.Bool:
|
|
21
22
|
case Model.ColumnType.Json:
|
|
22
23
|
if (typeof column.default !== 'undefined') {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PredicateDefinitionProcessor } from '../acl'
|
|
2
|
-
import { IndentDecider, Literal, printJsValue } from '../utils/printJsValue'
|
|
1
|
+
import { PredicateDefinitionProcessor } from '../acl/index.js'
|
|
2
|
+
import { IndentDecider, Literal, printJsValue } from '../utils/printJsValue.js'
|
|
3
3
|
import { Acl, Model, Schema } from '@contember/schema'
|
|
4
|
-
import { DefinitionNamingConventions } from './DefinitionNamingConventions'
|
|
4
|
+
import { DefinitionNamingConventions } from './DefinitionNamingConventions.js'
|
|
5
5
|
|
|
6
6
|
const indentFirstLevel: IndentDecider = (val, path) => path.length === 0
|
|
7
7
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Model, Schema, Writable } from '@contember/schema'
|
|
2
|
-
import { acceptFieldVisitor, DefaultNamingConventions, isInverseRelation, NamingConventions, resolveDefaultColumnType } from '../model'
|
|
3
|
-
import { printJsValue } from '../utils/printJsValue'
|
|
4
|
-
import { DefinitionNamingConventions } from './DefinitionNamingConventions'
|
|
5
|
-
import { AclDefinitionCodeGenerator } from './AclDefinitionCodeGenerator'
|
|
2
|
+
import { acceptFieldVisitor, DefaultNamingConventions, isInverseRelation, NamingConventions, resolveDefaultColumnType } from '../model/index.js'
|
|
3
|
+
import { printJsValue } from '../utils/printJsValue.js'
|
|
4
|
+
import { DefinitionNamingConventions } from './DefinitionNamingConventions.js'
|
|
5
|
+
import { AclDefinitionCodeGenerator } from './AclDefinitionCodeGenerator.js'
|
|
6
6
|
|
|
7
7
|
export class DefinitionCodeGenerator {
|
|
8
8
|
constructor(
|
|
@@ -45,9 +45,31 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
private generateIndex({ entity, index }: { entity: Model.Entity; index: Model.Index }): string {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
const hasColumnOptions = index.columnOptions !== undefined && Object.keys(index.columnOptions).length > 0
|
|
49
|
+
if (!index.method && !index.opClass && !index.where && !index.include?.length && !hasColumnOptions) {
|
|
50
|
+
return `@c.Index(${index.fields.map(it => printJsValue(it)).join(', ')})`
|
|
51
|
+
}
|
|
52
|
+
const options: Record<string, unknown> = {
|
|
53
|
+
fields: hasColumnOptions
|
|
54
|
+
? index.fields.map(field => {
|
|
55
|
+
const columnOption = index.columnOptions?.[field]
|
|
56
|
+
return columnOption && Object.keys(columnOption).length > 0 ? { field, ...columnOption } : field
|
|
57
|
+
})
|
|
58
|
+
: index.fields,
|
|
59
|
+
}
|
|
60
|
+
if (index.method) {
|
|
61
|
+
options.method = index.method
|
|
62
|
+
}
|
|
63
|
+
if (index.opClass) {
|
|
64
|
+
options.opClass = index.opClass
|
|
65
|
+
}
|
|
66
|
+
if (index.include?.length) {
|
|
67
|
+
options.include = index.include
|
|
68
|
+
}
|
|
69
|
+
if (index.where) {
|
|
70
|
+
options.where = index.where
|
|
71
|
+
}
|
|
72
|
+
return `@c.Index(${printJsValue(options)})`
|
|
51
73
|
}
|
|
52
74
|
|
|
53
75
|
private generateView({ entity }: { entity: Model.Entity }): string | undefined {
|
|
@@ -190,6 +212,17 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
190
212
|
let parts: string[] = []
|
|
191
213
|
if (column.type === Model.ColumnType.Enum) {
|
|
192
214
|
parts.push(`enumColumn(${column.columnType})`)
|
|
215
|
+
} else if (column.type === Model.ColumnType.Numeric) {
|
|
216
|
+
// numericColumn requires precision and scale, parsed from e.g. "numeric(10, 2)"
|
|
217
|
+
const match = /numeric\s*\(\s*(\d+)\s*,\s*(\d+)\s*\)/i.exec(column.columnType)
|
|
218
|
+
if (match) {
|
|
219
|
+
parts.push(`numericColumn(${match[1]}, ${match[2]})`)
|
|
220
|
+
} else {
|
|
221
|
+
parts.push('numericColumn(30, 10)')
|
|
222
|
+
if (resolveDefaultColumnType(column.type) !== column.columnType) {
|
|
223
|
+
parts.push(`columnType(${printJsValue(column.columnType)})`)
|
|
224
|
+
}
|
|
225
|
+
}
|
|
193
226
|
} else {
|
|
194
227
|
parts.push(`${ColumnToMethodMapping[column.type]}()`)
|
|
195
228
|
const defaultColumnType = resolveDefaultColumnType(column.type)
|
|
@@ -210,6 +243,9 @@ ${Object.values(entity.fields).map(field => this.generateField({ field, entity,
|
|
|
210
243
|
if (column.typeAlias) {
|
|
211
244
|
parts.push(`typeAlias(${printJsValue(column.typeAlias)})`)
|
|
212
245
|
}
|
|
246
|
+
if (column.type === Model.ColumnType.Json && column.schema !== undefined) {
|
|
247
|
+
parts.push(`schema(${printJsValue(column.schema)})`)
|
|
248
|
+
}
|
|
213
249
|
|
|
214
250
|
// todo: sequence
|
|
215
251
|
// todo: maybe single column unique()
|
|
@@ -231,6 +267,7 @@ const ColumnToMethodMapping: {
|
|
|
231
267
|
[Model.ColumnType.Time]: 'timeColumn',
|
|
232
268
|
[Model.ColumnType.Json]: 'jsonColumn',
|
|
233
269
|
[Model.ColumnType.Double]: 'doubleColumn',
|
|
270
|
+
[Model.ColumnType.Numeric]: 'numericColumn',
|
|
234
271
|
[Model.ColumnType.Uuid]: 'uuidColumn',
|
|
235
272
|
[Model.ColumnType.Int]: 'intColumn',
|
|
236
273
|
[Model.ColumnType.String]: 'stringColumn',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Schema } from '@contember/schema'
|
|
2
|
-
import { DefaultNamingConventions, NamingConventions } from '../model'
|
|
3
|
-
import { DefinitionCodeGenerator } from './DefinitionCodeGenerator'
|
|
2
|
+
import { DefaultNamingConventions, NamingConventions } from '../model/index.js'
|
|
3
|
+
import { DefinitionCodeGenerator } from './DefinitionCodeGenerator.js'
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @deprecated use {@link DefinitionCodeGenerator}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './TsDefinitionGenerator'
|
|
2
|
-
export * from './AclDefinitionCodeGenerator'
|
|
3
|
-
export * from './DefinitionCodeGenerator'
|
|
4
|
-
export * from './DefinitionNamingConventions'
|
|
1
|
+
export * from './TsDefinitionGenerator.js'
|
|
2
|
+
export * from './AclDefinitionCodeGenerator.js'
|
|
3
|
+
export * from './DefinitionCodeGenerator.js'
|
|
4
|
+
export * from './DefinitionNamingConventions.js'
|
package/src/index.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { Schema } from '@contember/schema'
|
|
2
|
-
import { emptyModelSchema } from './model'
|
|
2
|
+
import { emptyModelSchema } from './model/index.js'
|
|
3
3
|
import * as Typesafe from '@contember/typesafe'
|
|
4
|
-
import { aclSchema, modelSchema, settingsSchema, validationSchema } from './type-schema'
|
|
5
|
-
import { actionsSchema } from './type-schema/actions'
|
|
4
|
+
import { aclSchema, modelSchema, settingsSchema, validationSchema } from './type-schema/index.js'
|
|
5
|
+
import { actionsSchema } from './type-schema/actions.js'
|
|
6
6
|
|
|
7
|
-
export * from './definition-generator'
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './
|
|
14
|
-
export * from './
|
|
15
|
-
export * from './
|
|
16
|
-
export
|
|
7
|
+
export * from './definition-generator/index.js'
|
|
8
|
+
export * from './json-schema/index.js'
|
|
9
|
+
export * from './lax/index.js'
|
|
10
|
+
export * from './model/index.js'
|
|
11
|
+
export * from './acl/index.js'
|
|
12
|
+
export * from './dataUtils.js'
|
|
13
|
+
export * from './validation/index.js'
|
|
14
|
+
export * from './schemaNormalizer.js'
|
|
15
|
+
export * from './schemaFilter.js'
|
|
16
|
+
export * from './schemaChecksum.js'
|
|
17
|
+
export { compareArraysIgnoreOrder, deepCompare } from './utils/index.js'
|
|
17
18
|
|
|
18
19
|
export const emptySchema: Schema = {
|
|
19
20
|
model: emptyModelSchema,
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { JSONValue } from '@contember/schema'
|
|
2
|
+
import { isRecognizedJsonSchemaKeyword } from './keywords.js'
|
|
3
|
+
|
|
4
|
+
export interface UnsupportedJsonSchemaKeyword {
|
|
5
|
+
/** The offending keyword, e.g. `$ref` or `format`. */
|
|
6
|
+
keyword: string
|
|
7
|
+
/** JSON pointer to the (sub)schema that contains the keyword, e.g. `` (root), `/properties/foo`. */
|
|
8
|
+
path: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const isPlainObject = (value: JSONValue): value is { readonly [key: string]: JSONValue } =>
|
|
12
|
+
typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Recursively walks a supplied JSON Schema and collects every keyword that is neither
|
|
16
|
+
* {@link SUPPORTED_JSON_SCHEMA_KEYWORDS supported} nor an
|
|
17
|
+
* {@link ALLOWED_JSON_SCHEMA_ANNOTATION_KEYWORDS allowed annotation}.
|
|
18
|
+
*
|
|
19
|
+
* Descends into the applicator keywords the validator itself understands — `properties`, `items`,
|
|
20
|
+
* `additionalProperties`, `allOf`, `anyOf`, `oneOf`, `not` — so that an unsupported keyword buried in
|
|
21
|
+
* a nested subschema is still reported (with a JSON pointer to its location).
|
|
22
|
+
*
|
|
23
|
+
* A boolean schema (`true`/`false`) is valid and yields no findings.
|
|
24
|
+
*/
|
|
25
|
+
export const collectUnsupportedJsonSchemaKeywords = (schema: JSONValue): UnsupportedJsonSchemaKeyword[] => {
|
|
26
|
+
const result: UnsupportedJsonSchemaKeyword[] = []
|
|
27
|
+
walk(schema, '', result)
|
|
28
|
+
return result
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const walk = (schema: JSONValue, path: string, result: UnsupportedJsonSchemaKeyword[]): void => {
|
|
32
|
+
if (!isPlainObject(schema)) {
|
|
33
|
+
// boolean schema, or a non-schema leaf reached via a forgiving descent – nothing to check
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
for (const keyword of Object.keys(schema)) {
|
|
38
|
+
if (!isRecognizedJsonSchemaKeyword(keyword)) {
|
|
39
|
+
result.push({ keyword, path })
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// object subschemas
|
|
44
|
+
const properties = schema.properties
|
|
45
|
+
if (isPlainObject(properties)) {
|
|
46
|
+
for (const key of Object.keys(properties)) {
|
|
47
|
+
walk(properties[key], `${path}/properties/${key}`, result)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// `additionalProperties` may be a boolean or a subschema
|
|
52
|
+
if (isPlainObject(schema.additionalProperties)) {
|
|
53
|
+
walk(schema.additionalProperties, `${path}/additionalProperties`, result)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// `items` (draft-07 single schema). Tolerate an array form too so we still descend.
|
|
57
|
+
const items = schema.items
|
|
58
|
+
if (Array.isArray(items)) {
|
|
59
|
+
items.forEach((item, index) => walk(item, `${path}/items/${index}`, result))
|
|
60
|
+
} else if (items !== undefined) {
|
|
61
|
+
walk(items, `${path}/items`, result)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// combinators
|
|
65
|
+
for (const combinator of ['allOf', 'anyOf', 'oneOf'] as const) {
|
|
66
|
+
const subSchemas = schema[combinator]
|
|
67
|
+
if (Array.isArray(subSchemas)) {
|
|
68
|
+
subSchemas.forEach((sub, index) => walk(sub, `${path}/${combinator}/${index}`, result))
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (schema.not !== undefined) {
|
|
72
|
+
walk(schema.not, `${path}/not`, result)
|
|
73
|
+
}
|
|
74
|
+
}
|