@webiny/api-elasticsearch-tasks 6.3.0-beta.4 → 6.4.0-beta.0

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 (97) hide show
  1. package/abstractions/DbRegistry.js +2 -1
  2. package/abstractions/DbRegistry.js.map +1 -1
  3. package/abstractions/OpensearchTenantIndexFactory.js +2 -1
  4. package/abstractions/OpensearchTenantIndexFactory.js.map +1 -1
  5. package/abstractions/SynchronizationContext.js +2 -1
  6. package/abstractions/SynchronizationContext.js.map +1 -1
  7. package/errors/IndexSettingsGetError.js +10 -9
  8. package/errors/IndexSettingsGetError.js.map +1 -1
  9. package/errors/IndexSettingsSetError.js +10 -9
  10. package/errors/IndexSettingsSetError.js.map +1 -1
  11. package/errors/IndexingDisableError.js +3 -1
  12. package/errors/IndexingDisableError.js.map +1 -1
  13. package/errors/IndexingEnableError.js +3 -1
  14. package/errors/IndexingEnableError.js.map +1 -1
  15. package/errors/index.js +0 -2
  16. package/helpers/getClients.js +9 -10
  17. package/helpers/getClients.js.map +1 -1
  18. package/helpers/scan.js +12 -14
  19. package/helpers/scan.js.map +1 -1
  20. package/index.js +14 -11
  21. package/index.js.map +1 -1
  22. package/package.json +22 -22
  23. package/settings/DisableIndexing.js +16 -15
  24. package/settings/DisableIndexing.js.map +1 -1
  25. package/settings/EnableIndexing.js +16 -15
  26. package/settings/EnableIndexing.js.map +1 -1
  27. package/settings/IndexManager.js +67 -79
  28. package/settings/IndexManager.js.map +1 -1
  29. package/settings/IndexSettingsManager.js +31 -30
  30. package/settings/IndexSettingsManager.js.map +1 -1
  31. package/settings/index.js +0 -2
  32. package/settings/types.js +0 -3
  33. package/tasks/Manager.js +23 -24
  34. package/tasks/Manager.js.map +1 -1
  35. package/tasks/createIndexes/CreateIndexesTask.js +33 -48
  36. package/tasks/createIndexes/CreateIndexesTask.js.map +1 -1
  37. package/tasks/createIndexes/CreateIndexesTaskRunner.js +45 -61
  38. package/tasks/createIndexes/CreateIndexesTaskRunner.js.map +1 -1
  39. package/tasks/createIndexes/OnBeforeTrigger.js +28 -41
  40. package/tasks/createIndexes/OnBeforeTrigger.js.map +1 -1
  41. package/tasks/createIndexes/createIndex.js +12 -17
  42. package/tasks/createIndexes/createIndex.js.map +1 -1
  43. package/tasks/createIndexes/index.js +9 -12
  44. package/tasks/createIndexes/index.js.map +1 -1
  45. package/tasks/createIndexes/listIndexes.js +10 -16
  46. package/tasks/createIndexes/listIndexes.js.map +1 -1
  47. package/tasks/createIndexes/types.js +0 -3
  48. package/tasks/dataSynchronization/DataSynchronizationTask.js +52 -64
  49. package/tasks/dataSynchronization/DataSynchronizationTask.js.map +1 -1
  50. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js +31 -39
  51. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js.map +1 -1
  52. package/tasks/dataSynchronization/createFactories.js +4 -7
  53. package/tasks/dataSynchronization/createFactories.js.map +1 -1
  54. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js +65 -89
  55. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js.map +1 -1
  56. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js +49 -62
  57. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js.map +1 -1
  58. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js +50 -62
  59. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js.map +1 -1
  60. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js +0 -3
  61. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js +0 -3
  62. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js +7 -4
  63. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -1
  64. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js +14 -20
  65. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js.map +1 -1
  66. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js +7 -8
  67. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js.map +1 -1
  68. package/tasks/dataSynchronization/entities/getTable.js +13 -19
  69. package/tasks/dataSynchronization/entities/getTable.js.map +1 -1
  70. package/tasks/dataSynchronization/entities/index.js +0 -2
  71. package/tasks/dataSynchronization/index.js +15 -18
  72. package/tasks/dataSynchronization/index.js.map +1 -1
  73. package/tasks/dataSynchronization/types.js +0 -3
  74. package/tasks/enableIndexing/EnableIndexingTaskRunner.js +27 -35
  75. package/tasks/enableIndexing/EnableIndexingTaskRunner.js.map +1 -1
  76. package/tasks/enableIndexing/index.js +23 -33
  77. package/tasks/enableIndexing/index.js.map +1 -1
  78. package/tasks/enableIndexing/types.js +0 -3
  79. package/tasks/index.js +0 -2
  80. package/tasks/reindexing/ReindexingTaskRunner.js +75 -119
  81. package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -1
  82. package/tasks/reindexing/index.js +0 -2
  83. package/tasks/reindexing/reindexingTaskDefinition.js +25 -40
  84. package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -1
  85. package/types.js +0 -3
  86. package/errors/index.js.map +0 -1
  87. package/settings/index.js.map +0 -1
  88. package/settings/types.js.map +0 -1
  89. package/tasks/createIndexes/types.js.map +0 -1
  90. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js.map +0 -1
  91. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js.map +0 -1
  92. package/tasks/dataSynchronization/entities/index.js.map +0 -1
  93. package/tasks/dataSynchronization/types.js.map +0 -1
  94. package/tasks/enableIndexing/types.js.map +0 -1
  95. package/tasks/index.js.map +0 -1
  96. package/tasks/reindexing/index.js.map +0 -1
  97. package/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["IndexSettingsManager","DisableIndexing","EnableIndexing","getObjectProperties","defaultIndexSettings","numberOfReplicas","refreshInterval","indexPrefix","process","env","OPENSEARCH_INDEX_PREFIX","filterIndex","item","startsWith","IndexManager","settings","_settings","constructor","client","defaults","indexSettings","disable","enable","list","response","cat","indices","format","Array","isArray","body","map","index","filter","ex","console","error","JSON","stringify","message","disableIndexing","exec","enableIndexing","indexes","Object","keys","createIndex","create","indexExists","exists","ignore_unavailable","allow_no_indices","include_defaults","flat_settings","local"],"sources":["IndexManager.ts"],"sourcesContent":["import { IndexSettingsManager } from \"~/settings/IndexSettingsManager.js\";\nimport { DisableIndexing } from \"./DisableIndexing.js\";\nimport { EnableIndexing } from \"./EnableIndexing.js\";\nimport type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types.js\";\nimport type { IIndexManager } from \"~/settings/types.js\";\nimport type { Client } from \"@webiny/api-opensearch\";\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.OPENSEARCH_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({\n format: \"json\"\n });\n if (!Array.isArray(response.body)) {\n return [];\n }\n return response.body\n .map(item => item.index)\n .filter((index): index is string => filterIndex(index));\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,"file":"settings/IndexManager.js","sources":["../../src/settings/IndexManager.ts"],"sourcesContent":["import { IndexSettingsManager } from \"~/settings/IndexSettingsManager.js\";\nimport { DisableIndexing } from \"./DisableIndexing.js\";\nimport { EnableIndexing } from \"./EnableIndexing.js\";\nimport type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types.js\";\nimport type { IIndexManager } from \"~/settings/types.js\";\nimport type { Client } from \"@webiny/api-opensearch\";\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.OPENSEARCH_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({\n format: \"json\"\n });\n if (!Array.isArray(response.body)) {\n return [];\n }\n return response.body\n .map(item => item.index)\n .filter((index): index is string => filterIndex(index));\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"],"names":["defaultIndexSettings","indexPrefix","process","filterIndex","item","IndexManager","client","settings","defaults","indexSettings","IndexSettingsManager","DisableIndexing","EnableIndexing","response","Array","index","ex","console","JSON","getObjectProperties","indexes","Object"],"mappings":";;;;AAQA,MAAMA,uBAA6C;IAC/C,kBAAkB;IAClB,iBAAiB;AACrB;AAMA,MAAMC,cAAcC,QAAQ,GAAG,CAAC,uBAAuB,IAAI;AAC3D,MAAMC,cAAc,CAACC;IACjB,IAAI,CAACA,MACD,OAAO;IACJ,IAAIA,KAAK,UAAU,CAAC,MACvB,OAAO;IACJ,IAAIH,aACP,OAAOG,KAAK,UAAU,CAACH;IAE3B,OAAO;AACX;AAEO,MAAMI;IAQT,IAAW,WAAqD;QAC5D,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,YACIC,MAAc,EACdC,QAAkD,EAClDC,QAAwC,CAC1C;QACE,MAAMC,gBAAgB,IAAIC,qBAAqBJ;QAC/C,IAAI,CAAC,MAAM,GAAGA;QACd,IAAI,CAAC,OAAO,GAAG,IAAIK,gBAAgBF;QACnC,IAAI,CAAC,MAAM,GAAG,IAAIG,eAAeH;QACjC,IAAI,CAAC,SAAS,GAAGF;QACjB,IAAI,CAAC,QAAQ,GAAG;YACZ,iBAAiBC,UAAU,mBAAmBR,qBAAqB,eAAe;YAClF,kBAAkBQ,UAAU,oBAAoBR,qBAAqB,gBAAgB;QACzF;IACJ;IAEA,MAAa,OAA0B;QACnC,IAAI;YACA,MAAMa,WAAW,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBAC3C,QAAQ;YACZ;YACA,IAAI,CAACC,MAAM,OAAO,CAACD,SAAS,IAAI,GAC5B,OAAO,EAAE;YAEb,OAAOA,SAAS,IAAI,CACf,GAAG,CAACT,CAAAA,OAAQA,KAAK,KAAK,EACtB,MAAM,CAAC,CAACW,QAA2BZ,YAAYY;QACxD,EAAE,OAAOC,IAAI;YACTC,QAAQ,KAAK,CACTC,KAAK,SAAS,CAAC;gBACX,SAAS;gBACT,OAAOC,oBAAoBH;YAC/B;YAEJ,OAAO,EAAE;QACb;IACJ;IAEA,MAAa,gBAAgBD,KAAa,EAAE;QAIxC,IAAI,IAAI,CAAC,SAAS,CAACA,MAAM,EACrB,OAAO,IAAI,CAAC,SAAS,CAACA,MAAM;QAEhC,MAAMR,WAAW,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAACQ;QACzC,IAAI,CAAC,SAAS,CAACA,MAAM,GAAGR;QACxB,OAAOA;IACX;IAEA,MAAa,eAAeQ,KAAc,EAAE;QACxC,IAAI,CAACA,OAAO;YACR,MAAMK,UAAUC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;YAC1C,KAAK,MAAMN,SAASK,QAChB,MAAM,IAAI,CAAC,cAAc,CAACL;YAE9B;QACJ;QACA,MAAMR,WAAW,IAAI,CAAC,SAAS,CAACQ,MAAM,IAAI,IAAI,CAAC,QAAQ;QACvD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAACA,OAAOR;IAClC;IAEA,MAAa,YAAYQ,KAAa,EAAER,QAA8B,EAAiB;QACnF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7BQ;YACA,MAAMR;QACV;IACJ;IAEA,MAAa,YAAYQ,KAAa,EAAoB;QACtD,MAAMF,WAAW,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9CE;YACA,oBAAoB;YACpB,kBAAkB;YAClB,kBAAkB;YAClB,eAAe;YACf,OAAO;QACX;QACA,OAAO,CAAC,CAACF,SAAS,IAAI;IAC1B;AACJ"}
