@webiny/api-elasticsearch-tasks 0.0.0-unstable.06b2ede40f

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 (144) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/definitions/entry.d.ts +11 -0
  4. package/definitions/entry.js +43 -0
  5. package/definitions/entry.js.map +1 -0
  6. package/definitions/index.d.ts +2 -0
  7. package/definitions/index.js +29 -0
  8. package/definitions/index.js.map +1 -0
  9. package/definitions/table.d.ts +7 -0
  10. package/definitions/table.js +23 -0
  11. package/definitions/table.js.map +1 -0
  12. package/errors/IndexSettingsGetError.d.ts +6 -0
  13. package/errors/IndexSettingsGetError.js +20 -0
  14. package/errors/IndexSettingsGetError.js.map +1 -0
  15. package/errors/IndexSettingsSetError.d.ts +6 -0
  16. package/errors/IndexSettingsSetError.js +20 -0
  17. package/errors/IndexSettingsSetError.js.map +1 -0
  18. package/errors/IndexingDisableError.d.ts +2 -0
  19. package/errors/IndexingDisableError.js +10 -0
  20. package/errors/IndexingDisableError.js.map +1 -0
  21. package/errors/IndexingEnableError.d.ts +2 -0
  22. package/errors/IndexingEnableError.js +10 -0
  23. package/errors/IndexingEnableError.js.map +1 -0
  24. package/errors/index.d.ts +4 -0
  25. package/errors/index.js +51 -0
  26. package/errors/index.js.map +1 -0
  27. package/helpers/scan.d.ts +10 -0
  28. package/helpers/scan.js +24 -0
  29. package/helpers/scan.js.map +1 -0
  30. package/index.d.ts +5 -0
  31. package/index.js +28 -0
  32. package/index.js.map +1 -0
  33. package/package.json +59 -0
  34. package/settings/DisableIndexing.d.ts +7 -0
  35. package/settings/DisableIndexing.js +27 -0
  36. package/settings/DisableIndexing.js.map +1 -0
  37. package/settings/EnableIndexing.d.ts +7 -0
  38. package/settings/EnableIndexing.js +27 -0
  39. package/settings/EnableIndexing.js.map +1 -0
  40. package/settings/IndexManager.d.ts +20 -0
  41. package/settings/IndexManager.js +100 -0
  42. package/settings/IndexManager.js.map +1 -0
  43. package/settings/IndexSettingsManager.d.ts +8 -0
  44. package/settings/IndexSettingsManager.js +44 -0
  45. package/settings/IndexSettingsManager.js.map +1 -0
  46. package/settings/index.d.ts +1 -0
  47. package/settings/index.js +18 -0
  48. package/settings/index.js.map +1 -0
  49. package/settings/types.d.ts +9 -0
  50. package/settings/types.js +7 -0
  51. package/settings/types.js.map +1 -0
  52. package/tasks/Manager.d.ts +33 -0
  53. package/tasks/Manager.js +51 -0
  54. package/tasks/Manager.js.map +1 -0
  55. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.d.ts +23 -0
  56. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.js +25 -0
  57. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.js.map +1 -0
  58. package/tasks/createIndexes/CreateIndexesTaskRunner.d.ts +10 -0
  59. package/tasks/createIndexes/CreateIndexesTaskRunner.js +77 -0
  60. package/tasks/createIndexes/CreateIndexesTaskRunner.js.map +1 -0
  61. package/tasks/createIndexes/OnBeforeTrigger.d.ts +12 -0
  62. package/tasks/createIndexes/OnBeforeTrigger.js +68 -0
  63. package/tasks/createIndexes/OnBeforeTrigger.js.map +1 -0
  64. package/tasks/createIndexes/createIndex.d.ts +5 -0
  65. package/tasks/createIndexes/createIndex.js +27 -0
  66. package/tasks/createIndexes/createIndex.js.map +1 -0
  67. package/tasks/createIndexes/index.d.ts +3 -0
  68. package/tasks/createIndexes/index.js +68 -0
  69. package/tasks/createIndexes/index.js.map +1 -0
  70. package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.d.ts +4 -0
  71. package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.js +13 -0
  72. package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.js.map +1 -0
  73. package/tasks/createIndexes/listIndexes.d.ts +12 -0
  74. package/tasks/createIndexes/listIndexes.js +53 -0
  75. package/tasks/createIndexes/listIndexes.js.map +1 -0
  76. package/tasks/createIndexes/types.d.ts +4 -0
  77. package/tasks/createIndexes/types.js +7 -0
  78. package/tasks/createIndexes/types.js.map +1 -0
  79. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.d.ts +15 -0
  80. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js +55 -0
  81. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js.map +1 -0
  82. package/tasks/dataSynchronization/createFactories.d.ts +2 -0
  83. package/tasks/dataSynchronization/createFactories.js +17 -0
  84. package/tasks/dataSynchronization/createFactories.js.map +1 -0
  85. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.d.ts +10 -0
  86. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js +98 -0
  87. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js.map +1 -0
  88. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.d.ts +14 -0
  89. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js +76 -0
  90. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js.map +1 -0
  91. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.d.ts +10 -0
  92. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js +77 -0
  93. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js.map +1 -0
  94. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.d.ts +21 -0
  95. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js +7 -0
  96. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js.map +1 -0
  97. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.d.ts +17 -0
  98. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js +7 -0
  99. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js.map +1 -0
  100. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.d.ts +2 -0
  101. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js +13 -0
  102. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -0
  103. package/tasks/dataSynchronization/entities/getElasticsearchEntity.d.ts +713 -0
  104. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js +46 -0
  105. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js.map +1 -0
  106. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.d.ts +11 -0
  107. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js +29 -0
  108. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js.map +1 -0
  109. package/tasks/dataSynchronization/entities/getTable.d.ts +7 -0
  110. package/tasks/dataSynchronization/entities/getTable.js +29 -0
  111. package/tasks/dataSynchronization/entities/getTable.js.map +1 -0
  112. package/tasks/dataSynchronization/entities/index.d.ts +3 -0
  113. package/tasks/dataSynchronization/entities/index.js +40 -0
  114. package/tasks/dataSynchronization/entities/index.js.map +1 -0
  115. package/tasks/dataSynchronization/index.d.ts +4 -0
  116. package/tasks/dataSynchronization/index.js +80 -0
  117. package/tasks/dataSynchronization/index.js.map +1 -0
  118. package/tasks/dataSynchronization/types.d.ts +38 -0
  119. package/tasks/dataSynchronization/types.js +7 -0
  120. package/tasks/dataSynchronization/types.js.map +1 -0
  121. package/tasks/enableIndexing/EnableIndexingTaskRunner.d.ts +11 -0
  122. package/tasks/enableIndexing/EnableIndexingTaskRunner.js +49 -0
  123. package/tasks/enableIndexing/EnableIndexingTaskRunner.js.map +1 -0
  124. package/tasks/enableIndexing/index.d.ts +3 -0
  125. package/tasks/enableIndexing/index.js +51 -0
  126. package/tasks/enableIndexing/index.js.map +1 -0
  127. package/tasks/enableIndexing/types.d.ts +5 -0
  128. package/tasks/enableIndexing/types.js +7 -0
  129. package/tasks/enableIndexing/types.js.map +1 -0
  130. package/tasks/index.d.ts +4 -0
  131. package/tasks/index.js +51 -0
  132. package/tasks/index.js.map +1 -0
  133. package/tasks/reindexing/ReindexingTaskRunner.d.ts +16 -0
  134. package/tasks/reindexing/ReindexingTaskRunner.js +137 -0
  135. package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -0
  136. package/tasks/reindexing/index.d.ts +1 -0
  137. package/tasks/reindexing/index.js +18 -0
  138. package/tasks/reindexing/index.js.map +1 -0
  139. package/tasks/reindexing/reindexingTaskDefinition.d.ts +2 -0
  140. package/tasks/reindexing/reindexingTaskDefinition.js +49 -0
  141. package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -0
  142. package/types.d.ts +59 -0
  143. package/types.js +7 -0
  144. package/types.js.map +1 -0
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.listElasticsearchEntities = exports.getElasticsearchEntity = void 0;
7
+ var _getElasticsearchEntityType = require("./getElasticsearchEntityType");
8
+ const createPredicate = (app, tags) => {
9
+ return item => {
10
+ return item.app === app && tags.every(tag => item.tags.includes(tag));
11
+ };
12
+ };
13
+ const getElasticsearchEntity = params => {
14
+ const {
15
+ type,
16
+ context
17
+ } = params;
18
+ const getByPredicate = predicate => {
19
+ return context.db.registry.getOneItem(predicate);
20
+ };
21
+ try {
22
+ switch (type) {
23
+ case _getElasticsearchEntityType.EntityType.CMS:
24
+ return getByPredicate(createPredicate("cms", ["es"]));
25
+ case _getElasticsearchEntityType.EntityType.PAGE_BUILDER:
26
+ return getByPredicate(createPredicate("pb", ["es"]));
27
+ case _getElasticsearchEntityType.EntityType.FORM_BUILDER:
28
+ return getByPredicate(createPredicate("fb", ["es"]));
29
+ case _getElasticsearchEntityType.EntityType.FORM_BUILDER_SUBMISSION:
30
+ return getByPredicate(createPredicate("fb", ["es", "form-submission"]));
31
+ }
32
+ } catch (ex) {}
33
+ throw new Error(`Unknown entity type "${type}".`);
34
+ };
35
+ exports.getElasticsearchEntity = getElasticsearchEntity;
36
+ const listElasticsearchEntities = params => {
37
+ const {
38
+ context
39
+ } = params;
40
+ return context.db.registry.getItems(item => {
41
+ return item.tags.includes("es");
42
+ });
43
+ };
44
+ exports.listElasticsearchEntities = listElasticsearchEntities;
45
+
46
+ //# sourceMappingURL=getElasticsearchEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_getElasticsearchEntityType","require","createPredicate","app","tags","item","every","tag","includes","getElasticsearchEntity","params","type","context","getByPredicate","predicate","db","registry","getOneItem","EntityType","CMS","PAGE_BUILDER","FORM_BUILDER","FORM_BUILDER_SUBMISSION","ex","Error","exports","listElasticsearchEntities","getItems"],"sources":["getElasticsearchEntity.ts"],"sourcesContent":["import type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport type { NonEmptyArray } from \"@webiny/api/types\";\nimport type { IRegistryItem } from \"@webiny/db\";\nimport { EntityType } from \"./getElasticsearchEntityType\";\nimport type { Context } from \"~/types\";\n\nexport interface IGetElasticsearchEntityParams {\n type: EntityType | unknown;\n context: Pick<Context, \"db\">;\n}\n\nconst createPredicate = (app: string, tags: NonEmptyArray<string>) => {\n return (item: IRegistryItem) => {\n return item.app === app && tags.every(tag => item.tags.includes(tag));\n };\n};\n\nexport const getElasticsearchEntity = (params: IGetElasticsearchEntityParams) => {\n const { type, context } = params;\n\n const getByPredicate = (predicate: (item: IRegistryItem) => boolean) => {\n return context.db.registry.getOneItem<Entity>(predicate);\n };\n\n try {\n switch (type) {\n case EntityType.CMS:\n return getByPredicate(createPredicate(\"cms\", [\"es\"]));\n case EntityType.PAGE_BUILDER:\n return getByPredicate(createPredicate(\"pb\", [\"es\"]));\n case EntityType.FORM_BUILDER:\n return getByPredicate(createPredicate(\"fb\", [\"es\"]));\n case EntityType.FORM_BUILDER_SUBMISSION:\n return getByPredicate(createPredicate(\"fb\", [\"es\", \"form-submission\"]));\n }\n } catch (ex) {}\n throw new Error(`Unknown entity type \"${type}\".`);\n};\n\nexport interface IListElasticsearchEntitiesParams {\n context: Pick<Context, \"db\">;\n}\n\nexport const listElasticsearchEntities = (\n params: IListElasticsearchEntitiesParams\n): IRegistryItem<Entity>[] => {\n const { context } = params;\n\n return context.db.registry.getItems<Entity>(item => {\n return item.tags.includes(\"es\");\n });\n};\n"],"mappings":";;;;;;AAGA,IAAAA,2BAAA,GAAAC,OAAA;AAQA,MAAMC,eAAe,GAAGA,CAACC,GAAW,EAAEC,IAA2B,KAAK;EAClE,OAAQC,IAAmB,IAAK;IAC5B,OAAOA,IAAI,CAACF,GAAG,KAAKA,GAAG,IAAIC,IAAI,CAACE,KAAK,CAACC,GAAG,IAAIF,IAAI,CAACD,IAAI,CAACI,QAAQ,CAACD,GAAG,CAAC,CAAC;EACzE,CAAC;AACL,CAAC;AAEM,MAAME,sBAAsB,GAAIC,MAAqC,IAAK;EAC7E,MAAM;IAAEC,IAAI;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAEhC,MAAMG,cAAc,GAAIC,SAA2C,IAAK;IACpE,OAAOF,OAAO,CAACG,EAAE,CAACC,QAAQ,CAACC,UAAU,CAASH,SAAS,CAAC;EAC5D,CAAC;EAED,IAAI;IACA,QAAQH,IAAI;MACR,KAAKO,sCAAU,CAACC,GAAG;QACf,OAAON,cAAc,CAACX,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACzD,KAAKgB,sCAAU,CAACE,YAAY;QACxB,OAAOP,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD,KAAKgB,sCAAU,CAACG,YAAY;QACxB,OAAOR,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD,KAAKgB,sCAAU,CAACI,uBAAuB;QACnC,OAAOT,cAAc,CAACX,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC/E;EACJ,CAAC,CAAC,OAAOqB,EAAE,EAAE,CAAC;EACd,MAAM,IAAIC,KAAK,CAAC,wBAAwBb,IAAI,IAAI,CAAC;AACrD,CAAC;AAACc,OAAA,CAAAhB,sBAAA,GAAAA,sBAAA;AAMK,MAAMiB,yBAAyB,GAClChB,MAAwC,IACd;EAC1B,MAAM;IAAEE;EAAQ,CAAC,GAAGF,MAAM;EAE1B,OAAOE,OAAO,CAACG,EAAE,CAACC,QAAQ,CAACW,QAAQ,CAAStB,IAAI,IAAI;IAChD,OAAOA,IAAI,CAACD,IAAI,CAACI,QAAQ,CAAC,IAAI,CAAC;EACnC,CAAC,CAAC;AACN,CAAC;AAACiB,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ export declare enum EntityType {
2
+ CMS = "headless-cms",
3
+ PAGE_BUILDER = "page-builder",
4
+ FORM_BUILDER = "form-builder",
5
+ FORM_BUILDER_SUBMISSION = "form-builder-submission"
6
+ }
7
+ export interface IGetElasticsearchEntityTypeParams {
8
+ SK: string;
9
+ index: string;
10
+ }
11
+ export declare const getElasticsearchEntityType: (params: IGetElasticsearchEntityTypeParams) => EntityType;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getElasticsearchEntityType = exports.EntityType = void 0;
7
+ let EntityType = exports.EntityType = /*#__PURE__*/function (EntityType) {
8
+ EntityType["CMS"] = "headless-cms";
9
+ EntityType["PAGE_BUILDER"] = "page-builder";
10
+ EntityType["FORM_BUILDER"] = "form-builder";
11
+ EntityType["FORM_BUILDER_SUBMISSION"] = "form-builder-submission";
12
+ return EntityType;
13
+ }({});
14
+ const getElasticsearchEntityType = params => {
15
+ if (params.index.includes("-headless-cms-")) {
16
+ return EntityType.CMS;
17
+ } else if (params.index.endsWith("-page-builder")) {
18
+ return EntityType.PAGE_BUILDER;
19
+ } else if (params.index.endsWith("-form-builder")) {
20
+ if (params.SK.startsWith("FS#")) {
21
+ return EntityType.FORM_BUILDER_SUBMISSION;
22
+ }
23
+ return EntityType.FORM_BUILDER;
24
+ }
25
+ throw new Error(`Unknown entity type for item "${JSON.stringify(params)}".`);
26
+ };
27
+ exports.getElasticsearchEntityType = getElasticsearchEntityType;
28
+
29
+ //# sourceMappingURL=getElasticsearchEntityType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EntityType","exports","getElasticsearchEntityType","params","index","includes","CMS","endsWith","PAGE_BUILDER","SK","startsWith","FORM_BUILDER_SUBMISSION","FORM_BUILDER","Error","JSON","stringify"],"sources":["getElasticsearchEntityType.ts"],"sourcesContent":["export enum EntityType {\n CMS = \"headless-cms\",\n PAGE_BUILDER = \"page-builder\",\n FORM_BUILDER = \"form-builder\",\n FORM_BUILDER_SUBMISSION = \"form-builder-submission\"\n}\n\nexport interface IGetElasticsearchEntityTypeParams {\n SK: string;\n index: string;\n}\n\nexport const getElasticsearchEntityType = (\n params: IGetElasticsearchEntityTypeParams\n): EntityType => {\n if (params.index.includes(\"-headless-cms-\")) {\n return EntityType.CMS;\n } else if (params.index.endsWith(\"-page-builder\")) {\n return EntityType.PAGE_BUILDER;\n } else if (params.index.endsWith(\"-form-builder\")) {\n if (params.SK.startsWith(\"FS#\")) {\n return EntityType.FORM_BUILDER_SUBMISSION;\n }\n return EntityType.FORM_BUILDER;\n }\n throw new Error(`Unknown entity type for item \"${JSON.stringify(params)}\".`);\n};\n"],"mappings":";;;;;;IAAYA,UAAU,GAAAC,OAAA,CAAAD,UAAA,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;AAYf,MAAME,0BAA0B,GACnCC,MAAyC,IAC5B;EACb,IAAIA,MAAM,CAACC,KAAK,CAACC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;IACzC,OAAOL,UAAU,CAACM,GAAG;EACzB,CAAC,MAAM,IAAIH,MAAM,CAACC,KAAK,CAACG,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC/C,OAAOP,UAAU,CAACQ,YAAY;EAClC,CAAC,MAAM,IAAIL,MAAM,CAACC,KAAK,CAACG,QAAQ,CAAC,eAAe,CAAC,EAAE;IAC/C,IAAIJ,MAAM,CAACM,EAAE,CAACC,UAAU,CAAC,KAAK,CAAC,EAAE;MAC7B,OAAOV,UAAU,CAACW,uBAAuB;IAC7C;IACA,OAAOX,UAAU,CAACY,YAAY;EAClC;EACA,MAAM,IAAIC,KAAK,CAAC,iCAAiCC,IAAI,CAACC,SAAS,CAACZ,MAAM,CAAC,IAAI,CAAC;AAChF,CAAC;AAACF,OAAA,CAAAC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { TableDef } from "@webiny/db-dynamodb/toolbox";
2
+ import type { Context } from "../../../types";
3
+ export interface IGetTableParams {
4
+ context: Pick<Context, "db">;
5
+ type: "regular" | "es";
6
+ }
7
+ export declare const getTable: (params: IGetTableParams) => TableDef;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getTable = void 0;
7
+ const createPredicate = (app, tags) => {
8
+ return item => {
9
+ return item.app === app && tags.every(tag => item.tags.includes(tag));
10
+ };
11
+ };
12
+ const getTable = params => {
13
+ const {
14
+ context,
15
+ type
16
+ } = params;
17
+ const getByPredicate = predicate => {
18
+ const item = context.db.registry.getOneItem(predicate);
19
+ return item.item;
20
+ };
21
+ const entity = getByPredicate(createPredicate("cms", [type]));
22
+ if (!entity) {
23
+ throw new Error(`Unknown entity type "${type}".`);
24
+ }
25
+ return entity.table;
26
+ };
27
+ exports.getTable = getTable;
28
+
29
+ //# sourceMappingURL=getTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPredicate","app","tags","item","every","tag","includes","getTable","params","context","type","getByPredicate","predicate","db","registry","getOneItem","entity","Error","table","exports"],"sources":["getTable.ts"],"sourcesContent":["import type { Entity, TableDef } from \"@webiny/db-dynamodb/toolbox\";\nimport type { Context } from \"~/types\";\nimport type { NonEmptyArray } from \"@webiny/api/types\";\nimport type { IRegistryItem } from \"@webiny/db\";\n\nexport interface IGetTableParams {\n context: Pick<Context, \"db\">;\n type: \"regular\" | \"es\";\n}\n\nconst createPredicate = (app: string, tags: NonEmptyArray<string>) => {\n return (item: IRegistryItem) => {\n return item.app === app && tags.every(tag => item.tags.includes(tag));\n };\n};\n\nexport const getTable = (params: IGetTableParams): TableDef => {\n const { context, type } = params;\n\n const getByPredicate = (predicate: (item: IRegistryItem) => boolean) => {\n const item = context.db.registry.getOneItem<Entity>(predicate);\n return item.item;\n };\n\n const entity = getByPredicate(createPredicate(\"cms\", [type]));\n if (!entity) {\n throw new Error(`Unknown entity type \"${type}\".`);\n }\n return entity.table as TableDef;\n};\n"],"mappings":";;;;;;AAUA,MAAMA,eAAe,GAAGA,CAACC,GAAW,EAAEC,IAA2B,KAAK;EAClE,OAAQC,IAAmB,IAAK;IAC5B,OAAOA,IAAI,CAACF,GAAG,KAAKA,GAAG,IAAIC,IAAI,CAACE,KAAK,CAACC,GAAG,IAAIF,IAAI,CAACD,IAAI,CAACI,QAAQ,CAACD,GAAG,CAAC,CAAC;EACzE,CAAC;AACL,CAAC;AAEM,MAAME,QAAQ,GAAIC,MAAuB,IAAe;EAC3D,MAAM;IAAEC,OAAO;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAEhC,MAAMG,cAAc,GAAIC,SAA2C,IAAK;IACpE,MAAMT,IAAI,GAAGM,OAAO,CAACI,EAAE,CAACC,QAAQ,CAACC,UAAU,CAASH,SAAS,CAAC;IAC9D,OAAOT,IAAI,CAACA,IAAI;EACpB,CAAC;EAED,MAAMa,MAAM,GAAGL,cAAc,CAACX,eAAe,CAAC,KAAK,EAAE,CAACU,IAAI,CAAC,CAAC,CAAC;EAC7D,IAAI,CAACM,MAAM,EAAE;IACT,MAAM,IAAIC,KAAK,CAAC,wBAAwBP,IAAI,IAAI,CAAC;EACrD;EACA,OAAOM,MAAM,CAACE,KAAK;AACvB,CAAC;AAACC,OAAA,CAAAZ,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export * from "./getElasticsearchEntity";
2
+ export * from "./getElasticsearchEntityType";
3
+ export * from "./getTable";
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _getElasticsearchEntity = require("./getElasticsearchEntity");
7
+ Object.keys(_getElasticsearchEntity).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _getElasticsearchEntity[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _getElasticsearchEntity[key];
14
+ }
15
+ });
16
+ });
17
+ var _getElasticsearchEntityType = require("./getElasticsearchEntityType");
18
+ Object.keys(_getElasticsearchEntityType).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _getElasticsearchEntityType[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _getElasticsearchEntityType[key];
25
+ }
26
+ });
27
+ });
28
+ var _getTable = require("./getTable");
29
+ Object.keys(_getTable).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _getTable[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _getTable[key];
36
+ }
37
+ });
38
+ });
39
+
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_getElasticsearchEntity","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_getElasticsearchEntityType","_getTable"],"sources":["index.ts"],"sourcesContent":["export * from \"./getElasticsearchEntity\";\nexport * from \"./getElasticsearchEntityType\";\nexport * from \"./getTable\";\n"],"mappings":";;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,uBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,uBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,uBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,2BAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,2BAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,2BAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,2BAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,SAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,SAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,SAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,SAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import type { Context, IElasticsearchTaskConfig } from "../../types";
2
+ import type { IDataSynchronizationInput } from "./types";
3
+ export declare const DATA_SYNCHRONIZATION_TASK = "dataSynchronization";
4
+ export declare const createDataSynchronization: (params?: IElasticsearchTaskConfig) => import("@webiny/tasks").TaskDefinitionPlugin<Context, IDataSynchronizationInput, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createDataSynchronization = exports.DATA_SYNCHRONIZATION_TASK = void 0;
7
+ var _tasks = require("@webiny/tasks");
8
+ const DATA_SYNCHRONIZATION_TASK = exports.DATA_SYNCHRONIZATION_TASK = "dataSynchronization";
9
+ const createDataSynchronization = params => {
10
+ return (0, _tasks.createTaskDefinition)({
11
+ id: DATA_SYNCHRONIZATION_TASK,
12
+ isPrivate: false,
13
+ title: "Data Synchronization",
14
+ description: "Synchronize data between Elasticsearch and DynamoDB",
15
+ maxIterations: 100,
16
+ disableDatabaseLogs: true,
17
+ async run({
18
+ context,
19
+ response,
20
+ isCloseToTimeout,
21
+ isAborted,
22
+ store,
23
+ input,
24
+ timer
25
+ }) {
26
+ const {
27
+ Manager
28
+ } = await import(/* webpackChunkName: "Manager" */"../Manager");
29
+ const {
30
+ IndexManager
31
+ } = await import(/* webpackChunkName: "IndexManager" */"../../settings");
32
+ const manager = new Manager({
33
+ elasticsearchClient: params?.elasticsearchClient,
34
+ documentClient: params?.documentClient,
35
+ response,
36
+ context,
37
+ isAborted,
38
+ isCloseToTimeout,
39
+ store,
40
+ timer
41
+ });
42
+ const indexManager = new IndexManager(manager.elasticsearch, {});
43
+ const {
44
+ DataSynchronizationTaskRunner
45
+ } = await import(/* webpackChunkName: "DataSynchronizationTaskRunner" */"./DataSynchronizationTaskRunner");
46
+ const {
47
+ createFactories
48
+ } = await import(/* webpackChunkName: "createFactories" */"./createFactories");
49
+ try {
50
+ const dataSynchronization = new DataSynchronizationTaskRunner({
51
+ manager: manager,
52
+ indexManager,
53
+ factories: createFactories()
54
+ });
55
+ return await dataSynchronization.run({
56
+ ...input
57
+ });
58
+ } catch (ex) {
59
+ return response.error(ex);
60
+ }
61
+ },
62
+ createInputValidation({
63
+ validator
64
+ }) {
65
+ return {
66
+ flow: validator.enum(["elasticsearchToDynamoDb"]),
67
+ elasticsearchToDynamoDb: validator.object({
68
+ finished: validator.boolean().optional().default(false),
69
+ index: validator.string().optional(),
70
+ cursor: validator.array(validator.string()).optional()
71
+ }).optional().default({
72
+ finished: false
73
+ })
74
+ };
75
+ }
76
+ });
77
+ };
78
+ exports.createDataSynchronization = createDataSynchronization;
79
+
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_tasks","require","DATA_SYNCHRONIZATION_TASK","exports","createDataSynchronization","params","createTaskDefinition","id","isPrivate","title","description","maxIterations","disableDatabaseLogs","run","context","response","isCloseToTimeout","isAborted","store","input","timer","Manager","IndexManager","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","DataSynchronizationTaskRunner","createFactories","dataSynchronization","factories","ex","error","createInputValidation","validator","flow","enum","elasticsearchToDynamoDb","object","finished","boolean","optional","default","index","string","cursor","array"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport type { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport type {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IDataSynchronizationOutput\n} from \"~/tasks/dataSynchronization/types\";\n\nexport const DATA_SYNCHRONIZATION_TASK = \"dataSynchronization\";\n\nexport const createDataSynchronization = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IDataSynchronizationInput, IDataSynchronizationOutput>({\n id: DATA_SYNCHRONIZATION_TASK,\n isPrivate: false,\n title: \"Data Synchronization\",\n description: \"Synchronize data between Elasticsearch and DynamoDB\",\n maxIterations: 100,\n disableDatabaseLogs: true,\n async run({ context, response, isCloseToTimeout, isAborted, store, input, timer }) {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n\n const manager = new Manager<IDataSynchronizationInput>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, {});\n\n const { DataSynchronizationTaskRunner } = await import(\n /* webpackChunkName: \"DataSynchronizationTaskRunner\" */ \"./DataSynchronizationTaskRunner\"\n );\n\n const { createFactories } = await import(\n /* webpackChunkName: \"createFactories\" */ \"./createFactories\"\n );\n\n try {\n const dataSynchronization = new DataSynchronizationTaskRunner({\n manager: manager as unknown as IDataSynchronizationManager,\n indexManager,\n factories: createFactories()\n });\n return await dataSynchronization.run({\n ...input\n });\n } catch (ex) {\n return response.error(ex);\n }\n },\n createInputValidation({ validator }) {\n return {\n flow: validator.enum([\"elasticsearchToDynamoDb\"]),\n elasticsearchToDynamoDb: validator\n .object({\n finished: validator.boolean().optional().default(false),\n index: validator.string().optional(),\n cursor: validator.array(validator.string()).optional()\n })\n .optional()\n .default({\n finished: false\n })\n };\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQO,MAAMC,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GAAG,qBAAqB;AAEvD,MAAME,yBAAyB,GAAIC,MAAiC,IAAK;EAC5E,OAAO,IAAAC,2BAAoB,EAAiE;IACxFC,EAAE,EAAEL,yBAAyB;IAC7BM,SAAS,EAAE,KAAK;IAChBC,KAAK,EAAE,sBAAsB;IAC7BC,WAAW,EAAE,qDAAqD;IAClEC,aAAa,EAAE,GAAG;IAClBC,mBAAmB,EAAE,IAAI;IACzB,MAAMC,GAAGA,CAAC;MAAEC,OAAO;MAAEC,QAAQ;MAAEC,gBAAgB;MAAEC,SAAS;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,EAAE;MAC/E,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MAED,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAA4B;QACnDG,mBAAmB,EAAEnB,MAAM,EAAEmB,mBAAmB;QAChDC,cAAc,EAAEpB,MAAM,EAAEoB,cAAc;QACtCV,QAAQ;QACRD,OAAO;QACPG,SAAS;QACTD,gBAAgB;QAChBE,KAAK;QACLE;MACJ,CAAC,CAAC;MAEF,MAAMM,YAAY,GAAG,IAAIJ,YAAY,CAACC,OAAO,CAACI,aAAa,EAAE,CAAC,CAAC,CAAC;MAEhE,MAAM;QAAEC;MAA8B,CAAC,GAAG,MAAM,MAAM,CAClD,wFACJ,CAAC;MAED,MAAM;QAAEC;MAAgB,CAAC,GAAG,MAAM,MAAM,CACpC,4DACJ,CAAC;MAED,IAAI;QACA,MAAMC,mBAAmB,GAAG,IAAIF,6BAA6B,CAAC;UAC1DL,OAAO,EAAEA,OAAiD;UAC1DG,YAAY;UACZK,SAAS,EAAEF,eAAe,CAAC;QAC/B,CAAC,CAAC;QACF,OAAO,MAAMC,mBAAmB,CAACjB,GAAG,CAAC;UACjC,GAAGM;QACP,CAAC,CAAC;MACN,CAAC,CAAC,OAAOa,EAAE,EAAE;QACT,OAAOjB,QAAQ,CAACkB,KAAK,CAACD,EAAE,CAAC;MAC7B;IACJ,CAAC;IACDE,qBAAqBA,CAAC;MAAEC;IAAU,CAAC,EAAE;MACjC,OAAO;QACHC,IAAI,EAAED,SAAS,CAACE,IAAI,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACjDC,uBAAuB,EAAEH,SAAS,CAC7BI,MAAM,CAAC;UACJC,QAAQ,EAAEL,SAAS,CAACM,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC;UACvDC,KAAK,EAAET,SAAS,CAACU,MAAM,CAAC,CAAC,CAACH,QAAQ,CAAC,CAAC;UACpCI,MAAM,EAAEX,SAAS,CAACY,KAAK,CAACZ,SAAS,CAACU,MAAM,CAAC,CAAC,CAAC,CAACH,QAAQ,CAAC;QACzD,CAAC,CAAC,CACDA,QAAQ,CAAC,CAAC,CACVC,OAAO,CAAC;UACLH,QAAQ,EAAE;QACd,CAAC;MACT,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACrC,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ import type { IManager } from "../../types";
2
+ import type { PrimitiveValue } from "@webiny/api-elasticsearch/types";
3
+ import type { IIndexManager } from "../../settings/types";
4
+ import type { ITaskResponseAbortedResult, ITaskResponseContinueResult, ITaskResponseDoneResult, ITaskResponseDoneResultOutput, ITaskResponseErrorResult } from "@webiny/tasks";
5
+ import type { IElasticsearchSynchronize } from "./elasticsearch/abstractions/ElasticsearchSynchronize";
6
+ import type { IElasticsearchFetcher } from "./elasticsearch/abstractions/ElasticsearchFetcher";
7
+ export interface IDataSynchronizationInputValue {
8
+ finished?: boolean;
9
+ }
10
+ export interface IDataSynchronizationInputElasticsearchToDynamoDbValue extends IDataSynchronizationInputValue {
11
+ index?: string;
12
+ cursor?: PrimitiveValue[];
13
+ }
14
+ export interface IDataSynchronizationInput {
15
+ flow: "elasticsearchToDynamoDb";
16
+ elasticsearchToDynamoDb?: IDataSynchronizationInputElasticsearchToDynamoDbValue;
17
+ }
18
+ export type IDataSynchronizationOutput = ITaskResponseDoneResultOutput;
19
+ export type ISynchronizationRunResult = ITaskResponseContinueResult<IDataSynchronizationInput> | ITaskResponseDoneResult<IDataSynchronizationOutput> | ITaskResponseErrorResult | ITaskResponseAbortedResult;
20
+ export interface ISynchronization {
21
+ run(input: IDataSynchronizationInput): Promise<ISynchronizationRunResult>;
22
+ }
23
+ export interface IElasticsearchSyncParams {
24
+ manager: IDataSynchronizationManager;
25
+ indexManager: IIndexManager;
26
+ synchronize: IElasticsearchSynchronize;
27
+ fetcher: IElasticsearchFetcher;
28
+ }
29
+ export interface IElasticsearchSyncFactory {
30
+ (params: IElasticsearchSyncParams): ISynchronization;
31
+ }
32
+ export interface IFactories {
33
+ /**
34
+ * Delete all the records which are in the Elasticsearch but not in the Elasticsearch DynamoDB table.
35
+ */
36
+ elasticsearchToDynamoDb: IElasticsearchSyncFactory;
37
+ }
38
+ export type IDataSynchronizationManager = IManager<IDataSynchronizationInput, IDataSynchronizationOutput>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { IManager } from \"~/types\";\nimport type { PrimitiveValue } from \"@webiny/api-elasticsearch/types\";\nimport type { IIndexManager } from \"~/settings/types\";\nimport type {\n ITaskResponseAbortedResult,\n ITaskResponseContinueResult,\n ITaskResponseDoneResult,\n ITaskResponseDoneResultOutput,\n ITaskResponseErrorResult\n} from \"@webiny/tasks\";\nimport type { IElasticsearchSynchronize } from \"~/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize\";\nimport type { IElasticsearchFetcher } from \"~/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher\";\n\nexport interface IDataSynchronizationInputValue {\n finished?: boolean;\n}\n\nexport interface IDataSynchronizationInputElasticsearchToDynamoDbValue\n extends IDataSynchronizationInputValue {\n index?: string;\n cursor?: PrimitiveValue[];\n}\n\nexport interface IDataSynchronizationInput {\n flow: \"elasticsearchToDynamoDb\";\n elasticsearchToDynamoDb?: IDataSynchronizationInputElasticsearchToDynamoDbValue;\n}\n\nexport type IDataSynchronizationOutput = ITaskResponseDoneResultOutput;\n\nexport type ISynchronizationRunResult =\n | ITaskResponseContinueResult<IDataSynchronizationInput>\n | ITaskResponseDoneResult<IDataSynchronizationOutput>\n | ITaskResponseErrorResult\n | ITaskResponseAbortedResult;\n\nexport interface ISynchronization {\n run(input: IDataSynchronizationInput): Promise<ISynchronizationRunResult>;\n}\n\nexport interface IElasticsearchSyncParams {\n manager: IDataSynchronizationManager;\n indexManager: IIndexManager;\n synchronize: IElasticsearchSynchronize;\n fetcher: IElasticsearchFetcher;\n}\n\nexport interface IElasticsearchSyncFactory {\n (params: IElasticsearchSyncParams): ISynchronization;\n}\n\nexport interface IFactories {\n /**\n * Delete all the records which are in the Elasticsearch but not in the Elasticsearch DynamoDB table.\n */\n elasticsearchToDynamoDb: IElasticsearchSyncFactory;\n}\n\nexport type IDataSynchronizationManager = IManager<\n IDataSynchronizationInput,\n IDataSynchronizationOutput\n>;\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import type { IManager } from "../../types";
2
+ import type { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
3
+ import type { IndexManager } from "../../settings";
4
+ import type { IElasticsearchEnableIndexingTaskInput } from "./types";
5
+ export declare class EnableIndexingTaskRunner {
6
+ private readonly manager;
7
+ private readonly indexManager;
8
+ private readonly response;
9
+ constructor(manager: IManager<IElasticsearchEnableIndexingTaskInput>, indexManager: IndexManager);
10
+ exec(matching?: string): Promise<ITaskResponseResult>;
11
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EnableIndexingTaskRunner = void 0;
7
+ class EnableIndexingTaskRunner {
8
+ constructor(manager, indexManager) {
9
+ this.manager = manager;
10
+ this.response = manager.response;
11
+ this.indexManager = indexManager;
12
+ }
13
+ async exec(matching) {
14
+ if (this.manager.isAborted()) {
15
+ return this.response.aborted();
16
+ }
17
+ const isIndexAllowed = index => {
18
+ if (typeof matching !== "string" || !matching) {
19
+ return true;
20
+ }
21
+ return index.includes(matching);
22
+ };
23
+ const indexes = await this.indexManager.list();
24
+ const enabled = [];
25
+ const failed = [];
26
+ for (const index of indexes) {
27
+ if (!isIndexAllowed(index)) {
28
+ continue;
29
+ }
30
+ try {
31
+ await this.indexManager.enableIndexing(index);
32
+ enabled.push(index);
33
+ } catch (ex) {
34
+ failed.push(index);
35
+ await this.manager.store.addErrorLog({
36
+ message: `Failed to enable indexing on index "${index}".`,
37
+ error: ex
38
+ });
39
+ }
40
+ }
41
+ return this.response.done("Task done.", {
42
+ enabled,
43
+ failed
44
+ });
45
+ }
46
+ }
47
+ exports.EnableIndexingTaskRunner = EnableIndexingTaskRunner;
48
+
49
+ //# sourceMappingURL=EnableIndexingTaskRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EnableIndexingTaskRunner","constructor","manager","indexManager","response","exec","matching","isAborted","aborted","isIndexAllowed","index","includes","indexes","list","enabled","failed","enableIndexing","push","ex","store","addErrorLog","message","error","done","exports"],"sources":["EnableIndexingTaskRunner.ts"],"sourcesContent":["import type { IManager } from \"~/types\";\nimport type { ITaskResponse, ITaskResponseResult } from \"@webiny/tasks/response/abstractions\";\nimport type { IndexManager } from \"~/settings\";\nimport type { IIndexManager } from \"~/settings/types\";\nimport type { IElasticsearchEnableIndexingTaskInput } from \"~/tasks/enableIndexing/types\";\n\nexport class EnableIndexingTaskRunner {\n private readonly manager: IManager<IElasticsearchEnableIndexingTaskInput>;\n private readonly indexManager: IIndexManager;\n private readonly response: ITaskResponse;\n\n public constructor(\n manager: IManager<IElasticsearchEnableIndexingTaskInput>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n this.response = manager.response;\n this.indexManager = indexManager;\n }\n\n public async exec(matching?: string): Promise<ITaskResponseResult> {\n if (this.manager.isAborted()) {\n return this.response.aborted();\n }\n\n const isIndexAllowed = (index: string): boolean => {\n if (typeof matching !== \"string\" || !matching) {\n return true;\n }\n return index.includes(matching);\n };\n\n const indexes = await this.indexManager.list();\n const enabled: string[] = [];\n const failed: string[] = [];\n for (const index of indexes) {\n if (!isIndexAllowed(index)) {\n continue;\n }\n try {\n await this.indexManager.enableIndexing(index);\n enabled.push(index);\n } catch (ex) {\n failed.push(index);\n await this.manager.store.addErrorLog({\n message: `Failed to enable indexing on index \"${index}\".`,\n error: ex\n });\n }\n }\n return this.response.done(\"Task done.\", {\n enabled,\n failed\n });\n }\n}\n"],"mappings":";;;;;;AAMO,MAAMA,wBAAwB,CAAC;EAK3BC,WAAWA,CACdC,OAAwD,EACxDC,YAA0B,EAC5B;IACE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,QAAQ,GAAGF,OAAO,CAACE,QAAQ;IAChC,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAaE,IAAIA,CAACC,QAAiB,EAAgC;IAC/D,IAAI,IAAI,CAACJ,OAAO,CAACK,SAAS,CAAC,CAAC,EAAE;MAC1B,OAAO,IAAI,CAACH,QAAQ,CAACI,OAAO,CAAC,CAAC;IAClC;IAEA,MAAMC,cAAc,GAAIC,KAAa,IAAc;MAC/C,IAAI,OAAOJ,QAAQ,KAAK,QAAQ,IAAI,CAACA,QAAQ,EAAE;QAC3C,OAAO,IAAI;MACf;MACA,OAAOI,KAAK,CAACC,QAAQ,CAACL,QAAQ,CAAC;IACnC,CAAC;IAED,MAAMM,OAAO,GAAG,MAAM,IAAI,CAACT,YAAY,CAACU,IAAI,CAAC,CAAC;IAC9C,MAAMC,OAAiB,GAAG,EAAE;IAC5B,MAAMC,MAAgB,GAAG,EAAE;IAC3B,KAAK,MAAML,KAAK,IAAIE,OAAO,EAAE;MACzB,IAAI,CAACH,cAAc,CAACC,KAAK,CAAC,EAAE;QACxB;MACJ;MACA,IAAI;QACA,MAAM,IAAI,CAACP,YAAY,CAACa,cAAc,CAACN,KAAK,CAAC;QAC7CI,OAAO,CAACG,IAAI,CAACP,KAAK,CAAC;MACvB,CAAC,CAAC,OAAOQ,EAAE,EAAE;QACTH,MAAM,CAACE,IAAI,CAACP,KAAK,CAAC;QAClB,MAAM,IAAI,CAACR,OAAO,CAACiB,KAAK,CAACC,WAAW,CAAC;UACjCC,OAAO,EAAE,uCAAuCX,KAAK,IAAI;UACzDY,KAAK,EAAEJ;QACX,CAAC,CAAC;MACN;IACJ;IACA,OAAO,IAAI,CAACd,QAAQ,CAACmB,IAAI,CAAC,YAAY,EAAE;MACpCT,OAAO;MACPC;IACJ,CAAC,CAAC;EACN;AACJ;AAACS,OAAA,CAAAxB,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import type { Context, IElasticsearchTaskConfig } from "../../types";
2
+ import type { IElasticsearchEnableIndexingTaskInput } from "./types";
3
+ export declare const createEnableIndexingTask: (params?: IElasticsearchTaskConfig) => import("@webiny/tasks").TaskDefinitionPlugin<Context, IElasticsearchEnableIndexingTaskInput, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createEnableIndexingTask = void 0;
7
+ var _tasks = require("@webiny/tasks");
8
+ const createEnableIndexingTask = params => {
9
+ return (0, _tasks.createTaskDefinition)({
10
+ id: "elasticsearchEnableIndexing",
11
+ title: "Enable Indexing on Elasticsearch Indexes",
12
+ run: async ({
13
+ response,
14
+ context,
15
+ isAborted,
16
+ isCloseToTimeout,
17
+ input,
18
+ store,
19
+ timer
20
+ }) => {
21
+ const {
22
+ Manager
23
+ } = await import(/* webpackChunkName: "Manager" */"../Manager");
24
+ const {
25
+ IndexManager
26
+ } = await import(/* webpackChunkName: "IndexManager" */"../../settings");
27
+ const {
28
+ EnableIndexingTaskRunner
29
+ } = await import(/* webpackChunkName: "EnableIndexingTaskRunner" */"./EnableIndexingTaskRunner");
30
+ const manager = new Manager({
31
+ elasticsearchClient: params?.elasticsearchClient,
32
+ documentClient: params?.documentClient,
33
+ response,
34
+ context,
35
+ isAborted,
36
+ isCloseToTimeout,
37
+ store,
38
+ timer
39
+ });
40
+ const indexManager = new IndexManager(manager.elasticsearch, {}, {
41
+ refreshInterval: input.refreshInterval,
42
+ numberOfReplicas: input.numberOfReplicas
43
+ });
44
+ const enableIndexing = new EnableIndexingTaskRunner(manager, indexManager);
45
+ return enableIndexing.exec(input.matching);
46
+ }
47
+ });
48
+ };
49
+ exports.createEnableIndexingTask = createEnableIndexingTask;
50
+
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_tasks","require","createEnableIndexingTask","params","createTaskDefinition","id","title","run","response","context","isAborted","isCloseToTimeout","input","store","timer","Manager","IndexManager","EnableIndexingTaskRunner","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","refreshInterval","numberOfReplicas","enableIndexing","exec","matching","exports"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport type { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport type { IElasticsearchEnableIndexingTaskInput } from \"./types\";\n\nexport const createEnableIndexingTask = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchEnableIndexingTaskInput>({\n id: \"elasticsearchEnableIndexing\",\n title: \"Enable Indexing on Elasticsearch Indexes\",\n run: async ({ response, context, isAborted, isCloseToTimeout, input, store, timer }) => {\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings\"\n );\n\n const { EnableIndexingTaskRunner } = await import(\n /* webpackChunkName: \"EnableIndexingTaskRunner\" */ \"./EnableIndexingTaskRunner\"\n );\n\n const manager = new Manager<IElasticsearchEnableIndexingTaskInput>({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store,\n timer\n });\n\n const indexManager = new IndexManager(\n manager.elasticsearch,\n {},\n {\n refreshInterval: input.refreshInterval,\n numberOfReplicas: input.numberOfReplicas\n }\n );\n\n const enableIndexing = new EnableIndexingTaskRunner(manager, indexManager);\n\n return enableIndexing.exec(input.matching);\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIO,MAAMC,wBAAwB,GAAIC,MAAiC,IAAK;EAC3E,OAAO,IAAAC,2BAAoB,EAAiD;IACxEC,EAAE,EAAE,6BAA6B;IACjCC,KAAK,EAAE,0CAA0C;IACjDC,GAAG,EAAE,MAAAA,CAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,SAAS;MAAEC,gBAAgB;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpF,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,6CAEJ,CAAC;MACD,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,CACjC,sDACJ,CAAC;MAED,MAAM;QAAEC;MAAyB,CAAC,GAAG,MAAM,MAAM,CAC7C,8EACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIH,OAAO,CAAwC;QAC/DI,mBAAmB,EAAEhB,MAAM,EAAEgB,mBAAmB;QAChDC,cAAc,EAAEjB,MAAM,EAAEiB,cAAc;QACtCZ,QAAQ;QACRC,OAAO;QACPC,SAAS;QACTC,gBAAgB;QAChBE,KAAK;QACLC;MACJ,CAAC,CAAC;MAEF,MAAMO,YAAY,GAAG,IAAIL,YAAY,CACjCE,OAAO,CAACI,aAAa,EACrB,CAAC,CAAC,EACF;QACIC,eAAe,EAAEX,KAAK,CAACW,eAAe;QACtCC,gBAAgB,EAAEZ,KAAK,CAACY;MAC5B,CACJ,CAAC;MAED,MAAMC,cAAc,GAAG,IAAIR,wBAAwB,CAACC,OAAO,EAAEG,YAAY,CAAC;MAE1E,OAAOI,cAAc,CAACC,IAAI,CAACd,KAAK,CAACe,QAAQ,CAAC;IAC9C;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA1B,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ export interface IElasticsearchEnableIndexingTaskInput {
2
+ matching?: string;
3
+ numberOfReplicas?: number;
4
+ refreshInterval?: string;
5
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface IElasticsearchEnableIndexingTaskInput {\n matching?: string;\n numberOfReplicas?: number;\n refreshInterval?: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ export * from "./enableIndexing";
2
+ export * from "./dataSynchronization";
3
+ export * from "./reindexing";
4
+ export * from "./createIndexes";
package/tasks/index.js ADDED
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _enableIndexing = require("./enableIndexing");
7
+ Object.keys(_enableIndexing).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _enableIndexing[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _enableIndexing[key];
14
+ }
15
+ });
16
+ });
17
+ var _dataSynchronization = require("./dataSynchronization");
18
+ Object.keys(_dataSynchronization).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _dataSynchronization[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _dataSynchronization[key];
25
+ }
26
+ });
27
+ });
28
+ var _reindexing = require("./reindexing");
29
+ Object.keys(_reindexing).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _reindexing[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _reindexing[key];
36
+ }
37
+ });
38
+ });
39
+ var _createIndexes = require("./createIndexes");
40
+ Object.keys(_createIndexes).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _createIndexes[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _createIndexes[key];
47
+ }
48
+ });
49
+ });
50
+
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_enableIndexing","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_dataSynchronization","_reindexing","_createIndexes"],"sources":["index.ts"],"sourcesContent":["export * from \"./enableIndexing\";\nexport * from \"./dataSynchronization\";\nexport * from \"./reindexing\";\nexport * from \"./createIndexes\";\n"],"mappings":";;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,eAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,eAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,eAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,oBAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,oBAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,oBAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,oBAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,WAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,WAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,WAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,WAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,cAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,cAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,cAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,cAAA,CAAAP,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import type { IElasticsearchIndexingTaskValues, IElasticsearchIndexingTaskValuesKeys, IManager } from "../../types";
2
+ import type { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
3
+ import type { IndexManager } from "../../settings";
4
+ export declare class ReindexingTaskRunner {
5
+ private readonly manager;
6
+ private keys?;
7
+ private readonly indexManager;
8
+ private readonly response;
9
+ constructor(manager: IManager<IElasticsearchIndexingTaskValues>, indexManager: IndexManager);
10
+ /**
11
+ * When running the task, we always must check:
12
+ * * if task is close to timeout
13
+ * * if task was aborted
14
+ */
15
+ exec(keys: IElasticsearchIndexingTaskValuesKeys | undefined, limit: number): Promise<ITaskResponseResult>;
16
+ }