@nitida/sdk 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/expo.d.ts ADDED
@@ -0,0 +1,48 @@
1
+ import { UploadTaskOptions, UploadTask } from '@aquienpz/asset-uploader-expo';
2
+ export { UploadEvents, UploadFileInput, UploadSessionState, UploadTask, UploadTaskOptions, cancelResumableSession, listResumableSessions } from '@aquienpz/asset-uploader-expo';
3
+ import { AquienpzClient } from './index.js';
4
+ import '@nitida/asset-client';
5
+
6
+ /**
7
+ * @nitida/sdk/expo — native multipart uploads for React Native / Expo.
8
+ *
9
+ * Wraps `@aquienpz/asset-uploader-expo`'s `UploadTask`, which delegates
10
+ * the actual byte transfer to a native background session (URLSession
11
+ * on iOS, WorkManager on Android). The upload survives:
12
+ * - JS thread freezing
13
+ * - App backgrounding
14
+ * - OS-initiated kill (low-memory, user swiping away)
15
+ * - Network blips (retries with backoff)
16
+ *
17
+ * Usage:
18
+ *
19
+ * import { createExpoUploader, listResumableSessions } from "@nitida/sdk/expo";
20
+ *
21
+ * const aq = new AquienpzClient({ ... });
22
+ *
23
+ * // Resume any uploads from a prior app launch on boot.
24
+ * const resumable = await listResumableSessions();
25
+ * // ...show a banner offering to resume them
26
+ *
27
+ * const upload = createExpoUploader(aq, {
28
+ * file: { uri: assetUri, mime: "video/mp4", name: "tour.mp4" },
29
+ * });
30
+ * upload.on("progress", ({ ratio }) => setProgress(ratio));
31
+ * const { assetId } = await upload.start();
32
+ * await aq.slots.bind("storefront.tour.video", { assetId, preset: "video" });
33
+ *
34
+ * Peer dep: `@aquienpz/asset-uploader-expo` (lazy — apps that don't
35
+ * use the mobile SDK skip the install).
36
+ * @module @nitida/sdk/expo
37
+ */
38
+
39
+ type ExpoUploadOptions = Omit<UploadTaskOptions, "tenantCode" | "endpoint" | "authToken">;
40
+ /**
41
+ * Spawn a native-backed `UploadTask` bound to a configured client.
42
+ * Inherits the client's endpoint / api key / tenant scope; caller only
43
+ * has to supply the file input + any per-upload tuning (partSize,
44
+ * concurrency).
45
+ */
46
+ declare function createExpoUploader(client: AquienpzClient, options: ExpoUploadOptions): UploadTask;
47
+
48
+ export { type ExpoUploadOptions, createExpoUploader };
package/dist/expo.js ADDED
@@ -0,0 +1,25 @@
1
+ // src/expo/index.ts
2
+ import {
3
+ UploadTask
4
+ } from "@aquienpz/asset-uploader-expo";
5
+ import {
6
+ cancelResumableSession,
7
+ listResumableSessions,
8
+ UploadTask as UploadTask2
9
+ } from "@aquienpz/asset-uploader-expo";
10
+ function createExpoUploader(client, options) {
11
+ const access = client;
12
+ return new UploadTask({
13
+ ...options,
14
+ endpoint: access.opts.endpoint,
15
+ authToken: access.opts.apiKey,
16
+ tenantCode: access.opts.tenantCode
17
+ });
18
+ }
19
+ export {
20
+ UploadTask2 as UploadTask,
21
+ cancelResumableSession,
22
+ createExpoUploader,
23
+ listResumableSessions
24
+ };
25
+ //# sourceMappingURL=expo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/expo/index.ts"],"sourcesContent":["/**\n * @nitida/sdk/expo — native multipart uploads for React Native / Expo.\n *\n * Wraps `@aquienpz/asset-uploader-expo`'s `UploadTask`, which delegates\n * the actual byte transfer to a native background session (URLSession\n * on iOS, WorkManager on Android). The upload survives:\n * - JS thread freezing\n * - App backgrounding\n * - OS-initiated kill (low-memory, user swiping away)\n * - Network blips (retries with backoff)\n *\n * Usage:\n *\n * import { createExpoUploader, listResumableSessions } from \"@nitida/sdk/expo\";\n *\n * const aq = new AquienpzClient({ ... });\n *\n * // Resume any uploads from a prior app launch on boot.\n * const resumable = await listResumableSessions();\n * // ...show a banner offering to resume them\n *\n * const upload = createExpoUploader(aq, {\n * file: { uri: assetUri, mime: \"video/mp4\", name: \"tour.mp4\" },\n * });\n * upload.on(\"progress\", ({ ratio }) => setProgress(ratio));\n * const { assetId } = await upload.start();\n * await aq.slots.bind(\"storefront.tour.video\", { assetId, preset: \"video\" });\n *\n * Peer dep: `@aquienpz/asset-uploader-expo` (lazy — apps that don't\n * use the mobile SDK skip the install).\n * @module @nitida/sdk/expo\n */\n\nimport {\n UploadTask,\n type UploadTaskOptions,\n} from \"@aquienpz/asset-uploader-expo\";\nimport type { AquienpzClient } from \"..\";\n\nexport type ExpoUploadOptions = Omit<\n UploadTaskOptions,\n \"tenantCode\" | \"endpoint\" | \"authToken\"\n>;\n\n/**\n * Spawn a native-backed `UploadTask` bound to a configured client.\n * Inherits the client's endpoint / api key / tenant scope; caller only\n * has to supply the file input + any per-upload tuning (partSize,\n * concurrency).\n */\nexport function createExpoUploader(\n client: AquienpzClient,\n options: ExpoUploadOptions,\n): UploadTask {\n const access = client as unknown as {\n opts: { endpoint: string; apiKey: string; tenantCode: string };\n };\n return new UploadTask({\n ...options,\n endpoint: access.opts.endpoint,\n authToken: access.opts.apiKey,\n tenantCode: access.opts.tenantCode,\n });\n}\n\nexport type {\n UploadEvents,\n UploadFileInput,\n UploadSessionState,\n UploadTaskOptions,\n} from \"@aquienpz/asset-uploader-expo\";\nexport {\n cancelResumableSession,\n listResumableSessions,\n UploadTask,\n} from \"@aquienpz/asset-uploader-expo\";\n"],"mappings":";AAiCA;AAAA,EACE;AAAA,OAEK;AAmCP;AAAA,EACE;AAAA,EACA;AAAA,EACA,cAAAA;AAAA,OACK;AAzBA,SAAS,mBACd,QACA,SACY;AACZ,QAAM,SAAS;AAGf,SAAO,IAAI,WAAW;AAAA,IACpB,GAAG;AAAA,IACH,UAAU,OAAO,KAAK;AAAA,IACtB,WAAW,OAAO,KAAK;AAAA,IACvB,YAAY,OAAO,KAAK;AAAA,EAC1B,CAAC;AACH;","names":["UploadTask"]}