Skip to content
Open
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 29 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,35 @@ jobs:
- name: Test
run: npm test

lint:
name: Lint & Format
runs-on: ubuntu-latest

steps:

- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0
with:
egress-policy: audit

- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: '24.x'
cache: 'npm'

- name: Install
run: npm ci --ignore-scripts

- name: Lint
run: npm run lint

- name: Check formatting
run: npm run format.check

doctor:
name: Doctor (Node ${{ matrix.node-version }})
runs-on: ubuntu-latest
Expand Down
12 changes: 12 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"useTabs": true,
"printWidth": 80,
"sortPackageJson": false,
"ignorePatterns": [
"lib/common/test/resources/**",
"lib/common/vendor/**",
"lib/common/bin/**",
"test/files/**"
]
}
49 changes: 49 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"ignorePatterns": [
"lib/common/test/resources/**",
"lib/common/vendor/**",
"lib/common/bin/**",
"test/files/**",
"vendor/**",
"resources/**",
"packages/**",
"docs/**",
"docs-cli/**"
],
"rules": {
"no-unused-vars": [
"warn",
{
"args": "none",
"caughtErrors": "none",
"varsIgnorePattern": "^_",
"ignoreRestSiblings": true
}
],
"eqeqeq": ["error", "always", { "null": "ignore" }],
"no-debugger": "error",
"no-eval": "error",
"no-var": "error",
"prefer-const": [
"error",
{ "destructuring": "all", "ignoreReadBeforeAssign": true }
],
"no-new-wrappers": "error",
"no-redeclare": "error",
"no-unused-expressions": [
"error",
{ "allowShortCircuit": true, "allowTernary": true }
],
"no-empty": "warn",
"no-fallthrough": "error"
},
"overrides": [
{
"files": ["**/*.d.ts"],
"rules": {
"no-var": "off"
}
}
]
}
11 changes: 0 additions & 11 deletions .prettierrc.json

This file was deleted.

5 changes: 3 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,10 @@ Before you submit a Pull Request, consider the following guidelines.
```bash
npm test
```
* Ensure that your code is formatted.
* Ensure that your code is formatted and lints cleanly.
```bash
npm run prettier
npm run format
npm run lint
```
* Commit your changes following the [commit message guidelines](https://github.com/NativeScript/NativeScript/blob/master/CONTRIBUTING.md#-commit-message-guidelines) (the commit message is used to generate release notes).
```bash
Expand Down
28 changes: 14 additions & 14 deletions lib/android-tools-info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
private $errors: IErrors,
private $logger: ILogger,
private $options: IOptions,
protected $staticConfig: Config.IStaticConfig
protected $staticConfig: Config.IStaticConfig,
) {}

@cache()
Expand All @@ -29,18 +29,18 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
infoData.androidHomeEnvVar = androidToolsInfo.androidHome;
infoData.compileSdkVersion = this.getCompileSdkVersion(
infoData.installedTargets,
infoData.compileSdkVersion
infoData.compileSdkVersion,
);
infoData.targetSdkVersion = this.getTargetSdk(infoData.compileSdkVersion);
infoData.generateTypings = this.shouldGenerateTypings();

this.$logger.trace(
"Installed Android Targets are: ",
infoData.installedTargets
infoData.installedTargets,
);
this.$logger.trace(
"Selected buildToolsVersion is:",
infoData.buildToolsVersion
infoData.buildToolsVersion,
);

return infoData;
Expand All @@ -55,7 +55,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
androidToolsInfo
.validateInfo({ projectDir: options.projectDir })
.map((warning) =>
this.printMessage(warning.warning, showWarningsAsErrors)
this.printMessage(warning.warning, showWarningsAsErrors),
).length > 0;

if (options && options.validateTargetSdk) {
Expand All @@ -78,7 +78,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
projectDir: options.projectDir,
})
.map((warning) =>
this.printMessage(warning.warning, options.showWarningsAsErrors)
this.printMessage(warning.warning, options.showWarningsAsErrors),
).length > 0;

if (!detectedErrors) {
Expand All @@ -95,15 +95,15 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {

public validateJavacVersion(
installedJavacVersion: string,
options?: IAndroidToolsInfoOptions
options?: IAndroidToolsInfoOptions,
): boolean {
const showWarningsAsErrors = options && options.showWarningsAsErrors;

return (
androidToolsInfo
.validateJavacVersion(installedJavacVersion)
.map((warning) =>
this.printMessage(warning.warning, showWarningsAsErrors)
this.printMessage(warning.warning, showWarningsAsErrors),
).length > 0
);
}
Expand All @@ -118,8 +118,8 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
`Error while executing '${path.join(
androidToolsInfo.androidHome,
"platform-tools",
"adb"
)} help'. Error is: ${err.message}`
"adb",
)} help'. Error is: ${err.message}`,
);
}

