@anuragpal02/zcl-contracts 0.3.0 → 0.4.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.
package/dist/client.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { type AuthSessionResponse, type LoginRequest, type LogoutResponse, type SessionResponse, type SignupRequest } from './auth.js';
2
2
  import { type ApiErrorCode } from './common.js';
3
3
  import { type CreateWorkspaceRequest, type Workspace, type WorkspaceMembership } from './workspaces.js';
4
+ import { type Asset, type AssetUpload, type CreateAssetUploadRequest, type CreateAssetUploadResponse, type FinalizeAssetUploadRequest, type ListAssetsResponse } from './assets.js';
5
+ import { type CreateProjectRequest, type LedMapResponse, type Project, type UpdateLedMapRequest, type UpdateProjectRequest } from './projects.js';
4
6
  type FetchLike = (request: Request) => Promise<Response>;
5
7
  export type ZclApiClientOptions = {
6
8
  baseUrl: string;
@@ -36,6 +38,35 @@ export declare function createZclApiClient(options: ZclApiClientOptions): {
36
38
  data: Workspace;
37
39
  }>;
38
40
  };
41
+ projects: {
42
+ list(workspaceId: string, options?: {
43
+ status?: "active" | "archived";
44
+ }): Promise<{
45
+ data: Project[];
46
+ pagination: {
47
+ nextCursor: string | null;
48
+ };
49
+ }>;
50
+ create(workspaceId: string, input: CreateProjectRequest): Promise<{
51
+ data: Project;
52
+ }>;
53
+ get(workspaceId: string, projectId: string): Promise<{
54
+ data: Project;
55
+ }>;
56
+ update(workspaceId: string, projectId: string, input: UpdateProjectRequest): Promise<{
57
+ data: Project;
58
+ }>;
59
+ };
60
+ ledMaps: {
61
+ get(workspaceId: string, projectId: string): Promise<LedMapResponse>;
62
+ update(workspaceId: string, projectId: string, input: UpdateLedMapRequest): Promise<LedMapResponse>;
63
+ };
64
+ assets: {
65
+ createUpload(workspaceId: string, projectId: string, input: CreateAssetUploadRequest): Promise<CreateAssetUploadResponse>;
66
+ uploadObject(upload: AssetUpload, body: BodyInit): Promise<void>;
67
+ finalize(workspaceId: string, projectId: string, assetId: string, input: FinalizeAssetUploadRequest): Promise<Asset>;
68
+ list(workspaceId: string, projectId: string): Promise<ListAssetsResponse>;
69
+ };
39
70
  };
40
71
  export type ZclApiClient = ReturnType<typeof createZclApiClient>;
41
72
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAClB,OAAO,EAA2C,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AAExB,KAAK,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG;IAChD,UAAU,EAAE,mBAAmB,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,uBAAuB,EAAE,CAAA;IAC/B,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAC1B,CAAA;CACF,CAAA;AAQD,qBAAa,WAAY,SAAQ,KAAK;aAElB,IAAI,EAAE,YAAY;aAElB,MAAM,EAAE,MAAM;aACd,SAAS,CAAC,EAAE,MAAM;gBAHlB,IAAI,EAAE,YAAY,EAClC,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,YAAA;CAKrC;AA8BD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB;;sBAkD3C,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC;qBAM7C,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;kBAM9C,OAAO,CAAC,cAAc,CAAC;;;eAK1B,OAAO,CAAC,eAAe,CAAC;;;gBAKvB,OAAO,CAAC,qBAAqB,CAAC;sBAGxB,sBAAsB,GAAG,OAAO,CAAC;YAAE,IAAI,EAAE,SAAS,CAAA;SAAE,CAAC;;EAQxE;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -2,6 +2,8 @@ import { z } from 'zod';
2
2
  import { authSessionResponseSchema, loginRequestSchema, logoutResponseSchema, sessionResponseSchema, signupRequestSchema } from './auth.js';
3
3
  import { errorResponseSchema, listResponseSchema } from './common.js';
4
4
  import { createWorkspaceRequestSchema, workspaceMembershipSchema, workspaceSchema } from './workspaces.js';
5
+ import { assetSchema, createAssetUploadRequestSchema, createAssetUploadResponseSchema, finalizeAssetUploadRequestSchema, listAssetsResponseSchema } from './assets.js';
6
+ import { createProjectRequestSchema, ledMapResponseSchema, projectSchema, updateLedMapRequestSchema, updateProjectRequestSchema } from './projects.js';
5
7
  const workspaceListResponseSchema = listResponseSchema(workspaceSchema.extend({
6
8
  membership: workspaceMembershipSchema
7
9
  }));
@@ -49,6 +51,10 @@ export function createZclApiClient(options) {
49
51
  headers.set('content-type', 'application/json');
50
52
  body = JSON.stringify(requestBody);
51
53
  }
