mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-12 10:53:13 +00:00
Merge pull request #74 from yordis/add-node-pkg
feat: add @zitadel/node pkg
This commit is contained in:
@@ -45,7 +45,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@zitadel/proto": "workspace:*",
|
||||
"@bufbuild/protobuf": "^1.8.0",
|
||||
"@bufbuild/protobuf": "^1.9.0",
|
||||
"@connectrpc/connect": "^1.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
5
packages/zitadel-node/.eslintrc.cjs
Normal file
5
packages/zitadel-node/.eslintrc.cjs
Normal file
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
// TODO: React is not used in the server package
|
||||
extends: ["zitadel"],
|
||||
};
|
||||
42
packages/zitadel-node/package.json
Normal file
42
packages/zitadel-node/package.json
Normal 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:*"
|
||||
}
|
||||
}
|
||||
35
packages/zitadel-node/src/index.ts
Normal file
35
packages/zitadel-node/src/index.ts
Normal 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"));
|
||||
}
|
||||
5
packages/zitadel-node/tsconfig.json
Normal file
5
packages/zitadel-node/tsconfig.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends": "@zitadel/tsconfig/tsup.json",
|
||||
"include": ["./src/**/*"],
|
||||
"exclude": ["dist", "build", "node_modules"]
|
||||
}
|
||||
13
packages/zitadel-node/tsup.config.ts
Normal file
13
packages/zitadel-node/tsup.config.ts
Normal 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,
|
||||
}));
|
||||
11
packages/zitadel-node/turbo.json
Normal file
11
packages/zitadel-node/turbo.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": [
|
||||
"//"
|
||||
],
|
||||
"pipeline": {
|
||||
"build": {
|
||||
"outputs": ["dist/**"],
|
||||
"dependsOn": ["@zitadel/client2#build"]
|
||||
}
|
||||
}
|
||||
}
|
||||
59
pnpm-lock.yaml
generated
59
pnpm-lock.yaml
generated
@@ -239,7 +239,7 @@ importers:
|
||||
packages/zitadel-client2:
|
||||
dependencies:
|
||||
'@bufbuild/protobuf':
|
||||
specifier: ^1.8.0
|
||||
specifier: ^1.9.0
|
||||
version: 1.9.0
|
||||
'@connectrpc/connect':
|
||||
specifier: ^1.4.0
|
||||
@@ -289,6 +289,25 @@ importers:
|
||||
specifier: workspace:*
|
||||
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-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}
|
||||
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':
|
||||
resolution: {integrity: sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==, tarball: https://registry.npmjs.org/@connectrpc/connect/-/connect-1.4.0.tgz}
|
||||
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}
|
||||
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':
|
||||
resolution: {integrity: sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==}
|
||||
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}
|
||||
|
||||
'@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':
|
||||
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:
|
||||
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:
|
||||
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -3591,7 +3624,7 @@ packages:
|
||||
engines: {node: '>=6'}
|
||||
|
||||
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'}
|
||||
|
||||
p-limit@5.0.0:
|
||||
@@ -4557,7 +4590,7 @@ packages:
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
||||
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'}
|
||||
|
||||
type-fest@0.13.1:
|
||||
@@ -4629,6 +4662,10 @@ packages:
|
||||
undefsafe@2.0.5:
|
||||
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:
|
||||
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
|
||||
engines: {node: '>= 4.0.0'}
|
||||
@@ -5317,6 +5354,12 @@ snapshots:
|
||||
'@colors/colors@1.5.0':
|
||||
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)':
|
||||
dependencies:
|
||||
'@bufbuild/protobuf': 1.9.0
|
||||
@@ -5510,6 +5553,8 @@ snapshots:
|
||||
|
||||
'@eslint/js@8.57.0': {}
|
||||
|
||||
'@fastify/busboy@2.1.1': {}
|
||||
|
||||
'@grpc/grpc-js@1.8.13':
|
||||
dependencies:
|
||||
'@grpc/proto-loader': 0.7.6
|
||||
@@ -7953,6 +7998,8 @@ snapshots:
|
||||
|
||||
jose@4.13.1: {}
|
||||
|
||||
jose@5.3.0: {}
|
||||
|
||||
joycon@3.1.1: {}
|
||||
|
||||
js-base64@3.7.5: {}
|
||||
@@ -9745,6 +9792,10 @@ snapshots:
|
||||
|
||||
undefsafe@2.0.5: {}
|
||||
|
||||
undici@5.28.4:
|
||||
dependencies:
|
||||
'@fastify/busboy': 2.1.1
|
||||
|
||||
universalify@0.1.2: {}
|
||||
|
||||
universalify@0.2.0: {}
|
||||
|
||||
Reference in New Issue
Block a user