From 98b40e8751de5c3ccbc96e7ff199a320c53326cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Vannicatte?= Date: Tue, 14 Jun 2022 10:34:50 +0200 Subject: [PATCH] feat(javascript): allow legacy signature for `search` method (#665) --- .github/workflows/check.yml | 4 + .../__tests__/algoliasearch.test.ts | 104 ++++++++++++++ .../packages/algoliasearch/jest.config.ts | 9 ++ .../packages/algoliasearch/package.json | 5 +- .../packages/algoliasearch/tsconfig.json | 3 +- playground/javascript/node/algoliasearch.ts | 12 ++ playground/javascript/node/package.json | 24 ++-- specs/search/paths/search/search.yml | 1 + templates/javascript/api-single.mustache | 4 + templates/javascript/api/imports.mustache | 3 + .../implementation.mustache | 24 ++++ .../legacySearchCompatible/imports.mustache | 3 + .../legacySearchCompatible/model.mustache | 31 +++++ .../api/operation/parameters.mustache | 2 +- .../javascript/clientMethodProps.mustache | 13 +- yarn.lock | 130 ++---------------- 16 files changed, 240 insertions(+), 132 deletions(-) create mode 100644 clients/algoliasearch-client-javascript/packages/algoliasearch/__tests__/algoliasearch.test.ts create mode 100644 clients/algoliasearch-client-javascript/packages/algoliasearch/jest.config.ts create mode 100644 templates/javascript/api/operation/legacySearchCompatible/implementation.mustache create mode 100644 templates/javascript/api/operation/legacySearchCompatible/imports.mustache create mode 100644 templates/javascript/api/operation/legacySearchCompatible/model.mustache diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 57cfec0c3c..d27558897f 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -228,6 +228,10 @@ jobs: if: ${{ steps.cache.outputs.cache-hit != 'true' && matrix.client.language == 'javascript' }} run: yarn cli build clients javascript algoliasearch + - name: Run JavaScript 'algoliasearch' client tests + if: ${{ steps.cache.outputs.cache-hit != 'true' && matrix.client.language == 'javascript' }} + run: yarn workspace @experimental-api-clients-automation/algoliasearch test + - name: Clean CTS output before generate run: rm -rf ${{ matrix.client.testsToDelete }} || true diff --git a/clients/algoliasearch-client-javascript/packages/algoliasearch/__tests__/algoliasearch.test.ts b/clients/algoliasearch-client-javascript/packages/algoliasearch/__tests__/algoliasearch.test.ts new file mode 100644 index 0000000000..251c460e42 --- /dev/null +++ b/clients/algoliasearch-client-javascript/packages/algoliasearch/__tests__/algoliasearch.test.ts @@ -0,0 +1,104 @@ +import type { EchoResponse } from '@experimental-api-clients-automation/client-common'; +import { echoRequester } from '@experimental-api-clients-automation/requester-node-http'; + +import { algoliasearch, apiClientVersion } from '../builds/node'; + +const client = algoliasearch('APP_ID', 'API_KEY', { + requester: echoRequester(), +}); + +describe('api', () => { + it('sets the user agent', async () => { + const req = (await client.post({ + path: '/test', + })) as unknown as EchoResponse; + + expect(req.algoliaAgent).toMatchInlineSnapshot( + `"Algolia%20for%20JavaScript%20(${apiClientVersion});%20Search%20(${apiClientVersion});%20Node.js%20(${process.versions.node})"` + ); + }); + + it('throws with undefined API key', () => { + try { + algoliasearch('APP_ID', ''); + } catch (e) { + expect((e as Error).message).toMatch('`apiKey` is missing.'); + } + }); + + it('throws with undefined app ID', () => { + try { + algoliasearch('', 'API_KEY'); + } catch (e) { + expect((e as Error).message).toMatch('`appId` is missing.'); + } + }); + + it('provides the search client at the root of the API', () => { + expect(client.search).not.toBeUndefined(); + }); + + it('provides an init method for the analytics client', () => { + expect(client.initAnalytics).not.toBeUndefined(); + }); + + it('provides an init method for the personalization client', () => { + expect(client.initPersonalization).not.toBeUndefined(); + }); +}); + +/** + * We only test the legacy signature, as `algoliasearch` inherits methods from the `client-search`. + * The new signatures are already tested in the CTS. + */ +describe('search with legacy signature', () => { + it('allows searching for query', async () => { + const req = (await client.search([ + { + indexName: 'theIndexName', + }, + ])) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ requests: [{ indexName: 'theIndexName' }] }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + it('allows searching for facet', async () => { + const req = (await client.search([ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + }, + ])) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { indexName: 'theIndexName', type: 'facet', facet: 'theFacet' }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + it('accepts a `params` parameter for `searchParams`', async () => { + const req = (await client.search([ + { + indexName: 'theIndexName', + params: { + hitsPerPage: 42, + }, + }, + ])) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ indexName: 'theIndexName', hitsPerPage: 42 }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/clients/algoliasearch-client-javascript/packages/algoliasearch/jest.config.ts b/clients/algoliasearch-client-javascript/packages/algoliasearch/jest.config.ts new file mode 100644 index 0000000000..8c144f844d --- /dev/null +++ b/clients/algoliasearch-client-javascript/packages/algoliasearch/jest.config.ts @@ -0,0 +1,9 @@ +import type { Config } from '@jest/types'; + +const config: Config.InitialOptions = { + preset: 'ts-jest', + testEnvironment: 'node', + roots: ['__tests__'], +}; + +export default config; diff --git a/clients/algoliasearch-client-javascript/packages/algoliasearch/package.json b/clients/algoliasearch-client-javascript/packages/algoliasearch/package.json index eee18d3f6c..a31daff2af 100644 --- a/clients/algoliasearch-client-javascript/packages/algoliasearch/package.json +++ b/clients/algoliasearch-client-javascript/packages/algoliasearch/package.json @@ -12,7 +12,8 @@ "browser": "dist/algoliasearch.cjs.browser.js", "types": "index.d.ts", "scripts": { - "clean": "rm -rf ./dist" + "clean": "rm -rf ./dist", + "test": "jest" }, "dependencies": { "@experimental-api-clients-automation/client-analytics": "0.4.0", @@ -23,7 +24,9 @@ "@experimental-api-clients-automation/requester-node-http": "0.4.0" }, "devDependencies": { + "@types/jest": "28.1.1", "@types/node": "16.11.39", + "jest": "28.1.1", "typescript": "4.7.3" }, "engines": { diff --git a/clients/algoliasearch-client-javascript/packages/algoliasearch/tsconfig.json b/clients/algoliasearch-client-javascript/packages/algoliasearch/tsconfig.json index e5af720cb3..e9efdcc4a5 100644 --- a/clients/algoliasearch-client-javascript/packages/algoliasearch/tsconfig.json +++ b/clients/algoliasearch-client-javascript/packages/algoliasearch/tsconfig.json @@ -1,8 +1,9 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "types": ["node", "jest"], "outDir": "dist" }, "include": ["builds/node.ts", "builds/browser.ts"], - "exclude": ["dist", "node_modules"] + "exclude": ["dist", "node_modules", "__tests__"] } diff --git a/playground/javascript/node/algoliasearch.ts b/playground/javascript/node/algoliasearch.ts index bb8781002a..738737bfa6 100644 --- a/playground/javascript/node/algoliasearch.ts +++ b/playground/javascript/node/algoliasearch.ts @@ -42,6 +42,18 @@ async function testAlgoliasearch() { }); console.log(`[OK search]`, res); + + const resWithLegacySignature: SearchResponses = await client.search([ + { + indexName: searchIndex, + params: { + query: searchQuery, + hitsPerPage: 50, + }, + }, + ]); + + console.log(`[OK legacy search]`, resWithLegacySignature); } catch (e) { if (e instanceof ApiError) { return console.log(`[${e.status}] ${e.message}`, e.stackTrace); diff --git a/playground/javascript/node/package.json b/playground/javascript/node/package.json index bae87e9150..2a6c92487e 100644 --- a/playground/javascript/node/package.json +++ b/playground/javascript/node/package.json @@ -15,18 +15,18 @@ "start:predict": "ts-node predict.ts" }, "dependencies": { - "@experimental-api-clients-automation/algoliasearch": "0.3.0", - "@experimental-api-clients-automation/client-abtesting": "0.3.0", - "@experimental-api-clients-automation/client-analytics": "0.3.0", - "@experimental-api-clients-automation/client-common": "0.3.0", - "@experimental-api-clients-automation/client-insights": "0.3.0", - "@experimental-api-clients-automation/client-personalization": "0.3.0", - "@experimental-api-clients-automation/client-predict": "0.3.0", - "@experimental-api-clients-automation/client-query-suggestions": "0.3.0", - "@experimental-api-clients-automation/client-search": "0.3.0", - "@experimental-api-clients-automation/client-sources": "0.3.0", - "@experimental-api-clients-automation/recommend": "0.3.0", - "@experimental-api-clients-automation/requester-node-http": "0.3.0" + "@experimental-api-clients-automation/algoliasearch": "0.4.0", + "@experimental-api-clients-automation/client-abtesting": "0.4.0", + "@experimental-api-clients-automation/client-analytics": "0.4.0", + "@experimental-api-clients-automation/client-common": "0.4.0", + "@experimental-api-clients-automation/client-insights": "0.4.0", + "@experimental-api-clients-automation/client-personalization": "0.4.0", + "@experimental-api-clients-automation/client-predict": "0.4.0", + "@experimental-api-clients-automation/client-query-suggestions": "0.4.0", + "@experimental-api-clients-automation/client-search": "0.4.0", + "@experimental-api-clients-automation/client-sources": "0.4.0", + "@experimental-api-clients-automation/recommend": "0.4.0", + "@experimental-api-clients-automation/requester-node-http": "0.4.0" }, "devDependencies": { "dotenv": "16.0.1", diff --git a/specs/search/paths/search/search.yml b/specs/search/paths/search/search.yml index d3138edbc4..0f6eca4162 100644 --- a/specs/search/paths/search/search.yml +++ b/specs/search/paths/search/search.yml @@ -4,6 +4,7 @@ post: operationId: search x-use-read-transporter: true x-cacheable: true + x-legacy-signature: true summary: Search multiple indices. description: Perform a search operation targeting one or many indices. requestBody: diff --git a/templates/javascript/api-single.mustache b/templates/javascript/api-single.mustache index 20f9d45003..d29ec1a480 100644 --- a/templates/javascript/api-single.mustache +++ b/templates/javascript/api-single.mustache @@ -68,6 +68,10 @@ export function create{{capitalizedApiName}}({ {{#operation}} {{> api/operation/jsdoc}} {{nickname}}( {{> api/operation/parameters}} ) : Promise<{{{returnType}}}> { + {{#vendorExtensions.x-legacy-signature}} + {{> api/operation/legacySearchCompatible/implementation}} + {{/vendorExtensions.x-legacy-signature}} + {{#allParams}} {{#required}} if ({{#isBoolean}}{{paramName}} === null || {{paramName}} === undefined{{/isBoolean}}{{^isBoolean}}!{{paramName}}{{/isBoolean}}) { diff --git a/templates/javascript/api/imports.mustache b/templates/javascript/api/imports.mustache index d7cb50c4a7..231ba5ea36 100644 --- a/templates/javascript/api/imports.mustache +++ b/templates/javascript/api/imports.mustache @@ -30,6 +30,9 @@ import type { {{#x-create-wrapping-object}} {{#lambda.titlecase}}{{nickname}}{{/lambda.titlecase}}Props, {{/x-create-wrapping-object}} + {{#x-legacy-signature}} + LegacySearchMethodProps, + {{/x-legacy-signature}} {{/vendorExtensions}} {{/operation}} } from '../model/clientMethodProps'; diff --git a/templates/javascript/api/operation/legacySearchCompatible/implementation.mustache b/templates/javascript/api/operation/legacySearchCompatible/implementation.mustache new file mode 100644 index 0000000000..36252a5a53 --- /dev/null +++ b/templates/javascript/api/operation/legacySearchCompatible/implementation.mustache @@ -0,0 +1,24 @@ +if (searchMethodParams && Array.isArray(searchMethodParams)) { + const newSignatureRequest: SearchMethodParams = { + requests: searchMethodParams.map(({ params, ...legacyRequest }) => { + if (legacyRequest.type === 'facet') { + return { + ...legacyRequest, + ...params, + type: 'facet', + }; + } + + return { + ...legacyRequest, + ...params, + facet: undefined, + maxFacetHits: undefined, + facetQuery: undefined, + }; + }), + }; + + // eslint-disable-next-line no-param-reassign + searchMethodParams = newSignatureRequest; +} diff --git a/templates/javascript/api/operation/legacySearchCompatible/imports.mustache b/templates/javascript/api/operation/legacySearchCompatible/imports.mustache new file mode 100644 index 0000000000..76818bc8da --- /dev/null +++ b/templates/javascript/api/operation/legacySearchCompatible/imports.mustache @@ -0,0 +1,3 @@ +import type { SearchForFacetsOptions } from './searchForFacetsOptions'; +import type { SearchForHitsOptions } from './searchForHitsOptions'; +import { SearchParamsObject } from './searchParamsObject'; \ No newline at end of file diff --git a/templates/javascript/api/operation/legacySearchCompatible/model.mustache b/templates/javascript/api/operation/legacySearchCompatible/model.mustache new file mode 100644 index 0000000000..bd35b303d2 --- /dev/null +++ b/templates/javascript/api/operation/legacySearchCompatible/model.mustache @@ -0,0 +1,31 @@ +/** + * In v4, the search parameters are wrapped in a `params` parameter. + * + * @deprecated The `search` method now accepts flat `searchParams` at the root of the method. + */ +type LegacySearchParams = { + params?: SearchParamsObject; +}; + +/** + * In v4, the search parameters are wrapped in a `params` parameter. + * + * @deprecated The `search` method now accepts flat `searchParams` at the root of the method. + */ +type LegacySearchForFacets = LegacySearchParams & SearchForFacetsOptions; + +/** + * In v4, the search parameters are wrapped in a `params` parameter. + * + * @deprecated The `search` method now accepts flat `searchParams` at the root of the method. + */ +type LegacySearchForHits = LegacySearchParams & SearchForHitsOptions; + +type LegacySearchQuery = LegacySearchForFacets | LegacySearchForHits; + +/** + * Search method signature compatible with the `algoliasearch` v4 package. When using this signature, extra computation will be required to make it match the new signature. + * + * @deprecated This signature will be removed from the next major version, we recommend using the `SearchMethodParams` type for performances and future proof reasons. + */ +export type LegacySearchMethodProps = LegacySearchQuery[]; diff --git a/templates/javascript/api/operation/parameters.mustache b/templates/javascript/api/operation/parameters.mustache index 4664924a52..1f925f4dd7 100644 --- a/templates/javascript/api/operation/parameters.mustache +++ b/templates/javascript/api/operation/parameters.mustache @@ -8,7 +8,7 @@ {{/x-create-wrapping-object}} {{#x-is-single-body-param}} {{#bodyParams}} - {{paramName}}: {{{dataType}}}, + {{paramName}}: {{{dataType}}} {{#x-legacy-signature}} | LegacySearchMethodProps{{/x-legacy-signature}}, {{/bodyParams}} {{/x-is-single-body-param}} {{/vendorExtensions}} diff --git a/templates/javascript/clientMethodProps.mustache b/templates/javascript/clientMethodProps.mustache index f8e2e87e8b..85a86dfb8c 100644 --- a/templates/javascript/clientMethodProps.mustache +++ b/templates/javascript/clientMethodProps.mustache @@ -4,9 +4,14 @@ import { {{classname}} } from '{{filename}}'; {{/imports}} +{{! Imports for the legacy search method signature }} +{{#operations}}{{#operation}}{{#vendorExtensions.x-legacy-signature}}{{> api/operation/legacySearchCompatible/imports}}{{/vendorExtensions.x-legacy-signature}}{{/operation}}{{/operations}} + {{#operations}} {{#operation}} -{{#vendorExtensions.x-create-wrapping-object}} + +{{#vendorExtensions}} +{{#x-create-wrapping-object}} /** * Properties for the `{{nickname}}` method. */ @@ -20,7 +25,11 @@ export type {{#lambda.titlecase}}{{nickname}}{{/lambda.titlecase}}Props = { {{paramName}}{{^required}}?{{/required}}: {{{dataType}}}; {{/allParams}} } -{{/vendorExtensions.x-create-wrapping-object}} +{{/x-create-wrapping-object}} + +{{#x-legacy-signature}}{{> api/operation/legacySearchCompatible/model}}{{/x-legacy-signature}} + +{{/vendorExtensions}} {{/operation}} {{/operations}} diff --git a/yarn.lock b/yarn.lock index 54902eefa6..fd3d9888e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1445,21 +1445,7 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/algoliasearch@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/algoliasearch@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-analytics": 0.3.0 - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/client-personalization": 0.3.0 - "@experimental-api-clients-automation/client-search": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: f54d6299f05c2679476ec65f374b2a4ea70a2afd5bf7829956cfb47db5f8e40767fd3d989ae6ece4d8803ebb9a6b6972cdaabf64faf4744655210cfa3906ee88 - languageName: node - linkType: hard - -"@experimental-api-clients-automation/algoliasearch@workspace:clients/algoliasearch-client-javascript/packages/algoliasearch": +"@experimental-api-clients-automation/algoliasearch@0.4.0, @experimental-api-clients-automation/algoliasearch@workspace:clients/algoliasearch-client-javascript/packages/algoliasearch": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/algoliasearch@workspace:clients/algoliasearch-client-javascript/packages/algoliasearch" dependencies: @@ -1469,7 +1455,9 @@ __metadata: "@experimental-api-clients-automation/client-search": 0.4.0 "@experimental-api-clients-automation/requester-browser-xhr": 0.4.0 "@experimental-api-clients-automation/requester-node-http": 0.4.0 + "@types/jest": 28.1.1 "@types/node": 16.11.39 + jest: 28.1.1 typescript: 4.7.3 languageName: unknown linkType: soft @@ -1486,17 +1474,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/client-abtesting@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/client-abtesting@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: 0fb5c85ff5b09075c57127463bae6a93af5eb2cfeaabdda03163b5f75a89507af872b284d4a991d0263b73816e74aa20169fe1d3ddcb2b610b0e913ebbdb56bd - languageName: node - linkType: hard - "@experimental-api-clients-automation/client-analytics@0.4.0, @experimental-api-clients-automation/client-analytics@workspace:clients/algoliasearch-client-javascript/packages/client-analytics": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/client-analytics@workspace:clients/algoliasearch-client-javascript/packages/client-analytics" @@ -1509,17 +1486,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/client-analytics@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/client-analytics@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: db7090498120149bf65acf4389b0c232ecbb1e6b4cb39d9978338f58e4ab90e6a9423e12b831778e4ee527ccca28f8ebd7ffbc016dfd8ef9caa4cf661f82f2e8 - languageName: node - linkType: hard - "@experimental-api-clients-automation/client-common@0.4.0, @experimental-api-clients-automation/client-common@workspace:clients/algoliasearch-client-javascript/packages/client-common": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/client-common@workspace:clients/algoliasearch-client-javascript/packages/client-common" @@ -1551,17 +1517,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/client-insights@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/client-insights@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: 126045f2dd5671717f0eb5ccf237f4ffd196cdef09334df3c31447070d2a30d805d293eec3e8315259f882ce8f1839be9cc2603b059090f24de10b7906ef70c2 - languageName: node - linkType: hard - "@experimental-api-clients-automation/client-personalization@0.4.0, @experimental-api-clients-automation/client-personalization@workspace:clients/algoliasearch-client-javascript/packages/client-personalization": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/client-personalization@workspace:clients/algoliasearch-client-javascript/packages/client-personalization" @@ -1574,17 +1529,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/client-personalization@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/client-personalization@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: 93dffea8e0159cd12968dd53ade3d2664219e16d96c328adef5294a206ea01f980bd8336c9ac1d5489069a0d81bc08a91356a3acebe7063f06124dca845002a1 - languageName: node - linkType: hard - "@experimental-api-clients-automation/client-predict@0.4.0, @experimental-api-clients-automation/client-predict@workspace:clients/algoliasearch-client-javascript/packages/client-predict": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/client-predict@workspace:clients/algoliasearch-client-javascript/packages/client-predict" @@ -1597,17 +1541,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/client-predict@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/client-predict@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: 11a674cf0e151b116404793507feb19448c804bf7e4796e05dd98af996ea9363d4a5b3cc1237e14d056fe453c8c8c005b02a93080dd5d9bf050215b391d4820f - languageName: node - linkType: hard - "@experimental-api-clients-automation/client-query-suggestions@0.4.0, @experimental-api-clients-automation/client-query-suggestions@workspace:clients/algoliasearch-client-javascript/packages/client-query-suggestions": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/client-query-suggestions@workspace:clients/algoliasearch-client-javascript/packages/client-query-suggestions" @@ -1620,17 +1553,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/client-query-suggestions@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/client-query-suggestions@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: 8a1a561b1bd6a76f8bbceeca6cf2d506273c3c1dc96abd97e41869f299c5b9c728f96d68d86e441a20780a6eb66d5f4db5865709d765f18b6386aeee300ac1c3 - languageName: node - linkType: hard - "@experimental-api-clients-automation/client-search@0.4.0, @experimental-api-clients-automation/client-search@workspace:clients/algoliasearch-client-javascript/packages/client-search": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/client-search@workspace:clients/algoliasearch-client-javascript/packages/client-search" @@ -1666,17 +1588,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/client-sources@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/client-sources@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: ddb0c0076f20e170a370aa68c8982fa8386dfcd17c09f0a15c9988a30dbee988018ead66fc3f5232fba30872a6e622baf071c6852b79554b361f296244f9055f - languageName: node - linkType: hard - "@experimental-api-clients-automation/recommend@0.4.0, @experimental-api-clients-automation/recommend@workspace:clients/algoliasearch-client-javascript/packages/recommend": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/recommend@workspace:clients/algoliasearch-client-javascript/packages/recommend" @@ -1689,17 +1600,6 @@ __metadata: languageName: unknown linkType: soft -"@experimental-api-clients-automation/recommend@npm:0.3.0": - version: 0.3.0 - resolution: "@experimental-api-clients-automation/recommend@npm:0.3.0" - dependencies: - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/requester-browser-xhr": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 - checksum: d5f7c69ed6daa4f043754206bb29d7f95bd5077c373ce132fe142a1da7f6d65dae911bd706b2c919400e514b4b25fd2a4fcd0f41b11fdf28d5ceda999e583cb5 - languageName: node - linkType: hard - "@experimental-api-clients-automation/requester-browser-xhr@0.4.0, @experimental-api-clients-automation/requester-browser-xhr@workspace:clients/algoliasearch-client-javascript/packages/requester-browser-xhr": version: 0.0.0-use.local resolution: "@experimental-api-clients-automation/requester-browser-xhr@workspace:clients/algoliasearch-client-javascript/packages/requester-browser-xhr" @@ -9109,18 +9009,18 @@ __metadata: version: 0.0.0-use.local resolution: "javascript-playground@workspace:playground/javascript/node" dependencies: - "@experimental-api-clients-automation/algoliasearch": 0.3.0 - "@experimental-api-clients-automation/client-abtesting": 0.3.0 - "@experimental-api-clients-automation/client-analytics": 0.3.0 - "@experimental-api-clients-automation/client-common": 0.3.0 - "@experimental-api-clients-automation/client-insights": 0.3.0 - "@experimental-api-clients-automation/client-personalization": 0.3.0 - "@experimental-api-clients-automation/client-predict": 0.3.0 - "@experimental-api-clients-automation/client-query-suggestions": 0.3.0 - "@experimental-api-clients-automation/client-search": 0.3.0 - "@experimental-api-clients-automation/client-sources": 0.3.0 - "@experimental-api-clients-automation/recommend": 0.3.0 - "@experimental-api-clients-automation/requester-node-http": 0.3.0 + "@experimental-api-clients-automation/algoliasearch": 0.4.0 + "@experimental-api-clients-automation/client-abtesting": 0.4.0 + "@experimental-api-clients-automation/client-analytics": 0.4.0 + "@experimental-api-clients-automation/client-common": 0.4.0 + "@experimental-api-clients-automation/client-insights": 0.4.0 + "@experimental-api-clients-automation/client-personalization": 0.4.0 + "@experimental-api-clients-automation/client-predict": 0.4.0 + "@experimental-api-clients-automation/client-query-suggestions": 0.4.0 + "@experimental-api-clients-automation/client-search": 0.4.0 + "@experimental-api-clients-automation/client-sources": 0.4.0 + "@experimental-api-clients-automation/recommend": 0.4.0 + "@experimental-api-clients-automation/requester-node-http": 0.4.0 dotenv: 16.0.1 ts-node: 10.8.1 typescript: 4.7.3