@webiny/api-elasticsearch-tasks 5.41.1 → 5.41.2-beta.1

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 (75) hide show
  1. package/definitions/entry.d.ts +2 -2
  2. package/definitions/entry.js.map +1 -1
  3. package/definitions/table.d.ts +2 -2
  4. package/definitions/table.js.map +1 -1
  5. package/helpers/scan.d.ts +3 -3
  6. package/helpers/scan.js +2 -2
  7. package/helpers/scan.js.map +1 -1
  8. package/index.js +1 -1
  9. package/index.js.map +1 -1
  10. package/package.json +30 -21
  11. package/settings/IndexManager.d.ts +3 -0
  12. package/settings/IndexManager.js +12 -1
  13. package/settings/IndexManager.js.map +1 -1
  14. package/tasks/Manager.d.ts +12 -9
  15. package/tasks/Manager.js +1 -0
  16. package/tasks/Manager.js.map +1 -1
  17. package/tasks/createIndexes/CreateIndexesTaskRunner.d.ts +2 -1
  18. package/tasks/createIndexes/CreateIndexesTaskRunner.js.map +1 -1
  19. package/tasks/createIndexes/index.js +6 -4
  20. package/tasks/createIndexes/index.js.map +1 -1
  21. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.d.ts +15 -0
  22. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js +55 -0
  23. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js.map +1 -0
  24. package/tasks/dataSynchronization/createFactories.d.ts +2 -0
  25. package/tasks/dataSynchronization/createFactories.js +17 -0
  26. package/tasks/dataSynchronization/createFactories.js.map +1 -0
  27. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.d.ts +10 -0
  28. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js +98 -0
  29. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js.map +1 -0
  30. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.d.ts +14 -0
  31. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js +76 -0
  32. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js.map +1 -0
  33. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.d.ts +10 -0
  34. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js +77 -0
  35. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js.map +1 -0
  36. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.d.ts +21 -0
  37. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js +7 -0
  38. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js.map +1 -0
  39. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.d.ts +17 -0
  40. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js +7 -0
  41. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js.map +1 -0
  42. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.d.ts +2 -0
  43. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js +13 -0
  44. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -0
  45. package/tasks/dataSynchronization/entities/getElasticsearchEntity.d.ts +713 -0
  46. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js +46 -0
  47. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js.map +1 -0
  48. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.d.ts +11 -0
  49. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js +29 -0
  50. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js.map +1 -0
  51. package/tasks/dataSynchronization/entities/getTable.d.ts +7 -0
  52. package/tasks/dataSynchronization/entities/getTable.js +29 -0
  53. package/tasks/dataSynchronization/entities/getTable.js.map +1 -0
  54. package/tasks/dataSynchronization/entities/index.d.ts +3 -0
  55. package/tasks/dataSynchronization/entities/index.js +40 -0
  56. package/tasks/dataSynchronization/entities/index.js.map +1 -0
  57. package/tasks/dataSynchronization/index.d.ts +4 -0
  58. package/tasks/dataSynchronization/index.js +80 -0
  59. package/tasks/dataSynchronization/index.js.map +1 -0
  60. package/tasks/dataSynchronization/types.d.ts +38 -0
  61. package/tasks/dataSynchronization/types.js +7 -0
  62. package/tasks/dataSynchronization/types.js.map +1 -0
  63. package/tasks/enableIndexing/EnableIndexingTaskRunner.d.ts +2 -1
  64. package/tasks/enableIndexing/EnableIndexingTaskRunner.js.map +1 -1
  65. package/tasks/enableIndexing/index.js +7 -5
  66. package/tasks/enableIndexing/index.js.map +1 -1
  67. package/tasks/index.d.ts +1 -0
  68. package/tasks/index.js +11 -0
  69. package/tasks/index.js.map +1 -1
  70. package/tasks/reindexing/ReindexingTaskRunner.d.ts +2 -2
  71. package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -1
  72. package/tasks/reindexing/reindexingTaskDefinition.js +7 -5
  73. package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -1
  74. package/types.d.ts +7 -5
  75. package/types.js.map +1 -1
@@ -1,6 +1,6 @@
1
- import { Entity, Table } from "@webiny/db-dynamodb/toolbox";
1
+ import { Entity, TableDef } from "@webiny/db-dynamodb/toolbox";
2
2
  interface Params {
3
- table: Table<string, string, string>;
3
+ table: TableDef;
4
4
  entityName: string;
5
5
  }
