@ninedeploy/schemas 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,118 @@
1
+ import { z } from 'zod';
2
+ export declare const workspaceRoleEnum: z.ZodEnum<{
3
+ admin: "admin";
4
+ member: "member";
5
+ owner: "owner";
6
+ viewer: "viewer";
7
+ }>;
8
+ export type WorkspaceRole = z.infer<typeof workspaceRoleEnum>;
9
+ export declare const workspaceCreate: z.ZodObject<{
10
+ name: z.ZodString;
11
+ slug: z.ZodOptional<z.ZodString>;
12
+ description: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$strip>;
14
+ export type WorkspaceCreate = z.infer<typeof workspaceCreate>;
15
+ export type WorkspaceCreateInput = WorkspaceCreate;
16
+ export declare const workspaceUpdate: z.ZodObject<{
17
+ name: z.ZodOptional<z.ZodString>;
18
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
+ }, z.core.$strip>;
20
+ export type WorkspaceUpdate = z.infer<typeof workspaceUpdate>;
21
+ export type WorkspaceUpdateInput = WorkspaceUpdate;
22
+ export declare const workspaceMemberAdd: z.ZodObject<{
23
+ email: z.ZodString;
24
+ role: z.ZodDefault<z.ZodEnum<{
25
+ admin: "admin";
26
+ member: "member";
27
+ owner: "owner";
28
+ viewer: "viewer";
29
+ }>>;
30
+ }, z.core.$strip>;
31
+ export type WorkspaceMemberAdd = z.infer<typeof workspaceMemberAdd>;
32
+ export type WorkspaceMemberAddInput = WorkspaceMemberAdd;
33
+ export declare const workspaceMemberRoleUpdate: z.ZodObject<{
34
+ role: z.ZodEnum<{
35
+ admin: "admin";
36
+ member: "member";
37
+ owner: "owner";
38
+ viewer: "viewer";
39
+ }>;
40
+ }, z.core.$strip>;
41
+ export type WorkspaceMemberRoleUpdate = z.infer<typeof workspaceMemberRoleUpdate>;
42
+ export type WorkspaceMemberRoleUpdateInput = WorkspaceMemberRoleUpdate;
43
+ export interface WorkspaceMemberEntry {
44
+ id: number;
45
+ workspaceId: number;
46
+ userId: number;
47
+ email: string;
48
+ name: string | null;
49
+ role: WorkspaceRole;
50
+ createdAt: string;
51
+ }
52
+ export interface WorkspaceEntry {
53
+ id: number;
54
+ name: string;
55
+ slug: string;
56
+ description: string | null;
57
+ ownerId: number;
58
+ myRole: WorkspaceRole;
59
+ memberCount: number;
60
+ projectCount: number;
61
+ createdAt: string;
62
+ updatedAt: string;
63
+ }
64
+ export type Workspace = WorkspaceEntry;
65
+ export interface WorkspaceDetail extends WorkspaceEntry {
66
+ members: WorkspaceMemberEntry[];
67
+ }
68
+ export declare const oidcProviderCreate: z.ZodObject<{
69
+ name: z.ZodString;
70
+ slug: z.ZodString;
71
+ issuerUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
72
+ clientId: z.ZodString;
73
+ clientSecret: z.ZodString;
74
+ scopes: z.ZodDefault<z.ZodString>;
75
+ enabled: z.ZodDefault<z.ZodBoolean>;
76
+ autoEnroll: z.ZodDefault<z.ZodBoolean>;
77
+ defaultRole: z.ZodDefault<z.ZodEnum<{
78
+ admin: "admin";
79
+ member: "member";
80
+ }>>;
81
+ }, z.core.$strip>;
82
+ export type OidcProviderCreate = z.infer<typeof oidcProviderCreate>;
83
+ export type OidcProviderCreateInput = OidcProviderCreate;
84
+ export declare const oidcProviderUpdate: z.ZodObject<{
85
+ name: z.ZodOptional<z.ZodString>;
86
+ issuerUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
87
+ clientId: z.ZodOptional<z.ZodString>;
88
+ clientSecret: z.ZodOptional<z.ZodString>;
89
+ scopes: z.ZodOptional<z.ZodString>;
90
+ enabled: z.ZodOptional<z.ZodBoolean>;
91
+ autoEnroll: z.ZodOptional<z.ZodBoolean>;
92
+ defaultRole: z.ZodOptional<z.ZodEnum<{
93
+ admin: "admin";
94
+ member: "member";
95
+ }>>;
96
+ }, z.core.$strip>;
97
+ export type OidcProviderUpdate = z.infer<typeof oidcProviderUpdate>;
98
+ export type OidcProviderUpdateInput = OidcProviderUpdate;
99
+ export interface OidcProviderEntry {
100
+ id: number;
101
+ name: string;
102
+ slug: string;
103
+ issuerUrl: string | null;
104
+ clientId: string;
105
+ scopes: string;
106
+ enabled: boolean;
107
+ autoEnroll: boolean;
108
+ defaultRole: 'admin' | 'member';
109
+ createdAt: string;
110
+ updatedAt: string;
111
+ }
112
+ export interface OidcPublicProvider {
113
+ id: number;
114
+ name: string;
115
+ slug: string;
116
+ authUrl: string;
117
+ }
118
+ //# sourceMappingURL=workspaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { slug } from './common.js';
3
+ export const workspaceRoleEnum = z.enum(['owner', 'admin', 'member', 'viewer']);
4
+ export const workspaceCreate = z.object({
5
+ name: z.string().trim().min(2).max(63),
6
+ slug: slug.optional(),
7
+ description: z.string().trim().max(500).optional(),
8
+ });
9
+ export const workspaceUpdate = z
10
+ .object({
11
+ name: z.string().trim().min(2).max(63).optional(),
12
+ description: z.string().trim().max(500).nullable().optional(),
13
+ })
14
+ .refine((v) => Object.keys(v).length > 0, { message: 'nothing to update' });
15
+ export const workspaceMemberAdd = z.object({
16
+ email: z.string().email(),
17
+ role: workspaceRoleEnum.default('member'),
18
+ });
19
+ export const workspaceMemberRoleUpdate = z.object({
20
+ role: workspaceRoleEnum,
21
+ });
22
+ // ─── OIDC & OAuth2 SSO Schemas ───────────────────────────────────────────────
23
+ export const oidcProviderCreate = z.object({
24
+ name: z.string().trim().min(2).max(63),
25
+ slug: slug,
26
+ issuerUrl: z.string().url().nullable().optional(),
27
+ clientId: z.string().trim().min(1).max(255),
28
+ clientSecret: z.string().trim().min(1).max(500),
29
+ scopes: z.string().trim().default('openid profile email'),
30
+ enabled: z.boolean().default(true),
31
+ autoEnroll: z.boolean().default(true),
32
+ defaultRole: z.enum(['admin', 'member']).default('member'),
33
+ });
34
+ export const oidcProviderUpdate = z
35
+ .object({
36
+ name: z.string().trim().min(2).max(63).optional(),
37
+ issuerUrl: z.string().url().nullable().optional(),
38
+ clientId: z.string().trim().min(1).max(255).optional(),
39
+ clientSecret: z.string().trim().min(1).max(500).optional(),
40
+ scopes: z.string().trim().optional(),
41
+ enabled: z.boolean().optional(),
42
+ autoEnroll: z.boolean().optional(),
43
+ defaultRole: z.enum(['admin', 'member']).optional(),
44
+ })
45
+ .refine((v) => Object.keys(v).length > 0, { message: 'nothing to update' });
46
+ //# sourceMappingURL=workspaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@ninedeploy/schemas",
3
+ "version": "0.2.0",
4
+ "description": "Shared Zod schemas and validation types for NineDeploy",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/NineDeploy/NineDeploy.git",
9
+ "directory": "packages/schemas"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "type": "module",
18
+ "main": "./dist/index.js",
19
+ "types": "./dist/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "default": "./dist/index.js"
24
+ }
25
+ },
26
+ "dependencies": {
27
+ "zod": "^4.4.3"
28
+ },
29
+ "devDependencies": {
30
+ "typescript": "^7.0.2"
31
+ },
32
+ "scripts": {
33
+ "build": "tsc",
34
+ "dev": "tsc --watch --preserveWatchOutput",
35
+ "typecheck": "tsc --noEmit",
36
+ "lint": "biome lint .",
37
+ "test": "vitest run --coverage",
38
+ "clean": "rm -rf dist .turbo"
39
+ }
40
+ }