Merge pull request #74 from yordis/add-node-pkg

feat: add @zitadel/node pkg
This commit is contained in:
Max Peintner
2024-05-29 11:37:36 +02:00
committed by GitHub
8 changed files with 167 additions and 5 deletions

View File

@@ -45,7 +45,7 @@
}, },
"dependencies": { "dependencies": {
"@zitadel/proto": "workspace:*", "@zitadel/proto": "workspace:*",
"@bufbuild/protobuf": "^1.8.0", "@bufbuild/protobuf": "^1.9.0",
"@connectrpc/connect": "^1.4.0" "@connectrpc/connect": "^1.4.0"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -0,0 +1,5 @@
module.exports = {
root: true,
// TODO: React is not used in the server package
extends: ["zitadel"],
};

View File

@@ -0,0 +1,42 @@
{
"name": "@zitadel/node",
"version": "0.0.0",
"type": "module",
"sideEffects": false,
"license": "MIT",
"exports": {
".": {
"import": "./dist/index.js",
"require": "./dist/index.cjs",
"types": "./dist/index.d.ts"
}
},
"files": [
"dist/**"
],
"publishConfig": {
"access": "public"
},
"scripts": {
"build": "tsup",
"test": "pnpm test:unit",
"test:watch": "pnpm test:unit:watch",
"test:unit": "vitest",
"test:unit:watch": "vitest --watch",
"dev": "tsup --watch",
"lint": "eslint \"src/**/*.ts*\"",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist && rm -rf src/proto"
},
"peerDependencies": {
"@zitadel/client2": "workspace:*"
},
"dependencies": {
"@connectrpc/connect-node": "^1.4.0",
"jose": "^5.3.0"
},
"devDependencies": {
"@zitadel/client2": "workspace:*",
"@zitadel/tsconfig": "workspace:*",
"eslint-config-zitadel": "workspace:*"
}
}

View File

@@ -0,0 +1,35 @@
import { NewAuthorizationBearerInterceptor } from "@zitadel/client2";
import {
createGrpcWebTransport,
GrpcTransportOptions,
} from "@connectrpc/connect-node";
import { importPKCS8, SignJWT } from "jose";
/**
* Create a server transport with the given token and configuration options.
* @param token
* @param opts
*/
export function createServerTransport(
token: string,
opts: GrpcTransportOptions,
) {
return createGrpcWebTransport({
...opts,
interceptors: [
...(opts.interceptors || []),
NewAuthorizationBearerInterceptor(token),
],
});
}
export async function newSystemToken() {
return await new SignJWT({})
.setProtectedHeader({ alg: "RS256" })
.setIssuedAt()
.setExpirationTime("1h")
.setIssuer(process.env.ZITADEL_SYSTEM_API_USERID ?? "")
.setSubject(process.env.ZITADEL_SYSTEM_API_USERID ?? "")
.setAudience(process.env.ZITADEL_ISSUER ?? "")
.sign(await importPKCS8(process.env.ZITADEL_SYSTEM_API_KEY ?? "", "RS256"));
}

View File

@@ -0,0 +1,5 @@
{
"extends": "@zitadel/tsconfig/tsup.json",
"include": ["./src/**/*"],
"exclude": ["dist", "build", "node_modules"]
}

View File

@@ -0,0 +1,13 @@
import { defineConfig, Options } from "tsup";
export default defineConfig((options: Options) => ({
treeshake: false,
splitting: true,
entry: ["src/index.ts"],
format: ["esm", "cjs"],
dts: true,
minify: false,
clean: true,
sourcemap: true,
...options,
}));

View File

@@ -0,0 +1,11 @@
{
"extends": [
"//"
],
"pipeline": {
"build": {
"outputs": ["dist/**"],
"dependsOn": ["@zitadel/client2#build"]
}
}
}

59
pnpm-lock.yaml generated
View File

@@ -239,7 +239,7 @@ importers:
packages/zitadel-client2: packages/zitadel-client2:
dependencies: dependencies:
'@bufbuild/protobuf': '@bufbuild/protobuf':
specifier: ^1.8.0 specifier: ^1.9.0
version: 1.9.0 version: 1.9.0
'@connectrpc/connect': '@connectrpc/connect':
specifier: ^1.4.0 specifier: ^1.4.0
@@ -289,6 +289,25 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../zitadel-tailwind-config version: link:../zitadel-tailwind-config
packages/zitadel-node:
dependencies:
'@connectrpc/connect-node':
specifier: ^1.4.0
version: 1.4.0(@bufbuild/protobuf@1.9.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.9.0))
jose:
specifier: ^5.3.0
version: 5.3.0
devDependencies:
'@zitadel/client2':
specifier: workspace:*
version: link:../zitadel-client2
'@zitadel/tsconfig':
specifier: workspace:*
version: link:../zitadel-tsconfig
eslint-config-zitadel:
specifier: workspace:*
version: link:../eslint-config-zitadel
packages/zitadel-prettier-config: {} packages/zitadel-prettier-config: {}
packages/zitadel-proto: packages/zitadel-proto:
@@ -672,6 +691,13 @@ packages:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, tarball: https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz} resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, tarball: https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz}
engines: {node: '>=0.1.90'} engines: {node: '>=0.1.90'}
'@connectrpc/connect-node@1.4.0':
resolution: {integrity: sha512-0ANnrr6SvsjevsWEgdzHy7BaHkluZyS6s4xNoVt7RBHFR5V/kT9lPokoIbYUOU9JHzdRgTaS3x5595mwUsu15g==, tarball: https://registry.npmjs.org/@connectrpc/connect-node/-/connect-node-1.4.0.tgz}
engines: {node: '>=16.0.0'}
peerDependencies:
'@bufbuild/protobuf': ^1.4.2
'@connectrpc/connect': 1.4.0
'@connectrpc/connect@1.4.0': '@connectrpc/connect@1.4.0':
resolution: {integrity: sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==, tarball: https://registry.npmjs.org/@connectrpc/connect/-/connect-1.4.0.tgz} resolution: {integrity: sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==, tarball: https://registry.npmjs.org/@connectrpc/connect/-/connect-1.4.0.tgz}
peerDependencies: peerDependencies:
@@ -978,6 +1004,10 @@ packages:
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==, tarball: https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz} resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==, tarball: https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
'@fastify/busboy@2.1.1':
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==, tarball: https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz}
engines: {node: '>=14'}
'@grpc/grpc-js@1.8.13': '@grpc/grpc-js@1.8.13':
resolution: {integrity: sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==} resolution: {integrity: sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==}
engines: {node: ^8.13.0 || >=10.10.0} engines: {node: ^8.13.0 || >=10.10.0}
@@ -1052,7 +1082,7 @@ packages:
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz} resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz}
'@jridgewell/sourcemap-codec@1.4.15': '@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz}
'@jridgewell/trace-mapping@0.3.18': '@jridgewell/trace-mapping@0.3.18':
resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz} resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz}
@@ -3063,6 +3093,9 @@ packages:
jose@4.13.1: jose@4.13.1:
resolution: {integrity: sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==} resolution: {integrity: sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==}
jose@5.3.0:
resolution: {integrity: sha512-IChe9AtAE79ru084ow8jzkN2lNrG3Ntfiv65Cvj9uOCE2m5LNsdHG+9EbxWxAoWRF9TgDOqLN5jm08++owDVRg==, tarball: https://registry.npmjs.org/jose/-/jose-5.3.0.tgz}
joycon@3.1.1: joycon@3.1.1:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -3591,7 +3624,7 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
p-limit@3.1.0: p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz}
engines: {node: '>=10'} engines: {node: '>=10'}
p-limit@5.0.0: p-limit@5.0.0:
@@ -4557,7 +4590,7 @@ packages:
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
type-detect@4.0.8: type-detect@4.0.8:
resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, tarball: https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz}
engines: {node: '>=4'} engines: {node: '>=4'}
type-fest@0.13.1: type-fest@0.13.1:
@@ -4629,6 +4662,10 @@ packages:
undefsafe@2.0.5: undefsafe@2.0.5:
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
undici@5.28.4:
resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==, tarball: https://registry.npmjs.org/undici/-/undici-5.28.4.tgz}
engines: {node: '>=14.0'}
universalify@0.1.2: universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'} engines: {node: '>= 4.0.0'}
@@ -5317,6 +5354,12 @@ snapshots:
'@colors/colors@1.5.0': '@colors/colors@1.5.0':
optional: true optional: true
'@connectrpc/connect-node@1.4.0(@bufbuild/protobuf@1.9.0)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.9.0))':
dependencies:
'@bufbuild/protobuf': 1.9.0
'@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.9.0)
undici: 5.28.4
'@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.9.0)': '@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.9.0)':
dependencies: dependencies:
'@bufbuild/protobuf': 1.9.0 '@bufbuild/protobuf': 1.9.0
@@ -5510,6 +5553,8 @@ snapshots:
'@eslint/js@8.57.0': {} '@eslint/js@8.57.0': {}
'@fastify/busboy@2.1.1': {}
'@grpc/grpc-js@1.8.13': '@grpc/grpc-js@1.8.13':
dependencies: dependencies:
'@grpc/proto-loader': 0.7.6 '@grpc/proto-loader': 0.7.6
@@ -7953,6 +7998,8 @@ snapshots:
jose@4.13.1: {} jose@4.13.1: {}
jose@5.3.0: {}
joycon@3.1.1: {} joycon@3.1.1: {}
js-base64@3.7.5: {} js-base64@3.7.5: {}
@@ -9745,6 +9792,10 @@ snapshots:
undefsafe@2.0.5: {} undefsafe@2.0.5: {}
undici@5.28.4:
dependencies:
'@fastify/busboy': 2.1.1
universalify@0.1.2: {} universalify@0.1.2: {}
universalify@0.2.0: {} universalify@0.2.0: {}