From d23ee9438ad074a48440b73e24d9ffb8cf4408f8 Mon Sep 17 00:00:00 2001 From: varodv <72568818+alvarodE@users.noreply.github.com> Date: Mon, 20 May 2024 13:50:03 +0200 Subject: [PATCH 1/7] feat: Support Platform Test environment --- public/snippet-script.js | 2 +- src/adapter/adapter.ts | 118 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 1 deletion(-) diff --git a/public/snippet-script.js b/public/snippet-script.js index 8bbb1ac3..77b01884 100644 --- a/public/snippet-script.js +++ b/public/snippet-script.js @@ -30,7 +30,7 @@ function getEnv() { const envsDict = { live: '', staging: 'staging', - test: 'staging' + test: 'test' }; if (env) { diff --git a/src/adapter/adapter.ts b/src/adapter/adapter.ts index d83818b9..f6dcb883 100644 --- a/src/adapter/adapter.ts +++ b/src/adapter/adapter.ts @@ -1,3 +1,4 @@ +import { interpolate } from '@empathyco/x-adapter'; import { platformAdapter, PlatformRecommendationsRequest, @@ -10,11 +11,128 @@ import { } from '@empathyco/x-adapter-platform'; import { ExperienceControlsResponse, + ExtraParamsRequest, RecommendationsRequest, Result, SemanticQueriesRequest } from '@empathyco/x-types'; +// TODO Manage Platform Test URLs at @empathyco/x-adapter-platform level to avoid these extends: +// https://github.com/empathyco/x/pull/1477 + +/** + * Gets the Search service URL for the given request. + * + * @param from - The request. + * + * @returns The service URL. + * + * @internal + */ +function getSearchServiceUrl(from: ExtraParamsRequest): string { + return from.extraParams?.env === 'test' + ? 'https://search.internal.test.empathy.co' + : 'https://api.{extraParams.env(.)}empathy.co/search/v1'; +} + +/** + * Gets the Beacon service URL for the given request. + * + * @param from - The request. + * + * @returns The service URL. + * + * @internal + */ +function getBeaconServiceUrl(from: ExtraParamsRequest): string { + return from.extraParams?.env === 'test' + ? 'https://beacon-api.internal.test.empathy.co' + : 'https://api.{extraParams.env(.)}empathy.co'; +} + +/** + * Gets the Semantics service URL for the given request. + * + * @param from - The request. + * + * @returns The service URL. + * + * @internal + */ +function getSemanticsServiceUrl(from: ExtraParamsRequest): string { + return from.extraParams?.env === 'test' + ? 'https://semantics-api.internal.test.empathy.co' + : 'https://api.{extraParams.env(.)}empathy.co/semantics-api'; +} + +/** + * Gets the Config service URL for the given request. + * + * @param from - The request. + * + * @returns The service URL. + * + * @internal + */ +function getConfigServiceUrl(from: ExtraParamsRequest): string { + return from.extraParams?.env === 'test' + ? 'https://config-service.internal.test.empathy.co' + : 'https://api.{extraParams.env(.)}empathy.co/config/v1'; +} + +const searchEndpointAdapter = platformAdapter.search.extends({ + endpoint: from => + interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/search`, from) +}); +platformAdapter.search = searchEndpointAdapter; + +const popularSearchesEndpointAdapter = platformAdapter.popularSearches.extends({ + endpoint: from => + interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/empathize`, from) +}); +platformAdapter.popularSearches = popularSearchesEndpointAdapter; + +const recommendationsEndpointAdapter = platformAdapter.recommendations.extends({ + endpoint: from => + interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/topclicked`, from) +}); +platformAdapter.recommendations = recommendationsEndpointAdapter; + +const nextQueriesEndpointAdapter = platformAdapter.nextQueries.extends({ + endpoint: from => + interpolate(`${getBeaconServiceUrl(from)}/nextqueries/{extraParams.instance}`, from) +}); +platformAdapter.nextQueries = nextQueriesEndpointAdapter; + +const querySuggestionsEndpointAdapter = platformAdapter.querySuggestions.extends({ + endpoint: from => + interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/empathize`, from) +}); +platformAdapter.querySuggestions = querySuggestionsEndpointAdapter; + +const relatedTagsEndpointAdapter = platformAdapter.relatedTags.extends({ + endpoint: from => + interpolate(`${getBeaconServiceUrl(from)}/relatedtags/{extraParams.instance}`, from) +}); +platformAdapter.relatedTags = relatedTagsEndpointAdapter; + +const identifierResultsEndpointAdapter = platformAdapter.identifierResults.extends({ + endpoint: from => + interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/skusearch`, from) +}); +platformAdapter.identifierResults = identifierResultsEndpointAdapter; + +const semanticQueriesEndpointAdapter = platformAdapter.semanticQueries.extends({ + endpoint: from => + interpolate(`${getSemanticsServiceUrl(from)}/search_single/{extraParams.instance}`, from) +}); +platformAdapter.semanticQueries = semanticQueriesEndpointAdapter; + +const experienceControlsEndpointAdapter = platformAdapter.experienceControls.extends({ + endpoint: from => interpolate(`${getConfigServiceUrl(from)}/public/configs`, from) +}); +platformAdapter.experienceControls = experienceControlsEndpointAdapter; + export const adapter = platformAdapter; /* Code sample about how to extend the result mapper with more fields. */ From f6eb61110cb1f69783740e1324c32004550a367a Mon Sep 17 00:00:00 2001 From: varodv <72568818+alvarodE@users.noreply.github.com> Date: Mon, 20 May 2024 15:03:52 +0200 Subject: [PATCH 2/7] tmp: Set query on WYSIWYG --- src/App.vue | 8 ++++++++ src/main.ts | 1 + 2 files changed, 9 insertions(+) diff --git a/src/App.vue b/src/App.vue index 1fe7d5ee..ee8eb0e0 100644 --- a/src/App.vue +++ b/src/App.vue @@ -55,10 +55,18 @@ async goToLoginWysiwyg(query: string): Promise { if (/^::\s*login/.test(query)) { await window.wysiwyg?.goToLogin(); + } else { + window.wysiwyg?.setContext({ query }); } } + @XOn(['UserClearedQuery']) + clearQuery(): void { + window.wysiwyg?.setContext({ query: undefined }); + } + @XOn(['ParamsLoadedFromUrl']) + // eslint-disable-next-line @typescript-eslint/no-unused-vars async requestAuthWysiwyg(payload: UrlParams): Promise { try { if (window.wysiwyg) { diff --git a/src/main.ts b/src/main.ts index feee493d..26bdbb73 100644 --- a/src/main.ts +++ b/src/main.ts @@ -11,6 +11,7 @@ declare global { requestAuth: () => Promise; open: () => Promise; close: () => Promise; + setContext: (newContext: { query?: string }) => void; }; } } From 61cb71ad56ed1d340db08baa0497dbe72aa324ca Mon Sep 17 00:00:00 2001 From: varodv <72568818+alvarodE@users.noreply.github.com> Date: Mon, 20 May 2024 15:14:06 +0200 Subject: [PATCH 3/7] tmp: Complete previous commit --- src/App.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/App.vue b/src/App.vue index ee8eb0e0..31dedea3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -72,6 +72,9 @@ if (window.wysiwyg) { await window.wysiwyg?.requestAuth(); window.InterfaceX?.search(); + if (params.query) { + window.wysiwyg.setContext({ query: params.query }); + } } } catch (_) { // No error handling From 9ae350e1f4e2e583807a7bcd8cc3134f24a38297 Mon Sep 17 00:00:00 2001 From: varodv <72568818+alvarodE@users.noreply.github.com> Date: Mon, 20 May 2024 15:17:17 +0200 Subject: [PATCH 4/7] tmp: Fix previous commit --- src/App.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/App.vue b/src/App.vue index 31dedea3..c2d50126 100644 --- a/src/App.vue +++ b/src/App.vue @@ -66,14 +66,13 @@ } @XOn(['ParamsLoadedFromUrl']) - // eslint-disable-next-line @typescript-eslint/no-unused-vars async requestAuthWysiwyg(payload: UrlParams): Promise { try { if (window.wysiwyg) { await window.wysiwyg?.requestAuth(); window.InterfaceX?.search(); - if (params.query) { - window.wysiwyg.setContext({ query: params.query }); + if (payload.query) { + window.wysiwyg.setContext({ query: payload.query }); } } } catch (_) { From 7fe7e2059d14260a3c57b8a959bec4d66a56786b Mon Sep 17 00:00:00 2001 From: varodv <72568818+alvarodE@users.noreply.github.com> Date: Mon, 20 May 2024 17:11:44 +0200 Subject: [PATCH 5/7] tmp: Remove Backroom changes --- src/App.vue | 11 +---------- src/main.ts | 1 - 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/App.vue b/src/App.vue index c2d50126..7598a836 100644 --- a/src/App.vue +++ b/src/App.vue @@ -55,25 +55,16 @@ async goToLoginWysiwyg(query: string): Promise { if (/^::\s*login/.test(query)) { await window.wysiwyg?.goToLogin(); - } else { - window.wysiwyg?.setContext({ query }); } } - @XOn(['UserClearedQuery']) - clearQuery(): void { - window.wysiwyg?.setContext({ query: undefined }); - } - @XOn(['ParamsLoadedFromUrl']) + // eslint-disable-next-line @typescript-eslint/no-unused-vars async requestAuthWysiwyg(payload: UrlParams): Promise { try { if (window.wysiwyg) { await window.wysiwyg?.requestAuth(); window.InterfaceX?.search(); - if (payload.query) { - window.wysiwyg.setContext({ query: payload.query }); - } } } catch (_) { // No error handling diff --git a/src/main.ts b/src/main.ts index 26bdbb73..feee493d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -11,7 +11,6 @@ declare global { requestAuth: () => Promise; open: () => Promise; close: () => Promise; - setContext: (newContext: { query?: string }) => void; }; } } From 09f4be162303567c8e9f3503743a235d38c8a610 Mon Sep 17 00:00:00 2001 From: varodv <72568818+alvarodE@users.noreply.github.com> Date: Wed, 22 May 2024 16:14:06 +0200 Subject: [PATCH 6/7] build(deps): Update x-adapter-platform --- package-lock.json | 50 +++++++++++++---- package.json | 2 +- src/adapter/adapter.ts | 118 ----------------------------------------- 3 files changed, 41 insertions(+), 129 deletions(-) diff --git a/package-lock.json b/package-lock.json index ffff9413..bbca74bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "dependencies": { "@empathyco/x-adapter": "^8.0.3-alpha.1", - "@empathyco/x-adapter-platform": "^1.1.0-alpha.1", + "@empathyco/x-adapter-platform": "^1.1.0-alpha.3", "@empathyco/x-archetype-utils": "^1.1.0-alpha.2", "@empathyco/x-components": "^5.0.0-alpha.4", "@empathyco/x-deep-merge": "^2.0.3-alpha.1", @@ -2218,12 +2218,27 @@ } }, "node_modules/@empathyco/x-adapter-platform": { - "version": "1.1.0-alpha.1", - "resolved": "https://registry.npmjs.org/@empathyco/x-adapter-platform/-/x-adapter-platform-1.1.0-alpha.1.tgz", - "integrity": "sha512-zSSg59jnkml1fL2N/r8LM6vyXluEMh9MpDQ5AMS4r9FKCFYA2019hyjo4NiAeCZPGf56yoC4T+nFCiWYQIoY4w==", + "version": "1.1.0-alpha.3", + "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-adapter-platform/-/x-adapter-platform-1.1.0-alpha.3.tgz", + "integrity": "sha512-K+s/7uwUyDzcDuefFCIoxpZXHuB/qAyw99zHstbek/OLpH/7k6h5Mtusgi/8c4Umupr+F9XFqQZ9gazBQtiLtA==", + "license": "Apache-2.0", "dependencies": { - "@empathyco/x-adapter": "^8.0.3-alpha.1", - "@empathyco/x-types": "^10.1.0-alpha.2", + "@empathyco/x-adapter": "^8.1.0-alpha.0", + "@empathyco/x-types": "^10.1.0-alpha.3", + "@empathyco/x-utils": "^1.0.3-alpha.1", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@empathyco/x-adapter-platform/node_modules/@empathyco/x-adapter": { + "version": "8.1.0-alpha.0", + "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-adapter/-/x-adapter-8.1.0-alpha.0.tgz", + "integrity": "sha512-RLvOv1YiJ77gpaTkBULH9yepDCzOG9SfIUJeGMbQBk1+5vEHSOF9/T60fD6WsRudTU63PlykBSKY37lGSWaU1g==", + "license": "Apache-2.0", + "dependencies": { + "@empathyco/x-deep-merge": "^2.0.3-alpha.1", "@empathyco/x-utils": "^1.0.3-alpha.1", "tslib": "~2.6.0" }, @@ -2485,11 +2500,26 @@ "dev": true }, "node_modules/@empathyco/x-types": { - "version": "10.1.0-alpha.2", - "resolved": "https://registry.npmjs.org/@empathyco/x-types/-/x-types-10.1.0-alpha.2.tgz", - "integrity": "sha512-6RutGCjK9EIU8YmsWAi8h5xOm+UxmePUtScRE7HUc5n8HSrJRrs6VqT9uC9QV42z5e7zoD7mt0sEh0CnIqPlhA==", + "version": "10.1.0-alpha.3", + "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-types/-/x-types-10.1.0-alpha.3.tgz", + "integrity": "sha512-Pdf/QX3uqRLyu+WMWgtpY5S7w3++PMlcV4r/mu8bxqchoRVuLDg4Sryit4efc+FRdOkjHJuhw8ZtwfborKoWZg==", + "license": "Apache-2.0", "dependencies": { - "@empathyco/x-adapter": "^8.0.3-alpha.1", + "@empathyco/x-adapter": "^8.1.0-alpha.0", + "@empathyco/x-utils": "^1.0.3-alpha.1", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@empathyco/x-types/node_modules/@empathyco/x-adapter": { + "version": "8.1.0-alpha.0", + "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-adapter/-/x-adapter-8.1.0-alpha.0.tgz", + "integrity": "sha512-RLvOv1YiJ77gpaTkBULH9yepDCzOG9SfIUJeGMbQBk1+5vEHSOF9/T60fD6WsRudTU63PlykBSKY37lGSWaU1g==", + "license": "Apache-2.0", + "dependencies": { + "@empathyco/x-deep-merge": "^2.0.3-alpha.1", "@empathyco/x-utils": "^1.0.3-alpha.1", "tslib": "~2.6.0" }, diff --git a/package.json b/package.json index 232402e0..08a98c67 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ }, "dependencies": { "@empathyco/x-adapter": "^8.0.3-alpha.1", - "@empathyco/x-adapter-platform": "^1.1.0-alpha.1", + "@empathyco/x-adapter-platform": "^1.1.0-alpha.3", "@empathyco/x-archetype-utils": "^1.1.0-alpha.2", "@empathyco/x-components": "^5.0.0-alpha.4", "@empathyco/x-deep-merge": "^2.0.3-alpha.1", diff --git a/src/adapter/adapter.ts b/src/adapter/adapter.ts index f6dcb883..d83818b9 100644 --- a/src/adapter/adapter.ts +++ b/src/adapter/adapter.ts @@ -1,4 +1,3 @@ -import { interpolate } from '@empathyco/x-adapter'; import { platformAdapter, PlatformRecommendationsRequest, @@ -11,128 +10,11 @@ import { } from '@empathyco/x-adapter-platform'; import { ExperienceControlsResponse, - ExtraParamsRequest, RecommendationsRequest, Result, SemanticQueriesRequest } from '@empathyco/x-types'; -// TODO Manage Platform Test URLs at @empathyco/x-adapter-platform level to avoid these extends: -// https://github.com/empathyco/x/pull/1477 - -/** - * Gets the Search service URL for the given request. - * - * @param from - The request. - * - * @returns The service URL. - * - * @internal - */ -function getSearchServiceUrl(from: ExtraParamsRequest): string { - return from.extraParams?.env === 'test' - ? 'https://search.internal.test.empathy.co' - : 'https://api.{extraParams.env(.)}empathy.co/search/v1'; -} - -/** - * Gets the Beacon service URL for the given request. - * - * @param from - The request. - * - * @returns The service URL. - * - * @internal - */ -function getBeaconServiceUrl(from: ExtraParamsRequest): string { - return from.extraParams?.env === 'test' - ? 'https://beacon-api.internal.test.empathy.co' - : 'https://api.{extraParams.env(.)}empathy.co'; -} - -/** - * Gets the Semantics service URL for the given request. - * - * @param from - The request. - * - * @returns The service URL. - * - * @internal - */ -function getSemanticsServiceUrl(from: ExtraParamsRequest): string { - return from.extraParams?.env === 'test' - ? 'https://semantics-api.internal.test.empathy.co' - : 'https://api.{extraParams.env(.)}empathy.co/semantics-api'; -} - -/** - * Gets the Config service URL for the given request. - * - * @param from - The request. - * - * @returns The service URL. - * - * @internal - */ -function getConfigServiceUrl(from: ExtraParamsRequest): string { - return from.extraParams?.env === 'test' - ? 'https://config-service.internal.test.empathy.co' - : 'https://api.{extraParams.env(.)}empathy.co/config/v1'; -} - -const searchEndpointAdapter = platformAdapter.search.extends({ - endpoint: from => - interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/search`, from) -}); -platformAdapter.search = searchEndpointAdapter; - -const popularSearchesEndpointAdapter = platformAdapter.popularSearches.extends({ - endpoint: from => - interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/empathize`, from) -}); -platformAdapter.popularSearches = popularSearchesEndpointAdapter; - -const recommendationsEndpointAdapter = platformAdapter.recommendations.extends({ - endpoint: from => - interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/topclicked`, from) -}); -platformAdapter.recommendations = recommendationsEndpointAdapter; - -const nextQueriesEndpointAdapter = platformAdapter.nextQueries.extends({ - endpoint: from => - interpolate(`${getBeaconServiceUrl(from)}/nextqueries/{extraParams.instance}`, from) -}); -platformAdapter.nextQueries = nextQueriesEndpointAdapter; - -const querySuggestionsEndpointAdapter = platformAdapter.querySuggestions.extends({ - endpoint: from => - interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/empathize`, from) -}); -platformAdapter.querySuggestions = querySuggestionsEndpointAdapter; - -const relatedTagsEndpointAdapter = platformAdapter.relatedTags.extends({ - endpoint: from => - interpolate(`${getBeaconServiceUrl(from)}/relatedtags/{extraParams.instance}`, from) -}); -platformAdapter.relatedTags = relatedTagsEndpointAdapter; - -const identifierResultsEndpointAdapter = platformAdapter.identifierResults.extends({ - endpoint: from => - interpolate(`${getSearchServiceUrl(from)}/query/{extraParams.instance}/skusearch`, from) -}); -platformAdapter.identifierResults = identifierResultsEndpointAdapter; - -const semanticQueriesEndpointAdapter = platformAdapter.semanticQueries.extends({ - endpoint: from => - interpolate(`${getSemanticsServiceUrl(from)}/search_single/{extraParams.instance}`, from) -}); -platformAdapter.semanticQueries = semanticQueriesEndpointAdapter; - -const experienceControlsEndpointAdapter = platformAdapter.experienceControls.extends({ - endpoint: from => interpolate(`${getConfigServiceUrl(from)}/public/configs`, from) -}); -platformAdapter.experienceControls = experienceControlsEndpointAdapter; - export const adapter = platformAdapter; /* Code sample about how to extend the result mapper with more fields. */ From 185a7ccf458f6693ea426c56ea40a95f3556aa7e Mon Sep 17 00:00:00 2001 From: varodv <72568818+alvarodE@users.noreply.github.com> Date: Wed, 22 May 2024 16:18:08 +0200 Subject: [PATCH 7/7] fix: Fix package-lock file --- package-lock.json | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbca74bd..75be60d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2219,9 +2219,8 @@ }, "node_modules/@empathyco/x-adapter-platform": { "version": "1.1.0-alpha.3", - "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-adapter-platform/-/x-adapter-platform-1.1.0-alpha.3.tgz", + "resolved": "https://registry.npmjs.org/@empathyco/x-adapter-platform/-/x-adapter-platform-1.1.0-alpha.3.tgz", "integrity": "sha512-K+s/7uwUyDzcDuefFCIoxpZXHuB/qAyw99zHstbek/OLpH/7k6h5Mtusgi/8c4Umupr+F9XFqQZ9gazBQtiLtA==", - "license": "Apache-2.0", "dependencies": { "@empathyco/x-adapter": "^8.1.0-alpha.0", "@empathyco/x-types": "^10.1.0-alpha.3", @@ -2234,9 +2233,8 @@ }, "node_modules/@empathyco/x-adapter-platform/node_modules/@empathyco/x-adapter": { "version": "8.1.0-alpha.0", - "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-adapter/-/x-adapter-8.1.0-alpha.0.tgz", + "resolved": "https://registry.npmjs.org/@empathyco/x-adapter/-/x-adapter-8.1.0-alpha.0.tgz", "integrity": "sha512-RLvOv1YiJ77gpaTkBULH9yepDCzOG9SfIUJeGMbQBk1+5vEHSOF9/T60fD6WsRudTU63PlykBSKY37lGSWaU1g==", - "license": "Apache-2.0", "dependencies": { "@empathyco/x-deep-merge": "^2.0.3-alpha.1", "@empathyco/x-utils": "^1.0.3-alpha.1", @@ -2501,9 +2499,8 @@ }, "node_modules/@empathyco/x-types": { "version": "10.1.0-alpha.3", - "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-types/-/x-types-10.1.0-alpha.3.tgz", + "resolved": "https://registry.npmjs.org/@empathyco/x-types/-/x-types-10.1.0-alpha.3.tgz", "integrity": "sha512-Pdf/QX3uqRLyu+WMWgtpY5S7w3++PMlcV4r/mu8bxqchoRVuLDg4Sryit4efc+FRdOkjHJuhw8ZtwfborKoWZg==", - "license": "Apache-2.0", "dependencies": { "@empathyco/x-adapter": "^8.1.0-alpha.0", "@empathyco/x-utils": "^1.0.3-alpha.1", @@ -2515,9 +2512,8 @@ }, "node_modules/@empathyco/x-types/node_modules/@empathyco/x-adapter": { "version": "8.1.0-alpha.0", - "resolved": "https://nexus.shared.empathy.co/repository/npm-registry/@empathyco/x-adapter/-/x-adapter-8.1.0-alpha.0.tgz", + "resolved": "https://registry.npmjs.org/@empathyco/x-adapter/-/x-adapter-8.1.0-alpha.0.tgz", "integrity": "sha512-RLvOv1YiJ77gpaTkBULH9yepDCzOG9SfIUJeGMbQBk1+5vEHSOF9/T60fD6WsRudTU63PlykBSKY37lGSWaU1g==", - "license": "Apache-2.0", "dependencies": { "@empathyco/x-deep-merge": "^2.0.3-alpha.1", "@empathyco/x-utils": "^1.0.3-alpha.1",