6
6
  export declare const createEntry: (params: Params) => Entity<any>;
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","createEntry","params","table","entityName","Entity","name","attributes","PK","type","partitionKey","SK","sortKey","index","data","exports"],"sources":["entry.ts"],"sourcesContent":["import { Entity, Table } from \"@webiny/db-dynamodb/toolbox\";\n\ninterface Params {\n table: Table<string, string, string>;\n entityName: string;\n}\n\nexport const createEntry = (params: Params): Entity<any> => {\n const { table, entityName } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAOO,MAAMC,WAAW,GAAIC,MAAc,IAAkB;EACxD,MAAM;IAAEC,KAAK;IAAEC;EAAW,CAAC,GAAGF,MAAM;EACpC,OAAO,IAAIG,eAAM,CAAC;IACdC,IAAI,EAAEF,UAAU;IAChBD,KAAK;IACLI,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,IAAI,EAAE,QAAQ;QACdC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAF,IAAI,EAAE,QAAQ;QACdG,OAAO,EAAE;MACb,CAAC;MACDC,KAAK,EAAE;QACHJ,IAAI,EAAE;MACV,CAAC;MACDK,IAAI,EAAE;QACFL,IAAI,EAAE;MACV;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAACM,OAAA,CAAAd,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","createEntry","params","table","entityName","Entity","name","attributes","PK","type","partitionKey","SK","sortKey","index","data","exports"],"sources":["entry.ts"],"sourcesContent":["import { Entity, TableDef } from \"@webiny/db-dynamodb/toolbox\";\n\ninterface Params {\n table: TableDef;\n entityName: string;\n}\n\nexport const createEntry = (params: Params): Entity<any> => {\n const { table, entityName } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n type: \"string\",\n partitionKey: true\n },\n SK: {\n type: \"string\",\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n }\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAOO,MAAMC,WAAW,GAAIC,MAAc,IAAkB;EACxD,MAAM;IAAEC,KAAK;IAAEC;EAAW,CAAC,GAAGF,MAAM;EACpC,OAAO,IAAIG,eAAM,CAAC;IACdC,IAAI,EAAEF,UAAU;IAChBD,KAAK;IACLI,UAAU,EAAE;MACRC,EAAE,EAAE;QACAC,IAAI,EAAE,QAAQ;QACdC,YAAY,EAAE;MAClB,CAAC;MACDC,EAAE,EAAE;QACAF,IAAI,EAAE,QAAQ;QACdG,OAAO,EAAE;MACb,CAAC;MACDC,KAAK,EAAE;QACHJ,IAAI,EAAE;MACV,CAAC;MACDK,IAAI,EAAE;QACFL,IAAI,EAAE;MACV;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAACM,OAAA,CAAAd,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
- import { Table } from "@webiny/db-dynamodb/toolbox";
2
+ import { TableDef } from "@webiny/db-dynamodb/toolbox";
3
3
  interface Params {
4
4
  documentClient: DynamoDBDocument;
5
5
  }
6
- export declare const createTable: ({ documentClient }: Params) => Table<string, string, string>;
6
+ export declare const createTable: ({ documentClient }: Params) => TableDef;
7
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"names":["_toolbox","require","createTable","documentClient","config","name","process","env","DB_TABLE_ELASTICSEARCH","partitionKey","sortKey","DocumentClient","autoExecute","autoParse","Table","exports"],"sources":["table.ts"],"sourcesContent":["import { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Table, TableConstructor } from \"@webiny/db-dynamodb/toolbox\";\n\ninterface Params {\n documentClient: DynamoDBDocument;\n}\n\nexport const createTable = ({ documentClient }: Params): Table<string, string, string> => {\n const config: TableConstructor<string, string, string> = {\n name: process.env.DB_TABLE_ELASTICSEARCH as string,\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n autoExecute: true,\n autoParse: true\n };\n\n return new Table(config);\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAMO,MAAMC,WAAW,GAAGA,CAAC;EAAEC;AAAuB,CAAC,KAAoC;EACtF,MAAMC,MAAgD,GAAG;IACrDC,IAAI,EAAEC,OAAO,CAACC,GAAG,CAACC,sBAAgC;IAClDC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE,IAAI;IACbC,cAAc,EAAER,cAAc;IAC9BS,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACf,CAAC;EAED,OAAO,IAAIC,cAAK,CAACV,MAAM,CAAC;AAC5B,CAAC;AAACW,OAAA,CAAAb,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toolbox","require","createTable","documentClient","config","name","process","env","DB_TABLE_ELASTICSEARCH","partitionKey","sortKey","DocumentClient","autoExecute","autoParse","Table","exports"],"sources":["table.ts"],"sourcesContent":["import { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { Table, TableConstructor, TableDef } from \"@webiny/db-dynamodb/toolbox\";\n\ninterface Params {\n documentClient: DynamoDBDocument;\n}\n\nexport const createTable = ({ documentClient }: Params): TableDef => {\n const config: TableConstructor<string, string, string> = {\n name: process.env.DB_TABLE_ELASTICSEARCH as string,\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient,\n autoExecute: true,\n autoParse: true\n };\n\n return new Table(config);\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAMO,MAAMC,WAAW,GAAGA,CAAC;EAAEC;AAAuB,CAAC,KAAe;EACjE,MAAMC,MAAgD,GAAG;IACrDC,IAAI,EAAEC,OAAO,CAACC,GAAG,CAACC,sBAAgC;IAClDC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE,IAAI;IACbC,cAAc,EAAER,cAAc;IAC9BS,WAAW,EAAE,IAAI;IACjBC,SAAS,EAAE;EACf,CAAC;EAED,OAAO,IAAIC,cAAK,CAACV,MAAM,CAAC;AAC5B,CAAC;AAACW,OAAA,CAAAb,WAAA,GAAAA,WAAA","ignoreList":[]}
package/helpers/scan.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { ScanOptions } from "@webiny/db-dynamodb";
2
- import { Table } from "@webiny/db-dynamodb/toolbox";
2
+ import { TableDef } from "@webiny/db-dynamodb/toolbox";
3
3
  import { IElasticsearchIndexingTaskValuesKeys } from "../types";
4
4
  interface Params {
5
- table: Table<string, string, string>;
5
+ table: TableDef;
6
6
  keys?: IElasticsearchIndexingTaskValuesKeys;
7
- options?: Pick<ScanOptions, "limit">;
7
+ options?: ScanOptions;
8
8
  }
9
9
  export declare const scan: <T = any>(params: Params) => Promise<import("@webiny/db-dynamodb").ScanResponse<T>>;
10
10
  export {};
package/helpers/scan.js CHANGED
@@ -13,9 +13,9 @@ const scan = async params => {
13
13
  return (0, _dbDynamodb.scan)({
14
14
  table,
15
15
  options: {
16
+ ...params.options,
16
17
  startKey: keys,
17
- limit: 200,
18
- ...params.options
18
+ limit: params.options?.limit || 200
19
19
  }
20
20
  });
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_dbDynamodb","require","scan","params","table","keys","tableScan","options","startKey","limit","exports"],"sources":["scan.ts"],"sourcesContent":["import { scan as tableScan, ScanOptions } from \"@webiny/db-dynamodb\";\nimport { Table } from \"@webiny/db-dynamodb/toolbox\";\nimport { IElasticsearchIndexingTaskValuesKeys } from \"~/types\";\n\ninterface Params {\n table: Table<string, string, string>;\n keys?: IElasticsearchIndexingTaskValuesKeys;\n options?: Pick<ScanOptions, \"limit\">;\n}\n\nexport const scan = async <T = any>(params: Params) => {\n const { table, keys } = params;\n return tableScan<T>({\n table,\n options: {\n startKey: keys,\n limit: 200,\n ...params.options\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAUO,MAAMC,IAAI,GAAG,MAAgBC,MAAc,IAAK;EACnD,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAC9B,OAAO,IAAAG,gBAAS,EAAI;IAChBF,KAAK;IACLG,OAAO,EAAE;MACLC,QAAQ,EAAEH,IAAI;MACdI,KAAK,EAAE,GAAG;MACV,GAAGN,MAAM,CAACI;IACd;EACJ,CAAC,CAAC;AACN,CAAC;AAACG,OAAA,CAAAR,IAAA,GAAAA,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["_dbDynamodb","require","scan","params","table","keys","tableScan","options","startKey","limit","exports"],"sources":["scan.ts"],"sourcesContent":["import { scan as tableScan, ScanOptions } from \"@webiny/db-dynamodb\";\nimport { TableDef } from \"@webiny/db-dynamodb/toolbox\";\nimport { IElasticsearchIndexingTaskValuesKeys } from \"~/types\";\n\ninterface Params {\n table: TableDef;\n keys?: IElasticsearchIndexingTaskValuesKeys;\n options?: ScanOptions;\n}\n\nexport const scan = async <T = any>(params: Params) => {\n const { table, keys } = params;\n return tableScan<T>({\n table,\n options: {\n ...params.options,\n startKey: keys,\n limit: params.options?.limit || 200\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAUO,MAAMC,IAAI,GAAG,MAAgBC,MAAc,IAAK;EACnD,MAAM;IAAEC,KAAK;IAAEC;EAAK,CAAC,GAAGF,MAAM;EAC9B,OAAO,IAAAG,gBAAS,EAAI;IAChBF,KAAK;IACLG,OAAO,EAAE;MACL,GAAGJ,MAAM,CAACI,OAAO;MACjBC,QAAQ,EAAEH,IAAI;MACdI,KAAK,EAAEN,MAAM,CAACI,OAAO,EAAEE,KAAK,IAAI;IACpC;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAR,IAAA,GAAAA,IAAA","ignoreList":[]}
package/index.js CHANGED
@@ -21,7 +21,7 @@ Object.keys(_CreateElasticsearchIndexTaskPlugin).forEach(function (key) {
21
21
  });
22
22
  });
23
23
  const createElasticsearchBackgroundTasks = params => {
24
- return [(0, _tasks.createElasticsearchReindexingTask)(params), (0, _tasks.createEnableIndexingTask)(params), (0, _tasks.createIndexesTaskDefinition)(params)];
24
+ return [(0, _tasks.createElasticsearchReindexingTask)(params), (0, _tasks.createEnableIndexingTask)(params), (0, _tasks.createIndexesTaskDefinition)(params), (0, _tasks.createDataSynchronization)(params)];
25
25
  };
26
26
  exports.createElasticsearchBackgroundTasks = createElasticsearchBackgroundTasks;
