Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion clients/algoliasearch-client-javascript/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"packages/*"
],
"scripts": {
"build": "lerna run build --skip-nx-cache --scope '@algolia/requester-testing' --scope '@algolia/logger-console' --scope 'algoliasearch' --scope '@algolia/client-composition' --scope '@algolia/composition' --include-dependencies",
"build": "lerna run build --skip-nx-cache --scope '@algolia/requester-testing' --scope '@algolia/logger-console' --scope 'algoliasearch' --scope '@algolia/client-composition' --scope '@algolia/composition' --scope '@algolia/advanced-personalization' --include-dependencies ",
"clean": "lerna run clean",
"release:publish": "tsc --project scripts/tsconfig.json && node scripts/dist/publish.js",
"test": "lerna run test $*",
Expand Down
17 changes: 17 additions & 0 deletions clients/algoliasearch-client-javascript/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,23 @@ __metadata:
version: 8
cacheKey: 10

"@algolia/advanced-personalization@workspace:packages/advanced-personalization":
version: 0.0.0-use.local
resolution: "@algolia/advanced-personalization@workspace:packages/advanced-personalization"
dependencies:
"@algolia/client-common": "npm:5.27.0"
"@algolia/requester-browser-xhr": "npm:5.27.0"
"@algolia/requester-fetch": "npm:5.27.0"
"@algolia/requester-node-http": "npm:5.27.0"
"@arethetypeswrong/cli": "npm:0.18.2"
"@types/node": "npm:22.15.30"
publint: "npm:0.3.12"
rollup: "npm:4.41.0"
tsup: "npm:8.5.0"
typescript: "npm:5.8.3"
languageName: unknown
linkType: soft

"@algolia/client-abtesting@npm:5.27.0, @algolia/client-abtesting@workspace:packages/client-abtesting":
version: 0.0.0-use.local
resolution: "@algolia/client-abtesting@workspace:packages/client-abtesting"
Expand Down
5 changes: 5 additions & 0 deletions config/clients.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,11 @@
"name": "personalization",
"output": "clients/algoliasearch-client-javascript/packages/client-personalization"
},
{
"name": "advanced-personalization",
"output": "clients/algoliasearch-client-javascript/packages/advanced-personalization",
"isStandaloneClient": true
},
{
"name": "query-suggestions",
"output": "clients/algoliasearch-client-javascript/packages/client-query-suggestions"
Expand Down
2 changes: 2 additions & 0 deletions config/clients.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"insights",
"monitoring",
"personalization",
"advanced-personalization",
"query-suggestions",
"recommend",
"search"
Expand All @@ -41,6 +42,7 @@
"insights",
"monitoring",
"personalization",
"advanced-personalization",
"query-suggestions",
"recommend",
"search"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,11 @@ public void run(Map<String, CodegenModel> models, Map<String, CodegenOperation>

bundle.put(
"e2eAppID",
client.startsWith("composition") || client.startsWith("realtime") ? "METIS_APPLICATION_ID" : "ALGOLIA_APPLICATION_ID"
client.startsWith("composition") || client.startsWith("advanced-personalization") ? "METIS_APPLICATION_ID" : "ALGOLIA_APPLICATION_ID"
);
bundle.put(
"e2eApiKey",
client.startsWith("composition") || client.startsWith("realtime")
client.startsWith("composition") || client.startsWith("advanced-personalization")
? "METIS_API_KEY"
: (client.equals("monitoring") ? "MONITORING_API_KEY" : "ALGOLIA_ADMIN_KEY")
);
Expand Down
24 changes: 24 additions & 0 deletions playground/javascript/node/advancedPersonalization.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { advancedPersonalizationClient } from '@algolia/advanced-personalization';
import { ApiError } from '@algolia/client-common';

const appId = process.env.ALGOLIA_APPLICATION_ID || '**** APP_ID *****';
const apiKey = process.env.ALGOLIA_RECOMMENDATION_KEY || '**** RECOMMENDATION_API_KEY *****';

// Init client with appId and apiKey
const client = advancedPersonalizationClient(appId, apiKey, 'eu');

async function testPersonalization() {
try {
const res = await client.computeRealtimeUser({ userToken: 'userToken' });

console.log(`[OK]`, res);
} catch (e) {
if (e instanceof ApiError) {
return console.log(`[${e.status}] ${e.message}`, e.stackTrace);
}

console.log('[ERROR]', e);
}
}

testPersonalization();
2 changes: 1 addition & 1 deletion playground/javascript/node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
"start": "tsc && node --env-file=../../.env dist/$0.js"
},
"dependencies": {
"@algolia/advanced-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/advanced-personalization",
"@algolia/client-abtesting": "link:../../../clients/algoliasearch-client-javascript/packages/client-abtesting",
"@algolia/client-analytics": "link:../../../clients/algoliasearch-client-javascript/packages/client-analytics",
"@algolia/client-common": "link:../../../clients/algoliasearch-client-javascript/packages/client-common",
"@algolia/client-composition": "link:../../../clients/algoliasearch-client-javascript/packages/client-composition",
"@algolia/client-insights": "link:../../../clients/algoliasearch-client-javascript/packages/client-insights",
"@algolia/client-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/client-personalization",
"@algolia/client-query-suggestions": "link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions",
"@algolia/client-realtime-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/client-realtime-personalization",
"@algolia/client-search": "link:../../../clients/algoliasearch-client-javascript/packages/client-search",
"@algolia/composition": "link:../../../clients/algoliasearch-client-javascript/packages/composition",
"@algolia/ingestion": "link:../../../clients/algoliasearch-client-javascript/packages/ingestion",
Expand Down
8 changes: 2 additions & 6 deletions scripts/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,9 @@ export const GENERATORS = Object.entries(clientsConfig).reduce(

export const LANGUAGES = [...new Set(Object.values(GENERATORS).map((gen) => gen.language))];

// `crawler` and `advanced-personalization` are manually added so we can still bundled and validate the specs
// `crawler` is manually added so we can still bundled and validate the specs
// the entry can be removed once at least one client is generated
export const CLIENTS = [
...new Set(Object.values(GENERATORS).map((gen) => gen.client)),
'crawler',
'advanced-personalization',
];
export const CLIENTS = [...new Set(Object.values(GENERATORS).map((gen) => gen.client)), 'crawler'];

export async function run(command: string, { errorMessage, cwd, language }: RunOptions = {}): Promise<string> {
const realCwd = path.resolve(ROOT_DIR, cwd ?? '.');
Expand Down
8 changes: 8 additions & 0 deletions specs/advanced-personalization/common/enums.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,11 @@ sourceType:
title: type
type: string
enum: [insights]

strategy:
type: string
enum:
- session
- historical
- hybrid
example: 'session'
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
post:
tags:
- users
operationId: computeUser
operationId: computeRealtimeUser
x-acl:
- recommendation
summary: Compute the user's personalization profile
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
get:
tags:
- users
operationId: getUser
operationId: getRealtimeUser
x-acl:
- recommendation
summary: Retrieve the user's personalization profile
Expand All @@ -14,7 +14,7 @@ get:
content:
application/json:
schema:
$ref: '../common/schemas/user.yml#/user'
$ref: '../common/schemas/RealtimeUser.yml#/user'
'400':
$ref: '../../common/responses/BadRequest.yml'
'402':
Expand Down
16 changes: 16 additions & 0 deletions specs/advanced-personalization/spec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,19 @@ paths:

/2/users/{userID}:
$ref: 'paths/user.yml'

# #################
# ### Real-time ###
# #################

/2/realtime/users/{userToken}:
$ref: 'paths/getRealtimeUser.yml'

/2/realtime/users/{userToken}/compute:
$ref: 'paths/computeRealtimeUser.yml'

# ###############
# ### Helpers ###
# ###############
/setClientApiKey:
$ref: '../common/helpers/setClientApiKey.yml#/method'
7 changes: 0 additions & 7 deletions specs/realtime-personalization/common/enums.yml

This file was deleted.

54 changes: 0 additions & 54 deletions specs/realtime-personalization/spec.yml

This file was deleted.

50 changes: 50 additions & 0 deletions tests/CTS/client/advanced-personalization/parameters.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
[
{
"testName": "throws when region is not given",
"autoCreateClient": false,
"steps": [
{
"type": "createClient",
"parameters": {
"appId": "my-app-id",
"apiKey": "my-api-key",
"region": ""
},
"expected": {
"error": "`region` is required and must be one of the following: eu, us"
}
}
]
},
{
"testName": "throws when incorrect region is given",
"autoCreateClient": false,
"steps": [
{
"type": "createClient",
"parameters": {
"appId": "my-app-id",
"apiKey": "my-api-key",
"region": "not_a_region"
},
"expected": {
"error": "`region` is required and must be one of the following: eu, us"
}
}
]
},
{
"testName": "does not throw when region is given",
"autoCreateClient": false,
"steps": [
{
"type": "createClient",
"parameters": {
"appId": "my-app-id",
"apiKey": "my-api-key",
"region": "us"
}
}
]
}
]
19 changes: 0 additions & 19 deletions tests/CTS/client/realtime-personalization/api.json

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[
{
"parameters": {
"userToken": "foo"
},
"request": {
"path": "/2/realtime/users/foo/compute",
"method": "POST"
}
}
]
11 changes: 11 additions & 0 deletions tests/CTS/requests/advanced-personalization/deleteUser.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[
{
"parameters": {
"userID": "user-1"
},
"request": {
"path": "/2/users/user-1",
"method": "DELETE"
}
}
]
8 changes: 8 additions & 0 deletions tests/CTS/requests/advanced-personalization/getConfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[
{
"request": {
"path": "/2/config",
"method": "GET"
}
}
]
11 changes: 11 additions & 0 deletions tests/CTS/requests/advanced-personalization/getUser.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[
{
"parameters": {
"userID": "user-1"
},
"request": {
"path": "/2/users/user-1",
"method": "GET"
}
}
]
14 changes: 14 additions & 0 deletions tests/CTS/requests/advanced-personalization/getUsers.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"parameters": {
"indices": ["indexName"]
},
"request": {
"path": "/2/users",
"method": "GET",
"queryParameters": {
"indices": "indexName"
}
}
}
]
Loading
Loading