From 579ed7bb6eae2dc6c749e89b2993be0cd8d61851 Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Mon, 1 Jul 2024 11:43:08 +0100 Subject: [PATCH] update sdk build scripts --- .github/workflows/ci-lint-typescript.yml | 3 +++ package.json | 3 ++- pnpm-lock.yaml | 3 +++ pnpm-workspace.yaml | 22 ++++++++++----------- sdk/typescript/scripts/build-prod-sdk.sh | 12 +++++------ sdk/typescript/scripts/dev-mode-add.mjs | 23 ++++++++++++++++------ sdk/typescript/scripts/dev-mode-remove.mjs | 17 +++++++++++----- sdk/typescript/scripts/release.sh | 4 ++-- 8 files changed, 56 insertions(+), 31 deletions(-) diff --git a/.github/workflows/ci-lint-typescript.yml b/.github/workflows/ci-lint-typescript.yml index 7d08da80a3..e14a682976 100644 --- a/.github/workflows/ci-lint-typescript.yml +++ b/.github/workflows/ci-lint-typescript.yml @@ -24,6 +24,9 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v4 + with: + run_install: | + - recursive: true - name: Install Rust stable uses: actions-rs/toolchain@v1 diff --git a/package.json b/package.json index 51d66eac7d..c411b223bd 100644 --- a/package.json +++ b/package.json @@ -33,9 +33,10 @@ "dev:off": "node sdk/typescript/scripts/dev-mode-remove.mjs" }, "devDependencies": { - "npm-run-all": "^4.1.5", "@npmcli/node-gyp": "^3.0.0", + "js-yaml": "^4.1.0", "node-gyp": "^9.3.1", + "npm-run-all": "^4.1.5", "tslog": "3.3.3" }, "packageManager": "pnpm@9.4.0+sha256.b6fd0bfda555e7e584ad7e56b30c68b01d5a04f9ee93989f4b93ca8473c49c74" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5de14ccd3f..2647027aef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@npmcli/node-gyp': specifier: ^3.0.0 version: 3.0.0 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 node-gyp: specifier: ^9.3.1 version: 9.4.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ae94d45da9..0a77b50731 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,12 +1,12 @@ packages: - - "dist/wasm/**" - - "dist/node/**" - - "dist/ts/**" - - "sdk/typescript/packages/mui-theme" - - "sdk/typescript/packages/react-components" - - "sdk/typescript/packages/validator-client" - - "ts-packages/*" - - "nym-wallet" - - "explorer-nextjs" - - "types" - - "clients/validator" + - dist/wasm/** + - dist/node/** + - dist/ts/** + - sdk/typescript/packages/mui-theme + - sdk/typescript/packages/react-components + - sdk/typescript/packages/validator-client + - ts-packages/* + - nym-wallet + - explorer-nextjs + - types + - clients/validator diff --git a/sdk/typescript/scripts/build-prod-sdk.sh b/sdk/typescript/scripts/build-prod-sdk.sh index 3b3b5dcf9e..81aa8907c3 100755 --- a/sdk/typescript/scripts/build-prod-sdk.sh +++ b/sdk/typescript/scripts/build-prod-sdk.sh @@ -11,17 +11,17 @@ rm -rf dist || true ##--------------------------------------------------------------------------- # use wasm-pack to build packages -yarn build:wasm +pnpm build:wasm # enable dev mode and then install dev packages -yarn dev:on -yarn +pnpm dev:on +pnpm # build the Typescript SDK packages -yarn build:ci:sdk +pnpm build:ci:sdk # build documentation -yarn docs:prod:build +pnpm docs:prod:build # turn dev mode off -yarn dev:off +pnpm dev:off diff --git a/sdk/typescript/scripts/dev-mode-add.mjs b/sdk/typescript/scripts/dev-mode-add.mjs index edecdae96b..dfa1e30f26 100644 --- a/sdk/typescript/scripts/dev-mode-add.mjs +++ b/sdk/typescript/scripts/dev-mode-add.mjs @@ -1,12 +1,23 @@ import fs from 'fs'; +import yaml from 'js-yaml'; -const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); +// Load the pnpm-workspace.yaml file +const pnpmWorkspaceYamlPath = 'pnpm-workspace.yaml'; +const pnpmWorkspaceContent = fs.readFileSync(pnpmWorkspaceYamlPath, 'utf8'); +const pnpmWorkspace = yaml.load(pnpmWorkspaceContent); +// Define the workspaces to add const devWorkspace = ['sdk/typescript/packages/**', 'sdk/typescript/examples/**', 'sdk/typescript/codegen/**']; -if (!packageJson.workspaces.includes(devWorkspace)) { - // add - packageJson.workspaces.push(...devWorkspace); - // write out modified file - fs.writeFileSync('package.json', JSON.stringify(packageJson, null, 2)); +// Check if the workspaces are already included, if not, add them +if (!pnpmWorkspace.packages) { + pnpmWorkspace.packages = []; +} +const missingWorkspaces = devWorkspace.filter((ws) => !pnpmWorkspace.packages.includes(ws)); +if (missingWorkspaces.length > 0) { + pnpmWorkspace.packages.push(...missingWorkspaces); + + // Write out the modified pnpm-workspace.yaml file + const newYamlContent = yaml.dump(pnpmWorkspace); + fs.writeFileSync(pnpmWorkspaceYamlPath, newYamlContent, 'utf8'); } diff --git a/sdk/typescript/scripts/dev-mode-remove.mjs b/sdk/typescript/scripts/dev-mode-remove.mjs index ce897efbd0..3dc024191d 100644 --- a/sdk/typescript/scripts/dev-mode-remove.mjs +++ b/sdk/typescript/scripts/dev-mode-remove.mjs @@ -1,11 +1,18 @@ import fs from 'fs'; +import yaml from 'js-yaml'; -const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); +// Load the pnpm-workspace.yaml file +const pnpmWorkspaceYamlPath = 'pnpm-workspace.yaml'; +const pnpmWorkspaceContent = fs.readFileSync(pnpmWorkspaceYamlPath, 'utf8'); +const pnpmWorkspace = yaml.load(pnpmWorkspaceContent); const devWorkspace = ['sdk/typescript/packages/**', 'sdk/typescript/examples/**', 'sdk/typescript/codegen/**']; -// remove -packageJson.workspaces = packageJson.workspaces.filter((w) => !devWorkspace.includes(w)); +// Remove specified workspaces +pnpmWorkspace.packages = pnpmWorkspace.packages.filter((w) => !devWorkspace.includes(w)); -// write out modified file -fs.writeFileSync('package.json', JSON.stringify(packageJson, null, 2)); +// Convert the modified object back to YAML +const newYamlContent = yaml.dump(pnpmWorkspace); + +// Write out the modified pnpm-workspace.yaml file +fs.writeFileSync(pnpmWorkspaceYamlPath, newYamlContent, 'utf8'); diff --git a/sdk/typescript/scripts/release.sh b/sdk/typescript/scripts/release.sh index 5f30eb18bc..a40a46efcb 100755 --- a/sdk/typescript/scripts/release.sh +++ b/sdk/typescript/scripts/release.sh @@ -8,8 +8,8 @@ set -o pipefail make sdk-wasm-build # Build Typescript packages -yarn -yarn build:sdk +pnpm i +pnpm build:sdk # Publish to NPM ./sdk/typescript/scripts/publish.sh