From 50a82347e56781c5e49e55905fbd7c0b7de4b660 Mon Sep 17 00:00:00 2001 From: fabiovincenzi Date: Mon, 18 Aug 2025 16:17:50 +0200 Subject: [PATCH 1/4] chore: enable TypeScript declarations and optimize configuration --- tsconfig.json | 17 +++++++++++------ tsconfig.publish.json | 7 ++++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index a389ca8c7..331c876ef 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,15 +7,20 @@ "jsx": "react-jsx", "moduleResolution": "Node", "strict": true, - "noEmit": true, - "declaration": true, "skipLibCheck": true, - "isolatedModules": true, + "isolatedModules": false, "module": "CommonJS", "esModuleInterop": true, "allowSyntheticDefaultImports": true, - "resolveJsonModule": true + "resolveJsonModule": true, + + "declaration": true, + "declarationMap": true, + "outDir": "./dist", + "rootDir": "./src", + "noEmit": false, + "types": ["node"] }, - "include": ["."], - "exclude": ["experimental/**", "plugins/**"] + "include": ["src"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] } diff --git a/tsconfig.publish.json b/tsconfig.publish.json index d1ff7049c..0ee8b4d43 100644 --- a/tsconfig.publish.json +++ b/tsconfig.publish.json @@ -2,8 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "noEmit": false, - "outDir": "./dist" + "outDir": "./dist", + "rootDir": "./" }, + "include": [ + "src/**/*", + "index.ts" + ], "exclude": [ "experimental/**", "plugins/**", From 6c580dfad45e20fbced1c207487c75eb62d1a2dc Mon Sep 17 00:00:00 2001 From: fabiovincenzi Date: Mon, 18 Aug 2025 16:18:08 +0200 Subject: [PATCH 2/4] feat: add package exports and improve npm publish configuration --- .npmignore | 11 +++++++++-- package.json | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/.npmignore b/.npmignore index 286c7a75f..ec1d82a50 100644 --- a/.npmignore +++ b/.npmignore @@ -1,5 +1,12 @@ # This file required to override .gitignore when publishing to npm +src/ +tests/ +*.test.ts + +tsconfig.json +jest.config.js +.eslintrc.js +.prettierrc + website/ plugins/ -experimental/ -cypress/ diff --git a/package.json b/package.json index cb966e403..f932cc48c 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,40 @@ "name": "@finos/git-proxy", "version": "2.0.0-rc.1", "description": "Deploy custom push protections and policies on top of Git.", + "main": "index.js", + "types": "index.d.ts", + "exports": { + ".": { + "import": "./index.js", + "require": "./index.js", + "types": "./index.d.ts" + }, + "./config": { + "import": "./src/config/index.js", + "require": "./src/config/index.js", + "types": "./src/config/index.d.ts" + }, + "./db": { + "import": "./src/db/index.js", + "require": "./src/db/index.js", + "types": "./src/db/index.d.ts" + }, + "./proxy": { + "import": "./src/proxy/index.js", + "require": "./src/proxy/index.js", + "types": "./src/proxy/index.d.ts" + }, + "./types": { + "import": "./src/types/models.js", + "require": "./src/types/models.js", + "types": "./src/types/models.d.ts" + }, + "./plugin": { + "import": "./src/plugin.ts", + "require": "./src/plugin.ts", + "types": "./src/plugin.d.ts" + } + }, "scripts": { "cli": "node ./packages/git-proxy-cli/index.js", "client": "vite --config vite.config.ts", From d2899a7c7758d38a930f9b9596cd1d25d8653aff Mon Sep 17 00:00:00 2001 From: fabiovincenzi Date: Mon, 18 Aug 2025 16:18:31 +0200 Subject: [PATCH 3/4] ci: improve sample plugin publish workflow with TypeScript build --- .github/workflows/sample-publish.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sample-publish.yml b/.github/workflows/sample-publish.yml index 0b15001c1..c0bead0c7 100644 --- a/.github/workflows/sample-publish.yml +++ b/.github/workflows/sample-publish.yml @@ -9,7 +9,7 @@ permissions: contents: read jobs: - build: + build-and-publish: runs-on: ubuntu-latest steps: - name: Harden Runner @@ -23,8 +23,19 @@ jobs: with: node-version: '22.x' registry-url: 'https://registry.npmjs.org' - - name: publish sample package - run: npm install --include peer && npm publish --access=public + + - name: Install dependencies + working-directory: plugins/git-proxy-plugin-samples + run: npm ci + + - name: Build TypeScript + working-directory: plugins/git-proxy-plugin-samples + run: npm run build + + - name: Install peers and publish working-directory: plugins/git-proxy-plugin-samples + run: | + npm install --include=peer + npm publish --access=public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} From 8a1ebcf7ea319a6819a5aa4a84b660bfce2cba8d Mon Sep 17 00:00:00 2001 From: fabiovincenzi Date: Mon, 18 Aug 2025 16:18:44 +0200 Subject: [PATCH 4/4] fix: update test fixtures to use proper plugin import paths --- test/fixtures/test-package/default-export.js | 2 +- test/fixtures/test-package/multiple-export.js | 2 +- test/fixtures/test-package/subclass.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/fixtures/test-package/default-export.js b/test/fixtures/test-package/default-export.js index 688c6906a..2acf8938f 100644 --- a/test/fixtures/test-package/default-export.js +++ b/test/fixtures/test-package/default-export.js @@ -1,4 +1,4 @@ -const { PushActionPlugin } = require('@finos/git-proxy/src/plugin'); +const { PushActionPlugin } = require('@finos/git-proxy/plugin'); // test default export module.exports = new PushActionPlugin(async (req, action) => { diff --git a/test/fixtures/test-package/multiple-export.js b/test/fixtures/test-package/multiple-export.js index 3b0a56f5a..9a6a5544a 100644 --- a/test/fixtures/test-package/multiple-export.js +++ b/test/fixtures/test-package/multiple-export.js @@ -1,4 +1,4 @@ -const { PushActionPlugin, PullActionPlugin } = require('@finos/git-proxy/src/plugin'); +const { PushActionPlugin, PullActionPlugin } = require('@finos/git-proxy/plugin'); module.exports = { foo: new PushActionPlugin(async (req, action) => { diff --git a/test/fixtures/test-package/subclass.js b/test/fixtures/test-package/subclass.js index 8e789098a..8401299b9 100644 --- a/test/fixtures/test-package/subclass.js +++ b/test/fixtures/test-package/subclass.js @@ -1,4 +1,4 @@ -const { PushActionPlugin } = require('@finos/git-proxy/src/plugin'); +const { PushActionPlugin } = require('@finos/git-proxy/plugin'); class DummyPlugin extends PushActionPlugin { constructor(exec) {