{"version":3,"file":"shadow-crud-manager.mjs","sources":["../../../../server/src/services/extension/shadow-crud-manager.ts"],"sourcesContent":["export type ContentTypeConfig = {\n  enabled: boolean;\n\n  mutations: boolean;\n  queries: boolean;\n\n  disabledActions: string[];\n  fields: Map<string, FieldConfig>;\n};\n\nexport type FieldConfig = {\n  enabled: boolean;\n\n  input: boolean;\n  output: boolean;\n\n  filters: boolean;\n};\n\nconst getDefaultContentTypeConfig = (): ContentTypeConfig => ({\n  enabled: true,\n\n  mutations: true,\n  queries: true,\n\n  disabledActions: [],\n  fields: new Map(),\n});\n\nconst getDefaultFieldConfig = (): FieldConfig => ({\n  enabled: true,\n\n  input: true,\n  output: true,\n\n  filters: true,\n});\n\nconst ALL_ACTIONS = '*';\n\nexport default () => {\n  const configs = new Map<string, ContentTypeConfig>();\n\n  return (uid: string) => {\n    if (!configs.has(uid)) {\n      configs.set(uid, getDefaultContentTypeConfig());\n    }\n\n    return {\n      isEnabled() {\n        return configs.get(uid)!.enabled;\n      },\n\n      isDisabled() {\n        return !this.isEnabled();\n      },\n\n      areQueriesEnabled() {\n        return configs.get(uid)!.queries;\n      },\n\n      areQueriesDisabled() {\n        return !this.areQueriesEnabled();\n      },\n\n      areMutationsEnabled() {\n        return configs.get(uid)!.mutations;\n      },\n\n      areMutationsDisabled() {\n        return !this.areMutationsEnabled();\n      },\n\n      isActionEnabled(action: string) {\n        const matchingActions = [action, ALL_ACTIONS];\n\n        return configs\n          .get(uid)!\n          .disabledActions.every((action) => !matchingActions.includes(action));\n      },\n\n      isActionDisabled(action: string) {\n        return !this.isActionEnabled(action);\n      },\n\n      disable() {\n        configs.get(uid)!.enabled = false;\n\n        return this;\n      },\n\n      disableQueries() {\n        configs.get(uid)!.queries = false;\n\n        return this;\n      },\n\n      disableMutations() {\n        configs.get(uid)!.mutations = false;\n\n        return this;\n      },\n\n      disableAction(action: string) {\n        const config = configs.get(uid)!;\n\n        if (!config.disabledActions.includes(action)) {\n          config.disabledActions.push(action);\n        }\n\n        return this;\n      },\n\n      disableActions(actions = []) {\n        actions.forEach((action) => this.disableAction(action));\n\n        return this;\n      },\n\n      field(fieldName: string) {\n        const { fields } = configs.get(uid)!;\n\n        if (!fields.has(fieldName)) {\n          fields.set(fieldName, getDefaultFieldConfig());\n        }\n\n        return {\n          isEnabled() {\n            return fields.get(fieldName)!.enabled;\n          },\n\n          hasInputEnabled() {\n            return fields.get(fieldName)!.input;\n          },\n\n          hasOutputEnabled() {\n            return fields.get(fieldName)!.output;\n          },\n\n          hasFiltersEnabeld() {\n            return fields.get(fieldName)!.filters;\n          },\n\n          disable() {\n            fields.set(fieldName, {\n              enabled: false,\n\n              output: false,\n              input: false,\n\n              filters: false,\n            });\n\n            return this;\n          },\n\n          disableOutput() {\n            fields.get(fieldName)!.output = false;\n\n            return this;\n          },\n\n          disableInput() {\n            fields.get(fieldName)!.input = false;\n\n            return this;\n          },\n\n          disableFilters() {\n            fields.get(fieldName)!.filters = false;\n\n            return this;\n          },\n        };\n      },\n    };\n  };\n};\n"],"names":["getDefaultContentTypeConfig","enabled","mutations","queries","disabledActions","fields","Map","getDefaultFieldConfig","input","output","filters","ALL_ACTIONS","configs","uid","has","set","isEnabled","get","isDisabled","areQueriesEnabled","areQueriesDisabled","areMutationsEnabled","areMutationsDisabled","isActionEnabled","action","matchingActions","every","includes","isActionDisabled","disable","disableQueries","disableMutations","disableAction","config","push","disableActions","actions","forEach","field","fieldName","hasInputEnabled","hasOutputEnabled","hasFiltersEnabeld","disableOutput","disableInput","disableFilters"],"mappings":"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"}