@webiny/api-aco 0.0.0-unstable.99666aeb00 → 0.0.0-unstable.a9593f74dd

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 (138) hide show
  1. package/apps/AcoApp.d.ts +5 -0
  2. package/apps/AcoApp.js +56 -21
  3. package/apps/AcoApp.js.map +1 -1
  4. package/apps/AcoApps.js +7 -8
  5. package/apps/AcoApps.js.map +1 -1
  6. package/apps/app.gql.js +6 -4
  7. package/apps/app.gql.js.map +1 -1
  8. package/apps/index.js +3 -1
  9. package/apps/index.js.map +1 -1
  10. package/createAcoContext.d.ts +5 -1
  11. package/createAcoContext.js +119 -25
  12. package/createAcoContext.js.map +1 -1
  13. package/createAcoGraphQL.js +6 -2
  14. package/createAcoGraphQL.js.map +1 -1
  15. package/createAcoHooks.js +9 -3
  16. package/createAcoHooks.js.map +1 -1
  17. package/createAcoModels.js +6 -19
  18. package/createAcoModels.js.map +1 -1
  19. package/createAcoStorageOperations.d.ts +0 -1
  20. package/createAcoStorageOperations.js +10 -7
  21. package/createAcoStorageOperations.js.map +1 -1
  22. package/fields/index.js +3 -1
  23. package/fields/index.js.map +1 -1
  24. package/fields/location.js +3 -1
  25. package/fields/location.js.map +1 -1
  26. package/filter/filter.crud.d.ts +3 -0
  27. package/filter/filter.crud.js +94 -0
  28. package/filter/filter.crud.js.map +1 -0
  29. package/filter/filter.gql.d.ts +3 -0
  30. package/filter/filter.gql.js +153 -0
  31. package/filter/filter.gql.js.map +1 -0
  32. package/filter/filter.model.d.ts +2 -0
  33. package/filter/filter.model.js +125 -0
  34. package/filter/filter.model.js.map +1 -0
  35. package/filter/filter.so.d.ts +3 -0
  36. package/filter/filter.so.js +98 -0
  37. package/filter/filter.so.js.map +1 -0
  38. package/filter/filter.types.d.ts +95 -0
  39. package/filter/filter.types.js +14 -0
  40. package/filter/filter.types.js.map +1 -0
  41. package/folder/folder.crud.d.ts +8 -1
  42. package/folder/folder.crud.js +194 -15
  43. package/folder/folder.crud.js.map +1 -1
  44. package/folder/folder.gql.js +85 -8
  45. package/folder/folder.gql.js.map +1 -1
  46. package/folder/folder.model.d.ts +1 -3
  47. package/folder/folder.model.js +54 -7
  48. package/folder/folder.model.js.map +1 -1
  49. package/folder/folder.so.js +38 -18
  50. package/folder/folder.so.js.map +1 -1
  51. package/folder/folder.types.d.ts +28 -2
  52. package/folder/folder.types.js +3 -1
  53. package/folder/folder.types.js.map +1 -1
  54. package/folder/onFolderBeforeDeleteAco.hook.d.ts +2 -0
  55. package/folder/onFolderBeforeDeleteAco.hook.js +67 -0
  56. package/folder/onFolderBeforeDeleteAco.hook.js.map +1 -0
  57. package/folder/onFolderBeforeDeleteFm.hook.d.ts +2 -0
  58. package/folder/onFolderBeforeDeleteFm.hook.js +49 -0
  59. package/folder/onFolderBeforeDeleteFm.hook.js.map +1 -0
  60. package/folder/onFolderBeforeDeleteHcms.hook.d.ts +2 -0
  61. package/folder/onFolderBeforeDeleteHcms.hook.js +56 -0
  62. package/folder/onFolderBeforeDeleteHcms.hook.js.map +1 -0
  63. package/index.d.ts +5 -1
  64. package/index.js +14 -4
  65. package/index.js.map +1 -1
  66. package/package.json +31 -27
  67. package/plugins/AcoAppModifierPlugin.js +4 -5
  68. package/plugins/AcoAppModifierPlugin.js.map +1 -1
  69. package/plugins/AcoAppRegisterPlugin.js +4 -5
  70. package/plugins/AcoAppRegisterPlugin.js.map +1 -1
  71. package/plugins/index.js +3 -1
  72. package/plugins/index.js.map +1 -1
  73. package/record/graphql/createAppResolvers.js +26 -19
  74. package/record/graphql/createAppResolvers.js.map +1 -1
  75. package/record/graphql/createAppSchema.js +10 -5
  76. package/record/graphql/createAppSchema.js.map +1 -1
  77. package/record/record.crud.js +3 -1
  78. package/record/record.crud.js.map +1 -1
  79. package/record/record.gql.js +3 -1
  80. package/record/record.gql.js.map +1 -1
  81. package/record/record.model.d.ts +1 -3
  82. package/record/record.model.js +7 -7
  83. package/record/record.model.js.map +1 -1
  84. package/record/record.so.js +35 -23
  85. package/record/record.so.js.map +1 -1
  86. package/record/record.types.d.ts +4 -3
  87. package/record/record.types.js +3 -1
  88. package/record/record.types.js.map +1 -1
  89. package/types.d.ts +23 -6
  90. package/types.js +25 -4
  91. package/types.js.map +1 -1
  92. package/utils/FolderLevelPermissions.d.ts +71 -0
  93. package/utils/FolderLevelPermissions.js +353 -0
  94. package/utils/FolderLevelPermissions.js.map +1 -0
  95. package/utils/acoRecordId.js +3 -1
  96. package/utils/acoRecordId.js.map +1 -1
  97. package/utils/createListSort.js +3 -1
  98. package/utils/createListSort.js.map +1 -1
  99. package/utils/createModelField.js +3 -1
  100. package/utils/createModelField.js.map +1 -1
  101. package/utils/createOperationsWrapper.js +3 -1
  102. package/utils/createOperationsWrapper.js.map +1 -1
  103. package/utils/decorators/CmsEntriesCrudDecorators.d.ts +11 -0
  104. package/utils/decorators/CmsEntriesCrudDecorators.js +232 -0
  105. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -0
  106. package/utils/decorators/constants.d.ts +1 -0
  107. package/utils/decorators/constants.js +10 -0
  108. package/utils/decorators/constants.js.map +1 -0
  109. package/utils/decorators/where.d.ts +14 -0
  110. package/utils/decorators/where.js +52 -0
  111. package/utils/decorators/where.js.map +1 -0
  112. package/utils/ensureAuthentication.d.ts +2 -0
  113. package/utils/{checkPermissions.js → ensureAuthentication.js} +5 -3
  114. package/utils/ensureAuthentication.js.map +1 -0
  115. package/utils/getFolderAndItsAncestors.d.ts +2 -2
  116. package/utils/getFolderAndItsAncestors.js +16 -11
  117. package/utils/getFolderAndItsAncestors.js.map +1 -1
  118. package/utils/isInstallationPending.js +3 -1
  119. package/utils/isInstallationPending.js.map +1 -1
  120. package/utils/modelFactory.d.ts +1 -3
  121. package/utils/modelFactory.js +7 -10
  122. package/utils/modelFactory.js.map +1 -1
  123. package/utils/pickEntryFieldValues.d.ts +3 -0
  124. package/utils/pickEntryFieldValues.js +31 -0
  125. package/utils/pickEntryFieldValues.js.map +1 -0
  126. package/utils/resolve.js +3 -1
  127. package/utils/resolve.js.map +1 -1
  128. package/folder/onFolderBeforeDelete.hook.d.ts +0 -2
  129. package/folder/onFolderBeforeDelete.hook.js +0 -66
  130. package/folder/onFolderBeforeDelete.hook.js.map +0 -1
  131. package/utils/checkPermissions.d.ts +0 -2
  132. package/utils/checkPermissions.js.map +0 -1
  133. package/utils/fieldResolver.d.ts +0 -16
  134. package/utils/fieldResolver.js +0 -44
  135. package/utils/fieldResolver.js.map +0 -1
  136. package/utils/getFieldValues.d.ts +0 -5
  137. package/utils/getFieldValues.js +0 -16
  138. package/utils/getFieldValues.js.map +0 -1
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.onFolderBeforeDeleteHook = void 0;
8
- var _error = _interopRequireDefault(require("@webiny/error"));
9
- const throwDeleteError = folder => {
10
- throw new _error.default("Error: delete all child folders and entries before proceeding.", "DELETE_FOLDER_WITH_CHILDREN", {
11
- folder
12
- });
13
- };
14
- const onFolderBeforeDeleteHook = ({
15
- aco
16
- }) => {
17
- aco.folder.onFolderBeforeDelete.subscribe(async ({
18
- folder
19
- }) => {
20
- try {
21
- const {
22
- id,
23
- type
24
- } = folder;
25
- /**
26
- * First we check for the child folders.
27
- */
28
- const [children] = await aco.folder.list({
29
- where: {
30
- type,
31
- parentId: id
32
- },
33
- limit: 1
34
- });
35
- if (children.length > 0) {
36
- throwDeleteError(folder);
37
- }
38
- /**
39
- * Then for entries in each of the apps.
40
- * Because we split the apps we must do it like this.
41
- */
42
- const apps = aco.listApps();
43
- for (const app of apps) {
44
- const [records] = await app.search.list({
45
- where: {
46
- type,
47
- location: {
48
- folderId: id
49
- }
50
- },
51
- limit: 1
52
- });
53
- if (records.length === 0) {
54
- continue;
55
- }
56
- throwDeleteError(folder);
57
- }
58
- } catch (error) {
59
- throw _error.default.from(error, {
60
- message: "Error while executing onFolderBeforeDelete hook",
61
- code: "ACO_BEFORE_FOLDER_DELETE_HOOK"
62
- });
63
- }
64
- });
65
- };
66
- exports.onFolderBeforeDeleteHook = onFolderBeforeDeleteHook;
@@ -1 +0,0 @@
1
- {"version":3,"names":["throwDeleteError","folder","WebinyError","onFolderBeforeDeleteHook","aco","onFolderBeforeDelete","subscribe","id","type","children","list","where","parentId","limit","length","apps","listApps","app","records","search","location","folderId","error","from","message","code"],"sources":["onFolderBeforeDelete.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AcoContext, Folder } from \"~/types\";\n\nconst throwDeleteError = (folder: Folder) => {\n throw new WebinyError(\n \"Error: delete all child folders and entries before proceeding.\",\n \"DELETE_FOLDER_WITH_CHILDREN\",\n {\n folder\n }\n );\n};\n\nexport const onFolderBeforeDeleteHook = ({ aco }: AcoContext) => {\n aco.folder.onFolderBeforeDelete.subscribe(async ({ folder }) => {\n try {\n const { id, type } = folder;\n /**\n * First we check for the child folders.\n */\n const [children] = await aco.folder.list({\n where: {\n type,\n parentId: id\n },\n limit: 1\n });\n if (children.length > 0) {\n throwDeleteError(folder);\n }\n /**\n * Then for entries in each of the apps.\n * Because we split the apps we must do it like this.\n */\n const apps = aco.listApps();\n for (const app of apps) {\n const [records] = await app.search.list({\n where: {\n type,\n location: {\n folderId: id\n }\n },\n limit: 1\n });\n if (records.length === 0) {\n continue;\n }\n throwDeleteError(folder);\n }\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderBeforeDelete hook\",\n code: \"ACO_BEFORE_FOLDER_DELETE_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA;AAGA,MAAMA,gBAAgB,GAAIC,MAAc,IAAK;EACzC,MAAM,IAAIC,cAAW,CACjB,gEAAgE,EAChE,6BAA6B,EAC7B;IACID;EACJ,CAAC,CACJ;AACL,CAAC;AAEM,MAAME,wBAAwB,GAAG,CAAC;EAAEC;AAAgB,CAAC,KAAK;EAC7DA,GAAG,CAACH,MAAM,CAACI,oBAAoB,CAACC,SAAS,CAAC,OAAO;IAAEL;EAAO,CAAC,KAAK;IAC5D,IAAI;MACA,MAAM;QAAEM,EAAE;QAAEC;MAAK,CAAC,GAAGP,MAAM;MAC3B;AACZ;AACA;MACY,MAAM,CAACQ,QAAQ,CAAC,GAAG,MAAML,GAAG,CAACH,MAAM,CAACS,IAAI,CAAC;QACrCC,KAAK,EAAE;UACHH,IAAI;UACJI,QAAQ,EAAEL;QACd,CAAC;QACDM,KAAK,EAAE;MACX,CAAC,CAAC;MACF,IAAIJ,QAAQ,CAACK,MAAM,GAAG,CAAC,EAAE;QACrBd,gBAAgB,CAACC,MAAM,CAAC;MAC5B;MACA;AACZ;AACA;AACA;MACY,MAAMc,IAAI,GAAGX,GAAG,CAACY,QAAQ,EAAE;MAC3B,KAAK,MAAMC,GAAG,IAAIF,IAAI,EAAE;QACpB,MAAM,CAACG,OAAO,CAAC,GAAG,MAAMD,GAAG,CAACE,MAAM,CAACT,IAAI,CAAC;UACpCC,KAAK,EAAE;YACHH,IAAI;YACJY,QAAQ,EAAE;cACNC,QAAQ,EAAEd;YACd;UACJ,CAAC;UACDM,KAAK,EAAE;QACX,CAAC,CAAC;QACF,IAAIK,OAAO,CAACJ,MAAM,KAAK,CAAC,EAAE;UACtB;QACJ;QACAd,gBAAgB,CAACC,MAAM,CAAC;MAC5B;IACJ,CAAC,CAAC,OAAOqB,KAAK,EAAE;MACZ,MAAMpB,cAAW,CAACqB,IAAI,CAACD,KAAK,EAAE;QAC1BE,OAAO,EAAE,iDAAiD;QAC1DC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -1,2 +0,0 @@
1
- import { AcoContext } from "../types";
2
- export declare const checkPermissions: (context: AcoContext) => void;
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkPermissions","context","identity","security","getIdentity","NotAuthorizedError"],"sources":["checkPermissions.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { AcoContext } from \"~/types\";\n\nexport const checkPermissions = (context: AcoContext) => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n};\n"],"mappings":";;;;;;AAAA;AAGO,MAAMA,gBAAgB,GAAIC,OAAmB,IAAK;EACrD,MAAMC,QAAQ,GAAGD,OAAO,CAACE,QAAQ,CAACC,WAAW,EAAE;EAC/C,IAAI,CAACF,QAAQ,EAAE;IACX,MAAM,IAAIG,+BAAkB,EAAE;EAClC;AACJ,CAAC;AAAC"}
@@ -1,16 +0,0 @@
1
- import { CmsContext, CmsEntry, CmsModel } from "@webiny/api-headless-cms/types";
2
- import { AcoBaseFields } from "../types";
3
- interface Transformer {
4
- fieldId: keyof AcoBaseFields;
5
- model: any;
6
- field: any;
7
- }
8
- interface GetFieldValuesParams {
9
- entry: CmsEntry;
10
- fields: string[];
11
- transformers?: Transformer[];
12
- context: CmsContext;
13
- }
14
- export declare const getFieldValues: <T extends AcoBaseFields>(params: GetFieldValuesParams) => Promise<T>;
15
- export declare const getTransformer: (model: CmsModel, fieldId: string) => Transformer;
16
- export {};
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getTransformer = exports.getFieldValues = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
- var _pick = _interopRequireDefault(require("lodash/pick"));
10
- var _apiHeadlessCms = require("@webiny/api-headless-cms");
11
- const getFieldValues = async params => {
12
- const {
13
- entry,
14
- context,
15
- transformers = [],
16
- fields
17
- } = params;
18
- const values = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(entry, fields)), entry.values);
19
- /**
20
- * Transform field value for each transformers.
21
- */
22
- for (const transformer of transformers) {
23
- const {
24
- fieldId,
25
- model,
26
- field
27
- } = transformer;
28
- // Get transformed value (eg. data decompression)
29
- values[fieldId] = await (0, _apiHeadlessCms.entryFieldFromStorageTransform)({
30
- context,
31
- model,
32
- field,
33
- value: values[fieldId]
34
- });
35
- }
36
- return values;
37
- };
38
- exports.getFieldValues = getFieldValues;
39
- const getTransformer = (model, fieldId) => ({
40
- fieldId: fieldId,
41
- model: model,
42
- field: model.fields.find(field => field.fieldId === fieldId)
43
- });
44
- exports.getTransformer = getTransformer;
@@ -1 +0,0 @@
1
- {"version":3,"names":["getFieldValues","params","entry","context","transformers","fields","values","pick","transformer","fieldId","model","field","entryFieldFromStorageTransform","value","getTransformer","find"],"sources":["fieldResolver.ts"],"sourcesContent":["import pick from \"lodash/pick\";\nimport { CmsContext, CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { entryFieldFromStorageTransform } from \"@webiny/api-headless-cms\";\nimport { AcoBaseFields } from \"~/types\";\n\ninterface Transformer {\n fieldId: keyof AcoBaseFields;\n model: any;\n field: any;\n}\n\ninterface GetFieldValuesParams {\n entry: CmsEntry;\n fields: string[];\n transformers?: Transformer[];\n context: CmsContext;\n}\n\nexport const getFieldValues = async <T extends AcoBaseFields>(\n params: GetFieldValuesParams\n): Promise<T> => {\n const { entry, context, transformers = [], fields } = params;\n const values = {\n ...pick(entry, fields),\n ...entry.values\n } as T;\n /**\n * Transform field value for each transformers.\n */\n for (const transformer of transformers) {\n const { fieldId, model, field } = transformer;\n // Get transformed value (eg. data decompression)\n values[fieldId] = await entryFieldFromStorageTransform({\n context,\n model,\n field,\n value: values[fieldId]\n });\n }\n\n return values;\n};\n\nexport const getTransformer = (model: CmsModel, fieldId: string): Transformer => ({\n fieldId: fieldId as unknown as keyof AcoBaseFields,\n model: model,\n field: model.fields.find(field => field.fieldId === fieldId)\n});\n"],"mappings":";;;;;;;;AAAA;AAEA;AAgBO,MAAMA,cAAc,GAAG,MAC1BC,MAA4B,IACf;EACb,MAAM;IAAEC,KAAK;IAAEC,OAAO;IAAEC,YAAY,GAAG,EAAE;IAAEC;EAAO,CAAC,GAAGJ,MAAM;EAC5D,MAAMK,MAAM,+DACL,IAAAC,aAAI,EAACL,KAAK,EAAEG,MAAM,CAAC,GACnBH,KAAK,CAACI,MAAM,CACb;EACN;AACJ;AACA;EACI,KAAK,MAAME,WAAW,IAAIJ,YAAY,EAAE;IACpC,MAAM;MAAEK,OAAO;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAGH,WAAW;IAC7C;IACAF,MAAM,CAACG,OAAO,CAAC,GAAG,MAAM,IAAAG,8CAA8B,EAAC;MACnDT,OAAO;MACPO,KAAK;MACLC,KAAK;MACLE,KAAK,EAAEP,MAAM,CAACG,OAAO;IACzB,CAAC,CAAC;EACN;EAEA,OAAOH,MAAM;AACjB,CAAC;AAAC;AAEK,MAAMQ,cAAc,GAAG,CAACJ,KAAe,EAAED,OAAe,MAAmB;EAC9EA,OAAO,EAAEA,OAAyC;EAClDC,KAAK,EAAEA,KAAK;EACZC,KAAK,EAAED,KAAK,CAACL,MAAM,CAACU,IAAI,CAACJ,KAAK,IAAIA,KAAK,CAACF,OAAO,KAAKA,OAAO;AAC/D,CAAC,CAAC;AAAC"}
@@ -1,5 +0,0 @@
1
- import { CmsEntry } from "@webiny/api-headless-cms/types";
2
- import { Folder } from "../folder/folder.types";
3
- import { SearchRecord } from "../record/record.types";
4
- export declare function getRecordFieldValues(entry: CmsEntry<any>, fields?: string[]): SearchRecord<any>;
5
- export declare function getFolderFieldValues(entry: CmsEntry, fields: string[]): Folder;
@@ -1,16 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getFolderFieldValues = getFolderFieldValues;
8
- exports.getRecordFieldValues = getRecordFieldValues;
9
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
- var _pick = _interopRequireDefault(require("lodash/pick"));
11
- function getRecordFieldValues(entry, fields) {
12
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, fields ? (0, _pick.default)(entry, fields) : entry), entry.values);
13
- }
14
- function getFolderFieldValues(entry, fields) {
15
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(entry, fields)), entry.values);
16
- }
@@ -1 +0,0 @@
1
- {"version":3,"names":["getRecordFieldValues","entry","fields","pick","values","getFolderFieldValues"],"sources":["getFieldValues.ts"],"sourcesContent":["import pick from \"lodash/pick\";\nimport { CmsEntry } from \"@webiny/api-headless-cms/types\";\nimport { Folder } from \"~/folder/folder.types\";\nimport { SearchRecord } from \"~/record/record.types\";\n\nexport function getRecordFieldValues(entry: CmsEntry<any>, fields?: string[]) {\n return {\n ...(fields ? pick(entry, fields) : entry),\n ...entry.values\n } as SearchRecord<any>;\n}\n\nexport function getFolderFieldValues(entry: CmsEntry, fields: string[]) {\n return { ...pick(entry, fields), ...entry.values } as Folder;\n}\n"],"mappings":";;;;;;;;;AAAA;AAKO,SAASA,oBAAoB,CAACC,KAAoB,EAAEC,MAAiB,EAAE;EAC1E,mEACQA,MAAM,GAAG,IAAAC,aAAI,EAACF,KAAK,EAAEC,MAAM,CAAC,GAAGD,KAAK,GACrCA,KAAK,CAACG,MAAM;AAEvB;AAEO,SAASC,oBAAoB,CAACJ,KAAe,EAAEC,MAAgB,EAAE;EACpE,mEAAY,IAAAC,aAAI,EAACF,KAAK,EAAEC,MAAM,CAAC,GAAKD,KAAK,CAACG,MAAM;AACpD"}