@webiny/api-aco 0.0.0-unstable.2af142b57e → 0.0.0-unstable.496cf268ac

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 (67) hide show
  1. package/context/folders.d.ts +2 -0
  2. package/context/folders.js +261 -0
  3. package/context/folders.js.map +1 -0
  4. package/context/index.d.ts +2 -0
  5. package/context/index.js +22 -0
  6. package/context/index.js.map +1 -0
  7. package/context/links.d.ts +2 -0
  8. package/context/links.js +270 -0
  9. package/context/links.js.map +1 -0
  10. package/createAcoGraphQL.js +10 -9
  11. package/createAcoGraphQL.js.map +1 -1
  12. package/folder/folder.gql.js +1 -1
  13. package/folder/folder.gql.js.map +1 -1
  14. package/folder/folder.model.d.ts +4 -2
  15. package/folder/folder.model.js +1 -1
  16. package/folder/folder.model.js.map +1 -1
  17. package/folder/folder.so.d.ts +1 -6
  18. package/folder/folder.so.js +103 -108
  19. package/folder/folder.so.js.map +1 -1
  20. package/folder/folder.types.d.ts +2 -2
  21. package/folder/folder.types.js.map +1 -1
  22. package/folder/onFolderBeforeDelete.hook.js +11 -11
  23. package/folder/onFolderBeforeDelete.hook.js.map +1 -1
  24. package/graphql/base.gql.d.ts +3 -0
  25. package/graphql/base.gql.js +63 -0
  26. package/graphql/base.gql.js.map +1 -0
  27. package/graphql/folders.gql.d.ts +3 -0
  28. package/graphql/folders.gql.js +126 -0
  29. package/graphql/folders.gql.js.map +1 -0
  30. package/graphql/index.d.ts +1 -0
  31. package/graphql/index.js +15 -0
  32. package/graphql/index.js.map +1 -0
  33. package/graphql/links.gql.d.ts +3 -0
  34. package/graphql/links.gql.js +123 -0
  35. package/graphql/links.gql.js.map +1 -0
  36. package/package.json +22 -21
  37. package/record/record.gql.js +2 -3
  38. package/record/record.gql.js.map +1 -1
  39. package/record/record.model.d.ts +4 -2
  40. package/record/record.model.js +4 -16
  41. package/record/record.model.js.map +1 -1
  42. package/record/record.so.d.ts +1 -6
  43. package/record/record.so.js +57 -59
  44. package/record/record.so.js.map +1 -1
  45. package/record/record.types.d.ts +3 -4
  46. package/record/record.types.js.map +1 -1
  47. package/subscriptions/afterFolderDelete.d.ts +3 -0
  48. package/subscriptions/afterFolderDelete.js +62 -0
  49. package/subscriptions/afterFolderDelete.js.map +1 -0
  50. package/subscriptions/index.d.ts +3 -0
  51. package/subscriptions/index.js +14 -0
  52. package/subscriptions/index.js.map +1 -0
  53. package/types.d.ts +5 -0
  54. package/types.js +8 -1
  55. package/types.js.map +1 -1
  56. package/utils/createListSort.d.ts +2 -0
  57. package/utils/createListSort.js +13 -0
  58. package/utils/createListSort.js.map +1 -0
  59. package/utils/createOperationsWrapper.d.ts +9 -0
  60. package/utils/createOperationsWrapper.js +29 -0
  61. package/utils/createOperationsWrapper.js.map +1 -0
  62. package/utils/getFieldValues.d.ts +1 -1
  63. package/utils/getFieldValues.js +9 -2
  64. package/utils/getFieldValues.js.map +1 -1
  65. package/utils/modelFactory.d.ts +3 -1
  66. package/utils/modelFactory.js.map +1 -1
  67. package/utils/resolve.d.ts +1 -1
@@ -6,94 +6,92 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createSearchRecordOperations = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _valueKeyStorageConverter = require("@webiny/api-headless-cms/utils/converters/valueKeyStorageConverter");
9
10
  var _error = _interopRequireDefault(require("@webiny/error"));
10
11
  var _record = require("./record.model");
11
12
  var _createAcoStorageOperations = require("../createAcoStorageOperations");
13
+ var _createListSort = require("../utils/createListSort");
14
+ var _createOperationsWrapper = require("../utils/createOperationsWrapper");
12
15
  var _getFieldValues = require("../utils/getFieldValues");
13
16
  const createSearchRecordOperations = params => {
14
17
  const {
15
18
  cms,
16
- security
19
+ getCmsContext
17
20
  } = params;
18
- const getRecordModel = async () => {
19
- security.disableAuthorization();
20
- const model = await cms.getModel(_record.SEARCH_RECORD_MODEL_ID);
21
- security.enableAuthorization();
22
- if (!model) {
23
- throw new _error.default(`Could not find "${_record.SEARCH_RECORD_MODEL_ID}" model.`, "MODEL_NOT_FOUND_ERROR");
24
- }
25
- return model;
26
- };
27
- const getRecord = async ({
28
- id
29
- }) => {
30
- const model = await getRecordModel();
31
- security.disableAuthorization();
21
+ const {
22
+ withModel
23
+ } = (0, _createOperationsWrapper.createOperationsWrapper)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
24
+ modelName: _record.SEARCH_RECORD_MODEL_ID
25
+ }));
26
+ const getRecord = async (initialModel, id) => {
27
+ const context = getCmsContext();
28
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
29
+ model: initialModel,
30
+ plugins: context.plugins
31
+ });
32
32
 