27
27
 
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","_CreateElasticsearchIndexTaskPlugin","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","createElasticsearchBackgroundTasks","params","createElasticsearchReindexingTask","createEnableIndexingTask","createIndexesTaskDefinition"],"sources":["index.ts"],"sourcesContent":["import {\n createElasticsearchReindexingTask,\n createEnableIndexingTask,\n createIndexesTaskDefinition\n} from \"~/tasks\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { IElasticsearchTaskConfig } from \"~/types\";\n\nexport type CreateElasticsearchBackgroundTasksParams = IElasticsearchTaskConfig;\n\nexport const createElasticsearchBackgroundTasks = (\n params?: CreateElasticsearchBackgroundTasksParams\n): Plugin[] => {\n return [\n createElasticsearchReindexingTask(params),\n createEnableIndexingTask(params),\n createIndexesTaskDefinition(params)\n ];\n};\n\nexport * from \"~/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin\";\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAoBA,IAAAC,mCAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,mCAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,mCAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,mCAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAVO,MAAMS,kCAAkC,GAC3CC,MAAiD,IACtC;EACX,OAAO,CACH,IAAAC,wCAAiC,EAACD,MAAM,CAAC,EACzC,IAAAE,+BAAwB,EAACF,MAAM,CAAC,EAChC,IAAAG,kCAA2B,EAACH,MAAM,CAAC,CACtC;AACL,CAAC;AAACL,OAAA,CAAAI,kCAAA,GAAAA,kCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","_CreateElasticsearchIndexTaskPlugin","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","createElasticsearchBackgroundTasks","params","createElasticsearchReindexingTask","createEnableIndexingTask","createIndexesTaskDefinition","createDataSynchronization"],"sources":["index.ts"],"sourcesContent":["import {\n createDataSynchronization,\n createElasticsearchReindexingTask,\n createEnableIndexingTask,\n createIndexesTaskDefinition\n} from \"~/tasks\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { IElasticsearchTaskConfig } from \"~/types\";\n\nexport type CreateElasticsearchBackgroundTasksParams = IElasticsearchTaskConfig;\n\nexport const createElasticsearchBackgroundTasks = (\n params?: CreateElasticsearchBackgroundTasksParams\n): Plugin[] => {\n return [\n createElasticsearchReindexingTask(params),\n createEnableIndexingTask(params),\n createIndexesTaskDefinition(params),\n createDataSynchronization(params)\n ];\n};\n\nexport * from \"~/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin\";\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAsBA,IAAAC,mCAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,mCAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,mCAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,mCAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAXO,MAAMS,kCAAkC,GAC3CC,MAAiD,IACtC;EACX,OAAO,CACH,IAAAC,wCAAiC,EAACD,MAAM,CAAC,EACzC,IAAAE,+BAAwB,EAACF,MAAM,CAAC,EAChC,IAAAG,kCAA2B,EAACH,MAAM,CAAC,EACnC,IAAAI,gCAAyB,EAACJ,MAAM,CAAC,CACpC;AACL,CAAC;AAACL,OAAA,CAAAI,kCAAA,GAAAA,kCAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-elasticsearch-tasks",
3
- "version": "5.41.1",
3
+ "version": "5.41.2-beta.1",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,13 +13,15 @@
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
15
  "@babel/runtime": "7.24.1",
16
- "@webiny/api": "5.41.1",
17
- "@webiny/api-elasticsearch": "5.41.1",
18
- "@webiny/aws-sdk": "5.41.1",
19
- "@webiny/db-dynamodb": "5.41.1",
20
- "@webiny/error": "5.41.1",
21
- "@webiny/tasks": "5.41.1",
22
- "@webiny/utils": "5.41.1"
16
+ "@webiny/api": "5.41.2-beta.1",
17
+ "@webiny/api-dynamodb-to-elasticsearch": "5.41.2-beta.1",
18
+ "@webiny/api-elasticsearch": "5.41.2-beta.1",
19
+ "@webiny/aws-sdk": "5.41.2-beta.1",
20
+ "@webiny/db": "5.41.2-beta.1",
21
+ "@webiny/db-dynamodb": "5.41.2-beta.1",
22
+ "@webiny/error": "5.41.2-beta.1",
23
+ "@webiny/tasks": "5.41.2-beta.1",
24
+ "@webiny/utils": "5.41.2-beta.1"
23
25
  },
24
26
  "devDependencies": {
25
27
  "@babel/cli": "7.24.1",
@@ -27,18 +29,18 @@
27
29
  "@babel/preset-env": "7.24.3",
28
30
  "@babel/preset-typescript": "7.24.1",
29
31
  "@webiny/api": "0.0.0",
30
- "@webiny/api-headless-cms": "5.41.1",
31
- "@webiny/api-i18n": "5.41.1",
32
- "@webiny/api-security": "5.41.1",
33
- "@webiny/api-tenancy": "5.41.1",
34
- "@webiny/api-wcp": "5.41.1",
35
- "@webiny/cli": "5.41.1",
36
- "@webiny/handler": "5.41.1",
37
- "@webiny/handler-aws": "5.41.1",
38
- "@webiny/handler-db": "5.41.1",
39
- "@webiny/handler-graphql": "5.41.1",
40
- "@webiny/plugins": "5.41.1",
41
- "@webiny/project-utils": "5.41.1",
32
+ "@webiny/api-headless-cms": "5.41.2-beta.1",
33
+ "@webiny/api-i18n": "5.41.2-beta.1",
34
+ "@webiny/api-security": "5.41.2-beta.1",
35
+ "@webiny/api-tenancy": "5.41.2-beta.1",
36
+ "@webiny/api-wcp": "5.41.2-beta.1",
37
+ "@webiny/cli": "5.41.2-beta.1",
38
+ "@webiny/handler": "5.41.2-beta.1",
39
+ "@webiny/handler-aws": "5.41.2-beta.1",
40
+ "@webiny/handler-db": "5.41.2-beta.1",
41
+ "@webiny/handler-graphql": "5.41.2-beta.1",
42
+ "@webiny/plugins": "5.41.2-beta.1",
43
+ "@webiny/project-utils": "5.41.2-beta.1",
42
44
  "rimraf": "5.0.5",
43
45
  "ttypescript": "1.5.15",
44
46
  "type-fest": "2.19.0",
@@ -52,5 +54,12 @@
52
54
  "build": "yarn webiny run build",
53
55
  "watch": "yarn webiny run watch"
54
56
  },
55
- "gitHead": "4d34943dbfc5a776afc74fffd2cfd2dca60bffcd"
57
+ "gitHead": "69a78b382b4de30846edfc2a9d5f73ca223fcc10",
58
+ "adio": {
59
+ "ignore": {
60
+ "src": [
61
+ "node:util"
62
+ ]
63
+ }
64
+ }
56
65
  }
