appflare 0.2.25 → 0.2.26
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/Documentation.md +758 -758
- package/cli/commands/index.ts +238 -238
- package/cli/generate.ts +178 -178
- package/cli/index.ts +120 -120
- package/cli/load-config.ts +184 -184
- package/cli/schema-compiler.ts +1183 -1183
- package/cli/templates/auth/README.md +156 -156
- package/cli/templates/auth/config.ts +61 -61
- package/cli/templates/auth/route-config.ts +1 -1
- package/cli/templates/auth/route-handler.ts +1 -1
- package/cli/templates/auth/route-request-utils.ts +5 -5
- package/cli/templates/auth/route.config.ts +18 -18
- package/cli/templates/auth/route.handler.ts +18 -18
- package/cli/templates/auth/route.request-utils.ts +55 -55
- package/cli/templates/auth/route.ts +14 -14
- package/cli/templates/core/README.md +266 -266
- package/cli/templates/core/app-creation.ts +19 -19
- package/cli/templates/core/client/appflare.ts +112 -112
- package/cli/templates/core/client/handlers/index.ts +748 -748
- package/cli/templates/core/client/handlers.ts +1 -1
- package/cli/templates/core/client/index.ts +7 -7
- package/cli/templates/core/client/storage.ts +180 -180
- package/cli/templates/core/client/types.ts +184 -184
- package/cli/templates/core/client-modules/appflare.ts +1 -1
- package/cli/templates/core/client-modules/handlers.ts +1 -1
- package/cli/templates/core/client-modules/index.ts +1 -1
- package/cli/templates/core/client-modules/storage.ts +1 -1
- package/cli/templates/core/client-modules/types.ts +1 -1
- package/cli/templates/core/client.artifacts.ts +39 -39
- package/cli/templates/core/client.ts +4 -4
- package/cli/templates/core/drizzle.ts +15 -15
- package/cli/templates/core/export.ts +14 -14
- package/cli/templates/core/handlers.route.ts +24 -24
- package/cli/templates/core/handlers.ts +1 -1
- package/cli/templates/core/imports.ts +9 -9
- package/cli/templates/core/server.ts +38 -38
- package/cli/templates/core/types.ts +6 -6
- package/cli/templates/core/wrangler.ts +109 -109
- package/cli/templates/dashboard/builders/functions/index.ts +17 -17
- package/cli/templates/dashboard/builders/functions/render-page/header.ts +20 -20
- package/cli/templates/dashboard/builders/functions/render-page/index.ts +33 -33
- package/cli/templates/dashboard/builders/functions/render-page/request-panel.ts +171 -171
- package/cli/templates/dashboard/builders/functions/render-page/result-panel.ts +85 -85
- package/cli/templates/dashboard/builders/functions/render-page/scripts.ts +554 -554
- package/cli/templates/dashboard/builders/navigation.ts +122 -122
- package/cli/templates/dashboard/builders/storage/index.ts +13 -13
- package/cli/templates/dashboard/builders/storage/routes/create-directory-route.ts +29 -29
- package/cli/templates/dashboard/builders/storage/routes/delete-route.ts +18 -18
- package/cli/templates/dashboard/builders/storage/routes/download-route.ts +23 -23
- package/cli/templates/dashboard/builders/storage/routes/index.ts +22 -22
- package/cli/templates/dashboard/builders/storage/routes/list-route.ts +25 -25
- package/cli/templates/dashboard/builders/storage/routes/preview-route.ts +21 -21
- package/cli/templates/dashboard/builders/storage/routes/upload-route.ts +21 -21
- package/cli/templates/dashboard/builders/storage/runtime/helpers.ts +72 -72
- package/cli/templates/dashboard/builders/storage/runtime/storage-page.ts +130 -130
- package/cli/templates/dashboard/builders/table-routes/common/drawer-panel.ts +27 -27
- package/cli/templates/dashboard/builders/table-routes/common/pagination.ts +30 -30
- package/cli/templates/dashboard/builders/table-routes/common/search-bar.ts +23 -23
- package/cli/templates/dashboard/builders/table-routes/fragments.ts +217 -217
- package/cli/templates/dashboard/builders/table-routes/helpers.ts +45 -45
- package/cli/templates/dashboard/builders/table-routes/index.ts +8 -8
- package/cli/templates/dashboard/builders/table-routes/table/actions-cell.ts +71 -71
- package/cli/templates/dashboard/builders/table-routes/table/get-route.ts +291 -291
- package/cli/templates/dashboard/builders/table-routes/table/index.ts +80 -80
- package/cli/templates/dashboard/builders/table-routes/table/post-routes.ts +163 -163
- package/cli/templates/dashboard/builders/table-routes/table-route.ts +7 -7
- package/cli/templates/dashboard/builders/table-routes/users/get-route.ts +69 -69
- package/cli/templates/dashboard/builders/table-routes/users/html/modals.ts +57 -57
- package/cli/templates/dashboard/builders/table-routes/users/html/page.ts +27 -27
- package/cli/templates/dashboard/builders/table-routes/users/html/table.ts +128 -128
- package/cli/templates/dashboard/builders/table-routes/users/index.ts +32 -32
- package/cli/templates/dashboard/builders/table-routes/users/post-routes.ts +150 -150
- package/cli/templates/dashboard/builders/table-routes/users/redirect.ts +14 -14
- package/cli/templates/dashboard/builders/table-routes/users-route.ts +10 -10
- package/cli/templates/dashboard/components/dashboard-home.ts +23 -23
- package/cli/templates/dashboard/components/layout.ts +388 -388
- package/cli/templates/dashboard/components/login-page.ts +65 -65
- package/cli/templates/dashboard/index.ts +61 -61
- package/cli/templates/dashboard/types.ts +9 -9
- package/cli/templates/handlers/README.md +353 -353
- package/cli/templates/handlers/auth.ts +37 -37
- package/cli/templates/handlers/execution.ts +42 -42
- package/cli/templates/handlers/generators/context/context-creation.ts +101 -101
- package/cli/templates/handlers/generators/context/error-helpers.ts +11 -11
- package/cli/templates/handlers/generators/context/scheduler.ts +24 -24
- package/cli/templates/handlers/generators/context/storage-api.ts +134 -112
- package/cli/templates/handlers/generators/context/storage-helpers.ts +59 -59
- package/cli/templates/handlers/generators/context/types.ts +18 -18
- package/cli/templates/handlers/generators/context.ts +43 -43
- package/cli/templates/handlers/generators/execution.ts +15 -15
- package/cli/templates/handlers/generators/handlers.ts +13 -13
- package/cli/templates/handlers/generators/registration/modules/cron.ts +26 -26
- package/cli/templates/handlers/generators/registration/modules/realtime/auth.ts +75 -75
- package/cli/templates/handlers/generators/registration/modules/realtime/durable-object.ts +144 -144
- package/cli/templates/handlers/generators/registration/modules/realtime/index.ts +14 -14
- package/cli/templates/handlers/generators/registration/modules/realtime/publisher.ts +102 -102
- package/cli/templates/handlers/generators/registration/modules/realtime/routes.ts +164 -164
- package/cli/templates/handlers/generators/registration/modules/realtime/types.ts +30 -30
- package/cli/templates/handlers/generators/registration/modules/realtime/utils.ts +516 -516
- package/cli/templates/handlers/generators/registration/modules/scheduler.ts +56 -56
- package/cli/templates/handlers/generators/registration/modules/storage.ts +196 -194
- package/cli/templates/handlers/generators/registration/sections.ts +210 -210
- package/cli/templates/handlers/generators/types/context.ts +68 -66
- package/cli/templates/handlers/generators/types/core.ts +106 -106
- package/cli/templates/handlers/generators/types/operations.ts +135 -135
- package/cli/templates/handlers/generators/types/query-definitions/filter-and-where-types.ts +259 -259
- package/cli/templates/handlers/generators/types/query-definitions/query-api-types.ts +135 -135
- package/cli/templates/handlers/generators/types/query-definitions/query-helper-functions.ts +1031 -1031
- package/cli/templates/handlers/generators/types/query-definitions/schema-and-table-types.ts +246 -246
- package/cli/templates/handlers/generators/types/query-definitions.ts +13 -13
- package/cli/templates/handlers/generators/types/query-runtime/handled-error.ts +13 -13
- package/cli/templates/handlers/generators/types/query-runtime/runtime-aggregate-and-footer.ts +174 -174
- package/cli/templates/handlers/generators/types/query-runtime/runtime-read.ts +121 -121
- package/cli/templates/handlers/generators/types/query-runtime/runtime-setup.ts +45 -45
- package/cli/templates/handlers/generators/types/query-runtime/runtime-write.ts +676 -676
- package/cli/templates/handlers/generators/types/query-runtime.ts +15 -15
- package/cli/templates/handlers/index.ts +43 -43
- package/cli/templates/handlers/operations.ts +116 -116
- package/cli/templates/handlers/registration.ts +91 -91
- package/cli/templates/handlers/types.ts +15 -15
- package/cli/templates/handlers/utils.ts +48 -48
- package/cli/types.ts +110 -110
- package/cli/utils/handler-discovery.ts +466 -466
- package/cli/utils/json-utils.ts +24 -24
- package/cli/utils/path-utils.ts +19 -19
- package/cli/utils/schema-discovery.ts +399 -399
- package/dist/cli/index.js +43 -17
- package/dist/cli/index.mjs +43 -17
- package/index.ts +18 -18
- package/package.json +58 -58
- package/react/index.ts +5 -5
- package/react/use-infinite-query.ts +252 -252
- package/react/use-mutation.ts +89 -89
- package/react/use-query.ts +207 -207
- package/schema.ts +415 -415
- package/test-better-auth-hash.ts +2 -2
- package/tsconfig.json +6 -6
- package/tsup.config.ts +82 -82
- package/dist/cli/index.d.mts +0 -2
- package/dist/cli/index.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
export { generateClientHandlersSource } from "./handlers/index";
|
|
1
|
+
export { generateClientHandlersSource } from "./handlers/index";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export function generateClientIndexSource(): string {
|
|
2
|
-
return `export * from "./types";
|
|
3
|
-
export * from "./appflare";
|
|
4
|
-
export * from "./storage";
|
|
5
|
-
export * from "./handlers";
|
|
6
|
-
`;
|
|
7
|
-
}
|
|
1
|
+
export function generateClientIndexSource(): string {
|
|
2
|
+
return `export * from "./types";
|
|
3
|
+
export * from "./appflare";
|
|
4
|
+
export * from "./storage";
|
|
5
|
+
export * from "./handlers";
|
|
6
|
+
`;
|
|
7
|
+
}
|
|
@@ -1,180 +1,180 @@
|
|
|
1
|
-
export function generateClientStorageSource(): string {
|
|
2
|
-
return `import type { StorageClient, StorageSignedUrlResponse, StorageListResponse } from "./types";
|
|
3
|
-
|
|
4
|
-
type AuthTokenResolver = (() => string | Promise<string>) | undefined;
|
|
5
|
-
|
|
6
|
-
function toHeaderRecord(headers: HeadersInit | undefined): Record<string, string> {
|
|
7
|
-
const result: Record<string, string> = {};
|
|
8
|
-
if (!headers) {
|
|
9
|
-
return result;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (Array.isArray(headers)) {
|
|
13
|
-
for (const entry of headers) {
|
|
14
|
-
if (!Array.isArray(entry) || entry.length < 2) {
|
|
15
|
-
continue;
|
|
16
|
-
}
|
|
17
|
-
result[String(entry[0])] = String(entry[1]);
|
|
18
|
-
}
|
|
19
|
-
return result;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (typeof (headers as { forEach?: unknown }).forEach === "function") {
|
|
23
|
-
(headers as Headers).forEach((value, key) => {
|
|
24
|
-
result[key] = String(value);
|
|
25
|
-
});
|
|
26
|
-
return result;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
for (const [key, value] of Object.entries(headers as Record<string, unknown>)) {
|
|
30
|
-
result[key] = String(value ?? "");
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function hasAuthorizationHeader(headers: Record<string, string>): boolean {
|
|
37
|
-
for (const key of Object.keys(headers)) {
|
|
38
|
-
if (key.toLowerCase() === "authorization") {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async function createAuthorizedHeaders(
|
|
47
|
-
headers: HeadersInit | undefined,
|
|
48
|
-
onGetAuthToken: AuthTokenResolver,
|
|
49
|
-
): Promise<HeadersInit | undefined> {
|
|
50
|
-
const resolvedHeaders = toHeaderRecord(headers);
|
|
51
|
-
if (onGetAuthToken) {
|
|
52
|
-
const authToken = await onGetAuthToken();
|
|
53
|
-
if (typeof authToken === "string" && authToken.trim().length > 0) {
|
|
54
|
-
if (!hasAuthorizationHeader(resolvedHeaders)) {
|
|
55
|
-
resolvedHeaders.authorization = \`Bearer \${authToken.trim()}\`;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return resolvedHeaders;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function createStorageClient(
|
|
64
|
-
endpoint: string,
|
|
65
|
-
request: typeof fetch = fetch,
|
|
66
|
-
onGetAuthToken?: () => string | Promise<string>,
|
|
67
|
-
): StorageClient {
|
|
68
|
-
return {
|
|
69
|
-
upload: async (args) => {
|
|
70
|
-
const headers = await createAuthorizedHeaders(
|
|
71
|
-
{
|
|
72
|
-
"content-type": "application/json",
|
|
73
|
-
},
|
|
74
|
-
onGetAuthToken,
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
const response = await request(\`\${endpoint}/storage/upload\`, {
|
|
78
|
-
method: "POST",
|
|
79
|
-
headers,
|
|
80
|
-
body: JSON.stringify(args),
|
|
81
|
-
});
|
|
82
|
-
if (!response.ok) {
|
|
83
|
-
throw new Error(await response.text());
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return (await response.json()) as StorageSignedUrlResponse;
|
|
87
|
-
},
|
|
88
|
-
download: async (args) => {
|
|
89
|
-
const query = new URLSearchParams({
|
|
90
|
-
path: args.path,
|
|
91
|
-
...(args.fileName ? { fileName: args.fileName } : {}),
|
|
92
|
-
...(typeof args.expiresIn === "number"
|
|
93
|
-
? { expiresIn: String(args.expiresIn) }
|
|
94
|
-
: {}),
|
|
95
|
-
});
|
|
96
|
-
const response = await request(
|
|
97
|
-
\`\${endpoint}/storage/download?\${query.toString()}\`,
|
|
98
|
-
{
|
|
99
|
-
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
100
|
-
},
|
|
101
|
-
);
|
|
102
|
-
if (!response.ok) {
|
|
103
|
-
throw new Error(await response.text());
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return (await response.json()) as StorageSignedUrlResponse;
|
|
107
|
-
},
|
|
108
|
-
preview: async (args) => {
|
|
109
|
-
const query = new URLSearchParams({
|
|
110
|
-
path: args.path,
|
|
111
|
-
...(typeof args.expiresIn === "number"
|
|
112
|
-
? { expiresIn: String(args.expiresIn) }
|
|
113
|
-
: {}),
|
|
114
|
-
});
|
|
115
|
-
const response = await request(
|
|
116
|
-
\`\${endpoint}/storage/preview?\${query.toString()}\`,
|
|
117
|
-
{
|
|
118
|
-
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
119
|
-
},
|
|
120
|
-
);
|
|
121
|
-
if (!response.ok) {
|
|
122
|
-
throw new Error(await response.text());
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return (await response.json()) as StorageSignedUrlResponse;
|
|
126
|
-
},
|
|
127
|
-
delete: async (args) => {
|
|
128
|
-
const query = new URLSearchParams({
|
|
129
|
-
path: args.path,
|
|
130
|
-
});
|
|
131
|
-
const response = await request(
|
|
132
|
-
\`\${endpoint}/storage/object?\${query.toString()}\`,
|
|
133
|
-
{
|
|
134
|
-
method: "DELETE",
|
|
135
|
-
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
136
|
-
},
|
|
137
|
-
);
|
|
138
|
-
if (!response.ok) {
|
|
139
|
-
throw new Error(await response.text());
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return (await response.json()) as { ok: boolean; path: string };
|
|
143
|
-
},
|
|
144
|
-
list: async (args = {}) => {
|
|
145
|
-
const query = new URLSearchParams();
|
|
146
|
-
if (args.prefix) {
|
|
147
|
-
query.set("prefix", args.prefix);
|
|
148
|
-
}
|
|
149
|
-
if (args.cursor) {
|
|
150
|
-
query.set("cursor", args.cursor);
|
|
151
|
-
}
|
|
152
|
-
if (typeof args.limit === "number") {
|
|
153
|
-
query.set("limit", String(args.limit));
|
|
154
|
-
}
|
|
155
|
-
if (args.delimiter) {
|
|
156
|
-
query.set("delimiter", args.delimiter);
|
|
157
|
-
}
|
|
158
|
-
if (args.method) {
|
|
159
|
-
query.set("method", args.method);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const querySuffix = query.toString();
|
|
163
|
-
const response = await request(
|
|
164
|
-
querySuffix.length > 0
|
|
165
|
-
? \`\${endpoint}/storage/list?\${querySuffix}\`
|
|
166
|
-
: \`\${endpoint}/storage/list\`,
|
|
167
|
-
{
|
|
168
|
-
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
169
|
-
},
|
|
170
|
-
);
|
|
171
|
-
if (!response.ok) {
|
|
172
|
-
throw new Error(await response.text());
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return (await response.json()) as StorageListResponse;
|
|
176
|
-
},
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
`;
|
|
180
|
-
}
|
|
1
|
+
export function generateClientStorageSource(): string {
|
|
2
|
+
return `import type { StorageClient, StorageSignedUrlResponse, StorageListResponse } from "./types";
|
|
3
|
+
|
|
4
|
+
type AuthTokenResolver = (() => string | Promise<string>) | undefined;
|
|
5
|
+
|
|
6
|
+
function toHeaderRecord(headers: HeadersInit | undefined): Record<string, string> {
|
|
7
|
+
const result: Record<string, string> = {};
|
|
8
|
+
if (!headers) {
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (Array.isArray(headers)) {
|
|
13
|
+
for (const entry of headers) {
|
|
14
|
+
if (!Array.isArray(entry) || entry.length < 2) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
result[String(entry[0])] = String(entry[1]);
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (typeof (headers as { forEach?: unknown }).forEach === "function") {
|
|
23
|
+
(headers as Headers).forEach((value, key) => {
|
|
24
|
+
result[key] = String(value);
|
|
25
|
+
});
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
for (const [key, value] of Object.entries(headers as Record<string, unknown>)) {
|
|
30
|
+
result[key] = String(value ?? "");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function hasAuthorizationHeader(headers: Record<string, string>): boolean {
|
|
37
|
+
for (const key of Object.keys(headers)) {
|
|
38
|
+
if (key.toLowerCase() === "authorization") {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function createAuthorizedHeaders(
|
|
47
|
+
headers: HeadersInit | undefined,
|
|
48
|
+
onGetAuthToken: AuthTokenResolver,
|
|
49
|
+
): Promise<HeadersInit | undefined> {
|
|
50
|
+
const resolvedHeaders = toHeaderRecord(headers);
|
|
51
|
+
if (onGetAuthToken) {
|
|
52
|
+
const authToken = await onGetAuthToken();
|
|
53
|
+
if (typeof authToken === "string" && authToken.trim().length > 0) {
|
|
54
|
+
if (!hasAuthorizationHeader(resolvedHeaders)) {
|
|
55
|
+
resolvedHeaders.authorization = \`Bearer \${authToken.trim()}\`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return resolvedHeaders;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function createStorageClient(
|
|
64
|
+
endpoint: string,
|
|
65
|
+
request: typeof fetch = fetch,
|
|
66
|
+
onGetAuthToken?: () => string | Promise<string>,
|
|
67
|
+
): StorageClient {
|
|
68
|
+
return {
|
|
69
|
+
upload: async (args) => {
|
|
70
|
+
const headers = await createAuthorizedHeaders(
|
|
71
|
+
{
|
|
72
|
+
"content-type": "application/json",
|
|
73
|
+
},
|
|
74
|
+
onGetAuthToken,
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
const response = await request(\`\${endpoint}/storage/upload\`, {
|
|
78
|
+
method: "POST",
|
|
79
|
+
headers,
|
|
80
|
+
body: JSON.stringify(args),
|
|
81
|
+
});
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
throw new Error(await response.text());
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return (await response.json()) as StorageSignedUrlResponse;
|
|
87
|
+
},
|
|
88
|
+
download: async (args) => {
|
|
89
|
+
const query = new URLSearchParams({
|
|
90
|
+
path: args.path,
|
|
91
|
+
...(args.fileName ? { fileName: args.fileName } : {}),
|
|
92
|
+
...(typeof args.expiresIn === "number"
|
|
93
|
+
? { expiresIn: String(args.expiresIn) }
|
|
94
|
+
: {}),
|
|
95
|
+
});
|
|
96
|
+
const response = await request(
|
|
97
|
+
\`\${endpoint}/storage/download?\${query.toString()}\`,
|
|
98
|
+
{
|
|
99
|
+
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
100
|
+
},
|
|
101
|
+
);
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
throw new Error(await response.text());
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return (await response.json()) as StorageSignedUrlResponse;
|
|
107
|
+
},
|
|
108
|
+
preview: async (args) => {
|
|
109
|
+
const query = new URLSearchParams({
|
|
110
|
+
path: args.path,
|
|
111
|
+
...(typeof args.expiresIn === "number"
|
|
112
|
+
? { expiresIn: String(args.expiresIn) }
|
|
113
|
+
: {}),
|
|
114
|
+
});
|
|
115
|
+
const response = await request(
|
|
116
|
+
\`\${endpoint}/storage/preview?\${query.toString()}\`,
|
|
117
|
+
{
|
|
118
|
+
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
119
|
+
},
|
|
120
|
+
);
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
throw new Error(await response.text());
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return (await response.json()) as StorageSignedUrlResponse;
|
|
126
|
+
},
|
|
127
|
+
delete: async (args) => {
|
|
128
|
+
const query = new URLSearchParams({
|
|
129
|
+
path: args.path,
|
|
130
|
+
});
|
|
131
|
+
const response = await request(
|
|
132
|
+
\`\${endpoint}/storage/object?\${query.toString()}\`,
|
|
133
|
+
{
|
|
134
|
+
method: "DELETE",
|
|
135
|
+
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
136
|
+
},
|
|
137
|
+
);
|
|
138
|
+
if (!response.ok) {
|
|
139
|
+
throw new Error(await response.text());
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return (await response.json()) as { ok: boolean; path: string };
|
|
143
|
+
},
|
|
144
|
+
list: async (args = {}) => {
|
|
145
|
+
const query = new URLSearchParams();
|
|
146
|
+
if (args.prefix) {
|
|
147
|
+
query.set("prefix", args.prefix);
|
|
148
|
+
}
|
|
149
|
+
if (args.cursor) {
|
|
150
|
+
query.set("cursor", args.cursor);
|
|
151
|
+
}
|
|
152
|
+
if (typeof args.limit === "number") {
|
|
153
|
+
query.set("limit", String(args.limit));
|
|
154
|
+
}
|
|
155
|
+
if (args.delimiter) {
|
|
156
|
+
query.set("delimiter", args.delimiter);
|
|
157
|
+
}
|
|
158
|
+
if (args.method) {
|
|
159
|
+
query.set("method", args.method);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const querySuffix = query.toString();
|
|
163
|
+
const response = await request(
|
|
164
|
+
querySuffix.length > 0
|
|
165
|
+
? \`\${endpoint}/storage/list?\${querySuffix}\`
|
|
166
|
+
: \`\${endpoint}/storage/list\`,
|
|
167
|
+
{
|
|
168
|
+
headers: await createAuthorizedHeaders(undefined, onGetAuthToken),
|
|
169
|
+
},
|
|
170
|
+
);
|
|
171
|
+
if (!response.ok) {
|
|
172
|
+
throw new Error(await response.text());
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return (await response.json()) as StorageListResponse;
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
`;
|
|
180
|
+
}
|