@webiny/api-elasticsearch-tasks 0.0.0-unstable.2696f9d9e8

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 (69) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/definitions/entry.d.ts +7 -0
  4. package/definitions/entry.js +36 -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 +4 -0
  31. package/index.js +13 -0
  32. package/index.js.map +1 -0
  33. package/package.json +54 -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 +24 -0
  39. package/settings/EnableIndexing.js.map +1 -0
  40. package/settings/IndexManager.d.ts +12 -0
  41. package/settings/IndexManager.js +49 -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 +6 -0
  50. package/settings/types.js +7 -0
  51. package/settings/types.js.map +1 -0
  52. package/tasks/Manager.d.ts +32 -0
  53. package/tasks/Manager.js +52 -0
  54. package/tasks/Manager.js.map +1 -0
  55. package/tasks/index.d.ts +1 -0
  56. package/tasks/index.js +18 -0
  57. package/tasks/index.js.map +1 -0
  58. package/tasks/reindexing/ReindexingTaskRunner.d.ts +16 -0
  59. package/tasks/reindexing/ReindexingTaskRunner.js +126 -0
  60. package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -0
  61. package/tasks/reindexing/index.d.ts +1 -0
  62. package/tasks/reindexing/index.js +18 -0
  63. package/tasks/reindexing/index.js.map +1 -0
  64. package/tasks/reindexing/reindexingTaskDefinition.d.ts +8 -0
  65. package/tasks/reindexing/reindexingTaskDefinition.js +47 -0
  66. package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -0
  67. package/types.d.ts +52 -0
  68. package/types.js +7 -0
  69. package/types.js.map +1 -0
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.IndexSettingsManager = void 0;
7
+ var _errors = require("../errors");
8
+ class IndexSettingsManager {
9
+ constructor(elasticsearch) {
10
+ this.elasticsearch = elasticsearch;
11
+ }
12
+ async getSettings(index) {
13
+ try {
14
+ const response = await this.elasticsearch.indices.getSettings({
15
+ index
16
+ });
17
+ const setting = response.body[index].settings.index;
18
+ return {
19
+ numberOfReplicas: setting.number_of_replicas,
20
+ refreshInterval: setting.refresh_interval
21
+ };
22
+ } catch (ex) {
23
+ throw new _errors.IndexSettingsGetError(ex, index);
24
+ }
25
+ }
26
+ async setSettings(index, settings) {
27
+ try {
28
+ await this.elasticsearch.indices.putSettings({
29
+ index,
30
+ body: {
31
+ index: {
32
+ number_of_replicas: settings.numberOfReplicas,
33
+ refresh_interval: settings.refreshInterval
34
+ }
35
+ }
36
+ });
37
+ } catch (ex) {
38
+ throw new _errors.IndexSettingsSetError(ex, index);
39
+ }
40
+ }
41
+ }
42
+ exports.IndexSettingsManager = IndexSettingsManager;
43
+
44
+ //# sourceMappingURL=IndexSettingsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_errors","require","IndexSettingsManager","constructor","elasticsearch","getSettings","index","response","indices","setting","body","settings","numberOfReplicas","number_of_replicas","refreshInterval","refresh_interval","ex","IndexSettingsGetError","setSettings","putSettings","IndexSettingsSetError","exports"],"sources":["IndexSettingsManager.ts"],"sourcesContent":["import { Client } from \"@webiny/api-elasticsearch\";\nimport { IndexSettingsGetError, IndexSettingsSetError } from \"~/errors\";\nimport { IIndexSettingsValues } from \"~/types\";\n\nexport class IndexSettingsManager {\n private readonly elasticsearch: Client;\n\n public constructor(elasticsearch: Client) {\n this.elasticsearch = elasticsearch;\n }\n\n public async getSettings(index: string): Promise<IIndexSettingsValues> {\n try {\n const response = await this.elasticsearch.indices.getSettings({\n index\n });\n\n const setting = response.body[index].settings.index;\n\n return {\n numberOfReplicas: setting.number_of_replicas,\n refreshInterval: setting.refresh_interval\n };\n } catch (ex) {\n throw new IndexSettingsGetError(ex, index);\n }\n }\n\n public async setSettings(index: string, settings: IIndexSettingsValues): Promise<void> {\n try {\n await this.elasticsearch.indices.putSettings({\n index,\n body: {\n index: {\n number_of_replicas: settings.numberOfReplicas,\n refresh_interval: settings.refreshInterval\n }\n }\n });\n } catch (ex) {\n throw new IndexSettingsSetError(ex, index);\n }\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAGO,MAAMC,oBAAoB,CAAC;EAGvBC,WAAWA,CAACC,aAAqB,EAAE;IACtC,IAAI,CAACA,aAAa,GAAGA,aAAa;EACtC;EAEA,MAAaC,WAAWA,CAACC,KAAa,EAAiC;IACnE,IAAI;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACH,aAAa,CAACI,OAAO,CAACH,WAAW,CAAC;QAC1DC;MACJ,CAAC,CAAC;MAEF,MAAMG,OAAO,GAAGF,QAAQ,CAACG,IAAI,CAACJ,KAAK,CAAC,CAACK,QAAQ,CAACL,KAAK;MAEnD,OAAO;QACHM,gBAAgB,EAAEH,OAAO,CAACI,kBAAkB;QAC5CC,eAAe,EAAEL,OAAO,CAACM;MAC7B,CAAC;IACL,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAIC,6BAAqB,CAACD,EAAE,EAAEV,KAAK,CAAC;IAC9C;EACJ;EAEA,MAAaY,WAAWA,CAACZ,KAAa,EAAEK,QAA8B,EAAiB;IACnF,IAAI;MACA,MAAM,IAAI,CAACP,aAAa,CAACI,OAAO,CAACW,WAAW,CAAC;QACzCb,KAAK;QACLI,IAAI,EAAE;UACFJ,KAAK,EAAE;YACHO,kBAAkB,EAAEF,QAAQ,CAACC,gBAAgB;YAC7CG,gBAAgB,EAAEJ,QAAQ,CAACG;UAC/B;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,MAAM,IAAII,6BAAqB,CAACJ,EAAE,EAAEV,KAAK,CAAC;IAC9C;EACJ;AACJ;AAACe,OAAA,CAAAnB,oBAAA,GAAAA,oBAAA"}
@@ -0,0 +1 @@
1
+ export * from "./IndexManager";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _IndexManager = require("./IndexManager");
7
+ Object.keys(_IndexManager).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _IndexManager[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _IndexManager[key];
14
+ }
15
+ });
16
+ });
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_IndexManager","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["export * from \"./IndexManager\";\n"],"mappings":";;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,aAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,aAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,aAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,6 @@
1
+ import { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from "../types";
2
+ export interface IIndexManager {
3
+ settings: IElasticsearchIndexingTaskValuesSettings;
4
+ disableIndexing(index: string): Promise<IIndexSettingsValues>;
5
+ enableIndexing(index?: string): Promise<void>;
6
+ }
@@ -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 { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types\";\n\nexport interface IIndexManager {\n settings: IElasticsearchIndexingTaskValuesSettings;\n\n disableIndexing(index: string): Promise<IIndexSettingsValues>;\n enableIndexing(index?: string): Promise<void>;\n}\n"],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
+ import { Client } from "@webiny/api-elasticsearch";
3
+ import { createTable } from "../definitions";
4
+ import { Context, IElasticsearchIndexingTaskValues, IManager } from "../types";
5
+ import { Entity } from "@webiny/db-dynamodb/toolbox";
6
+ import { ITaskResponse } from "@webiny/tasks/response/abstractions";
7
+ import { ITaskManagerStore } from "@webiny/tasks/runner/abstractions";
8
+ import { BatchReadItem, BatchWriteItem, BatchWriteResult } from "@webiny/db-dynamodb";
9
+ export interface ManagerParams {
10
+ context: Context;
11
+ documentClient?: DynamoDBDocument;
12
+ elasticsearchClient?: Client;
13
+ isCloseToTimeout: () => boolean;
14
+ isAborted: () => boolean;
15
+ response: ITaskResponse;
16
+ store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;
17
+ }
18
+ export declare class Manager implements IManager {
19
+ readonly documentClient: DynamoDBDocument;
20
+ readonly elasticsearch: Client;
21
+ readonly context: Context;
22
+ readonly table: ReturnType<typeof createTable>;
23
+ readonly isCloseToTimeout: () => boolean;
24
+ readonly isAborted: () => boolean;
25
+ readonly response: ITaskResponse;
26
+ readonly store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;
27
+ private readonly entities;
28
+ constructor(params: ManagerParams);
29
+ getEntity(name: string): Entity<any>;
30
+ read<T>(items: BatchReadItem[]): Promise<T[]>;
31
+ write(items: BatchWriteItem[]): Promise<BatchWriteResult>;
32
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Manager = void 0;
7
+ var _clientDynamodb = require("@webiny/aws-sdk/client-dynamodb");
8
+ var _apiElasticsearch = require("@webiny/api-elasticsearch");
9
+ var _definitions = require("../definitions");
10
+ var _entry = require("../definitions/entry");
11
+ var _dbDynamodb = require("@webiny/db-dynamodb");
12
+ class Manager {
13
+ entities = {};
14
+ constructor(params) {
15
+ this.context = params.context;
16
+ this.documentClient = params?.documentClient || (0, _clientDynamodb.getDocumentClient)();
17
+ this.elasticsearch = params?.elasticsearchClient || params.context.elasticsearch || (0, _apiElasticsearch.createElasticsearchClient)({
18
+ endpoint: `https://${process.env.ELASTIC_SEARCH_ENDPOINT}`
19
+ });
20
+ this.table = (0, _definitions.createTable)({
21
+ documentClient: this.documentClient
22
+ });
23
+ this.isCloseToTimeout = params.isCloseToTimeout;
24
+ this.isAborted = params.isAborted;
25
+ this.response = params.response;
26
+ this.store = params.store;
27
+ }
28
+ getEntity(name) {
29
+ if (this.entities[name]) {
30
+ return this.entities[name];
31
+ }
32
+ return this.entities[name] = (0, _entry.createEntry)({
33
+ table: this.table,
34
+ entityName: name
35
+ });
36
+ }
37
+ async read(items) {
38
+ return await (0, _dbDynamodb.batchReadAll)({
39
+ table: this.table,
40
+ items
41
+ });
42
+ }
43
+ async write(items) {
44
+ return await (0, _dbDynamodb.batchWriteAll)({
45
+ table: this.table,
46
+ items
47
+ });
48
+ }
49
+ }
50
+ exports.Manager = Manager;
51
+
52
+ //# sourceMappingURL=Manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_clientDynamodb","require","_apiElasticsearch","_definitions","_entry","_dbDynamodb","Manager","entities","constructor","params","context","documentClient","getDocumentClient","elasticsearch","elasticsearchClient","createElasticsearchClient","endpoint","process","env","ELASTIC_SEARCH_ENDPOINT","table","createTable","isCloseToTimeout","isAborted","response","store","getEntity","name","createEntry","entityName","read","items","batchReadAll","write","batchWriteAll","exports"],"sources":["Manager.ts"],"sourcesContent":["import { DynamoDBDocument, getDocumentClient } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Client, createElasticsearchClient } from \"@webiny/api-elasticsearch\";\nimport { createTable } from \"~/definitions\";\nimport { Context, IElasticsearchIndexingTaskValues, IManager } from \"~/types\";\nimport { createEntry } from \"~/definitions/entry\";\nimport { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { ITaskResponse } from \"@webiny/tasks/response/abstractions\";\nimport { ITaskManagerStore } from \"@webiny/tasks/runner/abstractions\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n BatchWriteResult\n} from \"@webiny/db-dynamodb\";\n\nexport interface ManagerParams {\n context: Context;\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n isCloseToTimeout: () => boolean;\n isAborted: () => boolean;\n response: ITaskResponse;\n store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;\n}\n\nexport class Manager implements IManager {\n public readonly documentClient: DynamoDBDocument;\n public readonly elasticsearch: Client;\n public readonly context: Context;\n public readonly table: ReturnType<typeof createTable>;\n public readonly isCloseToTimeout: () => boolean;\n public readonly isAborted: () => boolean;\n public readonly response: ITaskResponse;\n public readonly store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;\n\n private readonly entities: Record<string, Entity<any>> = {};\n\n public constructor(params: ManagerParams) {\n this.context = params.context;\n this.documentClient = params?.documentClient || getDocumentClient();\n\n this.elasticsearch =\n params?.elasticsearchClient ||\n params.context.elasticsearch ||\n createElasticsearchClient({\n endpoint: `https://${process.env.ELASTIC_SEARCH_ENDPOINT}`\n });\n\n this.table = createTable({\n documentClient: this.documentClient\n });\n this.isCloseToTimeout = params.isCloseToTimeout;\n this.isAborted = params.isAborted;\n this.response = params.response;\n this.store = params.store;\n }\n\n public getEntity(name: string): Entity<any> {\n if (this.entities[name]) {\n return this.entities[name];\n }\n\n return (this.entities[name] = createEntry({\n table: this.table,\n entityName: name\n }));\n }\n\n public async read<T>(items: BatchReadItem[]) {\n return await batchReadAll<T>({\n table: this.table,\n items\n });\n }\n\n public async write(items: BatchWriteItem[]): Promise<BatchWriteResult> {\n return await batchWriteAll({\n table: this.table,\n items\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAIA,IAAAI,WAAA,GAAAJ,OAAA;AAkBO,MAAMK,OAAO,CAAqB;EAUpBC,QAAQ,GAAgC,CAAC,CAAC;EAEpDC,WAAWA,CAACC,MAAqB,EAAE;IACtC,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,cAAc,GAAGF,MAAM,EAAEE,cAAc,IAAI,IAAAC,iCAAiB,EAAC,CAAC;IAEnE,IAAI,CAACC,aAAa,GACdJ,MAAM,EAAEK,mBAAmB,IAC3BL,MAAM,CAACC,OAAO,CAACG,aAAa,IAC5B,IAAAE,2CAAyB,EAAC;MACtBC,QAAQ,EAAG,WAAUC,OAAO,CAACC,GAAG,CAACC,uBAAwB;IAC7D,CAAC,CAAC;IAEN,IAAI,CAACC,KAAK,GAAG,IAAAC,wBAAW,EAAC;MACrBV,cAAc,EAAE,IAAI,CAACA;IACzB,CAAC,CAAC;IACF,IAAI,CAACW,gBAAgB,GAAGb,MAAM,CAACa,gBAAgB;IAC/C,IAAI,CAACC,SAAS,GAAGd,MAAM,CAACc,SAAS;IACjC,IAAI,CAACC,QAAQ,GAAGf,MAAM,CAACe,QAAQ;IAC/B,IAAI,CAACC,KAAK,GAAGhB,MAAM,CAACgB,KAAK;EAC7B;EAEOC,SAASA,CAACC,IAAY,EAAe;IACxC,IAAI,IAAI,CAACpB,QAAQ,CAACoB,IAAI,CAAC,EAAE;MACrB,OAAO,IAAI,CAACpB,QAAQ,CAACoB,IAAI,CAAC;IAC9B;IAEA,OAAQ,IAAI,CAACpB,QAAQ,CAACoB,IAAI,CAAC,GAAG,IAAAC,kBAAW,EAAC;MACtCR,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBS,UAAU,EAAEF;IAChB,CAAC,CAAC;EACN;EAEA,MAAaG,IAAIA,CAAIC,KAAsB,EAAE;IACzC,OAAO,MAAM,IAAAC,wBAAY,EAAI;MACzBZ,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBW;IACJ,CAAC,CAAC;EACN;EAEA,MAAaE,KAAKA,CAACF,KAAuB,EAA6B;IACnE,OAAO,MAAM,IAAAG,yBAAa,EAAC;MACvBd,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBW;IACJ,CAAC,CAAC;EACN;AACJ;AAACI,OAAA,CAAA7B,OAAA,GAAAA,OAAA"}
@@ -0,0 +1 @@
1
+ export * from "./reindexing";
package/tasks/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _reindexing = require("./reindexing");
7
+ Object.keys(_reindexing).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _reindexing[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _reindexing[key];
14
+ }
15
+ });
16
+ });
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reindexing","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["export * from \"./reindexing\";\n"],"mappings":";;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,16 @@
1
+ import { IElasticsearchIndexingTaskValuesKeys, IManager } from "../../types";
2
+ import { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
3
+ import { 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, 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
+ }
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ReindexingTaskRunner = void 0;
7
+ var _scan = require("../../helpers/scan");
8
+ const getKeys = results => {
9
+ if (results.lastEvaluatedKey?.PK && results.lastEvaluatedKey?.SK) {
10
+ return {
11
+ PK: results.lastEvaluatedKey.PK,
12
+ SK: results.lastEvaluatedKey.SK
13
+ };
14
+ }
15
+ return undefined;
16
+ };
17
+ class ReindexingTaskRunner {
18
+ constructor(manager, indexManager) {
19
+ this.manager = manager;
20
+ this.response = manager.response;
21
+ this.indexManager = indexManager;
22
+ }
23
+
24
+ /**
25
+ * When running the task, we always must check:
26
+ * * if task is close to timeout
27
+ * * if task was aborted
28
+ */
29
+ async exec(keys = undefined, limit = 200) {
30
+ this.keys = keys;
31
+ const isIndexAllowed = index => {
32
+ const input = this.manager.store.getInput();
33
+ if (typeof input.matching !== "string" || !input.matching) {
34
+ return true;
35
+ }
36
+ return index.includes(input.matching);
37
+ };
38
+ try {
39
+ while (this.manager.isCloseToTimeout() === false) {
40
+ if (this.manager.isAborted()) {
41
+ return this.response.aborted();
42
+ }
43
+ const results = await (0, _scan.scan)({
44
+ table: this.manager.table,
45
+ keys: this.keys,
46
+ options: {
47
+ limit
48
+ }
49
+ });
50
+ if (results.items.length === 0) {
51
+ await this.indexManager.enableIndexing();
52
+ return this.response.done("No more items to process.");
53
+ }
54
+ const batch = [];
55
+ for (const item of results.items) {
56
+ /**
57
+ * No index defined? Impossible but let's skip if really happens.
58
+ */
59
+ if (!item.index) {
60
+ continue;
61
+ }
62
+ if (isIndexAllowed(item.index) === false) {
63
+ continue;
64
+ }
65
+ /**
66
+ * Is there a possibility that entityName does not exist? What do we do at that point?
67
+ */
68
+ const entityName = item._et || item.entity;
69
+ /**
70
+ * Let's skip for now.
71
+ */
72
+ if (!entityName) {
73
+ continue;
74
+ }
75
+ const entity = this.manager.getEntity(entityName);
76
+ /**
77
+ * Disable the indexing for the current index.
78
+ * Method does nothing if indexing is already disabled.
79
+ */
80
+ await this.indexManager.disableIndexing(item.index);
81
+ /**
82
+ * Reindexing will be triggered by the `putBatch` method.
83
+ */
84
+ batch.push(entity.putBatch({
85
+ ...item,
86
+ modified: new Date().toISOString()
87
+ }));
88
+ }
89
+ await this.manager.write(batch);
90
+ /**
91
+ * We always store the index settings, so we can restore them later.
92
+ * Also, we always want to store what was the last key we processed, just in case something breaks, so we can continue from this point.
93
+ */
94
+ this.keys = getKeys(results);
95
+ await this.manager.store.updateInput({
96
+ settings: this.indexManager.settings,
97
+ keys: this.keys
98
+ });
99
+ /**
100
+ * We want to make sure that, if there are no last evaluated keys, we enable indexing.
101
+ */
102
+ if (!this.keys) {
103
+ await this.indexManager.enableIndexing();
104
+ return this.response.done("No more items to process - no last evaluated keys.");
105
+ }
106
+ }
107
+ return this.response.continue({
108
+ keys: this.keys
109
+ });
110
+ } catch (ex) {
111
+ /**
112
+ * We want to enable indexing if there was an error.
113
+ */
114
+ try {
115
+ await this.indexManager.enableIndexing();
116
+ } catch (er) {
117
+ er.data = ex;
118
+ return this.response.error(er);
119
+ }
120
+ return this.response.error(ex);
121
+ }
122
+ }
123
+ }
124
+ exports.ReindexingTaskRunner = ReindexingTaskRunner;
125
+
126
+ //# sourceMappingURL=ReindexingTaskRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_scan","require","getKeys","results","lastEvaluatedKey","PK","SK","undefined","ReindexingTaskRunner","constructor","manager","indexManager","response","exec","keys","limit","isIndexAllowed","index","input","store","getInput","matching","includes","isCloseToTimeout","isAborted","aborted","scan","table","options","items","length","enableIndexing","done","batch","item","entityName","_et","entity","getEntity","disableIndexing","push","putBatch","modified","Date","toISOString","write","updateInput","settings","continue","ex","er","data","error","exports"],"sources":["ReindexingTaskRunner.ts"],"sourcesContent":["import {\n IDynamoDbElasticsearchRecord,\n IElasticsearchIndexingTaskValuesKeys,\n IManager\n} from \"~/types\";\nimport { ITaskResponse, ITaskResponseResult } from \"@webiny/tasks/response/abstractions\";\nimport { scan } from \"~/helpers/scan\";\nimport { BatchWriteItem, ScanResponse } from \"@webiny/db-dynamodb\";\nimport { IndexManager } from \"~/settings\";\nimport { IIndexManager } from \"~/settings/types\";\n\nconst getKeys = (results: ScanResponse): IElasticsearchIndexingTaskValuesKeys | undefined => {\n if (results.lastEvaluatedKey?.PK && results.lastEvaluatedKey?.SK) {\n return {\n PK: results.lastEvaluatedKey.PK as unknown as string,\n SK: results.lastEvaluatedKey.SK as unknown as string\n };\n }\n return undefined;\n};\n\nexport class ReindexingTaskRunner {\n private readonly manager: IManager;\n private keys?: IElasticsearchIndexingTaskValuesKeys;\n\n private readonly indexManager: IIndexManager;\n private readonly response: ITaskResponse;\n\n public constructor(manager: IManager, indexManager: IndexManager) {\n this.manager = manager;\n this.response = manager.response;\n this.indexManager = indexManager;\n }\n\n /**\n * When running the task, we always must check:\n * * if task is close to timeout\n * * if task was aborted\n */\n public async exec(\n keys: IElasticsearchIndexingTaskValuesKeys | undefined = undefined,\n limit = 200\n ): Promise<ITaskResponseResult> {\n this.keys = keys;\n\n const isIndexAllowed = (index: string): boolean => {\n const input = this.manager.store.getInput();\n if (typeof input.matching !== \"string\" || !input.matching) {\n return true;\n }\n return index.includes(input.matching);\n };\n\n try {\n while (this.manager.isCloseToTimeout() === false) {\n if (this.manager.isAborted()) {\n return this.response.aborted();\n }\n\n const results = await scan<IDynamoDbElasticsearchRecord>({\n table: this.manager.table,\n keys: this.keys,\n options: {\n limit\n }\n });\n if (results.items.length === 0) {\n await this.indexManager.enableIndexing();\n return this.response.done(\"No more items to process.\");\n }\n\n const batch: BatchWriteItem[] = [];\n for (const item of results.items) {\n /**\n * No index defined? Impossible but let's skip if really happens.\n */\n if (!item.index) {\n continue;\n }\n if (isIndexAllowed(item.index) === false) {\n continue;\n }\n /**\n * Is there a possibility that entityName does not exist? What do we do at that point?\n */\n const entityName = item._et || item.entity;\n /**\n * Let's skip for now.\n */\n if (!entityName) {\n continue;\n }\n const entity = this.manager.getEntity(entityName);\n /**\n * Disable the indexing for the current index.\n * Method does nothing if indexing is already disabled.\n */\n await this.indexManager.disableIndexing(item.index);\n /**\n * Reindexing will be triggered by the `putBatch` method.\n */\n batch.push(\n entity.putBatch({\n ...item,\n modified: new Date().toISOString()\n })\n );\n }\n await this.manager.write(batch);\n /**\n * We always store the index settings, so we can restore them later.\n * Also, we always want to store what was the last key we processed, just in case something breaks, so we can continue from this point.\n */\n this.keys = getKeys(results);\n await this.manager.store.updateInput({\n settings: this.indexManager.settings,\n keys: this.keys\n });\n /**\n * We want to make sure that, if there are no last evaluated keys, we enable indexing.\n */\n if (!this.keys) {\n await this.indexManager.enableIndexing();\n return this.response.done(\"No more items to process - no last evaluated keys.\");\n }\n }\n return this.response.continue({\n keys: this.keys\n });\n } catch (ex) {\n /**\n * We want to enable indexing if there was an error.\n */\n try {\n await this.indexManager.enableIndexing();\n } catch (er) {\n er.data = ex;\n return this.response.error(er);\n }\n return this.response.error(ex);\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./reindexingTaskDefinition";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _reindexingTaskDefinition = require("./reindexingTaskDefinition");
7
+ Object.keys(_reindexingTaskDefinition).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _reindexingTaskDefinition[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _reindexingTaskDefinition[key];
14
+ }
15
+ });
16
+ });
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reindexingTaskDefinition","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["export * from \"./reindexingTaskDefinition\";\n"],"mappings":";;;;;AAAA,IAAAA,yBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,yBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,yBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,yBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,8 @@
1
+ import { Context, IElasticsearchIndexingTaskValues } from "../../types";
2
+ import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
3
+ import { Client } from "@webiny/api-elasticsearch";
4
+ export interface CreateElasticsearchIndexTaskConfig {
5
+ documentClient?: DynamoDBDocument;
6
+ elasticsearchClient?: Client;
7
+ }
8
+ export declare const createElasticsearchReindexingTask: (params?: CreateElasticsearchIndexTaskConfig) => import("@webiny/tasks").TaskDefinitionPlugin<Context, IElasticsearchIndexingTaskValues>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createElasticsearchReindexingTask = void 0;
7
+ var _tasks = require("@webiny/tasks");
8
+ const createElasticsearchReindexingTask = params => {
9
+ return (0, _tasks.createTaskDefinition)({
10
+ id: "elasticsearchReindexing",
11
+ title: "Elasticsearch reindexing",
12
+ run: async ({
13
+ context,
14
+ isCloseToTimeout,
15
+ response,
16
+ input,
17
+ isAborted,
18
+ store
19
+ }) => {
20
+ const {
21
+ Manager
22
+ } = await import("../Manager");
23
+ const {
24
+ IndexManager
25
+ } = await import("../../settings");
26
+ const {
27
+ ReindexingTaskRunner
28
+ } = await import("./ReindexingTaskRunner");
29
+ const manager = new Manager({
30
+ elasticsearchClient: params?.elasticsearchClient,
31
+ documentClient: params?.documentClient,
32
+ response,
33
+ context,
34
+ isAborted,
35
+ isCloseToTimeout,
36
+ store
37
+ });
38
+ const indexManager = new IndexManager(manager.elasticsearch, input.settings || {});
39
+ const reindexing = new ReindexingTaskRunner(manager, indexManager);
40
+ const keys = input.keys || undefined;
41
+ return reindexing.exec(keys, 200);
42
+ }
43
+ });
44
+ };
45
+ exports.createElasticsearchReindexingTask = createElasticsearchReindexingTask;
46
+
47
+ //# sourceMappingURL=reindexingTaskDefinition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_tasks","require","createElasticsearchReindexingTask","params","createTaskDefinition","id","title","run","context","isCloseToTimeout","response","input","isAborted","store","Manager","IndexManager","ReindexingTaskRunner","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","settings","reindexing","keys","undefined","exec","exports"],"sources":["reindexingTaskDefinition.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchIndexingTaskValues } from \"~/types\";\nimport { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Client } from \"@webiny/api-elasticsearch\";\n\nexport interface CreateElasticsearchIndexTaskConfig {\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n}\n\nexport const createElasticsearchReindexingTask = (params?: CreateElasticsearchIndexTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchIndexingTaskValues>({\n id: \"elasticsearchReindexing\",\n title: \"Elasticsearch reindexing\",\n run: async ({ context, isCloseToTimeout, response, input, isAborted, store }) => {\n const { Manager } = await import(\"../Manager\");\n const { IndexManager } = await import(\"~/settings\");\n const { ReindexingTaskRunner } = await import(\"./ReindexingTaskRunner\");\n\n const manager = new Manager({\n elasticsearchClient: params?.elasticsearchClient,\n documentClient: params?.documentClient,\n response,\n context,\n isAborted,\n isCloseToTimeout,\n store\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, input.settings || {});\n const reindexing = new ReindexingTaskRunner(manager, indexManager);\n\n const keys = input.keys || undefined;\n return reindexing.exec(keys, 200);\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAUO,MAAMC,iCAAiC,GAAIC,MAA2C,IAAK;EAC9F,OAAO,IAAAC,2BAAoB,EAA4C;IACnEC,EAAE,EAAE,yBAAyB;IAC7BC,KAAK,EAAE,0BAA0B;IACjCC,GAAG,EAAE,MAAAA,CAAO;MAAEC,OAAO;MAAEC,gBAAgB;MAAEC,QAAQ;MAAEC,KAAK;MAAEC,SAAS;MAAEC;IAAM,CAAC,KAAK;MAC7E,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,aAAa,CAAC;MAC9C,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,iBAAa,CAAC;MACnD,MAAM;QAAEC;MAAqB,CAAC,GAAG,MAAM,MAAM,yBAAyB,CAAC;MAEvE,MAAMC,OAAO,GAAG,IAAIH,OAAO,CAAC;QACxBI,mBAAmB,EAAEf,MAAM,EAAEe,mBAAmB;QAChDC,cAAc,EAAEhB,MAAM,EAAEgB,cAAc;QACtCT,QAAQ;QACRF,OAAO;QACPI,SAAS;QACTH,gBAAgB;QAChBI;MACJ,CAAC,CAAC;MAEF,MAAMO,YAAY,GAAG,IAAIL,YAAY,CAACE,OAAO,CAACI,aAAa,EAAEV,KAAK,CAACW,QAAQ,IAAI,CAAC,CAAC,CAAC;MAClF,MAAMC,UAAU,GAAG,IAAIP,oBAAoB,CAACC,OAAO,EAAEG,YAAY,CAAC;MAElE,MAAMI,IAAI,GAAGb,KAAK,CAACa,IAAI,IAAIC,SAAS;MACpC,OAAOF,UAAU,CAACG,IAAI,CAACF,IAAI,EAAE,GAAG,CAAC;IACrC;EACJ,CAAC,CAAC;AACN,CAAC;AAACG,OAAA,CAAAzB,iCAAA,GAAAA,iCAAA"}
package/types.d.ts ADDED
@@ -0,0 +1,52 @@
1
+ import { ElasticsearchContext } from "@webiny/api-elasticsearch/types";
2
+ import { Entity } from "@webiny/db-dynamodb/toolbox";
3
+ import { Context as TasksContext } from "@webiny/tasks/types";
4
+ import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
5
+ import { Client } from "@webiny/api-elasticsearch";
6
+ import { createTable } from "./definitions";
7
+ import { ITaskResponse } from "@webiny/tasks/response/abstractions";
8
+ import { ITaskManagerStore } from "@webiny/tasks/runner/abstractions";
9
+ import { BatchWriteItem, BatchWriteResult } from "@webiny/db-dynamodb";
10
+ export interface Context extends ElasticsearchContext, TasksContext {
11
+ }
12
+ export interface IElasticsearchIndexingTaskValuesKeys {
13
+ PK: string;
14
+ SK: string;
15
+ }
16
+ export interface IIndexSettingsValues {
17
+ numberOfReplicas: number;
18
+ refreshInterval: string;
19
+ }
20
+ export interface IElasticsearchIndexingTaskValuesSettings {
21
+ [key: string]: IIndexSettingsValues;
22
+ }
23
+ export interface IElasticsearchIndexingTaskValues {
24
+ matching?: string;
25
+ keys?: IElasticsearchIndexingTaskValuesKeys;
26
+ settings?: IElasticsearchIndexingTaskValuesSettings;
27
+ }
28
+ export interface AugmentedError extends Error {
29
+ data?: Record<string, any>;
30
+ [key: string]: any;
31
+ }
32
+ export interface IDynamoDbElasticsearchRecord {
33
+ PK: string;
34
+ SK: string;
35
+ index: string;
36
+ _et?: string;
37
+ entity: string;
38
+ data: Record<string, any>;
39
+ modified: string;
40
+ }
41
+ export interface IManager {
42
+ readonly documentClient: DynamoDBDocument;
43
+ readonly elasticsearch: Client;
44
+ readonly context: Context;
45
+ readonly table: ReturnType<typeof createTable>;
46
+ readonly isCloseToTimeout: () => boolean;
47
+ readonly isAborted: () => boolean;
48
+ readonly response: ITaskResponse;
49
+ readonly store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;
50
+ getEntity: (name: string) => Entity<any>;
51
+ write: (items: BatchWriteItem[]) => Promise<BatchWriteResult>;
52
+ }
package/types.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ //# sourceMappingURL=types.js.map
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { ElasticsearchContext } from \"@webiny/api-elasticsearch/types\";\nimport { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { Context as TasksContext } from \"@webiny/tasks/types\";\nimport { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Client } from \"@webiny/api-elasticsearch\";\nimport { createTable } from \"~/definitions\";\nimport { ITaskResponse } from \"@webiny/tasks/response/abstractions\";\nimport { ITaskManagerStore } from \"@webiny/tasks/runner/abstractions\";\nimport { BatchWriteItem, BatchWriteResult } from \"@webiny/db-dynamodb\";\n\nexport interface Context extends ElasticsearchContext, TasksContext {}\n\nexport interface IElasticsearchIndexingTaskValuesKeys {\n PK: string;\n SK: string;\n}\n\nexport interface IIndexSettingsValues {\n numberOfReplicas: number;\n refreshInterval: string;\n}\n\nexport interface IElasticsearchIndexingTaskValuesSettings {\n [key: string]: IIndexSettingsValues;\n}\n\nexport interface IElasticsearchIndexingTaskValues {\n matching?: string;\n keys?: IElasticsearchIndexingTaskValuesKeys;\n settings?: IElasticsearchIndexingTaskValuesSettings;\n}\n\nexport interface AugmentedError extends Error {\n data?: Record<string, any>;\n [key: string]: any;\n}\n\nexport interface IDynamoDbElasticsearchRecord {\n PK: string;\n SK: string;\n index: string;\n _et?: string;\n entity: string;\n data: Record<string, any>;\n modified: string;\n}\n\nexport interface IManager {\n readonly documentClient: DynamoDBDocument;\n readonly elasticsearch: Client;\n readonly context: Context;\n readonly table: ReturnType<typeof createTable>;\n readonly isCloseToTimeout: () => boolean;\n readonly isAborted: () => boolean;\n readonly response: ITaskResponse;\n readonly store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;\n\n getEntity: (name: string) => Entity<any>;\n\n write: (items: BatchWriteItem[]) => Promise<BatchWriteResult>;\n}\n"],"mappings":""}