@@ -1,6 +1,9 @@
1
1
  import { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from "../types";
2
2
  import { IIndexManager } from "./types";
3
3
  import { Client } from "@webiny/api-elasticsearch";
4
+ export interface IListIndicesResponse {
5
+ index: string;
6
+ }
4
7
  export declare class IndexManager implements IIndexManager {
5
8
  private readonly client;
6
9
  private readonly disable;
@@ -12,6 +12,17 @@ const defaultIndexSettings = {
12
12
  numberOfReplicas: 1,
13
13
  refreshInterval: "1s"
14
14
  };
15
+ const indexPrefix = process.env.ELASTIC_SEARCH_INDEX_PREFIX || "";
16
+ const filterIndex = item => {
17
+ if (!item) {
18
+ return false;
19
+ } else if (item.startsWith(".")) {
20
+ return false;
21
+ } else if (indexPrefix) {
22
+ return item.startsWith(indexPrefix);
23
+ }
24
+ return true;
25
+ };
15
26
  class IndexManager {
16
27
  get settings() {
17
28
  return this._settings;
@@ -35,7 +46,7 @@ class IndexManager {
35
46
  if (!Array.isArray(response.body)) {
36
47
  return [];
37
48
  }
38
- return response.body.map(item => item.index).filter(Boolean);
49
+ return response.body.map(item => item.index).filter(filterIndex);
39
50
  } catch (ex) {
40
51
  console.error(JSON.stringify({
41
52
  message: "Failed to list indices.",
@@ -1 +1 @@
1
- {"version":3,"names":["_IndexSettingsManager","require","_DisableIndexing","_EnableIndexing","_utils","defaultIndexSettings","numberOfReplicas","refreshInterval","IndexManager","settings","_settings","constructor","client","defaults","indexSettings","IndexSettingsManager","disable","DisableIndexing","enable","EnableIndexing","list","response","cat","indices","format","Array","isArray","body","map","item","index","filter","Boolean","ex","console","error","JSON","stringify","message","getObjectProperties","disableIndexing","exec","enableIndexing","indexes","Object","keys","createIndex","create","indexExists","exists","ignore_unavailable","allow_no_indices","include_defaults","flat_settings","local","exports"],"sources":["IndexManager.ts"],"sourcesContent":["import { IndexSettingsManager } from \"~/settings/IndexSettingsManager\";\nimport { DisableIndexing } from \"./DisableIndexing\";\nimport { EnableIndexing } from \"./EnableIndexing\";\nimport { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types\";\nimport { IIndexManager } from \"~/settings/types\";\nimport { Client } from \"@webiny/api-elasticsearch\";\nimport { getObjectProperties } from \"@webiny/utils\";\n\nconst defaultIndexSettings: IIndexSettingsValues = {\n numberOfReplicas: 1,\n refreshInterval: \"1s\"\n};\n\nexport class IndexManager implements IIndexManager {\n private readonly client: Client;\n private readonly disable: DisableIndexing;\n private readonly enable: EnableIndexing;\n private readonly _settings: IElasticsearchIndexingTaskValuesSettings;\n\n private readonly defaults: IIndexSettingsValues;\n\n public get settings(): IElasticsearchIndexingTaskValuesSettings {\n return this._settings;\n }\n\n public constructor(\n client: Client,\n settings: IElasticsearchIndexingTaskValuesSettings,\n defaults?: Partial<IIndexSettingsValues>\n ) {\n const indexSettings = new IndexSettingsManager(client);\n this.client = client;\n this.disable = new DisableIndexing(indexSettings);\n this.enable = new EnableIndexing(indexSettings);\n this._settings = settings;\n this.defaults = {\n refreshInterval: defaults?.refreshInterval || defaultIndexSettings.refreshInterval,\n numberOfReplicas: defaults?.numberOfReplicas || defaultIndexSettings.numberOfReplicas\n };\n }\n\n public async list(): Promise<string[]> {\n try {\n const response = await this.client.cat.indices({\n format: \"json\"\n });\n if (!Array.isArray(response.body)) {\n return [];\n }\n return response.body.map((item: any) => item.index).filter(Boolean);\n } catch (ex) {\n console.error(\n JSON.stringify({\n message: \"Failed to list indices.\",\n error: getObjectProperties(ex)\n })\n );\n return [];\n }\n }\n\n public async disableIndexing(index: string) {\n /**\n * No need to disable indexing if it's already disabled.\n */\n if (this._settings[index]) {\n return this._settings[index];\n }\n const settings = await this.disable.exec(index);\n this._settings[index] = settings;\n return settings;\n }\n\n public async enableIndexing(index?: string) {\n if (!index) {\n const indexes = Object.keys(this._settings);\n for (const index of indexes) {\n await this.enableIndexing(index);\n }\n return;\n }\n const settings = this._settings[index] || this.defaults;\n await this.enable.exec(index, settings);\n }\n\n public async createIndex(index: string, settings?: Record<string, any>): Promise<void> {\n await this.client.indices.create({\n index,\n body: settings\n });\n }\n\n public async indexExists(index: string): Promise<boolean> {\n const response = await this.client.indices.exists({\n index,\n ignore_unavailable: false,\n allow_no_indices: true,\n include_defaults: true,\n flat_settings: false,\n local: false\n });\n return !!response.body;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_IndexSettingsManager","require","_DisableIndexing","_EnableIndexing","_utils","defaultIndexSettings","numberOfReplicas","refreshInterval","indexPrefix","process","env","ELASTIC_SEARCH_INDEX_PREFIX","filterIndex","item","startsWith","IndexManager","settings","_settings","constructor","client","defaults","indexSettings","IndexSettingsManager","disable","DisableIndexing","enable","EnableIndexing","list","response","cat","indices","format","Array","isArray","body","map","index","filter","ex","console","error","JSON","stringify","message","getObjectProperties","disableIndexing","exec","enableIndexing","indexes","Object","keys","createIndex","create","indexExists","exists","ignore_unavailable","allow_no_indices","include_defaults","flat_settings","local","exports"],"sources":["IndexManager.ts"],"sourcesContent":["import { IndexSettingsManager } from \"~/settings/IndexSettingsManager\";\nimport { DisableIndexing } from \"./DisableIndexing\";\nimport { EnableIndexing } from \"./EnableIndexing\";\nimport { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types\";\nimport { IIndexManager } from \"~/settings/types\";\nimport { Client } from \"@webiny/api-elasticsearch\";\nimport { getObjectProperties } from \"@webiny/utils\";\n\nconst defaultIndexSettings: IIndexSettingsValues = {\n numberOfReplicas: 1,\n refreshInterval: \"1s\"\n};\n\nexport interface IListIndicesResponse {\n index: string;\n}\n\nconst indexPrefix = process.env.ELASTIC_SEARCH_INDEX_PREFIX || \"\";\nconst filterIndex = (item?: string) => {\n if (!item) {\n return false;\n } else if (item.startsWith(\".\")) {\n return false;\n } else if (indexPrefix) {\n return item.startsWith(indexPrefix);\n }\n return true;\n};\n\nexport class IndexManager implements IIndexManager {\n private readonly client: Client;\n private readonly disable: DisableIndexing;\n private readonly enable: EnableIndexing;\n private readonly _settings: IElasticsearchIndexingTaskValuesSettings;\n\n private readonly defaults: IIndexSettingsValues;\n\n public get settings(): IElasticsearchIndexingTaskValuesSettings {\n return this._settings;\n }\n\n public constructor(\n client: Client,\n settings: IElasticsearchIndexingTaskValuesSettings,\n defaults?: Partial<IIndexSettingsValues>\n ) {\n const indexSettings = new IndexSettingsManager(client);\n this.client = client;\n this.disable = new DisableIndexing(indexSettings);\n this.enable = new EnableIndexing(indexSettings);\n this._settings = settings;\n this.defaults = {\n refreshInterval: defaults?.refreshInterval || defaultIndexSettings.refreshInterval,\n numberOfReplicas: defaults?.numberOfReplicas || defaultIndexSettings.numberOfReplicas\n };\n }\n\n public async list(): Promise<string[]> {\n try {\n const response = await this.client.cat.indices<IListIndicesResponse[]>({\n format: \"json\"\n });\n if (!Array.isArray(response.body)) {\n return [];\n }\n return response.body.map(item => item.index).filter(filterIndex);\n } catch (ex) {\n console.error(\n JSON.stringify({\n message: \"Failed to list indices.\",\n error: getObjectProperties(ex)\n })\n );\n return [];\n }\n }\n\n public async disableIndexing(index: string) {\n /**\n * No need to disable indexing if it's already disabled.\n */\n if (this._settings[index]) {\n return this._settings[index];\n }\n const settings = await this.disable.exec(index);\n this._settings[index] = settings;\n return settings;\n }\n\n public async enableIndexing(index?: string) {\n if (!index) {\n const indexes = Object.keys(this._settings);\n for (const index of indexes) {\n await this.enableIndexing(index);\n }\n return;\n }\n const settings = this._settings[index] || this.defaults;\n await this.enable.exec(index, settings);\n }\n\n public async createIndex(index: string, settings?: Record<string, any>): Promise<void> {\n await this.client.indices.create({\n index,\n body: settings\n });\n }\n\n public async indexExists(index: string): Promise<boolean> {\n const response = await this.client.indices.exists({\n index,\n ignore_unavailable: false,\n allow_no_indices: true,\n include_defaults: true,\n flat_settings: false,\n local: false\n });\n return !!response.body;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,31 +1,34 @@
1
1
  import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
2
  import { Client } from "@webiny/api-elasticsearch";
3
3
  import { createTable } from "../definitions";
4
- import { Context, IElasticsearchIndexingTaskValues, IManager } from "../types";
4
+ import { Context, IManager } from "../types";
5
5
  import { Entity } from "@webiny/db-dynamodb/toolbox";
6
6
  import { ITaskResponse } from "@webiny/tasks/response/abstractions";
7
- import { ITaskManagerStore } from "@webiny/tasks/runner/abstractions";
7
+ import { IIsCloseToTimeoutCallable, ITaskManagerStore } from "@webiny/tasks/runner/abstractions";
8
8
  import { BatchReadItem, BatchWriteItem, BatchWriteResult } from "@webiny/db-dynamodb";
9
- export interface ManagerParams {
9
+ import { ITimer } from "@webiny/handler-aws/utils";
10
+ export interface ManagerParams<T> {
10
11
  context: Context;
11
12
  documentClient?: DynamoDBDocument;
12
13
  elasticsearchClient?: Client;
13
- isCloseToTimeout: () => boolean;
14
+ isCloseToTimeout: IIsCloseToTimeoutCallable;
14
15
  isAborted: () => boolean;
15
16
  response: ITaskResponse;
16
- store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;
17
+ store: ITaskManagerStore<T>;
18
+ timer: ITimer;
17
19
  }
18
- export declare class Manager implements IManager {
20
+ export declare class Manager<T> implements IManager<T> {
19
21
  readonly documentClient: DynamoDBDocument;
20
22
  readonly elasticsearch: Client;
21
23
  readonly context: Context;
22
24
  readonly table: ReturnType<typeof createTable>;
23
- readonly isCloseToTimeout: () => boolean;
25
+ readonly isCloseToTimeout: IIsCloseToTimeoutCallable;
24
26
  readonly isAborted: () => boolean;
25
27
  readonly response: ITaskResponse;
26
- readonly store: ITaskManagerStore<IElasticsearchIndexingTaskValues>;
28
+ readonly store: ITaskManagerStore<T>;
29
+ readonly timer: ITimer;
27
30
  private readonly entities;
28
- constructor(params: ManagerParams);
31
+ constructor(params: ManagerParams<T>);
29
32
  getEntity(name: string): Entity<any>;
30
33
  read<T>(items: BatchReadItem[]): Promise<T[]>;
31
34
  write(items: BatchWriteItem[]): Promise<BatchWriteResult>;
package/tasks/Manager.js CHANGED
@@ -28,6 +28,7 @@ class Manager {
28
28
  };
29
29
  this.response = params.response;
30
30
  this.store = params.store;
31
+ this.timer = params.timer;
31
32
  }
32
33
  getEntity(name) {
33
34
  if (this.entities[name]) {
@@ -1 +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 = () => {\n return params.isCloseToTimeout();\n };\n this.isAborted = () => {\n return params.isAborted();\n };\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,GAAG,MAAM;MAC1B,OAAOb,MAAM,CAACa,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAACC,SAAS,GAAG,MAAM;MACnB,OAAOd,MAAM,CAACc,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,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","ignoreList":[]}
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","timer","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, IManager } from \"~/types\";\nimport { createEntry } from \"~/definitions/entry\";\nimport { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { ITaskResponse } from \"@webiny/tasks/response/abstractions\";\nimport { IIsCloseToTimeoutCallable, ITaskManagerStore } from \"@webiny/tasks/runner/abstractions\";\nimport {\n batchReadAll,\n BatchReadItem,\n batchWriteAll,\n BatchWriteItem,\n BatchWriteResult\n} from \"@webiny/db-dynamodb\";\nimport { ITimer } from \"@webiny/handler-aws/utils\";\n\nexport interface ManagerParams<T> {\n context: Context;\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n isAborted: () => boolean;\n response: ITaskResponse;\n store: ITaskManagerStore<T>;\n timer: ITimer;\n}\n\nexport class Manager<T> implements IManager<T> {\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: IIsCloseToTimeoutCallable;\n public readonly isAborted: () => boolean;\n public readonly response: ITaskResponse;\n public readonly store: ITaskManagerStore<T>;\n public readonly timer: ITimer;\n\n private readonly entities: Record<string, Entity<any>> = {};\n\n public constructor(params: ManagerParams<T>) {\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 = () => {\n return params.isCloseToTimeout();\n };\n this.isAborted = () => {\n return params.isAborted();\n };\n this.response = params.response;\n this.store = params.store;\n this.timer = params.timer;\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;AAoBO,MAAMK,OAAO,CAA2B;EAW1BC,QAAQ,GAAgC,CAAC,CAAC;EAEpDC,WAAWA,CAACC,MAAwB,EAAE;IACzC,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,GAAG,MAAM;MAC1B,OAAOb,MAAM,CAACa,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAACC,SAAS,GAAG,MAAM;MACnB,OAAOd,MAAM,CAACc,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAACC,QAAQ,GAAGf,MAAM,CAACe,QAAQ;IAC/B,IAAI,CAACC,KAAK,GAAGhB,MAAM,CAACgB,KAAK;IACzB,IAAI,CAACC,KAAK,GAAGjB,MAAM,CAACiB,KAAK;EAC7B;EAEOC,SAASA,CAACC,IAAY,EAAe;IACxC,IAAI,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC,EAAE;MACrB,OAAO,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC;IAC9B;IAEA,OAAQ,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC,GAAG,IAAAC,kBAAW,EAAC;MACtCT,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBU,UAAU,EAAEF;IAChB,CAAC,CAAC;EACN;EAEA,MAAaG,IAAIA,CAAIC,KAAsB,EAAE;IACzC,OAAO,MAAM,IAAAC,wBAAY,EAAI;MACzBb,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBY;IACJ,CAAC,CAAC;EACN;EAEA,MAAaE,KAAKA,CAACF,KAAuB,EAA6B;IACnE,OAAO,MAAM,IAAAG,yBAAa,EAAC;MACvBf,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBY;IACJ,CAAC,CAAC;EACN;AACJ;AAACI,OAAA,CAAA9B,OAAA,GAAAA,OAAA","ignoreList":[]}
@@ -1,9 +1,10 @@
1
1
  import { Manager } from "../Manager";
2
2
  import { IndexManager } from "../../settings";
3
3
  import { ITaskResponseResult } from "@webiny/tasks";
4
+ import { IElasticsearchCreateIndexesTaskInput } from "./types";
4
5
  export declare class CreateIndexesTaskRunner {
5
6
  private readonly manager;
6
7
  private readonly indexManager;
7
- constructor(manager: Manager, indexManager: IndexManager);
8
+ constructor(manager: Manager<IElasticsearchCreateIndexesTaskInput>, indexManager: IndexManager);
8
9
  execute(matching: string | undefined, done: string[]): Promise<ITaskResponseResult>;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_CreateElasticsearchIndexTaskPlugin","require","CreateIndexesTaskRunner","constructor","manager","indexManager","execute","matching","done","plugins","context","byType","CreateElasticsearchIndexTaskPlugin","type","length","response","indexes","tenants","tenancy","listTenants","tenant","locales","i18n","getLocales","locale","plugin","results","getIndexList","id","code","result","some","i","index","push","isIndexAllowed","includes","settings","isAborted","aborted","isCloseToTimeout","continue","exists","indexExists","createIndex","store","addInfoLog","message","data","ex","addErrorLog","error","exports"],"sources":["CreateIndexesTaskRunner.ts"],"sourcesContent":["import { Manager } from \"~/tasks/Manager\";\nimport { IndexManager } from \"~/settings\";\nimport { ITaskResponseResult } from \"@webiny/tasks\";\nimport {\n CreateElasticsearchIndexTaskPlugin,\n CreateElasticsearchIndexTaskPluginIndex\n} from \"./CreateElasticsearchIndexTaskPlugin\";\nimport { Context } from \"~/types\";\n\nexport class CreateIndexesTaskRunner {\n private readonly manager: Manager;\n private readonly indexManager: IndexManager;\n\n public constructor(manager: Manager, indexManager: IndexManager) {\n this.manager = manager;\n\n this.indexManager = indexManager;\n }\n\n public async execute(\n matching: string | undefined,\n done: string[]\n ): Promise<ITaskResponseResult> {\n const plugins = this.manager.context.plugins.byType<\n CreateElasticsearchIndexTaskPlugin<Context>\n >(CreateElasticsearchIndexTaskPlugin.type);\n if (plugins.length === 0) {\n return this.manager.response.done(\"No index plugins found.\");\n }\n const indexes: CreateElasticsearchIndexTaskPluginIndex[] = [];\n\n const tenants = await this.manager.context.tenancy.listTenants();\n\n for (const tenant of tenants) {\n const locales = await this.manager.context.i18n.getLocales();\n for (const locale of locales) {\n for (const plugin of plugins) {\n const results = await plugin.getIndexList({\n context: this.manager.context,\n tenant: tenant.id,\n locale: locale.code\n });\n for (const result of results) {\n if (indexes.some(i => i.index === result.index)) {\n continue;\n }\n indexes.push(result);\n }\n }\n }\n }\n if (indexes.length === 0) {\n return this.manager.response.done(\"No indexes found.\");\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 for (const { index, settings } of indexes) {\n if (this.manager.isAborted()) {\n return this.manager.response.aborted();\n } else if (this.manager.isCloseToTimeout()) {\n return this.manager.response.continue({\n done\n });\n }\n try {\n if (done.includes(index)) {\n continue;\n } else if (isIndexAllowed(index) === false) {\n continue;\n }\n const exists = await this.indexManager.indexExists(index);\n if (exists) {\n continue;\n }\n done.push(index);\n await this.indexManager.createIndex(index, settings);\n await this.manager.store.addInfoLog({\n message: `Index \"${index}\" created.`,\n data: {\n index\n }\n });\n } catch (ex) {\n await this.manager.store.addErrorLog({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.manager.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_CreateElasticsearchIndexTaskPlugin","require","CreateIndexesTaskRunner","constructor","manager","indexManager","execute","matching","done","plugins","context","byType","CreateElasticsearchIndexTaskPlugin","type","length","response","indexes","tenants","tenancy","listTenants","tenant","locales","i18n","getLocales","locale","plugin","results","getIndexList","id","code","result","some","i","index","push","isIndexAllowed","includes","settings","isAborted","aborted","isCloseToTimeout","continue","exists","indexExists","createIndex","store","addInfoLog","message","data","ex","addErrorLog","error","exports"],"sources":["CreateIndexesTaskRunner.ts"],"sourcesContent":["import { Manager } from \"~/tasks/Manager\";\nimport { IndexManager } from \"~/settings\";\nimport { ITaskResponseResult } from \"@webiny/tasks\";\nimport {\n CreateElasticsearchIndexTaskPlugin,\n CreateElasticsearchIndexTaskPluginIndex\n} from \"./CreateElasticsearchIndexTaskPlugin\";\nimport { Context } from \"~/types\";\nimport { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types\";\n\nexport class CreateIndexesTaskRunner {\n private readonly manager: Manager<IElasticsearchCreateIndexesTaskInput>;\n private readonly indexManager: IndexManager;\n\n public constructor(\n manager: Manager<IElasticsearchCreateIndexesTaskInput>,\n indexManager: IndexManager\n ) {\n this.manager = manager;\n\n this.indexManager = indexManager;\n }\n\n public async execute(\n matching: string | undefined,\n done: string[]\n ): Promise<ITaskResponseResult> {\n const plugins = this.manager.context.plugins.byType<\n CreateElasticsearchIndexTaskPlugin<Context>\n >(CreateElasticsearchIndexTaskPlugin.type);\n if (plugins.length === 0) {\n return this.manager.response.done(\"No index plugins found.\");\n }\n const indexes: CreateElasticsearchIndexTaskPluginIndex[] = [];\n\n const tenants = await this.manager.context.tenancy.listTenants();\n\n for (const tenant of tenants) {\n const locales = await this.manager.context.i18n.getLocales();\n for (const locale of locales) {\n for (const plugin of plugins) {\n const results = await plugin.getIndexList({\n context: this.manager.context,\n tenant: tenant.id,\n locale: locale.code\n });\n for (const result of results) {\n if (indexes.some(i => i.index === result.index)) {\n continue;\n }\n indexes.push(result);\n }\n }\n }\n }\n if (indexes.length === 0) {\n return this.manager.response.done(\"No indexes found.\");\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 for (const { index, settings } of indexes) {\n if (this.manager.isAborted()) {\n return this.manager.response.aborted();\n } else if (this.manager.isCloseToTimeout()) {\n return this.manager.response.continue({\n done\n });\n }\n try {\n if (done.includes(index)) {\n continue;\n } else if (isIndexAllowed(index) === false) {\n continue;\n }\n const exists = await this.indexManager.indexExists(index);\n if (exists) {\n continue;\n }\n done.push(index);\n await this.indexManager.createIndex(index, settings);\n await this.manager.store.addInfoLog({\n message: `Index \"${index}\" created.`,\n data: {\n index\n }\n });\n } catch (ex) {\n await this.manager.store.addErrorLog({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.manager.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -21,14 +21,15 @@ const createIndexesTaskDefinition = params => {
21
21
  isCloseToTimeout,
22
22
  isAborted,
23
23
  store,
24
- input
24
+ input,
25
+ timer
25
26
  }) => {
26
27
  const {
27
28
  Manager
28
- } = await import( /* webpackChunkName: "ElasticsearchTaskManager" */"../Manager");
29
+ } = await import( /* webpackChunkName: "Manager" */"../Manager");
29
30
  const {
30
31
  IndexManager
31
- } = await import( /* webpackChunkName: "ElasticsearchTaskSettings" */"../../settings");
32
+ } = await import( /* webpackChunkName: "IndexManager" */"../../settings");
32
33
  const manager = new Manager({
33
34
  elasticsearchClient: params?.elasticsearchClient,
34
35
  documentClient: params?.documentClient,
@@ -36,7 +37,8 @@ const createIndexesTaskDefinition = params => {
36
37
  context,
37
38
  isAborted,
38
39
  isCloseToTimeout,
39
- store
40
+ store,
41
+ timer
40
42
  });
41
43
  const indexManager = new IndexManager(manager.elasticsearch, {});
42
44
  const createIndexesTaskRunner = new _CreateIndexesTaskRunner.CreateIndexesTaskRunner(manager, indexManager);
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","_CreateIndexesTaskRunner","createIndexesTaskDefinition","params","createTaskDefinition","id","title","maxIterations","run","response","context","isCloseToTimeout","isAborted","store","input","Manager","IndexManager","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","createIndexesTaskRunner","CreateIndexesTaskRunner","execute","matching","Array","from","done","exports"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types\";\nimport { CreateIndexesTaskRunner } from \"./CreateIndexesTaskRunner\";\n\nexport const createIndexesTaskDefinition = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchCreateIndexesTaskInput>({\n id: \"elasticsearchCreateIndexes\",\n title: \"Create Missing Elasticsearch Indexes\",\n /**\n * Maximum number of iterations before the task goes into the error state.\n * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indeexs is there to create.\n */\n maxIterations: 2,\n run: async ({ response, context, isCloseToTimeout, isAborted, store, input }) => {\n const { Manager } = await import(\n /* webpackChunkName: \"ElasticsearchTaskManager\" */\n \"../Manager\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"ElasticsearchTaskSettings\" */ \"~/settings\"\n );\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, {});\n\n const createIndexesTaskRunner = new CreateIndexesTaskRunner(manager, indexManager);\n\n return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,wBAAA,GAAAD,OAAA;AAEO,MAAME,2BAA2B,GAAIC,MAAiC,IAAK;EAC9E,OAAO,IAAAC,2BAAoB,EAAgD;IACvEC,EAAE,EAAE,4BAA4B;IAChCC,KAAK,EAAE,sCAAsC;IAC7C;AACR;AACA;AACA;IACQC,aAAa,EAAE,CAAC;IAChBC,GAAG,EAAE,MAAAA,CAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,gBAAgB;MAAEC,SAAS;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MAC7E,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,EAC5B,8DAEJ,CAAC;MACD,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,EACjC,mEACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAAC;QACxBG,mBAAmB,EAAEf,MAAM,EAAEe,mBAAmB;QAChDC,cAAc,EAAEhB,MAAM,EAAEgB,cAAc;QACtCV,QAAQ;QACRC,OAAO;QACPE,SAAS;QACTD,gBAAgB;QAChBE;MACJ,CAAC,CAAC;MAEF,MAAMO,YAAY,GAAG,IAAIJ,YAAY,CAACC,OAAO,CAACI,aAAa,EAAE,CAAC,CAAC,CAAC;MAEhE,MAAMC,uBAAuB,GAAG,IAAIC,gDAAuB,CAACN,OAAO,EAAEG,YAAY,CAAC;MAElF,OAAOE,uBAAuB,CAACE,OAAO,CAACV,KAAK,CAACW,QAAQ,EAAEC,KAAK,CAACC,IAAI,CAACb,KAAK,CAACc,IAAI,IAAI,EAAE,CAAC,CAAC;IACxF;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA3B,2BAAA,GAAAA,2BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","_CreateIndexesTaskRunner","createIndexesTaskDefinition","params","createTaskDefinition","id","title","maxIterations","run","response","context","isCloseToTimeout","isAborted","store","input","timer","Manager","IndexManager","manager","elasticsearchClient","documentClient","indexManager","elasticsearch","createIndexesTaskRunner","CreateIndexesTaskRunner","execute","matching","Array","from","done","exports"],"sources":["index.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { Context, IElasticsearchTaskConfig } from \"~/types\";\nimport { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types\";\nimport { CreateIndexesTaskRunner } from \"./CreateIndexesTaskRunner\";\n\nexport const createIndexesTaskDefinition = (params?: IElasticsearchTaskConfig) => {\n return createTaskDefinition<Context, IElasticsearchCreateIndexesTaskInput>({\n id: \"elasticsearchCreateIndexes\",\n title: \"Create Missing Elasticsearch Indexes\",\n /**\n * Maximum number of iterations before the task goes into the error state.\n * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indeexs is there to create.\n */\n maxIterations: 2,\n run: async ({ response, context, isCloseToTimeout, isAborted, store, input, 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 manager = new Manager<IElasticsearchCreateIndexesTaskInput>({\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 createIndexesTaskRunner = new CreateIndexesTaskRunner(manager, indexManager);\n\n return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,wBAAA,GAAAD,OAAA;AAEO,MAAME,2BAA2B,GAAIC,MAAiC,IAAK;EAC9E,OAAO,IAAAC,2BAAoB,EAAgD;IACvEC,EAAE,EAAE,4BAA4B;IAChCC,KAAK,EAAE,sCAAsC;IAC7C;AACR;AACA;AACA;IACQC,aAAa,EAAE,CAAC;IAChBC,GAAG,EAAE,MAAAA,CAAO;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,gBAAgB;MAAEC,SAAS;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpF,MAAM;QAAEC;MAAQ,CAAC,GAAG,MAAM,MAAM,EAC5B,6CAEJ,CAAC;MACD,MAAM;QAAEC;MAAa,CAAC,GAAG,MAAM,MAAM,EACjC,sDACJ,CAAC;MAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAAuC;QAC9DG,mBAAmB,EAAEhB,MAAM,EAAEgB,mBAAmB;QAChDC,cAAc,EAAEjB,MAAM,EAAEiB,cAAc;QACtCX,QAAQ;QACRC,OAAO;QACPE,SAAS;QACTD,gBAAgB;QAChBE,KAAK;QACLE;MACJ,CAAC,CAAC;MAEF,MAAMM,YAAY,GAAG,IAAIJ,YAAY,CAACC,OAAO,CAACI,aAAa,EAAE,CAAC,CAAC,CAAC;MAEhE,MAAMC,uBAAuB,GAAG,IAAIC,gDAAuB,CAACN,OAAO,EAAEG,YAAY,CAAC;MAElF,OAAOE,uBAAuB,CAACE,OAAO,CAACX,KAAK,CAACY,QAAQ,EAAEC,KAAK,CAACC,IAAI,CAACd,KAAK,CAACe,IAAI,IAAI,EAAE,CAAC,CAAC;IACxF;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAA5B,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import { IDataSynchronizationInput, IDataSynchronizationManager, IFactories } from "./types";
2
+ import { IIndexManager } from "../../settings/types";
3
+ export interface IDataSynchronizationTaskRunnerParams {
4
+ manager: IDataSynchronizationManager;
5
+ indexManager: IIndexManager;
6
+ factories: IFactories;
7
+ }
8
+ export declare class DataSynchronizationTaskRunner {
9
+ private readonly manager;
10
+ private readonly indexManager;
11
+ private readonly factories;
12
+ constructor(params: IDataSynchronizationTaskRunnerParams);
13
+ run(input: IDataSynchronizationInput): Promise<import("@webiny/tasks").ITaskResponseErrorResult | import("@webiny/tasks").ITaskResponseAbortedResult | import("@webiny/tasks").ITaskResponseDoneResult<import("@webiny/tasks").ITaskResponseDoneResultOutput> | import("@webiny/tasks").ITaskResponseContinueResult<IDataSynchronizationInput>>;
14
+ private validateFlow;
15
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DataSynchronizationTaskRunner = void 0;
7
+ var _ElasticsearchSynchronize = require("./elasticsearch/ElasticsearchSynchronize");
8
+ var _ElasticsearchFetcher = require("./elasticsearch/ElasticsearchFetcher");
9
+ class DataSynchronizationTaskRunner {
10
+ constructor(params) {
11
+ this.manager = params.manager;
12
+ this.indexManager = params.indexManager;
13
+ this.factories = params.factories;
14
+ }
15
+ async run(input) {
16
+ this.validateFlow(input);
17
+ /**
18
+ * Go through the Elasticsearch and delete records which do not exist in the Elasticsearch table.
19
+ */
20
+ //
21
+ if (input.flow === "elasticsearchToDynamoDb" && !input.elasticsearchToDynamoDb?.finished) {
22
+ const sync = this.factories.elasticsearchToDynamoDb({
23
+ manager: this.manager,
24
+ indexManager: this.indexManager,
25
+ synchronize: new _ElasticsearchSynchronize.ElasticsearchSynchronize({
26
+ context: this.manager.context,
27
+ timer: this.manager.timer
28
+ }),
29
+ fetcher: new _ElasticsearchFetcher.ElasticsearchFetcher({
30
+ client: this.manager.elasticsearch
31
+ })
32
+ });
33
+ try {
34
+ return await sync.run(input);
35
+ } catch (ex) {
36
+ return this.manager.response.error(ex);
37
+ }
38
+ }
39
+ /**
40
+ * We are done.
41
+ */
42
+ return this.manager.response.done();
43
+ }
44
+ validateFlow(input) {
45
+ if (!input.flow) {
46
+ throw new Error(`Missing "flow" in the input.`);
47
+ } else if (this.factories[input.flow]) {
48
+ return;
49
+ }
50
+ throw new Error(`Invalid flow "${input.flow}". Allowed flows: ${Object.keys(this.factories).join(", ")}.`);
51
+ }
52
+ }
53
+ exports.DataSynchronizationTaskRunner = DataSynchronizationTaskRunner;
54
+
55
+ //# sourceMappingURL=DataSynchronizationTaskRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ElasticsearchSynchronize","require","_ElasticsearchFetcher","DataSynchronizationTaskRunner","constructor","params","manager","indexManager","factories","run","input","validateFlow","flow","elasticsearchToDynamoDb","finished","sync","synchronize","ElasticsearchSynchronize","context","timer","fetcher","ElasticsearchFetcher","client","elasticsearch","ex","response","error","done","Error","Object","keys","join","exports"],"sources":["DataSynchronizationTaskRunner.ts"],"sourcesContent":["import {\n IDataSynchronizationInput,\n IDataSynchronizationManager,\n IFactories\n} from \"~/tasks/dataSynchronization/types\";\nimport { IIndexManager } from \"~/settings/types\";\nimport { ElasticsearchSynchronize } from \"~/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize\";\nimport { ElasticsearchFetcher } from \"~/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher\";\n\nexport interface IDataSynchronizationTaskRunnerParams {\n manager: IDataSynchronizationManager;\n indexManager: IIndexManager;\n factories: IFactories;\n}\n\nexport class DataSynchronizationTaskRunner {\n private readonly manager: IDataSynchronizationManager;\n private readonly indexManager: IIndexManager;\n private readonly factories: IFactories;\n\n public constructor(params: IDataSynchronizationTaskRunnerParams) {\n this.manager = params.manager;\n this.indexManager = params.indexManager;\n this.factories = params.factories;\n }\n\n public async run(input: IDataSynchronizationInput) {\n this.validateFlow(input);\n /**\n * Go through the Elasticsearch and delete records which do not exist in the Elasticsearch table.\n */\n //\n if (input.flow === \"elasticsearchToDynamoDb\" && !input.elasticsearchToDynamoDb?.finished) {\n const sync = this.factories.elasticsearchToDynamoDb({\n manager: this.manager,\n indexManager: this.indexManager,\n synchronize: new ElasticsearchSynchronize({\n context: this.manager.context,\n timer: this.manager.timer\n }),\n fetcher: new ElasticsearchFetcher({\n client: this.manager.elasticsearch\n })\n });\n try {\n return await sync.run(input);\n } catch (ex) {\n return this.manager.response.error(ex);\n }\n }\n /**\n * We are done.\n */\n return this.manager.response.done();\n }\n\n private validateFlow(input: IDataSynchronizationInput): void {\n if (!input.flow) {\n throw new Error(`Missing \"flow\" in the input.`);\n } else if (this.factories[input.flow]) {\n return;\n }\n throw new Error(\n `Invalid flow \"${input.flow}\". Allowed flows: ${Object.keys(this.factories).join(\n \", \"\n )}.`\n );\n }\n}\n"],"mappings":";;;;;;AAMA,IAAAA,yBAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAQO,MAAME,6BAA6B,CAAC;EAKhCC,WAAWA,CAACC,MAA4C,EAAE;IAC7D,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,YAAY,GAAGF,MAAM,CAACE,YAAY;IACvC,IAAI,CAACC,SAAS,GAAGH,MAAM,CAACG,SAAS;EACrC;EAEA,MAAaC,GAAGA,CAACC,KAAgC,EAAE;IAC/C,IAAI,CAACC,YAAY,CAACD,KAAK,CAAC;IACxB;AACR;AACA;IACQ;IACA,IAAIA,KAAK,CAACE,IAAI,KAAK,yBAAyB,IAAI,CAACF,KAAK,CAACG,uBAAuB,EAAEC,QAAQ,EAAE;MACtF,MAAMC,IAAI,GAAG,IAAI,CAACP,SAAS,CAACK,uBAAuB,CAAC;QAChDP,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBC,YAAY,EAAE,IAAI,CAACA,YAAY;QAC/BS,WAAW,EAAE,IAAIC,kDAAwB,CAAC;UACtCC,OAAO,EAAE,IAAI,CAACZ,OAAO,CAACY,OAAO;UAC7BC,KAAK,EAAE,IAAI,CAACb,OAAO,CAACa;QACxB,CAAC,CAAC;QACFC,OAAO,EAAE,IAAIC,0CAAoB,CAAC;UAC9BC,MAAM,EAAE,IAAI,CAAChB,OAAO,CAACiB;QACzB,CAAC;MACL,CAAC,CAAC;MACF,IAAI;QACA,OAAO,MAAMR,IAAI,CAACN,GAAG,CAACC,KAAK,CAAC;MAChC,CAAC,CAAC,OAAOc,EAAE,EAAE;QACT,OAAO,IAAI,CAAClB,OAAO,CAACmB,QAAQ,CAACC,KAAK,CAACF,EAAE,CAAC;MAC1C;IACJ;IACA;AACR;AACA;IACQ,OAAO,IAAI,CAAClB,OAAO,CAACmB,QAAQ,CAACE,IAAI,CAAC,CAAC;EACvC;EAEQhB,YAAYA,CAACD,KAAgC,EAAQ;IACzD,IAAI,CAACA,KAAK,CAACE,IAAI,EAAE;MACb,MAAM,IAAIgB,KAAK,CAAE,8BAA6B,CAAC;IACnD,CAAC,MAAM,IAAI,IAAI,CAACpB,SAAS,CAACE,KAAK,CAACE,IAAI,CAAC,EAAE;MACnC;IACJ;IACA,MAAM,IAAIgB,KAAK,CACV,iBAAgBlB,KAAK,CAACE,IAAK,qBAAoBiB,MAAM,CAACC,IAAI,CAAC,IAAI,CAACtB,SAAS,CAAC,CAACuB,IAAI,CAC5E,IACJ,CAAE,GACN,CAAC;EACL;AACJ;AAACC,OAAA,CAAA7B,6BAAA,GAAAA,6BAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { IFactories } from "./types";
2
+ export declare const createFactories: () => IFactories;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createFactories = void 0;
7
+ var _ElasticsearchToDynamoDbSynchronization = require("./elasticsearch/ElasticsearchToDynamoDbSynchronization");
8
+ const createFactories = () => {
9
+ return {
10
+ elasticsearchToDynamoDb: params => {
11
+ return new _ElasticsearchToDynamoDbSynchronization.ElasticsearchToDynamoDbSynchronization(params);
12
+ }
13
+ };
14
+ };
15
+ exports.createFactories = createFactories;
16
+
17
+ //# sourceMappingURL=createFactories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_ElasticsearchToDynamoDbSynchronization","require","createFactories","elasticsearchToDynamoDb","params","ElasticsearchToDynamoDbSynchronization","exports"],"sources":["createFactories.ts"],"sourcesContent":["import { IFactories } from \"./types\";\nimport { ElasticsearchToDynamoDbSynchronization } from \"./elasticsearch/ElasticsearchToDynamoDbSynchronization\";\n\nexport const createFactories = (): IFactories => {\n return {\n elasticsearchToDynamoDb: params => {\n return new ElasticsearchToDynamoDbSynchronization(params);\n }\n };\n};\n"],"mappings":";;;;;;AACA,IAAAA,uCAAA,GAAAC,OAAA;AAEO,MAAMC,eAAe,GAAGA,CAAA,KAAkB;EAC7C,OAAO;IACHC,uBAAuB,EAAEC,MAAM,IAAI;MAC/B,OAAO,IAAIC,8EAAsC,CAACD,MAAM,CAAC;IAC7D;EACJ,CAAC;AACL,CAAC;AAACE,OAAA,CAAAJ,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { Client } from "@webiny/api-elasticsearch";
2
+ import { IElasticsearchFetcher, IElasticsearchFetcherFetchParams, IElasticsearchFetcherFetchResponse } from "./abstractions/ElasticsearchFetcher";
3
+ export interface IElasticsearchFetcherParams {
4
+ client: Client;
5
+ }
6
+ export declare class ElasticsearchFetcher implements IElasticsearchFetcher {
7
+ private readonly client;
8
+ constructor(params: IElasticsearchFetcherParams);
9
+ fetch({ index, cursor, limit }: IElasticsearchFetcherFetchParams): Promise<IElasticsearchFetcherFetchResponse>;
10
+ }