Skip to content

Commit

Permalink
Merge branch 'main' into fix/api-typos
Browse files Browse the repository at this point in the history
  • Loading branch information
shortcuts authored Oct 9, 2024
2 parents e9c2ded + fdd510c commit 3c07c18
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 40 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ jobs:
run: ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).buildCommand }}

- name: Build the playground
run: yarn cli build playground javascript
run: yarn cli build playground javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }}

- name: Run common and requester tests
run: cd clients/algoliasearch-client-javascript && yarn test ${{ !contains(fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun, 'algoliasearch') && '--ignore algoliasearch' || '' }}
Expand Down Expand Up @@ -279,13 +279,13 @@ jobs:
run: yarn cli snippets javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }}

- name: Build the snippets to check validity
run: yarn cli build snippets javascript
run: yarn cli build snippets javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }}

- name: Generate code guides
run: yarn cli guides javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }}

- name: Build the guides to check validity
run: yarn cli build guides javascript
run: yarn cli build guides javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }}

- name: Zip artifact before storing
run: zip -r -y clients-javascript.zip clients/algoliasearch-client-javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).testsToStore }} ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).guidesToStore }} -x "**/node_modules**" "**/.yarn/cache/**" "**/.yarn/install-state.gz" "**/build/**" "**/dist/**" "**/.gradle/**" "**/bin/**" "**/.nx/**"
Expand Down
24 changes: 24 additions & 0 deletions playground/javascript/node/monitoring.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { ApiError } from '@algolia/client-common';
import { monitoringClient } from '@algolia/monitoring';

const appId = process.env.ALGOLIA_APPLICATION_ID || '**** APP_ID *****';
const apiKey = process.env.ALGOLIA_ADMIN_KEY || '**** MONITORING_KEY *****';

// Init client with appId and apiKey
const client = monitoringClient(appId, apiKey);

