@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 CHANGED
@@ -1,888 +1,22 @@
1
- /******/ (() => { // webpackBootstrap
2
- /******/ "use strict";
3
- /******/ // The require scope
4
- /******/ var __webpack_require__ = {};
5
- /******/
6
- /************************************************************************/
7
- /******/ /* webpack/runtime/compat get default export */
8
- /******/ (() => {
9
- /******/ // getDefaultExport function for compatibility with non-harmony modules
10
- /******/ __webpack_require__.n = (module) => {
11
- /******/ var getter = module && module.__esModule ?
12
- /******/ () => (module['default']) :
13
- /******/ () => (module);
14
- /******/ __webpack_require__.d(getter, { a: getter });
15
- /******/ return getter;
16
- /******/ };
17
- /******/ })();
18
- /******/
19
- /******/ /* webpack/runtime/define property getters */
20
- /******/ (() => {
21
- /******/ // define getter functions for harmony exports
22
- /******/ __webpack_require__.d = (exports, definition) => {
23
- /******/ for(var key in definition) {
24
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
25
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
26
- /******/ }
27
- /******/ }
28
- /******/ };
29
- /******/ })();
30
- /******/
31
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
32
- /******/ (() => {
33
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
34
- /******/ })();
35
- /******/
36
- /******/ /* webpack/runtime/make namespace object */
37
- /******/ (() => {
38
- /******/ // define __esModule on exports
39
- /******/ __webpack_require__.r = (exports) => {
40
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
41
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
42
- /******/ }
43
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
44
- /******/ };
45
- /******/ })();
46
- /******/
47
- /************************************************************************/
48
- var __webpack_exports__ = {};
49
- // ESM COMPAT FLAG
50
- __webpack_require__.r(__webpack_exports__);
51
-
52
- // EXPORTS
53
- __webpack_require__.d(__webpack_exports__, {
54
- FieldObject: () => (/* reexport */ FieldObject),
55
- NotDefinedGetError: () => (/* reexport */ NotDefinedGetError),
56
- Schema: () => (/* reexport */ Schema),
57
- TypeObject: () => (/* reexport */ TypeObject),
58
- attachEnumNamespace: () => (/* reexport */ attachEnumNamespace),
59
- capitalizeFirstChar: () => (/* reexport */ capitalizeFirstChar),
60
- factory: () => (/* reexport */ factory),
61
- makeEnumTypeNamePart: () => (/* reexport */ makeEnumTypeNamePart),
62
- parseEnumType: () => (/* reexport */ parseEnumType),
63
- parseType: () => (/* reexport */ parseType),
64
- protectiveFactory: () => (/* reexport */ protectiveFactory),
65
- removeDeletedTypesAndFields: () => (/* reexport */ removeDeletedTypesAndFields),
66
- toNonEnumTitle: () => (/* reexport */ toNonEnumTitle),
67
- toPascalCase: () => (/* reexport */ toPascalCase),
68
- toTitle: () => (/* reexport */ toTitle),
69
- toTypeOrFieldNamePartTitle: () => (/* reexport */ toTypeOrFieldNamePartTitle),
70
- toTypeOrFieldTitle: () => (/* reexport */ toTypeOrFieldTitle),
71
- withOnlyDefinedGets: () => (/* reexport */ withOnlyDefinedGets)
72
- });
73
-
74
- ;// CONCATENATED MODULE: external "lodash"
75
- const external_lodash_namespaceObject = require("lodash");
76
- var external_lodash_default = /*#__PURE__*/__webpack_require__.n(external_lodash_namespaceObject);
77
- ;// CONCATENATED MODULE: external "util"
78
- const external_util_namespaceObject = require("util");
79
- ;// CONCATENATED MODULE: external "memoize-one"
80
- const external_memoize_one_namespaceObject = require("memoize-one");
81
- var external_memoize_one_default = /*#__PURE__*/__webpack_require__.n(external_memoize_one_namespaceObject);
82
- ;// CONCATENATED MODULE: ../helpers/utils/trace.ts
83
-
84
-
85
- const formatWithCustomInspectParams = values => {
86
- return values.map(value => {
87
- if (typeof value === "object") {
88
- return util.inspect(value, {
89
- showHidden: false,
90
- depth: null,
91
- maxArrayLength: null
92
- });
93
- }
94
- return value;
95
- }).join(" ");
96
- };
97
- function assert(condition) {
98
- if (!condition) {
99
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
100
- args[_key - 1] = arguments[_key];
101
- }
102
- const message = args.length > 0 ? formatWithCustomInspectParams(args) : `Assertion failed with no details`;
103
- throw new Error(message);
104
- }
105
- }
106
- function assertWithTraceError(condition) {
107
- if (!condition) {
108
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
109
- args[_key2 - 1] = arguments[_key2];
110
- }
111
- const message = args.length > 0 ? formatWithCustomInspectParams(args) : `Assertion failed with no details`;
112
- traceError(message);
113
- }
114
- }
115
-
116
- // eslint-disable-next-line no-console
117
- let traceErrorSubscribers = [console.error.bind(console)];
118
- const overridden = false;
119
- function subscribeOnTraceError(fn) {
120
- if (overridden) {
121
- throw new Error("can't subscribe while overridden");
122
- }
123
- traceErrorSubscribers.push(fn);
124
- let unsubscribed = false;
125
- return function unsubscribe() {
126
- assert(!unsubscribed, "Can't unsubscribe more than once");
127
- unsubscribed = true;
128
- traceErrorSubscribers = traceErrorSubscribers.filter(x => x !== fn);
129
- };
130
- }
131
- const traceError = external_memoize_one_default()(function traceError() {
132
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
133
- args[_key3] = arguments[_key3];
134
- }
135
- traceErrorSubscribers.forEach(fn => {
136
- fn(...args);
137
- });
138
- });
139
-
140
- // eslint-disable-next-line no-console
141
- let captureMessageSubscribers = [console.info.bind(console)];
142
- function subscribeOnCaptureMessage(fn) {
143
- captureMessageSubscribers.push(fn);
144
- let unsubscribed = false;
145
- return function unsubscribe() {
146
- assert(!unsubscribed, "Can't unsubscribe more than once");
147
- unsubscribed = true;
148
- captureMessageSubscribers = captureMessageSubscribers.filter(x => x !== fn);
149
- };
150
- }
151
- const captureMessage = external_memoize_one_default()(function captureMessage() {
152
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
153
- args[_key4] = arguments[_key4];
154
- }
155
- captureMessageSubscribers.forEach(fn => {
156
- fn(...args);
157
- });
158
- });
159
- const tracedErrorTracker = {};
160
- const traceErrorOncePerSession = (seed, err) => {
161
- if (tracedErrorTracker[seed]) {
162
- return;
163
- }
164
- tracedErrorTracker[seed] = true;
165
- const message = [seed, err].filter(Boolean).join(": ");
166
- traceError(message);
167
- };
168
- const capturedMessageTracker = {};
169
- const captureMessageOncePerSession = (seed, err) => {
170
- if (capturedMessageTracker[seed]) {
171
- return;
172
- }
173
- capturedMessageTracker[seed] = true;
174
- const message = [seed, err].filter(Boolean).join(": ");
175
- captureMessage(message);
176
- };
177
- function withErrorTrace(f) {
178
- return async function () {
179
- try {
180
- return await f(...arguments);
181
- } catch (err) {
182
- traceError(err);
183
- throw err;
184
- }
185
- };
186
- }
187
- ;// CONCATENATED MODULE: ./src/utils.ts
188
-
189
-
190
-
191
-
192
- const jestKey = new Set(["nodeType", "tagName", "hasAttribute"]);
193
-
194
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
195
- const withOnlyDefinedGets = function (target) {
196
- let targetKind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "object";
197
- return new Proxy(target, {
198
- get(target, key) {
199
- if (!(key in target) && "production" !== "production") {}
200
- return target[key];
201
- }
202
- });
203
- };
204
- const getNamePart = str => splitKeyword(str).name;
205
- const capitalizeFirstChar = input => {
206
- const str = input || "";
207
- return str ? str.charAt(0).toUpperCase() + str.slice(1) : str;
208
- };
209
- const replaceTildes = str => (str || "").split("~").join(" ");
210
- const toTypeOrFieldNamePartTitle = external_lodash_default().flow([capitalizeFirstChar, replaceTildes]);
211
- const toTypeOrFieldTitle = external_lodash_default().flow([getNamePart, toTypeOrFieldNamePartTitle]);
212
- const toPascalCase = function () {
213
- let lispCasedString = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
214
- return lispCasedString && (external_lodash_default().last(lispCasedString.split("/")) || "").split("-").map((external_lodash_default()).capitalize).join(" ");
215
- };
216
- const isObsoleteTitle = str => {
217
- const {
218
- name
219
- } = splitKeyword(str);
220
- return name.toLowerCase() === name && !hasTildes(name);
221
- };
222
- const hasTildes = str => str.includes("~");
223
- const toNonEnumTitle = str => {
224
- return isObsoleteTitle(str) ? toPascalCase(str) : toTypeOrFieldTitle(str);
225
- };
226
- const parseEnumType = type => {
227
- const [templateType, targetType] = type.split("_");
228
- const {
229
- name: templateName,
230
- namespace: templateNamespace
231
- } = parseType(templateType);
232
- const {
233
- name: targetName,
234
- namespace: targetNamespace
235
- } = parseType(targetType);
236
- return {
237
- templateName,
238
- templateNamespace,
239
- targetName,
240
- targetNamespace
241
- };
242
- };
243
- const toEnumTitle = type => {
244
- // enum logic
245
- const {
246
- templateName,
247
- targetName
248
- } = parseEnumType(type);
249
- return toTitle(targetName) + " " + toTitle(templateName);
250
- };
251
- const toTitle = typeOrAttr => {
252
- const str = typeOrAttr || "";
253
- return str.includes("_") ? toEnumTitle(str) : toNonEnumTitle(str);
254
- };
255
- const splitKeyword = keyword => {
256
- const str = keyword || "";
257
- const index = str.indexOf("/");
258
- if (index === -1) {
259
- return {
260
- namespace: "",
261
- name: str
262
- };
263
- }
264
- const namespace = str.substring(0, index);
265
- const name = str.substring(index + 1);
266
- return {
267
- namespace,
268
- name
269
- };
270
- };
271
- const parseType = external_lodash_default().memoize(type => {
272
- if (!type.includes("/")) {
273
- traceError(`parseType invalid usage: passed type is '${type}'`);
274
- }
275
- return splitKeyword(type);
276
- });
277
- const makeEnumTypeNamePart = _ref => {
278
- let {
279
- holderType,
280
- enumName
281
- } = _ref;
282
- const {
283
- namespace,
284
- name
285
- } = parseType(holderType);
286
- return `${enumName}_${namespace}/${name}`;
287
- };
288
- const attachEnumNamespace = _ref2 => {
289
- let {
290
- enumNamespace,
291
- typeNamePart
292
- } = _ref2;
293
- return `${enumNamespace}/${typeNamePart}`;
294
- };
295
- const removeDeletedTypesAndFields = rawSchema => {
296
- const {
297
- "fibery/types": rawTypeObjects,
298
- ...schemaRest
299
- } = rawSchema;
300
- const filteredRawTypeObjects = rawTypeObjects.filter(rawTypeObject => rawTypeObject["fibery/deleted?"] !== true).map(rawTypeObject => {
301
- const {
302
- "fibery/fields": rawFieldObjects,
303
- ...rawTypeObjectRest
304
- } = rawTypeObject;
305
- const filteredRawFieldObjects = rawFieldObjects.filter(rawFieldObject => rawFieldObject["fibery/deleted?"] !== true);
306
- return {
307
- ...rawTypeObjectRest,
308
- "fibery/fields": filteredRawFieldObjects
309
- };
310
- });
311
- return {
312
- ...schemaRest,
313
- "fibery/types": filteredRawTypeObjects
314
- };
315
- };
316
- ;// CONCATENATED MODULE: ./src/field-object.ts
317
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
318
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
319
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
320
- /* eslint-disable no-use-before-define */
321
-
322
-
323
- class FieldObject {
324
- constructor(_ref) {
325
- let {
326
- rawFieldObject,
327
- holderType,
328
- resolveTypeObject,
329
- version,
330
- resolveMultiRelatedFieldObjects
331
- } = _ref;
332
- _defineProperty(this, "name", void 0);
333
- _defineProperty(this, "description", void 0);
334
- _defineProperty(this, "id", void 0);
335
- _defineProperty(this, "type", void 0);
336
- _defineProperty(this, "rawMeta", void 0);
337
- _defineProperty(this, "holderType", void 0);
338
- _defineProperty(this, "isCollection", void 0);
339
- _defineProperty(this, "isTitle", void 0);
340
- _defineProperty(this, "isId", void 0);
341
- _defineProperty(this, "isPublicId", void 0);
342
- _defineProperty(this, "isReadOnly", void 0);
343
- _defineProperty(this, "isFormula", void 0);
344
- _defineProperty(this, "isFormulaDisabled", void 0);
345
- _defineProperty(this, "formulaDisableReason", void 0);
346
- _defineProperty(this, "formula", void 0);
347
- _defineProperty(this, "isLookup", void 0);
348
- _defineProperty(this, "hasLinkRule", void 0);
349
- _defineProperty(this, "linkRule", void 0);
350
- _defineProperty(this, "isLinkRuleDisabled", void 0);
351
- _defineProperty(this, "linkRuleDisableReason", void 0);
352
- _defineProperty(this, "relation", void 0);
353
- _defineProperty(this, "multiRelation", void 0);
354
- _defineProperty(this, "defaultValue", void 0);
355
- _defineProperty(this, "objectEditorOrder", void 0);
356
- _defineProperty(this, "isRequired", void 0);
357
- _defineProperty(this, "isHidden", void 0);
358
- _defineProperty(this, "isDeleted", void 0);
359
- _defineProperty(this, "disableLinkExistingItems", void 0);
360
- _defineProperty(this, "version", void 0);
361
- _defineProperty(this, "typeObject", void 0);
362
- _defineProperty(this, "mixinTypeObject", void 0);
363
- _defineProperty(this, "holderTypeObject", void 0);
364
- _defineProperty(this, "nameParts", void 0);
365
- _defineProperty(this, "title", void 0);
366
- _defineProperty(this, "multiRelatedFieldObjects", void 0);
367
- if (!external_lodash_default().isPlainObject(rawFieldObject)) {
368
- throw new Error("rawFieldObject arg must be plain object");
369
- }
370
- if (!external_lodash_default().isString(holderType)) {
371
- throw new Error("holderType arg must be string");
372
- }
373
- if (!external_lodash_default().isFunction(resolveTypeObject)) {
374
- throw new Error("resolveTypeObject arg must be function");
375
- }
376
- if (!external_lodash_default().isFunction(resolveMultiRelatedFieldObjects)) {
377
- throw new Error("resolveMultiRelationFieldObjects arg must be function");
378
- }
379
- this.name = rawFieldObject["fibery/name"];
380
- this.description = rawFieldObject["fibery/description"] || null;
381
- this.id = rawFieldObject["fibery/id"];
382
- this.type = rawFieldObject["fibery/type"];
383
- const rawMeta = rawFieldObject["fibery/meta"] || {};
384
- this.rawMeta = rawMeta;
385
- this.holderType = holderType;
386
- this.isCollection = rawMeta["fibery/collection?"] || false;
387
- this.isTitle = rawMeta["ui/title?"] || false;
388
- this.isId = rawMeta["fibery/id?"] || false;
389
- this.isPublicId = rawMeta["fibery/public-id?"] || false;
390
- this.isReadOnly = rawMeta["fibery/readonly?"] || false;
391
- this.isFormula = rawMeta["formula/formula?"] || false;
392
- this.isFormulaDisabled = rawMeta["formula/disabled?"] || false;
393
- this.formulaDisableReason = rawMeta["formula/disable-reason"] || null;
394
- this.formula = rawMeta["formula/formula"] || null;
395
- this.isLookup = rawMeta["formula/lookup?"] || false;
396
- this.hasLinkRule = rawMeta["link-rule/link-rule?"] || false;
397
- this.linkRule = rawMeta["link-rule/link-rule"] || null;
398
- this.isLinkRuleDisabled = rawMeta["link-rule/disabled?"] || false;
399
- this.linkRuleDisableReason = rawMeta["link-rule/disable-reason"] || null;
400
- this.relation = rawMeta["fibery/relation"] || null;
401
- this.defaultValue = rawMeta["fibery/default-value"] || null;
402
- this.objectEditorOrder = rawMeta["ui/object-editor-order"] || 0;
403
- this.isRequired = rawMeta["fibery/required?"] === true;
404
- this.isHidden = rawMeta["ui/hidden?"] === true;
405
- this.isDeleted = rawFieldObject["fibery/deleted?"] || false;
406
- this.disableLinkExistingItems = rawMeta["ui/disable-link-existing-items"] || false;
407
- this.version = version;
408
- this.multiRelation = rawMeta["fibery/multi-relation"] || null;
409
- Object.defineProperties(this, {
410
- typeObject: {
411
- configurable: false,
412
- enumerable: true,
413
- get: external_lodash_default().once(() => resolveTypeObject(this.type))
414
- },
415
- mixinTypeObject: {
416
- configurable: false,
417
- enumerable: true,
418
- get: external_lodash_default().once(() => {
419
- return this.holderTypeObject.installedMixinTypeObjects.find(mixinTypeObject =>
420
- // eslint-disable-next-line prefer-object-has-own
421
- Object.prototype.hasOwnProperty.call(mixinTypeObject.fieldObjectsByName, this.name) || this.name === "workflow/state" && mixinTypeObject.name === "workflow/workflow");
422
- })
423
- },
424
- holderTypeObject: {
425
- configurable: false,
426
- enumerable: true,
427
- get: external_lodash_default().once(() => {
428
- return resolveTypeObject(holderType);
429
- })
430
- },
431
- nameParts: {
432
- configurable: false,
433
- enumerable: true,
434
- get: external_lodash_default().once(() => parseType(rawFieldObject["fibery/name"]))
435
- },
436
- title: {
437
- configurable: false,
438
- enumerable: true,
439
- get: external_lodash_default().once(() => toNonEnumTitle(rawFieldObject["fibery/name"]))
440
- },
441
- multiRelatedFieldObjects: {
442
- configurable: false,
443
- enumerable: true,
444
- get: external_lodash_default().once(() => {
445
- const {
446
- multiRelation,
447
- typeObject
448
- } = this;
449
- if (!multiRelation || !typeObject.isEntityRef) {
450
- return [];
451
- }
452
- return resolveMultiRelatedFieldObjects(multiRelation);
453
- })
454
- }
455
- });
456
- }
457
- get relatedFieldObject() {
458
- const {
459
- name,
460
- relation,
461
- multiRelation,
462
- typeObject
463
- } = this;
464
- if (!relation && !multiRelation) {
465
- return null;
466
- }
467
- if (!relation && multiRelation && typeObject.isEntityRef) {
468
- return null;
469
- }
470
- let relationKey;
471
- let relationId;
472
- if (relation) {
473
- relationKey = "relation";
474
- relationId = relation;
475
- } else {
476
- relationId = multiRelation;
477
- relationKey = "multiRelation";
478
- }
479
- const selector = this.type !== this.holderType ? fieldObject => fieldObject[relationKey] === relationId : fieldObject => fieldObject[relationKey] === relationId && fieldObject.name !== name;
480
- const fieldObject = this.typeObject.fieldObjects.find(selector);
481
- if (!fieldObject) {
482
- throw new Error(`there no other end for ${relationKey} ${relationId}`);
483
- }
484
- return fieldObject;
485
- }
486
- get cardinality() {
487
- const {
488
- isCollection,
489
- relatedFieldObject,
490
- typeObject
491
- } = this;
492
- if (typeObject.isPrimitive) {
493
- throw new Error("Only non-basic fields have cardinality");
494
- }
495
- if (isCollection && this.rawMeta["fibery/field-reversed-collection?"]) {
496
- return ":cardinality/many-to-many";
497
- }
498
- if (!relatedFieldObject) {
499
- return isCollection ? ":cardinality/one-to-many" : ":cardinality/many-to-one";
500
- }
501
- const isRelationCollection = relatedFieldObject.isCollection;
502
- if (!isCollection && !isRelationCollection) {
503
- return ":cardinality/one-to-one";
504
- }
505
- if (isCollection && !isRelationCollection) {
506
- return ":cardinality/one-to-many";
507
- }
508
- if (!isCollection && isRelationCollection) {
509
- return ":cardinality/many-to-one";
510
- }
511
- if (isCollection && isRelationCollection) {
512
- return ":cardinality/many-to-many";
513
- }
514
- throw new Error("get cardinality invariant");
515
- }
516
-
517
- /** @deprecated use !typeObject.isPrimitive && cardinality === ... instead */
518
- get kind() {
519
- if (this.typeObject.isPrimitive) {
520
- if (this.isCollection) {
521
- throw new Error("basic collection is not implemented");
522
- } else {
523
- return ":field/basic";
524
- }
525
- } else {
526
- if (this.isCollection) {
527
- return ":field/reference-collection";
528
- } else {
529
- return ":field/reference";
530
- }
531
- }
532
- }
533
- }
534
- ;// CONCATENATED MODULE: ./src/schema.ts
535
- function schema_defineProperty(obj, key, value) { key = schema_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
536
- function schema_toPropertyKey(arg) { var key = schema_toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
537
- function schema_toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
538
-
539
- class Schema {
540
- constructor(_ref) {
541
- let {
542
- factory,
543
- rawSchema: {
544
- "fibery/id": id,
545
- "fibery/types": rawTypeObjects,
546
- "fibery/version": version
547
- }
548
- } = _ref;
549
- schema_defineProperty(this, "typeObjects", void 0);
550
- schema_defineProperty(this, "typeObjectsById", void 0);
551
- schema_defineProperty(this, "typeObjectsByName", void 0);
552
- schema_defineProperty(this, "id", void 0);
553
- schema_defineProperty(this, "version", void 0);
554
- if (!Array.isArray(rawTypeObjects)) {
555
- throw new Error("rawTypeObjects arg must be array");
556
- }
557
- Object.defineProperties(this, {
558
- toJSON: {
559
- value: () => ({
560
- "fibery/types": rawTypeObjects,
561
- "fibery/meta": {
562
- "fibery/version": version
563
- }
564
- }),
565
- enumerable: false
566
- }
567
- });
568
- const getTypeComponentTypeToFieldObject = external_lodash_default().once(() => {
569
- const typeComponentTypeToFieldObject = new Map();
570
- this.typeObjects.flatMap(typeObject => typeObject.fieldObjects).filter(fieldObject => {
571
- return fieldObject.rawMeta["fibery/type-component?"] === true && fieldObject.typeObject.rawMeta["fibery/type-component?"] === true;
572
- }).forEach(fieldObject => {
573
- typeComponentTypeToFieldObject.set(fieldObject.type, fieldObject);
574
- });
575
- return typeComponentTypeToFieldObject;
576
- });
577
- let multiRelatedFieldsObjectsMap;
578
- const initMultiRelatedFieldsObjectsMap = () => {
579
- multiRelatedFieldsObjectsMap = new Map();
580
- this.typeObjects.forEach(typeObject => {
581
- typeObject.fieldObjects.forEach(fieldObject => {
582
- if (fieldObject.multiRelation && !fieldObject.typeObject.isEntityRef) {
583
- const store = multiRelatedFieldsObjectsMap.get(fieldObject.multiRelation) || [];
584
- store.push(fieldObject);
585
- multiRelatedFieldsObjectsMap.set(fieldObject.multiRelation, store);
586
- }
587
- });
588
- });
589
- };
590
- this.typeObjects = rawTypeObjects.map(rawTypeObject => factory.makeTypeObject({
591
- rawTypeObject,
592
- resolveTypeObject: type => this.typeObjectsByName[type] || null,
593
- getTypeComponentTypeToFieldObject: type => getTypeComponentTypeToFieldObject().get(type),
594
- resolveMultiRelatedFieldObjects: multiRelation => {
595
- if (!multiRelatedFieldsObjectsMap) {
596
- initMultiRelatedFieldsObjectsMap();
597
- }
598
- return multiRelatedFieldsObjectsMap.get(multiRelation) || [];
599
- },
600
- version
601
- }));
602
- this.typeObjectsById = factory.makeTypeObjectsById(this.typeObjects);
603
- this.typeObjectsByName = factory.makeTypeObjectsByName(this.typeObjects);
604
- this.id = id;
605
- this.version = version;
606
- }
607
- }
608
- ;// CONCATENATED MODULE: external "pluralize"
609
- const external_pluralize_namespaceObject = require("pluralize");
610
- var external_pluralize_default = /*#__PURE__*/__webpack_require__.n(external_pluralize_namespaceObject);
611
- ;// CONCATENATED MODULE: ./src/type-object.ts
612
- function type_object_defineProperty(obj, key, value) { key = type_object_toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
613
- function type_object_toPropertyKey(arg) { var key = type_object_toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
614
- function type_object_toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
615
- /* eslint-disable no-use-before-define */
616
-
617
-
618
-
619
- class TypeObject {
620
- constructor(_ref) {
621
- let {
622
- rawTypeObject,
623
- resolveTypeObject,
624
- getTypeComponentTypeToFieldObject,
625
- version,
626
- factory,
627
- resolveMultiRelatedFieldObjects
628
- } = _ref;
629
- type_object_defineProperty(this, "name", void 0);
630
- type_object_defineProperty(this, "description", void 0);
631
- type_object_defineProperty(this, "id", void 0);
632
- type_object_defineProperty(this, "rawMeta", void 0);
633
- type_object_defineProperty(this, "isDomain", void 0);
634
- type_object_defineProperty(this, "isPlatform", void 0);
635
- type_object_defineProperty(this, "isHighlight", void 0);
636
- type_object_defineProperty(this, "isMixin", void 0);
637
- type_object_defineProperty(this, "mixinIcon", void 0);
638
- type_object_defineProperty(this, "isEnum", void 0);
639
- type_object_defineProperty(this, "isPrimitive", void 0);
640
- type_object_defineProperty(this, "isWriterModeByDefault", void 0);
641
- type_object_defineProperty(this, "nameParts", void 0);
642
- type_object_defineProperty(this, "color", void 0);
643
- type_object_defineProperty(this, "units", void 0);
644
- type_object_defineProperty(this, "installedMixins", void 0);
645
- type_object_defineProperty(this, "syncSource", void 0);
646
- type_object_defineProperty(this, "version", void 0);
647
- type_object_defineProperty(this, "installedMixinTypeObjects", void 0);
648
- type_object_defineProperty(this, "title", void 0);
649
- type_object_defineProperty(this, "pluralTitle", void 0);
650
- type_object_defineProperty(this, "fieldObjects", void 0);
651
- type_object_defineProperty(this, "fieldObjectsById", void 0);
652
- type_object_defineProperty(this, "fieldObjectsByName", void 0);
653
- type_object_defineProperty(this, "typeComponentFieldObject", void 0);
654
- type_object_defineProperty(this, "isDeleted", void 0);
655
- type_object_defineProperty(this, "isEntityRef", void 0);
656
- type_object_defineProperty(this, "_getFieldObjectShortcuts", external_lodash_default().once(() => {
657
- const hasRank = this.installedMixins.has("fibery/rank-mixin");
658
- return this.fieldObjects.reduce((result, fieldObject) => {
659
- if (fieldObject.isId) {
660
- result.idField = fieldObject.name;
661
- result.idFieldObject = fieldObject;
662
- } else if (fieldObject.isPublicId) {
663
- result.publicIdField = fieldObject.name;
664
- result.publicIdFieldObject = fieldObject;
665
- } else if (fieldObject.isTitle) {
666
- result.titleField = fieldObject.name;
667
- result.titleFieldObject = fieldObject;
668
- } else if (hasRank && fieldObject.name === "fibery/rank") {
669
- result.rankField = fieldObject.name;
670
- result.rankFieldObject = fieldObject;
671
- }
672
- return result;
673
- }, {
674
- idField: null,
675
- idFieldObject: null,
676
- publicIdField: null,
677
- publicIdFieldObject: null,
678
- titleField: null,
679
- titleFieldObject: null,
680
- rankField: null,
681
- rankFieldObject: null
682
- });
683
- }));
684
- if (!external_lodash_default().isPlainObject(rawTypeObject)) {
685
- throw new Error("rawTypeObject arg must be plain object");
686
- }
687
- if (!external_lodash_default().isFunction(resolveTypeObject)) {
688
- throw new Error("resolveTypeObject arg must be function");
689
- }
690
- this.name = rawTypeObject["fibery/name"];
691
- this.description = rawTypeObject["fibery/description"] || null;
692
- this.id = rawTypeObject["fibery/id"];
693
- const rawMeta = rawTypeObject["fibery/meta"] || {};
694
- this.rawMeta = rawMeta;
695
- this.isDomain = rawMeta["fibery/domain?"] || false;
696
- this.isPlatform = rawMeta["fibery/platform?"] || false;
697
- this.isHighlight = rawMeta["fibery/highlight?"] || false;
698
- this.isMixin = rawMeta["app/mixin?"] || false;
699
- this.mixinIcon = rawMeta["ui/mixin-icon"] || null;
700
- this.isEnum = rawMeta["fibery/enum?"] || false;
701
- this.isPrimitive = rawMeta["fibery/primitive?"] || false;
702
- this.isWriterModeByDefault = rawMeta["ui/writer-mode?"] || false;
703
- this.isDeleted = rawTypeObject["fibery/deleted?"] || false;
704
- this.nameParts = parseType(this.name);
705
- this.color = rawMeta["ui/color"] || "#4568FB";
706
- this.units = rawMeta["ui/units"] || null;
707
- this.installedMixins = new Set(Object.keys(rawMeta["app/mixins"] || {}));
708
- this.syncSource = rawMeta["sync/source"] || null;
709
- this.version = version;
710
- this.isEntityRef = rawTypeObject["fibery/name"] === "fibery/entity-ref";
711
- const fieldObjectsByNameOnceGetter = external_lodash_default().once(() => {
712
- return factory.makeFieldObjectsByName({
713
- type: this.name,
714
- fieldObjects: this.fieldObjects
715
- });
716
- });
717
- const fieldObjectsGetter = external_lodash_default().once(() => rawTypeObject["fibery/fields"].map(rawFieldObject => {
718
- return factory.makeFieldObject({
719
- rawFieldObject,
720
- holderType: this.name,
721
- resolveTypeObject,
722
- version,
723
- resolveMultiRelatedFieldObjects
724
- });
725
- }));
726
- Object.defineProperties(this, {
727
- toJSON: {
728
- value() {
729
- if (false) {}
730
- return rawTypeObject;
731
- },
732
- enumerable: false
733
- },
734
- fieldObjects: {
735
- configurable: false,
736
- enumerable: true,
737
- get: fieldObjectsGetter
738
- },
739
- typeComponentFieldObject: {
740
- configurable: false,
741
- enumerable: true,
742
- get: () => {
743
- return getTypeComponentTypeToFieldObject(this.name);
744
- }
745
- },
746
- fieldObjectsById: {
747
- configurable: false,
748
- enumerable: true,
749
- get: external_lodash_default().once(() => {
750
- return factory.makeFieldObjectsById({
751
- type: this.name,
752
- fieldObjects: this.fieldObjects
753
- });
754
- })
755
- },
756
- fieldObjectsByName: {
757
- configurable: false,
758
- enumerable: true,
759
- get: fieldObjectsByNameOnceGetter
760
- },
761
- installedMixinTypeObjects: {
762
- configurable: false,
763
- enumerable: true,
764
- get: external_lodash_default().once(() => [...this.installedMixins].map(resolveTypeObject).filter(typeObject => typeObject))
765
- },
766
- title: {
767
- configurable: false,
768
- enumerable: true,
769
- get: external_lodash_default().once(() => toTitle(this.name))
770
- },
771
- pluralTitle: {
772
- configurable: false,
773
- enumerable: true,
774
- get: external_lodash_default().once(() => toTitle(external_pluralize_default().plural(this.name)))
775
- }
776
- });
777
- }
778
- get idField() {
779
- return this._getFieldObjectShortcuts().idField;
780
- }
781
- get idFieldObject() {
782
- return this._getFieldObjectShortcuts().idFieldObject;
783
- }
784
- get publicIdField() {
785
- return this._getFieldObjectShortcuts().publicIdField;
786
- }
787
- get publicIdFieldObject() {
788
- return this._getFieldObjectShortcuts().publicIdFieldObject;
789
- }
790
- get titleField() {
791
- return this._getFieldObjectShortcuts().titleField;
792
- }
793
- get titleFieldObject() {
794
- return this._getFieldObjectShortcuts().titleFieldObject;
795
- }
796
- get rankField() {
797
- return this._getFieldObjectShortcuts().rankField;
798
- }
799
- get rankFieldObject() {
800
- return this._getFieldObjectShortcuts().rankFieldObject;
801
- }
802
- }
803
- ;// CONCATENATED MODULE: ./src/factory.ts
804
-
805
-
806
-
807
-
808
-
809
- const factory = {
810
- makeSchema: function (rawSchema) {
811
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
812
- shouldRemoveDeletedTypesAndFields: true
813
- };
814
- return new Schema({
815
- rawSchema: options.shouldRemoveDeletedTypesAndFields ? removeDeletedTypesAndFields(rawSchema) : rawSchema,
816
- factory
817
- });
818
- },
819
- makeTypeObject: args => new TypeObject({
820
- ...args,
821
- factory
822
- }),
823
- makeTypeObjectsById: typeObjects => external_lodash_default().keyBy(typeObjects, x => x.id),
824
- makeTypeObjectsByName: typeObjects => external_lodash_default().keyBy(typeObjects, x => x.name),
825
- makeFieldObject: args => new FieldObject(args),
826
- makeFieldObjectsById: _ref => {
827
- let {
828
- fieldObjects
829
- } = _ref;
830
- return external_lodash_default().keyBy(fieldObjects, x => x.id);
831
- },
832
- makeFieldObjectsByName: _ref2 => {
833
- let {
834
- fieldObjects
835
- } = _ref2;
836
- return external_lodash_default().keyBy(fieldObjects, x => x.name);
837
- }
838
- };
839
- const protectiveFactory = {
840
- makeSchema: function (rawSchema) {
841
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
842
- shouldRemoveDeletedTypesAndFields: true
843
- };
844
- return withOnlyDefinedGets(new Schema({
845
- rawSchema: options.shouldRemoveDeletedTypesAndFields ? removeDeletedTypesAndFields(rawSchema) : rawSchema,
846
- factory: protectiveFactory
847
- }), `schema`);
848
- },
849
- makeTypeObject: args => {
850
- const typeObject = new TypeObject({
851
- ...args,
852
- factory: protectiveFactory
853
- });
854
- return withOnlyDefinedGets(typeObject, `schema.typeObjectsByName["${typeObject.name}"]`);
855
- },
856
- makeTypeObjectsById: typeObjects => withOnlyDefinedGets(external_lodash_default().keyBy(typeObjects, x => x.id), "schema.typeObjectsById"),
857
- makeTypeObjectsByName: typeObjects => withOnlyDefinedGets(external_lodash_default().keyBy(typeObjects, x => x.name), "schema.typeObjectsByName"),
858
- makeFieldObject: args => {
859
- const fieldObject = new FieldObject(args);
860
- return withOnlyDefinedGets(fieldObject, `schema.typeObjectsByName["${fieldObject.holderType}"].fieldObjectsByName["${fieldObject.name}"]`);
861
- },
862
- makeFieldObjectsById: _ref3 => {
863
- let {
864
- type,
865
- fieldObjects
866
- } = _ref3;
867
- return withOnlyDefinedGets(external_lodash_default().keyBy(fieldObjects, x => x.id), `schema.typeObjectsByName["${type}"].fieldObjectsById`);
868
- },
869
- makeFieldObjectsByName: _ref4 => {
870
- let {
871
- type,
872
- fieldObjects
873
- } = _ref4;
874
- return withOnlyDefinedGets(external_lodash_default().keyBy(fieldObjects, x => x.name), `schema.typeObjectsByName["${type}"].fieldObjectsByName`);
875
- }
876
- };
877
- ;// CONCATENATED MODULE: ./src/errors.ts
878
- class NotDefinedGetError extends Error {}
879
- ;// CONCATENATED MODULE: ./index.ts
880
-
881
-
882
-
883
-
884
-
885
-
886
- module.exports = __webpack_exports__;
887
- /******/ })()
888
- ;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./src/factory"), exports);
18
+ __exportStar(require("./src/schema"), exports);
19
+ __exportStar(require("./src/type-object"), exports);
20
+ __exportStar(require("./src/field-object"), exports);
21
+ __exportStar(require("./src/utils"), exports);
22
+ __exportStar(require("./src/errors"), exports);