Merge pull request #398 from tafaust/feat/395-add-cjs-support

feat(zitadel-proto): add CJS and ESM support; export in Zitadel api s…
This commit is contained in:
Max Peintner
2025-04-29 09:30:09 +02:00
committed by GitHub
19 changed files with 502 additions and 45 deletions

View File

@@ -0,0 +1,6 @@
---
"@zitadel/client": minor
"@zitadel/proto": minor
---
CJS and ESM support for @zitadel/proto

View File

@@ -1,5 +1,6 @@
"use server";
import { ConnectError } from "@zitadel/client";
import { createServerTransport } from "@zitadel/client/node";
import { createUserServiceClient } from "@zitadel/client/v2";
import { headers } from "next/headers";
@@ -54,7 +55,7 @@ export async function setMyPassword({
},
{},
)
.catch((error) => {
.catch((error: ConnectError) => {
console.log(error);
if (error.code === 7) {
return { error: "Session is not valid." };

View File

@@ -5,7 +5,10 @@ import { AuthService } from "@zitadel/proto/zitadel/auth_pb.js";
import { ManagementService } from "@zitadel/proto/zitadel/management_pb.js";
import { SystemService } from "@zitadel/proto/zitadel/system_pb.js";
export const createAdminServiceClient = createClientFor(AdminService);
export const createAuthServiceClient = createClientFor(AuthService);
export const createManagementServiceClient = createClientFor(ManagementService);
export const createSystemServiceClient = createClientFor(SystemService);
export const createAdminServiceClient: ReturnType<typeof createClientFor<typeof AdminService>> =
createClientFor(AdminService);
export const createAuthServiceClient: ReturnType<typeof createClientFor<typeof AuthService>> = createClientFor(AuthService);
export const createManagementServiceClient: ReturnType<typeof createClientFor<typeof ManagementService>> =
createClientFor(ManagementService);
export const createSystemServiceClient: ReturnType<typeof createClientFor<typeof SystemService>> =
createClientFor(SystemService);

View File

@@ -1,4 +1,4 @@
import { create } from "@bufbuild/protobuf";
import { MessageInitShape } from "@bufbuild/protobuf";
import { FeatureService } from "@zitadel/proto/zitadel/feature/v2/feature_service_pb.js";
import { IdentityProviderService } from "@zitadel/proto/zitadel/idp/v2/idp_service_pb.js";
import { RequestContextSchema } from "@zitadel/proto/zitadel/object/v2/object_pb.js";
@@ -11,17 +11,20 @@ import { UserService } from "@zitadel/proto/zitadel/user/v2/user_service_pb.js";
import { createClientFor } from "./helpers.js";
export const createUserServiceClient = createClientFor(UserService);
export const createSettingsServiceClient = createClientFor(SettingsService);
export const createSessionServiceClient = createClientFor(SessionService);
export const createOIDCServiceClient = createClientFor(OIDCService);
export const createSAMLServiceClient = createClientFor(SAMLService);
export const createOrganizationServiceClient = createClientFor(OrganizationService);
export const createFeatureServiceClient = createClientFor(FeatureService);
export const createIdpServiceClient = createClientFor(IdentityProviderService);
export const createUserServiceClient: ReturnType<typeof createClientFor<typeof UserService>> = createClientFor(UserService);
export const createSettingsServiceClient: ReturnType<typeof createClientFor<typeof SettingsService>> =
createClientFor(SettingsService);
export const createSessionServiceClient: ReturnType<typeof createClientFor<typeof SessionService>> =
createClientFor(SessionService);
export const createOIDCServiceClient: ReturnType<typeof createClientFor<typeof OIDCService>> = createClientFor(OIDCService);
export const createSAMLServiceClient: ReturnType<typeof createClientFor<typeof SAMLService>> = createClientFor(SAMLService);
export const createOrganizationServiceClient: ReturnType<typeof createClientFor<typeof OrganizationService>> =
createClientFor(OrganizationService);
export const createFeatureServiceClient: ReturnType<typeof createClientFor<typeof FeatureService>> =
createClientFor(FeatureService);
export const createIdpServiceClient: ReturnType<typeof createClientFor<typeof IdentityProviderService>> =
createClientFor(IdentityProviderService);
export function makeReqCtx(orgId: string | undefined) {
return create(RequestContextSchema, {
resourceOwner: orgId ? { case: "orgId", value: orgId } : { case: "instance", value: true },
});
export function makeReqCtx(orgId: string | undefined): MessageInitShape<typeof RequestContextSchema> {
return { resourceOwner: orgId ? { case: "orgId", value: orgId } : { case: "instance", value: true } };
}

View File

@@ -1,6 +1,5 @@
import { ZITADELUsers } from "@zitadel/proto/zitadel/resources/user/v3alpha/user_service_pb.js";
import { ZITADELUserSchemas } from "@zitadel/proto/zitadel/resources/userschema/v3alpha/user_schema_service_pb.js";
import { createClientFor } from "./helpers.js";
export const createUserSchemaServiceClient = createClientFor(ZITADELUserSchemas);
export const createUserServiceClient = createClientFor(ZITADELUsers);
export const createUserSchemaServiceClient: ReturnType<typeof createClientFor<typeof ZITADELUserSchemas>> =
createClientFor(ZITADELUserSchemas);

View File

@@ -8,22 +8,87 @@ To install the package, use npm or yarn:
```sh
npm install @zitadel/proto
```
or
```sh
# or
yarn add @zitadel/proto
# or
pnpm add @zitadel/proto
```
## Usage
To use the proto definitions in your project, import the generated code:
This package supports both ESM and CommonJS imports. The API is organized into version-specific namespaces: `v1`, `v2`, and `v3alpha`.
```ts
import { Organization } from "@zitadel/proto/zitadel/org/v2/org_pb";
### ESM (ECMAScript Modules)
const org: Organization | null = await getDefaultOrg();
```typescript
// Import the entire package
import * as zitadel from "@zitadel/proto";
// Use the version-specific namespaces
const userRequest = new zitadel.v1.user.GetUserRequest();
// Or import specific versions
import { v2 } from "@zitadel/proto";
const userServiceRequest = new v2.user_service.GetUserRequest();
```
### CommonJS
```typescript
// Import the entire package
const zitadel = require("@zitadel/proto");
// Use the version-specific namespaces
const userRequest = new zitadel.v1.user.GetUserRequest();
```
## API Structure
The package is organized into version-specific namespaces:
- `v1`: Contains the original ZITADEL API
- `v2`: Contains the newer version of the API with improved organization
- `v3alpha`: Contains the alpha version of the upcoming API
## Package Structure
The package is organized as follows:
- `index.ts`: Main entry point that exports the version-specific APIs
- `v1.ts`: Exports all v1 API modules
- `v2.ts`: Exports all v2 API modules
- `v3alpha.ts`: Exports all v3alpha API modules
- `zitadel/`: Contains the generated proto files
## Development
### Generating the proto files
The proto files are generated from the ZITADEL API definitions using [buf](https://buf.build/).
```sh
pnpm generate
```
### Building the package
```sh
pnpm build
```
### Testing
To test both ESM and CommonJS imports:
```sh
pnpm test
```
Or test them individually:
```bash
pnpm test:cjs # Test CommonJS imports
pnpm test:esm # Test ESM imports
```
## Documentation

View File

@@ -5,22 +5,65 @@
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.mjs",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.mjs",
"require": "./dist/index.js"
},
"./v1": {
"types": "./dist/v1.d.ts",
"import": "./dist/v1.mjs",
"require": "./dist/v1.js"
},
"./v2": {
"types": "./dist/v2.d.ts",
"import": "./dist/v2.mjs",
"require": "./dist/v2.js"
},
"./v3alpha": {
"types": "./dist/v3alpha.d.ts",
"import": "./dist/v3alpha.mjs",
"require": "./dist/v3alpha.js"
},
"./zitadel/*": {
"types": "./zitadel/*.d.ts",
"import": "./zitadel/*.js",
"require": "./zitadel/*.js"
},
"./zitadel/*.js": {
"types": "./zitadel/*.d.ts",
"import": "./zitadel/*.js",
"require": "./zitadel/*.js"
}
},
"files": [
"src/**",
"zitadel/**",
"validate/**",
"google/**",
"protoc-gen-openapiv2/**"
"dist/**"
],
"sideEffects": false,
"scripts": {
"generate": "buf generate https://github.com/zitadel/zitadel.git --path ./proto/zitadel",
"clean": "rm -rf zitadel .turbo node_modules google protoc-gen-openapiv2 validate"
"clean": "rm -rf zitadel .turbo node_modules google protoc-gen-openapiv2 validate",
"build": "tsup",
"test:cjs": "node test/cjs-test.cjs",
"test:esm": "node test/esm-test.mjs",
"test:legacy": "ts-node test/legacy-test.ts",
"test": "pnpm test:cjs && pnpm test:esm && pnpm test:legacy"
},
"dependencies": {
"@bufbuild/protobuf": "^2.2.2"
},
"devDependencies": {
"@bufbuild/buf": "^1.53.0"
"@bufbuild/buf": "^1.53.0",
"tsup": "^8.0.0",
"ts-node": "^10.9.2",
"@zitadel/tsconfig": "workspace:*"
}
}

View File

@@ -0,0 +1,5 @@
import * as v1 from "./v1.js";
import * as v2 from "./v2.js";
import * as v3alpha from "./v3alpha.js";
export { v1, v2, v3alpha };

View File

@@ -0,0 +1,53 @@
import * as action from "../zitadel/action_pb.js";
import * as admin from "../zitadel/admin_pb.js";
import * as app from "../zitadel/app_pb.js";
import * as auth_n_key from "../zitadel/auth_n_key_pb.js";
import * as auth from "../zitadel/auth_pb.js";
import * as change from "../zitadel/change_pb.js";
import * as event from "../zitadel/event_pb.js";
import * as feature from "../zitadel/feature_pb.js";
import * as idp from "../zitadel/idp_pb.js";
import * as instance from "../zitadel/instance_pb.js";
import * as management from "../zitadel/management_pb.js";
import * as member from "../zitadel/member_pb.js";
import * as message from "../zitadel/message_pb.js";
import * as metadata from "../zitadel/metadata_pb.js";
import * as object from "../zitadel/object_pb.js";
import * as options from "../zitadel/options_pb.js";
import * as org from "../zitadel/org_pb.js";
import * as policy from "../zitadel/policy_pb.js";
import * as project from "../zitadel/project_pb.js";
import * as quota from "../zitadel/quota_pb.js";
import * as settings from "../zitadel/settings_pb.js";
import * as system from "../zitadel/system_pb.js";
import * as text from "../zitadel/text_pb.js";
import * as user from "../zitadel/user_pb.js";
import * as v1 from "../zitadel/v1_pb.js";
export {
action,
admin,
app,
auth,
auth_n_key,
change,
event,
feature,
idp,
instance,
management,
member,
message,
metadata,
object,
options,
org,
policy,
project,
quota,
settings,
system,
text,
user,
v1,
};

View File

@@ -0,0 +1,49 @@
import * as feature from "../zitadel/feature/v2/feature_pb.js";
import * as feature_service from "../zitadel/feature/v2/feature_service_pb.js";
import * as idp from "../zitadel/idp/v2/idp_pb.js";
import * as idp_service from "../zitadel/idp/v2/idp_service_pb.js";
import * as object from "../zitadel/object/v2/object_pb.js";
import * as oidc_authorization from "../zitadel/oidc/v2/authorization_pb.js";
import * as oidc_service from "../zitadel/oidc/v2/oidc_service_pb.js";
import * as org from "../zitadel/org/v2/org_pb.js";
import * as org_service from "../zitadel/org/v2/org_service_pb.js";
import * as saml_authorization from "../zitadel/saml/v2/authorization_pb.js";
import * as saml_service from "../zitadel/saml/v2/saml_service_pb.js";
import * as session from "../zitadel/session/v2/session_pb.js";
import * as session_service from "../zitadel/session/v2/session_service_pb.js";
import * as settings from "../zitadel/settings/v2/settings_pb.js";
import * as settings_service from "../zitadel/settings/v2/settings_service_pb.js";
import * as user_auth from "../zitadel/user/v2/auth_pb.js";
import * as user_email from "../zitadel/user/v2/email_pb.js";
import * as user_idp from "../zitadel/user/v2/idp_pb.js";
import * as user_password from "../zitadel/user/v2/password_pb.js";
import * as user_phone from "../zitadel/user/v2/phone_pb.js";
import * as user_query from "../zitadel/user/v2/query_pb.js";
import * as user from "../zitadel/user/v2/user_pb.js";
import * as user_service from "../zitadel/user/v2/user_service_pb.js";
export {
feature,
feature_service,
idp,
idp_service,
object,
oidc_authorization,
oidc_service,
org,
org_service,
saml_authorization,
saml_service,
session,
session_service,
settings,
settings_service,
user,
user_auth,
user_email,
user_idp,
user_password,
user_phone,
user_query,
user_service,
};

View File

@@ -0,0 +1,9 @@
import * as user_authenticator from "../zitadel/resources/user/v3alpha/authenticator_pb.js";
import * as user_communication from "../zitadel/resources/user/v3alpha/communication_pb.js";
import * as user_query from "../zitadel/resources/user/v3alpha/query_pb.js";
import * as user from "../zitadel/resources/user/v3alpha/user_pb.js";
import * as user_service from "../zitadel/resources/user/v3alpha/user_service_pb.js";
import * as user_schema from "../zitadel/resources/userschema/v3alpha/user_schema_pb.js";
import * as user_schema_service from "../zitadel/resources/userschema/v3alpha/user_schema_service_pb.js";
export { user, user_authenticator, user_communication, user_query, user_schema, user_schema_service, user_service };

View File

@@ -0,0 +1,28 @@
// CommonJS import test
const zitadel = require("@zitadel/proto");
// Check if the import worked by accessing some properties
console.log("CommonJS import test:");
console.log("- Has v1 API:", !!zitadel.v1);
console.log("- Has v2 API:", !!zitadel.v2);
console.log("- Has v3alpha API:", !!zitadel.v3alpha);
// Test v1 API
console.log("- v1.user module:", !!zitadel.v1.user);
console.log("- v1.management module:", !!zitadel.v1.management);
// Test v2 API
console.log("- v2.user module:", !!zitadel.v2.user);
console.log("- v2.user_service module:", !!zitadel.v2.user_service);
// Test v3alpha API
console.log("- v3alpha.user module:", !!zitadel.v3alpha.user);
console.log("- v3alpha.user_service module:", !!zitadel.v3alpha.user_service);
// Test successful if we can access these modules
if (zitadel.v1 && zitadel.v2 && zitadel.v3alpha) {
console.log("✅ CommonJS import test passed!");
} else {
console.error("❌ CommonJS import test failed!");
process.exit(1);
}

View File

@@ -0,0 +1,28 @@
// ESM import test
import * as zitadel from "@zitadel/proto";
// Check if the import worked by accessing some properties
console.log("ESM import test:");
console.log("- Has v1 API:", !!zitadel.v1);
console.log("- Has v2 API:", !!zitadel.v2);
console.log("- Has v3alpha API:", !!zitadel.v3alpha);
// Test v1 API
console.log("- v1.user module:", !!zitadel.v1.user);
console.log("- v1.management module:", !!zitadel.v1.management);
// Test v2 API
console.log("- v2.user module:", !!zitadel.v2.user);
console.log("- v2.user_service module:", !!zitadel.v2.user_service);
// Test v3alpha API
console.log("- v3alpha.user module:", !!zitadel.v3alpha.user);
console.log("- v3alpha.user_service module:", !!zitadel.v3alpha.user_service);
// Test successful if we can access these modules
if (zitadel.v1 && zitadel.v2 && zitadel.v3alpha) {
console.log("✅ ESM import test passed!");
} else {
console.error("❌ ESM import test failed!");
process.exit(1);
}

View File

@@ -0,0 +1,15 @@
import { OrganizationSchema as OrgSchema1 } from "@zitadel/proto/zitadel/org/v2/org_pb";
// FYI Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
import { OrganizationSchema as OrgSchema2 } from "@zitadel/proto/zitadel/org/v2/org_pb.js";
console.log("Legacy import test:");
console.log("- Generated zitadel/org/v2/org_pb import (discouraged):", !!OrgSchema1);
console.log("- Generated zitadel/org/v2/org_pb.js import (recommended):", !!OrgSchema2);
// Test successful if we can access these modules and they are the same type
if (OrgSchema1 && OrgSchema2 && OrgSchema1 === OrgSchema2) {
console.log("✅ Legacy import test passed!");
} else {
console.error("❌ Legacy import test failed!");
process.exit(1);
}

View File

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

View File

@@ -0,0 +1,14 @@
import { defineConfig } from "tsup";
export default defineConfig({
entry: ["src/index.ts", "src/v1.ts", "src/v2.ts", "src/v3alpha.ts"],
dts: true,
clean: true,
minify: false,
splitting: false,
treeshake: false,
sourcemap: true,
format: ["esm", "cjs"],
platform: "neutral",
target: "node16",
});

View File

@@ -1,8 +1,21 @@
{
"extends": ["//"],
"extends": [
"//"
],
"tasks": {
"build": {
"dependsOn": [
"generate"
],
"outputs": [
"dist/**"
],
"cache": false
},
"generate": {
"outputs": ["zitadel/**"],
"outputs": [
"zitadel/**"
],
"cache": true
}
}

132
pnpm-lock.yaml generated
View File

@@ -82,7 +82,7 @@ importers:
version: 2.1.3(react@19.1.0)
'@tailwindcss/forms':
specifier: 0.5.7
version: 0.5.7(tailwindcss@3.4.14)
version: 0.5.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)))
'@vercel/analytics':
specifier: ^1.2.2
version: 1.3.1(next@15.4.0-canary.3(@babel/core@7.26.10)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.87.0))(react@19.1.0)
@@ -230,7 +230,7 @@ importers:
version: 2.0.11
tailwindcss:
specifier: 3.4.14
version: 3.4.14
version: 3.4.14(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3))
ts-proto:
specifier: ^2.7.0
version: 2.7.0
@@ -301,6 +301,15 @@ importers:
'@bufbuild/buf':
specifier: ^1.53.0
version: 1.53.0
'@zitadel/tsconfig':
specifier: workspace:*
version: link:../zitadel-tsconfig
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@22.14.1)(typescript@5.8.3)
tsup:
specifier: ^8.0.0
version: 8.4.0(jiti@1.21.6)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.7.1)
packages/zitadel-tailwind-config:
devDependencies:
@@ -554,6 +563,10 @@ packages:
peerDependencies:
'@bufbuild/protobuf': ^2.2.0
'@cspotcode/source-map-support@0.8.1':
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
'@csstools/color-helpers@5.0.2':
resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==}
engines: {node: '>=18'}
@@ -985,6 +998,9 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
'@js-sdsl/ordered-map@4.4.2':
resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==}
@@ -1399,6 +1415,18 @@ packages:
'@types/react-dom':
optional: true
'@tsconfig/node10@1.0.11':
resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
'@tsconfig/node12@1.0.11':
resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
'@tsconfig/node14@1.0.3':
resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
'@tsconfig/node16@1.0.4':
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
@@ -1598,6 +1626,10 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn-walk@8.3.4:
resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
engines: {node: '>=0.4.0'}
acorn@8.12.1:
resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
engines: {node: '>=0.4.0'}
@@ -1668,6 +1700,9 @@ packages:
engines: {node: '>=10'}
deprecated: This package is no longer supported.
arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@@ -2020,6 +2055,9 @@ packages:
core-util-is@1.0.2:
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -2170,6 +2208,10 @@ packages:
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
diff@4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -3283,6 +3325,9 @@ packages:
resolution: {integrity: sha512-G0yBotnlWVonPClw+tq+xi4K7DZC9n96HjGTBDdHkstAVsDkfZhi1sTvZypXLpyQTbISBkDtK0E5XlUqDsShQg==}
engines: {node: '>=18'}
make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
map-stream@0.1.0:
resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}
@@ -4408,6 +4453,20 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
ts-node@10.9.2:
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
'@swc/core': '>=1.2.50'
'@swc/wasm': '>=1.2.50'
'@types/node': '*'
typescript: '>=2.7'
peerDependenciesMeta:
'@swc/core':
optional: true
'@swc/wasm':
optional: true
ts-poet@6.11.0:
resolution: {integrity: sha512-r5AGF8vvb+GjBsnqiTqbLhN1/U2FJt6BI+k0dfCrkKzWvUhNlwMmq9nDHuucHs45LomgHjZPvYj96dD3JawjJA==}
@@ -4581,6 +4640,9 @@ packages:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
verror@1.10.0:
resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
engines: {'0': node >=0.6.0}
@@ -4799,6 +4861,10 @@ packages:
yauzl@2.10.0:
resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
@@ -5144,6 +5210,10 @@ snapshots:
dependencies:
'@bufbuild/protobuf': 2.2.2
'@cspotcode/source-map-support@0.8.1':
dependencies:
'@jridgewell/trace-mapping': 0.3.9
'@csstools/color-helpers@5.0.2': {}
'@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
@@ -5505,6 +5575,11 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/trace-mapping@0.3.9':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@js-sdsl/ordered-map@4.4.2': {}
'@manypkg/find-root@1.1.0':
@@ -5816,10 +5891,10 @@ snapshots:
mini-svg-data-uri: 1.4.4
tailwindcss: 4.1.4
'@tailwindcss/forms@0.5.7(tailwindcss@3.4.14)':
'@tailwindcss/forms@0.5.7(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)))':
dependencies:
mini-svg-data-uri: 1.4.4
tailwindcss: 3.4.14
tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3))
'@tanstack/react-virtual@3.10.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
@@ -5860,6 +5935,14 @@ snapshots:
'@types/react': 19.1.2
'@types/react-dom': 19.1.2(@types/react@19.1.2)
'@tsconfig/node10@1.0.11': {}
'@tsconfig/node12@1.0.11': {}
'@tsconfig/node14@1.0.3': {}
'@tsconfig/node16@1.0.4': {}
'@types/aria-query@5.0.4': {}
'@types/babel__core@7.20.5':
@@ -6095,6 +6178,10 @@ snapshots:
dependencies:
acorn: 8.12.1
acorn-walk@8.3.4:
dependencies:
acorn: 8.12.1
acorn@8.12.1: {}
agent-base@6.0.2:
@@ -6155,6 +6242,8 @@ snapshots:
delegates: 1.0.0
readable-stream: 3.6.2
arg@4.1.3: {}
arg@5.0.2: {}
argparse@1.0.10:
@@ -6520,6 +6609,8 @@ snapshots:
core-util-is@1.0.2: {}
create-require@1.1.1: {}
cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
@@ -6720,6 +6811,8 @@ snapshots:
didyoumean@1.2.2: {}
diff@4.0.2: {}
dir-glob@3.0.1:
dependencies:
path-type: 4.0.0
@@ -8060,6 +8153,8 @@ snapshots:
make-dir@5.0.0: {}
make-error@1.3.6: {}
map-stream@0.1.0: {}
math-intrinsics@1.1.0: {}
@@ -8421,12 +8516,13 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.5.3
postcss-load-config@4.0.2(postcss@8.5.3):
postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)):
dependencies:
lilconfig: 3.1.3
yaml: 2.7.1
optionalDependencies:
postcss: 8.5.3
ts-node: 10.9.2(@types/node@22.14.1)(typescript@5.8.3)
postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.5.3)(yaml@2.7.1):
dependencies:
@@ -9031,7 +9127,7 @@ snapshots:
tabbable@6.2.0: {}
tailwindcss@3.4.14:
tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -9050,7 +9146,7 @@ snapshots:
postcss: 8.5.3
postcss-import: 15.1.0(postcss@8.5.3)
postcss-js: 4.0.1(postcss@8.5.3)
postcss-load-config: 4.0.2(postcss@8.5.3)
postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3))
postcss-nested: 6.2.0(postcss@8.5.3)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
@@ -9150,6 +9246,24 @@ snapshots:
ts-interface-checker@0.1.13: {}
ts-node@10.9.2(@types/node@22.14.1)(typescript@5.8.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 22.14.1
acorn: 8.12.1
acorn-walk: 8.3.4
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 5.8.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
ts-poet@6.11.0:
dependencies:
dprint-node: 1.0.8
@@ -9325,6 +9439,8 @@ snapshots:
uuid@8.3.2: {}
v8-compile-cache-lib@3.0.1: {}
verror@1.10.0:
dependencies:
assert-plus: 1.0.0
@@ -9570,4 +9686,6 @@ snapshots:
buffer-crc32: 0.2.13
fd-slicer: 1.1.0
yn@3.1.1: {}
yocto-queue@0.1.0: {}