(allSchemas = [], protectedFields = {})
| 560 | __data: any; |
| 561 | __protectedFields: any; |
| 562 | constructor(allSchemas = [], protectedFields = {}) { |
| 563 | this.__data = {}; |
| 564 | this.__protectedFields = protectedFields; |
| 565 | allSchemas.forEach(schema => { |
| 566 | if (volatileClasses.includes(schema.className)) { |
| 567 | return; |
| 568 | } |
| 569 | Object.defineProperty(this, schema.className, { |
| 570 | get: () => { |
| 571 | if (!this.__data[schema.className]) { |
| 572 | const data = {}; |
| 573 | data.fields = injectDefaultSchema(schema).fields; |
| 574 | data.classLevelPermissions = structuredClone(schema.classLevelPermissions); |
| 575 | data.indexes = schema.indexes; |
| 576 | |
| 577 | const classProtectedFields = this.__protectedFields[schema.className]; |
| 578 | if (classProtectedFields) { |
| 579 | for (const key in classProtectedFields) { |
| 580 | const unq = new Set([ |
| 581 | ...(data.classLevelPermissions.protectedFields[key] || []), |
| 582 | ...classProtectedFields[key], |
| 583 | ]); |
| 584 | data.classLevelPermissions.protectedFields[key] = Array.from(unq); |
| 585 | } |
| 586 | } |
| 587 | |
| 588 | this.__data[schema.className] = data; |
| 589 | } |
| 590 | return this.__data[schema.className]; |
| 591 | }, |
| 592 | }); |
| 593 | }); |
| 594 | |
| 595 | // Inject the in-memory classes |
| 596 | volatileClasses.forEach(className => { |
| 597 | Object.defineProperty(this, className, { |
| 598 | get: () => { |
| 599 | if (!this.__data[className]) { |
| 600 | const schema = injectDefaultSchema({ |
| 601 | className, |
| 602 | fields: {}, |
| 603 | classLevelPermissions: {}, |
| 604 | }); |
| 605 | const data = {}; |
| 606 | data.fields = schema.fields; |
| 607 | data.classLevelPermissions = schema.classLevelPermissions; |
| 608 | data.indexes = schema.indexes; |
| 609 | this.__data[className] = data; |
| 610 | } |
| 611 | return this.__data[className]; |
| 612 | }, |
| 613 | }); |
| 614 | }); |
| 615 | } |
| 616 | } |
| 617 | |
| 618 | const injectDefaultSchema = ({ className, fields, classLevelPermissions, indexes }: Schema) => { |
nothing calls this directly
no test coverage detected