From 1446e609cbdb55faae33bb399d9760e048b19430 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 16:51:59 +0330 Subject: [PATCH 01/15] feat: support .tgz publish --- .github/workflows/ci.yml | 11 ++- README.md | 9 +++ package.json | 1 + packages/cli/index.ts | 164 +++++++++++++++++++++++++++++++++++++- packages/cli/package.json | 2 +- pnpm-lock.yaml | 58 ++++++++------ 6 files changed, 214 insertions(+), 31 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 451042a4..d5d8faad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,5 +115,12 @@ jobs: echo "File $file_path created with random content of size $file_size MB." working-directory: ./playgrounds/playground-b - - name: pkg.pr.new - run: pnpm publish:playgrounds + - name: pack playground-a for tarball-publish smoke test + working-directory: ./playgrounds/playground-a + run: | + mkdir -p "$GITHUB_WORKSPACE/ci-tarballs" + pnpm pack --pack-destination "$GITHUB_WORKSPACE/ci-tarballs" + ls -l "$GITHUB_WORKSPACE/ci-tarballs" + + - name: pkg.pr.new (prebuilt tarball smoke test) + run: pnpm pkg-pr-new publish './ci-tarballs/*.tgz' diff --git a/README.md b/README.md index 41f182a9..1b413d07 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,15 @@ For workspaces and monorepos: pnpm exec pkg-pr-new publish './packages/A' './packages/B' # or `pnpm exec pkg-pr-new publish './packages/*'` ``` +You can also pass **prebuilt tarballs** (`.tgz` or `.tar.gz`) directly, which is handy when your build pipeline already produces tarballs in a custom way: + +```sh +pnpm exec pkg-pr-new publish './artifacts/*.tgz' +``` + +> [!NOTE] +> Prebuilt tarballs are uploaded **as-is**: pkg.pr.new will not repack them. If one tarball references another tarball being published in the same call, pkg.pr.new will print a warning and that reference will not be rewritten to a pkg.pr.new URL. Repack with the resolved version yourself if you need cross-package linking. + > [!CAUTION] > In CI environments, avoid `npx`, `pnpm dlx`, `yarn dlx`, and `bunx` for this step. Install `pkg-pr-new` as a dependency and execute it from the lockfile (`npm exec`, `pnpm exec`, `yarn`, or `bun run`). diff --git a/package.json b/package.json index e4a6f73c..24274e5c 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "eslint-config-unjs": "^0.2.1", "eslint-plugin-unicorn": "47.0.0", "eslint-plugin-vue": "^10.0.0", + "nanotar": "^0.3.0", "ohash": "^1.1.3", "pkg-pr-new": "workspace:^", "prettier": "^3.2.5", diff --git a/packages/cli/index.ts b/packages/cli/index.ts index a1c62b2f..c70a1c79 100644 --- a/packages/cli/index.ts +++ b/packages/cli/index.ts @@ -15,6 +15,7 @@ import { installCommands, } from "@pkg-pr-new/utils"; import { glob } from "tinyglobby"; +import { parseTarGzip, type ParsedTarFileItem } from "nanotar"; import ignore from "ignore"; import "./environments"; import { isBinaryFile } from "isbinaryfile"; @@ -123,15 +124,50 @@ const main = defineCommand({ }, }, run: async ({ args }) => { - const paths = + const rawInputs = args._.length > 0 ? await glob(args._, { expandDirectories: false, - onlyDirectories: true, absolute: true, }) : [process.cwd()]; + // Split inputs into directories (existing flow) and prebuilt tarballs + // (new flow). A tarball is any regular file ending in .tgz or .tar.gz. + const paths: string[] = []; + const tarballPaths: string[] = []; + for (const input of rawInputs) { + let stat; + try { + stat = await fs.stat(input); + } catch { + console.warn(`Skipping ${input}: cannot stat`); + continue; + } + if (stat.isDirectory()) { + paths.push(input); + } else if ( + stat.isFile() && + (input.endsWith(".tgz") || input.endsWith(".tar.gz")) + ) { + tarballPaths.push(input); + } else { + console.warn( + `Skipping ${input}: not a directory or .tgz/.tar.gz file`, + ); + } + } + + if (paths.length > 0 && tarballPaths.length > 0) { + console.error( + "pkg-pr-new: cannot mix directory and prebuilt tarball inputs in the same publish. " + + "Pass either package directories (e.g. './packages/*') OR .tgz files (e.g. './artifacts/*.tgz'), not both.", + ); + process.exit(1); + } + + const isTarballMode = tarballPaths.length > 0; + const templates = await glob(args.template || [], { expandDirectories: false, onlyDirectories: true, @@ -268,6 +304,7 @@ const main = defineCommand({ const packageInfos: Array<{ packageName: string; pJson: PackageJson; + tarballPath?: string; }> = []; for (const p of paths) { @@ -286,6 +323,82 @@ const main = defineCommand({ packageInfos.push({ packageName, pJson }); } + for (const tgzPath of tarballPaths) { + let pJson: PackageJson | null; + try { + pJson = await readPackageJsonFromTarball(tgzPath); + } catch (error) { + console.warn( + `Skipping ${tgzPath}: ${error instanceof Error ? error.message : String(error)}`, + ); + continue; + } + + if (!pJson) { + console.warn( + `Skipping ${tgzPath}: no top-level package.json found inside the tarball`, + ); + continue; + } + + if (pJson.private) { + console.warn( + `Skipping ${tgzPath}: the package is marked private`, + ); + continue; + } + + if (!pJson.name) { + throw new Error( + `"name" field in the package.json inside ${tgzPath} should be defined`, + ); + } + + packageInfos.push({ + packageName: pJson.name, + pJson, + tarballPath: tgzPath, + }); + } + + if (isTarballMode && packageInfos.length > 1) { + const allPackageNames = new Set( + packageInfos.map((info) => info.packageName), + ); + const depFields = [ + "dependencies", + "devDependencies", + "optionalDependencies", + ...(isPeerDepsEnabled ? (["peerDependencies"] as const) : []), + ] as const; + + for (const info of packageInfos) { + const siblings = new Set(); + for (const field of depFields) { + const deps = info.pJson[field]; + if (!deps) { + continue; + } + for (const depName of Object.keys(deps)) { + if ( + allPackageNames.has(depName) && + depName !== info.packageName + ) { + siblings.add(depName); + } + } + } + if (siblings.size > 0) { + const list = [...siblings].map((s) => `'${s}'`).join(", "); + console.warn( + `warning: prebuilt tarball '${info.tarballPath}' references sibling package(s) ${list} in its package.json. ` + + `Those references will NOT be rewritten to pkg.pr.new URLs because the tarball is taken as-is. ` + + `Pass the source directory instead, or repack after replacing those versions manually if you need cross-package linking.`, + ); + } + } + } + if (isCompact) { for (const { packageName } of packageInfos) { try { @@ -505,6 +618,27 @@ const main = defineCommand({ } } + for (const info of packageInfos) { + if (!info.tarballPath) { + continue; + } + const filename = path.basename(info.tarballPath); + const buffer = await fs.readFile(info.tarballPath); + const shasum = createHash("sha1").update(buffer).digest("hex"); + + shasums[info.packageName] = shasum; + + const outputPkg = outputMetadata.packages.find( + (p) => p.name === info.packageName, + )!; + outputPkg.shasum = shasum; + + const blob = new Blob([buffer], { + type: "application/octet-stream", + }); + formData.append(`package:${info.packageName}`, blob, filename); + } + const formDataPackagesSize = [...formData.entries()].reduce( (prev, [_, entry]) => prev + getFormEntrySize(entry), 0, @@ -840,3 +974,29 @@ function parsePackageJson(contents: string) { return null; } } + +async function readPackageJsonFromTarball( + tarballPath: string, +): Promise { + const compressed = await fs.readFile(tarballPath); + + let entries: ParsedTarFileItem[]; + try { + entries = await parseTarGzip(compressed, { + filter: (file) => { + const segments = file.name.split("/"); + return segments.length === 2 && segments[1] === "package.json"; + }, + }); + } catch (error) { + throw new Error( + `failed to read tarball (${error instanceof Error ? error.message : String(error)})`, + ); + } + + const entry = entries[0]; + if (!entry) { + return null; + } + return parsePackageJson(entry.text); +} diff --git a/packages/cli/package.json b/packages/cli/package.json index bc8b1a00..231ba961 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -20,7 +20,6 @@ "keywords": [], "author": "", "license": "MIT", - "dependencies": {}, "devDependencies": { "@actions/core": "^3.0.1", "@jsdevtools/ez-spawn": "^3.0.4", @@ -28,6 +27,7 @@ "citty": "^0.1.6", "ignore": "^7.0.5", "isbinaryfile": "5.0.2", + "nanotar": "^0.3.0", "ohash": "^1.1.4", "pkg-types": "^2.3.1", "query-registry": "^4.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2656eb31..7ce8ac11 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,6 +60,9 @@ importers: eslint-plugin-vue: specifier: ^10.0.0 version: 10.0.0(eslint@8.57.1)(vue-eslint-parser@10.1.3) + nanotar: + specifier: ^0.3.0 + version: 0.3.0 ohash: specifier: ^1.1.3 version: 1.1.4 @@ -171,7 +174,7 @@ importers: version: link:../utils '@simulacrum/github-api-simulator': specifier: ^0.5.4 - version: 0.5.6(ajv@8.17.1)(picomatch@4.0.2)(react@18.3.1) + version: 0.5.6(ajv@8.17.1)(picomatch@4.0.4)(react@18.3.1) '@types/string-similarity': specifier: ^4.0.2 version: 4.0.2 @@ -235,6 +238,9 @@ importers: isbinaryfile: specifier: 5.0.2 version: 5.0.2 + nanotar: + specifier: ^0.3.0 + version: 0.3.0 ohash: specifier: ^1.1.4 version: 1.1.4 @@ -6303,6 +6309,9 @@ packages: nanotar@0.2.0: resolution: {integrity: sha512-9ca1h0Xjvo9bEkE4UOxgAzLV0jHKe6LMaxo37ND2DAhhAtd0j8pR1Wxz+/goMrZO8AEZTWCmyaOsFI/W5AdpCQ==} + nanotar@0.3.0: + resolution: {integrity: sha512-Kv2JYYiCzt16Kt5QwAc9BFG89xfPNBx+oQL4GQXD9nLqPkZBiNaqaCWtwnbk/q7UVsTYevvM1b0UF8zmEI4pCg==} + natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -7995,9 +8004,6 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - ufo@1.6.4: resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} @@ -10012,7 +10018,7 @@ snapshots: semver: 7.7.1 std-env: 3.9.0 tinyexec: 1.0.1 - ufo: 1.6.3 + ufo: 1.6.4 youch: 4.1.0-beta.6 transitivePeerDependencies: - magicast @@ -10177,7 +10183,7 @@ snapshots: '@nuxt/kit': 3.16.2(magicast@0.3.5) chalk: 5.4.1 css-tree: 3.1.0 - defu: 6.1.4 + defu: 6.1.7 esbuild: 0.24.2 fontaine: 0.5.0 h3: 1.15.1 @@ -10189,7 +10195,7 @@ snapshots: pathe: 1.1.2 sirv: 3.0.0 tinyglobby: 0.2.16 - ufo: 1.6.3 + ufo: 1.6.4 unifont: 0.1.7 unplugin: 2.2.2 unstorage: 1.16.0(db0@0.2.1)(ioredis@5.4.2) @@ -10260,7 +10266,7 @@ snapshots: scule: 1.3.0 semver: 7.7.1 std-env: 3.9.0 - ufo: 1.6.3 + ufo: 1.6.4 unctx: 2.4.1 unimport: 4.1.3 untyped: 1.5.2 @@ -10325,13 +10331,13 @@ snapshots: c12: 2.0.1(magicast@0.3.5) compatx: 0.1.8 consola: 3.4.2 - defu: 6.1.4 + defu: 6.1.7 hookable: 5.5.3 pathe: 1.1.2 pkg-types: 1.3.1 scule: 1.3.0 std-env: 3.9.0 - ufo: 1.6.3 + ufo: 1.6.4 uncrypto: 0.1.3 unimport: 3.14.5(rollup@4.29.1) untyped: 1.5.2 @@ -10484,7 +10490,7 @@ snapshots: postcss: 8.5.14 rollup-plugin-visualizer: 5.14.0(rollup@4.29.1) std-env: 3.9.0 - ufo: 1.6.3 + ufo: 1.6.4 unenv: 1.10.0 unplugin: 2.2.2 vite: 6.2.5(@types/node@20.17.10)(jiti@2.4.2)(lightningcss@1.32.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.1) @@ -11329,12 +11335,12 @@ snapshots: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 - '@simulacrum/foundation-simulator@0.4.0(ajv@8.17.1)(picomatch@4.0.2)(react@18.3.1)': + '@simulacrum/foundation-simulator@0.4.0(ajv@8.17.1)(picomatch@4.0.4)(react@18.3.1)': dependencies: ajv-formats: 3.0.1(ajv@8.17.1) cors: 2.8.5 express: 4.21.2 - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.3(picomatch@4.0.4) http-proxy-middleware: 3.0.3 lodash: 4.17.21 openapi-backend: 5.11.1 @@ -11351,10 +11357,10 @@ snapshots: - redux - supports-color - '@simulacrum/github-api-simulator@0.5.6(ajv@8.17.1)(picomatch@4.0.2)(react@18.3.1)': + '@simulacrum/github-api-simulator@0.5.6(ajv@8.17.1)(picomatch@4.0.4)(react@18.3.1)': dependencies: '@faker-js/faker': 9.6.0 - '@simulacrum/foundation-simulator': 0.4.0(ajv@8.17.1)(picomatch@4.0.2)(react@18.3.1) + '@simulacrum/foundation-simulator': 0.4.0(ajv@8.17.1)(picomatch@4.0.4)(react@18.3.1) assert-ts: 0.3.4 graphql: 16.10.0 graphql-yoga: 5.13.2(graphql@16.10.0) @@ -11785,7 +11791,7 @@ snapshots: dependencies: '@unhead/schema': 1.11.14 '@unhead/shared': 1.11.14 - defu: 6.1.4 + defu: 6.1.7 hookable: 5.5.3 unhead: 1.11.14 vue: 3.5.13(typescript@5.7.2) @@ -14043,9 +14049,9 @@ snapshots: optionalDependencies: picomatch: 4.0.2 - fdir@6.4.3(picomatch@4.0.2): + fdir@6.4.3(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.4 fdir@6.5.0(picomatch@4.0.4): optionalDependencies: @@ -14391,7 +14397,7 @@ snapshots: iron-webcrypto: 1.2.1 node-mock-http: 1.0.0 radix3: 1.1.2(patch_hash=35eb325322f6de1aa3fc5c4c45acfc4e268f7512c5c235316b1c760dbb94b2cf) - ufo: 1.6.3 + ufo: 1.6.4 uncrypto: 0.1.3 h3@1.15.11: @@ -15718,6 +15724,8 @@ snapshots: nanotar@0.2.0: {} + nanotar@0.3.0: {} + natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} @@ -15794,7 +15802,7 @@ snapshots: serve-placeholder: 2.0.2 serve-static: 1.16.2 std-env: 3.8.0 - ufo: 1.6.3 + ufo: 1.6.4 uncrypto: 0.1.3 unctx: 2.4.1 unenv: 1.10.0 @@ -16124,7 +16132,7 @@ snapshots: pathe: 2.0.3 pkg-types: 1.3.1 tinyexec: 0.3.2 - ufo: 1.6.3 + ufo: 1.6.4 nypm@0.6.0: dependencies: @@ -16194,7 +16202,7 @@ snapshots: dependencies: destr: 2.0.3 node-fetch-native: 1.6.4 - ufo: 1.6.3 + ufo: 1.6.4 ofetch@1.5.1: dependencies: @@ -16944,7 +16952,7 @@ snapshots: '@vueuse/core': 12.2.0(typescript@5.7.2) '@vueuse/shared': 12.2.0(typescript@5.7.2) aria-hidden: 1.2.4 - defu: 6.1.4 + defu: 6.1.7 ohash: 1.1.4 uncrypto: 0.1.3 vue: 3.5.13(typescript@5.7.2) @@ -17872,8 +17880,6 @@ snapshots: ufo@1.6.1: {} - ufo@1.6.3: {} - ufo@1.6.4: {} ultrahtml@1.5.3: {} @@ -18490,7 +18496,7 @@ snapshots: vue-bundle-renderer@2.1.1: dependencies: - ufo: 1.6.3 + ufo: 1.6.4 vue-demi@0.14.10(vue@3.5.13): dependencies: From ef353dcef7d5704911b6156b462d060c324bd9d2 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:03:05 +0330 Subject: [PATCH 02/15] update --- .github/workflows/ci.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5d8faad..ea5dec05 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,12 +115,5 @@ jobs: echo "File $file_path created with random content of size $file_size MB." working-directory: ./playgrounds/playground-b - - name: pack playground-a for tarball-publish smoke test - working-directory: ./playgrounds/playground-a - run: | - mkdir -p "$GITHUB_WORKSPACE/ci-tarballs" - pnpm pack --pack-destination "$GITHUB_WORKSPACE/ci-tarballs" - ls -l "$GITHUB_WORKSPACE/ci-tarballs" - - - name: pkg.pr.new (prebuilt tarball smoke test) - run: pnpm pkg-pr-new publish './ci-tarballs/*.tgz' + - name: pkg.pr.new + run: pnpm publish:playgrounds --comment=off \ No newline at end of file From 521e99e504438752d4b47b22ae2d629a9559dd40 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:03:26 +0330 Subject: [PATCH 03/15] update --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea5dec05..8b20896c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,4 +116,4 @@ jobs: working-directory: ./playgrounds/playground-b - name: pkg.pr.new - run: pnpm publish:playgrounds --comment=off \ No newline at end of file + run: pnpm publish:playgrounds \ No newline at end of file From 22b7336af66e95b6c938fc9c68369dad152623e7 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:04:14 +0330 Subject: [PATCH 04/15] fix: lint --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8b20896c..451042a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,4 +116,4 @@ jobs: working-directory: ./playgrounds/playground-b - name: pkg.pr.new - run: pnpm publish:playgrounds \ No newline at end of file + run: pnpm publish:playgrounds From c5c5f5ec13cc5c414878e57ac67f11ddb56450be Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:05:21 +0330 Subject: [PATCH 05/15] update --- packages/cli/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/cli/index.ts b/packages/cli/index.ts index c70a1c79..25bb0191 100644 --- a/packages/cli/index.ts +++ b/packages/cli/index.ts @@ -132,8 +132,6 @@ const main = defineCommand({ }) : [process.cwd()]; - // Split inputs into directories (existing flow) and prebuilt tarballs - // (new flow). A tarball is any regular file ending in .tgz or .tar.gz. const paths: string[] = []; const tarballPaths: string[] = []; for (const input of rawInputs) { From fb737e45522197c6d661a1676c02fad90a66092c Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:06:25 +0330 Subject: [PATCH 06/15] update --- packages/cli/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/cli/index.ts b/packages/cli/index.ts index 25bb0191..1863e71f 100644 --- a/packages/cli/index.ts +++ b/packages/cli/index.ts @@ -158,8 +158,7 @@ const main = defineCommand({ if (paths.length > 0 && tarballPaths.length > 0) { console.error( - "pkg-pr-new: cannot mix directory and prebuilt tarball inputs in the same publish. " + - "Pass either package directories (e.g. './packages/*') OR .tgz files (e.g. './artifacts/*.tgz'), not both.", + "pkg-pr-new: cannot mix directory and prebuilt tarball inputs in the same publish.", ); process.exit(1); } From 473db1f66c23b10ac76132a14e8ee569ead80fae Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:21:36 +0330 Subject: [PATCH 07/15] update --- packages/cli/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cli/index.ts b/packages/cli/index.ts index 1863e71f..b4fd02e9 100644 --- a/packages/cli/index.ts +++ b/packages/cli/index.ts @@ -128,6 +128,7 @@ const main = defineCommand({ args._.length > 0 ? await glob(args._, { expandDirectories: false, + onlyFiles: false, absolute: true, }) : [process.cwd()]; From fbe7e23d263d13afd0dcf0b5302f9f270d532821 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:31:04 +0330 Subject: [PATCH 08/15] update --- .github/workflows/ci.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 451042a4..2f04f73b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,4 +116,14 @@ jobs: working-directory: ./playgrounds/playground-b - name: pkg.pr.new - run: pnpm publish:playgrounds + run: pnpm publish:playgrounds --comment=off + + - name: pack playground-a for tarball-publish + working-directory: ./playgrounds/playground-a + run: | + mkdir -p "$GITHUB_WORKSPACE/ci-tarballs" + pnpm pack --pack-destination "$GITHUB_WORKSPACE/ci-tarballs" + ls -l "$GITHUB_WORKSPACE/ci-tarballs" + + - name: pkg.pr.new (prebuilt tarball) + run: pnpm pkg-pr-new publish './ci-tarballs/*.tgz' From c9b8c0fc0de086ca5d4b42a400a112c3ec76dd47 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:53:31 +0330 Subject: [PATCH 09/15] update --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f04f73b..d3978d90 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,7 +116,6 @@ jobs: working-directory: ./playgrounds/playground-b - name: pkg.pr.new - run: pnpm publish:playgrounds --comment=off - name: pack playground-a for tarball-publish working-directory: ./playgrounds/playground-a From 1ea4d266e40652c8d2e8a0a24687ba13a30a88ad Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 17:56:25 +0330 Subject: [PATCH 10/15] update --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d3978d90..1a81819d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,8 +115,6 @@ jobs: echo "File $file_path created with random content of size $file_size MB." working-directory: ./playgrounds/playground-b - - name: pkg.pr.new - - name: pack playground-a for tarball-publish working-directory: ./playgrounds/playground-a run: | From c22e4b7dbd9dc3f079077a238b5902ac5932c2b6 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 18:01:09 +0330 Subject: [PATCH 11/15] update --- .github/workflows/ci.yml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a81819d..451042a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,12 +115,5 @@ jobs: echo "File $file_path created with random content of size $file_size MB." working-directory: ./playgrounds/playground-b - - name: pack playground-a for tarball-publish - working-directory: ./playgrounds/playground-a - run: | - mkdir -p "$GITHUB_WORKSPACE/ci-tarballs" - pnpm pack --pack-destination "$GITHUB_WORKSPACE/ci-tarballs" - ls -l "$GITHUB_WORKSPACE/ci-tarballs" - - - name: pkg.pr.new (prebuilt tarball) - run: pnpm pkg-pr-new publish './ci-tarballs/*.tgz' + - name: pkg.pr.new + run: pnpm publish:playgrounds From e9af26076ef956fe31b1b602daae374367b6556b Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 18:05:28 +0330 Subject: [PATCH 12/15] test --- packages/app/e2e.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/e2e.test.ts b/packages/app/e2e.test.ts index 1cecb457..614b2102 100644 --- a/packages/app/e2e.test.ts +++ b/packages/app/e2e.test.ts @@ -75,7 +75,7 @@ beforeAll(async () => { shell: true, }, ); -}, 70_000); +}, 180_000); afterAll(async () => { await server.ensureClose(); From 553254af70f8867a3472e3925b945cd408e73f2c Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 18:08:01 +0330 Subject: [PATCH 13/15] ci From acdd938ae1e5d7eeb40704e6cd66a34f07c87d29 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 18:13:01 +0330 Subject: [PATCH 14/15] update --- packages/app/e2e.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/e2e.test.ts b/packages/app/e2e.test.ts index 614b2102..1cecb457 100644 --- a/packages/app/e2e.test.ts +++ b/packages/app/e2e.test.ts @@ -75,7 +75,7 @@ beforeAll(async () => { shell: true, }, ); -}, 180_000); +}, 70_000); afterAll(async () => { await server.ensureClose(); From 546931c0a189dd0240ea76682fc65a43e1e60a98 Mon Sep 17 00:00:00 2001 From: AmirSa12 Date: Thu, 28 May 2026 21:54:49 +0330 Subject: [PATCH 15/15] update --- package.json | 1 - pnpm-lock.yaml | 3 --- 2 files changed, 4 deletions(-) diff --git a/package.json b/package.json index 24274e5c..e4a6f73c 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "eslint-config-unjs": "^0.2.1", "eslint-plugin-unicorn": "47.0.0", "eslint-plugin-vue": "^10.0.0", - "nanotar": "^0.3.0", "ohash": "^1.1.3", "pkg-pr-new": "workspace:^", "prettier": "^3.2.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ce8ac11..4f789b1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,9 +60,6 @@ importers: eslint-plugin-vue: specifier: ^10.0.0 version: 10.0.0(eslint@8.57.1)(vue-eslint-parser@10.1.3) - nanotar: - specifier: ^0.3.0 - version: 0.3.0 ohash: specifier: ^1.1.3 version: 1.1.4