@corsair-dev/abyssale 0.1.0 → 0.1.1

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/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
- import type { AuthTypes, BindEndpoints, BindWebhooks, CorsairEndpoint, CorsairErrorHandler, CorsairPlugin, CorsairPluginContext, KeyBuilderContext, PickAuth, PluginPermissionsConfig } from 'corsair/core';
1
+ import type { AuthTypes, BindEndpoints, BindWebhooks, CorsairEndpoint, CorsairErrorHandler, CorsairPlugin, CorsairPluginContext, CorsairWebhook, KeyBuilderContext, PickAuth, PluginPermissionsConfig } from 'corsair/core';
2
2
  import type { AbyssaleEndpointInputs, AbyssaleEndpointOutputs } from './endpoints/types';
3
3
  import { AbyssaleSchema } from './schema';
4
+ import type { AbyssaleWebhookOutputs, NewBannerBatchEvent, NewBannerEvent, NewExportEvent, TemplateStatusEvent } from './webhooks';
4
5
  export type AbyssalePluginOptions = {
5
6
  authType?: PickAuth<'api_key'>;
6
7
  key?: string;
8
+ webhookSecret?: string;
7
9
  hooks?: InternalAbyssalePlugin['hooks'];
10
+ webhookHooks?: InternalAbyssalePlugin['webhookHooks'];
8
11
  errorHandlers?: CorsairErrorHandler;
9
12
  permissions?: PluginPermissionsConfig<typeof abyssaleEndpointsNested>;
10
13
  };
@@ -17,9 +20,17 @@ export type AbyssaleEndpoints = {
17
20
  getDesigns: AbyssaleEndpoint<'getDesigns'>;
18
21
  getFonts: AbyssaleEndpoint<'getFonts'>;
19
22
  testAuth: AbyssaleEndpoint<'testAuth'>;
23
+ generateImage: AbyssaleEndpoint<'generateImage'>;
24
+ generateBatch: AbyssaleEndpoint<'generateBatch'>;
25
+ getGenerationRequest: AbyssaleEndpoint<'getGenerationRequest'>;
26
+ };
27
+ type AbyssaleWebhook<K extends keyof AbyssaleWebhookOutputs, TEvent> = CorsairWebhook<AbyssaleContext, TEvent, AbyssaleWebhookOutputs[K]>;
28
+ export type AbyssaleWebhooks = {
29
+ newBanner: AbyssaleWebhook<'newBanner', NewBannerEvent>;
30
+ newBannerBatch: AbyssaleWebhook<'newBannerBatch', NewBannerBatchEvent>;
31
+ newExport: AbyssaleWebhook<'newExport', NewExportEvent>;
32
+ templateStatus: AbyssaleWebhook<'templateStatus', TemplateStatusEvent>;
20
33
  };
