zitejs 0.9.53 → 0.9.55

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.
Files changed (42) hide show
  1. package/dist/cjs/backend/index.d.ts +10 -4
  2. package/dist/cjs/backend/index.js +1 -1
  3. package/dist/cjs/caller/index.d.ts +5 -0
  4. package/dist/cjs/caller/index.js +100 -8
  5. package/dist/cjs/dev/index.js +6 -1
  6. package/dist/cjs/internal/sdkCall.d.ts +2 -0
  7. package/dist/cjs/internal/sdkCall.js +10 -0
  8. package/dist/cjs/pdf/index.d.ts +10 -7
  9. package/dist/cjs/pdf/index.js +6 -3
  10. package/dist/cjs/runtime/index.js +14 -20
  11. package/dist/cjs/schedules/index.d.ts +101 -11
  12. package/dist/cjs/schedules/index.js +15 -9
  13. package/dist/cjs/sync/index.js +7 -4
  14. package/dist/cjs/sync/lib.d.ts +5 -1
  15. package/dist/cjs/sync/lib.js +58 -13
  16. package/dist/cjs/upload/index.d.ts +11 -1
  17. package/dist/cjs/upload/index.js +107 -1
  18. package/dist/esm/backend/index.d.ts +10 -4
  19. package/dist/esm/backend/index.js +1 -1
  20. package/dist/esm/caller/index.d.ts +5 -0
  21. package/dist/esm/caller/index.js +99 -8
  22. package/dist/esm/cli.js +0 -0
  23. package/dist/esm/dev/index.js +6 -1
  24. package/dist/esm/internal/sdkCall.d.ts +2 -0
  25. package/dist/esm/internal/sdkCall.js +7 -0
  26. package/dist/esm/pdf/index.d.ts +10 -7
  27. package/dist/esm/pdf/index.js +5 -2
  28. package/dist/esm/runtime/index.js +1 -7
  29. package/dist/esm/schedules/index.d.ts +101 -11
  30. package/dist/esm/schedules/index.js +13 -7
  31. package/dist/esm/sync/index.js +7 -4
  32. package/dist/esm/sync/lib.d.ts +5 -1
  33. package/dist/esm/sync/lib.js +58 -13
  34. package/dist/esm/upload/index.d.ts +11 -1
  35. package/dist/esm/upload/index.js +104 -1
  36. package/package.json +1 -1
  37. package/dist/cjs/api/index.js +0 -5
  38. package/dist/cjs/db/index.js +0 -5
  39. package/dist/esm/api/index.d.ts +0 -2
  40. package/dist/esm/api/index.js +0 -1
  41. package/dist/esm/db/index.d.ts +0 -2
  42. package/dist/esm/db/index.js +0 -1
