@takeshape/schema 11.25.0 → 11.28.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/refs.d.ts.map +1 -1
- package/dist/refs.js +2 -6
- package/dist/util/merge.d.ts +2 -1
- package/dist/util/merge.d.ts.map +1 -1
- package/dist/util/merge.js +23 -3
- package/es/refs.js +3 -7
- package/es/util/merge.js +23 -4
- package/package.json +5 -5
package/dist/refs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/refs.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,KAAK,KAAK,EAA4C,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/refs.ts"],"names":[],"mappings":"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"}
|
package/dist/refs.js
CHANGED
|
@@ -64,7 +64,6 @@ var _util = require("@takeshape/util");
|
|
|
64
64
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
65
65
|
var _assign = _interopRequireDefault(require("lodash/fp/assign"));
|
|
66
66
|
var _omit = _interopRequireDefault(require("lodash/fp/omit"));
|
|
67
|
-
var _compile = require("ajv/dist/compile");
|
|
68
67
|
var _isString = _interopRequireDefault(require("lodash/isString"));
|
|
69
68
|
var _errors = require("@takeshape/errors");
|
|
70
69
|
var _compact = _interopRequireDefault(require("lodash/compact"));
|
|
@@ -554,14 +553,11 @@ function dereferenceSchema(context, shapeOrFieldSchema, schemaPath = []) {
|
|
|
554
553
|
}
|
|
555
554
|
};
|
|
556
555
|
const merge = (schemas, propName, path) => {
|
|
557
|
-
const
|
|
556
|
+
const resolvedSchemas = schemas.map((schema, index) => {
|
|
558
557
|
const resolved = resolveAll(schema, [...path, propName, index]);
|
|
559
558
|
return resolved && (0, _types.isObjectSchema)(resolved) ? resolved : undefined;
|
|
560
|
-
}).reduce((prev, curr) => (0, _merge.mergeObjectSchemas)(prev, curr), {
|
|
561
|
-
type: 'object',
|
|
562
|
-
properties: {}
|
|
563
559
|
});
|
|
564
|
-
return (
|
|
560
|
+
return (propName === 'allOf' ? _merge.mergeDeepObjectSchemas : _merge.mergeObjectSchemas)(...resolvedSchemas);
|
|
565
561
|
};
|
|
566
562
|
return resolveAll(shapeOrFieldSchema, schemaPath) ?? shapeOrFieldSchema;
|
|
567
563
|
}
|
package/dist/util/merge.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type FormConfig, type ObjectSchema, type ProjectSchemaJSON } from '../project-schema';
|
|
2
2
|
export declare function mergeObjectSchemas(...args: Array<ObjectSchema | undefined>): ObjectSchema;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function mergeDeepObjectSchemas(...args: Array<ObjectSchema | undefined>): ObjectSchema;
|
|
4
|
+
export declare function mergeSchemaProperties(parent: ObjectSchema, overrides: ObjectSchema, deep?: boolean): ObjectSchema;
|
|
4
5
|
export declare function rebaseSchemaProperties(base: ObjectSchema, parent: ObjectSchema, head: ObjectSchema): ObjectSchema;
|
|
5
6
|
export declare function mergeFormProperties(parent: FormConfig, overrides: FormConfig): FormConfig;
|
|
6
7
|
export declare function rebaseFormProperties(base: FormConfig, parent: FormConfig, head: FormConfig): FormConfig;
|
package/dist/util/merge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/util/merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../src/util/merge.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAiB,MAAM,mBAAmB,CAAC;AAE7G,wBAAgB,kBAAkB,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,CAIzF;AAED,wBAAgB,sBAAsB,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,CAI7F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,UAAQ,GAAG,YAAY,CA6B/G;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CAiBjH;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAezF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAgBvG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,CAErE;AAiLD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,iBAAiB,GACtB;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,SAAS,CAAA;CAAC,GAAG;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,iBAAiB,CAAA;CAAC,CAwChG"}
|
package/dist/util/merge.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.mergeDeepObjectSchemas = mergeDeepObjectSchemas;
|
|
6
7
|
exports.mergeFormConfigs = mergeFormConfigs;
|
|
7
8
|
exports.mergeFormProperties = mergeFormProperties;
|
|
8
9
|
exports.mergeObjectSchemas = mergeObjectSchemas;
|
|
@@ -19,18 +20,37 @@ var _set = _interopRequireDefault(require("lodash/set"));
|
|
|
19
20
|
var _last = _interopRequireDefault(require("lodash/last"));
|
|
20
21
|
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
21
22
|
var _pickBy = _interopRequireDefault(require("lodash/pickBy"));
|
|
23
|
+
var _lodash = require("lodash");
|
|
22
24
|
var _types = require("../types");
|
|
23
25
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
26
|
function mergeObjectSchemas(...args) {
|
|
25
|
-
return args.filter(_util.isDefined).reduce(mergeSchemaProperties, {
|
|
27
|
+
return args.filter(_util.isDefined).reduce((parent, schemas) => mergeSchemaProperties(parent, schemas), {
|
|
26
28
|
type: 'object',
|
|
27
29
|
properties: {}
|
|
28
30
|
});
|
|
29
31
|
}
|
|
30
|
-
function
|
|
32
|
+
function mergeDeepObjectSchemas(...args) {
|
|
33
|
+
return args.filter(_util.isDefined).reduce((parent, schemas) => mergeSchemaProperties(parent, schemas, true), {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function mergeSchemaProperties(parent, overrides, deep = false) {
|
|
31
39
|
const result = {
|
|
32
40
|
...parent,
|
|
33
|
-
properties: {
|
|
41
|
+
properties: deep ? (0, _lodash.assignWith)({}, parent.properties, overrides.properties, (objValue, srcValue) => {
|
|
42
|
+
// merge objects if possible
|
|
43
|
+
if (objValue !== undefined && srcValue !== undefined) {
|
|
44
|
+
if ((0, _types.isObjectSchema)(objValue) && (0, _types.isObjectSchema)(srcValue)) {
|
|
45
|
+
return mergeObjectSchemas(objValue, srcValue);
|
|
46
|
+
}
|
|
47
|
+
if (((0, _types.isObjectSchema)(objValue) || (0, _types.isRefSchema)(objValue)) && ((0, _types.isObjectSchema)(srcValue) || (0, _types.isRefSchema)(srcValue))) {
|
|
48
|
+
return {
|
|
49
|
+
allOf: [objValue, srcValue]
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}) : {
|
|
34
54
|
...parent.properties,
|
|
35
55
|
...overrides.properties
|
|
36
56
|
}
|
package/es/refs.js
CHANGED
|
@@ -2,12 +2,11 @@ import { isIntegerLike, isDefined, visit, isRecord } from '@takeshape/util';
|
|
|
2
2
|
import get from 'lodash/get';
|
|
3
3
|
import assign from 'lodash/fp/assign';
|
|
4
4
|
import omit from 'lodash/fp/omit';
|
|
5
|
-
import { resolveSchema } from 'ajv/dist/compile';
|
|
6
5
|
import isString from 'lodash/isString';
|
|
7
6
|
import { NotFoundError } from '@takeshape/errors';
|
|
8
7
|
import compact from 'lodash/compact';
|
|
9
8
|
import { getServiceNamespaces } from './services';
|
|
10
|
-
import { mergeObjectSchemas } from './util/merge';
|
|
9
|
+
import { mergeDeepObjectSchemas, mergeObjectSchemas } from './util/merge';
|
|
11
10
|
import { isScalar } from './scalars';
|
|
12
11
|
import { getRefType, isAllOfSchema, isExtendsSchema, isObjectSchema, isOneOfSchema, isRefSchema, isRefSchemaLegacy } from './types';
|
|
13
12
|
import { getToolRef } from './util';
|
|
@@ -490,14 +489,11 @@ export function dereferenceSchema(context, shapeOrFieldSchema, schemaPath = [])
|
|
|
490
489
|
}
|
|
491
490
|
};
|
|
492
491
|
const merge = (schemas, propName, path) => {
|
|
493
|
-
const
|
|
492
|
+
const resolvedSchemas = schemas.map((schema, index) => {
|
|
494
493
|
const resolved = resolveAll(schema, [...path, propName, index]);
|
|
495
494
|
return resolved && isObjectSchema(resolved) ? resolved : undefined;
|
|
496
|
-
}).reduce((prev, curr) => mergeObjectSchemas(prev, curr), {
|
|
497
|
-
type: 'object',
|
|
498
|
-
properties: {}
|
|
499
495
|
});
|
|
500
|
-
return
|
|
496
|
+
return (propName === 'allOf' ? mergeDeepObjectSchemas : mergeObjectSchemas)(...resolvedSchemas);
|
|
501
497
|
};
|
|
502
498
|
return resolveAll(shapeOrFieldSchema, schemaPath) ?? shapeOrFieldSchema;
|
|
503
499
|
}
|
package/es/util/merge.js
CHANGED
|
@@ -7,17 +7,36 @@ import set from 'lodash/set';
|
|
|
7
7
|
import last from 'lodash/last';
|
|
8
8
|
import omit from 'lodash/omit';
|
|
9
9
|
import pickBy from 'lodash/pickBy';
|
|
10
|
-
import {
|
|
10
|
+
import { assignWith } from 'lodash';
|
|
11
|
+
import { isExtendsSchema, isObjectSchema, isRefSchema } from '../types';
|
|
11
12
|
export function mergeObjectSchemas(...args) {
|
|
12
|
-
return args.filter(isDefined).reduce(mergeSchemaProperties, {
|
|
13
|
+
return args.filter(isDefined).reduce((parent, schemas) => mergeSchemaProperties(parent, schemas), {
|
|
13
14
|
type: 'object',
|
|
14
15
|
properties: {}
|
|
15
16
|
});
|
|
16
17
|
}
|
|
17
|
-
export function
|
|
18
|
+
export function mergeDeepObjectSchemas(...args) {
|
|
19
|
+
return args.filter(isDefined).reduce((parent, schemas) => mergeSchemaProperties(parent, schemas, true), {
|
|
20
|
+
type: 'object',
|
|
21
|
+
properties: {}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export function mergeSchemaProperties(parent, overrides, deep = false) {
|
|
18
25
|
const result = {
|
|
19
26
|
...parent,
|
|
20
|
-
properties: {
|
|
27
|
+
properties: deep ? assignWith({}, parent.properties, overrides.properties, (objValue, srcValue) => {
|
|
28
|
+
// merge objects if possible
|
|
29
|
+
if (objValue !== undefined && srcValue !== undefined) {
|
|
30
|
+
if (isObjectSchema(objValue) && isObjectSchema(srcValue)) {
|
|
31
|
+
return mergeObjectSchemas(objValue, srcValue);
|
|
32
|
+
}
|
|
33
|
+
if ((isObjectSchema(objValue) || isRefSchema(objValue)) && (isObjectSchema(srcValue) || isRefSchema(srcValue))) {
|
|
34
|
+
return {
|
|
35
|
+
allOf: [objValue, srcValue]
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}) : {
|
|
21
40
|
...parent.properties,
|
|
22
41
|
...overrides.properties
|
|
23
42
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@takeshape/schema",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.28.0",
|
|
4
4
|
"description": "TakeShape Schema",
|
|
5
5
|
"homepage": "https://www.takeshape.io",
|
|
6
6
|
"repository": {
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"p-reduce": "^2.1.0",
|
|
29
29
|
"semver": "^7.3.2",
|
|
30
30
|
"tiny-invariant": "^1.2.0",
|
|
31
|
-
"@takeshape/errors": "11.
|
|
32
|
-
"@takeshape/
|
|
33
|
-
"@takeshape/
|
|
31
|
+
"@takeshape/errors": "11.28.0",
|
|
32
|
+
"@takeshape/json-schema": "11.28.0",
|
|
33
|
+
"@takeshape/util": "11.28.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@takeshape/json-schema-to-typescript": "^11.0.0",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"meow": "^9.0.0",
|
|
47
47
|
"p-map": "^5.0.0",
|
|
48
48
|
"shortid": "^2.2.15",
|
|
49
|
-
"@takeshape/infra": "11.
|
|
49
|
+
"@takeshape/infra": "11.28.0"
|
|
50
50
|
},
|
|
51
51
|
"engines": {
|
|
52
52
|
"node": ">=20"
|