Skip to content

Commit 0ea1d0c

Browse files
raed667bengreenbankshortcuts
authored
feat(clients): add real-time personalization to advanced-personalization [PRED-3870] (#4976)
Co-authored-by: Ben Greenbank <61185468+bengreenbank@users.noreply.github.com> Co-authored-by: Clément Vannicatte <vannicattec@gmail.com>
1 parent fed9be0 commit 0ea1d0c

File tree

26 files changed

+289
-160
lines changed

26 files changed

+289
-160
lines changed

clients/algoliasearch-client-javascript/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"packages/*"
88
],
99
"scripts": {
10-
"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",
10+
"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 ",
1111
"clean": "lerna run clean",
1212
"release:publish": "tsc --project scripts/tsconfig.json && node scripts/dist/publish.js",
1313
"test": "lerna run test $*",

clients/algoliasearch-client-javascript/yarn.lock

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,23 @@ __metadata:
55
version: 8
66
cacheKey: 10
77

8+
"@algolia/advanced-personalization@workspace:packages/advanced-personalization":
9+
version: 0.0.0-use.local
10+
resolution: "@algolia/advanced-personalization@workspace:packages/advanced-personalization"
11+
dependencies:
12+
"@algolia/client-common": "npm:5.27.0"
13+
"@algolia/requester-browser-xhr": "npm:5.27.0"
14+
"@algolia/requester-fetch": "npm:5.27.0"
15+
"@algolia/requester-node-http": "npm:5.27.0"
16+
"@arethetypeswrong/cli": "npm:0.18.2"
17+
"@types/node": "npm:22.15.30"
18+
publint: "npm:0.3.12"
19+
rollup: "npm:4.41.0"
20+
tsup: "npm:8.5.0"
21+
typescript: "npm:5.8.3"
22+
languageName: unknown
23+
linkType: soft
24+
825
"@algolia/client-abtesting@npm:5.27.0, @algolia/client-abtesting@workspace:packages/client-abtesting":
926
version: 0.0.0-use.local
1027
resolution: "@algolia/client-abtesting@workspace:packages/client-abtesting"

config/clients.config.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,11 @@
163163
"name": "personalization",
164164
"output": "clients/algoliasearch-client-javascript/packages/client-personalization"
165165
},
166+
{
167+
"name": "advanced-personalization",
168+
"output": "clients/algoliasearch-client-javascript/packages/advanced-personalization",
169+
"isStandaloneClient": true
170+
},
166171
{
167172
"name": "query-suggestions",
168173
"output": "clients/algoliasearch-client-javascript/packages/client-query-suggestions"

config/clients.schema.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"insights",
1919
"monitoring",
2020
"personalization",
21+
"advanced-personalization",
2122
"query-suggestions",
2223
"recommend",
2324
"search"
@@ -41,6 +42,7 @@
4142
"insights",
4243
"monitoring",
4344
"personalization",
45+
"advanced-personalization",
4446
"query-suggestions",
4547
"recommend",
4648
"search"

generators/src/main/java/com/algolia/codegen/cts/tests/TestsRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ public void run(Map<String, CodegenModel> models, Map<String, CodegenOperation>
8383

8484
bundle.put(
8585
"e2eAppID",
86-
client.startsWith("composition") || client.startsWith("realtime") ? "METIS_APPLICATION_ID" : "ALGOLIA_APPLICATION_ID"
86+
client.startsWith("composition") || client.startsWith("advanced-personalization") ? "METIS_APPLICATION_ID" : "ALGOLIA_APPLICATION_ID"
8787
);
8888
bundle.put(
8989
"e2eApiKey",
90-
client.startsWith("composition") || client.startsWith("realtime")
90+
client.startsWith("composition") || client.startsWith("advanced-personalization")
9191
? "METIS_API_KEY"
9292
: (client.equals("monitoring") ? "MONITORING_API_KEY" : "ALGOLIA_ADMIN_KEY")
9393
);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { advancedPersonalizationClient } from '@algolia/advanced-personalization';
2+
import { ApiError } from '@algolia/client-common';
3+
4+
const appId = process.env.ALGOLIA_APPLICATION_ID || '**** APP_ID *****';
5+
const apiKey = process.env.ALGOLIA_RECOMMENDATION_KEY || '**** RECOMMENDATION_API_KEY *****';
6+
7+
// Init client with appId and apiKey
8+
const client = advancedPersonalizationClient(appId, apiKey, 'eu');
9+
10+
async function testPersonalization() {
11+
try {
12+
const res = await client.computeRealtimeUser({ userToken: 'userToken' });
13+
14+
console.log(`[OK]`, res);
15+
} catch (e) {
16+
if (e instanceof ApiError) {
17+
return console.log(`[${e.status}] ${e.message}`, e.stackTrace);
18+
}
19+
20+
console.log('[ERROR]', e);
21+
}
22+
}
23+
24+
testPersonalization();

playground/javascript/node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
"start": "tsc && node --env-file=../../.env dist/$0.js"
88
},
99
"dependencies": {
10+
"@algolia/advanced-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/advanced-personalization",
1011
"@algolia/client-abtesting": "link:../../../clients/algoliasearch-client-javascript/packages/client-abtesting",
1112
"@algolia/client-analytics": "link:../../../clients/algoliasearch-client-javascript/packages/client-analytics",
1213
"@algolia/client-common": "link:../../../clients/algoliasearch-client-javascript/packages/client-common",
1314
"@algolia/client-composition": "link:../../../clients/algoliasearch-client-javascript/packages/client-composition",
1415
"@algolia/client-insights": "link:../../../clients/algoliasearch-client-javascript/packages/client-insights",
1516
"@algolia/client-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/client-personalization",
1617
"@algolia/client-query-suggestions": "link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions",
17-
"@algolia/client-realtime-personalization": "link:../../../clients/algoliasearch-client-javascript/packages/client-realtime-personalization",
1818
"@algolia/client-search": "link:../../../clients/algoliasearch-client-javascript/packages/client-search",
1919
"@algolia/composition": "link:../../../clients/algoliasearch-client-javascript/packages/composition",
2020
"@algolia/ingestion": "link:../../../clients/algoliasearch-client-javascript/packages/ingestion",

scripts/common.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,9 @@ export const GENERATORS = Object.entries(clientsConfig).reduce(
7171

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

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

8278
export async function run(command: string, { errorMessage, cwd, language }: RunOptions = {}): Promise<string> {
8379
const realCwd = path.resolve(ROOT_DIR, cwd ?? '.');

specs/advanced-personalization/common/enums.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,11 @@ sourceType:
2121
title: type
2222
type: string
2323
enum: [insights]
24+
25+
strategy:
26+
type: string
27+
enum:
28+
- session
29+
- historical
30+
- hybrid
31+
example: 'session'

0 commit comments

Comments
 (0)