21
- export type AbyssaleWebhooks = Record<string, never>;
22
- export type AbyssaleBoundWebhooks = BindWebhooks<AbyssaleWebhooks>;
23
34
  declare const abyssaleEndpointsNested: {
24
35
  readonly projects: {
25
36
  readonly create: AbyssaleEndpoint<"createProject">;
@@ -33,8 +44,110 @@ declare const abyssaleEndpointsNested: {
33
44
  readonly auth: {
34
45
  readonly test: AbyssaleEndpoint<"testAuth">;
35
46
  };
47
+ readonly generation: {
48
+ readonly image: AbyssaleEndpoint<"generateImage">;
49
+ readonly batch: AbyssaleEndpoint<"generateBatch">;
50
+ readonly status: AbyssaleEndpoint<"getGenerationRequest">;
51
+ };
52
+ };
53
+ declare const abyssaleWebhooksNested: {
54
+ readonly banners: {
55
+ readonly created: AbyssaleWebhook<"newBanner", {
56
+ [x: string]: unknown;
57
+ id: string;
58
+ event_type: "NEW_BANNER";
59
+ version?: number | undefined;
60
+ sharing_id?: string | undefined;
61
+ file?: {
62
+ [x: string]: unknown;
63
+ type?: string | undefined;
64
+ url?: string | undefined;
65
+ cdn_url?: string | undefined;
66
+ fallback_image_url?: string | undefined;
67
+ filename?: string | undefined;
68
+ } | undefined;
69
+ format?: {
70
+ [x: string]: unknown;
71
+ id?: string | undefined;
72
+ width?: number | undefined;
73
+ height?: number | undefined;
74
+ unit?: string | undefined;
75
+ } | undefined;
76
+ template?: {
77
+ [x: string]: unknown;
78
+ id?: string | undefined;
79
+ name?: string | undefined;
80
+ created_at?: number | undefined;
81
+ updated_at?: number | undefined;
82
+ } | undefined;
83
+ }>;
84
+ readonly batchCompleted: AbyssaleWebhook<"newBannerBatch", {
85
+ [x: string]: unknown;
86
+ event_type: "NEW_BANNER_BATCH";
87
+ generation_request_id: string;
88
+ banners: {
89
+ [x: string]: unknown;
90
+ id: string;
91
+ version?: number | undefined;
92
+ sharing_id?: string | undefined;
93
+ file?: {
94
+ [x: string]: unknown;
95
+ type?: string | undefined;
96
+ url?: string | undefined;
97
+ cdn_url?: string | undefined;
98
+ fallback_image_url?: string | undefined;
99
+ filename?: string | undefined;
100
+ } | undefined;
101
+ format?: {
102
+ [x: string]: unknown;
103
+ id?: string | undefined;
104
+ width?: number | undefined;
105
+ height?: number | undefined;
106
+ unit?: string | undefined;
107
+ } | undefined;
108
+ template?: {
109
+ [x: string]: unknown;
110
+ id?: string | undefined;
111
+ name?: string | undefined;
112
+ created_at?: number | undefined;
113
+ updated_at?: number | undefined;
114
+ } | undefined;
115
+ project?: {
116
+ [x: string]: unknown;
117
+ id?: string | undefined;
118
+ name?: string | undefined;
119
+ } | undefined;
120
+ }[];
121
+ errors: {
122
+ [x: string]: unknown;
123
+ template_format_name: string;
124
+ reason: string;
125
+ }[];
126
+ }>;
127
+ };
128
+ readonly exports: {
129
+ readonly completed: AbyssaleWebhook<"newExport", {
130
+ [x: string]: unknown;
131
+ event_type: "NEW_EXPORT";
132
+ export_id: string;
133
+ archive_url: string;
134
+ requested_at?: number | undefined;
135
+ generated_at?: number | undefined;
136
+ }>;
137
+ };
138
+ readonly designs: {
139
+ readonly statusChanged: AbyssaleWebhook<"templateStatus", {
140
+ [x: string]: unknown;
141
+ event_type: "TEMPLATE_STATUS";
142
+ id: string;
143
+ status: string;
144
+ name?: string | undefined;
145
+ created_at?: number | undefined;
146
+ updated_at?: number | undefined;
147
+ status_updated_at?: number | undefined;
148
+ }>;
149
+ };
36
150
  };
37
- declare const abyssaleWebhooksNested: {};
38
151
  export declare const abyssaleEndpointSchemas: {
39
152
  readonly 'projects.create': {
40
153
  readonly input: import("zod").ZodObject<{
@@ -96,7 +209,137 @@ export declare const abyssaleEndpointSchemas: {
96
209
  version: import("zod").ZodOptional<import("zod").ZodString>;
97
210
  }, import("zod/v4/core").$loose>;
98
211
  };
212
+ readonly 'generation.image': {
213
+ readonly input: import("zod").ZodObject<{
214
+ designId: import("zod").ZodString;
215
+ elements: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{}, import("zod/v4/core").$loose>>>;
216
+ template_format_name: import("zod").ZodOptional<import("zod").ZodString>;
217
+ image_file_type: import("zod").ZodOptional<import("zod").ZodEnum<{
218
+ png: "png";
219
+ jpeg: "jpeg";
220
+ webp: "webp";
221
+ avif: "avif";
222
+ pdf: "pdf";
223
+ auto: "auto";
224
+ }>>;
225
+ file_compression_level: import("zod").ZodOptional<import("zod").ZodNumber>;
226
+ original_visual_id: import("zod").ZodOptional<import("zod").ZodString>;
227
+ }, import("zod/v4/core").$strip>;
228
+ readonly output: import("zod").ZodObject<{
229
+ id: import("zod").ZodString;
230
+ version: import("zod").ZodOptional<import("zod").ZodNumber>;
231
+ sharing_id: import("zod").ZodOptional<import("zod").ZodString>;
232
+ file: import("zod").ZodOptional<import("zod").ZodObject<{
233
+ type: import("zod").ZodOptional<import("zod").ZodString>;
234
+ url: import("zod").ZodOptional<import("zod").ZodString>;
235
+ cdn_url: import("zod").ZodOptional<import("zod").ZodString>;
236
+ fallback_image_url: import("zod").ZodOptional<import("zod").ZodString>;
237
+ filename: import("zod").ZodOptional<import("zod").ZodString>;
238
+ }, import("zod/v4/core").$loose>>;
239
+ format: import("zod").ZodOptional<import("zod").ZodObject<{
240
+ id: import("zod").ZodOptional<import("zod").ZodString>;
241
+ width: import("zod").ZodOptional<import("zod").ZodNumber>;
242
+ height: import("zod").ZodOptional<import("zod").ZodNumber>;
243
+ unit: import("zod").ZodOptional<import("zod").ZodString>;
244
+ }, import("zod/v4/core").$loose>>;
245
+ template: import("zod").ZodOptional<import("zod").ZodObject<{
246
+ id: import("zod").ZodOptional<import("zod").ZodString>;
247
+ name: import("zod").ZodOptional<import("zod").ZodString>;
248
+ created_at: import("zod").ZodOptional<import("zod").ZodNumber>;
249
+ updated_at: import("zod").ZodOptional<import("zod").ZodNumber>;
250
+ }, import("zod/v4/core").$loose>>;
251
+ project: import("zod").ZodOptional<import("zod").ZodObject<{
252
+ id: import("zod").ZodOptional<import("zod").ZodString>;
253
+ name: import("zod").ZodOptional<import("zod").ZodString>;
254
+ }, import("zod/v4/core").$loose>>;
255
+ }, import("zod/v4/core").$loose>;
256
+ };
257
+ readonly 'generation.batch': {
258
+ readonly input: import("zod").ZodObject<{
259
+ designId: import("zod").ZodString;
260
+ elements: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{}, import("zod/v4/core").$loose>>>;
261
+ template_format_names: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
262
+ callback_url: import("zod").ZodOptional<import("zod").ZodString>;
263
+ image_file_type: import("zod").ZodOptional<import("zod").ZodEnum<{
264
+ png: "png";
265
+ jpeg: "jpeg";
266
+ webp: "webp";
267
+ avif: "avif";
268
+ pdf: "pdf";
269
+ auto: "auto";
270
+ gif: "gif";
271
+ html5: "html5";
272
+ mp4: "mp4";
273
+ }>>;
274
+ file_compression_level: import("zod").ZodOptional<import("zod").ZodNumber>;
275
+ html5: import("zod").ZodOptional<import("zod").ZodObject<{
276
+ page_title: import("zod").ZodOptional<import("zod").ZodString>;
277
+ click_tag: import("zod").ZodOptional<import("zod").ZodString>;
278
+ ad_network: import("zod").ZodOptional<import("zod").ZodString>;
279
+ include_backup_image: import("zod").ZodOptional<import("zod").ZodBoolean>;
280
+ repeat: import("zod").ZodOptional<import("zod").ZodBoolean>;
281
+ }, import("zod/v4/core").$loose>>;
282
+ gif: import("zod").ZodOptional<import("zod").ZodObject<{
283
+ max_fps: import("zod").ZodOptional<import("zod").ZodNumber>;
284
+ repeat: import("zod").ZodOptional<import("zod").ZodBoolean>;
285
+ }, import("zod/v4/core").$loose>>;
286
+ video: import("zod").ZodOptional<import("zod").ZodObject<{
287
+ fps: import("zod").ZodOptional<import("zod").ZodNumber>;
288
+ }, import("zod/v4/core").$loose>>;
289
+ print: import("zod").ZodOptional<import("zod").ZodObject<{
290
+ color_profile: import("zod").ZodOptional<import("zod").ZodString>;
291
+ display_crop_marks: import("zod").ZodOptional<import("zod").ZodBoolean>;
292
+ }, import("zod/v4/core").$loose>>;
293
+ original_visual_id: import("zod").ZodOptional<import("zod").ZodString>;
294
+ pages: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{}, import("zod/v4/core").$loose>>>;
295
+ }, import("zod/v4/core").$strip>;
296
+ readonly output: import("zod").ZodObject<{
297
+ generation_request_id: import("zod").ZodString;
298
+ }, import("zod/v4/core").$loose>;
299
+ };
300
+ readonly 'generation.status': {
301
+ readonly input: import("zod").ZodObject<{
302
+ generationRequestId: import("zod").ZodString;
303
+ }, import("zod/v4/core").$strip>;
304
+ readonly output: import("zod").ZodObject<{
305
+ is_finalized: import("zod").ZodBoolean;
306
+ id: import("zod").ZodString;
307
+ banners: import("zod").ZodArray<import("zod").ZodObject<{
308
+ id: import("zod").ZodString;
309
+ version: import("zod").ZodOptional<import("zod").ZodNumber>;
310
+ sharing_id: import("zod").ZodOptional<import("zod").ZodString>;
311
+ file: import("zod").ZodOptional<import("zod").ZodObject<{
312
+ type: import("zod").ZodOptional<import("zod").ZodString>;
313
+ url: import("zod").ZodOptional<import("zod").ZodString>;
314
+ cdn_url: import("zod").ZodOptional<import("zod").ZodString>;
315
+ fallback_image_url: import("zod").ZodOptional<import("zod").ZodString>;
316
+ filename: import("zod").ZodOptional<import("zod").ZodString>;
317
+ }, import("zod/v4/core").$loose>>;
318
+ format: import("zod").ZodOptional<import("zod").ZodObject<{
319
+ id: import("zod").ZodOptional<import("zod").ZodString>;
320
+ width: import("zod").ZodOptional<import("zod").ZodNumber>;
321
+ height: import("zod").ZodOptional<import("zod").ZodNumber>;
322
+ unit: import("zod").ZodOptional<import("zod").ZodString>;
323
+ }, import("zod/v4/core").$loose>>;
324
+ template: import("zod").ZodOptional<import("zod").ZodObject<{
325
+ id: import("zod").ZodOptional<import("zod").ZodString>;
326
+ name: import("zod").ZodOptional<import("zod").ZodString>;
327
+ created_at: import("zod").ZodOptional<import("zod").ZodNumber>;
328
+ updated_at: import("zod").ZodOptional<import("zod").ZodNumber>;
329
+ }, import("zod/v4/core").$loose>>;
330
+ project: import("zod").ZodOptional<import("zod").ZodObject<{
331
+ id: import("zod").ZodOptional<import("zod").ZodString>;
332
+ name: import("zod").ZodOptional<import("zod").ZodString>;
333
+ }, import("zod/v4/core").$loose>>;
334
+ }, import("zod/v4/core").$loose>>;
335
+ errors: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
336
+ template_format_name: import("zod").ZodString;
337
+ reason: import("zod").ZodString;
338
+ }, import("zod/v4/core").$loose>>>>;
339
+ }, import("zod/v4/core").$loose>;
340
+ };
99
341
  };
342
+ export type AbyssaleBoundWebhooks = BindWebhooks<typeof abyssaleWebhooksNested>;
100
343
  declare const defaultAuthType: AuthTypes;
101
344
  export declare const abyssaleAuthConfig: {
102
345
  readonly api_key: {};
@@ -105,5 +348,6 @@ export type BaseAbyssalePlugin<T extends AbyssalePluginOptions> = CorsairPlugin<
105
348
  export type InternalAbyssalePlugin = BaseAbyssalePlugin<AbyssalePluginOptions>;
106
349
  export type ExternalAbyssalePlugin<T extends AbyssalePluginOptions> = BaseAbyssalePlugin<T>;
107
350
  export declare function abyssale<const T extends AbyssalePluginOptions>(incomingOptions?: AbyssalePluginOptions & T): ExternalAbyssalePlugin<T>;
108
- export type { AbyssaleEndpointInputs, AbyssaleEndpointOutputs, CreateProjectInput, CreateProjectResponse, GetDesignsInput, GetDesignsResponse, GetFontsInput, GetFontsResponse, TestAuthInput, TestAuthResponse, } from './endpoints/types';
351
+ export type { AbyssaleEndpointInputs, AbyssaleEndpointOutputs, CreateProjectInput, CreateProjectResponse, GenerateBatchInput, GenerateBatchResponse, GenerateImageInput, GenerateImageResponse, GetDesignsInput, GetDesignsResponse, GetFontsInput, GetFontsResponse, GetGenerationRequestInput, GetGenerationRequestResponse, TestAuthInput, TestAuthResponse, } from './endpoints/types';
352
+ export type { AbyssaleWebhookOutputs, NewBannerBatchEvent, NewBannerEvent, NewExportEvent, TemplateStatusEvent, } from './webhooks/types';
109
353
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,EAER,uBAAuB,EAIvB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EACX,sBAAsB,EACtB,uBAAuB,EACvB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,qBAAqB,GAAG;IACnC,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,WAAW,CAAC,EAAE,uBAAuB,CAAC,OAAO,uBAAuB,CAAC,CAAC;CACtE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,oBAAoB,CACjD,OAAO,cAAc,EACrB,qBAAqB,CACrB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GACpC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG,aAAa,CACjD,OAAO,uBAAuB,CAC9B,CAAC;AAEF,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,uBAAuB,IAC5D,eAAe,CACd,eAAe,EACf,sBAAsB,CAAC,CAAC,CAAC,EACzB,uBAAuB,CAAC,CAAC,CAAC,CAC1B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAEnE,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;CAanB,CAAC;AAEX,QAAA,MAAM,sBAAsB,IAAc,CAAC;AAE3C,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmBnC,CAAC;AAOF,QAAA,MAAM,eAAe,EAAE,SAA8B,CAAC;AAqBtD,eAAO,MAAM,kBAAkB;;CAEM,CAAC;AAEtC,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,qBAAqB,IAAI,aAAa,CAC9E,UAAU,EACV,OAAO,cAAc,EACrB,OAAO,uBAAuB,EAC9B,OAAO,sBAAsB,EAC7B,CAAC,EACD,OAAO,eAAe,CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AAE/E,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,qBAAqB,IACjE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAEvB,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,qBAAqB,EAC7D,eAAe,GAAE,qBAAqB,GAAG,CAAmC,GAC1E,sBAAsB,CAAC,CAAC,CAAC,CAwC3B;AAED,YAAY,EACX,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,gBAAgB,GAChB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var G=Object.defineProperty;var A=(e,s)=>{for(var n in s)G(e,n,{get:s[n],enumerable:!0})};import{AuthMissingError as D}from"corsair/core";var h={};A(h,{testAuth:()=>Q});import{logEventFromContext as J}from"corsair/core";import{ApiError as k,request as v}from"corsair/http";var y=class extends Error{constructor(n,i,r){super(n,r);this.code=i;this.name="AbyssaleAPIError",r?.cause instanceof k&&(this.status=r.cause.status,this.statusText=r.cause.statusText,this.body=r.cause.body,this.retryAfter=r.cause.retryAfter)}status;statusText;body;retryAfter},q="https://api.abyssale.com",R=2,j=3e4,B=e=>new Promise(s=>setTimeout(s,e));function H(e,s){return e!==void 0&&e>=500?s==="GET":!1}function M(e,s){let n=e.retryAfter;return typeof n=="number"&&n>0?Math.min(n,j):Math.min(2**(s-1)*1e3,j)}async function a(e,s,n={}){let{method:i="GET",body:r,query:d}=n,T={BASE:q,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:void 0,HEADERS:{"Content-Type":"application/json","x-api-key":s}},F={method:i,url:e,body:i==="POST"||i==="PUT"||i==="PATCH"?r:void 0,mediaType:"application/json; charset=utf-8",query:i==="GET"?d:void 0},m;for(let b=1;b<=R;b++)try{return await v(T,F)}catch(f){if(m=f,!(f instanceof k&&b<R&&H(f.status,i)))break;await B(M(f,b))}throw m instanceof k?new y(m.message,void 0,{cause:m}):m instanceof Error?new y(m.message):new y("Unknown error")}import{z as t}from"zod";var W=t.object({name:t.string().min(2).max(100)}),z=t.object({id:t.string().uuid(),name:t.string(),created_at_ts:t.number(),version:t.string().optional()}).loose(),K=t.object({project_id:t.string().uuid().optional(),type:t.enum(["static","animated","printer","printer_multipage"]).optional()}),L=t.object({id:t.string().uuid(),template_id:t.string().uuid().optional(),name:t.string(),type:t.string(),project_id:t.string().uuid().optional(),project_name:t.string().optional(),category_id:t.string().uuid().optional(),category_name:t.string().optional(),version:t.string().optional(),created_at:t.number().optional(),updated_at:t.number().optional(),preview_url:t.string().optional()}).loose(),N=t.array(L),U=t.object({type:t.enum(["google","custom"]).optional()}),Y=t.object({id:t.string(),name:t.string(),type:t.enum(["google","custom"]),available_weights:t.array(t.union([t.number(),t.string()]))}).loose(),X=t.array(Y),$=t.object({}),V=t.object({company:t.string(),version:t.string().optional()}).loose(),c={createProject:W,getDesigns:K,getFonts:U,testAuth:$},l={createProject:z,getDesigns:N,getFonts:X,testAuth:V};function p(e,s){return c[e].parse(s??{})}function u(e,s){return l[e].parse(s)}async function g(e,s,n){let r=e.db?.[s];if(r?.upsertByEntityId){for(let d of n)if(d?.id)try{await r.upsertByEntityId(d.id,d)}catch(T){console.warn(`[abyssale] failed to cache ${s} ${d.id}:`,T)}}}var Q=async(e,s)=>{let n=p("testAuth",s),i=await a("auth",e.key,{method:"POST"}),r=u("testAuth",i);return await J(e,"abyssale.auth.test",{},"completed"),r};var E={};A(E,{getDesigns:()=>ee});import{logEventFromContext as Z}from"corsair/core";var ee=async(e,s)=>{let n=p("getDesigns",s),i=await a("designs",e.key,{method:"GET",query:{project_id:n.project_id,type:n.type}}),r=u("getDesigns",i);return await g(e,"designs",r),await Z(e,"abyssale.designs.list",{project_id:n.project_id,type:n.type},"completed"),r};var P={};A(P,{getFonts:()=>se});import{logEventFromContext as te}from"corsair/core";var se=async(e,s)=>{let n=p("getFonts",s),i=await a("fonts",e.key,{method:"GET",query:{type:n.type}}),r=u("getFonts",i);return await g(e,"fonts",r),await te(e,"abyssale.fonts.list",{type:n.type},"completed"),r};var x={};A(x,{createProject:()=>oe});import{logEventFromContext as ne}from"corsair/core";var oe=async(e,s)=>{let n=p("createProject",s),i=await a("projects",e.key,{method:"POST",body:{name:n.name}}),r=u("createProject",i);return await g(e,"projects",[r]),await ne(e,"abyssale.projects.create",{name:n.name},"completed"),r};import{ApiError as re}from"corsair/http";function S(e){if(e instanceof re||e instanceof y)return e.status}var C={RATE_LIMIT_ERROR:{match:e=>{if(S(e)===429)return!0;let s=e.message.toLowerCase();return s.includes("rate_limited")||s.includes("429")},handler:async()=>({maxRetries:0})},AUTH_ERROR:{match:e=>{let s=S(e);if(s===401||s===403)return!0;let n=e.message.toLowerCase();return n.includes("unauthorized")||n.includes("invalid_auth")||n.includes("401")||n.includes("403")},handler:async()=>({maxRetries:0})},DEFAULT:{match:()=>!0,handler:async()=>({maxRetries:0})}};import{z as o}from"zod";var I=o.object({id:o.string(),name:o.string(),created_at_ts:o.number().optional(),category_name:o.string().optional(),version:o.string().optional()}).loose(),_=o.object({id:o.string(),template_id:o.string().optional(),name:o.string(),type:o.string(),project_id:o.string().optional(),project_name:o.string().optional(),category_id:o.string().optional(),category_name:o.string().optional(),version:o.string().optional(),created_at:o.number().optional(),updated_at:o.number().optional(),preview_url:o.string().optional()}).loose(),w=o.object({id:o.string(),name:o.string(),type:o.enum(["google","custom"]),available_weights:o.array(o.union([o.number(),o.string()]))}).loose();var O={version:"1.0.0",entities:{projects:I,designs:_,fonts:w}};var ie={projects:{create:x.createProject},designs:{list:E.getDesigns},fonts:{list:P.getFonts},auth:{test:h.testAuth}},ae={},pe={"projects.create":{input:c.createProject,output:l.createProject},"designs.list":{input:c.getDesigns,output:l.getDesigns},"fonts.list":{input:c.getFonts,output:l.getFonts},"auth.test":{input:c.testAuth,output:l.testAuth}},ue={},ye="api_key",ce={"projects.create":{riskLevel:"write",description:"Create a new project in Abyssale"},"designs.list":{riskLevel:"read",description:"Get a list of designs in Abyssale"},"fonts.list":{riskLevel:"read",description:"Get a list of available fonts in Abyssale"},"auth.test":{riskLevel:"read",description:"Test Abyssale API key authentication validity"}},le={api_key:{}};function Ye(e={}){let s={...e,authType:e.authType??ye};return{id:"abyssale",authConfig:le,schema:O,options:s,hooks:s.hooks,webhookHooks:void 0,endpoints:ie,webhooks:ae,endpointMeta:ce,endpointSchemas:pe,webhookSchemas:ue,pluginWebhookMatcher:void 0,pluginTenantWebhookMatcher:void 0,oauthWebhookTenantLinkResolver:void 0,errorHandlers:{...C,...s.errorHandlers},keyBuilder:async(n,i)=>{if(i==="endpoint"&&s.key)return s.key;if(i==="endpoint"&&n.authType==="api_key"){let r=await n.keys.get_api_key();if(!r)throw new D("abyssale","api_key");return r}throw new D("abyssale","api_key")}}}export{Ye as abyssale,le as abyssaleAuthConfig,pe as abyssaleEndpointSchemas};
1
+ var le=Object.defineProperty;var v=(e,n)=>{for(var s in n)le(e,s,{get:n[s],enumerable:!0})};import{AuthMissingError as ue}from"corsair/core";var I={};v(I,{testAuth:()=>Ge});import{logEventFromContext as Ce}from"corsair/core";import{ApiError as W,request as ce}from"corsair/http";var A=class extends Error{constructor(s,o,r){super(s,r);this.code=o;this.name="AbyssaleAPIError",r?.cause instanceof W&&(this.status=r.cause.status,this.statusText=r.cause.statusText,this.body=r.cause.body,this.retryAfter=r.cause.retryAfter)}status;statusText;body;retryAfter},de="https://api.abyssale.com",H=2,L=3e4,ye=e=>new Promise(n=>setTimeout(n,e));function me(e,n){return e!==void 0&&e>=500?n==="GET":!1}function ge(e,n){let s=e.retryAfter;return typeof s=="number"&&s>0?Math.min(s,L):Math.min(2**(n-1)*1e3,L)}async function l(e,n,s={}){let{method:o="GET",body:r,query:p}=s,u={BASE:de,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:void 0,HEADERS:{"Content-Type":"application/json","x-api-key":n}},b={method:o,url:e,body:o==="POST"||o==="PUT"||o==="PATCH"?r:void 0,mediaType:"application/json; charset=utf-8",query:o==="GET"?p:void 0},y;for(let w=1;w<=H;w++)try{return await ce(u,b)}catch(f){if(y=f,!(f instanceof W&&w<H&&me(f.status,o)))break;await ye(ge(f,w))}throw y instanceof W?new A(y.message,void 0,{cause:y}):y instanceof Error?new A(y.message):new A("Unknown error")}import{z as t}from"zod";import{z as a}from"zod";var K=a.object({id:a.string(),name:a.string(),created_at_ts:a.number().optional(),category_name:a.string().optional(),version:a.string().optional()}).loose(),U=a.object({id:a.string(),template_id:a.string().optional(),name:a.string(),type:a.string(),project_id:a.string().optional(),project_name:a.string().optional(),category_id:a.string().optional(),category_name:a.string().optional(),version:a.string().optional(),created_at:a.number().optional(),updated_at:a.number().optional(),preview_url:a.string().optional()}).loose(),$=a.object({id:a.string(),name:a.string(),type:a.enum(["google","custom"]),available_weights:a.array(a.union([a.number(),a.string()]))}).loose(),O=a.object({type:a.string().optional(),url:a.string().optional(),cdn_url:a.string().optional(),fallback_image_url:a.string().optional(),filename:a.string().optional()}).loose(),q=a.object({id:a.string().optional(),width:a.number().optional(),height:a.number().optional(),unit:a.string().optional()}).loose(),D=a.object({id:a.string().optional(),name:a.string().optional(),created_at:a.number().optional(),updated_at:a.number().optional()}).loose(),E=a.object({id:a.string(),version:a.number().optional(),sharing_id:a.string().optional(),file:O.optional(),format:q.optional(),template:D.optional(),project:a.object({id:a.string().optional(),name:a.string().optional()}).loose().optional()}).loose();var be=t.object({name:t.string().min(2).max(100)}),he=t.object({id:t.string().uuid(),name:t.string(),created_at_ts:t.number(),version:t.string().optional()}).loose(),fe=t.object({project_id:t.string().uuid().optional(),type:t.enum(["static","animated","printer","printer_multipage"]).optional()}),Ae=t.object({id:t.string().uuid(),template_id:t.string().uuid().optional(),name:t.string(),type:t.string(),project_id:t.string().uuid().optional(),project_name:t.string().optional(),category_id:t.string().uuid().optional(),category_name:t.string().optional(),version:t.string().optional(),created_at:t.number().optional(),updated_at:t.number().optional(),preview_url:t.string().optional()}).loose(),Ee=t.array(Ae),ke=t.object({type:t.enum(["google","custom"]).optional()}),_e=t.object({id:t.string(),name:t.string(),type:t.enum(["google","custom"]),available_weights:t.array(t.union([t.number(),t.string()]))}).loose(),we=t.array(_e),xe=t.object({}),ve=t.object({company:t.string(),version:t.string().optional()}).loose(),X=t.record(t.string(),t.object({}).loose()),Re=t.object({designId:t.string().uuid(),elements:X.optional(),template_format_name:t.string().min(1).optional(),image_file_type:t.enum(["png","jpeg","webp","avif","pdf","auto"]).optional(),file_compression_level:t.number().int().min(1).max(100).optional(),original_visual_id:t.string().uuid().optional()}),Se=E,Be=t.object({designId:t.string().uuid(),elements:X.optional(),template_format_names:t.array(t.string().min(1)).optional(),callback_url:t.string().url().optional(),image_file_type:t.enum(["png","jpeg","webp","avif","gif","pdf","html5","mp4","auto"]).optional(),file_compression_level:t.number().int().min(1).max(100).optional(),html5:t.object({page_title:t.string().optional(),click_tag:t.string().optional(),ad_network:t.string().optional(),include_backup_image:t.boolean().optional(),repeat:t.boolean().optional()}).loose().optional(),gif:t.object({max_fps:t.number().int().min(2).max(9).optional(),repeat:t.boolean().optional()}).loose().optional(),video:t.object({fps:t.number().int().min(2).max(30).optional()}).loose().optional(),print:t.object({color_profile:t.string().uuid().optional(),display_crop_marks:t.boolean().optional()}).loose().optional(),original_visual_id:t.string().uuid().optional(),pages:t.record(t.string(),t.object({}).loose()).optional()}),Te=t.object({generation_request_id:t.string().uuid()}).loose(),Ie=t.object({generationRequestId:t.string().uuid()}),Pe=t.object({is_finalized:t.boolean(),id:t.string().uuid(),banners:t.array(E),errors:t.array(t.object({template_format_name:t.string(),reason:t.string()}).loose()).optional().default([])}).loose(),m={createProject:be,getDesigns:fe,getFonts:ke,testAuth:xe,generateImage:Re,generateBatch:Be,getGenerationRequest:Ie},g={createProject:he,getDesigns:Ee,getFonts:we,testAuth:ve,generateImage:Se,generateBatch:Te,getGenerationRequest:Pe};function c(e,n){return m[e].parse(n??{})}function d(e,n){return g[e].parse(n)}async function h(e,n,s){let r=e.db?.[n];if(r?.upsertByEntityId){for(let p of s)if(p?.id)try{await r.upsertByEntityId(p.id,p)}catch(u){console.warn(`[abyssale] failed to cache ${n} ${p.id}:`,u)}}}var Ge=async(e,n)=>{let s=c("testAuth",n),o=await l("auth",e.key,{method:"POST"}),r=d("testAuth",o);return await Ce(e,"abyssale.auth.test",{},"completed"),r};var P={};v(P,{getDesigns:()=>Ne});import{logEventFromContext as je}from"corsair/core";var Ne=async(e,n)=>{let s=c("getDesigns",n),o=await l("designs",e.key,{method:"GET",query:{project_id:s.project_id,type:s.type}}),r=d("getDesigns",o);return await h(e,"designs",r),await je(e,"abyssale.designs.list",{project_id:s.project_id,type:s.type},"completed"),r};var C={};v(C,{getFonts:()=>Oe});import{logEventFromContext as We}from"corsair/core";var Oe=async(e,n)=>{let s=c("getFonts",n),o=await l("fonts",e.key,{method:"GET",query:{type:s.type}}),r=d("getFonts",o);return await h(e,"fonts",r),await We(e,"abyssale.fonts.list",{type:s.type},"completed"),r};var x={};v(x,{generateBatch:()=>De,generateImage:()=>qe,getGenerationRequest:()=>Fe});import{logEventFromContext as F}from"corsair/core";var qe=async(e,n)=>{let s=c("generateImage",n),{designId:o,...r}=s,p=await l(`banner-builder/${o}/generate`,e.key,{method:"POST",body:r}),u=d("generateImage",p);return await h(e,"banners",[u]),await F(e,"abyssale.generation.image",{design_id:o},"completed"),u},De=async(e,n)=>{let s=c("generateBatch",n),{designId:o,...r}=s,p=await l(`async/banner-builder/${o}/generate`,e.key,{method:"POST",body:r}),u=d("generateBatch",p);return await F(e,"abyssale.generation.batch",{design_id:o,generation_request_id:u.generation_request_id},"completed"),u},Fe=async(e,n)=>{let s=c("getGenerationRequest",n),o=await l(`generation-request/${s.generationRequestId}`,e.key,{method:"GET"}),r=d("getGenerationRequest",o);return r.is_finalized&&r.banners.length>0&&await h(e,"banners",r.banners),await F(e,"abyssale.generation.status",{generation_request_id:s.generationRequestId,is_finalized:r.is_finalized},"completed"),r};var G={};v(G,{createProject:()=>ze});import{logEventFromContext as Me}from"corsair/core";var ze=async(e,n)=>{let s=c("createProject",n),o=await l("projects",e.key,{method:"POST",body:{name:s.name}}),r=d("createProject",o);return await h(e,"projects",[r]),await Me(e,"abyssale.projects.create",{name:s.name},"completed"),r};import{ApiError as He}from"corsair/http";function Y(e){if(e instanceof He||e instanceof A)return e.status}var V={RATE_LIMIT_ERROR:{match:e=>{if(Y(e)===429)return!0;let n=e.message.toLowerCase();return n.includes("rate_limited")||n.includes("429")},handler:async()=>({maxRetries:0})},AUTH_ERROR:{match:e=>{let n=Y(e);if(n===401||n===403)return!0;let s=e.message.toLowerCase();return s.includes("unauthorized")||s.includes("invalid_auth")||s.includes("401")||s.includes("403")},handler:async()=>({maxRetries:0})},DEFAULT:{match:()=>!0,handler:async()=>({maxRetries:0})}};var J={version:"1.1.0",entities:{projects:K,designs:U,fonts:$,banners:E}};import{logEventFromContext as ne}from"corsair/core";async function M(e,n){if(!e.db.banners)return"";try{return(await e.db.banners.upsertByEntityId(n.id,n))?.id||""}catch(s){return console.warn(`[abyssale] failed to cache banner ${n.id}:`,s),""}}import Z from"crypto";import{z as i}from"zod";var j=i.object({event_type:i.string()}).loose(),Le={id:i.uuid(),version:i.number().optional(),sharing_id:i.uuid().optional(),file:O.optional(),format:q.optional(),template:D.optional()},R=j.extend({event_type:i.literal("NEW_BANNER"),...Le}),S=j.extend({event_type:i.literal("NEW_BANNER_BATCH"),generation_request_id:i.uuid(),banners:i.array(E),errors:i.array(i.object({template_format_name:i.string(),reason:i.string()}).loose()).optional().default([])}),B=j.extend({event_type:i.literal("NEW_EXPORT"),export_id:i.uuid(),archive_url:i.url(),requested_at:i.number().optional(),generated_at:i.number().optional()}),T=j.extend({event_type:i.literal("TEMPLATE_STATUS"),id:i.uuid(),name:i.string().optional(),status:i.string(),created_at:i.number().optional(),updated_at:i.number().optional(),status_updated_at:i.number().optional()}),Q=["NEW_BANNER","NEW_BANNER_BATCH","NEW_EXPORT","TEMPLATE_STATUS"];function ee(e){if(typeof e=="string")try{let n=JSON.parse(e);return n===null||typeof n!="object"||Array.isArray(n)?null:n}catch{return null}return e===null||typeof e!="object"||Array.isArray(e)?null:e}function k(e){let n=Q.includes(e);return s=>{if(!n)return!1;let o=ee(s.body);return o!==null&&o.event_type===e}}function te(e){let n=ee(e.body);return n!==null&&Q.some(s=>n.event_type===s)}function Ke(e,n){let s=n.toLowerCase();for(let[o,r]of Object.entries(e))if(o.toLowerCase()===s)return Array.isArray(r)?r[0]:r}var Ue=300;function $e(e){let n,s=[];for(let o of e.split(",")){let r=o.trim(),p=r.indexOf("=");if(p<=0)continue;let u=r.slice(0,p),b=r.slice(p+1);!u||!b||(u==="t"?n=b:u==="v1"&&s.push(b))}return{timestamp:n,signatures:s}}function Xe(e,n){if(e.hubVerified===!0)return{valid:!0};let s=Ke(e.headers,"x-abyssale-signature");if(!s)return{valid:!1,error:n?"Missing x-abyssale-signature header but a webhook secret is configured":"Unsigned delivery received but no webhook secret is configured (set options.webhookSecret or the webhook_signature key)"};if(!n)return{valid:!1,error:"Signed delivery received but no webhook secret is configured (set options.webhookSecret or the webhook_signature key)"};let o=e.rawBody;if(!o)return{valid:!1,error:"Missing raw body for signature verification"};let{timestamp:r,signatures:p}=$e(s);if(!r||!/^\d+$/.test(r))return{valid:!1,error:"Malformed signature timestamp"};if(Math.abs(Math.floor(Date.now()/1e3)-Number(r))>Ue)return{valid:!1,error:"Signature timestamp outside tolerance"};if(p.length===0)return{valid:!1,error:"Malformed signature header: no v1 value"};let b=`v1:webhook:${r}.${o}`,y=Z.createHmac("sha256",n).update(b).digest("hex");for(let w of p){let f=Buffer.from(w,"utf8"),N=Buffer.from(y,"utf8");if(f.length===N.length&&Z.timingSafeEqual(f,N))return{valid:!0}}return{valid:!1,error:"Invalid signature"}}function _(e,n,s,o){let r=Xe(e,n);if(!r.valid)return{ok:!1,statusCode:401,error:r.error||"Signature verification failed"};let p=s.safeParse(e.payload);return p.success?{ok:!0,event:p.data}:{ok:!1,statusCode:400,error:`Invalid ${o} payload`}}var se={match:k("NEW_BANNER"),handler:async(e,n)=>{let s=_(n,e.key,R,"NEW_BANNER");if(!s.ok)return{success:!1,statusCode:s.statusCode,error:s.error};let o=s.event,r=await M(e,{id:o.id,version:o.version,sharing_id:o.sharing_id,file:o.file,format:o.format,template:o.template});return await ne(e,"abyssale.webhook.newBanner",{banner_id:o.id,template_id:o.template?.id,format_id:o.format?.id},"completed"),r?{success:!0,corsairEntityId:r,data:o}:{success:!0,data:o}}},oe={match:k("NEW_BANNER_BATCH"),handler:async(e,n)=>{let s=_(n,e.key,S,"NEW_BANNER_BATCH");if(!s.ok)return{success:!1,statusCode:s.statusCode,error:s.error};let o=s.event,r=[];for(let u=0;u<o.banners.length;u+=8){let b=o.banners.slice(u,u+8);r.push(...await Promise.all(b.map(y=>M(e,y))))}let p=r.find(Boolean);return await ne(e,"abyssale.webhook.newBannerBatch",{generation_request_id:o.generation_request_id,banner_count:o.banners.length,error_count:o.errors.length},"completed"),p?{success:!0,corsairEntityId:p,data:o}:{success:!0,data:o}}};import{logEventFromContext as Ye}from"corsair/core";var re={match:k("TEMPLATE_STATUS"),handler:async(e,n)=>{let s=_(n,e.key,T,"TEMPLATE_STATUS");if(!s.ok)return{success:!1,statusCode:s.statusCode,error:s.error};let o=s.event;return await Ye(e,"abyssale.webhook.templateStatus",{design_id:o.id,status:o.status},"completed"),{success:!0,data:o}}};import{logEventFromContext as Ve}from"corsair/core";var ae={match:k("NEW_EXPORT"),handler:async(e,n)=>{let s=_(n,e.key,B,"NEW_EXPORT");if(!s.ok)return{success:!1,statusCode:s.statusCode,error:s.error};let o=s.event;return await Ve(e,"abyssale.webhook.newExport",{export_id:o.export_id,archive_url:o.archive_url},"completed"),{success:!0,data:o}}};var z={created:se,batchCompleted:oe},ie={statusChanged:re},pe={completed:ae};var Je={projects:{create:G.createProject},designs:{list:P.getDesigns},fonts:{list:C.getFonts},auth:{test:I.testAuth},generation:{image:x.generateImage,batch:x.generateBatch,status:x.getGenerationRequest}},Ze={banners:{created:z.created,batchCompleted:z.batchCompleted},exports:{completed:pe.completed},designs:{statusChanged:ie.statusChanged}},Qe={"projects.create":{input:m.createProject,output:g.createProject},"designs.list":{input:m.getDesigns,output:g.getDesigns},"fonts.list":{input:m.getFonts,output:g.getFonts},"auth.test":{input:m.testAuth,output:g.testAuth},"generation.image":{input:m.generateImage,output:g.generateImage},"generation.batch":{input:m.generateBatch,output:g.generateBatch},"generation.status":{input:m.getGenerationRequest,output:g.getGenerationRequest}},et={"banners.created":{description:"A visual was generated or saved in Abyssale (NEW_BANNER event)",payload:R,response:R},"banners.batchCompleted":{description:"An asynchronous batch generation request completed (NEW_BANNER_BATCH event)",payload:S,response:S},"exports.completed":{description:"A workspace export archive finished processing (NEW_EXPORT event)",payload:B,response:B},"designs.statusChanged":{description:"A design's workflow status was updated (TEMPLATE_STATUS event)",payload:T,response:T}},tt="api_key",nt={"projects.create":{riskLevel:"write",description:"Create a new project in Abyssale"},"designs.list":{riskLevel:"read",description:"Get a list of designs in Abyssale"},"fonts.list":{riskLevel:"read",description:"Get a list of available fonts in Abyssale"},"auth.test":{riskLevel:"read",description:"Test Abyssale API key authentication validity"},"generation.image":{riskLevel:"write",description:"Synchronously generate a single image from an Abyssale design"},"generation.batch":{riskLevel:"write",description:"Start an asynchronous multi-format generation from an Abyssale design"},"generation.status":{riskLevel:"read",description:"Poll the status of an asynchronous generation request"}},st={api_key:{}};function un(e={}){let n={...e,authType:e.authType??tt};return{id:"abyssale",authConfig:st,schema:J,options:n,hooks:n.hooks,webhookHooks:n.webhookHooks,endpoints:Je,webhooks:Ze,endpointMeta:nt,endpointSchemas:Qe,webhookSchemas:et,pluginWebhookMatcher:te,pluginTenantWebhookMatcher:void 0,oauthWebhookTenantLinkResolver:void 0,errorHandlers:{...V,...n.errorHandlers},keyBuilder:async(s,o)=>{if(o==="webhook"&&n.webhookSecret)return n.webhookSecret;if(o==="webhook")return await s.keys.get_webhook_signature()??"";if(o==="endpoint"&&n.key)return n.key;if(o==="endpoint"&&s.authType==="api_key"){let r=await s.keys.get_api_key();if(!r)throw new ue("abyssale","api_key");return r}throw new ue("abyssale","api_key")}}}export{un as abyssale,st as abyssaleAuthConfig,Qe as abyssaleEndpointSchemas};
@@ -39,7 +39,63 @@ export declare const AbyssaleFont: z.ZodObject<{
39
39
  }>;
40
40
  available_weights: z.ZodArray<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
41
41
  }, z.core.$loose>;
42
+ /**
43
+ * A generated visual ("banner"), returned by synchronous generation, async
44
+ * batch generation and the `NEW_BANNER` / `NEW_BANNER_BATCH` webhook events.
45
+ *
46
+ * Sub-objects mirror the wire format verbatim; most fields are optional
47
+ * because batch items omit `version` / `sharing_id`, HTML5 (`zip`) output has
48
+ * no `cdn_url` and `printer_multipage` visuals have no `format.id`.
49
+ */
50
+ export declare const AbyssaleBannerFile: z.ZodObject<{
51
+ type: z.ZodOptional<z.ZodString>;
52
+ url: z.ZodOptional<z.ZodString>;
53
+ cdn_url: z.ZodOptional<z.ZodString>;
54
+ fallback_image_url: z.ZodOptional<z.ZodString>;
55
+ filename: z.ZodOptional<z.ZodString>;
56
+ }, z.core.$loose>;
57
+ export declare const AbyssaleBannerFormat: z.ZodObject<{
58
+ id: z.ZodOptional<z.ZodString>;
59
+ width: z.ZodOptional<z.ZodNumber>;
60
+ height: z.ZodOptional<z.ZodNumber>;
61
+ unit: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$loose>;
63
+ export declare const AbyssaleBannerTemplate: z.ZodObject<{
64
+ id: z.ZodOptional<z.ZodString>;
65
+ name: z.ZodOptional<z.ZodString>;
66
+ created_at: z.ZodOptional<z.ZodNumber>;
67
+ updated_at: z.ZodOptional<z.ZodNumber>;
68
+ }, z.core.$loose>;
69
+ export declare const AbyssaleBanner: z.ZodObject<{
70
+ id: z.ZodString;
71
+ version: z.ZodOptional<z.ZodNumber>;
72
+ sharing_id: z.ZodOptional<z.ZodString>;
73
+ file: z.ZodOptional<z.ZodObject<{
74
+ type: z.ZodOptional<z.ZodString>;
75
+ url: z.ZodOptional<z.ZodString>;
76
+ cdn_url: z.ZodOptional<z.ZodString>;
77
+ fallback_image_url: z.ZodOptional<z.ZodString>;
78
+ filename: z.ZodOptional<z.ZodString>;
79
+ }, z.core.$loose>>;
80
+ format: z.ZodOptional<z.ZodObject<{
81
+ id: z.ZodOptional<z.ZodString>;
82
+ width: z.ZodOptional<z.ZodNumber>;
83
+ height: z.ZodOptional<z.ZodNumber>;
84
+ unit: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$loose>>;
86
+ template: z.ZodOptional<z.ZodObject<{
87
+ id: z.ZodOptional<z.ZodString>;
88
+ name: z.ZodOptional<z.ZodString>;
89
+ created_at: z.ZodOptional<z.ZodNumber>;
90
+ updated_at: z.ZodOptional<z.ZodNumber>;
91
+ }, z.core.$loose>>;
92
+ project: z.ZodOptional<z.ZodObject<{
93
+ id: z.ZodOptional<z.ZodString>;
94
+ name: z.ZodOptional<z.ZodString>;
95
+ }, z.core.$loose>>;
96
+ }, z.core.$loose>;
42
97
  export type AbyssaleProject = z.infer<typeof AbyssaleProject>;
43
98
  export type AbyssaleDesign = z.infer<typeof AbyssaleDesign>;
44
99
  export type AbyssaleFont = z.infer<typeof AbyssaleFont>;
100
+ export type AbyssaleBanner = z.infer<typeof AbyssaleBanner>;
45
101
  //# sourceMappingURL=database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../schema/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AAEH,4CAA4C;AAC5C,eAAO,MAAM,eAAe;;;;;;iBASnB,CAAC;AAEV,sBAAsB;AACtB,eAAO,MAAM,cAAc;;;;;;;;;;;;;iBAelB,CAAC;AAEV,oBAAoB;AACpB,eAAO,MAAM,YAAY;;;;;;;;iBAOhB,CAAC;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../schema/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AAEH,4CAA4C;AAC5C,eAAO,MAAM,eAAe;;;;;;iBASnB,CAAC;AAEV,sBAAsB;AACtB,eAAO,MAAM,cAAc;;;;;;;;;;;;;iBAelB,CAAC;AAEV,oBAAoB;AACpB,eAAO,MAAM,YAAY;;;;;;;;iBAOhB,CAAC;AAEV;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB;;;;;;iBAQtB,CAAC;AAEV,eAAO,MAAM,oBAAoB;;;;;iBAOxB,CAAC;AAEV,eAAO,MAAM,sBAAsB;;;;;iBAO1B,CAAC;AAEV,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBlB,CAAC;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare const AbyssaleSchema: {
2
- readonly version: "1.0.0";
2
+ readonly version: "1.1.0";
3
3
  readonly entities: {
4
4
  readonly projects: import("zod").ZodObject<{
5
5
  id: import("zod").ZodString;
@@ -31,6 +31,34 @@ export declare const AbyssaleSchema: {
31
31
  }>;
32
32
  available_weights: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodString]>>;
33
33
  }, import("zod/v4/core").$loose>;
34
+ readonly banners: import("zod").ZodObject<{
35
+ id: import("zod").ZodString;
36
+ version: import("zod").ZodOptional<import("zod").ZodNumber>;
37
+ sharing_id: import("zod").ZodOptional<import("zod").ZodString>;
38
+ file: import("zod").ZodOptional<import("zod").ZodObject<{
39
+ type: import("zod").ZodOptional<import("zod").ZodString>;
40
+ url: import("zod").ZodOptional<import("zod").ZodString>;
41
+ cdn_url: import("zod").ZodOptional<import("zod").ZodString>;
42
+ fallback_image_url: import("zod").ZodOptional<import("zod").ZodString>;
43
+ filename: import("zod").ZodOptional<import("zod").ZodString>;
44
+ }, import("zod/v4/core").$loose>>;
45
+ format: import("zod").ZodOptional<import("zod").ZodObject<{
46
+ id: import("zod").ZodOptional<import("zod").ZodString>;
47
+ width: import("zod").ZodOptional<import("zod").ZodNumber>;
48
+ height: import("zod").ZodOptional<import("zod").ZodNumber>;
49
+ unit: import("zod").ZodOptional<import("zod").ZodString>;
50
+ }, import("zod/v4/core").$loose>>;
51
+ template: import("zod").ZodOptional<import("zod").ZodObject<{
52
+ id: import("zod").ZodOptional<import("zod").ZodString>;
53
+ name: import("zod").ZodOptional<import("zod").ZodString>;
54
+ created_at: import("zod").ZodOptional<import("zod").ZodNumber>;
55
+ updated_at: import("zod").ZodOptional<import("zod").ZodNumber>;
56
+ }, import("zod/v4/core").$loose>>;
57
+ project: import("zod").ZodOptional<import("zod").ZodObject<{
58
+ id: import("zod").ZodOptional<import("zod").ZodString>;
59
+ name: import("zod").ZodOptional<import("zod").ZodString>;
60
+ }, import("zod/v4/core").$loose>>;
61
+ }, import("zod/v4/core").$loose>;
34
62
  };
35
63
  };
36
64
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOjB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQjB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AbyssaleWebhooks } from '../index';
2
+ export declare const created: AbyssaleWebhooks['newBanner'];
3
+ export declare const batchCompleted: AbyssaleWebhooks['newBannerBatch'];
4
+ //# sourceMappingURL=banners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banners.d.ts","sourceRoot":"","sources":["../../webhooks/banners.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAQjD,eAAO,MAAM,OAAO,EAAE,gBAAgB,CAAC,WAAW,CA2CjD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,gBAAgB,CA2C7D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AbyssaleWebhooks } from '../index';
2
+ export declare const statusChanged: AbyssaleWebhooks['templateStatus'];
3
+ //# sourceMappingURL=designs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designs.d.ts","sourceRoot":"","sources":["../../webhooks/designs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAOjD,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAAC,gBAAgB,CAmC5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AbyssaleWebhooks } from '../index';
2
+ export declare const completed: AbyssaleWebhooks['newExport'];
3
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../webhooks/exports.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAOjD,eAAO,MAAM,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAmCnD,CAAC"}