54
+ const method = (requestInitBase.method ?? 'GET').toUpperCase();
55
+ if (method !== 'GET' && method !== 'HEAD') {
56
+ headers.set('x-zcl-csrf', '1');
57
+ }
52
58
  const requestInit = {
53
59
  ...requestInitBase,
54
60
  headers,
@@ -101,6 +107,63 @@ export function createZclApiClient(options) {
101
107
  body: createWorkspaceRequestSchema.parse(input)
102
108
  });
103
109
  }
110
+ },
111
+ projects: {
112
+ list(workspaceId, options = {}) {
113
+ const query = options.status ? `?status=${options.status}` : '';
114
+ return request(`/workspaces/${workspaceId}/projects${query}`, listResponseSchema(projectSchema));
115
+ },
116
+ create(workspaceId, input) {
117
+ return request(`/workspaces/${workspaceId}/projects`, z.object({ data: projectSchema }), {
118
+ method: 'POST',
119
+ body: createProjectRequestSchema.parse(input)
120
+ });
121
+ },
122
+ get(workspaceId, projectId) {
123
+ return request(`/workspaces/${workspaceId}/projects/${projectId}`, z.object({ data: projectSchema }));
124
+ },
125
+ update(workspaceId, projectId, input) {
126
+ return request(`/workspaces/${workspaceId}/projects/${projectId}`, z.object({ data: projectSchema }), {
127
+ method: 'PATCH',
128
+ body: updateProjectRequestSchema.parse(input)
129
+ });
130
+ }
131
+ },
132
+ ledMaps: {
133
+ get(workspaceId, projectId) {
134
+ return request(`/workspaces/${workspaceId}/projects/${projectId}/led-map`, ledMapResponseSchema);
135
+ },
136
+ update(workspaceId, projectId, input) {
137
+ return request(`/workspaces/${workspaceId}/projects/${projectId}/led-map`, ledMapResponseSchema, {
138
+ method: 'PATCH',
139
+ body: updateLedMapRequestSchema.parse(input)
140
+ });
141
+ }
142
+ },
143
+ assets: {
144
+ createUpload(workspaceId, projectId, input) {
145
+ return request(`/workspaces/${workspaceId}/projects/${projectId}/assets/uploads`, createAssetUploadResponseSchema, {
146
+ method: 'POST',
147
+ body: createAssetUploadRequestSchema.parse(input)
148
+ });
149
+ },
150
+ async uploadObject(upload, body) {
151
+ const headers = new Headers(upload.requiredHeaders);
152
+ headers.set('x-zcl-csrf', '1');
153
+ const response = await fetcher(new Request(upload.uploadUrl, { method: 'PUT', headers, body, credentials: 'include' }));
154
+ if (!response.ok) {
155
+ throw new ZclApiError('internal_error', 'Asset upload failed', response.status);
156
+ }
157
+ },
158
+ finalize(workspaceId, projectId, assetId, input) {
159
+ return request(`/workspaces/${workspaceId}/projects/${projectId}/assets/${assetId}/finalize`, assetSchema, {
160
+ method: 'POST',
161
+ body: finalizeAssetUploadRequestSchema.parse(input)
162
+ });
163
+ },
164
+ list(workspaceId, projectId) {
165
+ return request(`/workspaces/${workspaceId}/projects/${projectId}/assets`, listAssetsResponseSchema);
166
+ }
104
167
  }
105
168
  };
106
169
  }
@@ -15,6 +15,8 @@ export declare const ledPanelSchema: z.ZodObject<{
15
15
  height: z.ZodNumber;
16
16
  x: z.ZodNumber;
17
17
  y: z.ZodNumber;
18
+ color: z.ZodOptional<z.ZodString>;
19
+ showLabel: z.ZodOptional<z.ZodBoolean>;
18
20
  }, z.core.$strip>;