Expand All @@ -128,15 +128,15 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {

@cache()
public validateAndroidHomeEnvVariable(
options?: IAndroidToolsInfoOptions
options?: IAndroidToolsInfoOptions,
): boolean {
const showWarningsAsErrors = options && options.showWarningsAsErrors;

return (
androidToolsInfo
.validateAndroidHomeEnvVariable()
.map((warning) =>
this.printMessage(warning.warning, showWarningsAsErrors)
this.printMessage(warning.warning, showWarningsAsErrors),
).length > 0
);
}
Expand All @@ -163,15 +163,15 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {

private getCompileSdkVersion(
installedTargets: string[],
latestCompileSdk: number
latestCompileSdk: number,
): number {
const userSpecifiedCompileSdk = this.$options.compileSdk;

if (userSpecifiedCompileSdk) {
const androidCompileSdk = `${androidToolsInfo.ANDROID_TARGET_PREFIX}-${userSpecifiedCompileSdk}`;
if (!_.includes(installedTargets, androidCompileSdk)) {
this.$errors.fail(
`You have specified '${userSpecifiedCompileSdk}' for compile sdk, but it is not installed on your system.`
`You have specified '${userSpecifiedCompileSdk}' for compile sdk, but it is not installed on your system.`,
);
}

Expand Down
16 changes: 8 additions & 8 deletions lib/base-package-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@ export abstract class BasePackageManager implements INodePackageManager {
public abstract install(
packageName: string,
pathToSave: string,
config: INodePackageManagerInstallOptions
config: INodePackageManagerInstallOptions,
): Promise<INpmInstallResultInfo>;
public abstract uninstall(
packageName: string,
config?: IDictionary<string | boolean>,
path?: string
path?: string,
): Promise<string>;
public abstract view(packageName: string, config: Object): Promise<any>;
public abstract view(packageName: string, config: object): Promise<any>;
public abstract search(
filter: string[],
config: IDictionary<string | boolean>
config: IDictionary<string | boolean>,
): Promise<string>;
public abstract searchNpms(keyword: string): Promise<INpmsResult>;
public abstract getRegistryPackageData(packageName: string): Promise<any>;
Expand All @@ -38,7 +38,7 @@ export abstract class BasePackageManager implements INodePackageManager {
protected $fs: IFileSystem,
private $hostInfo: IHostInfo,
private $pacoteService: IPacoteService,
private packageManager: string
private packageManager: string,
) {}

public async isRegistered(packageName: string): Promise<boolean> {
Expand All @@ -65,7 +65,7 @@ export abstract class BasePackageManager implements INodePackageManager {
}

public async getPackageNameParts(
fullPackageName: string
fullPackageName: string,
): Promise<INpmPackageNameParts> {
// support <reserved_name>@<version> syntax, for example typescript@1.0.0
// support <scoped_package_name>@<version> syntax, for example @nativescript/vue-template@1.0.0
Expand All @@ -84,7 +84,7 @@ export abstract class BasePackageManager implements INodePackageManager {
}

public async getPackageFullName(
packageNameParts: INpmPackageNameParts
packageNameParts: INpmPackageNameParts,
): Promise<string> {
return packageNameParts.version
? `${packageNameParts.name}@${packageNameParts.version}`
Expand All @@ -104,7 +104,7 @@ export abstract class BasePackageManager implements INodePackageManager {
protected async processPackageManagerInstall(
packageName: string,
params: string[],
opts: { cwd: string; isInstallingAllDependencies: boolean }
opts: { cwd: string; isInstallingAllDependencies: boolean },
): Promise<INpmInstallResultInfo> {
const npmExecutable = this.getPackageManagerExecutableName();
const stdioValue = isInteractive() ? "inherit" : "pipe";
Expand Down
20 changes: 10 additions & 10 deletions lib/bun-package-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export class BunPackageManager extends BasePackageManager {
$hostInfo: IHostInfo,
private $logger: ILogger,
private $httpClient: Server.IHttpClient,
$pacoteService: IPacoteService
$pacoteService: IPacoteService,
) {
super($childProcess, $fs, $hostInfo, $pacoteService, "bun");
}
Expand All @@ -34,7 +34,7 @@ export class BunPackageManager extends BasePackageManager {
public async install(
packageName: string,
pathToSave: string,
config: INodePackageManagerInstallOptions
config: INodePackageManagerInstallOptions,
): Promise<INpmInstallResultInfo> {
if (config.disableNpmInstall) {
return;
Expand All @@ -60,7 +60,7 @@ export class BunPackageManager extends BasePackageManager {
const result = await this.processPackageManagerInstall(
packageName,
params,
{ cwd, isInstallingAllDependencies }
{ cwd, isInstallingAllDependencies },
);
return result;
} catch (err) {
Expand All @@ -74,7 +74,7 @@ export class BunPackageManager extends BasePackageManager {
public async uninstall(
packageName: string,
config?: any,
cwd?: string
cwd?: string,
): Promise<string> {
const flags = this.getFlagsString(config, false);
return this.$childProcess.exec(`bun remove ${packageName} ${flags}`, {
Expand All @@ -84,14 +84,14 @@ export class BunPackageManager extends BasePackageManager {

// Bun does not have a `view` command; use npm.
@exported("bun")
public async view(packageName: string, config: Object): Promise<any> {
public async view(packageName: string, config: object): Promise<any> {
const wrappedConfig = _.extend({}, config, { json: true }); // always require view response as JSON

const flags = this.getFlagsString(wrappedConfig, false);
let viewResult: any;
try {
viewResult = await this.$childProcess.exec(
`npm view ${packageName} ${flags}`
`npm view ${packageName} ${flags}`,
);
} catch (e) {
this.$errors.fail(e.message);
Expand Down Expand Up @@ -119,7 +119,7 @@ export class BunPackageManager extends BasePackageManager {
// https://github.com/npms-io/npms-api/issues/112. Better to switch to
// https://registry.npmjs.org/<query>
const httpRequestResult = await this.$httpClient.httpRequest(
`https://api.npms.io/v2/search?q=keywords:${keyword}`
`https://api.npms.io/v2/search?q=keywords:${keyword}`,
);
const result: INpmsResult = JSON.parse(httpRequestResult.body);
return result;
Expand All @@ -132,15 +132,15 @@ export class BunPackageManager extends BasePackageManager {
const registry = await this.$childProcess.exec(`npm config get registry`);
const url = registry.trim() + packageName;
this.$logger.trace(
`Trying to get data from npm registry for package ${packageName}, url is: ${url}`
`Trying to get data from npm registry for package ${packageName}, url is: ${url}`,
);
const responseData = (await this.$httpClient.httpRequest(url)).body;
this.$logger.trace(
`Successfully received data from npm registry for package ${packageName}. Response data is: ${responseData}`
`Successfully received data from npm registry for package ${packageName}. Response data is: ${responseData}`,
);
const jsonData = JSON.parse(responseData);
this.$logger.trace(
`Successfully parsed data from npm registry for package ${packageName}.`
`Successfully parsed data from npm registry for package ${packageName}.`,
);
return jsonData;
}
Expand Down
Loading
Loading