@@ -1,3 +1,106 @@
1
+ import { useCallback, useState } from 'react';
2
+ import { getApiUrl, getFlowId } from '../auth/config.js';
3
+ import { ZITE_APP_ACTION_HOSTNAME_PREFIX, ZITE_APP_EDITOR_HOSTNAME_PREFIX, ZITE_SANDBOX_DOMAINS, } from '../auth/constants.js';
4
+ export class FileUploadError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'FileUploadError';
8
+ }
9
+ }
10
+ function getZiteAppMode(hostname) {
11
+ const maybeId = hostname.split('.')[0];
12
+ if (maybeId?.startsWith(ZITE_APP_EDITOR_HOSTNAME_PREFIX))
13
+ return 'preview';
14
+ if (maybeId?.startsWith(ZITE_APP_ACTION_HOSTNAME_PREFIX))
15
+ return 'preview';
16
+ if (ZITE_SANDBOX_DOMAINS.some(d => hostname === d || hostname.endsWith('.' + d))) {
17
+ return 'preview';
18
+ }
19
+ return 'live';
20
+ }
21
+ function readBlobAsDataUrl(blob) {
22
+ return new Promise((resolve, reject) => {
23
+ const reader = new FileReader();
24
+ reader.onload = () => resolve(reader.result);
25
+ reader.onerror = () => reject(reader.error ?? new Error('Failed to read file'));
26
+ reader.readAsDataURL(blob);
27
+ });
28
+ }
29
+ async function toDataUrl(data) {
30
+ if (data instanceof Blob) {
31
+ return readBlobAsDataUrl(data);
32
+ }
33
+ if (data instanceof ArrayBuffer) {
34
+ const bytes = new Uint8Array(data);
35
+ let binary = '';
36
+ for (let i = 0; i < bytes.byteLength; i++) {
37
+ binary += String.fromCharCode(bytes[i]);
38
+ }
39
+ return 'data:application/octet-stream;base64,' + btoa(binary);
40
+ }
41
+ if (typeof data === 'string') {
42
+ if (data.startsWith('data:'))
43
+ return data;
44
+ if (/^[A-Za-z0-9+/]+=*$/.test(data)) {
45
+ return 'data:application/octet-stream;base64,' + data;
46
+ }
47
+ return 'data:text/plain;base64,' + btoa(unescape(encodeURIComponent(data)));
48
+ }
49
+ throw new FileUploadError('Invalid data format. Expected string, Blob, ArrayBuffer, or File.');
50
+ }
51
+ function resolveFilename(data, filename) {
52
+ if (filename)
53
+ return filename;
54
+ if (typeof File !== 'undefined' && data instanceof File && data.name) {
55
+ return data.name;
56
+ }
57
+ throw new FileUploadError('A filename is required unless the uploaded data is a File.');
58
+ }
59
+ async function performUpload(data, filename) {
60
+ const body = await toDataUrl(data);
61
+ const mode = getZiteAppMode(window.location.hostname);
62
+ const flowId = getFlowId();
63
+ const token = typeof localStorage !== 'undefined'
64
+ ? localStorage.getItem('zite.auth.token')
65
+ : null;
66
+ const res = await fetch(getApiUrl() + '/v1/zite/public/' + flowId + '/upload?mode=' + mode, {
67
+ method: 'POST',
68
+ headers: {
69
+ 'Content-Type': 'application/json',
70
+ ...(token ? { Authorization: 'Bearer ' + token } : {}),
71
+ },
72
+ body: JSON.stringify({ data: body, filename }),
73
+ });
74
+ if (!res.ok) {
75
+ let message = 'Upload failed';
76
+ try {
77
+ const err = (await res.json());
78
+ if (err.message)
79
+ message = err.message;
80
+ }
81
+ catch { }
82
+ throw new FileUploadError(message);
83
+ }
84
+ const result = (await res.json());
85
+ if (!result.success || !result.fileUrl) {
86
+ throw new FileUploadError(result.message ?? 'Upload failed');
87
+ }
88
+ return result.fileUrl;
89
+ }
90
+ export async function uploadFile({ data, filename, }) {
91
+ return { fileUrl: await performUpload(data, filename) };
92
+ }
1
93
  export function useUpload() {
2
- throw new Error('useUpload() is only available in the Zite runtime.');
94
+ const [isUploading, setIsUploading] = useState(false);
95
+ const upload = useCallback(async (file, filename) => {
96
+ setIsUploading(true);
97
+ try {
98
+ const url = await performUpload(file, resolveFilename(file, filename));
99
+ return { url };
100
+ }
101
+ finally {
102
+ setIsUploading(false);
103
+ }
104
+ }, []);
105
+ return { upload, isUploading };
3
106
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zitejs",
3
- "version": "0.9.53",
3
+ "version": "0.9.55",
4
4
  "description": "The Zite framework — build apps on Zite Database",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCaller = void 0;
4
- var index_js_1 = require("../caller/index.js");
5
- Object.defineProperty(exports, "createCaller", { enumerable: true, get: function () { return index_js_1.createCaller; } });
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTableClient = void 0;
4
- var index_js_1 = require("../runtime/index.js");
5
- Object.defineProperty(exports, "createTableClient", { enumerable: true, get: function () { return index_js_1.createTableClient; } });
@@ -1,2 +0,0 @@
1
- export { createCaller } from '../caller/index.js';
2
- export type { EndpointConfig } from '../caller/index.js';
@@ -1 +0,0 @@
1
- export { createCaller } from '../caller/index.js';
@@ -1,2 +0,0 @@
1
- export { createTableClient } from '../runtime/index.js';
2
- export type { TableClient } from '../runtime/index.js';
@@ -1 +0,0 @@
1
- export { createTableClient } from '../runtime/index.js';