From 5f6a2d4d9c2c1b3e5c2cd7a26ff215bd124349e5 Mon Sep 17 00:00:00 2001 From: Kilian Panot Date: Tue, 18 Jul 2023 15:20:10 +0900 Subject: [PATCH 1/7] fix(component): configuration extractor to extract aliased types --- .../helpers/component/component-config.extractor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@o3r/components/builders/component-extractor/helpers/component/component-config.extractor.ts b/packages/@o3r/components/builders/component-extractor/helpers/component/component-config.extractor.ts index 2c660cca5e..e47e520917 100644 --- a/packages/@o3r/components/builders/component-extractor/helpers/component/component-config.extractor.ts +++ b/packages/@o3r/components/builders/component-extractor/helpers/component/component-config.extractor.ts @@ -162,7 +162,7 @@ export class ComponentConfigExtractor { } else if (configurationWrapper) { const type = this.checker.getTypeFromTypeNode(typeNode); const baseTypes = type.getBaseTypes(); - const symbolName = this.getSymbolName(type.symbol); + const symbolName = this.getSymbolName(type.symbol || type.aliasSymbol); const alreadyExtracted = !!configurationWrapper.nestedConfiguration.find((c) => c.name === symbolName); const extendsNested = !!baseTypes?.some((baseType) => this.getSymbolName(baseType.symbol).match(/^NestedConfiguration$/)); if (extendsNested && !alreadyExtracted) { From 899b88d96a96fcfca139e24266b6d9eaca357bed Mon Sep 17 00:00:00 2001 From: Kilian Panot Date: Fri, 14 Jul 2023 17:40:40 +0900 Subject: [PATCH 2/7] fix(ama-sdk/create): enable create feature for yarn pnp --- packages/@ama-sdk/create/README.md | 1 + packages/@ama-sdk/create/project.json | 3 +- packages/@ama-sdk/create/src/index.it.spec.ts | 38 +++--- packages/@ama-sdk/create/src/index.ts | 15 ++- packages/@ama-sdk/schematics/project.json | 3 +- .../schematics/schematics/index.it.spec.ts | 115 ------------------ 6 files changed, 39 insertions(+), 136 deletions(-) delete mode 100644 packages/@ama-sdk/schematics/schematics/index.it.spec.ts diff --git a/packages/@ama-sdk/create/README.md b/packages/@ama-sdk/create/README.md index c5a6cc39d7..0dca79c58b 100644 --- a/packages/@ama-sdk/create/README.md +++ b/packages/@ama-sdk/create/README.md @@ -25,5 +25,6 @@ yarn create @ama-sdk typescript [...options] - `--spec-path`: Path to the swagger/open-api specification used to generate the SDK - `--package-manager`: Node package manager to be used (`npm` and `yarn` are available). +- `--debug`: Enable schematics debug mode (including dry run). > **Note**: if the `--spec-path` is specified, the SDK will be generated based on this specification at the creation time. diff --git a/packages/@ama-sdk/create/project.json b/packages/@ama-sdk/create/project.json index 2f77dd69a0..6c06c83fe3 100644 --- a/packages/@ama-sdk/create/project.json +++ b/packages/@ama-sdk/create/project.json @@ -54,8 +54,7 @@ "executor": "@nx/jest:jest", "options": { "jestConfig": "packages/@ama-sdk/create/testing/jest.config.it.js", - "silent": false, - "passWithNoTests": true + "silent": false } }, "publish": { diff --git a/packages/@ama-sdk/create/src/index.it.spec.ts b/packages/@ama-sdk/create/src/index.it.spec.ts index 8be7022956..170aeb954a 100644 --- a/packages/@ama-sdk/create/src/index.it.spec.ts +++ b/packages/@ama-sdk/create/src/index.it.spec.ts @@ -39,7 +39,7 @@ const sdkPackagePath = path.join(execAppOptions.cwd!.toString(), sdkPackageName. * Publish all the packages of the Otter monorepo on it. * Can be accessed during the tests with url http://localhost:4873 */ -function setupLocalRegistry() { +function setupLocalRegistryRules() { let shouldHandleVerdaccio = false; beforeAll(async () => { @@ -79,6 +79,7 @@ function setupYarn(yarnVersion: string) { execSync('yarn config set enableStrictSsl false', execAppOptions); execSync(`yarn set version ${yarnVersion}`, execAppOptions); + execSync(`yarn config set cacheFolder ${cacheFolderPath}`, execAppOptions); execSync(`yarn config set npmScopes.ama-sdk.npmRegistryServer ${registry}`, execAppOptions); execSync(`yarn config set npmScopes.o3r.npmRegistryServer ${registry}`, execAppOptions); execSync('yarn config set unsafeHttpWhitelist localhost', execAppOptions); @@ -89,10 +90,19 @@ function setupYarn(yarnVersion: string) { // copy npmrc config to generated SDK mkdirSync(sdkPackagePath, { recursive: true }); cpSync(path.join(execAppOptions.cwd.toString(), '.yarnrc.yml'), path.join(sdkPackagePath, '.yarnrc.yml')); + cpSync(path.join(execAppOptions.cwd.toString(), '.yarn'), path.join(sdkPackagePath, '.yarn'), {recursive: true}); }); } -function setupCache() { +function setupPackageManagerRules() { + if (packageManager.startsWith('yarn')) { + setupYarn(o3rPackageJson?.packageManager?.split('@')?.[1] || '3.5.0'); + } else { + setupNpm(); + } +} + +function setupCacheRules() { beforeEach(() => { try { rmSync(sdkFolderPath, { recursive: true, force: true }); @@ -117,24 +127,24 @@ function setupCache() { }); } -describe('new Otter sdk', () => { - setupLocalRegistry(); - setupCache(); - setupNpm(); - if (packageManager.startsWith('yarn')) { - setupYarn(o3rPackageJson?.packageManager?.split('@')?.[1] || '3.5.0'); - } +describe('Create new sdk command', () => { + setupLocalRegistryRules(); + setupCacheRules(); + setupPackageManagerRules(); - test('should build from full generation', () => { + beforeEach(() => { cpSync(path.join(__dirname, '..', 'testing', 'mocks', 'MOCK_swagger_updated.yaml'), path.join(sdkFolderPath, 'swagger-spec.yml')); - expect(() => execSync(`npm create @ama-sdk typescript ${sdkPackageName} -- --package-manager ${packageManager} --spec-path ./swagger-spec.yml`, execAppOptions)).not.toThrow(); + }); + + test('should generate a full SDK when the specification is provided', () => { + // eslint-disable-next-line max-len + expect(() => execSync(`${packageManager} create @ama-sdk typescript ${sdkPackageName}${packageManager.startsWith('npm') ? ' --' : ''} --package-manager ${packageManager} --spec-path ./swagger-spec.yml`, execAppOptions)).not.toThrow(); // TODO: uncomment when the generation is fixed for NPM // expect(() => execSync(`${packageManager} run build`, { ...execAppOptions, cwd: sdkPackagePath })).not.toThrow(); }); - test('should build after new generation', () => { - cpSync(path.join(__dirname, '..', 'testing', 'mocks', 'MOCK_swagger_updated.yaml'), path.join(sdkFolderPath, 'swagger-spec.yml')); - expect(() => execSync(`npm create @ama-sdk typescript ${sdkPackageName}`, execAppOptions)).not.toThrow(); + test('should generate an empty SDK ready to be used', () => { + expect(() => execSync(`${packageManager} create @ama-sdk typescript ${sdkPackageName}`, execAppOptions)).not.toThrow(); expect(() => execSync( `${packageManager} exec schematics @ama-sdk/schematics:typescript-core --spec-path ${path.join(path.relative(sdkPackagePath, execAppOptions.cwd.toString()), 'swagger-spec.yml')}`, diff --git a/packages/@ama-sdk/create/src/index.ts b/packages/@ama-sdk/create/src/index.ts index 4480a1ec5f..6c60ae7e8b 100644 --- a/packages/@ama-sdk/create/src/index.ts +++ b/packages/@ama-sdk/create/src/index.ts @@ -1,7 +1,7 @@ #!/usr/bin/env node import { spawnSync } from 'node:child_process'; -import { join, resolve } from 'node:path'; +import { dirname, join, resolve } from 'node:path'; import * as minimist from 'minimist'; const defaultScope = 'sdk'; @@ -12,6 +12,7 @@ const argv = minimist(args); if (argv._.length < 2) { // eslint-disable-next-line no-console console.error('The SDK type and project name are mandatory'); + console.info('usage: create typescript <@scope/package>'); process.exit(-1); } @@ -31,9 +32,10 @@ if (!pck) { } const targetDirectory = join('.', name, pck); +const schematicsPackage = dirname(require.resolve('@ama-sdk/schematics/package.json')); const schematicsToRun = [ - '@ama-sdk/schematics:typescript-shell', - ...(argv['spec-path'] ? ['@ama-sdk/schematics:typescript-core'] : []) + `${schematicsPackage}:typescript-shell`, + ...(argv['spec-path'] ? [`${schematicsPackage}:typescript-core`] : []) ]; const packageManagerEnv = process.env.npm_config_user_agent?.split('/')[0]; @@ -46,9 +48,14 @@ const packageManager = argv['package-manager'] || defaultPackageManager; const run = () => { const schematicArgs = [ - '--name', name, '--package', pck, '--package-manager', packageManager, '--directory', targetDirectory, + argv.debug !== undefined ? `--debug=${argv.debug as string}` : '--debug=false', // schematics enable debug mode per default when using schematics with relative path + '--name', name, + '--package', pck, + '--package-manager', packageManager, + '--directory', targetDirectory, ...(argv['spec-path'] ? ['--spec-path', argv['spec-path']] : []) ]; + const errors = schematicsToRun .map((schematic) => spawnSync(process.execPath, [binPath, schematic, ...schematicArgs], { stdio: 'inherit', cwd: process.cwd()})) .map(({error}) => error) diff --git a/packages/@ama-sdk/schematics/project.json b/packages/@ama-sdk/schematics/project.json index 2926b68984..2acd30e622 100644 --- a/packages/@ama-sdk/schematics/project.json +++ b/packages/@ama-sdk/schematics/project.json @@ -73,7 +73,8 @@ "executor": "@nx/jest:jest", "options": { "jestConfig": "packages/@ama-sdk/schematics/testing/jest.config.it.js", - "silent": false + "silent": false, + "passWithNoTests": true } }, "prepare-publish": { diff --git a/packages/@ama-sdk/schematics/schematics/index.it.spec.ts b/packages/@ama-sdk/schematics/schematics/index.it.spec.ts deleted file mode 100644 index 255df3eda0..0000000000 --- a/packages/@ama-sdk/schematics/schematics/index.it.spec.ts +++ /dev/null @@ -1,115 +0,0 @@ -import * as fs from 'node:fs'; -import { execSync, ExecSyncOptions } from 'node:child_process'; -import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; -import * as path from 'node:path'; -import type { PackageJson } from 'type-fest'; -import getPidFromPort from 'pid-from-port'; -import { minVersion } from 'semver'; - -const appName = 'test-sdk'; -const currentFolder = path.join(__dirname, '..', '..', '..', '..'); -const packageJsonPath = path.join(__dirname, '..', 'package.json'); -const parentFolderPath = path.join(currentFolder, '..'); -const itTestsFolderPath = path.join(parentFolderPath, 'it-tests'); -const sdkFolderPath = path.join(itTestsFolderPath, 'test-sdk'); -const cacheFolderPath = path.join(currentFolder, '.cache', appName); -const execAppOptions: ExecSyncOptions = { - cwd: sdkFolderPath, - stdio: 'inherit', - // eslint-disable-next-line @typescript-eslint/naming-convention - env: {...process.env, JEST_WORKER_ID: undefined, NODE_OPTIONS: ''} -}; -const registry = 'http://localhost:4873'; - -/** - * Set up a local npm registry inside a docker image before the tests. - * Publish all the packages of the Otter monorepo on it. - * Can be accessed during the tests with url http://localhost:4873 - */ -function setupLocalRegistry() { - let shouldHandleVerdaccio = false; - - beforeAll(async () => { - try { - await getPidFromPort(4873); - } catch (ex) { - shouldHandleVerdaccio = true; - execSync('yarn verdaccio:start', {cwd: currentFolder, stdio: 'inherit'}); - execSync('yarn verdaccio:publish', {cwd: currentFolder, stdio: 'inherit'}); - } - }); - - afterAll(() => { - if (shouldHandleVerdaccio) { - execSync('yarn verdaccio:stop', {cwd: currentFolder, stdio: 'inherit'}); - } - }); -} - -function setupYarn(yarnVersion: string) { - execSync('yarn config set enableStrictSsl false', execAppOptions); - execSync(`yarn set version ${yarnVersion}`, execAppOptions); - execSync(`yarn config set npmScopes.ama-sdk.npmRegistryServer ${registry}`, execAppOptions); - execSync(`yarn config set npmScopes.o3r.npmRegistryServer ${registry}`, execAppOptions); - execSync('yarn config set unsafeHttpWhitelist localhost', execAppOptions); - execSync('yarn config set nodeLinker pnp', execAppOptions); - execSync('yarn config set enableMirror false', execAppOptions); - if (!existsSync(cacheFolderPath)) { - mkdirSync(cacheFolderPath, {recursive: true}); - } - execSync(`yarn config set cacheFolder ${cacheFolderPath}`, execAppOptions); - if (existsSync(cacheFolderPath)) { - const workspacesList = execSync('yarn workspaces:list', {stdio: 'pipe'}).toString().split('\n') - .map((workspace) => workspace.replace('packages/', '').replace(/\//, '-')); - readdirSync(cacheFolderPath).forEach((fileName) => { - if (workspacesList.some((workspace) => fileName.startsWith(workspace))) { - rmSync(path.join(cacheFolderPath, fileName)); - } - }); - } - execSync('yarn config set enableImmutableInstalls false', execAppOptions); -} - -/** - * Setup a new sdk using schematics CLI - * - * @deprecated A new SDK should be generated via the `npm create` feature - */ -function setupNewSdk() { - beforeAll(() => { - - // Create app with ng new - const relativePath = path.relative(parentFolderPath, sdkFolderPath); - execSync(`npx rimraf ${relativePath}`, {cwd: parentFolderPath, stdio: 'inherit'}); - mkdirSync(sdkFolderPath, {recursive: true}); - writeFileSync(path.join(sdkFolderPath, 'package.json'), '{"name": "@test/sdk"}'); - - // Set config to target local registry - const o3rPackageJson: PackageJson & { packageManager?: string } = JSON.parse(fs.readFileSync(path.join(currentFolder, 'package.json')).toString()); - const yarnVersion = o3rPackageJson?.packageManager?.split('@')?.[1] || '3.5.0'; - setupYarn(yarnVersion); - const packageJson = JSON.parse(readFileSync(packageJsonPath).toString()) as PackageJson; - const angularVersion = minVersion(packageJson.devDependencies['@angular-devkit/schematics-cli']).version; - execSync(`yarn add -D @angular-devkit/schematics-cli@${angularVersion} @ama-sdk/schematics`, execAppOptions); - cpSync(path.join(__dirname, '..', 'testing', 'MOCK_swagger.yaml'), path.join(sdkFolderPath, 'swagger-spec.yml')); - execSync('yarn schematics @ama-sdk/schematics:typescript-shell --name test --package sdk --skip-install', execAppOptions); - execSync(`yarn add -D @openapitools/openapi-generator-cli@${packageJson.peerDependencies['@openapitools/openapi-generator-cli']} @ama-sdk/schematics`, execAppOptions); - execSync('yarn', execAppOptions); - execSync('yarn schematics @ama-sdk/schematics:typescript-core --spec-path ./swagger-spec.yml', execAppOptions); - execSync('yarn', execAppOptions); - }); -} - -describe('new Otter sdk', () => { - setupLocalRegistry(); - setupNewSdk(); - - test('should build', () => { - expect(() => execSync('yarn build', execAppOptions)).not.toThrow(); - - cpSync(path.join(__dirname, '..', 'testing', 'MOCK_swagger_updated.yaml'), path.join(sdkFolderPath, 'swagger-spec.yml')); - execSync('yarn schematics @ama-sdk/schematics:typescript-core --spec-path ./swagger-spec.yml', execAppOptions); - - expect(() => execSync('yarn build', execAppOptions)).not.toThrow(); - }); -}); From ee8ff8956032d79061287308b5f2ea1f2886ebe9 Mon Sep 17 00:00:00 2001 From: pginoux Date: Tue, 18 Jul 2023 16:03:15 +0200 Subject: [PATCH 3/7] fix: sdk generator - enhance questions for typescript shell --- .../schematics/schematics/typescript/shell/schema.json | 8 ++++---- .../schematics/schematics/typescript/shell/schema.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.json b/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.json index ad3054337c..dff2782687 100644 --- a/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.json +++ b/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.json @@ -6,13 +6,13 @@ "properties": { "name": { "type": "string", - "description": "Project name (NPM package scope)", - "x-prompt": "Project name (NPM package scope)?" + "description": "Project name (NPM package scope, package.json name will be @{projectName}/{packageName})", + "x-prompt": "Project name (NPM package scope, package.json name will be @{projectName}/{packageName})?" }, "package": { "type": "string", - "description": "Package name", - "x-prompt": "Package name?", + "description": "Package name (package.json name will be @{projectName}/{packageName})", + "x-prompt": "Package name (package.json name will be @{projectName}/{packageName})?", "default": "sdk" }, "description": { diff --git a/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.ts b/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.ts index e32e76eb2f..d53b1e32f2 100644 --- a/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.ts +++ b/packages/@ama-sdk/schematics/schematics/typescript/shell/schema.ts @@ -1,10 +1,10 @@ import type { JsonObject } from '@angular-devkit/core'; export interface NgGenerateTypescriptSDKShellSchematicsSchema extends JsonObject { - /** Project name (NPM package scope) */ + /** Project name (NPM package scope, package.json name will be @{projectName}/{packageName}) */ name: string; - /** Package name */ + /** Package name (package.json name will be @{projectName}/{packageName}) */ package: string; /** Project description */ From 6ee88e68e997d94d1693d5b0244524d408b6ff9f Mon Sep 17 00:00:00 2001 From: Mircea Vasile REDNIC Date: Tue, 11 Jul 2023 15:29:09 +0200 Subject: [PATCH 4/7] fix: export assets-path-override store module --- packages/@o3r/dynamic-content/src/stores/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/@o3r/dynamic-content/src/stores/index.ts b/packages/@o3r/dynamic-content/src/stores/index.ts index 645f717ce2..7f08024c78 100644 --- a/packages/@o3r/dynamic-content/src/stores/index.ts +++ b/packages/@o3r/dynamic-content/src/stores/index.ts @@ -1,4 +1,5 @@ export * from './asset-path-override/asset-path-override.actions'; +export * from './asset-path-override/asset-path-override.module'; export * from './asset-path-override/asset-path-override.reducer'; export * from './asset-path-override/asset-path-override.selectors'; export * from './asset-path-override/asset-path-override.state'; From a13a4b8ccf12adff2270a34272b959910fbfd28d Mon Sep 17 00:00:00 2001 From: Kilian Panot Date: Wed, 12 Jul 2023 10:36:46 +0900 Subject: [PATCH 5/7] fix(cascading): create pull request from the correct branch --- apps/github-cascading-app/src/cascading/cascading.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/github-cascading-app/src/cascading/cascading.ts b/apps/github-cascading-app/src/cascading/cascading.ts index 27fc9f25d5..4b2c0aabce 100644 --- a/apps/github-cascading-app/src/cascading/cascading.ts +++ b/apps/github-cascading-app/src/cascading/cascading.ts @@ -344,7 +344,7 @@ export abstract class Cascading { const currentBranch = cascadingBranches[branchIndex]; const targetBranch = cascadingBranches[branchIndex + 1]; - const cascadingBranch = this.determineCascadingBranchName(currentBranch.semver?.format() || currentBranch.branch, targetBranch.semver?.format() || targetBranch.branch); + let cascadingBranch = this.determineCascadingBranchName(currentBranch.semver?.format() || currentBranch.branch, targetBranch.semver?.format() || targetBranch.branch); const isAhead = await this.isBranchAhead(currentBranch.branch, targetBranch.branch); if (!isAhead) { @@ -373,6 +373,7 @@ export abstract class Cascading { } const conflictCascadingBranch = this.determineCascadingBranchName(currentBranch.semver?.format() || currentBranch.branch, targetBranch.semver?.format() || targetBranch.branch, true); await this.createBranch(conflictCascadingBranch, currentBranch.branch); + cascadingBranch = conflictCascadingBranch; } } await this.createPullRequestWithMessage(cascadingBranch, currentBranch.branch, targetBranch.branch, config); From 35986267051a4563fe31217a34a90d0256f86ba9 Mon Sep 17 00:00:00 2001 From: Rajat GUPTA Date: Thu, 13 Jul 2023 12:33:13 +0530 Subject: [PATCH 6/7] fix: Use tagname for mat-option in fixtures --- .../playwright/angular-materials/autocomplete-material.ts | 4 ++-- .../protractor/angular-materials/autocomplete-material.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/@o3r/testing/src/core/playwright/angular-materials/autocomplete-material.ts b/packages/@o3r/testing/src/core/playwright/angular-materials/autocomplete-material.ts index 92c4f0623b..aaecd746cb 100644 --- a/packages/@o3r/testing/src/core/playwright/angular-materials/autocomplete-material.ts +++ b/packages/@o3r/testing/src/core/playwright/angular-materials/autocomplete-material.ts @@ -16,7 +16,7 @@ export class MatAutocomplete extends O3rElement implements MatAutocompleteProfil await this.setValue(value); await this.click(); const element = this.sourceElement.page; - const matOptions = element.locator('.mat-option'); + const matOptions = element.locator('.mat-option, mat-option'); await matOptions.first().waitFor({state: 'attached', timeout}); const matOptionsCount = await matOptions.count(); const options: (string | undefined)[] = []; @@ -32,6 +32,6 @@ export class MatAutocomplete extends O3rElement implements MatAutocompleteProfil return this.sourceElement.element.press('Tab'); } - return Promise.reject('Element with selector .mat-option not found.'); + return Promise.reject('Element with selector .mat-option, mat-option not found.'); } } diff --git a/packages/@o3r/testing/src/core/protractor/angular-materials/autocomplete-material.ts b/packages/@o3r/testing/src/core/protractor/angular-materials/autocomplete-material.ts index 9abb511f51..6e3c17884c 100644 --- a/packages/@o3r/testing/src/core/protractor/angular-materials/autocomplete-material.ts +++ b/packages/@o3r/testing/src/core/protractor/angular-materials/autocomplete-material.ts @@ -16,7 +16,7 @@ export class MatAutocomplete extends O3rElement implements MatAutocompleteProfil public async selectByValue(value: string, _timeout?: number) { await this.setValue(value); await this.click(); - const matOption = element(By.css('.mat-option')); + const matOption = element(By.css('.mat-option, mat-option')); return new O3rElement(matOption).click(); } } From a09640599cff9fc93aabf4e4b4780d7d228fec1d Mon Sep 17 00:00:00 2001 From: Kilian Panot Date: Wed, 19 Jul 2023 11:20:28 +0900 Subject: [PATCH 7/7] fix(cascading): increase get branch limit --- apps/github-cascading-app/src/cascading/cascading-probot.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/github-cascading-app/src/cascading/cascading-probot.ts b/apps/github-cascading-app/src/cascading/cascading-probot.ts index 9b7c2a2816..085df31a55 100644 --- a/apps/github-cascading-app/src/cascading/cascading-probot.ts +++ b/apps/github-cascading-app/src/cascading/cascading-probot.ts @@ -142,7 +142,11 @@ export class CascadingProbot extends Cascading { /** @inheritdoc */ protected async getBranches() { this.logger.debug('List remote branches'); - const res = await this.options.octokit.repos.listBranches(this.options.repo); + const res = await this.options.octokit.repos.listBranches({ + ...this.options.repo, + // eslint-disable-next-line @typescript-eslint/naming-convention, camelcase + per_page: 100 + }); return res.data.map(({name}) => name); }