@webiny/tenant-manager 6.4.5-beta.0 → 6.6.0-alpha.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.
Files changed (64) hide show
  1. package/admin/DisableTenant/DisableTenantRepository.d.ts +3 -1
  2. package/admin/DisableTenant/DisableTenantRepository.js +17 -2
  3. package/admin/DisableTenant/DisableTenantRepository.js.map +1 -1
  4. package/admin/DisableTenant/useDisableTenant.js +0 -9
  5. package/admin/DisableTenant/useDisableTenant.js.map +1 -1
  6. package/admin/EnableTenant/EnableTenantRepository.d.ts +3 -1
  7. package/admin/EnableTenant/EnableTenantRepository.js +17 -2
  8. package/admin/EnableTenant/EnableTenantRepository.js.map +1 -1
  9. package/admin/Extension.js +3 -0
  10. package/admin/Extension.js.map +1 -1
  11. package/admin/InstallTenant/InstallTenantGateway.d.ts +11 -0
  12. package/admin/InstallTenant/InstallTenantGateway.js +42 -0
  13. package/admin/InstallTenant/InstallTenantGateway.js.map +1 -0
  14. package/admin/InstallTenant/InstallTenantRepository.d.ts +12 -0
  15. package/admin/InstallTenant/InstallTenantRepository.js +34 -0
  16. package/admin/InstallTenant/InstallTenantRepository.js.map +1 -0
  17. package/admin/InstallTenant/InstallTenantUseCase.d.ts +10 -0
  18. package/admin/InstallTenant/InstallTenantUseCase.js +18 -0
  19. package/admin/InstallTenant/InstallTenantUseCase.js.map +1 -0
  20. package/admin/InstallTenant/abstractions.d.ts +21 -0
  21. package/admin/InstallTenant/abstractions.js +7 -0
  22. package/admin/InstallTenant/abstractions.js.map +1 -0
  23. package/admin/InstallTenant/feature.d.ts +3 -0
  24. package/admin/InstallTenant/feature.js +21 -0
  25. package/admin/InstallTenant/feature.js.map +1 -0
  26. package/admin/InstallTenant/index.d.ts +2 -0
  27. package/admin/InstallTenant/index.js +2 -0
  28. package/admin/InstallTenant/useInstallTenant.d.ts +4 -0
  29. package/admin/InstallTenant/useInstallTenant.js +24 -0
  30. package/admin/InstallTenant/useInstallTenant.js.map +1 -0
  31. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +0 -9
  32. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -1
  33. package/admin/TenantEntryList/FolderNameCell.d.ts +1 -1
  34. package/admin/TenantEntryList/FolderNameCell.js +3 -3
  35. package/admin/TenantEntryList/FolderNameCell.js.map +1 -1
  36. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +15 -26
  37. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -1
  38. package/admin/TenantEntryList/ManageTenant.js +0 -1
  39. package/admin/TenantEntryList/ManageTenant.js.map +1 -1
  40. package/admin/TenantEntryList/TenantNameCell.js +11 -4
  41. package/admin/TenantEntryList/TenantNameCell.js.map +1 -1
  42. package/admin/TenantEntryList.js +1 -1
  43. package/admin/TenantEntryList.js.map +1 -1
  44. package/admin/features/permissions/feature.d.ts +1 -1
  45. package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +1 -1
  46. package/api/graphql/CreateTenantSchema.d.ts +2 -2
  47. package/api/graphql/CreateTenantSchema.js +8 -2
  48. package/api/graphql/CreateTenantSchema.js.map +1 -1
  49. package/api/graphql/DisableTenantSchema.d.ts +2 -2
  50. package/api/graphql/DisableTenantSchema.js +2 -2
  51. package/api/graphql/DisableTenantSchema.js.map +1 -1
  52. package/api/graphql/EnableTenantSchema.d.ts +2 -2
  53. package/api/graphql/EnableTenantSchema.js +2 -2
  54. package/api/graphql/EnableTenantSchema.js.map +1 -1
  55. package/api/graphql/GetCurrentTenantSchema.d.ts +2 -2
  56. package/api/graphql/GetCurrentTenantSchema.js +2 -2
  57. package/api/graphql/GetCurrentTenantSchema.js.map +1 -1
  58. package/api/graphql/InstallTenantSchema.d.ts +2 -2
  59. package/api/graphql/InstallTenantSchema.js +2 -2
  60. package/api/graphql/InstallTenantSchema.js.map +1 -1
  61. package/package.json +15 -17
  62. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.d.ts +0 -16
  63. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +0 -18
  64. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +0 -1
@@ -1,7 +1,9 @@
1
1
  import { DisableTenantRepository as RepositoryAbstraction, DisableTenantGateway } from "./abstractions.js";
2
+ import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
2
3
  declare class DisableTenantRepositoryImpl implements RepositoryAbstraction.Interface {
3
4
  private gateway;
4
- constructor(gateway: DisableTenantGateway.Interface);
5
+ private cacheProvider;
6
+ constructor(gateway: DisableTenantGateway.Interface, cacheProvider: ContentEntriesCacheProvider.Interface);
5
7
  execute(tenantId: string): Promise<void>;
6
8
  }