33
33
  /**
34
- * The record "id" is generated on creation.
35
- * Still, we need to get/update/delete records by the original entry id.
34
+ * The record "id" has been passed by the original entry.
35
+ * We need to retrieve it via `cms.storageOperations.entries.getLatestByIds()` method and return the first one.
36
36
  */
37
- const entry = await cms.getEntry(model, {
38
- where: {
39
- originalId: id,
40
- latest: true
41
- }
37
+ const revisions = await cms.storageOperations.entries.getLatestByIds(model, {
38
+ ids: [id]
42
39
  });
43
- if (!entry) {
44
- throw new _error.default("Could not load record.", "GET_ENTRY_ERROR", {
40
+ if (revisions.length === 0) {
41
+ throw new _error.default("Record not found.", "NOT_FOUND", {
45
42
  id
46
43
  });
47
44
  }
48
- security.enableAuthorization();
49
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
45
+ return revisions[0];
50
46
  };
51
47
  return {
52
- getRecordModel,
53
- getRecord,
54
- async listRecords(params) {
55
- const model = await getRecordModel();
56
- security.disableAuthorization();
57
- const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
58
- where: (0, _objectSpread2.default)({}, params.where || {})
59
- }));
60
- security.enableAuthorization();
61
- return [entries.map(entry => (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields)), meta];
48
+ async getRecord({
49
+ id
50
+ }) {
51
+ return withModel(async model => {
52
+ const record = await getRecord(model, id);
53
+ return (0, _getFieldValues.getFieldValues)(record, _createAcoStorageOperations.baseFields, true);
54
+ });
55
+ },
56
+ listRecords(params) {
57
+ return withModel(async model => {
58
+ const {
59
+ sort,
60
+ where
61
+ } = params;
62
+ const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
63
+ sort: (0, _createListSort.createListSort)(sort),
64
+ where: (0, _objectSpread2.default)({}, where || {})
65
+ }));
66
+ return [entries.map(entry => (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields, true)), meta];
67
+ });
62
68
  },