19
21
  export declare const ledBoundsSchema: z.ZodObject<{
20
22
  minX: z.ZodNumber;
@@ -32,6 +34,8 @@ export declare const ledPanelsSchema: z.ZodArray<z.ZodObject<{
32
34
  height: z.ZodNumber;
33
35
  x: z.ZodNumber;
34
36
  y: z.ZodNumber;
37
+ color: z.ZodOptional<z.ZodString>;
38
+ showLabel: z.ZodOptional<z.ZodBoolean>;
35
39
  }, z.core.$strip>>;
36
40
  export declare const ledMapSchema: z.ZodObject<{
37
41
  projectId: z.ZodString;
@@ -43,6 +47,8 @@ export declare const ledMapSchema: z.ZodObject<{
43
47
  height: z.ZodNumber;
44
48
  x: z.ZodNumber;
45
49
  y: z.ZodNumber;
50
+ color: z.ZodOptional<z.ZodString>;
51
+ showLabel: z.ZodOptional<z.ZodBoolean>;
46
52
  }, z.core.$strip>>;
47
53
  bounds: z.ZodNullable<z.ZodObject<{
48
54
  minX: z.ZodNumber;
@@ -65,6 +71,8 @@ export declare const updateLedMapRequestSchema: z.ZodObject<{
65
71
  height: z.ZodNumber;
66
72
  x: z.ZodNumber;
67
73
  y: z.ZodNumber;
74
+ color: z.ZodOptional<z.ZodString>;
75
+ showLabel: z.ZodOptional<z.ZodBoolean>;
68
76
  }, z.core.$strip>>;
69
77
  }, z.core.$strip>;
70
78
  export declare const ledMapResponseSchema: z.ZodObject<{
@@ -78,6 +86,8 @@ export declare const ledMapResponseSchema: z.ZodObject<{
78
86
  height: z.ZodNumber;
79
87
  x: z.ZodNumber;
80
88
  y: z.ZodNumber;
89
+ color: z.ZodOptional<z.ZodString>;
90
+ showLabel: z.ZodOptional<z.ZodBoolean>;
81
91
  }, z.core.$strip>>;
82
92
  bounds: z.ZodNullable<z.ZodObject<{
83
93
  minX: z.ZodNumber;
@@ -116,7 +126,20 @@ export declare const createProjectRequestSchema: z.ZodObject<{
116
126
  workspace: "workspace";
117
127
  }>>;
118
128
  }, z.core.$strip>;
129
+ export declare const updateProjectRequestSchema: z.ZodObject<{
130
+ name: z.ZodOptional<z.ZodString>;
131
+ visibility: z.ZodOptional<z.ZodEnum<{
132
+ private: "private";
133
+ workspace: "workspace";
134
+ }>>;
135
+ status: z.ZodOptional<z.ZodEnum<{
136
+ deleted: "deleted";
137
+ active: "active";
138
+ archived: "archived";
139
+ }>>;
140
+ }, z.core.$strip>;
119
141
  export type CreateProjectRequest = z.input<typeof createProjectRequestSchema>;
142
+ export type UpdateProjectRequest = z.infer<typeof updateProjectRequestSchema>;
120
143
  export type LedBounds = z.infer<typeof ledBoundsSchema>;
121
144
  export type LedMap = z.infer<typeof ledMapSchema>;
122
145
  export type LedMapResponse = z.infer<typeof ledMapResponseSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,uBAAuB;;;EAAmC,CAAA;AACvE,eAAO,MAAM,mBAAmB;;;;EAA4C,CAAA;AAE5E,eAAO,MAAM,cAAc;;;;;;;iBAOzB,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;iBAQ1B,CAAA;AAMF,eAAO,MAAM,eAAe;;;;;;;kBAGgC,CAAA;AAsB5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;iBAiCrB,CAAA;AAEJ,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAGpC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;iBAAiC,CAAA;AAElE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;iBASxB,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;iBAGrC,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AACvD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACjE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACnD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,uBAAuB;;;EAAmC,CAAA;AACvE,eAAO,MAAM,mBAAmB;;;;EAA4C,CAAA;AAE5E,eAAO,MAAM,cAAc;;;;;;;;;iBASzB,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;iBAQ1B,CAAA;AAMF,eAAO,MAAM,eAAe;;;;;;;;;kBAGgC,CAAA;AAsB5D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;iBAiCrB,CAAA;AAEJ,eAAO,MAAM,yBAAyB;;;;;;;;;;;;iBAGpC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiC,CAAA;AAElE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;iBASxB,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;iBAGrC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;iBASpC,CAAA;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AACvD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACjE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC3E,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACnD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
package/dist/projects.js CHANGED
@@ -8,7 +8,9 @@ export const ledPanelSchema = z.object({
8
8
  width: z.number().int().positive().max(100000),
9
9
  height: z.number().int().positive().max(100000),
10
10
  x: z.number().int().min(-1000000).max(1000000),
11
- y: z.number().int().min(-1000000).max(1000000)
11
+ y: z.number().int().min(-1000000).max(1000000),
12
+ color: z.string().trim().min(1).max(64).optional(),
13
+ showLabel: z.boolean().optional()
12
14
  });
13
15
  export const ledBoundsSchema = z.object({
14
16
  minX: z.number(),
@@ -93,3 +95,10 @@ export const createProjectRequestSchema = z.object({
93
95
  name: z.string().min(1).max(120),
94
96
  visibility: projectVisibilitySchema.default('private')
95
97
  });
98
+ export const updateProjectRequestSchema = z
99
+ .object({
100
+ name: z.string().min(1).max(120).optional(),
101
+ visibility: projectVisibilitySchema.optional(),
102
+ status: projectStatusSchema.optional()
103
+ })
104
+ .refine((input) => input.name !== undefined || input.visibility !== undefined || input.status !== undefined, 'At least one field is required');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anuragpal02/zcl-contracts",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -15,7 +15,9 @@
15
15
  "import": "./dist/client.js"
16
16
  }
17
17
  },
18
- "files": ["dist"],
18
+ "files": [
19
+ "dist"
20
+ ],
19
21
  "publishConfig": {
20
22
  "access": "public",
21
23
  "registry": "https://registry.npmjs.org/"