7
9
  export declare const DisableTenantRepository: typeof DisableTenantRepositoryImpl & {
@@ -1,16 +1,31 @@
1
1
  import { DisableTenantGateway, DisableTenantRepository } from "./abstractions.js";
2
+ import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
3
+ import { TENANT_MODEL_ID } from "../../shared/constants.js";
2
4
  class DisableTenantRepositoryImpl {
3
- constructor(gateway){
5
+ constructor(gateway, cacheProvider){
4
6
  this.gateway = gateway;
7
+ this.cacheProvider = cacheProvider;
5
8
  }
6
9
  async execute(tenantId) {
7
10
  await this.gateway.disableTenant(tenantId);
11
+ const cache = this.cacheProvider.get(TENANT_MODEL_ID);
12
+ cache.updateItems((item)=>{
13
+ if (item.entryId === tenantId) return {
14
+ ...item,
15
+ values: {
16
+ ...item.values,
17
+ status: "disabled"
18
+ }
19
+ };
20
+ return item;
21
+ });
8
22
  }
9
23
  }
10
24
  const DisableTenantRepository_DisableTenantRepository = DisableTenantRepository.createImplementation({
11
25
  implementation: DisableTenantRepositoryImpl,
12
26
  dependencies: [
13
- DisableTenantGateway
27
+ DisableTenantGateway,
28
+ ContentEntriesCacheProvider
14
29
  ]
15
30
  });
16
31
  export { DisableTenantRepository_DisableTenantRepository as DisableTenantRepository };
@@ -1 +1 @@
1
- {"version":3,"file":"admin/DisableTenant/DisableTenantRepository.js","sources":["../../../src/admin/DisableTenant/DisableTenantRepository.ts"],"sourcesContent":["import {\n DisableTenantRepository as RepositoryAbstraction,\n DisableTenantGateway\n} from \"./abstractions.js\";\n\nclass DisableTenantRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(private gateway: DisableTenantGateway.Interface) {}\n\n async execute(tenantId: string): Promise<void> {\n await this.gateway.disableTenant(tenantId);\n }\n}\n\nexport const DisableTenantRepository = RepositoryAbstraction.createImplementation({\n implementation: DisableTenantRepositoryImpl,\n dependencies: [DisableTenantGateway]\n});\n"],"names":["DisableTenantRepositoryImpl","gateway","tenantId","DisableTenantRepository","RepositoryAbstraction","DisableTenantGateway"],"mappings":";AAKA,MAAMA;IACF,YAAoBC,OAAuC,CAAE;aAAzCA,OAAO,GAAPA;IAA0C;IAE9D,MAAM,QAAQC,QAAgB,EAAiB;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAACA;IACrC;AACJ;AAEO,MAAMC,kDAA0BC,wBAAAA,oBAA0C,CAAC;IAC9E,gBAAgBJ;IAChB,cAAc;QAACK;KAAqB;AACxC"}
1
+ {"version":3,"file":"admin/DisableTenant/DisableTenantRepository.js","sources":["../../../src/admin/DisableTenant/DisableTenantRepository.ts"],"sourcesContent":["import {\n DisableTenantRepository as RepositoryAbstraction,\n DisableTenantGateway\n} from \"./abstractions.js\";\nimport { ContentEntriesCacheProvider } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\n\nclass DisableTenantRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private gateway: DisableTenantGateway.Interface,\n private cacheProvider: ContentEntriesCacheProvider.Interface\n ) {}\n\n async execute(tenantId: string): Promise<void> {\n await this.gateway.disableTenant(tenantId);\n\n const cache = this.cacheProvider.get(TENANT_MODEL_ID);\n cache.updateItems(item => {\n if (item.entryId === tenantId) {\n return { ...item, values: { ...item.values, status: \"disabled\" } };\n }\n return item;\n });\n }\n}\n\nexport const DisableTenantRepository = RepositoryAbstraction.createImplementation({\n implementation: DisableTenantRepositoryImpl,\n dependencies: [DisableTenantGateway, ContentEntriesCacheProvider]\n});\n"],"names":["DisableTenantRepositoryImpl","gateway","cacheProvider","tenantId","cache","TENANT_MODEL_ID","item","DisableTenantRepository","RepositoryAbstraction","DisableTenantGateway","ContentEntriesCacheProvider"],"mappings":";;;AAOA,MAAMA;IACF,YACYC,OAAuC,EACvCC,aAAoD,CAC9D;aAFUD,OAAO,GAAPA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,QAAgB,EAAiB;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAACA;QAEjC,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAACC;QACrCD,MAAM,WAAW,CAACE,CAAAA;YACd,IAAIA,KAAK,OAAO,KAAKH,UACjB,OAAO;gBAAE,GAAGG,IAAI;gBAAE,QAAQ;oBAAE,GAAGA,KAAK,MAAM;oBAAE,QAAQ;gBAAW;YAAE;YAErE,OAAOA;QACX;IACJ;AACJ;AAEO,MAAMC,kDAA0BC,wBAAAA,oBAA0C,CAAC;IAC9E,gBAAgBR;IAChB,cAAc;QAACS;QAAsBC;KAA4B;AACrE"}
@@ -1,19 +1,10 @@
1
1
  import { useCallback } from "react";
2
2
  import { useFeature } from "@webiny/app-admin";
3
3
  import { DisableTenantFeature } from "./feature.js";
4
- import { useRecords } from "@webiny/app-aco";
5
4
  const useDisableTenant = (tenant)=>{
6
5
  const { useCase } = useFeature(DisableTenantFeature);
7
- const { updateRecordInCache } = useRecords();
8
6
  const disableTenant = useCallback(async ()=>{
9
7
  await useCase.execute(tenant.entryId);
10
- updateRecordInCache({
11
- ...tenant,
12
- values: {
13
- ...tenant.values,
14
- status: "disabled"
15
- }
16
- });
17
8
  }, [
18
9
  useCase,
19
10
  tenant
@@ -1 +1 @@
1
- {"version":3,"file":"admin/DisableTenant/useDisableTenant.js","sources":["../../../src/admin/DisableTenant/useDisableTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useFeature } from \"@webiny/app-admin\";\nimport { DisableTenantFeature } from \"./feature.js\";\nimport { useRecords } from \"@webiny/app-aco\";\nimport type { TenantEntry } from \"~/admin/types.js\";\n\nexport const useDisableTenant = (tenant: TenantEntry) => {\n const { useCase } = useFeature(DisableTenantFeature);\n const { updateRecordInCache } = useRecords();\n\n const disableTenant = useCallback(async () => {\n await useCase.execute(tenant.entryId);\n\n updateRecordInCache({\n ...tenant,\n values: {\n ...tenant.values,\n status: \"disabled\"\n }\n });\n }, [useCase, tenant]);\n\n return { disableTenant };\n};\n"],"names":["useDisableTenant","tenant","useCase","useFeature","DisableTenantFeature","updateRecordInCache","useRecords","disableTenant","useCallback"],"mappings":";;;;AAMO,MAAMA,mBAAmB,CAACC;IAC7B,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAC/B,MAAM,EAAEC,mBAAmB,EAAE,GAAGC;IAEhC,MAAMC,gBAAgBC,YAAY;QAC9B,MAAMN,QAAQ,OAAO,CAACD,OAAO,OAAO;QAEpCI,oBAAoB;YAChB,GAAGJ,MAAM;YACT,QAAQ;gBACJ,GAAGA,OAAO,MAAM;gBAChB,QAAQ;YACZ;QACJ;IACJ,GAAG;QAACC;QAASD;KAAO;IAEpB,OAAO;QAAEM;IAAc;AAC3B"}
1
+ {"version":3,"file":"admin/DisableTenant/useDisableTenant.js","sources":["../../../src/admin/DisableTenant/useDisableTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useFeature } from \"@webiny/app-admin\";\nimport { DisableTenantFeature } from \"./feature.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\n\nexport const useDisableTenant = (tenant: TenantEntry) => {\n const { useCase } = useFeature(DisableTenantFeature);\n\n const disableTenant = useCallback(async () => {\n await useCase.execute(tenant.entryId);\n }, [useCase, tenant]);\n\n return { disableTenant };\n};\n"],"names":["useDisableTenant","tenant","useCase","useFeature","DisableTenantFeature","disableTenant","useCallback"],"mappings":";;;AAKO,MAAMA,mBAAmB,CAACC;IAC7B,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAE/B,MAAMC,gBAAgBC,YAAY;QAC9B,MAAMJ,QAAQ,OAAO,CAACD,OAAO,OAAO;IACxC,GAAG;QAACC;QAASD;KAAO;IAEpB,OAAO;QAAEI;IAAc;AAC3B"}
@@ -1,7 +1,9 @@
1
1
  import { EnableTenantRepository as RepositoryAbstraction, EnableTenantGateway } from "./abstractions.js";
2
+ import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
2
3
  declare class EnableTenantRepositoryImpl implements RepositoryAbstraction.Interface {
3
4
  private gateway;
4
- constructor(gateway: EnableTenantGateway.Interface);
5
+ private cacheProvider;
6
+ constructor(gateway: EnableTenantGateway.Interface, cacheProvider: ContentEntriesCacheProvider.Interface);
5
7
  execute(tenantId: string): Promise<void>;
6
8
  }
7
9
  export declare const EnableTenantRepository: typeof EnableTenantRepositoryImpl & {
@@ -1,16 +1,31 @@
1
1
  import { EnableTenantGateway, EnableTenantRepository } from "./abstractions.js";
2
+ import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
3
+ import { TENANT_MODEL_ID } from "../../shared/constants.js";
2
4
  class EnableTenantRepositoryImpl {
3
- constructor(gateway){
5
+ constructor(gateway, cacheProvider){
4
6
  this.gateway = gateway;
7
+ this.cacheProvider = cacheProvider;
5
8
  }
6
9
  async execute(tenantId) {
7
10
  await this.gateway.enableTenant(tenantId);
11
+ const cache = this.cacheProvider.get(TENANT_MODEL_ID);
12
+ cache.updateItems((item)=>{
13
+ if (item.entryId === tenantId) return {
14
+ ...item,
15
+ values: {
16
+ ...item.values,
17
+ status: "enabled"
18
+ }
19
+ };
20
+ return item;
21
+ });
8
22
  }
9
23
  }
10
24
  const EnableTenantRepository_EnableTenantRepository = EnableTenantRepository.createImplementation({
11
25
  implementation: EnableTenantRepositoryImpl,
12
26
  dependencies: [
13
- EnableTenantGateway
27
+ EnableTenantGateway,
28
+ ContentEntriesCacheProvider
14
29
  ]
15
30
  });
16
31
  export { EnableTenantRepository_EnableTenantRepository as EnableTenantRepository };
@@ -1 +1 @@
1
- {"version":3,"file":"admin/EnableTenant/EnableTenantRepository.js","sources":["../../../src/admin/EnableTenant/EnableTenantRepository.ts"],"sourcesContent":["import {\n EnableTenantRepository as RepositoryAbstraction,\n EnableTenantGateway\n} from \"./abstractions.js\";\n\nclass EnableTenantRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(private gateway: EnableTenantGateway.Interface) {}\n\n async execute(tenantId: string): Promise<void> {\n await this.gateway.enableTenant(tenantId);\n }\n}\n\nexport const EnableTenantRepository = RepositoryAbstraction.createImplementation({\n implementation: EnableTenantRepositoryImpl,\n dependencies: [EnableTenantGateway]\n});\n"],"names":["EnableTenantRepositoryImpl","gateway","tenantId","EnableTenantRepository","RepositoryAbstraction","EnableTenantGateway"],"mappings":";AAKA,MAAMA;IACF,YAAoBC,OAAsC,CAAE;aAAxCA,OAAO,GAAPA;IAAyC;IAE7D,MAAM,QAAQC,QAAgB,EAAiB;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAACA;IACpC;AACJ;AAEO,MAAMC,gDAAyBC,uBAAAA,oBAA0C,CAAC;IAC7E,gBAAgBJ;IAChB,cAAc;QAACK;KAAoB;AACvC"}
1
+ {"version":3,"file":"admin/EnableTenant/EnableTenantRepository.js","sources":["../../../src/admin/EnableTenant/EnableTenantRepository.ts"],"sourcesContent":["import {\n EnableTenantRepository as RepositoryAbstraction,\n EnableTenantGateway\n} from \"./abstractions.js\";\nimport { ContentEntriesCacheProvider } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\n\nclass EnableTenantRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private gateway: EnableTenantGateway.Interface,\n private cacheProvider: ContentEntriesCacheProvider.Interface\n ) {}\n\n async execute(tenantId: string): Promise<void> {\n await this.gateway.enableTenant(tenantId);\n\n const cache = this.cacheProvider.get(TENANT_MODEL_ID);\n cache.updateItems(item => {\n if (item.entryId === tenantId) {\n return { ...item, values: { ...item.values, status: \"enabled\" } };\n }\n return item;\n });\n }\n}\n\nexport const EnableTenantRepository = RepositoryAbstraction.createImplementation({\n implementation: EnableTenantRepositoryImpl,\n dependencies: [EnableTenantGateway, ContentEntriesCacheProvider]\n});\n"],"names":["EnableTenantRepositoryImpl","gateway","cacheProvider","tenantId","cache","TENANT_MODEL_ID","item","EnableTenantRepository","RepositoryAbstraction","EnableTenantGateway","ContentEntriesCacheProvider"],"mappings":";;;AAOA,MAAMA;IACF,YACYC,OAAsC,EACtCC,aAAoD,CAC9D;aAFUD,OAAO,GAAPA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,QAAgB,EAAiB;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAACA;QAEhC,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAACC;QACrCD,MAAM,WAAW,CAACE,CAAAA;YACd,IAAIA,KAAK,OAAO,KAAKH,UACjB,OAAO;gBAAE,GAAGG,IAAI;gBAAE,QAAQ;oBAAE,GAAGA,KAAK,MAAM;oBAAE,QAAQ;gBAAU;YAAE;YAEpE,OAAOA;QACX;IACJ;AACJ;AAEO,MAAMC,gDAAyBC,uBAAAA,oBAA0C,CAAC;IAC7E,gBAAgBR;IAChB,cAAc;QAACS;QAAqBC;KAA4B;AACpE"}
@@ -12,6 +12,7 @@ import { IsRootTenant } from "./IsRootTenant.js";
12
12
  import { TENANT_MODEL_ID } from "../shared/constants.js";
13
13
  import { SecurityPermission } from "./SecurityPermission.js";
14
14
  import { TmPermissionsFeature } from "./features/permissions/feature.js";
15
+ import { InstallTenantFeature } from "./InstallTenant/index.js";
15
16
  const { Menu: Menu } = AdminConfig;
16
17
  const Extension = ()=>{
17
18
  const { getLink } = useRouter();
@@ -26,6 +27,8 @@ const Extension = ()=>{
26
27
  feature: CurrentTenantFeature
27
28
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
28
29
  feature: TmPermissionsFeature
30
+ }), /*#__PURE__*/ react.createElement(RegisterFeature, {
31
+ feature: InstallTenantFeature
29
32
  }), /*#__PURE__*/ react.createElement(CurrentTenantProvider, null), /*#__PURE__*/ react.createElement(TenantSelector, null), /*#__PURE__*/ react.createElement(TenantEntryList, null), /*#__PURE__*/ react.createElement(SecurityPermission, null), /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(IsRootTenant, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
30
33
  feature: DisableTenantFeature
31
34
  }), /*#__PURE__*/ react.createElement(RegisterFeature, {
@@ -1 +1 @@
1
- {"version":3,"file":"admin/Extension.js","sources":["../../src/admin/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, HasPermission, RegisterFeature } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"@webiny/app-headless-cms\";\nimport { ReactComponent as TenantIcon } from \"@webiny/icons/business.svg\";\n\nimport { TenantEntryList } from \"./TenantEntryList.js\";\nimport { CurrentTenantProvider } from \"./CurrentTenantProvider.js\";\nimport { CurrentTenantFeature } from \"./CurrentTenant/feature.js\";\nimport { DisableTenantFeature } from \"./DisableTenant/index.js\";\nimport { EnableTenantFeature } from \"./EnableTenant/index.js\";\nimport { TenantSelector } from \"./TenantSelector.js\";\nimport { IsRootTenant } from \"./IsRootTenant.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { SecurityPermission } from \"./SecurityPermission.js\";\nimport { TmPermissionsFeature } from \"./features/permissions/feature.js\";\n\nconst { Menu } = AdminConfig;\n\nexport const Extension = () => {\n const { getLink } = useRouter();\n\n const link = getLink(Routes.ContentEntries.List, { modelId: TENANT_MODEL_ID });\n\n const icon = <Menu.Link.Icon element={<TenantIcon />} label={\"Tenant\"} />;\n\n return (\n <>\n <RegisterFeature feature={CurrentTenantFeature} />\n <RegisterFeature feature={TmPermissionsFeature} />\n <CurrentTenantProvider />\n <TenantSelector />\n <TenantEntryList />\n <SecurityPermission />\n <AdminConfig>\n <IsRootTenant>\n <RegisterFeature feature={DisableTenantFeature} />\n <RegisterFeature feature={EnableTenantFeature} />\n <HasPermission name={\"tm.tenant\"}>\n <Menu\n name=\"tenantManager\"\n element={<Menu.Link text=\"Tenant Manager\" icon={icon} to={link} />}\n />\n </HasPermission>\n </IsRootTenant>\n </AdminConfig>\n </>\n );\n};\n"],"names":["Menu","AdminConfig","Extension","getLink","useRouter","link","Routes","TENANT_MODEL_ID","icon","TenantIcon","RegisterFeature","CurrentTenantFeature","TmPermissionsFeature","CurrentTenantProvider","TenantSelector","TenantEntryList","SecurityPermission","IsRootTenant","DisableTenantFeature","EnableTenantFeature","HasPermission"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,EAAEA,MAAAA,IAAI,EAAE,GAAGC;AAEV,MAAMC,YAAY;IACrB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,MAAMC,OAAOF,QAAQG,OAAO,cAAc,CAAC,IAAI,EAAE;QAAE,SAASC;IAAgB;IAE5E,MAAMC,OAAO,WAAPA,GAAO,oBAACR,KAAK,IAAI,CAAC,IAAI;QAAC,uBAAS,oBAACS,gBAAUA;QAAK,OAAO;;IAE7D,OAAO,WAAP,GACI,wDACI,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACC,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACC,gBAAcA,OAAAA,WAAAA,GACf,oBAACC,iBAAeA,OAAAA,WAAAA,GAChB,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACf,aAAWA,MAAAA,WAAAA,GACR,oBAACgB,cAAYA,MAAAA,WAAAA,GACT,oBAACP,iBAAeA;QAAC,SAASQ;sBAC1B,oBAACR,iBAAeA;QAAC,SAASS;sBAC1B,oBAACC,eAAaA;QAAC,MAAM;qBACjB,oBAACpB,MAAIA;QACD,MAAK;QACL,uBAAS,oBAACA,KAAK,IAAI;YAAC,MAAK;YAAiB,MAAMQ;YAAM,IAAIH;;;AAOtF"}
1
+ {"version":3,"file":"admin/Extension.js","sources":["../../src/admin/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, HasPermission, RegisterFeature } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"@webiny/app-headless-cms\";\nimport { ReactComponent as TenantIcon } from \"@webiny/icons/business.svg\";\n\nimport { TenantEntryList } from \"./TenantEntryList.js\";\nimport { CurrentTenantProvider } from \"./CurrentTenantProvider.js\";\nimport { CurrentTenantFeature } from \"./CurrentTenant/feature.js\";\nimport { DisableTenantFeature } from \"./DisableTenant/index.js\";\nimport { EnableTenantFeature } from \"./EnableTenant/index.js\";\nimport { TenantSelector } from \"./TenantSelector.js\";\nimport { IsRootTenant } from \"./IsRootTenant.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { SecurityPermission } from \"./SecurityPermission.js\";\nimport { TmPermissionsFeature } from \"./features/permissions/feature.js\";\nimport { InstallTenantFeature } from \"./InstallTenant/index.js\";\n\nconst { Menu } = AdminConfig;\n\nexport const Extension = () => {\n const { getLink } = useRouter();\n\n const link = getLink(Routes.ContentEntries.List, { modelId: TENANT_MODEL_ID });\n\n const icon = <Menu.Link.Icon element={<TenantIcon />} label={\"Tenant\"} />;\n\n return (\n <>\n <RegisterFeature feature={CurrentTenantFeature} />\n <RegisterFeature feature={TmPermissionsFeature} />\n <RegisterFeature feature={InstallTenantFeature} />\n <CurrentTenantProvider />\n <TenantSelector />\n <TenantEntryList />\n <SecurityPermission />\n <AdminConfig>\n <IsRootTenant>\n <RegisterFeature feature={DisableTenantFeature} />\n <RegisterFeature feature={EnableTenantFeature} />\n <HasPermission name={\"tm.tenant\"}>\n <Menu\n name=\"tenantManager\"\n element={<Menu.Link text=\"Tenant Manager\" icon={icon} to={link} />}\n />\n </HasPermission>\n </IsRootTenant>\n </AdminConfig>\n </>\n );\n};\n"],"names":["Menu","AdminConfig","Extension","getLink","useRouter","link","Routes","TENANT_MODEL_ID","icon","TenantIcon","RegisterFeature","CurrentTenantFeature","TmPermissionsFeature","InstallTenantFeature","CurrentTenantProvider","TenantSelector","TenantEntryList","SecurityPermission","IsRootTenant","DisableTenantFeature","EnableTenantFeature","HasPermission"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,EAAEA,MAAAA,IAAI,EAAE,GAAGC;AAEV,MAAMC,YAAY;IACrB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,MAAMC,OAAOF,QAAQG,OAAO,cAAc,CAAC,IAAI,EAAE;QAAE,SAASC;IAAgB;IAE5E,MAAMC,OAAO,WAAPA,GAAO,oBAACR,KAAK,IAAI,CAAC,IAAI;QAAC,uBAAS,oBAACS,gBAAUA;QAAK,OAAO;;IAE7D,OAAO,WAAP,GACI,wDACI,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACD,iBAAeA;QAAC,SAASE;sBAC1B,oBAACF,iBAAeA;QAAC,SAASG;sBAC1B,oBAACC,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACC,gBAAcA,OAAAA,WAAAA,GACf,oBAACC,iBAAeA,OAAAA,WAAAA,GAChB,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAAChB,aAAWA,MAAAA,WAAAA,GACR,oBAACiB,cAAYA,MAAAA,WAAAA,GACT,oBAACR,iBAAeA;QAAC,SAASS;sBAC1B,oBAACT,iBAAeA;QAAC,SAASU;sBAC1B,oBAACC,eAAaA;QAAC,MAAM;qBACjB,oBAACrB,MAAIA;QACD,MAAK;QACL,uBAAS,oBAACA,KAAK,IAAI;YAAC,MAAK;YAAiB,MAAMQ;YAAM,IAAIH;;;AAOtF"}
@@ -0,0 +1,11 @@
1
+ import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient/index.js";
2
+ import { InstallTenantGateway as GatewayAbstraction } from "./abstractions.js";
3
+ declare class InstallTenantGraphQLGateway implements GatewayAbstraction.Interface {
4
+ private client;
5
+ constructor(client: MainGraphQLClient.Interface);
6
+ installTenant(tenantId: string): Promise<boolean>;
7
+ }
8
+ export declare const InstallTenantGateway: typeof InstallTenantGraphQLGateway & {
9
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IInstallTenantGateway>;
10
+ };
11
+ export {};
@@ -0,0 +1,42 @@
1
+ import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient/index.js";
2
+ import { InstallTenantGateway } from "./abstractions.js";
3
+ const INSTALL_TENANT = `
4
+ mutation InstallTenant($tenantId: ID!) {
5
+ tenantManager {
6
+ installTenant(tenantId: $tenantId) {
7
+ data
8
+ error {
9
+ code
10
+ message
11
+ data
12
+ }
13
+ }
14
+ }
15
+ }
16
+ `;
17
+ class InstallTenantGraphQLGateway {
18
+ constructor(client){
19
+ this.client = client;
20
+ }
21
+ async installTenant(tenantId) {
22
+ const response = await this.client.execute({
23
+ query: INSTALL_TENANT,
24
+ variables: {
25
+ tenantId
26
+ }
27
+ });
28
+ const envelope = response.tenantManager.installTenant;
29
+ if (envelope.error) throw new Error(envelope.error.message);
30
+ if (!envelope.data) throw new Error("Unable to install tenant");
31
+ return envelope.data;
32
+ }
33
+ }
34
+ const InstallTenantGateway_InstallTenantGateway = InstallTenantGateway.createImplementation({
35
+ implementation: InstallTenantGraphQLGateway,
36
+ dependencies: [
37
+ MainGraphQLClient
38
+ ]
39
+ });
40
+ export { InstallTenantGateway_InstallTenantGateway as InstallTenantGateway };
41
+
42
+ //# sourceMappingURL=InstallTenantGateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/InstallTenant/InstallTenantGateway.js","sources":["../../../src/admin/InstallTenant/InstallTenantGateway.ts"],"sourcesContent":["import { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient/index.js\";\nimport { InstallTenantGateway as GatewayAbstraction } from \"./abstractions.js\";\n\nconst INSTALL_TENANT = /* GraphQL */ `\n mutation InstallTenant($tenantId: ID!) {\n tenantManager {\n installTenant(tenantId: $tenantId) {\n data\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\ntype InstallTenantResponse = {\n tenantManager: {\n installTenant:\n | {\n data: boolean;\n error: null;\n }\n | {\n data: null;\n error: {\n code: string;\n message: string;\n data: Record<string, any>;\n };\n };\n };\n};\n\nclass InstallTenantGraphQLGateway implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async installTenant(tenantId: string): Promise<boolean> {\n const response = await this.client.execute<InstallTenantResponse>({\n query: INSTALL_TENANT,\n variables: { tenantId }\n });\n\n const envelope = response.tenantManager.installTenant;\n if (envelope.error) {\n throw new Error(envelope.error.message);\n }\n\n if (!envelope.data) {\n throw new Error(\"Unable to install tenant\");\n }\n\n return envelope.data;\n }\n}\n\nexport const InstallTenantGateway = GatewayAbstraction.createImplementation({\n implementation: InstallTenantGraphQLGateway,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["INSTALL_TENANT","InstallTenantGraphQLGateway","client","tenantId","response","envelope","Error","InstallTenantGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAGA,MAAMA,iBAA+B,CAAC;;;;;;;;;;;;;AAatC,CAAC;AAoBD,MAAMC;IACF,YAAoBC,MAAmC,CAAE;aAArCA,MAAM,GAANA;IAAsC;IAE1D,MAAM,cAAcC,QAAgB,EAAoB;QACpD,MAAMC,WAAW,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAC9D,OAAOJ;YACP,WAAW;gBAAEG;YAAS;QAC1B;QAEA,MAAME,WAAWD,SAAS,aAAa,CAAC,aAAa;QACrD,IAAIC,SAAS,KAAK,EACd,MAAM,IAAIC,MAAMD,SAAS,KAAK,CAAC,OAAO;QAG1C,IAAI,CAACA,SAAS,IAAI,EACd,MAAM,IAAIC,MAAM;QAGpB,OAAOD,SAAS,IAAI;IACxB;AACJ;AAEO,MAAME,4CAAuBC,qBAAAA,oBAAuC,CAAC;IACxE,gBAAgBP;IAChB,cAAc;QAACQ;KAAkB;AACrC"}
@@ -0,0 +1,12 @@
1
+ import { InstallTenantRepository as RepositoryAbstraction, InstallTenantGateway } from "./abstractions.js";
2
+ import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
3
+ declare class InstallTenantRepositoryImpl implements RepositoryAbstraction.Interface {
4
+ private gateway;
5
+ private cacheProvider;
6
+ constructor(gateway: InstallTenantGateway.Interface, cacheProvider: ContentEntriesCacheProvider.Interface);
7
+ execute(tenantId: string): Promise<void>;
8
+ }
9
+ export declare const InstallTenantRepository: typeof InstallTenantRepositoryImpl & {
10
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IInstallTenantRepository>;
11
+ };
12
+ export {};
@@ -0,0 +1,34 @@
1
+ import { InstallTenantGateway, InstallTenantRepository } from "./abstractions.js";
2
+ import { ContentEntriesCacheProvider } from "@webiny/app-headless-cms/features/contentEntry/abstractions.js";
3
+ import { TENANT_MODEL_ID } from "../../shared/constants.js";
4
+ class InstallTenantRepositoryImpl {
5
+ constructor(gateway, cacheProvider){
6
+ this.gateway = gateway;
7
+ this.cacheProvider = cacheProvider;
8
+ }
9
+ async execute(tenantId) {
10
+ await this.gateway.installTenant(tenantId);
11
+ const cache = this.cacheProvider.get(TENANT_MODEL_ID);
12
+ cache.updateItems((item)=>{
13
+ if (item.entryId === tenantId) return {
14
+ ...item,
15
+ values: {
16
+ ...item.values,
17
+ status: "enabled",
18
+ isInstalled: true
19
+ }
20
+ };
21
+ return item;
22
+ });
23
+ }
24
+ }
25
+ const InstallTenantRepository_InstallTenantRepository = InstallTenantRepository.createImplementation({
26
+ implementation: InstallTenantRepositoryImpl,
27
+ dependencies: [
28
+ InstallTenantGateway,
29
+ ContentEntriesCacheProvider
30
+ ]
31
+ });
32
+ export { InstallTenantRepository_InstallTenantRepository as InstallTenantRepository };
33
+
34
+ //# sourceMappingURL=InstallTenantRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/InstallTenant/InstallTenantRepository.js","sources":["../../../src/admin/InstallTenant/InstallTenantRepository.ts"],"sourcesContent":["import {\n InstallTenantRepository as RepositoryAbstraction,\n InstallTenantGateway\n} from \"./abstractions.js\";\nimport { ContentEntriesCacheProvider } from \"@webiny/app-headless-cms/features/contentEntry/abstractions.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\n\nclass InstallTenantRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private gateway: InstallTenantGateway.Interface,\n private cacheProvider: ContentEntriesCacheProvider.Interface\n ) {}\n\n async execute(tenantId: string): Promise<void> {\n await this.gateway.installTenant(tenantId);\n\n const cache = this.cacheProvider.get(TENANT_MODEL_ID);\n cache.updateItems(item => {\n if (item.entryId === tenantId) {\n return {\n ...item,\n values: { ...item.values, status: \"enabled\", isInstalled: true }\n };\n }\n return item;\n });\n }\n}\n\nexport const InstallTenantRepository = RepositoryAbstraction.createImplementation({\n implementation: InstallTenantRepositoryImpl,\n dependencies: [InstallTenantGateway, ContentEntriesCacheProvider]\n});\n"],"names":["InstallTenantRepositoryImpl","gateway","cacheProvider","tenantId","cache","TENANT_MODEL_ID","item","InstallTenantRepository","RepositoryAbstraction","InstallTenantGateway","ContentEntriesCacheProvider"],"mappings":";;;AAOA,MAAMA;IACF,YACYC,OAAuC,EACvCC,aAAoD,CAC9D;aAFUD,OAAO,GAAPA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,QAAgB,EAAiB;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAACA;QAEjC,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAACC;QACrCD,MAAM,WAAW,CAACE,CAAAA;YACd,IAAIA,KAAK,OAAO,KAAKH,UACjB,OAAO;gBACH,GAAGG,IAAI;gBACP,QAAQ;oBAAE,GAAGA,KAAK,MAAM;oBAAE,QAAQ;oBAAW,aAAa;gBAAK;YACnE;YAEJ,OAAOA;QACX;IACJ;AACJ;AAEO,MAAMC,kDAA0BC,wBAAAA,oBAA0C,CAAC;IAC9E,gBAAgBR;IAChB,cAAc;QAACS;QAAsBC;KAA4B;AACrE"}
@@ -0,0 +1,10 @@
1
+ import { InstallTenantUseCase as UseCaseAbstraction, InstallTenantRepository } from "./abstractions.js";
2
+ declare class InstallTenantUseCaseImpl implements UseCaseAbstraction.Interface {
3
+ private repository;
4
+ constructor(repository: InstallTenantRepository.Interface);
5
+ execute(tenantId: string): Promise<void>;
6
+ }
7
+ export declare const InstallTenantUseCase: typeof InstallTenantUseCaseImpl & {
8
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IInstallTenantUseCase>;
9
+ };
10
+ export {};
@@ -0,0 +1,18 @@
1
+ import { InstallTenantRepository, InstallTenantUseCase } from "./abstractions.js";
2
+ class InstallTenantUseCaseImpl {
3
+ constructor(repository){
4
+ this.repository = repository;
5
+ }
6
+ async execute(tenantId) {
7
+ return this.repository.execute(tenantId);
8
+ }
9
+ }
10
+ const InstallTenantUseCase_InstallTenantUseCase = InstallTenantUseCase.createImplementation({
11
+ implementation: InstallTenantUseCaseImpl,
12
+ dependencies: [
13
+ InstallTenantRepository
14
+ ]
15
+ });
16
+ export { InstallTenantUseCase_InstallTenantUseCase as InstallTenantUseCase };
17
+
18
+ //# sourceMappingURL=InstallTenantUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/InstallTenant/InstallTenantUseCase.js","sources":["../../../src/admin/InstallTenant/InstallTenantUseCase.ts"],"sourcesContent":["import {\n InstallTenantUseCase as UseCaseAbstraction,\n InstallTenantRepository\n} from \"./abstractions.js\";\n\nclass InstallTenantUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: InstallTenantRepository.Interface) {}\n\n async execute(tenantId: string): Promise<void> {\n return this.repository.execute(tenantId);\n }\n}\n\nexport const InstallTenantUseCase = UseCaseAbstraction.createImplementation({\n implementation: InstallTenantUseCaseImpl,\n dependencies: [InstallTenantRepository]\n});\n"],"names":["InstallTenantUseCaseImpl","repository","tenantId","InstallTenantUseCase","UseCaseAbstraction","InstallTenantRepository"],"mappings":";AAKA,MAAMA;IACF,YAAoBC,UAA6C,CAAE;aAA/CA,UAAU,GAAVA;IAAgD;IAEpE,MAAM,QAAQC,QAAgB,EAAiB;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAACA;IACnC;AACJ;AAEO,MAAMC,4CAAuBC,qBAAAA,oBAAuC,CAAC;IACxE,gBAAgBJ;IAChB,cAAc;QAACK;KAAwB;AAC3C"}
@@ -0,0 +1,21 @@
1
+ export interface IInstallTenantUseCase {
2
+ execute(tenantId: string): Promise<void>;
3
+ }
4
+ export declare const InstallTenantUseCase: import("@webiny/di").Abstraction<IInstallTenantUseCase>;
5
+ export declare namespace InstallTenantUseCase {
6
+ type Interface = IInstallTenantUseCase;
7
+ }
8
+ export interface IInstallTenantRepository {
9
+ execute(tenantId: string): Promise<void>;
10
+ }
11
+ export declare const InstallTenantRepository: import("@webiny/di").Abstraction<IInstallTenantRepository>;
12
+ export declare namespace InstallTenantRepository {
13
+ type Interface = IInstallTenantRepository;
14
+ }
15
+ export interface IInstallTenantGateway {
16
+ installTenant(tenantId: string): Promise<boolean>;
17
+ }
18
+ export declare const InstallTenantGateway: import("@webiny/di").Abstraction<IInstallTenantGateway>;
19
+ export declare namespace InstallTenantGateway {
20
+ type Interface = IInstallTenantGateway;
21
+ }
@@ -0,0 +1,7 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const InstallTenantUseCase = createAbstraction("InstallTenantUseCase");
3
+ const InstallTenantRepository = createAbstraction("InstallTenantRepository");
4
+ const InstallTenantGateway = createAbstraction("InstallTenantGateway");
5
+ export { InstallTenantGateway, InstallTenantRepository, InstallTenantUseCase };
6
+
7
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/InstallTenant/abstractions.js","sources":["../../../src/admin/InstallTenant/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface IInstallTenantUseCase {\n execute(tenantId: string): Promise<void>;\n}\n\nexport const InstallTenantUseCase =\n createAbstraction<IInstallTenantUseCase>(\"InstallTenantUseCase\");\n\nexport namespace InstallTenantUseCase {\n export type Interface = IInstallTenantUseCase;\n}\n\nexport interface IInstallTenantRepository {\n execute(tenantId: string): Promise<void>;\n}\n\nexport const InstallTenantRepository =\n createAbstraction<IInstallTenantRepository>(\"InstallTenantRepository\");\n\nexport namespace InstallTenantRepository {\n export type Interface = IInstallTenantRepository;\n}\n\nexport interface IInstallTenantGateway {\n installTenant(tenantId: string): Promise<boolean>;\n}\n\nexport const InstallTenantGateway =\n createAbstraction<IInstallTenantGateway>(\"InstallTenantGateway\");\n\nexport namespace InstallTenantGateway {\n export type Interface = IInstallTenantGateway;\n}\n"],"names":["InstallTenantUseCase","createAbstraction","InstallTenantRepository","InstallTenantGateway"],"mappings":";AAMO,MAAMA,uBACTC,kBAAyC;AAUtC,MAAMC,0BACTD,kBAA4C;AAUzC,MAAME,uBACTF,kBAAyC"}
@@ -0,0 +1,3 @@
1
+ export declare const InstallTenantFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ useCase: import("./abstractions.js").IInstallTenantUseCase;
3
+ }, []>;
@@ -0,0 +1,21 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { InstallTenantUseCase } from "./abstractions.js";
3
+ import { InstallTenantUseCase as external_InstallTenantUseCase_js_InstallTenantUseCase } from "./InstallTenantUseCase.js";
4
+ import { InstallTenantRepository } from "./InstallTenantRepository.js";
5
+ import { InstallTenantGateway } from "./InstallTenantGateway.js";
6
+ const InstallTenantFeature = createFeature({
7
+ name: "InstallTenant",
8
+ register (container) {
9
+ container.register(external_InstallTenantUseCase_js_InstallTenantUseCase);
10
+ container.register(InstallTenantRepository).inSingletonScope();
11
+ container.register(InstallTenantGateway).inSingletonScope();
12
+ },
13
+ resolve (container) {
14
+ return {
15
+ useCase: container.resolve(InstallTenantUseCase)
16
+ };
17
+ }
18
+ });
19
+ export { InstallTenantFeature };
20
+
21
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/InstallTenant/feature.js","sources":["../../../src/admin/InstallTenant/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { InstallTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { InstallTenantUseCase } from \"./InstallTenantUseCase.js\";\nimport { InstallTenantRepository } from \"./InstallTenantRepository.js\";\nimport { InstallTenantGateway } from \"./InstallTenantGateway.js\";\n\nexport const InstallTenantFeature = createFeature({\n name: \"InstallTenant\",\n register(container) {\n container.register(InstallTenantUseCase);\n container.register(InstallTenantRepository).inSingletonScope();\n container.register(InstallTenantGateway).inSingletonScope();\n },\n resolve(container) {\n return {\n useCase: container.resolve(UseCaseAbstraction)\n };\n }\n});\n"],"names":["InstallTenantFeature","createFeature","container","InstallTenantUseCase","InstallTenantRepository","InstallTenantGateway","UseCaseAbstraction"],"mappings":";;;;;AAMO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,yBAAyB,gBAAgB;QAC5DF,UAAU,QAAQ,CAACG,sBAAsB,gBAAgB;IAC7D;IACA,SAAQH,SAAS;QACb,OAAO;YACH,SAASA,UAAU,OAAO,CAACI;QAC/B;IACJ;AACJ"}
@@ -0,0 +1,2 @@
1
+ export { InstallTenantFeature } from "./feature.js";
2
+ export { useInstallTenant } from "./useInstallTenant.js";
@@ -0,0 +1,2 @@
1
+ export { InstallTenantFeature } from "./feature.js";
2
+ export { useInstallTenant } from "./useInstallTenant.js";
@@ -0,0 +1,4 @@
1
+ export declare const useInstallTenant: () => {
2
+ installTenant: (tenantId: string) => Promise<void>;
3
+ loading: boolean;
4
+ };
@@ -0,0 +1,24 @@
1
+ import { useCallback, useState } from "react";
2
+ import { useFeature } from "@webiny/app-admin";
3
+ import { InstallTenantFeature } from "./feature.js";
4
+ const useInstallTenant = ()=>{
5
+ const { useCase } = useFeature(InstallTenantFeature);
6
+ const [loading, setLoading] = useState(false);
7
+ const installTenant = useCallback(async (tenantId)=>{
8
+ setLoading(true);
9
+ try {
10
+ await useCase.execute(tenantId);
11
+ } finally{
12
+ setLoading(false);
13
+ }
14
+ }, [
15
+ useCase
16
+ ]);
17
+ return {
18
+ installTenant,
19
+ loading
20
+ };
21
+ };
22
+ export { useInstallTenant };
23
+
24
+ //# sourceMappingURL=useInstallTenant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/InstallTenant/useInstallTenant.js","sources":["../../../src/admin/InstallTenant/useInstallTenant.ts"],"sourcesContent":["import { useState, useCallback } from \"react\";\nimport { useFeature } from \"@webiny/app-admin\";\nimport { InstallTenantFeature } from \"./feature.js\";\n\nexport const useInstallTenant = () => {\n const { useCase } = useFeature(InstallTenantFeature);\n const [loading, setLoading] = useState(false);\n\n const installTenant = useCallback(\n async (tenantId: string) => {\n setLoading(true);\n\n try {\n await useCase.execute(tenantId);\n } finally {\n setLoading(false);\n }\n },\n [useCase]\n );\n\n return { installTenant, loading };\n};\n"],"names":["useInstallTenant","useCase","useFeature","InstallTenantFeature","loading","setLoading","useState","installTenant","useCallback","tenantId"],"mappings":";;;AAIO,MAAMA,mBAAmB;IAC5B,MAAM,EAAEC,OAAO,EAAE,GAAGC,WAAWC;IAC/B,MAAM,CAACC,SAASC,WAAW,GAAGC,SAAS;IAEvC,MAAMC,gBAAgBC,YAClB,OAAOC;QACHJ,WAAW;QAEX,IAAI;YACA,MAAMJ,QAAQ,OAAO,CAACQ;QAC1B,SAAU;YACNJ,WAAW;QACf;IACJ,GACA;QAACJ;KAAQ;IAGb,OAAO;QAAEM;QAAeH;IAAQ;AACpC"}
@@ -1,10 +1,8 @@
1
1
  import { useCallback } from "react";
2
2
  import { useToast } from "@webiny/admin-ui";
3
- import { useRecords } from "@webiny/app-aco";
4
3
  import { useEnableTenant } from "../../EnableTenant/index.js";
5
4
  const useEnableTenant_useEnableTenant = (tenant)=>{
6
5
  const toast = useToast();
7
- const { updateRecordInCache } = useRecords();
8
6
  const useCase = useEnableTenant();
9
7
  const enableTenant = useCallback(async ()=>{
10
8
  try {
@@ -20,13 +18,6 @@ const useEnableTenant_useEnableTenant = (tenant)=>{
20
18
  toast.showSuccessToast({
21
19
  title: "Tenant was enabled successfully!"
22
20
  });
23
- updateRecordInCache({
24
- ...tenant,
25
- values: {
26
- ...tenant.values,
27
- status: "enabled"
28
- }
29
- });
30
21
  }, [
31
22
  tenant
32
23
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"admin/TenantEntryList/EnableTenant/useEnableTenant.js","sources":["../../../../src/admin/TenantEntryList/EnableTenant/useEnableTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { useRecords } from \"@webiny/app-aco\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useEnableTenant as baseEnableTenant } from \"~/admin/EnableTenant/index.js\";\n\nexport const useEnableTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const { updateRecordInCache } = useRecords();\n const useCase = baseEnableTenant();\n\n const enableTenant = useCallback(async () => {\n try {\n await useCase.enableTenant(tenant.entryId);\n } catch (error) {\n toast.showWarningToast({\n title: \"Could not enable tenant\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant was enabled successfully!\" });\n\n updateRecordInCache({\n ...tenant,\n values: {\n ...tenant.values,\n status: \"enabled\"\n }\n });\n }, [tenant]);\n\n return { enableTenant, loading: useCase.loading };\n};\n"],"names":["useEnableTenant","tenant","toast","useToast","updateRecordInCache","useRecords","useCase","baseEnableTenant","enableTenant","useCallback","error","Infinity"],"mappings":";;;;AAMO,MAAMA,kCAAkB,CAACC;IAC5B,MAAMC,QAAQC;IACd,MAAM,EAAEC,mBAAmB,EAAE,GAAGC;IAChC,MAAMC,UAAUC;IAEhB,MAAMC,eAAeC,YAAY;QAC7B,IAAI;YACA,MAAMH,QAAQ,YAAY,CAACL,OAAO,OAAO;QAC7C,EAAE,OAAOS,OAAO;YACZR,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAaQ,MAAM,OAAO;gBAC1B,UAAUC;YACd;YACA;QACJ;QAEAT,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAmC;QAEnEE,oBAAoB;YAChB,GAAGH,MAAM;YACT,QAAQ;gBACJ,GAAGA,OAAO,MAAM;gBAChB,QAAQ;YACZ;QACJ;IACJ,GAAG;QAACA;KAAO;IAEX,OAAO;QAAEO;QAAc,SAASF,QAAQ,OAAO;IAAC;AACpD"}
1
+ {"version":3,"file":"admin/TenantEntryList/EnableTenant/useEnableTenant.js","sources":["../../../../src/admin/TenantEntryList/EnableTenant/useEnableTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useEnableTenant as baseEnableTenant } from \"~/admin/EnableTenant/index.js\";\n\nexport const useEnableTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const useCase = baseEnableTenant();\n\n const enableTenant = useCallback(async () => {\n try {\n await useCase.enableTenant(tenant.entryId);\n } catch (error) {\n toast.showWarningToast({\n title: \"Could not enable tenant\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant was enabled successfully!\" });\n }, [tenant]);\n\n return { enableTenant, loading: useCase.loading };\n};\n"],"names":["useEnableTenant","tenant","toast","useToast","useCase","baseEnableTenant","enableTenant","useCallback","error","Infinity"],"mappings":";;;AAKO,MAAMA,kCAAkB,CAACC;IAC5B,MAAMC,QAAQC;IACd,MAAMC,UAAUC;IAEhB,MAAMC,eAAeC,YAAY;QAC7B,IAAI;YACA,MAAMH,QAAQ,YAAY,CAACH,OAAO,OAAO;QAC7C,EAAE,OAAOO,OAAO;YACZN,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAaM,MAAM,OAAO;gBAC1B,UAAUC;YACd;YACA;QACJ;QAEAP,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAmC;IACvE,GAAG;QAACD;KAAO;IAEX,OAAO;QAAEK;QAAc,SAASF,QAAQ,OAAO;IAAC;AACpD"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { type FolderTableRow } from "@webiny/app-aco";
2
+ import type { FolderTableRow } from "@webiny/app-aco";
3
3
  interface FolderNameCellProps {
4
4
  folder: FolderTableRow["data"];
5
5
  }
@@ -1,15 +1,15 @@
1
1
  import react from "react";
2
- import { useNavigateFolder } from "@webiny/app-aco";
3
2
  import { Icon, Text } from "@webiny/admin-ui";
4
3
  import { ReactComponent } from "@webiny/icons/folder.svg";
5
4
  import { ReactComponent as folder_shared_svg_ReactComponent } from "@webiny/icons/folder_shared.svg";
5
+ import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
6
6
  const FolderNameCell = ({ folder })=>{
7
- const { navigateToFolder } = useNavigateFolder();
7
+ const presenter = useContentEntriesPresenter();
8
8
  let icon = /*#__PURE__*/ react.createElement(ReactComponent, null);
9
9
  if (folder.hasNonInheritedPermissions && folder.canManagePermissions) icon = /*#__PURE__*/ react.createElement(folder_shared_svg_ReactComponent, null);
10
10
  return /*#__PURE__*/ react.createElement("div", {
11
11
  className: "flex items-center gap-sm truncate cursor-pointer font-semibold hover:underline",
12
- onClick: ()=>navigateToFolder(folder.id)
12
+ onClick: ()=>presenter.folders.selectFolder(folder.id)
13
13
  }, /*#__PURE__*/ react.createElement(Icon, {
14
14
  size: "sm",
15
15
  color: "neutral-strong",
@@ -1 +1 @@
1
- {"version":3,"file":"admin/TenantEntryList/FolderNameCell.js","sources":["../../../src/admin/TenantEntryList/FolderNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { type FolderTableRow, useNavigateFolder } from \"@webiny/app-aco\";\nimport { Icon, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as Folder } from \"@webiny/icons/folder.svg\";\nimport { ReactComponent as FolderShared } from \"@webiny/icons/folder_shared.svg\";\n\ninterface FolderNameCellProps {\n folder: FolderTableRow[\"data\"];\n}\n\nexport const FolderNameCell = ({ folder }: FolderNameCellProps) => {\n const { navigateToFolder } = useNavigateFolder();\n\n let icon = <Folder />;\n if (folder.hasNonInheritedPermissions && folder.canManagePermissions) {\n icon = <FolderShared />;\n }\n\n return (\n <div\n className={\n \"flex items-center gap-sm truncate cursor-pointer font-semibold hover:underline\"\n }\n onClick={() => navigateToFolder(folder.id)}\n >\n <Icon\n size={\"sm\"}\n color={\"neutral-strong\"}\n icon={icon}\n label={`Folder - ${folder.title}`}\n />\n <Text className={\"truncate min-w-0 shrink\"}>{folder.title}</Text>\n </div>\n );\n};\n"],"names":["FolderNameCell","folder","navigateToFolder","useNavigateFolder","icon","Folder","FolderShared","Icon","Text"],"mappings":";;;;;AAUO,MAAMA,iBAAiB,CAAC,EAAEC,MAAM,EAAuB;IAC1D,MAAM,EAAEC,gBAAgB,EAAE,GAAGC;IAE7B,IAAIC,OAAO,WAAPA,GAAO,oBAACC,gBAAMA;IAClB,IAAIJ,OAAO,0BAA0B,IAAIA,OAAO,oBAAoB,EAChEG,OAAO,WAAPA,GAAO,oBAACE,kCAAYA;IAGxB,OAAO,WAAP,GACI,oBAAC;QACG,WACI;QAEJ,SAAS,IAAMJ,iBAAiBD,OAAO,EAAE;qBAEzC,oBAACM,MAAIA;QACD,MAAM;QACN,OAAO;QACP,MAAMH;QACN,OAAO,CAAC,SAAS,EAAEH,OAAO,KAAK,EAAE;sBAErC,oBAACO,MAAIA;QAAC,WAAW;OAA4BP,OAAO,KAAK;AAGrE"}
1
+ {"version":3,"file":"admin/TenantEntryList/FolderNameCell.js","sources":["../../../src/admin/TenantEntryList/FolderNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport type { FolderTableRow } from \"@webiny/app-aco\";\nimport { Icon, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as Folder } from \"@webiny/icons/folder.svg\";\nimport { ReactComponent as FolderShared } from \"@webiny/icons/folder_shared.svg\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\n\ninterface FolderNameCellProps {\n folder: FolderTableRow[\"data\"];\n}\n\nexport const FolderNameCell = ({ folder }: FolderNameCellProps) => {\n const presenter = useContentEntriesPresenter();\n\n let icon = <Folder />;\n if (folder.hasNonInheritedPermissions && folder.canManagePermissions) {\n icon = <FolderShared />;\n }\n\n return (\n <div\n className={\n \"flex items-center gap-sm truncate cursor-pointer font-semibold hover:underline\"\n }\n onClick={() => presenter.folders.selectFolder(folder.id)}\n >\n <Icon\n size={\"sm\"}\n color={\"neutral-strong\"}\n icon={icon}\n label={`Folder - ${folder.title}`}\n />\n <Text className={\"truncate min-w-0 shrink\"}>{folder.title}</Text>\n </div>\n );\n};\n"],"names":["FolderNameCell","folder","presenter","useContentEntriesPresenter","icon","Folder","FolderShared","Icon","Text"],"mappings":";;;;;AAWO,MAAMA,iBAAiB,CAAC,EAAEC,MAAM,EAAuB;IAC1D,MAAMC,YAAYC;IAElB,IAAIC,OAAO,WAAPA,GAAO,oBAACC,gBAAMA;IAClB,IAAIJ,OAAO,0BAA0B,IAAIA,OAAO,oBAAoB,EAChEG,OAAO,WAAPA,GAAO,oBAACE,kCAAYA;IAGxB,OAAO,WAAP,GACI,oBAAC;QACG,WACI;QAEJ,SAAS,IAAMJ,UAAU,OAAO,CAAC,YAAY,CAACD,OAAO,EAAE;qBAEvD,oBAACM,MAAIA;QACD,MAAM;QACN,OAAO;QACP,MAAMH;QACN,OAAO,CAAC,SAAS,EAAEH,OAAO,KAAK,EAAE;sBAErC,oBAACO,MAAIA;QAAC,WAAW;OAA4BP,OAAO,KAAK;AAGrE"}
@@ -1,42 +1,31 @@
1
1
  import { useCallback } from "react";
2
- import { useMutation } from "@apollo/react-hooks";
3
2
  import { useToast } from "@webiny/admin-ui";
4
- import { useRecords } from "@webiny/app-aco";
5
- import { INSTALL_TENANT } from "./installTenant.gql.js";
6
- const useInstallTenant = (tenant)=>{
3
+ import { useInstallTenant } from "../../InstallTenant/index.js";
4
+ const useInstallTenant_useInstallTenant = (tenant)=>{
7
5
  const toast = useToast();
8
- const { updateRecordInCache } = useRecords();
9
- const [runMutation, mutation] = useMutation(INSTALL_TENANT);
6
+ const hook = useInstallTenant();
10
7
  const installTenant = useCallback(async ()=>{
11
- const { data } = await runMutation({
12
- variables: {
13
- tenantId: tenant.entryId
14
- }
15
- });
16
- if (data?.tenantManager.installTenant.error) return void toast.showWarningToast({
17
- title: "Could not install tenant",
18
- description: data?.tenantManager.installTenant.error.message,
19
- duration: 1 / 0
20
- });
8
+ try {
9
+ await hook.installTenant(tenant.entryId);
10
+ } catch (error) {
11
+ toast.showWarningToast({
12
+ title: "Could not install tenant",
13
+ description: error.message,
14
+ duration: 1 / 0
15
+ });
16
+ return;
17
+ }
21
18
  toast.showSuccessToast({
22
19
  title: "Tenant installed successfully!"
23
20
  });
24
- updateRecordInCache({
25
- ...tenant,
26
- values: {
27
- ...tenant.values,
28
- status: "enabled",
29
- isInstalled: true
30
- }
31
- });
32
21
  }, [
33
22
  tenant
34
23
  ]);
35
24
  return {
36
25
  installTenant,
37
- loading: mutation.loading
26
+ loading: hook.loading
38
27
  };
39
28
  };
40
- export { useInstallTenant };
29
+ export { useInstallTenant_useInstallTenant as useInstallTenant };
41
30
 
42
31
  //# sourceMappingURL=useInstallTenant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin/TenantEntryList/InstallTenantButton/useInstallTenant.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/useInstallTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useMutation } from \"@apollo/react-hooks\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { useRecords } from \"@webiny/app-aco\";\nimport { TenantEntry } from \"../../types.js\";\nimport { InstallTenantResponse, INSTALL_TENANT } from \"./installTenant.gql.js\";\n\nexport const useInstallTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const { updateRecordInCache } = useRecords();\n const [runMutation, mutation] = useMutation<InstallTenantResponse>(INSTALL_TENANT);\n\n const installTenant = useCallback(async () => {\n const { data } = await runMutation({ variables: { tenantId: tenant.entryId } });\n if (data?.tenantManager.installTenant.error) {\n toast.showWarningToast({\n title: \"Could not install tenant\",\n description: data?.tenantManager.installTenant.error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant installed successfully!\" });\n\n updateRecordInCache({\n ...tenant,\n values: {\n ...tenant.values,\n status: \"enabled\",\n isInstalled: true\n }\n });\n }, [tenant]);\n\n return { installTenant, loading: mutation.loading };\n};\n"],"names":["useInstallTenant","tenant","toast","useToast","updateRecordInCache","useRecords","runMutation","mutation","useMutation","INSTALL_TENANT","installTenant","useCallback","data","Infinity"],"mappings":";;;;;AAOO,MAAMA,mBAAmB,CAACC;IAC7B,MAAMC,QAAQC;IACd,MAAM,EAAEC,mBAAmB,EAAE,GAAGC;IAChC,MAAM,CAACC,aAAaC,SAAS,GAAGC,YAAmCC;IAEnE,MAAMC,gBAAgBC,YAAY;QAC9B,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMN,YAAY;YAAE,WAAW;gBAAE,UAAUL,OAAO,OAAO;YAAC;QAAE;QAC7E,IAAIW,MAAM,cAAc,cAAc,OAAO,YACzCV,MAAM,gBAAgB,CAAC;YACnB,OAAO;YACP,aAAaU,MAAM,cAAc,cAAc,MAAM;YACrD,UAAUC;QACd;QAIJX,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAiC;QAEjEE,oBAAoB;YAChB,GAAGH,MAAM;YACT,QAAQ;gBACJ,GAAGA,OAAO,MAAM;gBAChB,QAAQ;gBACR,aAAa;YACjB;QACJ;IACJ,GAAG;QAACA;KAAO;IAEX,OAAO;QAAES;QAAe,SAASH,SAAS,OAAO;IAAC;AACtD"}
1
+ {"version":3,"file":"admin/TenantEntryList/InstallTenantButton/useInstallTenant.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/useInstallTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useInstallTenant as baseInstallTenant } from \"~/admin/InstallTenant/index.js\";\n\nexport const useInstallTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const hook = baseInstallTenant();\n\n const installTenant = useCallback(async () => {\n try {\n await hook.installTenant(tenant.entryId);\n } catch (error) {\n toast.showWarningToast({\n title: \"Could not install tenant\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant installed successfully!\" });\n }, [tenant]);\n\n return { installTenant, loading: hook.loading };\n};\n"],"names":["useInstallTenant","tenant","toast","useToast","hook","baseInstallTenant","installTenant","useCallback","error","Infinity"],"mappings":";;;AAKO,MAAMA,oCAAmB,CAACC;IAC7B,MAAMC,QAAQC;IACd,MAAMC,OAAOC;IAEb,MAAMC,gBAAgBC,YAAY;QAC9B,IAAI;YACA,MAAMH,KAAK,aAAa,CAACH,OAAO,OAAO;QAC3C,EAAE,OAAOO,OAAO;YACZN,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAaM,MAAM,OAAO;gBAC1B,UAAUC;YACd;YACA;QACJ;QAEAP,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAiC;IACrE,GAAG;QAACD;KAAO;IAEX,OAAO;QAAEK;QAAe,SAASF,KAAK,OAAO;IAAC;AAClD"}
@@ -4,7 +4,6 @@ import { useTenantContext } from "@webiny/app-admin";
4
4
  const ManageTenant = ({ tenant })=>{
5
5
  const { setTenant } = useTenantContext();
6
6
  const switchToTenant = useCallback(()=>{
7
- localStorage.removeItem("webiny_wb_page_latest_visited_folder");
8
7
  setTenant(tenant.entryId);
9
8
  }, [
10
9
  tenant
@@ -1 +1 @@
1
- {"version":3,"file":"admin/TenantEntryList/ManageTenant.js","sources":["../../../src/admin/TenantEntryList/ManageTenant.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { useTenantContext } from \"@webiny/app-admin\";\nimport type { TenantEntry } from \"../types.js\";\n\ninterface ManageTenantProps {\n tenant: TenantEntry;\n}\n\nexport const ManageTenant = ({ tenant }: ManageTenantProps) => {\n const { setTenant } = useTenantContext();\n const switchToTenant = useCallback(() => {\n localStorage.removeItem(\"webiny_wb_page_latest_visited_folder\");\n setTenant(tenant.entryId);\n }, [tenant]);\n\n return <Button variant={\"secondary\"} onClick={switchToTenant} text={\"Manage\"} />;\n};\n"],"names":["ManageTenant","tenant","setTenant","useTenantContext","switchToTenant","useCallback","localStorage","Button"],"mappings":";;;AASO,MAAMA,eAAe,CAAC,EAAEC,MAAM,EAAqB;IACtD,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,iBAAiBC,YAAY;QAC/BC,aAAa,UAAU,CAAC;QACxBJ,UAAUD,OAAO,OAAO;IAC5B,GAAG;QAACA;KAAO;IAEX,OAAO,WAAP,GAAO,oBAACM,QAAMA;QAAC,SAAS;QAAa,SAASH;QAAgB,MAAM;;AACxE"}
1
+ {"version":3,"file":"admin/TenantEntryList/ManageTenant.js","sources":["../../../src/admin/TenantEntryList/ManageTenant.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { useTenantContext } from \"@webiny/app-admin\";\nimport type { TenantEntry } from \"../types.js\";\n\ninterface ManageTenantProps {\n tenant: TenantEntry;\n}\n\nexport const ManageTenant = ({ tenant }: ManageTenantProps) => {\n const { setTenant } = useTenantContext();\n const switchToTenant = useCallback(() => {\n setTenant(tenant.entryId);\n }, [tenant]);\n\n return <Button variant={\"secondary\"} onClick={switchToTenant} text={\"Manage\"} />;\n};\n"],"names":["ManageTenant","tenant","setTenant","useTenantContext","switchToTenant","useCallback","Button"],"mappings":";;;AASO,MAAMA,eAAe,CAAC,EAAEC,MAAM,EAAqB;IACtD,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,iBAAiBC,YAAY;QAC/BH,UAAUD,OAAO,OAAO;IAC5B,GAAG;QAACA;KAAO;IAEX,OAAO,WAAP,GAAO,oBAACK,QAAMA;QAAC,SAAS;QAAa,SAASF;QAAgB,MAAM;;AACxE"}
@@ -1,15 +1,22 @@
1
1
  import react from "react";
2
2
  import { Icon, Link, Text } from "@webiny/admin-ui";
3
3
  import { ReactComponent } from "@webiny/icons/description.svg";
4
- import { ContentEntryListConfig } from "@webiny/app-headless-cms";
4
+ import { ContentEntryListConfig, Routes } from "@webiny/app-headless-cms";
5
5
  import { FolderNameCell } from "./FolderNameCell.js";
6
- import { useContentEntriesList } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
6
+ import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
7
+ import { useRouter } from "@webiny/app-admin";
7
8
  const TenantName = ({ tenant })=>{
8
- const { getEntryEditUrl } = useContentEntriesList();
9
+ const presenter = useContentEntriesPresenter();
10
+ const { getLink } = useRouter();
11
+ const url = getLink(Routes.ContentEntries.List, {
12
+ modelId: presenter.vm.model.modelId,
13
+ folderId: presenter.folders.vm.currentFolderId ?? void 0,
14
+ id: tenant.id
15
+ });
9
16
  return /*#__PURE__*/ react.createElement("div", {
10
17
  className: "flex flex-col gap-y-[3px]"
11
18
  }, /*#__PURE__*/ react.createElement(Link, {
12
- to: getEntryEditUrl(tenant),
19
+ to: url,
13
20
  variant: "secondary",
14
21
  className: "truncate no-underline!"
15
22
  }, /*#__PURE__*/ react.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"admin/TenantEntryList/TenantNameCell.js","sources":["../../../src/admin/TenantEntryList/TenantNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Link, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as File } from \"@webiny/icons/description.svg\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport { FolderNameCell } from \"./FolderNameCell.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useContentEntriesList } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\n\ninterface TenantNameProps {\n tenant: TenantEntry;\n}\n\nconst TenantName = ({ tenant }: TenantNameProps) => {\n const { getEntryEditUrl } = useContentEntriesList();\n\n return (\n <div className={\"flex flex-col gap-y-[3px]\"}>\n <Link\n to={getEntryEditUrl(tenant)}\n variant={\"secondary\"}\n className={\"truncate no-underline!\"}\n >\n <div className={\"flex w-full items-center\"}>\n <Icon\n size={\"sm\"}\n color={\"neutral-strong\"}\n className={\"mr-xs\"}\n icon={<File />}\n label={`Tenant - ${tenant.values.name}`}\n />\n <Text as={\"div\"} className={\"truncate min-w-0 shrink\"}>\n {tenant.values.name}\n </Text>\n </div>\n </Link>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-dimmed\"}>\n ID: {tenant.entryId}\n </Text>\n </div>\n );\n};\n\nexport const TenantNameCell = () => {\n const { useTableRow, isFolderRow } = ContentEntryListConfig.Browser.Table.Column;\n const { row } = useTableRow<TenantEntry>();\n\n if (isFolderRow(row)) {\n return <FolderNameCell folder={row.data} />;\n }\n\n return <TenantName tenant={row.data} />;\n};\n"],"names":["TenantName","tenant","getEntryEditUrl","useContentEntriesList","Link","Icon","File","Text","TenantNameCell","useTableRow","isFolderRow","ContentEntryListConfig","row","FolderNameCell"],"mappings":";;;;;;AAYA,MAAMA,aAAa,CAAC,EAAEC,MAAM,EAAmB;IAC3C,MAAM,EAAEC,eAAe,EAAE,GAAGC;IAE5B,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACC,MAAIA;QACD,IAAIF,gBAAgBD;QACpB,SAAS;QACT,WAAW;qBAEX,oBAAC;QAAI,WAAW;qBACZ,oBAACI,MAAIA;QACD,MAAM;QACN,OAAO;QACP,WAAW;QACX,oBAAM,oBAACC,gBAAIA;QACX,OAAO,CAAC,SAAS,EAAEL,OAAO,MAAM,CAAC,IAAI,EAAE;sBAE3C,oBAACM,MAAIA;QAAC,IAAI;QAAO,WAAW;OACvBN,OAAO,MAAM,CAAC,IAAI,mBAI/B,oBAACM,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OAAuB,QACtDN,OAAO,OAAO;AAInC;AAEO,MAAMO,iBAAiB;IAC1B,MAAM,EAAEC,WAAW,EAAEC,WAAW,EAAE,GAAGC,uBAAuB,OAAO,CAAC,KAAK,CAAC,MAAM;IAChF,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAEhB,IAAIC,YAAYE,MACZ,OAAO,WAAP,GAAO,oBAACC,gBAAcA;QAAC,QAAQD,IAAI,IAAI;;IAG3C,OAAO,WAAP,GAAO,oBAACZ,YAAUA;QAAC,QAAQY,IAAI,IAAI;;AACvC"}
1
+ {"version":3,"file":"admin/TenantEntryList/TenantNameCell.js","sources":["../../../src/admin/TenantEntryList/TenantNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Link, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as File } from \"@webiny/icons/description.svg\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport { FolderNameCell } from \"./FolderNameCell.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"@webiny/app-headless-cms\";\n\ninterface TenantNameProps {\n tenant: TenantEntry;\n}\n\nconst TenantName = ({ tenant }: TenantNameProps) => {\n const presenter = useContentEntriesPresenter();\n const { getLink } = useRouter();\n\n const url = getLink(Routes.ContentEntries.List, {\n modelId: presenter.vm.model.modelId,\n folderId: presenter.folders.vm.currentFolderId ?? undefined,\n id: tenant.id\n });\n\n return (\n <div className={\"flex flex-col gap-y-[3px]\"}>\n <Link to={url} variant={\"secondary\"} className={\"truncate no-underline!\"}>\n <div className={\"flex w-full items-center\"}>\n <Icon\n size={\"sm\"}\n color={\"neutral-strong\"}\n className={\"mr-xs\"}\n icon={<File />}\n label={`Tenant - ${tenant.values.name}`}\n />\n <Text as={\"div\"} className={\"truncate min-w-0 shrink\"}>\n {tenant.values.name}\n </Text>\n </div>\n </Link>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-dimmed\"}>\n ID: {tenant.entryId}\n </Text>\n </div>\n );\n};\n\nexport const TenantNameCell = () => {\n const { useTableRow, isFolderRow } = ContentEntryListConfig.Browser.Table.Column;\n const { row } = useTableRow<TenantEntry>();\n\n if (isFolderRow(row)) {\n return <FolderNameCell folder={row.data} />;\n }\n\n return <TenantName tenant={row.data} />;\n};\n"],"names":["TenantName","tenant","presenter","useContentEntriesPresenter","getLink","useRouter","url","Routes","undefined","Link","Icon","File","Text","TenantNameCell","useTableRow","isFolderRow","ContentEntryListConfig","row","FolderNameCell"],"mappings":";;;;;;;AAcA,MAAMA,aAAa,CAAC,EAAEC,MAAM,EAAmB;IAC3C,MAAMC,YAAYC;IAClB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,MAAMC,MAAMF,QAAQG,OAAO,cAAc,CAAC,IAAI,EAAE;QAC5C,SAASL,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO;QACnC,UAAUA,UAAU,OAAO,CAAC,EAAE,CAAC,eAAe,IAAIM;QAClD,IAAIP,OAAO,EAAE;IACjB;IAEA,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACQ,MAAIA;QAAC,IAAIH;QAAK,SAAS;QAAa,WAAW;qBAC5C,oBAAC;QAAI,WAAW;qBACZ,oBAACI,MAAIA;QACD,MAAM;QACN,OAAO;QACP,WAAW;QACX,oBAAM,oBAACC,gBAAIA;QACX,OAAO,CAAC,SAAS,EAAEV,OAAO,MAAM,CAAC,IAAI,EAAE;sBAE3C,oBAACW,MAAIA;QAAC,IAAI;QAAO,WAAW;OACvBX,OAAO,MAAM,CAAC,IAAI,mBAI/B,oBAACW,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OAAuB,QACtDX,OAAO,OAAO;AAInC;AAEO,MAAMY,iBAAiB;IAC1B,MAAM,EAAEC,WAAW,EAAEC,WAAW,EAAE,GAAGC,uBAAuB,OAAO,CAAC,KAAK,CAAC,MAAM;IAChF,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAEhB,IAAIC,YAAYE,MACZ,OAAO,WAAP,GAAO,oBAACC,gBAAcA;QAAC,QAAQD,IAAI,IAAI;;IAG3C,OAAO,WAAP,GAAO,oBAACjB,YAAUA;QAAC,QAAQiB,IAAI,IAAI;;AACvC"}
@@ -19,7 +19,7 @@ const WithDisableAction = ({ children })=>{
19
19
  label: "Disable",
20
20
  onAction: disableEntry,
21
21
  "data-testid": "aco.actions.entry.delete",
22
- className: "text-destructive-primary! [&_svg]:fill-destructive"
22
+ variant: "destructive"
23
23
  });
24
24
  return /*#__PURE__*/ react.createElement(react.Fragment, null, children);
25
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"admin/TenantEntryList.js","sources":["../../src/admin/TenantEntryList.tsx"],"sourcesContent":["import React from \"react\";\nimport { useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { ReactComponent as DisableIcon } from \"@webiny/icons/power_off.svg\";\nimport { TenantCell } from \"./TenantEntryList/TenantCell.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useDisableTenantDialog } from \"~/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js\";\nimport { TenantNameCell } from \"~/admin/TenantEntryList/TenantNameCell.js\";\n\nconst { Browser } = ContentEntryListConfig;\nconst EntryAction = Browser.Entry.Action;\nconst { useTableRow } = Browser.Table.Column;\n\ninterface WithDisableActionProps {\n children: React.ReactNode;\n}\n\nconst WithDisableAction = ({ children }: WithDisableActionProps) => {\n // useTableRow() allows you to access the entire data of the current row.\n const { row } = useTableRow<TenantEntry>();\n const { disableEntry } = useDisableTenantDialog({ record: row.data });\n\n if (row.data.values.status === \"enabled\") {\n return (\n <EntryAction.OptionsMenuItem\n icon={<DisableIcon />}\n label={\"Disable\"}\n onAction={disableEntry}\n data-testid={\"aco.actions.entry.delete\"}\n className={\"text-destructive-primary! [&_svg]:fill-destructive\"}\n />\n );\n }\n\n return <>{children}</>;\n};\n\nconst DeleteActionDecorator = EntryAction.createDecorator(Original => {\n return function DeleteAction(props) {\n const { model } = useModel();\n\n if (model.modelId !== TENANT_MODEL_ID) {\n return <Original {...props} />;\n }\n\n if (props.name === \"delete\") {\n return (\n <Original\n {...props}\n element={<WithDisableAction>{props.element}</WithDisableAction>}\n />\n );\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const TenantEntryList = () => {\n return (\n <>\n <DeleteActionDecorator />\n <ContentEntryListConfig>\n <Browser.Table.Column\n hideable={false}\n name={\"name\"}\n header={\"Name\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantNameCell />}\n />\n <Browser.Table.Column\n name={\"tenant\"}\n header={\"Tenant\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantCell />}\n before={\"actions\"}\n />\n </ContentEntryListConfig>\n </>\n );\n};\n"],"names":["Browser","ContentEntryListConfig","EntryAction","useTableRow","WithDisableAction","children","row","disableEntry","useDisableTenantDialog","DisableIcon","DeleteActionDecorator","Original","props","model","useModel","TENANT_MODEL_ID","TenantEntryList","TenantNameCell","TenantCell"],"mappings":";;;;;;;;AAUA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAMC,cAAcF,QAAQ,KAAK,CAAC,MAAM;AACxC,MAAM,EAAEG,aAAAA,WAAW,EAAE,GAAGH,QAAQ,KAAK,CAAC,MAAM;AAM5C,MAAMI,oBAAoB,CAAC,EAAEC,QAAQ,EAA0B;IAE3D,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAChB,MAAM,EAAEI,YAAY,EAAE,GAAGC,uBAAuB;QAAE,QAAQF,IAAI,IAAI;IAAC;IAEnE,IAAIA,AAA2B,cAA3BA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EACtB,OAAO,WAAP,GACI,oBAACJ,YAAY,eAAe;QACxB,oBAAM,oBAACO,gBAAWA;QAClB,OAAO;QACP,UAAUF;QACV,eAAa;QACb,WAAW;;IAKvB,OAAO,WAAP,GAAO,0CAAGF;AACd;AAEA,MAAMK,wBAAwBR,YAAY,eAAe,CAACS,CAAAA,WAC/C,SAAsBC,KAAK;QAC9B,MAAM,EAAEC,KAAK,EAAE,GAAGC;QAElB,IAAID,MAAM,OAAO,KAAKE,iBAClB,OAAO,WAAP,GAAO,oBAACJ,UAAaC;QAGzB,IAAIA,AAAe,aAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACD,UAAAA;YACI,GAAGC,KAAK;YACT,uBAAS,oBAACR,mBAAiBA,MAAEQ,MAAM,OAAO;;QAKtD,OAAO,WAAP,GAAO,oBAACD,UAAaC;IACzB;AAGG,MAAMI,kBAAkB,IACpB,WAAP,GACI,wDACI,oBAACN,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACT,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,KAAK,CAAC,MAAM;QACjB,UAAU;QACV,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACE,gBAAcA;sBAEzB,oBAACjB,QAAQ,KAAK,CAAC,MAAM;QACjB,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACG,YAAUA;QACjB,QAAQ"}
1
+ {"version":3,"file":"admin/TenantEntryList.js","sources":["../../src/admin/TenantEntryList.tsx"],"sourcesContent":["import React from \"react\";\nimport { useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { ReactComponent as DisableIcon } from \"@webiny/icons/power_off.svg\";\nimport { TenantCell } from \"./TenantEntryList/TenantCell.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useDisableTenantDialog } from \"~/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js\";\nimport { TenantNameCell } from \"~/admin/TenantEntryList/TenantNameCell.js\";\n\nconst { Browser } = ContentEntryListConfig;\nconst EntryAction = Browser.Entry.Action;\nconst { useTableRow } = Browser.Table.Column;\n\ninterface WithDisableActionProps {\n children: React.ReactNode;\n}\n\nconst WithDisableAction = ({ children }: WithDisableActionProps) => {\n // useTableRow() allows you to access the entire data of the current row.\n const { row } = useTableRow<TenantEntry>();\n const { disableEntry } = useDisableTenantDialog({ record: row.data });\n\n if (row.data.values.status === \"enabled\") {\n return (\n <EntryAction.OptionsMenuItem\n icon={<DisableIcon />}\n label={\"Disable\"}\n onAction={disableEntry}\n data-testid={\"aco.actions.entry.delete\"}\n variant={\"destructive\"}\n />\n );\n }\n\n return <>{children}</>;\n};\n\nconst DeleteActionDecorator = EntryAction.createDecorator(Original => {\n return function DeleteAction(props) {\n const { model } = useModel();\n\n if (model.modelId !== TENANT_MODEL_ID) {\n return <Original {...props} />;\n }\n\n if (props.name === \"delete\") {\n return (\n <Original\n {...props}\n element={<WithDisableAction>{props.element}</WithDisableAction>}\n />\n );\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const TenantEntryList = () => {\n return (\n <>\n <DeleteActionDecorator />\n <ContentEntryListConfig>\n <Browser.Table.Column\n hideable={false}\n name={\"name\"}\n header={\"Name\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantNameCell />}\n />\n <Browser.Table.Column\n name={\"tenant\"}\n header={\"Tenant\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantCell />}\n before={\"actions\"}\n />\n </ContentEntryListConfig>\n </>\n );\n};\n"],"names":["Browser","ContentEntryListConfig","EntryAction","useTableRow","WithDisableAction","children","row","disableEntry","useDisableTenantDialog","DisableIcon","DeleteActionDecorator","Original","props","model","useModel","TENANT_MODEL_ID","TenantEntryList","TenantNameCell","TenantCell"],"mappings":";;;;;;;;AAUA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAMC,cAAcF,QAAQ,KAAK,CAAC,MAAM;AACxC,MAAM,EAAEG,aAAAA,WAAW,EAAE,GAAGH,QAAQ,KAAK,CAAC,MAAM;AAM5C,MAAMI,oBAAoB,CAAC,EAAEC,QAAQ,EAA0B;IAE3D,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAChB,MAAM,EAAEI,YAAY,EAAE,GAAGC,uBAAuB;QAAE,QAAQF,IAAI,IAAI;IAAC;IAEnE,IAAIA,AAA2B,cAA3BA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EACtB,OAAO,WAAP,GACI,oBAACJ,YAAY,eAAe;QACxB,oBAAM,oBAACO,gBAAWA;QAClB,OAAO;QACP,UAAUF;QACV,eAAa;QACb,SAAS;;IAKrB,OAAO,WAAP,GAAO,0CAAGF;AACd;AAEA,MAAMK,wBAAwBR,YAAY,eAAe,CAACS,CAAAA,WAC/C,SAAsBC,KAAK;QAC9B,MAAM,EAAEC,KAAK,EAAE,GAAGC;QAElB,IAAID,MAAM,OAAO,KAAKE,iBAClB,OAAO,WAAP,GAAO,oBAACJ,UAAaC;QAGzB,IAAIA,AAAe,aAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACD,UAAAA;YACI,GAAGC,KAAK;YACT,uBAAS,oBAACR,mBAAiBA,MAAEQ,MAAM,OAAO;;QAKtD,OAAO,WAAP,GAAO,oBAACD,UAAaC;IACzB;AAGG,MAAMI,kBAAkB,IACpB,WAAP,GACI,wDACI,oBAACN,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACT,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,KAAK,CAAC,MAAM;QACjB,UAAU;QACV,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACE,gBAAcA;sBAEzB,oBAACjB,QAAQ,KAAK,CAAC,MAAM;QACjB,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACG,YAAUA;QACjB,QAAQ"}
@@ -1,4 +1,4 @@
1
- export declare const TmPermissionsFeature: import("@webiny/feature/admin").FeatureDefinition<{
1
+ export declare const TmPermissionsFeature: import("@webiny/feature/admin/createFeature.js").FeatureDefinition<{
2
2
  permissions: {
3
3
  canAccess: (entityId: never) => boolean;
4
4
  canAction: (action: string, entityId: never) => boolean;
@@ -1,6 +1,6 @@
1
1
  import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
2
2
  declare class AddCmsPermissions implements PermissionTransformer.Interface {
3
- execute(permission: PermissionTransformer.Permission): PermissionTransformer.Permission | PermissionTransformer.Permission[];
3
+ execute(permission: PermissionTransformer.Permission): PermissionTransformer.Permission[] | PermissionTransformer.Permission;
4
4
  }
5
5
  declare const _default: typeof AddCmsPermissions & {
6
6
  __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js").IPermissionTransformer>;
@@ -1,4 +1,4 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
2
  import { ListModelsUseCase } from "@webiny/api-headless-cms/exports/api/cms/model.js";
3
3
  import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
4
4
  import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
@@ -11,6 +11,6 @@ declare class CreateTenantSchema implements GraphQLSchemaFactory.Interface {
11
11
  private getExtensionsInput;
12
12
  }
13
13
  declare const _default: typeof CreateTenantSchema & {
14
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
14
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
15
15
  };
16
16
  export default _default;
@@ -1,5 +1,5 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
2
- import { ErrorResponse, Response } from "@webiny/handler-graphql";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
+ import { ErrorResponse, Response } from "@webiny/api-graphql";
3
3
  import { renderInputFields } from "@webiny/api-headless-cms/utils/renderInputFields.js";
4
4
  import { CreateTenantUseCase } from "../features/CreateTenant/abstractions.js";
5
5
  import { ListModelsUseCase } from "@webiny/api-headless-cms/exports/api/cms/model.js";
@@ -55,6 +55,12 @@ class CreateTenantSchema {
55
55
  ];
56
56
  const models = modelsResult.value;
57
57
  const model = models.find((m)=>m.modelId === TENANT_MODEL_ID);
58
+ if (!model) return [
59
+ {
60
+ typeDefs: "",
61
+ fields: "extensions: JSON"
62
+ }
63
+ ];
58
64
  const inputCreateFields = renderInputFields({
59
65
  models,
60
66
  model,
@@ -1 +1 @@
1
- {"version":3,"file":"api/graphql/CreateTenantSchema.js","sources":["../../../src/api/graphql/CreateTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { CreateTenantUseCase } from \"../features/CreateTenant/abstractions.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/exports/api/cms/model.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\n\nclass CreateTenantSchema implements GraphQLSchemaFactory.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private listModelsUseCase: ListModelsUseCase.Interface,\n private readonly fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface\n ) {}\n\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n const inputCreateFields = await this.getExtensionsInput();\n\n builder.addTypeDefs(/* GraphQL */ `\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n\n input CreateTenantInput {\n id: ID\n name: String!\n description: String\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n `);\n\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n createTenant(input: CreateTenantInput!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ input: CreateTenantUseCase.Input }>({\n path: \"TenantManagerMutation.createTenant\",\n dependencies: [CreateTenantUseCase],\n resolver: (createTenant: CreateTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createTenant.execute(args.input);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n\n private async getExtensionsInput() {\n const modelsResult = await this.identityContext.withoutAuthorization(() => {\n return this.listModelsUseCase.execute({\n includePlugins: true,\n includePrivate: false\n });\n });\n\n if (modelsResult.isFail()) {\n return [\n {\n typeDefs: \"\",\n fields: \"extensions: JSON\"\n }\n ];\n }\n\n const models = modelsResult.value;\n const model = models.find(m => m.modelId === TENANT_MODEL_ID)!;\n\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields: model.fields.filter(f => f.fieldId === \"extensions\"),\n fieldRegistry: this.fieldRegistry\n });\n\n return inputCreateFields;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: CreateTenantSchema,\n dependencies: [IdentityContext, ListModelsUseCase, CmsModelFieldToGraphQLRegistry]\n});\n"],"names":["CreateTenantSchema","identityContext","listModelsUseCase","fieldRegistry","builder","inputCreateFields","f","CreateTenantUseCase","createTenant","args","result","ErrorResponse","Response","modelsResult","models","model","m","TENANT_MODEL_ID","renderInputFields","GraphQLSchemaFactory","IdentityContext","ListModelsUseCase","CmsModelFieldToGraphQLRegistry"],"mappings":";;;;;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,iBAA8C,EACrCC,aAAuD,CAC1E;aAHUF,eAAe,GAAfA;aACAC,iBAAiB,GAAjBA;aACSC,aAAa,GAAbA;IAClB;IAEH,MAAM,QACFC,OAA2C,EACA;QAC3C,MAAMC,oBAAoB,MAAM,IAAI,CAAC,kBAAkB;QAEvDD,QAAQ,WAAW,CAAe,CAAC;YAC/B,EAAEC,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;;;;;;gBAMhD,EAAED,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;QAE1D,CAAC;QAEDF,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuC;YACtD,MAAM;YACN,cAAc;gBAACG;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC,KAAK,KAAK;oBAEpD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAOR;IACX;IAEA,MAAc,qBAAqB;QAC/B,MAAMS,eAAe,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAC1D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAClC,gBAAgB;gBAChB,gBAAgB;YACpB;QAGJ,IAAIA,aAAa,MAAM,IACnB,OAAO;YACH;gBACI,UAAU;gBACV,QAAQ;YACZ;SACH;QAGL,MAAMC,SAASD,aAAa,KAAK;QACjC,MAAME,QAAQD,OAAO,IAAI,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKC;QAE7C,MAAMZ,oBAAoBa,kBAAkB;YACxCJ;YACAC;YACA,QAAQA,MAAM,MAAM,CAAC,MAAM,CAACT,CAAAA,IAAKA,AAAc,iBAAdA,EAAE,OAAO;YAC1C,eAAe,IAAI,CAAC,aAAa;QACrC;QAEA,OAAOD;IACX;AACJ;AAEA,mCAAec,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBnB;IAChB,cAAc;QAACoB;QAAiBC;QAAmBC;KAA+B;AACtF"}
1
+ {"version":3,"file":"api/graphql/CreateTenantSchema.js","sources":["../../../src/api/graphql/CreateTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { CreateTenantUseCase } from \"../features/CreateTenant/abstractions.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/exports/api/cms/model.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\n\nclass CreateTenantSchema implements GraphQLSchemaFactory.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private listModelsUseCase: ListModelsUseCase.Interface,\n private readonly fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface\n ) {}\n\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n const inputCreateFields = await this.getExtensionsInput();\n\n builder.addTypeDefs(/* GraphQL */ `\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n\n input CreateTenantInput {\n id: ID\n name: String!\n description: String\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n `);\n\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n createTenant(input: CreateTenantInput!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ input: CreateTenantUseCase.Input }>({\n path: \"TenantManagerMutation.createTenant\",\n dependencies: [CreateTenantUseCase],\n resolver: (createTenant: CreateTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createTenant.execute(args.input);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n\n private async getExtensionsInput() {\n const modelsResult = await this.identityContext.withoutAuthorization(() => {\n return this.listModelsUseCase.execute({\n includePlugins: true,\n includePrivate: false\n });\n });\n\n if (modelsResult.isFail()) {\n return [\n {\n typeDefs: \"\",\n fields: \"extensions: JSON\"\n }\n ];\n }\n\n const models = modelsResult.value;\n const model = models.find(m => m.modelId === TENANT_MODEL_ID);\n\n if (!model) {\n return [{ typeDefs: \"\", fields: \"extensions: JSON\" }];\n }\n\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields: model.fields.filter(f => f.fieldId === \"extensions\"),\n fieldRegistry: this.fieldRegistry\n });\n\n return inputCreateFields;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: CreateTenantSchema,\n dependencies: [IdentityContext, ListModelsUseCase, CmsModelFieldToGraphQLRegistry]\n});\n"],"names":["CreateTenantSchema","identityContext","listModelsUseCase","fieldRegistry","builder","inputCreateFields","f","CreateTenantUseCase","createTenant","args","result","ErrorResponse","Response","modelsResult","models","model","m","TENANT_MODEL_ID","renderInputFields","GraphQLSchemaFactory","IdentityContext","ListModelsUseCase","CmsModelFieldToGraphQLRegistry"],"mappings":";;;;;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,iBAA8C,EACrCC,aAAuD,CAC1E;aAHUF,eAAe,GAAfA;aACAC,iBAAiB,GAAjBA;aACSC,aAAa,GAAbA;IAClB;IAEH,MAAM,QACFC,OAA2C,EACA;QAC3C,MAAMC,oBAAoB,MAAM,IAAI,CAAC,kBAAkB;QAEvDD,QAAQ,WAAW,CAAe,CAAC;YAC/B,EAAEC,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;;;;;;gBAMhD,EAAED,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;QAE1D,CAAC;QAEDF,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuC;YACtD,MAAM;YACN,cAAc;gBAACG;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC,KAAK,KAAK;oBAEpD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAOR;IACX;IAEA,MAAc,qBAAqB;QAC/B,MAAMS,eAAe,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAC1D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAClC,gBAAgB;gBAChB,gBAAgB;YACpB;QAGJ,IAAIA,aAAa,MAAM,IACnB,OAAO;YACH;gBACI,UAAU;gBACV,QAAQ;YACZ;SACH;QAGL,MAAMC,SAASD,aAAa,KAAK;QACjC,MAAME,QAAQD,OAAO,IAAI,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKC;QAE7C,IAAI,CAACF,OACD,OAAO;YAAC;gBAAE,UAAU;gBAAI,QAAQ;YAAmB;SAAE;QAGzD,MAAMV,oBAAoBa,kBAAkB;YACxCJ;YACAC;YACA,QAAQA,MAAM,MAAM,CAAC,MAAM,CAACT,CAAAA,IAAKA,AAAc,iBAAdA,EAAE,OAAO;YAC1C,eAAe,IAAI,CAAC,aAAa;QACrC;QAEA,OAAOD;IACX;AACJ;AAEA,mCAAec,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBnB;IAChB,cAAc;QAACoB;QAAiBC;QAAmBC;KAA+B;AACtF"}
@@ -1,8 +1,8 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
2
  declare class DisableTenantSchema implements GraphQLSchemaFactory.Interface {
3
3
  execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
4
4
  }
5
5
  declare const _default: typeof DisableTenantSchema & {
6
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
7
7
  };
8
8
  export default _default;
@@ -1,5 +1,5 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
2
- import { ErrorResponse, Response } from "@webiny/handler-graphql";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
+ import { ErrorResponse, Response } from "@webiny/api-graphql";
3
3
  import { DisableTenantUseCase } from "../features/DisableTenant/abstractions.js";
4
4
  class DisableTenantSchema {
5
5
  async execute(builder) {
@@ -1 +1 @@
1
- {"version":3,"file":"api/graphql/DisableTenantSchema.js","sources":["../../../src/api/graphql/DisableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { DisableTenantUseCase } from \"../features/DisableTenant/abstractions.js\";\n\nclass DisableTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n disableTenant(tenantId: ID!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.disableTenant\",\n dependencies: [DisableTenantUseCase],\n resolver: (disableTenant: DisableTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await disableTenant.execute(args.tenantId);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: DisableTenantSchema,\n dependencies: []\n});\n"],"names":["DisableTenantSchema","builder","DisableTenantUseCase","disableTenant","args","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,cAAc,OAAO,CAACC,KAAK,QAAQ;oBAExD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAON;IACX;AACJ;AAEA,oCAAeO,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"api/graphql/DisableTenantSchema.js","sources":["../../../src/api/graphql/DisableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { DisableTenantUseCase } from \"../features/DisableTenant/abstractions.js\";\n\nclass DisableTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n disableTenant(tenantId: ID!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.disableTenant\",\n dependencies: [DisableTenantUseCase],\n resolver: (disableTenant: DisableTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await disableTenant.execute(args.tenantId);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: DisableTenantSchema,\n dependencies: []\n});\n"],"names":["DisableTenantSchema","builder","DisableTenantUseCase","disableTenant","args","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,cAAc,OAAO,CAACC,KAAK,QAAQ;oBAExD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAON;IACX;AACJ;AAEA,oCAAeO,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
@@ -1,8 +1,8 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
2
  declare class EnableTenantSchema implements GraphQLSchemaFactory.Interface {
3
3
  execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
4
4
  }
5
5
  declare const _default: typeof EnableTenantSchema & {
6
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
7
7
  };
8
8
  export default _default;
@@ -1,5 +1,5 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
2
- import { ErrorResponse, Response } from "@webiny/handler-graphql";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
+ import { ErrorResponse, Response } from "@webiny/api-graphql";
3
3
  import { EnableTenantUseCase } from "../features/EnableTenant/abstractions.js";
4
4
  class EnableTenantSchema {
5
5
  async execute(builder) {
@@ -1 +1 @@
1
- {"version":3,"file":"api/graphql/EnableTenantSchema.js","sources":["../../../src/api/graphql/EnableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { EnableTenantUseCase } from \"../features/EnableTenant/abstractions.js\";\n\nclass EnableTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n enableTenant(tenantId: ID!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.enableTenant\",\n dependencies: [EnableTenantUseCase],\n resolver: (enableTenant: EnableTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await enableTenant.execute(args.tenantId);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: EnableTenantSchema,\n dependencies: []\n});\n"],"names":["EnableTenantSchema","builder","EnableTenantUseCase","enableTenant","args","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC,KAAK,QAAQ;oBAEvD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAON;IACX;AACJ;AAEA,mCAAeO,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"api/graphql/EnableTenantSchema.js","sources":["../../../src/api/graphql/EnableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { EnableTenantUseCase } from \"../features/EnableTenant/abstractions.js\";\n\nclass EnableTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n enableTenant(tenantId: ID!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.enableTenant\",\n dependencies: [EnableTenantUseCase],\n resolver: (enableTenant: EnableTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await enableTenant.execute(args.tenantId);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: EnableTenantSchema,\n dependencies: []\n});\n"],"names":["EnableTenantSchema","builder","EnableTenantUseCase","enableTenant","args","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC,KAAK,QAAQ;oBAEvD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAON;IACX;AACJ;AAEA,mCAAeO,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
@@ -1,8 +1,8 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
2
  declare class GetCurrentTenantSchema implements GraphQLSchemaFactory.Interface {
3
3
  execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
4
4
  }
5
5
  declare const _default: typeof GetCurrentTenantSchema & {
6
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
7
7
  };
8
8
  export default _default;
@@ -1,5 +1,5 @@
1
- import { ErrorResponse, Response } from "@webiny/handler-graphql";
2
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { ErrorResponse, Response } from "@webiny/api-graphql";
2
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
3
3
  import { GetCurrentTenantUseCase } from "../features/GetCurrentTenant/abstractions.js";
4
4
  class GetCurrentTenantSchema {
5
5
  async execute(builder) {
@@ -1 +1 @@
1
- {"version":3,"file":"api/graphql/GetCurrentTenantSchema.js","sources":["../../../src/api/graphql/GetCurrentTenantSchema.ts"],"sourcesContent":["import { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { GetCurrentTenantUseCase } from \"../features/GetCurrentTenant/abstractions.js\";\n\nclass GetCurrentTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type TenantResponse {\n data: Tenant\n error: Error\n }\n\n type Tenant {\n id: ID!\n values: JSON!\n }\n\n type TenantManagerQuery {\n getCurrentTenant: TenantResponse\n }\n\n extend type Query {\n tenantManager: TenantManagerQuery\n }\n `);\n\n builder.addResolver({\n path: \"Query.tenantManager\",\n resolver: () => {\n return () => ({});\n }\n });\n\n builder.addResolver({\n path: \"TenantManagerQuery.getCurrentTenant\",\n dependencies: [GetCurrentTenantUseCase],\n resolver: (getCurrentTenant: GetCurrentTenantUseCase.Interface) => {\n return async () => {\n const result = await getCurrentTenant.execute();\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: GetCurrentTenantSchema,\n dependencies: []\n});\n"],"names":["GetCurrentTenantSchema","builder","GetCurrentTenantUseCase","getCurrentTenant","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;QAkBnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IACC,IAAO,EAAC;QAEvB;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAwB;YACvC,UAAU,CAACC,mBACA;oBACH,MAAMC,SAAS,MAAMD,iBAAiB,OAAO;oBAE7C,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAEzC,OAAO,IAAIE,SAASF,OAAO,KAAK;gBACpC;QAER;QAEA,OAAOH;IACX;AACJ;AAEA,uCAAeM,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBP;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"api/graphql/GetCurrentTenantSchema.js","sources":["../../../src/api/graphql/GetCurrentTenantSchema.ts"],"sourcesContent":["import { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { GetCurrentTenantUseCase } from \"../features/GetCurrentTenant/abstractions.js\";\n\nclass GetCurrentTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type TenantResponse {\n data: Tenant\n error: Error\n }\n\n type Tenant {\n id: ID!\n values: JSON!\n }\n\n type TenantManagerQuery {\n getCurrentTenant: TenantResponse\n }\n\n extend type Query {\n tenantManager: TenantManagerQuery\n }\n `);\n\n builder.addResolver({\n path: \"Query.tenantManager\",\n resolver: () => {\n return () => ({});\n }\n });\n\n builder.addResolver({\n path: \"TenantManagerQuery.getCurrentTenant\",\n dependencies: [GetCurrentTenantUseCase],\n resolver: (getCurrentTenant: GetCurrentTenantUseCase.Interface) => {\n return async () => {\n const result = await getCurrentTenant.execute();\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: GetCurrentTenantSchema,\n dependencies: []\n});\n"],"names":["GetCurrentTenantSchema","builder","GetCurrentTenantUseCase","getCurrentTenant","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;QAkBnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IACC,IAAO,EAAC;QAEvB;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAwB;YACvC,UAAU,CAACC,mBACA;oBACH,MAAMC,SAAS,MAAMD,iBAAiB,OAAO;oBAE7C,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAEzC,OAAO,IAAIE,SAASF,OAAO,KAAK;gBACpC;QAER;QAEA,OAAOH;IACX;AACJ;AAEA,uCAAeM,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBP;IAChB,cAAc,EAAE;AACpB"}
@@ -1,8 +1,8 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
2
  declare class InstallTenantSchema implements GraphQLSchemaFactory.Interface {
3
3
  execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
4
4
  }
5
5
  declare const _default: typeof InstallTenantSchema & {
6
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
7
7
  };
8
8
  export default _default;
@@ -1,5 +1,5 @@
1
- import { GraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
2
- import { ErrorResponse, Response } from "@webiny/handler-graphql";
1
+ import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
+ import { ErrorResponse, Response } from "@webiny/api-graphql";
3
3
  import { CreateAndInstallTenantUseCase } from "../features/CreateAndInstallTenant/abstractions.js";
4
4
  import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
5
5
  import NotAuthorizedResponse from "@webiny/api-core/graphql/security/NotAuthorizedResponse.js";
@@ -1 +1 @@
1
- {"version":3,"file":"api/graphql/InstallTenantSchema.js","sources":["../../../src/api/graphql/InstallTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/handler-graphql\";\nimport { ErrorResponse } from \"@webiny/handler-graphql\";\nimport { CreateAndInstallTenantUseCase } from \"../features/CreateAndInstallTenant/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\n\nclass InstallTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type TenantManagerMutation {\n installTenant(tenantId: ID!): BooleanResponse\n }\n\n extend type Mutation {\n tenantManager: TenantManagerMutation\n }\n `);\n\n builder.addResolver({\n path: \"Mutation.tenantManager\",\n resolver: () => {\n return () => ({});\n }\n });\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.installTenant\",\n dependencies: [IdentityContext, CreateAndInstallTenantUseCase],\n resolver: (\n identityContext: IdentityContext.Interface,\n installTenant: CreateAndInstallTenantUseCase.Interface\n ) => {\n return async ({ args }) => {\n if (!identityContext.getPermission(\"tm.tenant\")) {\n return new NotAuthorizedResponse();\n }\n\n const result = await installTenant.execute(args.tenantId);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: InstallTenantSchema,\n dependencies: []\n});\n"],"names":["InstallTenantSchema","builder","IdentityContext","CreateAndInstallTenantUseCase","identityContext","installTenant","args","NotAuthorizedResponse","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;;;AAOA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;QAQnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IACC,IAAO,EAAC;QAEvB;QAEAA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;gBAAiBC;aAA8B;YAC9D,UAAU,CACNC,iBACAC,gBAEO,OAAO,EAAEC,IAAI,EAAE;oBAClB,IAAI,CAACF,gBAAgB,aAAa,CAAC,cAC/B,OAAO,IAAIG;oBAGf,MAAMC,SAAS,MAAMH,cAAc,OAAO,CAACC,KAAK,QAAQ;oBACxD,IAAIE,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAEzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAOT;IACX;AACJ;AAEA,oCAAeU,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBX;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"api/graphql/InstallTenantSchema.js","sources":["../../../src/api/graphql/InstallTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { CreateAndInstallTenantUseCase } from \"../features/CreateAndInstallTenant/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\n\nclass InstallTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type TenantManagerMutation {\n installTenant(tenantId: ID!): BooleanResponse\n }\n\n extend type Mutation {\n tenantManager: TenantManagerMutation\n }\n `);\n\n builder.addResolver({\n path: \"Mutation.tenantManager\",\n resolver: () => {\n return () => ({});\n }\n });\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.installTenant\",\n dependencies: [IdentityContext, CreateAndInstallTenantUseCase],\n resolver: (\n identityContext: IdentityContext.Interface,\n installTenant: CreateAndInstallTenantUseCase.Interface\n ) => {\n return async ({ args }) => {\n if (!identityContext.getPermission(\"tm.tenant\")) {\n return new NotAuthorizedResponse();\n }\n\n const result = await installTenant.execute(args.tenantId);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: InstallTenantSchema,\n dependencies: []\n});\n"],"names":["InstallTenantSchema","builder","IdentityContext","CreateAndInstallTenantUseCase","identityContext","installTenant","args","NotAuthorizedResponse","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;;;AAOA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;QAQnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IACC,IAAO,EAAC;QAEvB;QAEAA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;gBAAiBC;aAA8B;YAC9D,UAAU,CACNC,iBACAC,gBAEO,OAAO,EAAEC,IAAI,EAAE;oBAClB,IAAI,CAACF,gBAAgB,aAAa,CAAC,cAC/B,OAAO,IAAIG;oBAGf,MAAMC,SAAS,MAAMH,cAAc,OAAO,CAACC,KAAK,QAAQ;oBACxD,IAAIE,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAEzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAOT;IACX;AACJ;AAEA,oCAAeU,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBX;IAChB,cAAc,EAAE;AACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/tenant-manager",
3
- "version": "6.4.5-beta.0",
3
+ "version": "6.6.0-alpha.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -15,29 +15,27 @@
15
15
  "author": "Webiny Ltd.",
16
16
  "license": "Webiny Enterprise",
17
17
  "dependencies": {
18
- "@apollo/react-hooks": "3.1.5",
19
- "@webiny/admin-ui": "6.4.5-beta.0",
20
- "@webiny/api-core": "6.4.5-beta.0",
21
- "@webiny/api-headless-cms": "6.4.5-beta.0",
22
- "@webiny/app": "6.4.5-beta.0",
23
- "@webiny/app-aco": "6.4.5-beta.0",
24
- "@webiny/app-admin": "6.4.5-beta.0",
25
- "@webiny/app-headless-cms": "6.4.5-beta.0",
26
- "@webiny/feature": "6.4.5-beta.0",
27
- "@webiny/handler-graphql": "6.4.5-beta.0",
28
- "@webiny/icons": "6.4.5-beta.0",
29
- "@webiny/project": "6.4.5-beta.0",
30
- "@webiny/project-aws": "6.4.5-beta.0",
31
- "graphql-tag": "2.12.7",
18
+ "@webiny/admin-ui": "6.6.0-alpha.0",
19
+ "@webiny/api-core": "6.6.0-alpha.0",
20
+ "@webiny/api-graphql": "6.6.0-alpha.0",
21
+ "@webiny/api-headless-cms": "6.6.0-alpha.0",
22
+ "@webiny/app": "6.6.0-alpha.0",
23
+ "@webiny/app-aco": "6.6.0-alpha.0",
24
+ "@webiny/app-admin": "6.6.0-alpha.0",
25
+ "@webiny/app-headless-cms": "6.6.0-alpha.0",
26
+ "@webiny/feature": "6.6.0-alpha.0",
27
+ "@webiny/icons": "6.6.0-alpha.0",
28
+ "@webiny/project": "6.6.0-alpha.0",
29
+ "@webiny/project-aws": "6.6.0-alpha.0",
32
30
  "mobx": "6.16.1",
33
31
  "mobx-react-lite": "4.1.1",
34
32
  "react": "18.3.1",
35
33
  "react-dom": "18.3.1"
36
34
  },
37
35
  "devDependencies": {
38
- "@webiny/build-tools": "6.4.5-beta.0",
36
+ "@webiny/build-tools": "6.6.0-alpha.0",
39
37
  "rimraf": "6.1.3",
40
- "typescript": "6.0.3"
38
+ "typescript": "7.0.2"
41
39
  },
42
40
  "publishConfig": {
43
41
  "access": "public"
@@ -1,16 +0,0 @@
1
- export declare const INSTALL_TENANT: import("graphql").DocumentNode;
2
- export interface InstallTenantResponse {
3
- tenantManager: {
4
- installTenant: {
5
- data: boolean;
6
- error?: null;
7
- } | {
8
- data: null;
9
- error: {
10
- code: string;
11
- message: string;
12
- data: Record<string, any>;
13
- };
14
- };
15
- };
16
- }
@@ -1,18 +0,0 @@
1
- import graphql_tag from "graphql-tag";
2
- const INSTALL_TENANT = graphql_tag`
3
- mutation InstallTenant($tenantId: ID!) {
4
- tenantManager {
5
- installTenant(tenantId: $tenantId) {
6
- data
7
- error {
8
- code
9
- message
10
- data
11
- }
12
- }
13
- }
14
- }
15
- `;
16
- export { INSTALL_TENANT };
17
-
18
- //# sourceMappingURL=installTenant.gql.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin/TenantEntryList/InstallTenantButton/installTenant.gql.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/installTenant.gql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nexport const INSTALL_TENANT = gql`\n mutation InstallTenant($tenantId: ID!) {\n tenantManager {\n installTenant(tenantId: $tenantId) {\n data\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport interface InstallTenantResponse {\n tenantManager: {\n installTenant:\n | {\n data: boolean;\n error?: null;\n }\n | {\n data: null;\n error: {\n code: string;\n message: string;\n data: Record<string, any>;\n };\n };\n };\n}\n"],"names":["INSTALL_TENANT","gql"],"mappings":";AAEO,MAAMA,iBAAiBC,WAAG,CAAC;;;;;;;;;;;;;AAalC,CAAC"}