From c918cd027a35a99958943b0ef21855c1062a050d Mon Sep 17 00:00:00 2001 From: Kobe Kwanten Date: Wed, 2 Sep 2026 09:27:51 +0200 Subject: [PATCH 1/2] fix: exclude generated TypeScript sources from package --- .github/workflows/publish.yml | 3 +++ package-lock.json | 4 +-- package.json | 5 ++-- test/package-contents.test.js | 49 +++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 test/package-contents.test.js diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4478f86..b14c3c2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -36,6 +36,9 @@ jobs: - name: Build run: yarn build + - name: Verify package contents + run: yarn test:package + - name: Run tests run: yarn run-instance diff --git a/package-lock.json b/package-lock.json index 93b9864..55d3806 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@permify/permify-node", - "version": "1.7.3", + "version": "1.7.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@permify/permify-node", - "version": "1.7.3", + "version": "1.7.4", "license": "Apache-2.0", "dependencies": { "@bufbuild/protobuf": "^2.0.0", diff --git a/package.json b/package.json index cb52d07..79eeb70 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@permify/permify-node", - "version": "1.7.3", + "version": "1.7.4", "description": "Permify Node Client", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -16,7 +16,8 @@ "test": "yarn run-test", "run-test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json", "lint": "eslint \"src/**/*.ts\"", - "build": "rm -rf ./dist && npx tsc && cp -r src/grpc/generated dist/src/grpc/", + "build": "rm -rf ./dist && npx tsc", + "test:package": "npm run build && node --test test/package-contents.test.js", "buf:generate": "buf generate" }, "keywords": [ diff --git a/test/package-contents.test.js b/test/package-contents.test.js new file mode 100644 index 0000000..8fb4f00 --- /dev/null +++ b/test/package-contents.test.js @@ -0,0 +1,49 @@ +const assert = require("node:assert/strict"); +const { execFileSync } = require("node:child_process"); +const { mkdtempSync, rmSync } = require("node:fs"); +const { tmpdir } = require("node:os"); +const path = require("node:path"); +const test = require("node:test"); + +const packageRoot = path.resolve(__dirname, ".."); + +test("packed package excludes generated TypeScript sources", () => { + const packDirectory = mkdtempSync(path.join(tmpdir(), "permify-node-pack-")); + + try { + const output = execFileSync( + "npm", + ["pack", "--json", "--pack-destination", packDirectory], + { cwd: packageRoot, encoding: "utf8" }, + ); + const [{ filename }] = JSON.parse(output); + const archivePath = path.join(packDirectory, filename); + const files = execFileSync("tar", ["-tzf", archivePath], { + encoding: "utf8", + }) + .trim() + .split("\n"); + const generatedDirectory = "package/dist/src/grpc/generated/"; + const generatedDeclarations = files.filter( + (file) => file.startsWith(generatedDirectory) && file.endsWith(".d.ts"), + ); + const generatedSources = files.filter( + (file) => + file.startsWith(generatedDirectory) && + file.endsWith(".ts") && + !file.endsWith(".d.ts"), + ); + + assert.deepEqual(generatedSources, []); + assert.ok(generatedDeclarations.length > 0, "generated declarations are packed"); + + for (const declaration of generatedDeclarations) { + assert.ok( + files.includes(declaration.replace(/\.d\.ts$/, ".js")), + `compiled JavaScript is packed for ${declaration}`, + ); + } + } finally { + rmSync(packDirectory, { recursive: true, force: true }); + } +}); From dd4eb7ee87191051454ca2a115cf11c919f20f35 Mon Sep 17 00:00:00 2001 From: Kobe Kwanten Date: Wed, 2 Sep 2026 09:30:02 +0200 Subject: [PATCH 2/2] chore: remove package content test setup --- .github/workflows/publish.yml | 3 --- package.json | 1 - test/package-contents.test.js | 49 ----------------------------------- 3 files changed, 53 deletions(-) delete mode 100644 test/package-contents.test.js diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b14c3c2..4478f86 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -36,9 +36,6 @@ jobs: - name: Build run: yarn build - - name: Verify package contents - run: yarn test:package - - name: Run tests run: yarn run-instance diff --git a/package.json b/package.json index 79eeb70..e234332 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "run-test": "ts-node node_modules/jasmine/bin/jasmine --config=jasmine.json", "lint": "eslint \"src/**/*.ts\"", "build": "rm -rf ./dist && npx tsc", - "test:package": "npm run build && node --test test/package-contents.test.js", "buf:generate": "buf generate" }, "keywords": [ diff --git a/test/package-contents.test.js b/test/package-contents.test.js deleted file mode 100644 index 8fb4f00..0000000 --- a/test/package-contents.test.js +++ /dev/null @@ -1,49 +0,0 @@ -const assert = require("node:assert/strict"); -const { execFileSync } = require("node:child_process"); -const { mkdtempSync, rmSync } = require("node:fs"); -const { tmpdir } = require("node:os"); -const path = require("node:path"); -const test = require("node:test"); - -const packageRoot = path.resolve(__dirname, ".."); - -test("packed package excludes generated TypeScript sources", () => { - const packDirectory = mkdtempSync(path.join(tmpdir(), "permify-node-pack-")); - - try { - const output = execFileSync( - "npm", - ["pack", "--json", "--pack-destination", packDirectory], - { cwd: packageRoot, encoding: "utf8" }, - ); - const [{ filename }] = JSON.parse(output); - const archivePath = path.join(packDirectory, filename); - const files = execFileSync("tar", ["-tzf", archivePath], { - encoding: "utf8", - }) - .trim() - .split("\n"); - const generatedDirectory = "package/dist/src/grpc/generated/"; - const generatedDeclarations = files.filter( - (file) => file.startsWith(generatedDirectory) && file.endsWith(".d.ts"), - ); - const generatedSources = files.filter( - (file) => - file.startsWith(generatedDirectory) && - file.endsWith(".ts") && - !file.endsWith(".d.ts"), - ); - - assert.deepEqual(generatedSources, []); - assert.ok(generatedDeclarations.length > 0, "generated declarations are packed"); - - for (const declaration of generatedDeclarations) { - assert.ok( - files.includes(declaration.replace(/\.d\.ts$/, ".js")), - `compiled JavaScript is packed for ${declaration}`, - ); - } - } finally { - rmSync(packDirectory, { recursive: true, force: true }); - } -});