@degallery/sdk 0.2.2 → 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/README.md +160 -6
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/assets.client.d.ts +3 -1
- package/dist/lib/assets.client.d.ts.map +1 -1
- package/dist/lib/client.d.ts +43 -14
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/gallery.client.d.ts +6 -2
- package/dist/lib/gallery.client.d.ts.map +1 -1
- package/dist/lib/http.client.d.ts +5 -2
- package/dist/lib/http.client.d.ts.map +1 -1
- package/dist/lib/types.d.ts +63 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,11 +1,165 @@
|
|
|
1
|
-
# sdk
|
|
1
|
+
# `@degallery/sdk`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Framework-neutral TypeScript client for the DeGallery API. Use it from a browser, server, worker, or non-React application when you need typed access to galleries, assets, uploads, links, and delivery events.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Product and developer links
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- [DeGallery landing page](https://degallery.dev)
|
|
8
|
+
- [Developer documentation](https://docs.degallery.dev)
|
|
9
|
+
- [Quickstart](https://docs.degallery.dev/docs/quickstart)
|
|
10
|
+
- [JavaScript installation](https://docs.degallery.dev/docs/javascript/installation)
|
|
11
|
+
- [JavaScript client guide](https://docs.degallery.dev/docs/javascript/get-started)
|
|
12
|
+
- [API and error reference](https://docs.degallery.dev/docs/javascript/errors)
|
|
13
|
+
- [Live demo](https://demo.degallery.dev)
|
|
14
|
+
- [Dashboard](https://app.degallery.dev)
|
|
15
|
+
- [Source repository](https://github.com/mmpotulo28/thegallery)
|
|
8
16
|
|
|
9
|
-
##
|
|
17
|
+
## Install
|
|
10
18
|
|
|
11
|
-
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @degallery/sdk
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The package is ESM-first and exports its public client and types from the package root:
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { GalleryClient, type Gallery } from '@degallery/sdk';
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Configure a client
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
import { GalleryClient } from '@degallery/sdk';
|
|
33
|
+
|
|
34
|
+
const client = new GalleryClient({
|
|
35
|
+
apiUrl: process.env.DEGALLERY_API_URL ?? 'https://api.degallery.dev',
|
|
36
|
+
apiKey: process.env.DEGALLERY_API_KEY,
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`apiUrl` defaults to `https://api.degallery.dev`. The client also accepts `mediaUrl`, `publishableKey`, `readToken`, and a custom `fetch` implementation. Use a custom `fetch` for a worker runtime, request tracing, or test isolation. Configure `mediaUrl` and call `getPublicGalleryManifest()` when public rendering should read the published manifest directly from the Cloudflare media Worker.
|
|
41
|
+
|
|
42
|
+
The public manifest includes the transformation presets allowed by the current plan. The SDK uses the `large` preset and responsive `srcSet` only when policy allows it; otherwise it serves the original. `downloadUrl` remains the original delivery URL. Private URLs are short-lived; use `@degallery/react` for automatic gallery refresh, or call `createDeliveryCapability()` again from a trusted integration when a private URL expires.
|
|
43
|
+
|
|
44
|
+
### Credential boundary
|
|
45
|
+
|
|
46
|
+
- Keep `apiKey` on a trusted server or worker.
|
|
47
|
+
- Browser reads should use a publishable key, a short-lived `readToken`, or a server-provided public gallery payload.
|
|
48
|
+
- Publishable keys are restricted to published, public galleries and public assets in their configured organization/environment. They cannot read analytics or private resources.
|
|
49
|
+
- Never expose `DEGALLERY_API_KEY` through `NEXT_PUBLIC_*` variables.
|
|
50
|
+
- Upload credentials and private gallery authorization belong on the server.
|
|
51
|
+
|
|
52
|
+
## Read a gallery
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
const gallery = await client.getGallery('gallery-id-or-slug');
|
|
56
|
+
|
|
57
|
+
console.log(gallery.name);
|
|
58
|
+
console.log(gallery.layout);
|
|
59
|
+
console.log(gallery.items[0]?.src);
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
const publicGallery = await new GalleryClient({
|
|
64
|
+
apiUrl: 'https://api.degallery.dev',
|
|
65
|
+
mediaUrl: 'https://media.degallery.dev',
|
|
66
|
+
}).getPublicGalleryManifest('gallery-id');
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For lower-level list/detail operations, use the `galleries` resource:
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
const result = await client.galleries.list({ limit: 20 });
|
|
73
|
+
const detail = await client.galleries.retrieve('summer-collection', {
|
|
74
|
+
includeAssets: true,
|
|
75
|
+
});
|
|
76
|
+
const page = await client.galleries.retrievePage('summer-collection', {
|
|
77
|
+
includeAssets: true,
|
|
78
|
+
limit: 9,
|
|
79
|
+
});
|
|
80
|
+
if (page.pagination.nextCursor) {
|
|
81
|
+
const nextPage = await client.galleries.retrievePage('summer-collection', {
|
|
82
|
+
cursor: page.pagination.nextCursor,
|
|
83
|
+
includeAssets: true,
|
|
84
|
+
limit: 9,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const shareLinks = await client.galleries.link('summer-collection');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Available gallery operations:
|
|
91
|
+
|
|
92
|
+
- `galleries.list(input?)`
|
|
93
|
+
- `galleries.retrieve(idOrSlug, input?)`
|
|
94
|
+
- `galleries.retrievePage(idOrSlug, input?)` (returns `{ gallery, pagination }`)
|
|
95
|
+
- `galleries.create(input)`
|
|
96
|
+
- `galleries.update(idOrSlug, input)`
|
|
97
|
+
- `galleries.attachAssets(idOrSlug, assetIds)`
|
|
98
|
+
- `galleries.link(idOrSlug)`
|
|
99
|
+
|
|
100
|
+
## Upload an image
|
|
101
|
+
|
|
102
|
+
Uploads use a short-lived intent. Create the intent, upload the exact bytes to the returned URL, then complete the asset:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
const intent = await client.createUpload({
|
|
106
|
+
alt: 'Studio portrait',
|
|
107
|
+
filename: 'studio.jpg',
|
|
108
|
+
contentType: 'image/jpeg',
|
|
109
|
+
galleryIds: ['gallery-id'],
|
|
110
|
+
size: imageBytes.byteLength,
|
|
111
|
+
visibility: 'public',
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
await fetch(intent.uploadUrl, {
|
|
115
|
+
method: intent.method ?? 'PUT',
|
|
116
|
+
headers: {
|
|
117
|
+
'Content-Type': intent.contentType ?? 'image/jpeg',
|
|
118
|
+
},
|
|
119
|
+
body: imageBytes,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// The intent durably retains alt text, visibility, and gallery attachments.
|
|
123
|
+
// Optional completion fields can override those values for this completion.
|
|
124
|
+
const asset = await client.completeUpload(intent.intentId);
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
The upload URL expires. Treat completion as part of the same workflow and retry safely from your server when a network request fails.
|
|
128
|
+
|
|
129
|
+
## Work with assets
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
const assets = await client.assets.list({
|
|
133
|
+
galleryId: 'gallery-id',
|
|
134
|
+
visibility: 'public',
|
|
135
|
+
limit: 50,
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const asset = await client.assets.retrieve('asset-id');
|
|
139
|
+
const updated = await client.assets.update('asset-id', {
|
|
140
|
+
alt: 'Updated accessible description',
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Track browser events
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
await client.track({
|
|
148
|
+
event: 'gallery_view',
|
|
149
|
+
galleryId: 'gallery-id',
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Supported event names are `gallery_view`, `image_view`, `interaction`, and `download`. The client adds `occurredAt` when it is not supplied.
|
|
154
|
+
|
|
155
|
+
The SDK batches browser events in memory (20 events or two seconds by default) and sends them to the Cloudflare analytics Worker at `https://analytics.degallery.dev/v1/events`. Configure `analyticsUrl`, `analyticsBatchSize`, or `analyticsFlushIntervalMs` through `GalleryClient`/`GalleryProvider`; call `flushEvents()` when an application is going into the background or during deterministic tests. The Worker validates and queues the batch, a queue consumer writes delivery-neutral facts to Analytics Engine, and a scheduled synchronizer persists accepted events and rollups to the API/Postgres control plane. Browser events are untrusted telemetry and are never the billing or quota authority.
|
|
156
|
+
|
|
157
|
+
The legacy API event route remains available for older clients during migration, but new SDK traffic should use the Worker path.
|
|
158
|
+
|
|
159
|
+
Published non-private galleries may send these browser events without an API key; the API resolves the gallery scope server-side and applies bounded payload, idempotency, and rate-limit controls. Authenticated integrations may still use a publishable key for scoped event ingestion.
|
|
160
|
+
|
|
161
|
+
## Public types
|
|
162
|
+
|
|
163
|
+
The package exports `GalleryClient`, `Gallery`, `GalleryDetail`, `GallerySummary`, `GalleryItem`, `GalleryLayout`, `GalleryInput`, `GalleryEvent`, `Asset`, upload inputs, and API response types.
|
|
164
|
+
|
|
165
|
+
Supported layouts are `Grid`, `Masonry`, `Justified`, `Single`, `Carousel`, and `Stack`.
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var g=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var w=(n,t)=>{for(var e in t)g(n,e,{get:t[e],enumerable:!0})},A=(n,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of f(t))!I.call(n,s)&&s!==e&&g(n,s,{get:()=>t[s],enumerable:!(i=b(t,s))||i.enumerable});return n};var G=n=>A(g({},"__esModule",{value:!0}),n);var C={};w(C,{GalleryApiError:()=>l,GalleryClient:()=>h,createPublicImageVariants:()=>m});module.exports=G(C);var c=class{constructor(t){this.httpClient=t}httpClient;async complete(t){let{idempotencyKey:e,...i}=t;return this.httpClient.post("/api/v1/assets",i,e?{"idempotency-key":e}:void 0)}async replace(t,e){let{idempotencyKey:i,...s}=e;return this.httpClient.post(`/api/v1/assets/${encodeURIComponent(t)}/replace`,s,i?{"idempotency-key":i}:void 0)}async list(t={}){return this.httpClient.getList("/api/v1/assets",t)}async retrieve(t){return this.httpClient.get(`/api/v1/assets/${encodeURIComponent(t)}`)}async update(t,e){return this.httpClient.patch(`/api/v1/assets/${encodeURIComponent(t)}`,e)}};var d=class{constructor(t){this.httpClient=t}httpClient;async attachAssets(t,e){return this.httpClient.post(`/api/v1/galleries/${encodeURIComponent(t)}/assets`,{assetIds:e})}async create(t){return this.httpClient.post("/api/v1/galleries",t)}async link(t){return this.httpClient.get(`/api/v1/galleries/${encodeURIComponent(t)}/link`)}async list(t={}){return this.httpClient.getList("/api/v1/galleries",t)}async retrieve(t,e={}){return this.httpClient.get(`/api/v1/galleries/${encodeURIComponent(t)}`,{...e,include:e.includeAssets?"assets":void 0,includeAssets:void 0})}async retrievePage(t,e={}){let i=await this.httpClient.getWithMeta(`/api/v1/galleries/${encodeURIComponent(t)}`,{...e,include:e.includeAssets?"assets":void 0,includeAssets:void 0}),s=i.meta?.pagination;return{gallery:i.data,pagination:s??{cursor:e.cursor??null,limit:e.limit??i.data.items?.length??0,nextCursor:null}}}async update(t,e){return this.httpClient.patch(`/api/v1/galleries/${encodeURIComponent(t)}`,e)}};var l=class extends Error{code;requestId;status;constructor(t){super(t.message),this.name=t.code,this.code=t.code,this.requestId=t.requestId,this.status=t.status}};var p=class{constructor(t){this.options=t}options;async get(t,e){return this.requestData(t,{method:"GET"},e)}async getWithMeta(t,e){let i=await this.rawRequest(t,{method:"GET"},e);if(!i.ok)throw await this.toError(i);return await i.json()}async getList(t,e){return this.requestList(t,{method:"GET"},e)}async patch(t,e){return this.requestData(t,{body:JSON.stringify(e),method:"PATCH"})}async post(t,e,i){return this.requestData(t,{body:JSON.stringify(e),headers:i,method:"POST"})}async requestData(t,e={},i){let s=await this.rawRequest(t,e,i);if(!s.ok)throw await this.toError(s);return(await s.json()).data}async requestList(t,e={},i){let s=await this.rawRequest(t,e,i);if(!s.ok)throw await this.toError(s);return await s.json()}async rawRequest(t,e={},i){let s=this.options.fetch??fetch,r=new URL(t,this.options.apiUrl),o=T();for(let[a,u]of Object.entries(i??{}))u!=null&&r.searchParams.set(a,String(u));return s(r,{...e,headers:{"content-type":"application/json",...this.authToken?{authorization:`Bearer ${this.authToken}`}:{},"x-request-id":o,...e.headers}})}get authToken(){return this.options.apiKey??this.options.readToken??this.options.publishableKey}async toError(t){let e=await t.json().catch(()=>{}),i=e?.error?.message??`The Gallery API request failed: ${t.status}`;return new l({code:e?.error?.code??"GalleryApiError",message:i,requestId:e?.error?.requestId??t.headers.get("x-request-id")??void 0,status:t.status})}};function T(){if(globalThis.crypto?.randomUUID)return globalThis.crypto.randomUUID();if(globalThis.crypto?.getRandomValues)return[...globalThis.crypto.getRandomValues(new Uint8Array(16))].map(t=>t.toString(16).padStart(2,"0")).join("");throw new Error("Secure random number generation is unavailable.")}var h=class n{static DEFAULT_OPTIONS={apiUrl:"https://api.degallery.dev",fetch};galleries;assets;httpClient;mediaHttpClient;mediaBase;analyticsHttpClient;analyticsBatchSize;analyticsFlushIntervalMs;analyticsQueue=[];analyticsFlushTimer;analyticsFlushPromise;constructor(t={}){let e={...n.DEFAULT_OPTIONS,...t},i=new p(e);this.httpClient=i,this.mediaBase=e.mediaUrl?.replace(/\/$/,""),this.mediaHttpClient=this.mediaBase?new p({apiUrl:this.mediaBase,fetch:e.fetch}):void 0;let s=(e.analyticsUrl??"https://analytics.degallery.dev").replace(/\/$/,"");this.analyticsHttpClient=new p({apiUrl:s,fetch:e.fetch}),this.analyticsBatchSize=Math.min(Math.max(Math.floor(e.analyticsBatchSize??20),1),100),this.analyticsFlushIntervalMs=Math.min(Math.max(Math.floor(e.analyticsFlushIntervalMs??2e3),250),6e4),this.galleries=new d(i),this.assets=new c(i)}async createUpload(t){let{idempotencyKey:e,...i}=t,s=await this.httpClient.post("/api/v1/uploads",i,e?{"idempotency-key":e}:void 0);return{...s.upload,asset:s.asset,contentType:s.upload.contentType,expiresAt:s.upload.expiresAt,intentId:s.upload.intentId,uploadUrl:s.upload.uploadUrl}}async completeUpload(t,e={}){return this.assets.complete({uploadIntentId:t,...e})}async createDeliveryCapability(t,e="original"){return this.httpClient.post(`/api/v1/assets/${encodeURIComponent(t)}/capability`,{preset:e})}async getPublicGalleryManifest(t){if(!this.mediaHttpClient)throw new l({code:"MEDIA_URL_REQUIRED",message:"mediaUrl is required to retrieve an edge gallery manifest.",status:500});let e=this.mediaBase;if(!e)throw new Error("Media base is unavailable.");let i=await this.mediaHttpClient.get(`/v1/public/galleries/${encodeURIComponent(t)}/manifest`,{limit:500});return{access:"public",description:i.description,id:i.galleryId,items:i.items.map(s=>{let r=`${e}/v1/public/${s.assetId}/${s.assetRevision}`,o=m(r,i.allowedPresets);return{alt:s.alt??"Gallery image",downloadUrl:r,id:s.assetId,position:s.position,revision:s.assetRevision,src:o.src,srcSet:o.srcSet,thumbnailSrc:o.thumbnailSrc,visibility:"public"}}),layout:i.layout,name:i.title,slug:i.slug}}async getPublicGalleryManifestPage(t,e={}){if(!this.mediaHttpClient)throw new l({code:"MEDIA_URL_REQUIRED",message:"mediaUrl is required to retrieve an edge gallery manifest.",status:500});let i=await this.mediaHttpClient.getWithMeta(`/v1/public/galleries/${encodeURIComponent(t)}/manifest`,e),s=i.data,r=this.mediaBase;if(!r)throw new Error("Media base is unavailable.");let o=i.meta?.pagination;return{gallery:{access:"public",description:s.description,id:s.galleryId,items:s.items.map(a=>{let u=`${r}/v1/public/${a.assetId}/${a.assetRevision}`,y=m(u,s.allowedPresets);return{alt:a.alt??"Gallery image",downloadUrl:u,id:a.assetId,position:a.position,revision:a.assetRevision,src:y.src,srcSet:y.srcSet,thumbnailSrc:y.thumbnailSrc,visibility:"public"}}),layout:s.layout,name:s.title,slug:s.slug},pagination:o??{cursor:e.cursor??null,limit:e.limit??s.items.length,nextCursor:null}}}async getGallery(t){let e=await this.galleries.retrieve(t,{includeAssets:!0});return{access:e.visibility==="public"?"public":"private",description:e.description,id:e.id,items:e.items?.map(i=>({alt:i.asset.alt,downloadUrl:i.asset.delivery.downloadUrl,id:i.asset.id,revision:i.asset.revision,src:i.asset.delivery.src,deliveryExpiresAt:i.asset.delivery.expiresAt,visibility:i.asset.visibility}))??[],layout:e.layout,name:e.name,slug:e.slug}}track(t){let e={...t,eventId:t.eventId??v(),occurredAt:t.occurredAt??new Date().toISOString()};return new Promise((i,s)=>{if(this.analyticsQueue.push({event:e,reject:s,resolve:i}),this.analyticsQueue.length>=this.analyticsBatchSize){this.flushEvents().catch(()=>{});return}this.scheduleAnalyticsFlush()})}async flushEvents(){if(this.analyticsFlushPromise)return this.analyticsFlushPromise;if(!this.analyticsQueue.length)return;this.analyticsFlushTimer!==void 0&&(clearTimeout(this.analyticsFlushTimer),this.analyticsFlushTimer=void 0);let t=this.analyticsQueue.splice(0,this.analyticsBatchSize);return this.analyticsFlushPromise=this.sendAnalyticsBatch(t).then(()=>{for(let e of t)e.resolve()}).catch(e=>{for(let i of t)i.reject(e);throw e}).finally(()=>{this.analyticsFlushPromise=void 0,this.analyticsQueue.length&&this.scheduleAnalyticsFlush()}),this.analyticsFlushPromise}scheduleAnalyticsFlush(){this.analyticsFlushTimer===void 0&&(this.analyticsFlushTimer=setTimeout(()=>{this.analyticsFlushTimer=void 0,this.flushEvents().catch(()=>{})},this.analyticsFlushIntervalMs))}async sendAnalyticsBatch(t){let e=await this.analyticsHttpClient.rawRequest("/v1/events",{body:JSON.stringify({events:t.map(i=>i.event)}),headers:{"x-request-id":v()},keepalive:!0,method:"POST"});if(!e.ok)throw new Error(`Event ingestion failed: ${e.status}`)}};function m(n,t=["original"]){try{let e=new URL(n);if(!/^\/v1\/public\/[0-9a-f-]+\/\d+$/i.test(e.pathname))return{src:n,srcSet:void 0,thumbnailSrc:void 0};if(!t.includes("large"))return{src:n,srcSet:void 0,thumbnailSrc:void 0};let i=new URL(e);i.searchParams.set("preset","large");let s=new URL(e);return t.includes("thumbnail")&&s.searchParams.set("preset","thumbnail"),{src:i.toString(),srcSet:t.includes("thumbnail")?`${s.toString()} 320w, ${i.toString()} 1600w`:`${i.toString()} 1600w`,thumbnailSrc:t.includes("thumbnail")?s.toString():void 0}}catch{return{src:n,srcSet:void 0,thumbnailSrc:void 0}}}function v(){if(globalThis.crypto?.randomUUID)return globalThis.crypto.randomUUID();let n=new Uint8Array(16);if(globalThis.crypto?.getRandomValues?.(n),!n.some(Boolean))throw new Error("Secure event ID generation is unavailable.");n[6]=n[6]&15|64,n[8]=n[8]&63|128;let t=Array.from(n,e=>e.toString(16).padStart(2,"0"));return`${t.slice(0,4).join("")}-${t.slice(4,6).join("")}-${t.slice(6,8).join("")}-${t.slice(8,10).join("")}-${t.slice(10).join("")}`}0&&(module.exports={GalleryApiError,GalleryClient,createPublicImageVariants});
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var c=class{constructor(t){this.httpClient=t}httpClient;async complete(t){let{idempotencyKey:e,...i}=t;return this.httpClient.post("/api/v1/assets",i,e?{"idempotency-key":e}:void 0)}async replace(t,e){let{idempotencyKey:i,...s}=e;return this.httpClient.post(`/api/v1/assets/${encodeURIComponent(t)}/replace`,s,i?{"idempotency-key":i}:void 0)}async list(t={}){return this.httpClient.getList("/api/v1/assets",t)}async retrieve(t){return this.httpClient.get(`/api/v1/assets/${encodeURIComponent(t)}`)}async update(t,e){return this.httpClient.patch(`/api/v1/assets/${encodeURIComponent(t)}`,e)}};var d=class{constructor(t){this.httpClient=t}httpClient;async attachAssets(t,e){return this.httpClient.post(`/api/v1/galleries/${encodeURIComponent(t)}/assets`,{assetIds:e})}async create(t){return this.httpClient.post("/api/v1/galleries",t)}async link(t){return this.httpClient.get(`/api/v1/galleries/${encodeURIComponent(t)}/link`)}async list(t={}){return this.httpClient.getList("/api/v1/galleries",t)}async retrieve(t,e={}){return this.httpClient.get(`/api/v1/galleries/${encodeURIComponent(t)}`,{...e,include:e.includeAssets?"assets":void 0,includeAssets:void 0})}async retrievePage(t,e={}){let i=await this.httpClient.getWithMeta(`/api/v1/galleries/${encodeURIComponent(t)}`,{...e,include:e.includeAssets?"assets":void 0,includeAssets:void 0}),s=i.meta?.pagination;return{gallery:i.data,pagination:s??{cursor:e.cursor??null,limit:e.limit??i.data.items?.length??0,nextCursor:null}}}async update(t,e){return this.httpClient.patch(`/api/v1/galleries/${encodeURIComponent(t)}`,e)}};var o=class extends Error{code;requestId;status;constructor(t){super(t.message),this.name=t.code,this.code=t.code,this.requestId=t.requestId,this.status=t.status}};var p=class{constructor(t){this.options=t}options;async get(t,e){return this.requestData(t,{method:"GET"},e)}async getWithMeta(t,e){let i=await this.rawRequest(t,{method:"GET"},e);if(!i.ok)throw await this.toError(i);return await i.json()}async getList(t,e){return this.requestList(t,{method:"GET"},e)}async patch(t,e){return this.requestData(t,{body:JSON.stringify(e),method:"PATCH"})}async post(t,e,i){return this.requestData(t,{body:JSON.stringify(e),headers:i,method:"POST"})}async requestData(t,e={},i){let s=await this.rawRequest(t,e,i);if(!s.ok)throw await this.toError(s);return(await s.json()).data}async requestList(t,e={},i){let s=await this.rawRequest(t,e,i);if(!s.ok)throw await this.toError(s);return await s.json()}async rawRequest(t,e={},i){let s=this.options.fetch??fetch,r=new URL(t,this.options.apiUrl),l=v();for(let[a,u]of Object.entries(i??{}))u!=null&&r.searchParams.set(a,String(u));return s(r,{...e,headers:{"content-type":"application/json",...this.authToken?{authorization:`Bearer ${this.authToken}`}:{},"x-request-id":l,...e.headers}})}get authToken(){return this.options.apiKey??this.options.readToken??this.options.publishableKey}async toError(t){let e=await t.json().catch(()=>{}),i=e?.error?.message??`The Gallery API request failed: ${t.status}`;return new o({code:e?.error?.code??"GalleryApiError",message:i,requestId:e?.error?.requestId??t.headers.get("x-request-id")??void 0,status:t.status})}};function v(){if(globalThis.crypto?.randomUUID)return globalThis.crypto.randomUUID();if(globalThis.crypto?.getRandomValues)return[...globalThis.crypto.getRandomValues(new Uint8Array(16))].map(t=>t.toString(16).padStart(2,"0")).join("");throw new Error("Secure random number generation is unavailable.")}var g=class n{static DEFAULT_OPTIONS={apiUrl:"https://api.degallery.dev",fetch};galleries;assets;httpClient;mediaHttpClient;mediaBase;analyticsHttpClient;analyticsBatchSize;analyticsFlushIntervalMs;analyticsQueue=[];analyticsFlushTimer;analyticsFlushPromise;constructor(t={}){let e={...n.DEFAULT_OPTIONS,...t},i=new p(e);this.httpClient=i,this.mediaBase=e.mediaUrl?.replace(/\/$/,""),this.mediaHttpClient=this.mediaBase?new p({apiUrl:this.mediaBase,fetch:e.fetch}):void 0;let s=(e.analyticsUrl??"https://analytics.degallery.dev").replace(/\/$/,"");this.analyticsHttpClient=new p({apiUrl:s,fetch:e.fetch}),this.analyticsBatchSize=Math.min(Math.max(Math.floor(e.analyticsBatchSize??20),1),100),this.analyticsFlushIntervalMs=Math.min(Math.max(Math.floor(e.analyticsFlushIntervalMs??2e3),250),6e4),this.galleries=new d(i),this.assets=new c(i)}async createUpload(t){let{idempotencyKey:e,...i}=t,s=await this.httpClient.post("/api/v1/uploads",i,e?{"idempotency-key":e}:void 0);return{...s.upload,asset:s.asset,contentType:s.upload.contentType,expiresAt:s.upload.expiresAt,intentId:s.upload.intentId,uploadUrl:s.upload.uploadUrl}}async completeUpload(t,e={}){return this.assets.complete({uploadIntentId:t,...e})}async createDeliveryCapability(t,e="original"){return this.httpClient.post(`/api/v1/assets/${encodeURIComponent(t)}/capability`,{preset:e})}async getPublicGalleryManifest(t){if(!this.mediaHttpClient)throw new o({code:"MEDIA_URL_REQUIRED",message:"mediaUrl is required to retrieve an edge gallery manifest.",status:500});let e=this.mediaBase;if(!e)throw new Error("Media base is unavailable.");let i=await this.mediaHttpClient.get(`/v1/public/galleries/${encodeURIComponent(t)}/manifest`,{limit:500});return{access:"public",description:i.description,id:i.galleryId,items:i.items.map(s=>{let r=`${e}/v1/public/${s.assetId}/${s.assetRevision}`,l=h(r,i.allowedPresets);return{alt:s.alt??"Gallery image",downloadUrl:r,id:s.assetId,position:s.position,revision:s.assetRevision,src:l.src,srcSet:l.srcSet,thumbnailSrc:l.thumbnailSrc,visibility:"public"}}),layout:i.layout,name:i.title,slug:i.slug}}async getPublicGalleryManifestPage(t,e={}){if(!this.mediaHttpClient)throw new o({code:"MEDIA_URL_REQUIRED",message:"mediaUrl is required to retrieve an edge gallery manifest.",status:500});let i=await this.mediaHttpClient.getWithMeta(`/v1/public/galleries/${encodeURIComponent(t)}/manifest`,e),s=i.data,r=this.mediaBase;if(!r)throw new Error("Media base is unavailable.");let l=i.meta?.pagination;return{gallery:{access:"public",description:s.description,id:s.galleryId,items:s.items.map(a=>{let u=`${r}/v1/public/${a.assetId}/${a.assetRevision}`,y=h(u,s.allowedPresets);return{alt:a.alt??"Gallery image",downloadUrl:u,id:a.assetId,position:a.position,revision:a.assetRevision,src:y.src,srcSet:y.srcSet,thumbnailSrc:y.thumbnailSrc,visibility:"public"}}),layout:s.layout,name:s.title,slug:s.slug},pagination:l??{cursor:e.cursor??null,limit:e.limit??s.items.length,nextCursor:null}}}async getGallery(t){let e=await this.galleries.retrieve(t,{includeAssets:!0});return{access:e.visibility==="public"?"public":"private",description:e.description,id:e.id,items:e.items?.map(i=>({alt:i.asset.alt,downloadUrl:i.asset.delivery.downloadUrl,id:i.asset.id,revision:i.asset.revision,src:i.asset.delivery.src,deliveryExpiresAt:i.asset.delivery.expiresAt,visibility:i.asset.visibility}))??[],layout:e.layout,name:e.name,slug:e.slug}}track(t){let e={...t,eventId:t.eventId??m(),occurredAt:t.occurredAt??new Date().toISOString()};return new Promise((i,s)=>{if(this.analyticsQueue.push({event:e,reject:s,resolve:i}),this.analyticsQueue.length>=this.analyticsBatchSize){this.flushEvents().catch(()=>{});return}this.scheduleAnalyticsFlush()})}async flushEvents(){if(this.analyticsFlushPromise)return this.analyticsFlushPromise;if(!this.analyticsQueue.length)return;this.analyticsFlushTimer!==void 0&&(clearTimeout(this.analyticsFlushTimer),this.analyticsFlushTimer=void 0);let t=this.analyticsQueue.splice(0,this.analyticsBatchSize);return this.analyticsFlushPromise=this.sendAnalyticsBatch(t).then(()=>{for(let e of t)e.resolve()}).catch(e=>{for(let i of t)i.reject(e);throw e}).finally(()=>{this.analyticsFlushPromise=void 0,this.analyticsQueue.length&&this.scheduleAnalyticsFlush()}),this.analyticsFlushPromise}scheduleAnalyticsFlush(){this.analyticsFlushTimer===void 0&&(this.analyticsFlushTimer=setTimeout(()=>{this.analyticsFlushTimer=void 0,this.flushEvents().catch(()=>{})},this.analyticsFlushIntervalMs))}async sendAnalyticsBatch(t){let e=await this.analyticsHttpClient.rawRequest("/v1/events",{body:JSON.stringify({events:t.map(i=>i.event)}),headers:{"x-request-id":m()},keepalive:!0,method:"POST"});if(!e.ok)throw new Error(`Event ingestion failed: ${e.status}`)}};function h(n,t=["original"]){try{let e=new URL(n);if(!/^\/v1\/public\/[0-9a-f-]+\/\d+$/i.test(e.pathname))return{src:n,srcSet:void 0,thumbnailSrc:void 0};if(!t.includes("large"))return{src:n,srcSet:void 0,thumbnailSrc:void 0};let i=new URL(e);i.searchParams.set("preset","large");let s=new URL(e);return t.includes("thumbnail")&&s.searchParams.set("preset","thumbnail"),{src:i.toString(),srcSet:t.includes("thumbnail")?`${s.toString()} 320w, ${i.toString()} 1600w`:`${i.toString()} 1600w`,thumbnailSrc:t.includes("thumbnail")?s.toString():void 0}}catch{return{src:n,srcSet:void 0,thumbnailSrc:void 0}}}function m(){if(globalThis.crypto?.randomUUID)return globalThis.crypto.randomUUID();let n=new Uint8Array(16);if(globalThis.crypto?.getRandomValues?.(n),!n.some(Boolean))throw new Error("Secure event ID generation is unavailable.");n[6]=n[6]&15|64,n[8]=n[8]&63|128;let t=Array.from(n,e=>e.toString(16).padStart(2,"0"));return`${t.slice(0,4).join("")}-${t.slice(4,6).join("")}-${t.slice(6,8).join("")}-${t.slice(8,10).join("")}-${t.slice(10).join("")}`}export{o as GalleryApiError,g as GalleryClient,h as createPublicImageVariants};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpClient } from './http.client.js';
|
|
2
|
-
import {
|
|
2
|
+
import { Asset, CompleteAssetInput, ListAssetsInput, ReplaceAssetInput } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Provides operations for creating, listing, retrieving, and updating assets.
|
|
5
5
|
*/
|
|
@@ -13,6 +13,8 @@ export declare class Assets {
|
|
|
13
13
|
* @returns The newly created asset.
|
|
14
14
|
*/
|
|
15
15
|
complete(input: CompleteAssetInput): Promise<Asset>;
|
|
16
|
+
/** Replaces an existing asset's original while preserving its ID and gallery references. */
|
|
17
|
+
replace(assetId: string, input: ReplaceAssetInput): Promise<Asset>;
|
|
16
18
|
/**
|
|
17
19
|
* Lists assets matching the supplied filters.
|
|
18
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.client.d.ts","sourceRoot":"","sources":["../../src/lib/assets.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"assets.client.d.ts","sourceRoot":"","sources":["../../src/lib/assets.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,KAAK,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEnD;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAAE,kBAAkB;IASxC,4FAA4F;IACtF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB;IASvD;;;;;OAKG;IACG,IAAI,CAAC,KAAK,GAAE,eAAoB;IAItC;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM;IAM9B;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC;CAMjE"}
|
package/dist/lib/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Assets } from './assets.client.js';
|
|
2
2
|
import { Gallery } from './gallery.client.js';
|
|
3
|
-
import type { ClientOptions, GalleryEvent, Gallery as GalleryType, UploadImageInput, UploadIntent } from './types.js';
|
|
3
|
+
import type { ClientOptions, DeliveryCapability, GalleryEvent, GalleryPage, Gallery as GalleryType, UploadImageInput, UploadIntent } from './types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Client for interacting with the Gallery API.
|
|
6
6
|
*
|
|
@@ -17,13 +17,21 @@ import type { ClientOptions, GalleryEvent, Gallery as GalleryType, UploadImageIn
|
|
|
17
17
|
* been uploaded.
|
|
18
18
|
* @method getGallery Retrieves a gallery and maps it to the client-facing
|
|
19
19
|
* gallery shape.
|
|
20
|
-
* @method track
|
|
20
|
+
* @method track Queues an analytics event for batched Worker ingestion.
|
|
21
21
|
*/
|
|
22
22
|
export declare class GalleryClient {
|
|
23
23
|
private static readonly DEFAULT_OPTIONS;
|
|
24
24
|
readonly galleries: Gallery;
|
|
25
25
|
readonly assets: Assets;
|
|
26
26
|
private readonly httpClient;
|
|
27
|
+
private readonly mediaHttpClient?;
|
|
28
|
+
private readonly mediaBase?;
|
|
29
|
+
private readonly analyticsHttpClient;
|
|
30
|
+
private readonly analyticsBatchSize;
|
|
31
|
+
private readonly analyticsFlushIntervalMs;
|
|
32
|
+
private analyticsQueue;
|
|
33
|
+
private analyticsFlushTimer;
|
|
34
|
+
private analyticsFlushPromise;
|
|
27
35
|
/**
|
|
28
36
|
* Creates a client configured to communicate with the Gallery API.
|
|
29
37
|
*
|
|
@@ -44,7 +52,25 @@ export declare class GalleryClient {
|
|
|
44
52
|
* @param intentId The ID of the upload intent to complete.
|
|
45
53
|
* @returns The completed asset returned by the assets API.
|
|
46
54
|
*/
|
|
47
|
-
completeUpload(intentId: string
|
|
55
|
+
completeUpload(intentId: string, input?: {
|
|
56
|
+
alt?: string;
|
|
57
|
+
galleryIds?: string[];
|
|
58
|
+
title?: string;
|
|
59
|
+
visibility?: 'private' | 'public';
|
|
60
|
+
}): Promise<import("./types.js").Asset>;
|
|
61
|
+
/** Issues a short-lived private delivery URL for a scoped asset. */
|
|
62
|
+
createDeliveryCapability(assetId: string, preset?: 'original' | 'thumbnail' | 'large'): Promise<DeliveryCapability>;
|
|
63
|
+
/**
|
|
64
|
+
* Retrieves a public gallery manifest from the Cloudflare media plane.
|
|
65
|
+
* This is additive; callers that do not configure `mediaUrl` continue to
|
|
66
|
+
* use the canonical API-backed `getGallery` method.
|
|
67
|
+
*/
|
|
68
|
+
getPublicGalleryManifest(id: string): Promise<GalleryType>;
|
|
69
|
+
/** Retrieves one cursor-paginated page from the public edge manifest. */
|
|
70
|
+
getPublicGalleryManifestPage(id: string, input?: {
|
|
71
|
+
cursor?: string;
|
|
72
|
+
limit?: number;
|
|
73
|
+
}): Promise<GalleryPage<GalleryType>>;
|
|
48
74
|
/**
|
|
49
75
|
* Retrieves a gallery and maps it to the client-facing gallery shape.
|
|
50
76
|
*
|
|
@@ -55,17 +81,20 @@ export declare class GalleryClient {
|
|
|
55
81
|
* @returns The gallery metadata and its available items.
|
|
56
82
|
*/
|
|
57
83
|
getGallery(id: string): Promise<GalleryType>;
|
|
58
|
-
/**
|
|
59
|
-
* Sends an analytics event to the Gallery API.
|
|
60
|
-
*
|
|
61
|
-
* If the event does not provide an occurrence time, the current time is
|
|
62
|
-
* added automatically. The request is sent with `keepalive` enabled so it
|
|
63
|
-
* can complete while a page is unloading.
|
|
64
|
-
*
|
|
65
|
-
* @param event The gallery event to record.
|
|
66
|
-
* @returns A promise that resolves when the event is accepted.
|
|
67
|
-
* @throws Error when the API does not return a successful response.
|
|
68
|
-
*/
|
|
84
|
+
/** Queues an event for batched Cloudflare Worker ingestion. */
|
|
69
85
|
track(event: GalleryEvent): Promise<void>;
|
|
86
|
+
/** Flushes the current browser analytics batch immediately. */
|
|
87
|
+
flushEvents(): Promise<void>;
|
|
88
|
+
private scheduleAnalyticsFlush;
|
|
89
|
+
private sendAnalyticsBatch;
|
|
70
90
|
}
|
|
91
|
+
export declare function createPublicImageVariants(source: string, allowedPresets?: readonly string[]): {
|
|
92
|
+
src: string;
|
|
93
|
+
srcSet: undefined;
|
|
94
|
+
thumbnailSrc: undefined;
|
|
95
|
+
} | {
|
|
96
|
+
src: string;
|
|
97
|
+
srcSet: string;
|
|
98
|
+
thumbnailSrc: string | undefined;
|
|
99
|
+
};
|
|
71
100
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,YAAY,EAEZ,WAAW,EACX,OAAO,IAAI,WAAW,EACtB,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAGrC;IAGF,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,cAAc,CAId;IACR,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,qBAAqB,CAA4B;IAEzD;;;;;OAKG;gBACS,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM;IAmChD;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAqBlE;;;;;OAKG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;KAC9B;IAKR,oEAAoE;IAC9D,wBAAwB,CAC5B,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,UAAU,GAAG,WAAW,GAAG,OAAoB,GACtD,OAAO,CAAC,kBAAkB,CAAC;IAO9B;;;;OAIG;IACG,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAyChE,yEAAyE;IACnE,4BAA4B,CAChC,EAAE,EAAE,MAAM,EACV,KAAK,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9C,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAoDpC;;;;;;;;OAQG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBlD,+DAA+D;IAC/D,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzC,+DAA+D;IACzD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBlC,OAAO,CAAC,sBAAsB;YAQhB,kBAAkB;CAYjC;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAS,MAAM,EAAiB;;;;;;;;EAyBjD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpClient } from './http.client.js';
|
|
2
|
-
import { GalleryDetail, GalleryInput, GalleryLinkPayload, GallerySummary, ListInput } from './types.js';
|
|
2
|
+
import { GalleryDetail, GalleryInput, GalleryLinkPayload, GalleryPage, GallerySummary, ListInput } from './types.js';
|
|
3
3
|
export declare class Gallery {
|
|
4
4
|
private readonly httpClient;
|
|
5
5
|
constructor(httpClient: HttpClient);
|
|
@@ -25,11 +25,15 @@ export declare class Gallery {
|
|
|
25
25
|
retrieve(galleryIdOrSlug: string, input?: ListInput & {
|
|
26
26
|
includeAssets?: boolean;
|
|
27
27
|
}): Promise<GalleryDetail>;
|
|
28
|
+
/** Retrieves a gallery page and preserves the API pagination metadata. */
|
|
29
|
+
retrievePage(galleryIdOrSlug: string, input?: ListInput & {
|
|
30
|
+
includeAssets?: boolean;
|
|
31
|
+
}): Promise<GalleryPage>;
|
|
28
32
|
/**
|
|
29
33
|
* Updates a gallery.
|
|
30
34
|
* @param galleryIdOrSlug Gallery ID or slug.
|
|
31
35
|
* @param input Fields to update.
|
|
32
36
|
*/
|
|
33
|
-
update(galleryIdOrSlug: string, input: Partial<GalleryInput>): Promise<
|
|
37
|
+
update(galleryIdOrSlug: string, input: Partial<GalleryInput>): Promise<GallerySummary>;
|
|
34
38
|
}
|
|
35
39
|
//# sourceMappingURL=gallery.client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gallery.client.d.ts","sourceRoot":"","sources":["../../src/lib/gallery.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEnD;;;;OAIG;IACG,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAO9D,yBAAyB;IACnB,MAAM,CAAC,KAAK,EAAE,YAAY;IAIhC;;OAEG;IACG,IAAI,CAAC,eAAe,EAAE,MAAM;IAMlC,4EAA4E;IACtE,IAAI,CAAC,KAAK,GAAE,SAAc;IAIhC;;;;OAIG;IACG,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,KAAK,GAAE,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO;IAYrD;;;;OAIG;IACG,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC;CAMnE"}
|
|
1
|
+
{"version":3,"file":"gallery.client.d.ts","sourceRoot":"","sources":["../../src/lib/gallery.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEnD;;;;OAIG;IACG,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;IAO9D,yBAAyB;IACnB,MAAM,CAAC,KAAK,EAAE,YAAY;IAIhC;;OAEG;IACG,IAAI,CAAC,eAAe,EAAE,MAAM;IAMlC,4EAA4E;IACtE,IAAI,CAAC,KAAK,GAAE,SAAc;IAIhC;;;;OAIG;IACG,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,KAAK,GAAE,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO;IAYrD,0EAA0E;IACpE,YAAY,CAChB,eAAe,EAAE,MAAM,EACvB,KAAK,GAAE,SAAS,GAAG;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO,GAClD,OAAO,CAAC,WAAW,CAAC;IAsBvB;;;;OAIG;IACG,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC;CAMnE"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { ApiListResponse, ClientOptions } from './types.js';
|
|
1
|
+
import { ApiListResponse, ApiResponse, ClientOptions } from './types.js';
|
|
2
2
|
export declare class HttpClient {
|
|
3
3
|
private readonly options;
|
|
4
4
|
constructor(options: ClientOptions);
|
|
5
5
|
get<T>(path: string, query?: Record<string, unknown>): Promise<T>;
|
|
6
|
+
getWithMeta<T>(path: string, query?: Record<string, unknown>): Promise<ApiResponse<T> & {
|
|
7
|
+
meta?: Record<string, unknown>;
|
|
8
|
+
}>;
|
|
6
9
|
getList<T>(path: string, query?: Record<string, unknown>): Promise<ApiListResponse<T>>;
|
|
7
10
|
patch<T>(path: string, body: unknown): Promise<T>;
|
|
8
|
-
post<T>(path: string, body: unknown): Promise<T>;
|
|
11
|
+
post<T>(path: string, body: unknown, headers?: Record<string, string>): Promise<T>;
|
|
9
12
|
private requestData;
|
|
10
13
|
private requestList;
|
|
11
14
|
rawRequest(path: string, init?: RequestInit, query?: Record<string, unknown>): Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.client.d.ts","sourceRoot":"","sources":["../../src/lib/http.client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"http.client.d.ts","sourceRoot":"","sources":["../../src/lib/http.client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,WAAW,EACX,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa;IAE7C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpD,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;eAIvD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;IAI5B,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIxD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;IAOpC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;YAQ7D,WAAW;YAUX,WAAW;IAUnB,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAgB,EACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAwBjC,OAAO,KAAK,SAAS,GAMpB;YAEa,OAAO;CAiBtB"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type AccessMode = 'public' | 'private';
|
|
2
|
-
export type GalleryLayout = 'Grid' | 'Masonry' | 'Justified' | 'Carousel' | 'Single';
|
|
2
|
+
export type GalleryLayout = 'Grid' | 'Masonry' | 'Justified' | 'Carousel' | 'Single' | 'Stack';
|
|
3
3
|
export type ApiResponse<T> = {
|
|
4
4
|
data: T;
|
|
5
5
|
meta?: Record<string, unknown>;
|
|
@@ -12,13 +12,31 @@ export type ApiListResponse<T> = {
|
|
|
12
12
|
nextCursor?: string | null;
|
|
13
13
|
};
|
|
14
14
|
};
|
|
15
|
+
/** Structured error returned by the Gallery API. */
|
|
16
|
+
export declare class GalleryApiError extends Error {
|
|
17
|
+
readonly code: string;
|
|
18
|
+
readonly requestId?: string;
|
|
19
|
+
readonly status: number;
|
|
20
|
+
constructor(input: {
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
requestId?: string;
|
|
24
|
+
status: number;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
15
27
|
export type GalleryItem = {
|
|
16
28
|
id: string;
|
|
29
|
+
position?: number;
|
|
30
|
+
revision?: number;
|
|
17
31
|
src: string;
|
|
18
32
|
alt: string;
|
|
33
|
+
thumbnailSrc?: string;
|
|
19
34
|
width?: number;
|
|
20
35
|
height?: number;
|
|
21
36
|
downloadUrl?: string;
|
|
37
|
+
srcSet?: string;
|
|
38
|
+
deliveryExpiresAt?: string;
|
|
39
|
+
visibility?: 'private' | 'public' | 'unlisted';
|
|
22
40
|
};
|
|
23
41
|
export type Gallery = {
|
|
24
42
|
id: string;
|
|
@@ -29,6 +47,21 @@ export type Gallery = {
|
|
|
29
47
|
layout?: GalleryLayout;
|
|
30
48
|
items: GalleryItem[];
|
|
31
49
|
};
|
|
50
|
+
export type GalleryManifest = {
|
|
51
|
+
description: string;
|
|
52
|
+
galleryId: string;
|
|
53
|
+
items: Array<{
|
|
54
|
+
alt?: string;
|
|
55
|
+
assetId: string;
|
|
56
|
+
assetRevision: number;
|
|
57
|
+
position: number;
|
|
58
|
+
}>;
|
|
59
|
+
layout: GalleryLayout;
|
|
60
|
+
revision: number;
|
|
61
|
+
allowedPresets?: Array<'original' | 'thumbnail' | 'large'>;
|
|
62
|
+
slug: string;
|
|
63
|
+
title: string;
|
|
64
|
+
};
|
|
32
65
|
export type Asset = {
|
|
33
66
|
alt: string;
|
|
34
67
|
bytes: number;
|
|
@@ -36,12 +69,14 @@ export type Asset = {
|
|
|
36
69
|
createdAt: string;
|
|
37
70
|
delivery: {
|
|
38
71
|
downloadUrl: string;
|
|
72
|
+
expiresAt?: string;
|
|
39
73
|
originalUrl: string;
|
|
40
74
|
src: string;
|
|
41
75
|
};
|
|
42
76
|
filename: string;
|
|
43
77
|
galleries?: GalleryReference[];
|
|
44
78
|
id: string;
|
|
79
|
+
revision: number;
|
|
45
80
|
status: string;
|
|
46
81
|
title: string | null;
|
|
47
82
|
visibility: 'private' | 'public' | 'unlisted';
|
|
@@ -75,6 +110,14 @@ export type GalleryDetail = GallerySummary & {
|
|
|
75
110
|
position: number;
|
|
76
111
|
}[];
|
|
77
112
|
};
|
|
113
|
+
export type GalleryPage<TGallery = GalleryDetail> = {
|
|
114
|
+
gallery: TGallery;
|
|
115
|
+
pagination: {
|
|
116
|
+
cursor: string | null;
|
|
117
|
+
limit: number;
|
|
118
|
+
nextCursor: string | null;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
78
121
|
export type GalleryLinkPayload = {
|
|
79
122
|
links: {
|
|
80
123
|
api: string;
|
|
@@ -111,14 +154,22 @@ export type UploadIntent = {
|
|
|
111
154
|
};
|
|
112
155
|
export type GalleryEvent = {
|
|
113
156
|
event: 'gallery_view' | 'image_view' | 'interaction' | 'download';
|
|
157
|
+
eventId?: string;
|
|
114
158
|
galleryId: string;
|
|
115
159
|
assetId?: string;
|
|
116
160
|
occurredAt?: string;
|
|
117
161
|
};
|
|
118
162
|
export type ClientOptions = {
|
|
163
|
+
/** Public Cloudflare Worker endpoint used for batched browser analytics. */
|
|
164
|
+
analyticsUrl?: string;
|
|
165
|
+
/** Maximum number of events sent in one analytics request. */
|
|
166
|
+
analyticsBatchSize?: number;
|
|
167
|
+
/** Delay before a non-full analytics batch is flushed. */
|
|
168
|
+
analyticsFlushIntervalMs?: number;
|
|
119
169
|
apiKey?: string;
|
|
120
170
|
apiUrl: string;
|
|
121
171
|
fetch?: typeof fetch;
|
|
172
|
+
mediaUrl?: string;
|
|
122
173
|
publishableKey?: string;
|
|
123
174
|
readToken?: string;
|
|
124
175
|
};
|
|
@@ -127,6 +178,7 @@ export type UploadImageInput = {
|
|
|
127
178
|
contentType: string;
|
|
128
179
|
filename: string;
|
|
129
180
|
galleryIds?: string[];
|
|
181
|
+
idempotencyKey?: string;
|
|
130
182
|
metadata?: Record<string, unknown>;
|
|
131
183
|
size: number;
|
|
132
184
|
visibility?: 'private' | 'public' | 'unlisted';
|
|
@@ -134,10 +186,20 @@ export type UploadImageInput = {
|
|
|
134
186
|
export type CompleteAssetInput = {
|
|
135
187
|
alt?: string;
|
|
136
188
|
galleryIds?: string[];
|
|
189
|
+
idempotencyKey?: string;
|
|
137
190
|
title?: string;
|
|
138
191
|
uploadIntentId: string;
|
|
139
192
|
visibility?: 'private' | 'public';
|
|
140
193
|
};
|
|
194
|
+
export type ReplaceAssetInput = {
|
|
195
|
+
idempotencyKey?: string;
|
|
196
|
+
uploadIntentId: string;
|
|
197
|
+
};
|
|
198
|
+
export type DeliveryCapability = {
|
|
199
|
+
capability: string;
|
|
200
|
+
expiresAt: string;
|
|
201
|
+
url: string;
|
|
202
|
+
};
|
|
141
203
|
export type ListAssetsInput = {
|
|
142
204
|
cursor?: string;
|
|
143
205
|
galleryId?: string;
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC9C,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,SAAS,GACT,WAAW,GACX,UAAU,GACV,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@degallery/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
|
-
"scripts": {
|
|
9
|
-
"lib:publish": "npm publish --access public"
|
|
10
|
-
},
|
|
11
8
|
"exports": {
|
|
12
9
|
"./package.json": "./package.json",
|
|
13
10
|
".": {
|
|
@@ -53,5 +50,8 @@
|
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
52
|
},
|
|
56
|
-
"dependencies": {}
|
|
57
|
-
|
|
53
|
+
"dependencies": {},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"lib:publish": "pnpm publish --access public"
|
|
56
|
+
}
|
|
57
|
+
}
|