async function testMonitoring() {
try {
const res = await client.getStatus();

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

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

testMonitoring();
4 changes: 2 additions & 2 deletions playground/javascript/node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
"private": true,
"type": "module",
"scripts": {
"start": "tsc && node --env-file=../../.env dist/$0.js",
"build": "tsc"
"start": "tsc && node --env-file=../../.env dist/$0.js"
},
"dependencies": {
"@algolia/client-abtesting": "link:../../../clients/algoliasearch-client-javascript/packages/client-abtesting",
Expand All @@ -16,6 +15,7 @@
"@algolia/client-query-suggestions": "link:../../../clients/algoliasearch-client-javascript/packages/client-query-suggestions",
"@algolia/client-search": "link:../../../clients/algoliasearch-client-javascript/packages/client-search",
"@algolia/ingestion": "link:../../../clients/algoliasearch-client-javascript/packages/ingestion",
"@algolia/monitoring": "link:../../../clients/algoliasearch-client-javascript/packages/monitoring",
"@algolia/recommend": "link:../../../clients/algoliasearch-client-javascript/packages/recommend",
"@algolia/requester-node-http": "link:../../../clients/algoliasearch-client-javascript/packages/requester-node-http",
"algoliasearch": "link:../../../clients/algoliasearch-client-javascript/packages/algoliasearch"
Expand Down
51 changes: 24 additions & 27 deletions scripts/buildLanguages.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { existsSync } from 'node:fs';

import { run, toAbsolutePath } from './common.js';
import { createClientName, run, toAbsolutePath } from './common.js';
import { getLanguageFolder } from './config.js';
import { createSpinner } from './spinners.js';
import type { Generator, Language } from './types.js';
Expand All @@ -26,6 +26,10 @@ function getFolder(buildType: BuildType, language: Language): string {
* Build code for a specific language.
*/
async function buildLanguage(language: Language, gens: Generator[], buildType: BuildType): Promise<void> {
if (!gens || gens.length === 0) {
return;
}

const cwd = getFolder(buildType, language);
const spinner = createSpinner(`building ${buildType} for '${language}'`);
switch (language) {
Expand All @@ -48,12 +52,20 @@ async function buildLanguage(language: Language, gens: Generator[], buildType: B
packageName === 'algoliasearch' ? packageName : `@algolia/${packageName}`,
);
await run(`yarn build:many '{${packageNames.join(',')},}'`, { cwd, language });
} else if (buildType === 'playground') {
await run('yarn build', { cwd: `${cwd}/node`, language });
} else {
await run('yarn tsc --noEmit', { cwd, language });
break;
}

let fileNames = '';

if (buildType !== 'guides') {
fileNames = gens.reduce((prev, curr) => `${prev} ${createClientName(curr.client, curr.language)}.ts`, '');
}

await run(`yarn tsc ${fileNames} --noEmit`, {
cwd: buildType === 'playground' ? `${cwd}/node` : `${cwd}/src`,
language,
});

break;
case 'java':
case 'kotlin':
Expand Down Expand Up @@ -89,10 +101,15 @@ async function buildLanguage(language: Language, gens: Generator[], buildType: B
spinner.succeed();
}

export async function buildClients(generators: Generator[]): Promise<void> {
export async function buildLanguages(generators: Generator[], scope: BuildType): Promise<void> {
const langs = [...new Set(generators.map((gen) => gen.language))];
const generatorsMap = generators.reduce(
(map, gen) => {
// TODO: remove this when guides are mandatory and implemented in every clients
if (scope === 'guides' && !existsSync(toAbsolutePath(`docs/guides/${gen.language}`))) {
return map;
}

if (!(gen.language in map)) {
map[gen.language] = [];
}
Expand All @@ -104,25 +121,5 @@ export async function buildClients(generators: Generator[]): Promise<void> {
{} as Record<Language, Generator[]>,
);

await Promise.all(langs.map((lang) => buildLanguage(lang, generatorsMap[lang], 'client')));
}

export async function buildPlaygrounds(languages: Language[]): Promise<void> {
await Promise.all(languages.map((lang) => buildLanguage(lang, [], 'playground')));
}

export async function buildSnippets(languages: Language[]): Promise<void> {
await Promise.all(languages.map((lang) => buildLanguage(lang, [], 'snippets')));
}

export async function buildGuides(languages: Language[]): Promise<void> {
await Promise.all(
languages.map((lang) => {
if (!existsSync(toAbsolutePath(`docs/guides/${lang}`))) {
return Promise.resolve();
}

return buildLanguage(lang, [], 'guides');
}),
);
await Promise.all(langs.map((lang) => buildLanguage(lang, generatorsMap[lang], scope)));
}
34 changes: 26 additions & 8 deletions scripts/cli/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Argument, program } from 'commander';
import semver from 'semver';

import { buildClients, buildGuides, buildPlaygrounds, buildSnippets } from '../buildLanguages.js';
import { buildLanguages } from '../buildLanguages.js';
import { CI, CLIENTS, LANGUAGES, run, setVerbose, toAbsolutePath } from '../common.js';
import { getLanguageFolder } from '../config.js';
import { ctsGenerateMany } from '../cts/generate.js';
Expand Down Expand Up @@ -82,40 +82,58 @@ buildCommand

setVerbose(Boolean(verbose));

await buildClients(generatorList({ language, client, clientList }));
await buildLanguages(generatorList({ language, client, clientList }), 'client');
});

buildCommand
.command('playground')
.description('Build a specified playground')
.addArgument(args.language)
.addArgument(args.clients)
.option(flags.verbose.flag, flags.verbose.description)
.action(async (langArg: LangArg, { verbose }) => {
.action(async (langArg: LangArg, clientArg: string[], { verbose }) => {
const { language, client, clientList } = transformSelection({
langArg,
clientArg,
});

setVerbose(Boolean(verbose));

await buildPlaygrounds(langArg === ALL || langArg === undefined ? LANGUAGES : [langArg]);
await buildLanguages(generatorList({ language, client, clientList }), 'playground');
});

buildCommand
.command('snippets')
.description('Build a specified snippets')
.addArgument(args.language)
.addArgument(args.clients)
.option(flags.verbose.flag, flags.verbose.description)
.action(async (langArg: LangArg, { verbose }) => {
.action(async (langArg: LangArg, clientArg: string[], { verbose }) => {
const { language, client, clientList } = transformSelection({
langArg,
clientArg,
});

setVerbose(Boolean(verbose));

await buildSnippets(langArg === ALL || langArg === undefined ? LANGUAGES : [langArg]);
await buildLanguages(generatorList({ language, client, clientList }), 'snippets');
});

buildCommand
.command('guides')
.description('Build a specified guides')
.addArgument(args.language)
.addArgument(args.clients)
.option(flags.verbose.flag, flags.verbose.description)
.action(async (langArg: LangArg, { verbose }) => {
.action(async (langArg: LangArg, clientArg: string[], { verbose }) => {
const { language, client, clientList } = transformSelection({
langArg,
clientArg,
});

setVerbose(Boolean(verbose));

await buildGuides(langArg === ALL || langArg === undefined ? LANGUAGES : [langArg]);
await buildLanguages(generatorList({ language, client, clientList }), 'guides');
});

buildCommand
Expand Down

0 comments on commit 3c07c18

Please sign in to comment.