63
- async createRecord({
69
+ createRecord({
64
70
  data
65
71
  }) {
66
- const model = await getRecordModel();
67
- security.disableAuthorization();
68
- const entry = await cms.createEntry(model, data);
69
- security.enableAuthorization();
70
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
72
+ return withModel(async model => {
73
+ const entry = await cms.createEntry(model, data);
74
+ return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields, true);
75
+ });
71
76
  },
72
- async updateRecord({
77
+ updateRecord({
73
78
  id,
74
79
  data
75
80
  }) {
76
- const model = await getRecordModel();
77
- security.disableAuthorization();
78
- const original = await getRecord({
79
- id
81
+ return withModel(async model => {
82
+ const original = await getRecord(model, id);
83
+ const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
84
+ const entry = await cms.updateEntry(model, original.id, input);
85
+ return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields, true);
80
86
  });
81
- const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
82
- const entry = await cms.updateEntry(model, original.id, input);
83
- security.enableAuthorization();
84
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
85
87
  },
86
- async deleteRecord({
88
+ deleteRecord({
87
89
  id
88
90
  }) {
89
- const model = await getRecordModel();
90
- security.disableAuthorization();
91
- const entry = await getRecord({
92
- id
91
+ return withModel(async model => {
92
+ await cms.deleteEntry(model, id);
93
+ return true;
93
94
  });
94
- await cms.deleteEntry(model, entry.id);
95
- security.enableAuthorization();
96
- return true;
97
95
  }
98
96
  };
99
97
  };
@@ -1 +1 @@
1
- {"version":3,"names":["createSearchRecordOperations","params","cms","security","getRecordModel","disableAuthorization","model","getModel","SEARCH_RECORD_MODEL_ID","enableAuthorization","WebinyError","getRecord","id","entry","getEntry","where","originalId","latest","getFieldValues","baseFields","listRecords","entries","meta","listLatestEntries","map","createRecord","data","createEntry","updateRecord","original","input","updateEntry","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\nimport { SEARCH_RECORD_MODEL_ID } from \"./record.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { getFieldValues } from \"~/utils/getFieldValues\";\n\nimport { AcoSearchRecordStorageOperations as BaseAcoSearchRecordStorageOperations } from \"./record.types\";\n\ninterface AcoSearchRecordStorageOperations extends BaseAcoSearchRecordStorageOperations {\n getRecordModel(): Promise<CmsModel>;\n}\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, security } = params;\n const getRecordModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(SEARCH_RECORD_MODEL_ID);\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n `Could not find \"${SEARCH_RECORD_MODEL_ID}\" model.`,\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n\n const getRecord: AcoSearchRecordStorageOperations[\"getRecord\"] = async ({ id }) => {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n /**\n * The record \"id\" is generated on creation.\n * Still, we need to get/update/delete records by the original entry id.\n */\n const entry = await cms.getEntry(model, { where: { originalId: id, latest: true } });\n\n if (!entry) {\n throw new WebinyError(\"Could not load record.\", \"GET_ENTRY_ERROR\", {\n id\n });\n }\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n };\n\n return {\n getRecordModel,\n getRecord,\n async listRecords(params) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...(params.where || {})\n }\n });\n\n security.enableAuthorization();\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createRecord({ data }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const entry = await cms.createEntry(model, data);\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async updateRecord({ id, data }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const original = await getRecord({ id });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(model, original.id, input);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async deleteRecord({ id }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const entry = await getRecord({ id });\n\n await cms.deleteEntry(model, entry.id);\n\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createSearchRecordOperations","params","cms","getCmsContext","withModel","createOperationsWrapper","modelName","SEARCH_RECORD_MODEL_ID","getRecord","initialModel","id","context","model","attachCmsModelFieldConverters","plugins","revisions","storageOperations","entries","getLatestByIds","ids","length","WebinyError","record","getFieldValues","baseFields","listRecords","sort","where","meta","listLatestEntries","createListSort","map","entry","createRecord","data","createEntry","updateRecord","original","input","updateEntry","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import { attachCmsModelFieldConverters } from \"@webiny/api-headless-cms/utils/converters/valueKeyStorageConverter\";\n\nimport WebinyError from \"@webiny/error\";\n\nimport { SEARCH_RECORD_MODEL_ID } from \"./record.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { createListSort } from \"~/utils/createListSort\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper\";\nimport { getFieldValues } from \"~/utils/getFieldValues\";\n\nimport { AcoSearchRecordStorageOperations } from \"./record.types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, getCmsContext } = params;\n\n const { withModel } = createOperationsWrapper({\n ...params,\n modelName: SEARCH_RECORD_MODEL_ID\n });\n\n const getRecord = async (initialModel: CmsModel, id: string) => {\n const context = getCmsContext();\n\n const model = attachCmsModelFieldConverters({\n model: initialModel,\n plugins: context.plugins\n });\n\n /**\n * The record \"id\" has been passed by the original entry.\n * We need to retrieve it via `cms.storageOperations.entries.getLatestByIds()` method and return the first one.\n */\n const revisions = await cms.storageOperations.entries.getLatestByIds(model, {\n ids: [id]\n });\n\n if (revisions.length === 0) {\n throw new WebinyError(\"Record not found.\", \"NOT_FOUND\", {\n id\n });\n }\n\n return revisions[0];\n };\n\n return {\n async getRecord({ id }) {\n return withModel(async model => {\n const record = await getRecord(model, id);\n return getFieldValues(record, baseFields, true);\n });\n },\n listRecords(params) {\n return withModel(async model => {\n const { sort, where } = params;\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort: createListSort(sort),\n where: {\n ...(where || {})\n }\n });\n\n return [entries.map(entry => getFieldValues(entry, baseFields, true)), meta];\n });\n },\n createRecord({ data }) {\n return withModel(async model => {\n const entry = await cms.createEntry(model, data);\n\n return getFieldValues(entry, baseFields, true);\n });\n },\n updateRecord({ id, data }) {\n return withModel(async model => {\n const original = await getRecord(model, id);\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(model, original.id, input);\n\n return getFieldValues(entry, baseFields, true);\n });\n },\n deleteRecord({ id }) {\n return withModel(async model => {\n await cms.deleteEntry(model, id);\n return true;\n });\n }\n };\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AcoBaseFields, ListMeta } from "../types";
1
+ import { AcoBaseFields, ListMeta, ListSort } from "../types";
2
2
  import { Topic } from "@webiny/pubsub/types";
3
3
  export declare type GenericSearchData = {
4
4
  [key: string]: any;
@@ -7,7 +7,6 @@ export interface Location {
7
7
  folderId: string;
8
8
  }
9
9
  export interface SearchRecord<TData extends GenericSearchData = GenericSearchData> extends AcoBaseFields {
10
- originalId: string;
11
10
  type: string;
12
11
  title?: string;
13
12
  content?: string;
@@ -23,11 +22,11 @@ export interface ListSearchRecordsWhere {
23
22
  export interface ListSearchRecordsParams {
24
23
  where?: ListSearchRecordsWhere;
25
24
  search?: string;
26
- sort?: string[];
25
+ sort?: ListSort;
27
26
  limit?: number;
28
27
  after?: string | null;
29
28
  }
30
- export declare type CreateSearchRecordParams<TData> = Pick<SearchRecord<TData>, "originalId" | "title" | "content" | "type" | "location" | "data">;
29
+ export declare type CreateSearchRecordParams<TData> = Pick<SearchRecord<TData>, "id" | "title" | "content" | "type" | "location" | "data">;
31
30
  export interface UpdateSearchRecordParams<TData extends GenericSearchData> {
32
31
  title?: string;
33
32
  content?: string;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\n\nexport type GenericSearchData = {\n [key: string]: any;\n};\n\nexport interface Location {\n folderId: string;\n}\n\nexport interface SearchRecord<TData extends GenericSearchData = GenericSearchData>\n extends AcoBaseFields {\n originalId: string;\n type: string;\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: string[];\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"originalId\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n record: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrud {\n get<TData>(id: string): Promise<SearchRecord<TData>>;\n list<TData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;\n create<TData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n update<TData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n delete(id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n deleteRecord(params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta, ListSort } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\n\nexport type GenericSearchData = {\n [key: string]: any;\n};\n\nexport interface Location {\n folderId: string;\n}\n\nexport interface SearchRecord<TData extends GenericSearchData = GenericSearchData>\n extends AcoBaseFields {\n type: string;\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: ListSort;\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"id\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n record: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrud {\n get<TData>(id: string): Promise<SearchRecord<TData>>;\n list<TData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;\n create<TData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n update<TData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n delete(id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n deleteRecord(params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;\n}\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { ContextPlugin } from "@webiny/api";
2
+ import { ACOContext } from "../types";
3
+ export declare const afterFolderDelete: () => ContextPlugin<ACOContext>;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.afterFolderDelete = void 0;
9
+
10
+ var _api = require("@webiny/api");
11
+
12
+ var _error = _interopRequireDefault(require("@webiny/error"));
13
+
14
+ const filterFolderTreeIds = (folders, folderId) => {
15
+ function findChildrenIds(acc, curr, index, arr) {
16
+ if (curr.parentId && acc.some(el => el === (curr === null || curr === void 0 ? void 0 : curr.parentId))) {
17
+ acc.push(curr.id);
18
+ arr.splice(index, 1);
19
+ return arr.reduce(findChildrenIds, acc);
20
+ }
21
+
22
+ return acc;
23
+ }
24
+
25
+ const result = folders.reduce(findChildrenIds, [folderId]);
26
+ return [...new Set([...result])];
27
+ };
28
+
29
+ const afterFolderDelete = () => {
30
+ return new _api.ContextPlugin(async ({
31
+ folders: foldersContext
32
+ }) => {
33
+ try {
34
+ // After a folder has been deleted, delete all related links.
35
+ foldersContext.onFolderAfterDelete.subscribe(async ({
36
+ folder
37
+ }) => {
38
+ const {
39
+ id,
40
+ type
41
+ } = folder; // Fetching all folders by `type`
42
+
43
+ const folders = await foldersContext.listFolders({
44
+ where: {
45
+ type
46
+ }
47
+ }); // Filter folders tree under the given folder `id`
48
+
49
+ const folderTreeIds = filterFolderTreeIds(folders, id); // Delete all links related to a list of folders ids
50
+
51
+ await foldersContext.deleteLinks(folderTreeIds);
52
+ });
53
+ } catch (error) {
54
+ throw _error.default.from(error, {
55
+ message: "Error while deleting folder-related links.",
56
+ code: "AFTER_FORM_DELETE"
57
+ });
58
+ }
59
+ });
60
+ };
61
+
62
+ exports.afterFolderDelete = afterFolderDelete;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["filterFolderTreeIds","folders","folderId","findChildrenIds","acc","curr","index","arr","parentId","some","el","push","id","splice","reduce","result","Set","afterFolderDelete","ContextPlugin","foldersContext","onFolderAfterDelete","subscribe","folder","type","listFolders","where","folderTreeIds","deleteLinks","error","WebinyError","from","message","code"],"sources":["afterFolderDelete.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport WebinyError from \"@webiny/error\";\nimport { Folder, ACOContext } from \"~/types\";\n\nconst filterFolderTreeIds = (folders: Folder[], folderId: string): string[] => {\n function findChildrenIds(acc: string[], curr: Folder, index: number, arr: Folder[]): string[] {\n if (curr.parentId && acc.some(el => el === curr?.parentId)) {\n acc.push(curr.id);\n arr.splice(index, 1);\n return arr.reduce(findChildrenIds, acc);\n }\n\n return acc;\n }\n\n const result = folders.reduce(findChildrenIds, [folderId]);\n\n return [...new Set([...result])];\n};\n\nexport const afterFolderDelete = () => {\n return new ContextPlugin<ACOContext>(async ({ folders: foldersContext }) => {\n try {\n // After a folder has been deleted, delete all related links.\n foldersContext.onFolderAfterDelete.subscribe(async ({ folder }) => {\n const { id, type } = folder;\n\n // Fetching all folders by `type`\n const folders = await foldersContext.listFolders({\n where: { type }\n });\n\n // Filter folders tree under the given folder `id`\n const folderTreeIds = filterFolderTreeIds(folders, id);\n\n // Delete all links related to a list of folders ids\n await foldersContext.deleteLinks(folderTreeIds);\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while deleting folder-related links.\",\n code: \"AFTER_FORM_DELETE\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAGA,MAAMA,mBAAmB,GAAG,CAACC,OAAD,EAAoBC,QAApB,KAAmD;EAC3E,SAASC,eAAT,CAAyBC,GAAzB,EAAwCC,IAAxC,EAAsDC,KAAtD,EAAqEC,GAArE,EAA8F;IAC1F,IAAIF,IAAI,CAACG,QAAL,IAAiBJ,GAAG,CAACK,IAAJ,CAASC,EAAE,IAAIA,EAAE,MAAKL,IAAL,aAAKA,IAAL,uBAAKA,IAAI,CAAEG,QAAX,CAAjB,CAArB,EAA4D;MACxDJ,GAAG,CAACO,IAAJ,CAASN,IAAI,CAACO,EAAd;MACAL,GAAG,CAACM,MAAJ,CAAWP,KAAX,EAAkB,CAAlB;MACA,OAAOC,GAAG,CAACO,MAAJ,CAAWX,eAAX,EAA4BC,GAA5B,CAAP;IACH;;IAED,OAAOA,GAAP;EACH;;EAED,MAAMW,MAAM,GAAGd,OAAO,CAACa,MAAR,CAAeX,eAAf,EAAgC,CAACD,QAAD,CAAhC,CAAf;EAEA,OAAO,CAAC,GAAG,IAAIc,GAAJ,CAAQ,CAAC,GAAGD,MAAJ,CAAR,CAAJ,CAAP;AACH,CAdD;;AAgBO,MAAME,iBAAiB,GAAG,MAAM;EACnC,OAAO,IAAIC,kBAAJ,CAA8B,OAAO;IAAEjB,OAAO,EAAEkB;EAAX,CAAP,KAAuC;IACxE,IAAI;MACA;MACAA,cAAc,CAACC,mBAAf,CAAmCC,SAAnC,CAA6C,OAAO;QAAEC;MAAF,CAAP,KAAsB;QAC/D,MAAM;UAAEV,EAAF;UAAMW;QAAN,IAAeD,MAArB,CAD+D,CAG/D;;QACA,MAAMrB,OAAO,GAAG,MAAMkB,cAAc,CAACK,WAAf,CAA2B;UAC7CC,KAAK,EAAE;YAAEF;UAAF;QADsC,CAA3B,CAAtB,CAJ+D,CAQ/D;;QACA,MAAMG,aAAa,GAAG1B,mBAAmB,CAACC,OAAD,EAAUW,EAAV,CAAzC,CAT+D,CAW/D;;QACA,MAAMO,cAAc,CAACQ,WAAf,CAA2BD,aAA3B,CAAN;MACH,CAbD;IAcH,CAhBD,CAgBE,OAAOE,KAAP,EAAc;MACZ,MAAMC,cAAA,CAAYC,IAAZ,CAAiBF,KAAjB,EAAwB;QAC1BG,OAAO,EAAE,4CADiB;QAE1BC,IAAI,EAAE;MAFoB,CAAxB,CAAN;IAIH;EACJ,CAvBM,CAAP;AAwBH,CAzBM"}
@@ -0,0 +1,3 @@
1
+ import { ContextPlugin } from "@webiny/api";
2
+ import { ACOContext } from "../types";
3
+ export declare const subscriptions: () => ContextPlugin<ACOContext>[];
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.subscriptions = void 0;
7
+
8
+ var _afterFolderDelete = require("./afterFolderDelete");
9
+
10
+ const subscriptions = () => {
11
+ return [(0, _afterFolderDelete.afterFolderDelete)()];
12
+ };
13
+
14
+ exports.subscriptions = subscriptions;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["subscriptions","afterFolderDelete"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { afterFolderDelete } from \"./afterFolderDelete\";\nimport { ACOContext } from \"~/types\";\n\nexport const subscriptions = (): ContextPlugin<ACOContext>[] => {\n return [afterFolderDelete()];\n};\n"],"mappings":";;;;;;;AACA;;AAGO,MAAMA,aAAa,GAAG,MAAmC;EAC5D,OAAO,CAAC,IAAAC,oCAAA,GAAD,CAAP;AACH,CAFM"}
package/types.d.ts CHANGED
@@ -15,6 +15,11 @@ export interface ListMeta {
15
15
  totalCount: number;
16
16
  hasMoreItems: boolean;
17
17
  }
18
+ export declare enum ListSortDirection {
19
+ ASC = 0,
20
+ DESC = 1
21
+ }
22
+ export declare type ListSort = Record<string, ListSortDirection>;
18
23
  export interface AcoBaseFields {
19
24
  id: string;
20
25
  entryId: string;
package/types.js CHANGED
@@ -2,4 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ exports.ListSortDirection = void 0;
7
+ let ListSortDirection;
8
+ exports.ListSortDirection = ListSortDirection;
9
+ (function (ListSortDirection) {
10
+ ListSortDirection[ListSortDirection["ASC"] = 0] = "ASC";
11
+ ListSortDirection[ListSortDirection["DESC"] = 1] = "DESC";
12
+ })(ListSortDirection || (exports.ListSortDirection = ListSortDirection = {}));
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { Tenant, TenancyContext } from \"@webiny/api-tenancy/types\";\nimport { Context as BaseContext } from \"@webiny/handler/types\";\nimport { I18NContext, I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityContext, SecurityIdentity } from \"@webiny/api-security/types\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { AcoSearchRecordCrud, AcoSearchRecordStorageOperations } from \"~/record/record.types\";\nimport { AcoFolderCrud, AcoFolderStorageOperations } from \"~/folder/folder.types\";\n\nexport interface User {\n id: string;\n type: string;\n displayName: string | null;\n}\n\nexport interface ListMeta {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\nexport interface AcoBaseFields {\n id: string;\n entryId: string;\n createdOn: string;\n createdBy: User;\n savedOn: string;\n}\n\nexport interface AdvancedContentOrganisation {\n folder: AcoFolderCrud;\n search: AcoSearchRecordCrud;\n}\n\nexport interface CreateAcoParams {\n getIdentity: () => SecurityIdentity;\n getLocale: () => I18NLocale;\n getTenant: () => Tenant;\n storageOperations: AcoStorageOperations;\n}\n\nexport type AcoStorageOperations = AcoFolderStorageOperations & AcoSearchRecordStorageOperations;\n\nexport interface AcoContext\n extends BaseContext,\n I18NContext,\n TenancyContext,\n SecurityContext,\n CmsContext {\n aco: AdvancedContentOrganisation;\n}\n"],"mappings":""}
1
+ {"version":3,"names":["ListSortDirection"],"sources":["types.ts"],"sourcesContent":["import { Tenant, TenancyContext } from \"@webiny/api-tenancy/types\";\nimport { Context as BaseContext } from \"@webiny/handler/types\";\nimport { I18NContext, I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityContext, SecurityIdentity } from \"@webiny/api-security/types\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { AcoSearchRecordCrud, AcoSearchRecordStorageOperations } from \"~/record/record.types\";\nimport { AcoFolderCrud, AcoFolderStorageOperations } from \"~/folder/folder.types\";\n\nexport interface User {\n id: string;\n type: string;\n displayName: string | null;\n}\n\nexport interface ListMeta {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\nexport enum ListSortDirection {\n ASC,\n DESC\n}\n\nexport type ListSort = Record<string, ListSortDirection>;\n\nexport interface AcoBaseFields {\n id: string;\n entryId: string;\n createdOn: string;\n createdBy: User;\n savedOn: string;\n}\n\nexport interface AdvancedContentOrganisation {\n folder: AcoFolderCrud;\n search: AcoSearchRecordCrud;\n}\n\nexport interface CreateAcoParams {\n getIdentity: () => SecurityIdentity;\n getLocale: () => I18NLocale;\n getTenant: () => Tenant;\n storageOperations: AcoStorageOperations;\n}\n\nexport type AcoStorageOperations = AcoFolderStorageOperations & AcoSearchRecordStorageOperations;\n\nexport interface AcoContext\n extends BaseContext,\n I18NContext,\n TenancyContext,\n SecurityContext,\n CmsContext {\n aco: AdvancedContentOrganisation;\n}\n"],"mappings":";;;;;;IAoBYA,iBAAiB;AAAA;AAAA,WAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;AAAA,GAAjBA,iBAAiB,iCAAjBA,iBAAiB"}
@@ -0,0 +1,2 @@
1
+ import { ListSort } from "../types";
2
+ export declare const createListSort: (sort?: ListSort) => string[] | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createListSort = void 0;
7
+ const createListSort = sort => {
8
+ if (!sort) {
9
+ return;
10
+ }
11
+ return Object.keys(sort).map(key => `${key}_${sort[key]}`);
12
+ };
13
+ exports.createListSort = createListSort;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createListSort","sort","Object","keys","map","key"],"sources":["createListSort.ts"],"sourcesContent":["import { ListSort } from \"~/types\";\n\nexport const createListSort = (sort?: ListSort): string[] | undefined => {\n if (!sort) {\n return;\n }\n\n return Object.keys(sort).map(key => `${key}_${sort[key]}`);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,cAAc,GAAIC,IAAe,IAA2B;EACrE,IAAI,CAACA,IAAI,EAAE;IACP;EACJ;EAEA,OAAOC,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,GAAG,CAACC,GAAG,IAAK,GAAEA,GAAI,IAAGJ,IAAI,CAACI,GAAG,CAAE,EAAC,CAAC;AAC9D,CAAC;AAAC"}
@@ -0,0 +1,9 @@
1
+ import { CreateAcoStorageOperationsParams } from "../createAcoStorageOperations";
2
+ import { CmsModel } from "@webiny/api-headless-cms/types";
3
+ interface CreateOperationsWrapperParams extends CreateAcoStorageOperationsParams {
4
+ modelName: string;
5
+ }
6
+ export declare const createOperationsWrapper: (params: CreateOperationsWrapperParams) => {
7
+ withModel: <TResult>(cb: (model: CmsModel) => Promise<TResult>) => Promise<TResult>;
8
+ };
9
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createOperationsWrapper = void 0;
8
+ var _error = _interopRequireDefault(require("@webiny/error"));
9
+ const createOperationsWrapper = params => {
10
+ const {
11
+ cms,
12
+ security,
13
+ modelName
14
+ } = params;
15
+ const withModel = async cb => {
16
+ security.disableAuthorization();
17
+ const model = await cms.getModel(modelName);
18
+ if (!model) {
19
+ throw new _error.default(`Could not find "${modelName}" model.`, "MODEL_NOT_FOUND_ERROR");
20
+ }
21
+ const result = await cb(model);
22
+ security.enableAuthorization();
23
+ return result;
24
+ };
25
+ return {
26
+ withModel
27
+ };
28
+ };
29
+ exports.createOperationsWrapper = createOperationsWrapper;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createOperationsWrapper","params","cms","security","modelName","withModel","cb","disableAuthorization","model","getModel","WebinyError","result","enableAuthorization"],"sources":["createOperationsWrapper.ts"],"sourcesContent":["import { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\ninterface CreateOperationsWrapperParams extends CreateAcoStorageOperationsParams {\n modelName: string;\n}\n\nexport const createOperationsWrapper = (params: CreateOperationsWrapperParams) => {\n const { cms, security, modelName } = params;\n\n const withModel = async <TResult>(\n cb: (model: CmsModel) => Promise<TResult>\n ): Promise<TResult> => {\n security.disableAuthorization();\n const model = await cms.getModel(modelName);\n\n if (!model) {\n throw new WebinyError(`Could not find \"${modelName}\" model.`, \"MODEL_NOT_FOUND_ERROR\");\n }\n\n const result = await cb(model);\n\n security.enableAuthorization();\n\n return result;\n };\n\n return {\n withModel\n };\n};\n"],"mappings":";;;;;;;AAEA;AAMO,MAAMA,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,GAAG;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGH,MAAM;EAE3C,MAAMI,SAAS,GAAG,MACdC,EAAyC,IACtB;IACnBH,QAAQ,CAACI,oBAAoB,EAAE;IAC/B,MAAMC,KAAK,GAAG,MAAMN,GAAG,CAACO,QAAQ,CAACL,SAAS,CAAC;IAE3C,IAAI,CAACI,KAAK,EAAE;MACR,MAAM,IAAIE,cAAW,CAAE,mBAAkBN,SAAU,UAAS,EAAE,uBAAuB,CAAC;IAC1F;IAEA,MAAMO,MAAM,GAAG,MAAML,EAAE,CAACE,KAAK,CAAC;IAE9BL,QAAQ,CAACS,mBAAmB,EAAE;IAE9B,OAAOD,MAAM;EACjB,CAAC;EAED,OAAO;IACHN;EACJ,CAAC;AACL,CAAC;AAAC"}
@@ -1,2 +1,2 @@
1
1
  import { CmsEntry } from "@webiny/api-headless-cms/types";
2
- export declare function getFieldValues(entry: CmsEntry, fields: string[]): any;
2
+ export declare function getFieldValues(entry: CmsEntry, fields: string[], useEntryId?: boolean): any;
@@ -7,6 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.getFieldValues = getFieldValues;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _pick = _interopRequireDefault(require("lodash/pick"));
10
- function getFieldValues(entry, fields) {
11
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(entry, fields)), entry.values);
10
+ var _utils = require("@webiny/utils");
11
+ function getFieldValues(entry, fields, useEntryId) {
12
+ // We return the `id` without version in case of `useEntryId` flag is passed.
13
+ const {
14
+ id
15
+ } = (0, _utils.parseIdentifier)(entry.id);
16
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(entry, fields)), entry.values), useEntryId && {
17
+ id
18
+ });
12
19
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getFieldValues","entry","fields","pick","values"],"sources":["getFieldValues.ts"],"sourcesContent":["import pick from \"lodash/pick\";\n\nimport { CmsEntry } from \"@webiny/api-headless-cms/types\";\n\nexport function getFieldValues(entry: CmsEntry, fields: string[]): any {\n return { ...pick(entry, fields), ...entry.values };\n}\n"],"mappings":";;;;;;;;AAAA;AAIO,SAASA,cAAc,CAACC,KAAe,EAAEC,MAAgB,EAAO;EACnE,mEAAY,IAAAC,aAAI,EAACF,KAAK,EAAEC,MAAM,CAAC,GAAKD,KAAK,CAACG,MAAM;AACpD"}
1
+ {"version":3,"names":["getFieldValues","entry","fields","useEntryId","id","parseIdentifier","pick","values"],"sources":["getFieldValues.ts"],"sourcesContent":["import pick from \"lodash/pick\";\n\nimport { CmsEntry } from \"@webiny/api-headless-cms/types\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nexport function getFieldValues(entry: CmsEntry, fields: string[], useEntryId?: boolean): any {\n // We return the `id` without version in case of `useEntryId` flag is passed.\n const { id } = parseIdentifier(entry.id);\n return { ...pick(entry, fields), ...entry.values, ...(useEntryId && { id }) };\n}\n"],"mappings":";;;;;;;;AAAA;AAGA;AAEO,SAASA,cAAc,CAACC,KAAe,EAAEC,MAAgB,EAAEC,UAAoB,EAAO;EACzF;EACA,MAAM;IAAEC;EAAG,CAAC,GAAG,IAAAC,sBAAe,EAACJ,KAAK,CAACG,EAAE,CAAC;EACxC,+FAAY,IAAAE,aAAI,EAACL,KAAK,EAAEC,MAAM,CAAC,GAAKD,KAAK,CAACM,MAAM,GAAMJ,UAAU,IAAI;IAAEC;EAAG,CAAC;AAC9E"}
@@ -9,7 +9,9 @@ interface Params {
9
9
  */
10
10
  locale?: string;
11
11
  tenant?: string;
12
- modelDefinition: Omit<CmsModel, "locale" | "tenant" | "webinyVersion" | "group">;
12
+ modelDefinition: Omit<CmsModel, "locale" | "tenant" | "webinyVersion" | "group" | "singularApiName" | "pluralApiName"> & {
13
+ isPrivate: true;
14
+ };
13
15
  }
14
16
  export declare const modelFactory: (params: Params) => CmsModelPlugin;
15
17
  export {};
@@ -1 +1 @@
1
- {"version":3,"names":["modelFactory","params","group","locale","tenant","modelDefinition","createCmsModel"],"sources":["modelFactory.ts"],"sourcesContent":["import { CmsModelPlugin, createCmsModel } from \"@webiny/api-headless-cms\";\nimport { CmsModel, CmsGroup } from \"@webiny/api-headless-cms/types\";\n\ninterface Params {\n group: Pick<CmsGroup, \"id\" | \"name\">;\n /**\n * Locale and tenant do not need to be defined.\n * In that case model is not bound to any locale or tenant.\n * You can bind it to locale, tenant, both or none.\n */\n locale?: string;\n tenant?: string;\n modelDefinition: Omit<CmsModel, \"locale\" | \"tenant\" | \"webinyVersion\" | \"group\">;\n}\n\nexport const modelFactory = (params: Params): CmsModelPlugin => {\n const { group, locale, tenant, modelDefinition } = params;\n\n return createCmsModel({\n group,\n locale,\n tenant,\n ...modelDefinition\n });\n};\n"],"mappings":";;;;;;;;AAAA;AAeO,MAAMA,YAAY,GAAIC,MAAc,IAAqB;EAC5D,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAgB,CAAC,GAAGJ,MAAM;EAEzD,OAAO,IAAAK,8BAAc;IACjBJ,KAAK;IACLC,MAAM;IACNC;EAAM,GACHC,eAAe,EACpB;AACN,CAAC;AAAC"}
1
+ {"version":3,"names":["modelFactory","params","group","locale","tenant","modelDefinition","createCmsModel"],"sources":["modelFactory.ts"],"sourcesContent":["import { CmsModelPlugin, createCmsModel } from \"@webiny/api-headless-cms\";\nimport { CmsModel, CmsGroup } from \"@webiny/api-headless-cms/types\";\n\ninterface Params {\n group: Pick<CmsGroup, \"id\" | \"name\">;\n /**\n * Locale and tenant do not need to be defined.\n * In that case model is not bound to any locale or tenant.\n * You can bind it to locale, tenant, both or none.\n */\n locale?: string;\n tenant?: string;\n modelDefinition: Omit<\n CmsModel,\n \"locale\" | \"tenant\" | \"webinyVersion\" | \"group\" | \"singularApiName\" | \"pluralApiName\"\n > & { isPrivate: true };\n}\n\nexport const modelFactory = (params: Params): CmsModelPlugin => {\n const { group, locale, tenant, modelDefinition } = params;\n\n return createCmsModel({\n group,\n locale,\n tenant,\n ...modelDefinition\n });\n};\n"],"mappings":";;;;;;;;AAAA;AAkBO,MAAMA,YAAY,GAAIC,MAAc,IAAqB;EAC5D,MAAM;IAAEC,KAAK;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAgB,CAAC,GAAGJ,MAAM;EAEzD,OAAO,IAAAK,8BAAc;IACjBJ,KAAK;IACLC,MAAM;IACNC;EAAM,GACHC,eAAe,EACpB;AACN,CAAC;AAAC"}
@@ -1,2 +1,2 @@
1
1
  import { Response, ErrorResponse } from "@webiny/handler-graphql";
2
- export declare const resolve: (fn: () => Promise<any>) => Promise<ErrorResponse | Response<any>>;
2
+ export declare const resolve: (fn: () => Promise<any>) => Promise<Response<any> | ErrorResponse>;