@@ -1,37 +1,38 @@
1
1
  import { IndexSettingsGetError, IndexSettingsSetError } from "../errors/index.js";
2
- export class IndexSettingsManager {
3
- constructor(elasticsearch) {
4
- this.elasticsearch = elasticsearch;
5
- }
6
- async getSettings(index) {
7
- try {
8
- const response = await this.elasticsearch.indices.getSettings({
9
- index
10
- });
11
- const setting = response.body[index]?.settings?.index;
12
- return {
13
- numberOfReplicas: parseInt(String(setting?.number_of_replicas ?? "0"), 10),
14
- refreshInterval: setting?.refresh_interval ?? "1s"
15
- };
16
- } catch (ex) {
17
- throw new IndexSettingsGetError(ex, index);
2
+ class IndexSettingsManager {
3
+ constructor(elasticsearch){
4
+ this.elasticsearch = elasticsearch;
18
5
  }
19
- }
20
- async setSettings(index, settings) {
21
- try {
22
- await this.elasticsearch.indices.putSettings({
23
- index,
24
- body: {
25
- index: {
26
- number_of_replicas: settings.numberOfReplicas,
27
- refresh_interval: settings.refreshInterval
28
- }
6
+ async getSettings(index) {
7
+ try {
8
+ const response = await this.elasticsearch.indices.getSettings({
9
+ index
10
+ });
11
+ const setting = response.body[index]?.settings?.index;
12
+ return {
13
+ numberOfReplicas: parseInt(String(setting?.number_of_replicas ?? "0"), 10),
14
+ refreshInterval: setting?.refresh_interval ?? "1s"
15
+ };
16
+ } catch (ex) {
17
+ throw new IndexSettingsGetError(ex, index);
18
+ }
19
+ }
20
+ async setSettings(index, settings) {
21
+ try {
22
+ await this.elasticsearch.indices.putSettings({
23
+ index,
24
+ body: {
25
+ index: {
26
+ number_of_replicas: settings.numberOfReplicas,
27
+ refresh_interval: settings.refreshInterval
28
+ }
29
+ }
30
+ });
31
+ } catch (ex) {
32
+ throw new IndexSettingsSetError(ex, index);
29
33
  }
30
- });
31
- } catch (ex) {
32
- throw new IndexSettingsSetError(ex, index);
33
34
  }
34
- }
35
35
  }
36
+ export { IndexSettingsManager };
36
37
 
37
38
  //# sourceMappingURL=IndexSettingsManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["IndexSettingsGetError","IndexSettingsSetError","IndexSettingsManager","constructor","elasticsearch","getSettings","index","response","indices","setting","body","settings","numberOfReplicas","parseInt","String","number_of_replicas","refreshInterval","refresh_interval","ex","setSettings","putSettings"],"sources":["IndexSettingsManager.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport { IndexSettingsGetError, IndexSettingsSetError } from \"~/errors/index.js\";\nimport type { IIndexSettingsValues } from \"~/types.js\";\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: parseInt(String(setting?.number_of_replicas ?? \"0\"), 10),\n refreshInterval: setting?.refresh_interval ?? \"1s\"\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,SAASA,qBAAqB,EAAEC,qBAAqB;AAGrD,OAAO,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,EAAEK,QAAQ,EAAEL,KAAK;MAErD,OAAO;QACHM,gBAAgB,EAAEC,QAAQ,CAACC,MAAM,CAACL,OAAO,EAAEM,kBAAkB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1EC,eAAe,EAAEP,OAAO,EAAEQ,gBAAgB,IAAI;MAClD,CAAC;IACL,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAIlB,qBAAqB,CAACkB,EAAE,EAAEZ,KAAK,CAAC;IAC9C;EACJ;EAEA,MAAaa,WAAWA,CAACb,KAAa,EAAEK,QAA8B,EAAiB;IACnF,IAAI;MACA,MAAM,IAAI,CAACP,aAAa,CAACI,OAAO,CAACY,WAAW,CAAC;QACzCd,KAAK;QACLI,IAAI,EAAE;UACFJ,KAAK,EAAE;YACHS,kBAAkB,EAAEJ,QAAQ,CAACC,gBAAgB;YAC7CK,gBAAgB,EAAEN,QAAQ,CAACK;UAC/B;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,MAAM,IAAIjB,qBAAqB,CAACiB,EAAE,EAAEZ,KAAK,CAAC;IAC9C;EACJ;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"settings/IndexSettingsManager.js","sources":["../../src/settings/IndexSettingsManager.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport { IndexSettingsGetError, IndexSettingsSetError } from \"~/errors/index.js\";\nimport type { IIndexSettingsValues } from \"~/types.js\";\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: parseInt(String(setting?.number_of_replicas ?? \"0\"), 10),\n refreshInterval: setting?.refresh_interval ?? \"1s\"\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"],"names":["IndexSettingsManager","elasticsearch","index","response","setting","parseInt","String","ex","IndexSettingsGetError","settings","IndexSettingsSetError"],"mappings":";AAIO,MAAMA;IAGT,YAAmBC,aAAqB,CAAE;QACtC,IAAI,CAAC,aAAa,GAAGA;IACzB;IAEA,MAAa,YAAYC,KAAa,EAAiC;QACnE,IAAI;YACA,MAAMC,WAAW,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC1DD;YACJ;YAEA,MAAME,UAAUD,SAAS,IAAI,CAACD,MAAM,EAAE,UAAU;YAEhD,OAAO;gBACH,kBAAkBG,SAASC,OAAOF,SAAS,sBAAsB,MAAM;gBACvE,iBAAiBA,SAAS,oBAAoB;YAClD;QACJ,EAAE,OAAOG,IAAI;YACT,MAAM,IAAIC,sBAAsBD,IAAIL;QACxC;IACJ;IAEA,MAAa,YAAYA,KAAa,EAAEO,QAA8B,EAAiB;QACnF,IAAI;YACA,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC;gBACzCP;gBACA,MAAM;oBACF,OAAO;wBACH,oBAAoBO,SAAS,gBAAgB;wBAC7C,kBAAkBA,SAAS,eAAe;oBAC9C;gBACJ;YACJ;QACJ,EAAE,OAAOF,IAAI;YACT,MAAM,IAAIG,sBAAsBH,IAAIL;QACxC;IACJ;AACJ"}
package/settings/index.js CHANGED
@@ -1,3 +1 @@
1
1
  export * from "./IndexManager.js";
2
-
3
- //# sourceMappingURL=index.js.map
package/settings/types.js CHANGED
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=types.js.map
package/tasks/Manager.js CHANGED
@@ -1,30 +1,29 @@
1
1
  import { createOpenSearchEntity, createOpenSearchTable } from "@webiny/api-opensearch";
2
2
  import { batchReadAll } from "@webiny/db-dynamodb/utils/batch/batchRead.js";
3
- export class Manager {
4
- entities = {};
5
- constructor(params) {
6
- this.controller = params.controller;
7
- this.documentClient = params.documentClient;
8
- this.elasticsearch = params.elasticsearchClient;
9
- this.table = createOpenSearchTable({
10
- documentClient: this.documentClient
11
- });
12
- }
13
- getEntity(name) {
14
- if (this.entities[name]) {
15
- return this.entities[name];
3
+ class Manager {
4
+ constructor(params){
5
+ this.entities = {};
6
+ this.controller = params.controller;
7
+ this.documentClient = params.documentClient;
8
+ this.elasticsearch = params.elasticsearchClient;
9
+ this.table = createOpenSearchTable({
10
+ documentClient: this.documentClient
11
+ });
12
+ }
13
+ getEntity(name) {
14
+ if (this.entities[name]) return this.entities[name];
15
+ return this.entities[name] = createOpenSearchEntity({
16
+ table: this.table,
17
+ entityName: name
18
+ });
19
+ }
20
+ async read(items) {
21
+ return await batchReadAll({
22
+ table: this.table.table,
23
+ items
24
+ });
16
25
  }
17
- return this.entities[name] = createOpenSearchEntity({
18
- table: this.table,
19
- entityName: name
20
- });
21
- }
22
- async read(items) {
23
- return await batchReadAll({
24
- table: this.table.table,
25
- items
26
- });
27
- }
28
26
  }
27
+ export { Manager };
29
28
 
30
29
  //# sourceMappingURL=Manager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createOpenSearchEntity","createOpenSearchTable","batchReadAll","Manager","entities","constructor","params","controller","documentClient","elasticsearch","elasticsearchClient","table","getEntity","name","entityName","read","items"],"sources":["Manager.ts"],"sourcesContent":["import { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { Client } from \"@webiny/api-opensearch\";\nimport { createOpenSearchEntity, createOpenSearchTable } from \"@webiny/api-opensearch\";\nimport type { IManager } from \"~/types.js\";\nimport type { BatchReadItem } from \"@webiny/db-dynamodb/utils/batch/batchRead.js\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batch/batchRead.js\";\nimport type { IEntity } from \"@webiny/db-dynamodb\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface ManagerParams<\n T extends TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput\n> {\n documentClient: DynamoDBDocument;\n elasticsearchClient: Client;\n controller: TaskController.Interface<T, O>;\n}\n\nexport class Manager<\n T extends TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n> implements IManager<T, O> {\n public readonly controller: TaskController.Interface<T, O>;\n public readonly documentClient: DynamoDBDocument;\n public readonly elasticsearch: Client;\n public readonly table: ReturnType<typeof createOpenSearchTable>;\n\n private readonly entities: Record<string, IEntity> = {};\n\n public constructor(params: ManagerParams<T, O>) {\n this.controller = params.controller;\n this.documentClient = params.documentClient;\n this.elasticsearch = params.elasticsearchClient;\n\n this.table = createOpenSearchTable({\n documentClient: this.documentClient\n });\n }\n\n public getEntity(name: string): IEntity {\n if (this.entities[name]) {\n return this.entities[name];\n }\n\n return (this.entities[name] = createOpenSearchEntity({\n table: this.table,\n entityName: name\n }));\n }\n\n public async read<T>(items: BatchReadItem[]): Promise<T[]> {\n return await batchReadAll<T>({\n table: this.table.table,\n items\n });\n }\n}\n"],"mappings":"AAGA,SAASA,sBAAsB,EAAEC,qBAAqB,QAAQ,wBAAwB;AAGtF,SAASC,YAAY,QAAQ,8CAA8C;AAa3E,OAAO,MAAMC,OAAO,CAGQ;EAMPC,QAAQ,GAA4B,CAAC,CAAC;EAEhDC,WAAWA,CAACC,MAA2B,EAAE;IAC5C,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU;IACnC,IAAI,CAACC,cAAc,GAAGF,MAAM,CAACE,cAAc;IAC3C,IAAI,CAACC,aAAa,GAAGH,MAAM,CAACI,mBAAmB;IAE/C,IAAI,CAACC,KAAK,GAAGV,qBAAqB,CAAC;MAC/BO,cAAc,EAAE,IAAI,CAACA;IACzB,CAAC,CAAC;EACN;EAEOI,SAASA,CAACC,IAAY,EAAW;IACpC,IAAI,IAAI,CAACT,QAAQ,CAACS,IAAI,CAAC,EAAE;MACrB,OAAO,IAAI,CAACT,QAAQ,CAACS,IAAI,CAAC;IAC9B;IAEA,OAAQ,IAAI,CAACT,QAAQ,CAACS,IAAI,CAAC,GAAGb,sBAAsB,CAAC;MACjDW,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBG,UAAU,EAAED;IAChB,CAAC,CAAC;EACN;EAEA,MAAaE,IAAIA,CAAIC,KAAsB,EAAgB;IACvD,OAAO,MAAMd,YAAY,CAAI;MACzBS,KAAK,EAAE,IAAI,CAACA,KAAK,CAACA,KAAK;MACvBK;IACJ,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"tasks/Manager.js","sources":["../../src/tasks/Manager.ts"],"sourcesContent":["import { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { Client } from \"@webiny/api-opensearch\";\nimport { createOpenSearchEntity, createOpenSearchTable } from \"@webiny/api-opensearch\";\nimport type { IManager } from \"~/types.js\";\nimport type { BatchReadItem } from \"@webiny/db-dynamodb/utils/batch/batchRead.js\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batch/batchRead.js\";\nimport type { IEntity } from \"@webiny/db-dynamodb\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface ManagerParams<\n T extends TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput\n> {\n documentClient: DynamoDBDocument;\n elasticsearchClient: Client;\n controller: TaskController.Interface<T, O>;\n}\n\nexport class Manager<\n T extends TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n> implements IManager<T, O> {\n public readonly controller: TaskController.Interface<T, O>;\n public readonly documentClient: DynamoDBDocument;\n public readonly elasticsearch: Client;\n public readonly table: ReturnType<typeof createOpenSearchTable>;\n\n private readonly entities: Record<string, IEntity> = {};\n\n public constructor(params: ManagerParams<T, O>) {\n this.controller = params.controller;\n this.documentClient = params.documentClient;\n this.elasticsearch = params.elasticsearchClient;\n\n this.table = createOpenSearchTable({\n documentClient: this.documentClient\n });\n }\n\n public getEntity(name: string): IEntity {\n if (this.entities[name]) {\n return this.entities[name];\n }\n\n return (this.entities[name] = createOpenSearchEntity({\n table: this.table,\n entityName: name\n }));\n }\n\n public async read<T>(items: BatchReadItem[]): Promise<T[]> {\n return await batchReadAll<T>({\n table: this.table.table,\n items\n });\n }\n}\n"],"names":["Manager","params","createOpenSearchTable","name","createOpenSearchEntity","items","batchReadAll"],"mappings":";;AAmBO,MAAMA;IAWT,YAAmBC,MAA2B,CAAE;aAF/B,QAAQ,GAA4B,CAAC;QAGlD,IAAI,CAAC,UAAU,GAAGA,OAAO,UAAU;QACnC,IAAI,CAAC,cAAc,GAAGA,OAAO,cAAc;QAC3C,IAAI,CAAC,aAAa,GAAGA,OAAO,mBAAmB;QAE/C,IAAI,CAAC,KAAK,GAAGC,sBAAsB;YAC/B,gBAAgB,IAAI,CAAC,cAAc;QACvC;IACJ;IAEO,UAAUC,IAAY,EAAW;QACpC,IAAI,IAAI,CAAC,QAAQ,CAACA,KAAK,EACnB,OAAO,IAAI,CAAC,QAAQ,CAACA,KAAK;QAG9B,OAAQ,IAAI,CAAC,QAAQ,CAACA,KAAK,GAAGC,uBAAuB;YACjD,OAAO,IAAI,CAAC,KAAK;YACjB,YAAYD;QAChB;IACJ;IAEA,MAAa,KAAQE,KAAsB,EAAgB;QACvD,OAAO,MAAMC,aAAgB;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;YACvBD;QACJ;IACJ;AACJ"}
@@ -1,53 +1,38 @@
1
1
  import { CreateIndexesTaskRunner } from "./CreateIndexesTaskRunner.js";
2
- export class CreateIndexesTaskDefinition {
3
- id = "elasticsearchCreateIndexes";
4
- title = "Create Missing Elasticsearch Indexes";
5
- /**
6
- * Maximum number of iterations before the task goes into the error state.
7
- * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indexes is there to create.
8
- */
9
- maxIterations = 2;
10
- constructor(elasticsearchClient, documentClient, tenantContext, listTenantsUseCase, indexFactories) {
11
- this.elasticsearchClient = elasticsearchClient;
12
- this.documentClient = documentClient;
13
- this.tenantContext = tenantContext;
14
- this.listTenantsUseCase = listTenantsUseCase;
15
- this.indexFactories = indexFactories;
16
- }
17
- async run({
18
- input,
19
- controller
20
- }) {
21
- if (controller.runtime.isAborted()) {
22
- return controller.response.aborted();
2
+ class CreateIndexesTaskDefinition {
3
+ constructor(elasticsearchClient, documentClient, tenantContext, listTenantsUseCase, indexFactories){
4
+ this.elasticsearchClient = elasticsearchClient;
5
+ this.documentClient = documentClient;
6
+ this.tenantContext = tenantContext;
7
+ this.listTenantsUseCase = listTenantsUseCase;
8
+ this.indexFactories = indexFactories;
9
+ this.id = "elasticsearchCreateIndexes";
10
+ this.title = "Create Missing Elasticsearch Indexes";
11
+ this.maxIterations = 2;
12
+ }
13
+ async run({ input, controller }) {
14
+ if (controller.runtime.isAborted()) return controller.response.aborted();
15
+ const { Manager } = await import("../Manager.js");
16
+ const { IndexManager } = await import("../../settings/index.js");
17
+ const manager = new Manager({
18
+ elasticsearchClient: this.elasticsearchClient,
19
+ documentClient: this.documentClient,
20
+ controller
21
+ });
22
+ const indexManager = new IndexManager(manager.elasticsearch, {});
23
+ const createIndexesTaskRunner = new CreateIndexesTaskRunner(this.tenantContext, this.listTenantsUseCase, this.indexFactories, manager, indexManager);
24
+ return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));
25
+ }
26
+ async onBeforeTrigger() {
27
+ const { IndexManager } = await import("../../settings/index.js");
28
+ const indexManager = new IndexManager(this.elasticsearchClient, {});
29
+ const { OnBeforeTrigger } = await import("./OnBeforeTrigger.js");
30
+ const onBeforeTrigger = new OnBeforeTrigger(indexManager, this.tenantContext, this.indexFactories);
31
+ await onBeforeTrigger.run([
32
+ "wbytask"
33
+ ]);
23
34
  }
24
- const {
25
- Manager
26
- } = await import(/* webpackChunkName: "Manager" */"../Manager.js");
27
- const {
28
- IndexManager
29
- } = await import(/* webpackChunkName: "IndexManager" */"../../settings/index.js");
30
- const manager = new Manager({
31
- elasticsearchClient: this.elasticsearchClient,
32
- documentClient: this.documentClient,
33
- controller
34
- });
35
- const indexManager = new IndexManager(manager.elasticsearch, {});
36
- const createIndexesTaskRunner = new CreateIndexesTaskRunner(this.tenantContext, this.listTenantsUseCase, this.indexFactories, manager, indexManager);
37
- return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));
38
- }
39
- async onBeforeTrigger() {
40
- // Let's create a new index for the tasks first.
41
- const {
42
- IndexManager
43
- } = await import(/* webpackChunkName: "IndexManager" */"../../settings/index.js");
44
- const indexManager = new IndexManager(this.elasticsearchClient, {});
45
- const {
46
- OnBeforeTrigger
47
- } = await import(/* webpackChunkName: "OnBeforeTrigger" */"./OnBeforeTrigger.js");
48
- const onBeforeTrigger = new OnBeforeTrigger(indexManager, this.tenantContext, this.indexFactories);
49
- await onBeforeTrigger.run(["wbytask"]);
50
- }
51
35
  }
36
+ export { CreateIndexesTaskDefinition };
52
37
 
53
38
  //# sourceMappingURL=CreateIndexesTask.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CreateIndexesTaskRunner","CreateIndexesTaskDefinition","id","title","maxIterations","constructor","elasticsearchClient","documentClient","tenantContext","listTenantsUseCase","indexFactories","run","input","controller","runtime","isAborted","response","aborted","Manager","IndexManager","manager","indexManager","elasticsearch","createIndexesTaskRunner","execute","matching","Array","from","done","onBeforeTrigger","OnBeforeTrigger"],"sources":["CreateIndexesTask.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types.js\";\nimport type { IElasticsearchTaskConfig } from \"~/types.js\";\nimport { CreateIndexesTaskRunner } from \"~/tasks/createIndexes/CreateIndexesTaskRunner.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\n\nexport class CreateIndexesTaskDefinition implements TaskDefinition.Interface<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 indexes is there to create.\n */\n maxIterations = 2;\n\n constructor(\n private elasticsearchClient: IElasticsearchTaskConfig[\"elasticsearchClient\"],\n private documentClient: IElasticsearchTaskConfig[\"documentClient\"],\n private tenantContext: TenantContext.Interface,\n private listTenantsUseCase: ListTenantsUseCase.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[]\n ) {}\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<IElasticsearchCreateIndexesTaskInput>) {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager.js\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings/index.js\"\n );\n\n const manager = new Manager<IElasticsearchCreateIndexesTaskInput>({\n elasticsearchClient: this.elasticsearchClient,\n documentClient: this.documentClient,\n controller\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, {});\n\n const createIndexesTaskRunner = new CreateIndexesTaskRunner(\n this.tenantContext,\n this.listTenantsUseCase,\n this.indexFactories,\n manager,\n indexManager\n );\n\n return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));\n }\n\n async onBeforeTrigger() {\n // Let's create a new index for the tasks first.\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings/index.js\"\n );\n const indexManager = new IndexManager(this.elasticsearchClient, {});\n const { OnBeforeTrigger } = await import(\n /* webpackChunkName: \"OnBeforeTrigger\" */\n \"./OnBeforeTrigger.js\"\n );\n\n const onBeforeTrigger = new OnBeforeTrigger(\n indexManager,\n this.tenantContext,\n this.indexFactories\n );\n await onBeforeTrigger.run([\"wbytask\"]);\n }\n}\n"],"mappings":"AAGA,SAASA,uBAAuB;AAKhC,OAAO,MAAMC,2BAA2B,CAA2E;EAC/GC,EAAE,GAAG,4BAA4B;EACjCC,KAAK,GAAG,sCAAsC;EAC9C;AACJ;AACA;AACA;EACIC,aAAa,GAAG,CAAC;EAEjBC,WAAWA,CACCC,mBAAoE,EACpEC,cAA0D,EAC1DC,aAAsC,EACtCC,kBAAgD,EAChDC,cAAwD,EAClE;IAAA,KALUJ,mBAAoE,GAApEA,mBAAoE;IAAA,KACpEC,cAA0D,GAA1DA,cAA0D;IAAA,KAC1DC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,kBAAgD,GAAhDA,kBAAgD;IAAA,KAChDC,cAAwD,GAAxDA,cAAwD;EACjE;EAEH,MAAMC,GAAGA,CAAC;IACNC,KAAK;IACLC;EAC4D,CAAC,EAAE;IAC/D,IAAIA,UAAU,CAACC,OAAO,CAACC,SAAS,CAAC,CAAC,EAAE;MAChC,OAAOF,UAAU,CAACG,QAAQ,CAACC,OAAO,CAAC,CAAC;IACxC;IAEA,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,gDAEJ,CAAC;IACD,MAAM;MAAEC;IAAa,CAAC,GAAG,MAAM,MAAM,CACjC,+DACJ,CAAC;IAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAAuC;MAC9DZ,mBAAmB,EAAE,IAAI,CAACA,mBAAmB;MAC7CC,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCM;IACJ,CAAC,CAAC;IAEF,MAAMQ,YAAY,GAAG,IAAIF,YAAY,CAACC,OAAO,CAACE,aAAa,EAAE,CAAC,CAAC,CAAC;IAEhE,MAAMC,uBAAuB,GAAG,IAAIvB,uBAAuB,CACvD,IAAI,CAACQ,aAAa,EAClB,IAAI,CAACC,kBAAkB,EACvB,IAAI,CAACC,cAAc,EACnBU,OAAO,EACPC,YACJ,CAAC;IAED,OAAOE,uBAAuB,CAACC,OAAO,CAACZ,KAAK,CAACa,QAAQ,EAAEC,KAAK,CAACC,IAAI,CAACf,KAAK,CAACgB,IAAI,IAAI,EAAE,CAAC,CAAC;EACxF;EAEA,MAAMC,eAAeA,CAAA,EAAG;IACpB;IACA,MAAM;MAAEV;IAAa,CAAC,GAAG,MAAM,MAAM,CACjC,+DACJ,CAAC;IACD,MAAME,YAAY,GAAG,IAAIF,YAAY,CAAC,IAAI,CAACb,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM;MAAEwB;IAAgB,CAAC,GAAG,MAAM,MAAM,CACpC,+DAEJ,CAAC;IAED,MAAMD,eAAe,GAAG,IAAIC,eAAe,CACvCT,YAAY,EACZ,IAAI,CAACb,aAAa,EAClB,IAAI,CAACE,cACT,CAAC;IACD,MAAMmB,eAAe,CAAClB,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;EAC1C;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"tasks/createIndexes/CreateIndexesTask.js","sources":["../../../src/tasks/createIndexes/CreateIndexesTask.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types.js\";\nimport type { IElasticsearchTaskConfig } from \"~/types.js\";\nimport { CreateIndexesTaskRunner } from \"~/tasks/createIndexes/CreateIndexesTaskRunner.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\n\nexport class CreateIndexesTaskDefinition implements TaskDefinition.Interface<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 indexes is there to create.\n */\n maxIterations = 2;\n\n constructor(\n private elasticsearchClient: IElasticsearchTaskConfig[\"elasticsearchClient\"],\n private documentClient: IElasticsearchTaskConfig[\"documentClient\"],\n private tenantContext: TenantContext.Interface,\n private listTenantsUseCase: ListTenantsUseCase.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[]\n ) {}\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<IElasticsearchCreateIndexesTaskInput>) {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager.js\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings/index.js\"\n );\n\n const manager = new Manager<IElasticsearchCreateIndexesTaskInput>({\n elasticsearchClient: this.elasticsearchClient,\n documentClient: this.documentClient,\n controller\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, {});\n\n const createIndexesTaskRunner = new CreateIndexesTaskRunner(\n this.tenantContext,\n this.listTenantsUseCase,\n this.indexFactories,\n manager,\n indexManager\n );\n\n return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));\n }\n\n async onBeforeTrigger() {\n // Let's create a new index for the tasks first.\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings/index.js\"\n );\n const indexManager = new IndexManager(this.elasticsearchClient, {});\n const { OnBeforeTrigger } = await import(\n /* webpackChunkName: \"OnBeforeTrigger\" */\n \"./OnBeforeTrigger.js\"\n );\n\n const onBeforeTrigger = new OnBeforeTrigger(\n indexManager,\n this.tenantContext,\n this.indexFactories\n );\n await onBeforeTrigger.run([\"wbytask\"]);\n }\n}\n"],"names":["CreateIndexesTaskDefinition","elasticsearchClient","documentClient","tenantContext","listTenantsUseCase","indexFactories","input","controller","Manager","IndexManager","manager","indexManager","createIndexesTaskRunner","CreateIndexesTaskRunner","Array","OnBeforeTrigger","onBeforeTrigger"],"mappings":";AAQO,MAAMA;IAST,YACYC,mBAAoE,EACpEC,cAA0D,EAC1DC,aAAsC,EACtCC,kBAAgD,EAChDC,cAAwD,CAClE;aALUJ,mBAAmB,GAAnBA;aACAC,cAAc,GAAdA;aACAC,aAAa,GAAbA;aACAC,kBAAkB,GAAlBA;aACAC,cAAc,GAAdA;aAbZ,EAAE,GAAG;aACL,KAAK,GAAG;QAIP,KACD,aAAa,GAAG;IAQb;IAEH,MAAM,IAAI,EACNC,KAAK,EACLC,UAAU,EACmD,EAAE;QAC/D,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;QAGtC,MAAM,EAAEC,OAAO,EAAE,GAAG,MAAM,MAAM,CAAN;QAI1B,MAAM,EAAEC,YAAY,EAAE,GAAG,MAAM,MAAM,CAAN;QAI/B,MAAMC,UAAU,IAAIF,QAA8C;YAC9D,qBAAqB,IAAI,CAAC,mBAAmB;YAC7C,gBAAgB,IAAI,CAAC,cAAc;YACnCD;QACJ;QAEA,MAAMI,eAAe,IAAIF,aAAaC,QAAQ,aAAa,EAAE,CAAC;QAE9D,MAAME,0BAA0B,IAAIC,wBAChC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,cAAc,EACnBH,SACAC;QAGJ,OAAOC,wBAAwB,OAAO,CAACN,MAAM,QAAQ,EAAEQ,MAAM,IAAI,CAACR,MAAM,IAAI,IAAI,EAAE;IACtF;IAEA,MAAM,kBAAkB;QAEpB,MAAM,EAAEG,YAAY,EAAE,GAAG,MAAM,MAAM,CAAN;QAG/B,MAAME,eAAe,IAAIF,aAAa,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjE,MAAM,EAAEM,eAAe,EAAE,GAAG,MAAM,MAAM,CAAN;QAKlC,MAAMC,kBAAkB,IAAID,gBACxBJ,cACA,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc;QAEvB,MAAMK,gBAAgB,GAAG,CAAC;YAAC;SAAU;IACzC;AACJ"}
@@ -1,70 +1,54 @@
1
1
  import { listIndexes } from "./listIndexes.js";
2
2
  import { createIndexFactory } from "./createIndex.js";
3
- export class CreateIndexesTaskRunner {
4
- constructor(tenantContext, listTenantsUseCase, indexFactories, manager, indexManager) {
5
- this.tenantContext = tenantContext;
6
- this.listTenantsUseCase = listTenantsUseCase;
7
- this.indexFactories = indexFactories;
8
- this.indexManager = indexManager;
9
- this.taskController = manager.controller;
10
- }
11
- async execute(matching, done) {
12
- if (this.indexFactories.length === 0) {
13
- return this.taskController.response.done("No index plugins found.");
3
+ class CreateIndexesTaskRunner {
4
+ constructor(tenantContext, listTenantsUseCase, indexFactories, manager, indexManager){
5
+ this.tenantContext = tenantContext;
6
+ this.listTenantsUseCase = listTenantsUseCase;
7
+ this.indexFactories = indexFactories;
8
+ this.indexManager = indexManager;
9
+ this.taskController = manager.controller;
14
10
  }
15
- const tenantsResult = await this.listTenantsUseCase.execute();
16
- const tenants = tenantsResult.value;
17
- const indexes = await listIndexes(this.tenantContext, tenants, this.indexFactories);
18
- if (indexes.length === 0) {
19
- return this.taskController.response.done("No indexes found.");
20
- }
21
- const isIndexAllowed = index => {
22
- if (typeof matching !== "string" || !matching) {
23
- return true;
24
- }
25
- return index.includes(matching);
26
- };
27
- const createIndex = createIndexFactory(this.indexManager);
28
- for (const {
29
- index,
30
- settings
31
- } of indexes) {
32
- if (this.taskController.runtime.isAborted()) {
33
- return this.taskController.response.aborted();
34
- } else if (this.taskController.runtime.isCloseToTimeout()) {
35
- return this.taskController.response.continue({
36
- done
37
- });
38
- }
39
- try {
40
- if (done.includes(index)) {
41
- continue;
42
- } else if (isIndexAllowed(index) === false) {
43
- continue;
11
+ async execute(matching, done) {
12
+ if (0 === this.indexFactories.length) return this.taskController.response.done("No index plugins found.");
13
+ const tenantsResult = await this.listTenantsUseCase.execute();
14
+ const tenants = tenantsResult.value;
15
+ const indexes = await listIndexes(this.tenantContext, tenants, this.indexFactories);
16
+ if (0 === indexes.length) return this.taskController.response.done("No indexes found.");
17
+ const isIndexAllowed = (index)=>{
18
+ if ("string" != typeof matching || !matching) return true;
19
+ return index.includes(matching);
20
+ };
21
+ const createIndex = createIndexFactory(this.indexManager);
22
+ for (const { index, settings } of indexes){
23
+ if (this.taskController.runtime.isAborted()) return this.taskController.response.aborted();
24
+ if (this.taskController.runtime.isCloseToTimeout()) return this.taskController.response.continue({
25
+ done
26
+ });
27
+ try {
28
+ if (done.includes(index)) continue;
29
+ if (false === isIndexAllowed(index)) continue;
30
+ const exists = await this.indexManager.indexExists(index);
31
+ if (exists) continue;
32
+ done.push(index);
33
+ await createIndex.create(index, settings);
34
+ await this.taskController.logger.info({
35
+ message: `Index "${index}" created.`,
36
+ data: {
37
+ index
38
+ }
39
+ });
40
+ } catch (ex) {
41
+ await this.taskController.logger.error({
42
+ message: `Failed to create index "${index}".`,
43
+ error: ex
44
+ });
45
+ }
44
46
  }
45
- const exists = await this.indexManager.indexExists(index);
46
- if (exists) {
47
- continue;
48
- }
49
- done.push(index);
50
- await createIndex.create(index, settings);
51
- await this.taskController.logger.info({
52
- message: `Index "${index}" created.`,
53
- data: {
54
- index
55
- }
56
- });
57
- } catch (ex) {
58
- await this.taskController.logger.error({
59
- message: `Failed to create index "${index}".`,
60
- error: ex
47
+ return this.taskController.response.done("Indexes created.", {
48
+ done
61
49
  });
62
- }
63
50
  }
64
- return this.taskController.response.done("Indexes created.", {
65
- done
66
- });
67
- }
68
51
  }
52
+ export { CreateIndexesTaskRunner };
69
53
 
70
54
  //# sourceMappingURL=CreateIndexesTaskRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["listIndexes","createIndexFactory","CreateIndexesTaskRunner","constructor","tenantContext","listTenantsUseCase","indexFactories","manager","indexManager","taskController","controller","execute","matching","done","length","response","tenantsResult","tenants","value","indexes","isIndexAllowed","index","includes","createIndex","settings","runtime","isAborted","aborted","isCloseToTimeout","continue","exists","indexExists","push","create","logger","info","message","data","ex","error"],"sources":["CreateIndexesTaskRunner.ts"],"sourcesContent":["import type { Manager } from \"~/tasks/Manager.js\";\nimport type { IndexManager } from \"~/settings/index.js\";\nimport type { IElasticsearchCreateIndexesTaskInput } from \"./types.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"./createIndex.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\n\nexport class CreateIndexesTaskRunner {\n private taskController: TaskController.Interface;\n\n public constructor(\n private tenantContext: TenantContext.Interface,\n private listTenantsUseCase: ListTenantsUseCase.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[],\n manager: Manager<IElasticsearchCreateIndexesTaskInput>,\n private indexManager: IndexManager\n ) {\n this.taskController = manager.controller;\n }\n\n public async execute(\n matching: string | undefined,\n done: string[]\n ): Promise<TaskDefinition.Result> {\n if (this.indexFactories.length === 0) {\n return this.taskController.response.done(\"No index plugins found.\");\n }\n\n const tenantsResult = await this.listTenantsUseCase.execute();\n const tenants = tenantsResult.value;\n\n const indexes = await listIndexes(this.tenantContext, tenants, this.indexFactories);\n\n if (indexes.length === 0) {\n return this.taskController.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 const createIndex = createIndexFactory(this.indexManager);\n\n for (const { index, settings } of indexes) {\n if (this.taskController.runtime.isAborted()) {\n return this.taskController.response.aborted();\n } else if (this.taskController.runtime.isCloseToTimeout()) {\n return this.taskController.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 createIndex.create(index, settings);\n await this.taskController.logger.info({\n message: `Index \"${index}\" created.`,\n data: { index }\n });\n } catch (ex) {\n await this.taskController.logger.error({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.taskController.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"tasks/createIndexes/CreateIndexesTaskRunner.js","sources":["../../../src/tasks/createIndexes/CreateIndexesTaskRunner.ts"],"sourcesContent":["import type { Manager } from \"~/tasks/Manager.js\";\nimport type { IndexManager } from \"~/settings/index.js\";\nimport type { IElasticsearchCreateIndexesTaskInput } from \"./types.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"./createIndex.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\n\nexport class CreateIndexesTaskRunner {\n private taskController: TaskController.Interface;\n\n public constructor(\n private tenantContext: TenantContext.Interface,\n private listTenantsUseCase: ListTenantsUseCase.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[],\n manager: Manager<IElasticsearchCreateIndexesTaskInput>,\n private indexManager: IndexManager\n ) {\n this.taskController = manager.controller;\n }\n\n public async execute(\n matching: string | undefined,\n done: string[]\n ): Promise<TaskDefinition.Result> {\n if (this.indexFactories.length === 0) {\n return this.taskController.response.done(\"No index plugins found.\");\n }\n\n const tenantsResult = await this.listTenantsUseCase.execute();\n const tenants = tenantsResult.value;\n\n const indexes = await listIndexes(this.tenantContext, tenants, this.indexFactories);\n\n if (indexes.length === 0) {\n return this.taskController.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 const createIndex = createIndexFactory(this.indexManager);\n\n for (const { index, settings } of indexes) {\n if (this.taskController.runtime.isAborted()) {\n return this.taskController.response.aborted();\n } else if (this.taskController.runtime.isCloseToTimeout()) {\n return this.taskController.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 createIndex.create(index, settings);\n await this.taskController.logger.info({\n message: `Index \"${index}\" created.`,\n data: { index }\n });\n } catch (ex) {\n await this.taskController.logger.error({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.taskController.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n"],"names":["CreateIndexesTaskRunner","tenantContext","listTenantsUseCase","indexFactories","manager","indexManager","matching","done","tenantsResult","tenants","indexes","listIndexes","isIndexAllowed","index","createIndex","createIndexFactory","settings","exists","ex"],"mappings":";;AAWO,MAAMA;IAGT,YACYC,aAAsC,EACtCC,kBAAgD,EAChDC,cAAwD,EAChEC,OAAsD,EAC9CC,YAA0B,CACpC;aALUJ,aAAa,GAAbA;aACAC,kBAAkB,GAAlBA;aACAC,cAAc,GAAdA;aAEAE,YAAY,GAAZA;QAER,IAAI,CAAC,cAAc,GAAGD,QAAQ,UAAU;IAC5C;IAEA,MAAa,QACTE,QAA4B,EAC5BC,IAAc,EACgB;QAC9B,IAAI,AAA+B,MAA/B,IAAI,CAAC,cAAc,CAAC,MAAM,EAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;QAG7C,MAAMC,gBAAgB,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO;QAC3D,MAAMC,UAAUD,cAAc,KAAK;QAEnC,MAAME,UAAU,MAAMC,YAAY,IAAI,CAAC,aAAa,EAAEF,SAAS,IAAI,CAAC,cAAc;QAElF,IAAIC,AAAmB,MAAnBA,QAAQ,MAAM,EACd,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;QAG7C,MAAME,iBAAiB,CAACC;YACpB,IAAI,AAAoB,YAApB,OAAOP,YAAyB,CAACA,UACjC,OAAO;YAEX,OAAOO,MAAM,QAAQ,CAACP;QAC1B;QAEA,MAAMQ,cAAcC,mBAAmB,IAAI,CAAC,YAAY;QAExD,KAAK,MAAM,EAAEF,KAAK,EAAEG,QAAQ,EAAE,IAAIN,QAAS;YACvC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,IACrC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO;YACxC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,IACnD,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzCH;YACJ;YAEJ,IAAI;gBACA,IAAIA,KAAK,QAAQ,CAACM,QACd;gBACG,IAAID,AAA0B,UAA1BA,eAAeC,QACtB;gBAEJ,MAAMI,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAACJ;gBACnD,IAAII,QACA;gBAEJV,KAAK,IAAI,CAACM;gBACV,MAAMC,YAAY,MAAM,CAACD,OAAOG;gBAChC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClC,SAAS,CAAC,OAAO,EAAEH,MAAM,UAAU,CAAC;oBACpC,MAAM;wBAAEA;oBAAM;gBAClB;YACJ,EAAE,OAAOK,IAAI;gBACT,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;oBACnC,SAAS,CAAC,wBAAwB,EAAEL,MAAM,EAAE,CAAC;oBAC7C,OAAOK;gBACX;YACJ;QACJ;QAEA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB;YACzDX;QACJ;IACJ;AACJ"}
@@ -1,51 +1,38 @@
1
1
  import { listIndexes } from "./listIndexes.js";
2
2
  import { createIndexFactory } from "./createIndex.js";
3
- export class OnBeforeTrigger {
4
- constructor(indexManager, tenantContext, indexFactories) {
5
- this.indexManager = indexManager;
6
- this.tenantContext = tenantContext;
7
- this.indexFactories = indexFactories;
8
- }
9
- async run(targets) {
10
- const tenant = this.tenantContext.getTenant();
11
- if (!tenant) {
12
- throw new Error("Something went wrong, tenant not found when triggering a task.");
3
+ class OnBeforeTrigger {
4
+ constructor(indexManager, tenantContext, indexFactories){
5
+ this.indexManager = indexManager;
6
+ this.tenantContext = tenantContext;
7
+ this.indexFactories = indexFactories;
13
8
  }
14
- try {
15
- const allIndexes = await listIndexes(this.tenantContext, [tenant], this.indexFactories);
16
- const indexes = allIndexes.filter(index => {
17
- if (!targets?.length) {
18
- return true;
19
- }
20
- for (const t of targets) {
21
- if (index.index.includes(t)) {
22
- return true;
23
- }
24
- }
25
- return false;
26
- });
27
- if (indexes.length === 0) {
28
- console.warn("There are no indexes to create before triggering the Create indexes task.", {
29
- targets
30
- });
31
- return;
32
- }
33
- const createIndex = createIndexFactory(this.indexManager);
34
- for (const {
35
- index,
36
- settings
37
- } of indexes) {
9
+ async run(targets) {
10
+ const tenant = this.tenantContext.getTenant();
11
+ if (!tenant) throw new Error("Something went wrong, tenant not found when triggering a task.");
38
12
  try {
39
- console.log("Creating index", index);
40
- await createIndex.createIfNotExists(index, settings);
13
+ const allIndexes = await listIndexes(this.tenantContext, [
14
+ tenant
15
+ ], this.indexFactories);
16
+ const indexes = allIndexes.filter((index)=>{
17
+ if (!targets?.length) return true;
18
+ for (const t of targets)if (index.index.includes(t)) return true;
19
+ return false;
20
+ });
21
+ if (0 === indexes.length) return void console.warn("There are no indexes to create before triggering the Create indexes task.", {
22
+ targets
23
+ });
24
+ const createIndex = createIndexFactory(this.indexManager);
25
+ for (const { index, settings } of indexes)try {
26
+ console.log("Creating index", index);
27
+ await createIndex.createIfNotExists(index, settings);
28
+ } catch (ex) {
29
+ console.error(`Failed to create index "${index}".`, ex);
30
+ }
41
31
  } catch (ex) {
42
- console.error(`Failed to create index "${index}".`, ex);
32
+ console.error(ex);
43
33
  }
44
- }
45
- } catch (ex) {
46
- console.error(ex);
47
34
  }
48
- }
49
35
  }
36
+ export { OnBeforeTrigger };
50
37
 
51
38
  //# sourceMappingURL=OnBeforeTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["listIndexes","createIndexFactory","OnBeforeTrigger","constructor","indexManager","tenantContext","indexFactories","run","targets","tenant","getTenant","Error","allIndexes","indexes","filter","index","length","t","includes","console","warn","createIndex","settings","log","createIfNotExists","ex","error"],"sources":["OnBeforeTrigger.ts"],"sourcesContent":["import type { IndexManager } from \"~/settings/index.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"~/tasks/createIndexes/createIndex.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\n\nexport class OnBeforeTrigger {\n public constructor(\n private indexManager: IndexManager,\n private tenantContext: TenantContext.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[]\n ) {}\n\n public async run(targets: string[] | undefined): Promise<void> {\n const tenant = this.tenantContext.getTenant();\n if (!tenant) {\n throw new Error(\"Something went wrong, tenant not found when triggering a task.\");\n }\n\n try {\n const allIndexes = await listIndexes(this.tenantContext, [tenant], this.indexFactories);\n\n const indexes = allIndexes.filter(index => {\n if (!targets?.length) {\n return true;\n }\n for (const t of targets) {\n if (index.index.includes(t)) {\n return true;\n }\n }\n return false;\n });\n if (indexes.length === 0) {\n console.warn(\n \"There are no indexes to create before triggering the Create indexes task.\",\n {\n targets\n }\n );\n return;\n }\n\n const createIndex = createIndexFactory(this.indexManager);\n\n for (const { index, settings } of indexes) {\n try {\n console.log(\"Creating index\", index);\n await createIndex.createIfNotExists(index, settings);\n } catch (ex) {\n console.error(`Failed to create index \"${index}\".`, ex);\n }\n }\n } catch (ex) {\n console.error(ex);\n }\n }\n}\n"],"mappings":"AACA,SAASA,WAAW;AACpB,SAASC,kBAAkB;AAI3B,OAAO,MAAMC,eAAe,CAAC;EAClBC,WAAWA,CACNC,YAA0B,EAC1BC,aAAsC,EACtCC,cAAwD,EAClE;IAAA,KAHUF,YAA0B,GAA1BA,YAA0B;IAAA,KAC1BC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,cAAwD,GAAxDA,cAAwD;EACjE;EAEH,MAAaC,GAAGA,CAACC,OAA6B,EAAiB;IAC3D,MAAMC,MAAM,GAAG,IAAI,CAACJ,aAAa,CAACK,SAAS,CAAC,CAAC;IAC7C,IAAI,CAACD,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CAAC,gEAAgE,CAAC;IACrF;IAEA,IAAI;MACA,MAAMC,UAAU,GAAG,MAAMZ,WAAW,CAAC,IAAI,CAACK,aAAa,EAAE,CAACI,MAAM,CAAC,EAAE,IAAI,CAACH,cAAc,CAAC;MAEvF,MAAMO,OAAO,GAAGD,UAAU,CAACE,MAAM,CAACC,KAAK,IAAI;QACvC,IAAI,CAACP,OAAO,EAAEQ,MAAM,EAAE;UAClB,OAAO,IAAI;QACf;QACA,KAAK,MAAMC,CAAC,IAAIT,OAAO,EAAE;UACrB,IAAIO,KAAK,CAACA,KAAK,CAACG,QAAQ,CAACD,CAAC,CAAC,EAAE;YACzB,OAAO,IAAI;UACf;QACJ;QACA,OAAO,KAAK;MAChB,CAAC,CAAC;MACF,IAAIJ,OAAO,CAACG,MAAM,KAAK,CAAC,EAAE;QACtBG,OAAO,CAACC,IAAI,CACR,2EAA2E,EAC3E;UACIZ;QACJ,CACJ,CAAC;QACD;MACJ;MAEA,MAAMa,WAAW,GAAGpB,kBAAkB,CAAC,IAAI,CAACG,YAAY,CAAC;MAEzD,KAAK,MAAM;QAAEW,KAAK;QAAEO;MAAS,CAAC,IAAIT,OAAO,EAAE;QACvC,IAAI;UACAM,OAAO,CAACI,GAAG,CAAC,gBAAgB,EAAER,KAAK,CAAC;UACpC,MAAMM,WAAW,CAACG,iBAAiB,CAACT,KAAK,EAAEO,QAAQ,CAAC;QACxD,CAAC,CAAC,OAAOG,EAAE,EAAE;UACTN,OAAO,CAACO,KAAK,CAAC,2BAA2BX,KAAK,IAAI,EAAEU,EAAE,CAAC;QAC3D;MACJ;IACJ,CAAC,CAAC,OAAOA,EAAE,EAAE;MACTN,OAAO,CAACO,KAAK,CAACD,EAAE,CAAC;IACrB;EACJ;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"tasks/createIndexes/OnBeforeTrigger.js","sources":["../../../src/tasks/createIndexes/OnBeforeTrigger.ts"],"sourcesContent":["import type { IndexManager } from \"~/settings/index.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"~/tasks/createIndexes/createIndex.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\n\nexport class OnBeforeTrigger {\n public constructor(\n private indexManager: IndexManager,\n private tenantContext: TenantContext.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[]\n ) {}\n\n public async run(targets: string[] | undefined): Promise<void> {\n const tenant = this.tenantContext.getTenant();\n if (!tenant) {\n throw new Error(\"Something went wrong, tenant not found when triggering a task.\");\n }\n\n try {\n const allIndexes = await listIndexes(this.tenantContext, [tenant], this.indexFactories);\n\n const indexes = allIndexes.filter(index => {\n if (!targets?.length) {\n return true;\n }\n for (const t of targets) {\n if (index.index.includes(t)) {\n return true;\n }\n }\n return false;\n });\n if (indexes.length === 0) {\n console.warn(\n \"There are no indexes to create before triggering the Create indexes task.\",\n {\n targets\n }\n );\n return;\n }\n\n const createIndex = createIndexFactory(this.indexManager);\n\n for (const { index, settings } of indexes) {\n try {\n console.log(\"Creating index\", index);\n await createIndex.createIfNotExists(index, settings);\n } catch (ex) {\n console.error(`Failed to create index \"${index}\".`, ex);\n }\n }\n } catch (ex) {\n console.error(ex);\n }\n }\n}\n"],"names":["OnBeforeTrigger","indexManager","tenantContext","indexFactories","targets","tenant","Error","allIndexes","listIndexes","indexes","index","t","console","createIndex","createIndexFactory","settings","ex"],"mappings":";;AAMO,MAAMA;IACT,YACYC,YAA0B,EAC1BC,aAAsC,EACtCC,cAAwD,CAClE;aAHUF,YAAY,GAAZA;aACAC,aAAa,GAAbA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAa,IAAIC,OAA6B,EAAiB;QAC3D,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAC3C,IAAI,CAACA,QACD,MAAM,IAAIC,MAAM;QAGpB,IAAI;YACA,MAAMC,aAAa,MAAMC,YAAY,IAAI,CAAC,aAAa,EAAE;gBAACH;aAAO,EAAE,IAAI,CAAC,cAAc;YAEtF,MAAMI,UAAUF,WAAW,MAAM,CAACG,CAAAA;gBAC9B,IAAI,CAACN,SAAS,QACV,OAAO;gBAEX,KAAK,MAAMO,KAAKP,QACZ,IAAIM,MAAM,KAAK,CAAC,QAAQ,CAACC,IACrB,OAAO;gBAGf,OAAO;YACX;YACA,IAAIF,AAAmB,MAAnBA,QAAQ,MAAM,EAAQ,YACtBG,QAAQ,IAAI,CACR,6EACA;gBACIR;YACJ;YAKR,MAAMS,cAAcC,mBAAmB,IAAI,CAAC,YAAY;YAExD,KAAK,MAAM,EAAEJ,KAAK,EAAEK,QAAQ,EAAE,IAAIN,QAC9B,IAAI;gBACAG,QAAQ,GAAG,CAAC,kBAAkBF;gBAC9B,MAAMG,YAAY,iBAAiB,CAACH,OAAOK;YAC/C,EAAE,OAAOC,IAAI;gBACTJ,QAAQ,KAAK,CAAC,CAAC,wBAAwB,EAAEF,MAAM,EAAE,CAAC,EAAEM;YACxD;QAER,EAAE,OAAOA,IAAI;YACTJ,QAAQ,KAAK,CAACI;QAClB;IACJ;AACJ"}