@webiny/api-sync-to-opensearch 0.0.0-unstable.7c2def32a7 → 0.0.0-unstable.9609e4e0c9

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.
@@ -14,14 +14,13 @@ const checkErrors = (result)=>{
14
14
  if (!result || !result.body || !result.body.items) return;
15
15
  for (const item of result.body.items){
16
16
  const err = getError(item);
17
- if (err) {
18
- if ("index" === err) {
19
- if ("true" === process.env.DEBUG) console.error("Bulk response", JSON.stringify(result, null, 2));
20
- continue;
21
- }
22
- console.error("Body item with error", item);
23
- throw new WebinyError(err, "TO_OPENSEARCH_ERROR", item);
17
+ if (!err) continue;
18
+ else if ("index" === err) {
19
+ if ("true" === process.env.DEBUG) console.error("Bulk response", JSON.stringify(result, null, 2));
20
+ continue;
24
21
  }
22
+ console.error("Body item with error", item);
23
+ throw new WebinyError(err, "TO_OPENSEARCH_ERROR", item);
25
24
  }
26
25
  };
27
26
  class ExecuteSyncImpl {
@@ -1 +1 @@
1
- {"version":3,"file":"features/ExecuteSync/ExecuteSync.js","sources":["../../../src/features/ExecuteSync/ExecuteSync.ts"],"sourcesContent":["import {\n createWaitUntilHealthy,\n OpenSearchCatClusterHealthStatus,\n UnhealthyClusterError,\n WaitingHealthyClusterAbortedError\n} from \"@webiny/api-opensearch\";\nimport type { ApiResponse } from \"@webiny/api-opensearch/types.js\";\nimport { WebinyError } from \"@webiny/error\";\nimport { ExecuteSync as ExecuteSyncAbstraction } from \"./abstraction.js\";\nimport { Env } from \"@webiny/stdlib\";\nimport { Timer } from \"@webiny/utils/features/Timer/abstraction.js\";\nimport { OpenSearchClient } from \"@webiny/api-opensearch/exports/api/opensearch.js\";\n\ninterface BulkOperationsResponseBodyItemIndexError {\n reason?: string;\n}\n\ninterface BulkOperationsResponseBodyItemIndex {\n error?: BulkOperationsResponseBodyItemIndexError;\n}\n\ninterface BulkOperationsResponseBodyItem {\n index?: BulkOperationsResponseBodyItemIndex;\n error?: string;\n}\n\nconst getError = (item: BulkOperationsResponseBodyItem): string | null => {\n if (!item.index?.error?.reason) {\n return null;\n }\n const reason = item.index.error.reason;\n if (reason.match(/no such index \\[([a-zA-Z0-9_-]+)\\]/) !== null) {\n return \"index\";\n }\n return reason;\n};\n\nconst checkErrors = (result?: ApiResponse): void => {\n if (!result || !result.body || !result.body.items) {\n return;\n }\n for (const item of result.body.items) {\n const err = getError(item);\n if (!err) {\n continue;\n } else if (err === \"index\") {\n if (process.env.DEBUG === \"true\") {\n console.error(\"Bulk response\", JSON.stringify(result, null, 2));\n }\n continue;\n }\n console.error(\"Body item with error\", item);\n throw new WebinyError(err, \"TO_OPENSEARCH_ERROR\", item);\n }\n};\n\nclass ExecuteSyncImpl implements ExecuteSyncAbstraction.Interface {\n public constructor(\n private readonly env: Env.Interface,\n private readonly timer: Timer.Interface,\n private readonly openSearchClient: OpenSearchClient.Interface\n ) {}\n\n public async execute(params: ExecuteSyncAbstraction.Params): Promise<void> {\n const { maxProcessorPercent, maxRunningTime, operations } = params;\n\n if (operations.total === 0) {\n return;\n }\n\n const remainingTime = this.timer.getRemainingSeconds();\n const runningTime = maxRunningTime - remainingTime;\n const maxWaitingTime = remainingTime - 90;\n\n if (this.shouldShowLogs()) {\n console.debug(\n `The Lambda is already running for ${runningTime}s. Setting Health Check max waiting time: ${maxWaitingTime}s`\n );\n }\n\n const healthCheck = createWaitUntilHealthy(this.openSearchClient.use(), {\n minClusterHealthStatus: OpenSearchCatClusterHealthStatus.Yellow,\n waitingTimeStep: 30,\n maxProcessorPercent,\n maxWaitingTime\n });\n\n try {\n await healthCheck.wait({\n async onUnhealthy({ startedAt, runs, mustEndAt, waitingTimeStep, waitingReason }) {\n console.debug(`Cluster is unhealthy on run #${runs}.`, {\n startedAt,\n mustEndAt,\n waitingTimeStep,\n waitingReason\n });\n },\n async onTimeout({ startedAt, runs, waitingTimeStep, mustEndAt, waitingReason }) {\n console.error(`Cluster health check timeout on run #${runs}.`, {\n startedAt,\n mustEndAt,\n waitingTimeStep,\n waitingReason\n });\n }\n });\n } catch (ex) {\n if (\n ex instanceof UnhealthyClusterError ||\n ex instanceof WaitingHealthyClusterAbortedError\n ) {\n throw ex;\n }\n console.error(`Cluster health check failed.`, ex);\n throw ex;\n }\n\n try {\n const res = await this.openSearchClient.use().bulk({\n body: operations.items\n });\n checkErrors(res);\n } catch (error) {\n console.error(error, { tenant: \"root\" });\n\n if (this.shouldShowLogs()) {\n const meta = error?.meta || {};\n delete meta[\"meta\"];\n console.error(\"Bulk error\", JSON.stringify(error, null, 2));\n }\n throw error;\n }\n if (this.shouldShowLogs()) {\n console.info(`Transferred ${operations.total} record operations to OpenSearch.`);\n }\n }\n\n private shouldShowLogs(): boolean {\n /**\n * Don't show logs during tests, really no point.\n */\n if (this.env.getBoolean(\"TESTING\")) {\n return false;\n }\n return this.env.getBoolean(\"DEBUG\", false);\n }\n}\n\nexport const ExecuteSync = ExecuteSyncAbstraction.createImplementation({\n implementation: ExecuteSyncImpl,\n dependencies: [Env, Timer, OpenSearchClient]\n});\n"],"names":["getError","item","reason","checkErrors","result","err","process","console","JSON","WebinyError","ExecuteSyncImpl","env","timer","openSearchClient","params","maxProcessorPercent","maxRunningTime","operations","remainingTime","runningTime","maxWaitingTime","healthCheck","createWaitUntilHealthy","OpenSearchCatClusterHealthStatus","startedAt","runs","mustEndAt","waitingTimeStep","waitingReason","ex","UnhealthyClusterError","WaitingHealthyClusterAbortedError","res","error","meta","ExecuteSync","ExecuteSyncAbstraction","Env","Timer","OpenSearchClient"],"mappings":"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"}
1
+ {"version":3,"file":"features/ExecuteSync/ExecuteSync.js","sources":["../../../src/features/ExecuteSync/ExecuteSync.ts"],"sourcesContent":["import {\n createWaitUntilHealthy,\n OpenSearchCatClusterHealthStatus,\n UnhealthyClusterError,\n WaitingHealthyClusterAbortedError\n} from \"@webiny/api-opensearch\";\nimport type { ApiResponse } from \"@webiny/api-opensearch/types.js\";\nimport { WebinyError } from \"@webiny/error\";\nimport { ExecuteSync as ExecuteSyncAbstraction } from \"./abstraction.js\";\nimport { Env } from \"@webiny/stdlib\";\nimport { Timer } from \"@webiny/utils/features/Timer/abstraction.js\";\nimport { OpenSearchClient } from \"@webiny/api-opensearch/exports/api/opensearch.js\";\n\ninterface BulkOperationsResponseBodyItemIndexError {\n reason?: string;\n}\n\ninterface BulkOperationsResponseBodyItemIndex {\n error?: BulkOperationsResponseBodyItemIndexError;\n}\n\ninterface BulkOperationsResponseBodyItem {\n index?: BulkOperationsResponseBodyItemIndex;\n error?: string;\n}\n\nconst getError = (item: BulkOperationsResponseBodyItem): string | null => {\n if (!item.index?.error?.reason) {\n return null;\n }\n const reason = item.index.error.reason;\n if (reason.match(/no such index \\[([a-zA-Z0-9_-]+)\\]/) !== null) {\n return \"index\";\n }\n return reason;\n};\n\nconst checkErrors = (result?: ApiResponse): void => {\n if (!result || !result.body || !result.body.items) {\n return;\n }\n for (const item of result.body.items) {\n const err = getError(item);\n if (!err) {\n continue;\n } else if (err === \"index\") {\n if (process.env.DEBUG === \"true\") {\n console.error(\"Bulk response\", JSON.stringify(result, null, 2));\n }\n continue;\n }\n console.error(\"Body item with error\", item);\n throw new WebinyError(err, \"TO_OPENSEARCH_ERROR\", item);\n }\n};\n\nclass ExecuteSyncImpl implements ExecuteSyncAbstraction.Interface {\n public constructor(\n private readonly env: Env.Interface,\n private readonly timer: Timer.Interface,\n private readonly openSearchClient: OpenSearchClient.Interface\n ) {}\n\n public async execute(params: ExecuteSyncAbstraction.Params): Promise<void> {\n const { maxProcessorPercent, maxRunningTime, operations } = params;\n\n if (operations.total === 0) {\n return;\n }\n\n const remainingTime = this.timer.getRemainingSeconds();\n const runningTime = maxRunningTime - remainingTime;\n const maxWaitingTime = remainingTime - 90;\n\n if (this.shouldShowLogs()) {\n console.debug(\n `The Lambda is already running for ${runningTime}s. Setting Health Check max waiting time: ${maxWaitingTime}s`\n );\n }\n\n const healthCheck = createWaitUntilHealthy(this.openSearchClient.use(), {\n minClusterHealthStatus: OpenSearchCatClusterHealthStatus.Yellow,\n waitingTimeStep: 30,\n maxProcessorPercent,\n maxWaitingTime\n });\n\n try {\n await healthCheck.wait({\n async onUnhealthy({ startedAt, runs, mustEndAt, waitingTimeStep, waitingReason }) {\n console.debug(`Cluster is unhealthy on run #${runs}.`, {\n startedAt,\n mustEndAt,\n waitingTimeStep,\n waitingReason\n });\n },\n async onTimeout({ startedAt, runs, waitingTimeStep, mustEndAt, waitingReason }) {\n console.error(`Cluster health check timeout on run #${runs}.`, {\n startedAt,\n mustEndAt,\n waitingTimeStep,\n waitingReason\n });\n }\n });\n } catch (ex) {\n if (\n ex instanceof UnhealthyClusterError ||\n ex instanceof WaitingHealthyClusterAbortedError\n ) {\n throw ex;\n }\n console.error(`Cluster health check failed.`, ex);\n throw ex;\n }\n\n try {\n const res = await this.openSearchClient.use().bulk({\n body: operations.items\n });\n checkErrors(res);\n } catch (error) {\n console.error(error, { tenant: \"root\" });\n\n if (this.shouldShowLogs()) {\n const meta = error?.meta || {};\n delete meta[\"meta\"];\n console.error(\"Bulk error\", JSON.stringify(error, null, 2));\n }\n throw error;\n }\n if (this.shouldShowLogs()) {\n console.info(`Transferred ${operations.total} record operations to OpenSearch.`);\n }\n }\n\n private shouldShowLogs(): boolean {\n /**\n * Don't show logs during tests, really no point.\n */\n if (this.env.getBoolean(\"TESTING\")) {\n return false;\n }\n return this.env.getBoolean(\"DEBUG\", false);\n }\n}\n\nexport const ExecuteSync = ExecuteSyncAbstraction.createImplementation({\n implementation: ExecuteSyncImpl,\n dependencies: [Env, Timer, OpenSearchClient]\n});\n"],"names":["getError","item","reason","checkErrors","result","err","process","console","JSON","WebinyError","ExecuteSyncImpl","env","timer","openSearchClient","params","maxProcessorPercent","maxRunningTime","operations","remainingTime","runningTime","maxWaitingTime","healthCheck","createWaitUntilHealthy","OpenSearchCatClusterHealthStatus","startedAt","runs","mustEndAt","waitingTimeStep","waitingReason","ex","UnhealthyClusterError","WaitingHealthyClusterAbortedError","res","error","meta","ExecuteSync","ExecuteSyncAbstraction","Env","Timer","OpenSearchClient"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-sync-to-opensearch",
3
- "version": "0.0.0-unstable.7c2def32a7",
3
+ "version": "0.0.0-unstable.9609e4e0c9",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -15,17 +15,17 @@
15
15
  "license": "MIT",
16
16
  "author": "Webiny Ltd.",
17
17
  "dependencies": {
18
- "@webiny/api": "0.0.0-unstable.7c2def32a7",
19
- "@webiny/api-opensearch": "0.0.0-unstable.7c2def32a7",
20
- "@webiny/error": "0.0.0-unstable.7c2def32a7",
21
- "@webiny/feature": "0.0.0-unstable.7c2def32a7",
18
+ "@webiny/api": "0.0.0-unstable.9609e4e0c9",
19
+ "@webiny/api-opensearch": "0.0.0-unstable.9609e4e0c9",
20
+ "@webiny/error": "0.0.0-unstable.9609e4e0c9",
21
+ "@webiny/feature": "0.0.0-unstable.9609e4e0c9",
22
22
  "@webiny/stdlib": "0.0.21",
23
- "@webiny/utils": "0.0.0-unstable.7c2def32a7",
24
- "p-retry": "8.0.0"
23
+ "@webiny/utils": "0.0.0-unstable.9609e4e0c9",
24
+ "p-retry": "8.0.1"
25
25
  },
26
26
  "devDependencies": {
27
- "@webiny/build-tools": "0.0.0-unstable.7c2def32a7",
28
- "@webiny/plugins": "0.0.0-unstable.7c2def32a7",
27
+ "@webiny/build-tools": "0.0.0-unstable.9609e4e0c9",
28
+ "@webiny/plugins": "0.0.0-unstable.9609e4e0c9",
29
29
  "typescript": "7.0.2"
30
30
  },
31
31
  "publishConfig": {