@calmlens/sdk 0.0.0-stage → 0.6.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,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,190 @@
1
+ import { A as GetEventsResponse, C as UpdateAssetOptions, D as GetAssetChildrenResponse, F as Folder, G as AssetStatus, N as AssetBinaryPayloadInput, O as GetAssetResponse, P as Lens, S as SubmitAssetOptions, T as UploadAssetPartOptions, W as Asset, a as CreateAssetSignedUrlOptions, b as RetrieveAssetOptions, c as EnsureLensOptions, d as ListAssetChildrenOptions, f as ListAssetsOptions, g as MoveFolderOptions, h as MoveAssetOptions, i as CdnServeOptions, j as PostAssetSignedUrlResponse, k as GetAssetsPageResponse, l as EnsureLensesOptions, m as ModerateTextOptions, n as CalmLensClientOptions, o as CreateFolderOptions, p as ListEventsOptions, r as CdnAssetUrlOptions, u as FolderIdOptions, w as UpdateFolderOptions, x as RetryAssetOptions } from "./CalmLensTypes-BpmT60j-.js";
2
+ import * as zod from "zod";
3
+ //#region ../shared/src/Permissions.d.ts
4
+ declare const GRANT_SCHEMA: zod.ZodObject<{
5
+ actions: zod.ZodArray<zod.ZodEnum<{
6
+ "api-keys:read": "api-keys:read";
7
+ "api-keys:write": "api-keys:write";
8
+ "assets:create": "assets:create";
9
+ "assets:delete": "assets:delete";
10
+ "assets:download": "assets:download";
11
+ "assets:read": "assets:read";
12
+ "assets:share": "assets:share";
13
+ "assets:update": "assets:update";
14
+ "connectors:read": "connectors:read";
15
+ "connectors:write": "connectors:write";
16
+ "folders:create": "folders:create";
17
+ "folders:delete": "folders:delete";
18
+ "folders:read": "folders:read";
19
+ "folders:update": "folders:update";
20
+ "lenses:read": "lenses:read";
21
+ "lenses:write": "lenses:write";
22
+ "members:read": "members:read";
23
+ "members:write": "members:write";
24
+ "metadata:read": "metadata:read";
25
+ "metadata:write": "metadata:write";
26
+ "project:manage": "project:manage";
27
+ "settings:read": "settings:read";
28
+ "settings:write": "settings:write";
29
+ }>>;
30
+ folderId: zod.ZodNullable<zod.ZodString>;
31
+ includeSubfolders: zod.ZodBoolean;
32
+ }, zod.core.$strict>;
33
+ type PermissionGrant = zod.infer<typeof GRANT_SCHEMA>;
34
+ //#endregion
35
+ //#region src/testing/MockApiKey.d.ts
36
+ export declare const MOCK_API_KEY_PREFIX = "sk_test_";
37
+ export declare const createMockApiKey: (grants?: PermissionGrant[]) => string;
38
+ //#endregion
39
+ //#region src/testing/MockStorage.d.ts
40
+ interface MockStoredContent {
41
+ assetId: string;
42
+ parts: Map<number, Uint8Array>;
43
+ type?: string;
44
+ }
45
+ interface MockImageStorage {
46
+ putContent(assetId: string, content: AssetBinaryPayloadInput & {
47
+ type: string;
48
+ }): Promise<void>;
49
+ putPart(assetId: string, part: AssetBinaryPayloadInput & {
50
+ type?: string;
51
+ partNumber?: number;
52
+ isFinal?: boolean;
53
+ }): Promise<void>;
54
+ getContent(assetId: string): Promise<MockStoredContent | undefined>;
55
+ deleteContent(assetId: string): Promise<void>;
56
+ }
57
+ export declare class InMemoryMockImageStorage implements MockImageStorage {
58
+ private readonly content;
59
+ putContent(assetId: string, content: AssetBinaryPayloadInput & {
60
+ type: string;
61
+ }): Promise<void>;
62
+ putPart(assetId: string, part: AssetBinaryPayloadInput & {
63
+ type?: string;
64
+ partNumber?: number;
65
+ isFinal?: boolean;
66
+ }): Promise<void>;
67
+ getContent(assetId: string): Promise<MockStoredContent | undefined>;
68
+ deleteContent(assetId: string): Promise<void>;
69
+ }
70
+ interface MockDatabaseStorage {
71
+ createAsset(asset: Asset): Promise<Asset>;
72
+ updateAsset(asset: Asset): Promise<Asset>;
73
+ getAsset(assetId: string): Promise<Asset | undefined>;
74
+ listAssets(projectId: string): Promise<Asset[]>;
75
+ deleteAsset(assetId: string): Promise<void>;
76
+ createFolder?(folder: Folder): Promise<Folder>;
77
+ updateFolder?(folder: Folder): Promise<Folder>;
78
+ getFolder?(folderId: string): Promise<Folder | undefined>;
79
+ listFolders?(projectId: string): Promise<Folder[]>;
80
+ deleteFolder?(folderId: string): Promise<void>;
81
+ }
82
+ export declare class InMemoryMockDatabaseStorage implements MockDatabaseStorage {
83
+ private readonly assets;
84
+ private readonly folders;
85
+ createAsset(asset: Asset): Promise<Asset>;
86
+ updateAsset(asset: Asset): Promise<Asset>;
87
+ getAsset(assetId: string): Promise<Asset | undefined>;
88
+ listAssets(projectId: string): Promise<Asset[]>;
89
+ deleteAsset(assetId: string): Promise<void>;
90
+ createFolder(folder: Folder): Promise<Folder>;
91
+ updateFolder(folder: Folder): Promise<Folder>;
92
+ getFolder(folderId: string): Promise<Folder | undefined>;
93
+ listFolders(projectId: string): Promise<Folder[]>;
94
+ deleteFolder(folderId: string): Promise<void>;
95
+ }
96
+ //#endregion
97
+ //#region src/testing/MockCalmLensClient.d.ts
98
+ interface MockCalmLensClientOptions extends CalmLensClientOptions {
99
+ mockOptions?: {
100
+ databaseStorage?: MockDatabaseStorage;
101
+ imageStorage?: MockImageStorage;
102
+ createId?: () => string;
103
+ now?: () => number;
104
+ queuedStatus?: AssetStatus;
105
+ analyzedStatus?: AssetStatus;
106
+ signedUrlBaseUrl?: string;
107
+ };
108
+ }
109
+ /** A `MockCalmLensClient` method, named like its path on the client. */
110
+ type MockCalmLensOperation = "assets.list" | "assets.retrieve" | "assets.update" | "assets.listChildren" | "assets.create" | "assets.moderate" | "assets.uploadPart" | "assets.createSignedUrl" | "assets.move" | "assets.retry" | "text.moderate" | "cdn.serve" | "events.list" | "folders.list" | "folders.retrieve" | "folders.create" | "folders.update" | "folders.delete" | "folders.move" | "ensureLens" | "ensureLenses";
111
+ /** One recorded call: the method and the options object it was given, exactly as passed. */
112
+ interface MockCalmLensCall {
113
+ operation: MockCalmLensOperation;
114
+ options: unknown;
115
+ }
116
+ /**
117
+ * What a simulated request failure throws: `"transport-error"` and `"timeout"` throw the same
118
+ * `CalmLensError` the real client throws for a network failure (`sdk/transport-error`) or a
119
+ * deadline (`sdk/timeout`); any `Error` is thrown as given.
120
+ */
121
+ type MockRequestFailure = "transport-error" | "timeout" | Error;
122
+ export declare class MockCalmLensClient {
123
+ private readonly options;
124
+ readonly databaseStorage: MockDatabaseStorage;
125
+ readonly imageStorage: MockImageStorage;
126
+ private readonly createId;
127
+ private readonly now;
128
+ private readonly queuedStatus;
129
+ private readonly analyzedStatus;
130
+ private readonly apiKeyGrants;
131
+ private readonly signedUrlBaseUrl;
132
+ private readonly cdnBaseUrl;
133
+ private readonly lenses;
134
+ private readonly pendingFailures;
135
+ /** Every call made through this client, oldest first. */
136
+ readonly calls: MockCalmLensCall[];
137
+ /** Accepts the same options as `CalmLensClient` (validated the same way), plus `mockOptions`. */
138
+ constructor(options: MockCalmLensClientOptions);
139
+ /**
140
+ * Makes the next call (or the next call to `operation`) throw `failure` instead of running,
141
+ * as if the request never completed. Queue several to fail several calls in a row.
142
+ */
143
+ failNextRequest(failure?: MockRequestFailure, { operation }?: {
144
+ operation?: MockCalmLensOperation;
145
+ }): void;
146
+ /** Calls recorded for one operation, oldest first. */
147
+ callsTo(operation: MockCalmLensOperation): MockCalmLensCall[];
148
+ private begin;
149
+ get cdn(): {
150
+ getAssetUrl: ({ assetIdentifier, ...options }: CdnAssetUrlOptions) => string;
151
+ serve: (serveOptions: CdnServeOptions) => Promise<Response>;
152
+ };
153
+ get events(): {
154
+ /** The mock does not record events; it always returns an empty page at "now". */
155
+ list: (options?: ListEventsOptions) => Promise<GetEventsResponse>;
156
+ };
157
+ get text(): {
158
+ moderate: (options: ModerateTextOptions) => Promise<Asset>;
159
+ };
160
+ get assets(): {
161
+ list: (options: ListAssetsOptions) => Promise<GetAssetsPageResponse>;
162
+ retrieve: (options: RetrieveAssetOptions) => Promise<GetAssetResponse>;
163
+ listChildren: (childrenOptions: ListAssetChildrenOptions) => Promise<GetAssetChildrenResponse>;
164
+ update: (options: UpdateAssetOptions) => Promise<Asset>;
165
+ create: (options: SubmitAssetOptions) => Promise<Asset>;
166
+ moderate: (options: SubmitAssetOptions) => Promise<Asset>;
167
+ uploadPart: (options: UploadAssetPartOptions) => Promise<Asset>;
168
+ createSignedUrl: (signedUrlOptions: CreateAssetSignedUrlOptions) => Promise<PostAssetSignedUrlResponse>;
169
+ move: (options: MoveAssetOptions) => Promise<Asset>;
170
+ retry: (options: RetryAssetOptions) => Promise<Asset>;
171
+ };
172
+ get folders(): {
173
+ list: () => Promise<Folder[]>;
174
+ retrieve: (options: FolderIdOptions) => Promise<Folder>;
175
+ create: (options: CreateFolderOptions) => Promise<Folder>;
176
+ update: (options: UpdateFolderOptions) => Promise<Folder>;
177
+ delete: (options: FolderIdOptions) => Promise<void>;
178
+ move: (options: MoveFolderOptions) => Promise<Folder>;
179
+ };
180
+ ensureLens(options: EnsureLensOptions): Promise<Lens>;
181
+ private ensureLensDefinition;
182
+ ensureLenses(options: EnsureLensesOptions): Promise<Lens[]>;
183
+ private moderateAsset;
184
+ private createAsset;
185
+ private resolveFolder;
186
+ private assertUniqueFolderName;
187
+ private getSizeInBytes;
188
+ }
189
+ //#endregion
190
+ export type { MockCalmLensCall, MockCalmLensClientOptions, MockCalmLensOperation, MockDatabaseStorage, MockImageStorage, MockRequestFailure, MockStoredContent };