@fibery/schema 9.0.0 → 10.0.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/lib/index.js +22 -888
- package/lib/src/errors.d.ts +2 -0
- package/lib/src/errors.js +6 -0
- package/lib/src/factory.d.ts +22 -0
- package/lib/src/factory.js +45 -0
- package/lib/src/field-object.d.ts +84 -0
- package/lib/src/field-object.js +208 -0
- package/lib/src/print-utils.d.ts +2 -0
- package/lib/src/print-utils.js +8 -0
- package/lib/src/schema.d.ts +18 -0
- package/lib/src/schema.js +68 -0
- package/lib/src/type-object.d.ts +100 -0
- package/lib/src/type-object.js +192 -0
- package/lib/src/utils.d.ts +59 -0
- package/lib/src/utils.js +162 -0
- package/package.json +8 -7
- /package/{index.ts → lib/index.d.ts} +0 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TypeObject = void 0;
|
|
7
|
+
/* eslint-disable no-use-before-define */
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
const pluralize_1 = __importDefault(require("pluralize"));
|
|
11
|
+
class TypeObject {
|
|
12
|
+
name;
|
|
13
|
+
description;
|
|
14
|
+
id;
|
|
15
|
+
rawMeta;
|
|
16
|
+
isDomain;
|
|
17
|
+
isPlatform;
|
|
18
|
+
isHighlight;
|
|
19
|
+
isMixin;
|
|
20
|
+
mixinIcon;
|
|
21
|
+
isEnum;
|
|
22
|
+
isPrimitive;
|
|
23
|
+
isWriterModeByDefault;
|
|
24
|
+
nameParts;
|
|
25
|
+
color;
|
|
26
|
+
units;
|
|
27
|
+
installedMixins;
|
|
28
|
+
syncSource;
|
|
29
|
+
version;
|
|
30
|
+
installedMixinTypeObjects;
|
|
31
|
+
title;
|
|
32
|
+
pluralTitle;
|
|
33
|
+
fieldObjects;
|
|
34
|
+
fieldObjectsById;
|
|
35
|
+
fieldObjectsByName;
|
|
36
|
+
typeComponentFieldObject;
|
|
37
|
+
isDeleted;
|
|
38
|
+
isEntityRef;
|
|
39
|
+
constructor({ rawTypeObject, resolveTypeObject, getTypeComponentTypeToFieldObject, version, factory, resolveMultiRelatedFieldObjects, }) {
|
|
40
|
+
if (!lodash_1.default.isPlainObject(rawTypeObject)) {
|
|
41
|
+
throw new Error("rawTypeObject arg must be plain object");
|
|
42
|
+
}
|
|
43
|
+
if (!lodash_1.default.isFunction(resolveTypeObject)) {
|
|
44
|
+
throw new Error("resolveTypeObject arg must be function");
|
|
45
|
+
}
|
|
46
|
+
this.name = rawTypeObject["fibery/name"];
|
|
47
|
+
this.description = rawTypeObject["fibery/description"] || null;
|
|
48
|
+
this.id = rawTypeObject["fibery/id"];
|
|
49
|
+
const rawMeta = rawTypeObject["fibery/meta"] || {};
|
|
50
|
+
this.rawMeta = rawMeta;
|
|
51
|
+
this.isDomain = rawMeta["fibery/domain?"] || false;
|
|
52
|
+
this.isPlatform = rawMeta["fibery/platform?"] || false;
|
|
53
|
+
this.isHighlight = rawMeta["fibery/highlight?"] || false;
|
|
54
|
+
this.isMixin = rawMeta["app/mixin?"] || false;
|
|
55
|
+
this.mixinIcon = rawMeta["ui/mixin-icon"] || null;
|
|
56
|
+
this.isEnum = rawMeta["fibery/enum?"] || false;
|
|
57
|
+
this.isPrimitive = rawMeta["fibery/primitive?"] || false;
|
|
58
|
+
this.isWriterModeByDefault = rawMeta["ui/writer-mode?"] || false;
|
|
59
|
+
this.isDeleted = rawTypeObject["fibery/deleted?"] || false;
|
|
60
|
+
this.nameParts = (0, utils_1.parseType)(this.name);
|
|
61
|
+
this.color = rawMeta["ui/color"] || "#4568FB";
|
|
62
|
+
this.units = rawMeta["ui/units"] || null;
|
|
63
|
+
this.installedMixins = new Set(Object.keys(rawMeta["app/mixins"] || {}));
|
|
64
|
+
this.syncSource = rawMeta["sync/source"] || null;
|
|
65
|
+
this.version = version;
|
|
66
|
+
this.isEntityRef = rawTypeObject["fibery/name"] === "fibery/entity-ref";
|
|
67
|
+
const fieldObjectsByNameOnceGetter = lodash_1.default.once(() => {
|
|
68
|
+
return factory.makeFieldObjectsByName({
|
|
69
|
+
type: this.name,
|
|
70
|
+
fieldObjects: this.fieldObjects,
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
const fieldObjectsGetter = lodash_1.default.once(() => rawTypeObject["fibery/fields"].map((rawFieldObject) => {
|
|
74
|
+
return factory.makeFieldObject({
|
|
75
|
+
rawFieldObject,
|
|
76
|
+
holderType: this.name,
|
|
77
|
+
resolveTypeObject,
|
|
78
|
+
version,
|
|
79
|
+
resolveMultiRelatedFieldObjects,
|
|
80
|
+
});
|
|
81
|
+
}));
|
|
82
|
+
Object.defineProperties(this, {
|
|
83
|
+
toJSON: {
|
|
84
|
+
value() {
|
|
85
|
+
if (process.env.NODE_ENV === "test") {
|
|
86
|
+
return `<schema.typeObjectsByName["${rawTypeObject["fibery/name"]}"]>`;
|
|
87
|
+
}
|
|
88
|
+
return rawTypeObject;
|
|
89
|
+
},
|
|
90
|
+
enumerable: false,
|
|
91
|
+
},
|
|
92
|
+
fieldObjects: {
|
|
93
|
+
configurable: false,
|
|
94
|
+
enumerable: true,
|
|
95
|
+
get: fieldObjectsGetter,
|
|
96
|
+
},
|
|
97
|
+
typeComponentFieldObject: {
|
|
98
|
+
configurable: false,
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: () => {
|
|
101
|
+
return getTypeComponentTypeToFieldObject(this.name);
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
fieldObjectsById: {
|
|
105
|
+
configurable: false,
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: lodash_1.default.once(() => {
|
|
108
|
+
return factory.makeFieldObjectsById({
|
|
109
|
+
type: this.name,
|
|
110
|
+
fieldObjects: this.fieldObjects,
|
|
111
|
+
});
|
|
112
|
+
}),
|
|
113
|
+
},
|
|
114
|
+
fieldObjectsByName: {
|
|
115
|
+
configurable: false,
|
|
116
|
+
enumerable: true,
|
|
117
|
+
get: fieldObjectsByNameOnceGetter,
|
|
118
|
+
},
|
|
119
|
+
installedMixinTypeObjects: {
|
|
120
|
+
configurable: false,
|
|
121
|
+
enumerable: true,
|
|
122
|
+
get: lodash_1.default.once(() => [...this.installedMixins].map(resolveTypeObject).filter((typeObject) => typeObject)),
|
|
123
|
+
},
|
|
124
|
+
title: {
|
|
125
|
+
configurable: false,
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: lodash_1.default.once(() => (0, utils_1.toTitle)(this.name)),
|
|
128
|
+
},
|
|
129
|
+
pluralTitle: {
|
|
130
|
+
configurable: false,
|
|
131
|
+
enumerable: true,
|
|
132
|
+
get: lodash_1.default.once(() => (0, utils_1.toTitle)(pluralize_1.default.plural(this.name))),
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
_getFieldObjectShortcuts = lodash_1.default.once(() => {
|
|
137
|
+
const hasRank = this.installedMixins.has("fibery/rank-mixin");
|
|
138
|
+
return this.fieldObjects.reduce((result, fieldObject) => {
|
|
139
|
+
if (fieldObject.isId) {
|
|
140
|
+
result.idField = fieldObject.name;
|
|
141
|
+
result.idFieldObject = fieldObject;
|
|
142
|
+
}
|
|
143
|
+
else if (fieldObject.isPublicId) {
|
|
144
|
+
result.publicIdField = fieldObject.name;
|
|
145
|
+
result.publicIdFieldObject = fieldObject;
|
|
146
|
+
}
|
|
147
|
+
else if (fieldObject.isTitle) {
|
|
148
|
+
result.titleField = fieldObject.name;
|
|
149
|
+
result.titleFieldObject = fieldObject;
|
|
150
|
+
}
|
|
151
|
+
else if (hasRank && fieldObject.name === "fibery/rank") {
|
|
152
|
+
result.rankField = fieldObject.name;
|
|
153
|
+
result.rankFieldObject = fieldObject;
|
|
154
|
+
}
|
|
155
|
+
return result;
|
|
156
|
+
}, {
|
|
157
|
+
idField: null,
|
|
158
|
+
idFieldObject: null,
|
|
159
|
+
publicIdField: null,
|
|
160
|
+
publicIdFieldObject: null,
|
|
161
|
+
titleField: null,
|
|
162
|
+
titleFieldObject: null,
|
|
163
|
+
rankField: null,
|
|
164
|
+
rankFieldObject: null,
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
get idField() {
|
|
168
|
+
return this._getFieldObjectShortcuts().idField;
|
|
169
|
+
}
|
|
170
|
+
get idFieldObject() {
|
|
171
|
+
return this._getFieldObjectShortcuts().idFieldObject;
|
|
172
|
+
}
|
|
173
|
+
get publicIdField() {
|
|
174
|
+
return this._getFieldObjectShortcuts().publicIdField;
|
|
175
|
+
}
|
|
176
|
+
get publicIdFieldObject() {
|
|
177
|
+
return this._getFieldObjectShortcuts().publicIdFieldObject;
|
|
178
|
+
}
|
|
179
|
+
get titleField() {
|
|
180
|
+
return this._getFieldObjectShortcuts().titleField;
|
|
181
|
+
}
|
|
182
|
+
get titleFieldObject() {
|
|
183
|
+
return this._getFieldObjectShortcuts().titleFieldObject;
|
|
184
|
+
}
|
|
185
|
+
get rankField() {
|
|
186
|
+
return this._getFieldObjectShortcuts().rankField;
|
|
187
|
+
}
|
|
188
|
+
get rankFieldObject() {
|
|
189
|
+
return this._getFieldObjectShortcuts().rankFieldObject;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
exports.TypeObject = TypeObject;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import _ from "lodash";
|
|
2
|
+
import { RawSchema } from "./schema";
|
|
3
|
+
export declare const withOnlyDefinedGets: (target: any, targetKind?: string) => any;
|
|
4
|
+
export declare const capitalizeFirstChar: (input: string) => string;
|
|
5
|
+
export declare const toTypeOrFieldNamePartTitle: (str: string) => string;
|
|
6
|
+
export declare const toTypeOrFieldTitle: (str: string) => string;
|
|
7
|
+
export declare const toPascalCase: (lispCasedString?: string) => string;
|
|
8
|
+
export declare const toNonEnumTitle: (str: string) => string;
|
|
9
|
+
export declare const parseEnumType: (type: string) => {
|
|
10
|
+
templateName: string;
|
|
11
|
+
templateNamespace: string;
|
|
12
|
+
targetName: string;
|
|
13
|
+
targetNamespace: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const toTitle: (typeOrAttr: string) => string;
|
|
16
|
+
export declare const parseType: ((type: any) => {
|
|
17
|
+
namespace: string;
|
|
18
|
+
name: string;
|
|
19
|
+
}) & _.MemoizedFunction;
|
|
20
|
+
export declare const makeEnumTypeNamePart: ({ holderType, enumName }: {
|
|
21
|
+
holderType: string;
|
|
22
|
+
enumName: string;
|
|
23
|
+
}) => string;
|
|
24
|
+
export declare const attachEnumNamespace: ({ enumNamespace, typeNamePart }: {
|
|
25
|
+
enumNamespace: string;
|
|
26
|
+
typeNamePart: string;
|
|
27
|
+
}) => string;
|
|
28
|
+
export declare const removeDeletedTypesAndFields: (rawSchema: RawSchema) => {
|
|
29
|
+
"fibery/types": {
|
|
30
|
+
"fibery/fields": import("./field-object").RawFieldObject[];
|
|
31
|
+
"fibery/id": string;
|
|
32
|
+
"fibery/name": string;
|
|
33
|
+
"fibery/description"?: string | null | undefined;
|
|
34
|
+
"fibery/deleted?"?: boolean | undefined;
|
|
35
|
+
"fibery/meta": {
|
|
36
|
+
"fibery/domain?"?: boolean | undefined;
|
|
37
|
+
"fibery/platform?"?: boolean | undefined;
|
|
38
|
+
"fibery/highlight?"?: boolean | undefined;
|
|
39
|
+
"app/mixin?"?: boolean | undefined;
|
|
40
|
+
"ui/mixin-icon"?: string | undefined;
|
|
41
|
+
"fibery/enum?"?: boolean | undefined;
|
|
42
|
+
"fibery/primitive?"?: boolean | undefined;
|
|
43
|
+
"ui/writer-mode?"?: boolean | undefined;
|
|
44
|
+
"ui/color"?: string | undefined;
|
|
45
|
+
"ui/units"?: unknown[] | undefined;
|
|
46
|
+
"app/mixins"?: Record<string, boolean> | undefined;
|
|
47
|
+
"sync/source"?: {
|
|
48
|
+
appId: string;
|
|
49
|
+
appName: string;
|
|
50
|
+
id: string;
|
|
51
|
+
state: string;
|
|
52
|
+
type: string;
|
|
53
|
+
} | undefined;
|
|
54
|
+
"fibery/secured?"?: boolean | undefined;
|
|
55
|
+
};
|
|
56
|
+
}[];
|
|
57
|
+
"fibery/id": string;
|
|
58
|
+
"fibery/version": string;
|
|
59
|
+
};
|
package/lib/src/utils.js
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.removeDeletedTypesAndFields = exports.attachEnumNamespace = exports.makeEnumTypeNamePart = exports.parseType = exports.toTitle = exports.parseEnumType = exports.toNonEnumTitle = exports.toPascalCase = exports.toTypeOrFieldTitle = exports.toTypeOrFieldNamePartTitle = exports.capitalizeFirstChar = exports.withOnlyDefinedGets = void 0;
|
|
7
|
+
const trace_1 = require("@fibery/helpers/utils/trace");
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
const errors_1 = require("./errors");
|
|
10
|
+
const print_utils_1 = require("./print-utils");
|
|
11
|
+
const jestKey = new Set(["nodeType", "tagName", "hasAttribute"]);
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
const withOnlyDefinedGets = (target, targetKind = "object") => new Proxy(target, {
|
|
14
|
+
get(target, key) {
|
|
15
|
+
if (!(key in target) && process.env.NODE_ENV !== "production") {
|
|
16
|
+
if (key === "__target__") {
|
|
17
|
+
return target;
|
|
18
|
+
}
|
|
19
|
+
if (key === "_reactFragment") {
|
|
20
|
+
// greetings from react-developer-tools
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
if (key === "_error") {
|
|
24
|
+
// greetings from redux-form.deepEqual
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
if (key === "_warning") {
|
|
28
|
+
// greetings from redux-form.deepEqual
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
if (key === "length") {
|
|
32
|
+
// greetings from lodash isArrayLike
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
if (key === "inspect") {
|
|
36
|
+
// greetings from jest console implementation
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
if (key === "@@toStringTag") {
|
|
40
|
+
// greetings from prop-types isSymbol
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
if (key === "$$typeof") {
|
|
44
|
+
// greetings from react-developer-tools
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
if (process.env.NODE_ENV === "test") {
|
|
48
|
+
// greetings from jest
|
|
49
|
+
if (typeof key === "string" && jestKey.has(key)) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
if (key === "@@__IMMUTABLE_ITERABLE__@@") {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
if (key === "@@__IMMUTABLE_RECORD__@@") {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
if (key === "_isMockFunction") {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
if (key === "asymmetricMatch") {
|
|
62
|
+
// greetings from jest expect().toEqual
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
if (key === "then") {
|
|
66
|
+
// Promise.resolve(schema)
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
if (key === "toJSON") {
|
|
70
|
+
return () => "<" + targetKind + ">";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (typeof key === "symbol") {
|
|
74
|
+
// greetings from Object.prototype.toString (Symbol.toStringTag), from react-developer-tools (Symbol.iterator)
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
throw new errors_1.NotDefinedGetError(`${targetKind}${(0, print_utils_1.printJsPath)([key])} is undefined`);
|
|
78
|
+
}
|
|
79
|
+
return target[key];
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
exports.withOnlyDefinedGets = withOnlyDefinedGets;
|
|
83
|
+
const getNamePart = (str) => splitKeyword(str).name;
|
|
84
|
+
const capitalizeFirstChar = (input) => {
|
|
85
|
+
const str = input || "";
|
|
86
|
+
return str ? str.charAt(0).toUpperCase() + str.slice(1) : str;
|
|
87
|
+
};
|
|
88
|
+
exports.capitalizeFirstChar = capitalizeFirstChar;
|
|
89
|
+
const replaceTildes = (str) => (str || "").split("~").join(" ");
|
|
90
|
+
exports.toTypeOrFieldNamePartTitle = lodash_1.default.flow([exports.capitalizeFirstChar, replaceTildes]);
|
|
91
|
+
exports.toTypeOrFieldTitle = lodash_1.default.flow([getNamePart, exports.toTypeOrFieldNamePartTitle]);
|
|
92
|
+
const toPascalCase = (lispCasedString = "") => lispCasedString && (lodash_1.default.last(lispCasedString.split("/")) || "").split("-").map(lodash_1.default.capitalize).join(" ");
|
|
93
|
+
exports.toPascalCase = toPascalCase;
|
|
94
|
+
const isObsoleteTitle = (str) => {
|
|
95
|
+
const { name } = splitKeyword(str);
|
|
96
|
+
return name.toLowerCase() === name && !hasTildes(name);
|
|
97
|
+
};
|
|
98
|
+
const hasTildes = (str) => str.includes("~");
|
|
99
|
+
const toNonEnumTitle = (str) => {
|
|
100
|
+
return isObsoleteTitle(str) ? (0, exports.toPascalCase)(str) : (0, exports.toTypeOrFieldTitle)(str);
|
|
101
|
+
};
|
|
102
|
+
exports.toNonEnumTitle = toNonEnumTitle;
|
|
103
|
+
const parseEnumType = (type) => {
|
|
104
|
+
const [templateType, targetType] = type.split("_");
|
|
105
|
+
const { name: templateName, namespace: templateNamespace } = (0, exports.parseType)(templateType);
|
|
106
|
+
const { name: targetName, namespace: targetNamespace } = (0, exports.parseType)(targetType);
|
|
107
|
+
return { templateName, templateNamespace, targetName, targetNamespace };
|
|
108
|
+
};
|
|
109
|
+
exports.parseEnumType = parseEnumType;
|
|
110
|
+
const toEnumTitle = (type) => {
|
|
111
|
+
// enum logic
|
|
112
|
+
const { templateName, targetName } = (0, exports.parseEnumType)(type);
|
|
113
|
+
return (0, exports.toTitle)(targetName) + " " + (0, exports.toTitle)(templateName);
|
|
114
|
+
};
|
|
115
|
+
const toTitle = (typeOrAttr) => {
|
|
116
|
+
const str = typeOrAttr || "";
|
|
117
|
+
return str.includes("_") ? toEnumTitle(str) : (0, exports.toNonEnumTitle)(str);
|
|
118
|
+
};
|
|
119
|
+
exports.toTitle = toTitle;
|
|
120
|
+
const splitKeyword = (keyword) => {
|
|
121
|
+
const str = keyword || "";
|
|
122
|
+
const index = str.indexOf("/");
|
|
123
|
+
if (index === -1) {
|
|
124
|
+
return {
|
|
125
|
+
namespace: "",
|
|
126
|
+
name: str,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
const namespace = str.substring(0, index);
|
|
130
|
+
const name = str.substring(index + 1);
|
|
131
|
+
return {
|
|
132
|
+
namespace,
|
|
133
|
+
name,
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
exports.parseType = lodash_1.default.memoize((type) => {
|
|
137
|
+
if (!type.includes("/")) {
|
|
138
|
+
(0, trace_1.traceError)(`parseType invalid usage: passed type is '${type}'`);
|
|
139
|
+
}
|
|
140
|
+
return splitKeyword(type);
|
|
141
|
+
});
|
|
142
|
+
const makeEnumTypeNamePart = ({ holderType, enumName }) => {
|
|
143
|
+
const { namespace, name } = (0, exports.parseType)(holderType);
|
|
144
|
+
return `${enumName}_${namespace}/${name}`;
|
|
145
|
+
};
|
|
146
|
+
exports.makeEnumTypeNamePart = makeEnumTypeNamePart;
|
|
147
|
+
const attachEnumNamespace = ({ enumNamespace, typeNamePart }) => {
|
|
148
|
+
return `${enumNamespace}/${typeNamePart}`;
|
|
149
|
+
};
|
|
150
|
+
exports.attachEnumNamespace = attachEnumNamespace;
|
|
151
|
+
const removeDeletedTypesAndFields = (rawSchema) => {
|
|
152
|
+
const { "fibery/types": rawTypeObjects, ...schemaRest } = rawSchema;
|
|
153
|
+
const filteredRawTypeObjects = rawTypeObjects
|
|
154
|
+
.filter((rawTypeObject) => rawTypeObject["fibery/deleted?"] !== true)
|
|
155
|
+
.map((rawTypeObject) => {
|
|
156
|
+
const { "fibery/fields": rawFieldObjects, ...rawTypeObjectRest } = rawTypeObject;
|
|
157
|
+
const filteredRawFieldObjects = rawFieldObjects.filter((rawFieldObject) => rawFieldObject["fibery/deleted?"] !== true);
|
|
158
|
+
return { ...rawTypeObjectRest, "fibery/fields": filteredRawFieldObjects };
|
|
159
|
+
});
|
|
160
|
+
return { ...schemaRest, "fibery/types": filteredRawTypeObjects };
|
|
161
|
+
};
|
|
162
|
+
exports.removeDeletedTypesAndFields = removeDeletedTypesAndFields;
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fibery/schema",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
|
+
"description": "Fibery schema utils",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
|
-
"browser": "./index.ts",
|
|
7
6
|
"files": [
|
|
8
7
|
"./lib"
|
|
9
8
|
],
|
|
@@ -18,14 +17,16 @@
|
|
|
18
17
|
"@babel/core": "7.20.5",
|
|
19
18
|
"@swc/jest": "0.2.29",
|
|
20
19
|
"@types/lodash": "4.14.172",
|
|
20
|
+
"@types/node": "18.11.17",
|
|
21
21
|
"@types/pluralize": "0.0.29",
|
|
22
22
|
"babel-loader": "9.1.0",
|
|
23
23
|
"jest": "27.5.1",
|
|
24
24
|
"jest-junit": "13.0.0",
|
|
25
|
+
"typescript": "5.1.6",
|
|
25
26
|
"webpack": "5.87.0",
|
|
26
27
|
"webpack-cli": "4.10.0",
|
|
27
|
-
"@fibery/
|
|
28
|
-
"@fibery/
|
|
28
|
+
"@fibery/babel-preset": "7.3.0",
|
|
29
|
+
"@fibery/eslint-config": "8.5.0"
|
|
29
30
|
},
|
|
30
31
|
"jest": {
|
|
31
32
|
"testEnvironment": "node",
|
|
@@ -66,8 +67,8 @@
|
|
|
66
67
|
"testURL": "http://localhost"
|
|
67
68
|
},
|
|
68
69
|
"scripts": {
|
|
69
|
-
"build": "
|
|
70
|
-
"test": "
|
|
70
|
+
"build": "rm -rf lib && pnpm exec tsc --project tsconfig.build.json",
|
|
71
|
+
"test": "jest",
|
|
71
72
|
"test:ci": "pnpm run test --reporters=default --reporters=jest-junit",
|
|
72
73
|
"test:coverage": "pnpm run test --coverage --coverageDirectory=${JEST_COVERAGE_RESULT_DIR:-$(pwd)}/coverage/schema --reporters=default --reporters=jest-junit",
|
|
73
74
|
"lint": "eslint ."
|
|
File without changes
|