@saltcorn/data 1.4.1 → 1.4.3

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 (37) hide show
  1. package/dist/db/state.d.ts +1 -1
  2. package/dist/db/state.d.ts.map +1 -1
  3. package/dist/db/state.js +5 -1
  4. package/dist/db/state.js.map +1 -1
  5. package/dist/mobile-mocks/npm/apns2.d.ts +1 -0
  6. package/dist/mobile-mocks/npm/apns2.d.ts.map +1 -0
  7. package/dist/mobile-mocks/npm/apns2.js +2 -0
  8. package/dist/mobile-mocks/npm/apns2.js.map +1 -0
  9. package/dist/mobile-mocks/npm/dockerode.d.ts +1 -0
  10. package/dist/mobile-mocks/npm/dockerode.d.ts.map +1 -0
  11. package/dist/mobile-mocks/npm/dockerode.js +2 -0
  12. package/dist/mobile-mocks/npm/dockerode.js.map +1 -0
  13. package/dist/mobile-mocks/npm/vm2.d.ts +1 -0
  14. package/dist/mobile-mocks/npm/vm2.d.ts.map +1 -0
  15. package/dist/mobile-mocks/npm/vm2.js +2 -0
  16. package/dist/mobile-mocks/npm/vm2.js.map +1 -0
  17. package/dist/mobile-mocks/npm/xml2js.d.ts +1 -0
  18. package/dist/mobile-mocks/npm/xml2js.d.ts.map +1 -0
  19. package/dist/mobile-mocks/npm/xml2js.js +2 -0
  20. package/dist/mobile-mocks/npm/xml2js.js.map +1 -0
  21. package/dist/models/internal/s3_helpers.d.ts +54 -0
  22. package/dist/models/internal/s3_helpers.d.ts.map +1 -0
  23. package/dist/models/internal/s3_helpers.js +561 -0
  24. package/dist/models/internal/s3_helpers.js.map +1 -0
  25. package/dist/tests/calc.test.js +1 -1
  26. package/dist/tests/calc.test.js.map +1 -1
  27. package/dist/utils.js +1 -1
  28. package/dist/utils.js.map +1 -1
  29. package/dist/viewable_fields.d.ts +227 -0
  30. package/dist/viewable_fields.d.ts.map +1 -0
  31. package/dist/viewable_fields.js +1923 -0
  32. package/dist/viewable_fields.js.map +1 -0
  33. package/package.json +9 -9
  34. package/dist/tests/mail_queue.test.d.ts +0 -2
  35. package/dist/tests/mail_queue.test.d.ts.map +0 -1
  36. package/dist/tests/mail_queue.test.js +0 -122
  37. package/dist/tests/mail_queue.test.js.map +0 -1
@@ -0,0 +1,561 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.publicUrlToRelativePath = exports.getServeUrl = exports.getPublicFileUrl = exports.getSignedFileUrl = exports.downloadBuffer = exports.uploadBuffer = exports.deleteObject = exports.copyObject = exports.setObjectMetadata = exports.headObject = exports.listS3Folder = exports.getS3Client = exports.getResolvedBucket = exports.buildKeyFromRelative = exports.relativeKeyToPath = exports.isS3Enabled = void 0;
7
+ const db_1 = __importDefault(require("../../db"));
8
+ const getStateInstance = () => {
9
+ const { getState } = require("../../db/state");
10
+ return getState();
11
+ };
12
+ const client_s3_1 = require("@aws-sdk/client-s3");
13
+ const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
14
+ const path = require("path");
15
+ const posixPath = path.posix;
16
+ const META_KEYS = {
17
+ min_role_read: "sc-min-role",
18
+ user_id: "sc-user-id",
19
+ mime_super: "sc-mime-super",
20
+ mime_sub: "sc-mime-sub",
21
+ filename: "sc-filename",
22
+ };
23
+ let cachedClient = null;
24
+ let cachedClientKey = null;
25
+ const normaliseEndpoint = (endpoint, secure = true) => {
26
+ if (!endpoint)
27
+ return undefined;
28
+ if (/^https?:\/\//i.test(endpoint))
29
+ return endpoint;
30
+ return `${secure ? "https" : "http"}://${endpoint}`;
31
+ };
32
+ // Check is the endpoint is of Google Cloud Storage
33
+ const isGcsEndpoint = (endpoint) => {
34
+ if (!endpoint)
35
+ return false;
36
+ try {
37
+ const host = new URL(normaliseEndpoint(endpoint)).hostname.toLowerCase();
38
+ return (host === "storage.googleapis.com" ||
39
+ host.endsWith(".storage.googleapis.com"));
40
+ }
41
+ catch (e) {
42
+ return /storage\.googleapis\.com/i.test(endpoint);
43
+ }
44
+ };
45
+ const normaliseEndpointAndBucket = (rawSettings) => {
46
+ const secure = rawSettings.secure;
47
+ const endpoint = normaliseEndpoint(rawSettings.endpoint, secure);
48
+ let bucket = rawSettings.bucket?.trim();
49
+ let bucketInEndpointHost = false;
50
+ if (!endpoint)
51
+ return { ...rawSettings, endpoint, bucket };
52
+ try {
53
+ const url = new URL(endpoint);
54
+ const pathParts = url.pathname.split("/").filter((p) => p.length);
55
+ if (bucket &&
56
+ url.hostname.toLowerCase().startsWith(`${bucket.toLowerCase()}.`))
57
+ bucketInEndpointHost = true;
58
+ const bucketFromPath = !bucket && pathParts.length ? pathParts[0] : undefined;
59
+ bucket = bucket || bucketFromPath;
60
+ let endpointHost = url.hostname;
61
+ if (bucket &&
62
+ endpointHost.toLowerCase().startsWith(`${bucket.toLowerCase()}.`)) {
63
+ bucketInEndpointHost = true;
64
+ endpointHost = endpointHost.slice(bucket.length + 1);
65
+ }
66
+ let cleanedPath = "/";
67
+ if (bucket &&
68
+ pathParts[0] &&
69
+ pathParts[0].toLowerCase() === bucket.toLowerCase()) {
70
+ const remainder = pathParts.slice(1).join("/");
71
+ cleanedPath = remainder ? `/${remainder}` : "/";
72
+ }
73
+ else if (pathParts.length)
74
+ cleanedPath = `/${pathParts.join("/")}`;
75
+ const portSegment = url.port ? `:${url.port}` : "";
76
+ const normalizedEndpoint = `${url.protocol}//${endpointHost}${portSegment}${cleanedPath}`.replace(/\/+$/, "");
77
+ return {
78
+ ...rawSettings,
79
+ endpoint: normalizedEndpoint,
80
+ bucket,
81
+ bucketInEndpointHost,
82
+ };
83
+ }
84
+ catch (e) {
85
+ return { ...rawSettings, endpoint, bucket };
86
+ }
87
+ };
88
+ const stripUrlPrefix = (input) => {
89
+ if (!input)
90
+ return "";
91
+ const trimmed = input.trim();
92
+ const normalizedScheme = trimmed.replace(/^(https?):\/(?!\/)/i, "$1://");
93
+ try {
94
+ const parsed = new URL(normalizedScheme);
95
+ return parsed.pathname || "";
96
+ }
97
+ catch (e) {
98
+ return trimmed.replace(/^https?:\/+[^/]+/i, "");
99
+ }
100
+ };
101
+ const cleanSegment = (segment) => {
102
+ if (!segment)
103
+ return "";
104
+ const stripped = stripUrlPrefix(segment);
105
+ const replaced = stripped.replace(/\\/g, "/");
106
+ const parts = replaced.split("/").filter((part) => part.length);
107
+ const stack = [];
108
+ for (const part of parts) {
109
+ if (part === ".")
110
+ continue;
111
+ if (part === "..")
112
+ stack.pop();
113
+ else
114
+ stack.push(part);
115
+ }
116
+ return stack.join("/");
117
+ };
118
+ const ensureTrailingSlash = (input) => {
119
+ if (!input)
120
+ return "";
121
+ return input.endsWith("/") ? input : `${input}/`;
122
+ };
123
+ const getS3Settings = () => {
124
+ const state = getStateInstance();
125
+ const raw = {
126
+ bucket: state?.getConfig("storage_s3_bucket"),
127
+ endpoint: state?.getConfig("storage_s3_endpoint"),
128
+ region: isGcsEndpoint(state?.getConfig("storage_s3_endpoint"))
129
+ ? "auto"
130
+ : state?.getConfig("storage_s3_region") || "us-east-1",
131
+ secure: !!state?.getConfig("storage_s3_secure", true),
132
+ accessKey: state?.getConfig("storage_s3_access_key"),
133
+ accessSecret: state?.getConfig("storage_s3_access_secret"),
134
+ };
135
+ return normaliseEndpointAndBucket(raw);
136
+ };
137
+ const isS3Enabled = () => !!getStateInstance()?.getConfig("storage_s3_enabled");
138
+ exports.isS3Enabled = isS3Enabled;
139
+ const getTenantRoot = () => cleanSegment(db_1.default.getTenantSchema());
140
+ const cleanRelativePath = (relPath) => {
141
+ if (!relPath)
142
+ return "";
143
+ const pathOnly = stripUrlPrefix(relPath);
144
+ if (!pathOnly || pathOnly === "/" || pathOnly === ".")
145
+ return "";
146
+ return cleanSegment(pathOnly);
147
+ };
148
+ const relativeKeyToPath = (key) => {
149
+ const root = getTenantRoot();
150
+ if (!root)
151
+ return key;
152
+ if (key === root)
153
+ return "";
154
+ if (key.startsWith(`${root}/`))
155
+ return key.slice(root.length + 1);
156
+ return key;
157
+ };
158
+ exports.relativeKeyToPath = relativeKeyToPath;
159
+ const buildKeyFromRelative = (relPath) => {
160
+ const root = getTenantRoot();
161
+ const cleanedRel = cleanRelativePath(relPath);
162
+ if (root && cleanedRel)
163
+ return `${root}/${cleanedRel}`;
164
+ if (root && !cleanedRel)
165
+ return root;
166
+ return cleanedRel;
167
+ };
168
+ exports.buildKeyFromRelative = buildKeyFromRelative;
169
+ const folderPrefix = (folder) => {
170
+ const key = (0, exports.buildKeyFromRelative)(cleanRelativePath(folder));
171
+ if (!key)
172
+ return "";
173
+ return ensureTrailingSlash(key);
174
+ };
175
+ const requireBucket = () => {
176
+ const { bucket } = getS3Settings();
177
+ if (!bucket)
178
+ throw new Error("S3 bucket is not configured");
179
+ return bucket;
180
+ };
181
+ const getResolvedBucket = () => {
182
+ const { bucket } = getS3Settings();
183
+ return bucket;
184
+ };
185
+ exports.getResolvedBucket = getResolvedBucket;
186
+ const clientCacheKey = (settings) => JSON.stringify({
187
+ endpoint: settings.endpoint,
188
+ region: settings.region,
189
+ accessKey: settings.accessKey,
190
+ accessSecret: settings.accessSecret,
191
+ });
192
+ const getS3Client = () => {
193
+ const settings = getS3Settings();
194
+ const cacheKey = clientCacheKey(settings);
195
+ if (!cachedClient || cachedClientKey !== cacheKey) {
196
+ const cfg = {
197
+ region: settings.region,
198
+ forcePathStyle: true,
199
+ };
200
+ if (settings.endpoint)
201
+ cfg.endpoint = settings.endpoint;
202
+ if (settings.accessKey && settings.accessSecret) {
203
+ cfg.credentials = {
204
+ accessKeyId: settings.accessKey,
205
+ secretAccessKey: settings.accessSecret,
206
+ };
207
+ }
208
+ const client = new client_s3_1.S3(cfg);
209
+ const isGcs = isGcsEndpoint(settings.endpoint);
210
+ // Wrap send() to (optionally) sanitize requests for GCS and to log errors
211
+ const origSend = client.send.bind(client);
212
+ client.send = async (command) => {
213
+ const name = command?.constructor?.name;
214
+ if (isGcs && command?.input) {
215
+ const input = command.input;
216
+ if (name === "PutObjectCommand") {
217
+ // GCS does reject some AWS-only headers
218
+ delete input.ACL;
219
+ delete input.StorageClass;
220
+ if (input.CacheControl == null)
221
+ delete input.CacheControl;
222
+ if (input.ServerSideEncryption == null)
223
+ delete input.ServerSideEncryption;
224
+ if (input.SSEKMSKeyId == null)
225
+ delete input.SSEKMSKeyId;
226
+ }
227
+ else if (name === "CopyObjectCommand") {
228
+ // Ensure CopySource format is acceptable to GCS and remove AWS-only headers
229
+ if (typeof input.CopySource === "string") {
230
+ const src = input.CopySource.replace(/^\/+/, "");
231
+ input.CopySource = `/${src}`;
232
+ }
233
+ delete input.ACL;
234
+ delete input.StorageClass;
235
+ if (input.ServerSideEncryption == null)
236
+ delete input.ServerSideEncryption;
237
+ if (input.SSEKMSKeyId == null)
238
+ delete input.SSEKMSKeyId;
239
+ }
240
+ }
241
+ try {
242
+ const out = await origSend(command);
243
+ return out;
244
+ }
245
+ catch (e) {
246
+ throw e;
247
+ }
248
+ };
249
+ cachedClient = client;
250
+ cachedClientKey = cacheKey;
251
+ }
252
+ return cachedClient;
253
+ };
254
+ exports.getS3Client = getS3Client;
255
+ const encodeMetadata = (meta) => {
256
+ const result = {};
257
+ for (const [key, storageKey] of Object.entries(META_KEYS)) {
258
+ const value = meta[key];
259
+ if (typeof value === "undefined" || value === null)
260
+ continue;
261
+ result[storageKey] = `${value}`;
262
+ }
263
+ return result;
264
+ };
265
+ const decodeMetadata = (meta) => {
266
+ if (!meta)
267
+ return {};
268
+ const lowered = {};
269
+ for (const [key, value] of Object.entries(meta)) {
270
+ lowered[key.toLowerCase()] = value;
271
+ }
272
+ const out = {};
273
+ if (lowered[META_KEYS.min_role_read])
274
+ out.min_role_read = +lowered[META_KEYS.min_role_read];
275
+ if (lowered[META_KEYS.user_id])
276
+ out.user_id = +lowered[META_KEYS.user_id];
277
+ if (lowered[META_KEYS.mime_super])
278
+ out.mime_super = lowered[META_KEYS.mime_super];
279
+ if (lowered[META_KEYS.mime_sub])
280
+ out.mime_sub = lowered[META_KEYS.mime_sub];
281
+ if (lowered[META_KEYS.filename])
282
+ out.filename = lowered[META_KEYS.filename];
283
+ return out;
284
+ };
285
+ const streamToBuffer = async (body) => {
286
+ if (!body)
287
+ return Buffer.alloc(0);
288
+ if (typeof body.transformToByteArray === "function") {
289
+ const arr = await body.transformToByteArray();
290
+ return Buffer.from(arr);
291
+ }
292
+ const chunks = [];
293
+ for await (const chunk of body) {
294
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
295
+ }
296
+ return Buffer.concat(chunks);
297
+ };
298
+ const listS3Folder = async (folder, opts = {}) => {
299
+ const bucket = requireBucket();
300
+ const client = (0, exports.getS3Client)();
301
+ const recursive = !!opts.recursive;
302
+ const folderRel = cleanRelativePath(folder || "");
303
+ const prefix = folderPrefix(folder || "");
304
+ const folderRelWithSlash = folderRel ? `${folderRel}/` : "";
305
+ const files = [];
306
+ const directorySet = new Set();
307
+ let ContinuationToken;
308
+ const captureDirectory = (dirPath) => {
309
+ const cleaned = cleanRelativePath(dirPath || "");
310
+ if (!cleaned)
311
+ return;
312
+ directorySet.add(cleaned);
313
+ };
314
+ const relativeWithinFolder = (relPath) => {
315
+ if (!folderRel)
316
+ return relPath;
317
+ if (relPath === folderRel)
318
+ return "";
319
+ if (relPath.startsWith(folderRelWithSlash))
320
+ return relPath.slice(folderRelWithSlash.length);
321
+ return relPath;
322
+ };
323
+ do {
324
+ const resp = await client.send(new client_s3_1.ListObjectsV2Command({
325
+ Bucket: bucket,
326
+ Prefix: prefix || undefined,
327
+ Delimiter: recursive ? undefined : "/",
328
+ ContinuationToken,
329
+ }));
330
+ const contents = resp.Contents || [];
331
+ for (const obj of contents) {
332
+ if (!obj.Key)
333
+ continue;
334
+ const isDirPlaceholder = obj.Key.endsWith("/");
335
+ const keyWithoutSlash = isDirPlaceholder
336
+ ? obj.Key.replace(/\/+$/, "")
337
+ : obj.Key;
338
+ if (!keyWithoutSlash)
339
+ continue;
340
+ const relativePath = (0, exports.relativeKeyToPath)(keyWithoutSlash);
341
+ if (isDirPlaceholder) {
342
+ const withinFolder = relativeWithinFolder(relativePath);
343
+ if (!withinFolder)
344
+ continue;
345
+ const immediateChild = withinFolder.split("/")[0];
346
+ const dirPath = folderRel
347
+ ? `${folderRel}/${immediateChild}`
348
+ : immediateChild;
349
+ captureDirectory(dirPath);
350
+ continue;
351
+ }
352
+ files.push({
353
+ key: obj.Key,
354
+ relativePath,
355
+ size: obj.Size || 0,
356
+ lastModified: obj.LastModified,
357
+ });
358
+ const withinFolder = relativeWithinFolder(relativePath);
359
+ if (withinFolder.includes("/")) {
360
+ const immediateChild = withinFolder.split("/")[0];
361
+ const dirPath = folderRel
362
+ ? `${folderRel}/${immediateChild}`
363
+ : immediateChild;
364
+ captureDirectory(dirPath);
365
+ }
366
+ }
367
+ if (!recursive) {
368
+ for (const cp of resp.CommonPrefixes || []) {
369
+ if (!cp.Prefix)
370
+ continue;
371
+ const rel = (0, exports.relativeKeyToPath)(cp.Prefix.replace(/\/$/, ""));
372
+ captureDirectory(rel);
373
+ }
374
+ }
375
+ ContinuationToken = resp.IsTruncated
376
+ ? resp.NextContinuationToken
377
+ : undefined;
378
+ } while (ContinuationToken);
379
+ const directories = Array.from(directorySet).sort();
380
+ return { files, directories };
381
+ };
382
+ exports.listS3Folder = listS3Folder;
383
+ const headObject = async (relPath) => {
384
+ const bucket = requireBucket();
385
+ const client = (0, exports.getS3Client)();
386
+ const Key = (0, exports.buildKeyFromRelative)(relPath);
387
+ try {
388
+ const resp = await client.send(new client_s3_1.HeadObjectCommand({
389
+ Bucket: bucket,
390
+ Key,
391
+ }));
392
+ return {
393
+ key: Key,
394
+ relativePath: (0, exports.relativeKeyToPath)(Key),
395
+ size: resp.ContentLength || 0,
396
+ lastModified: resp.LastModified,
397
+ metadata: decodeMetadata(resp.Metadata),
398
+ contentType: resp.ContentType,
399
+ };
400
+ }
401
+ catch (e) {
402
+ if (e?.$metadata?.httpStatusCode === 404)
403
+ return null;
404
+ throw e;
405
+ }
406
+ };
407
+ exports.headObject = headObject;
408
+ const copyWithinBucket = async (sourceKey, targetKey, metadata, contentType) => {
409
+ const bucket = requireBucket();
410
+ const client = (0, exports.getS3Client)();
411
+ const params = {
412
+ Bucket: bucket,
413
+ CopySource: encodeURI(`${bucket}/${sourceKey}`),
414
+ Key: targetKey,
415
+ };
416
+ if (metadata) {
417
+ params.MetadataDirective = "REPLACE";
418
+ params.Metadata = encodeMetadata(metadata);
419
+ if (contentType)
420
+ params.ContentType = contentType;
421
+ }
422
+ await client.send(new client_s3_1.CopyObjectCommand(params));
423
+ };
424
+ const setObjectMetadata = async (relPath, metadata) => {
425
+ const Key = (0, exports.buildKeyFromRelative)(relPath);
426
+ const existing = await (0, exports.headObject)(relPath);
427
+ await copyWithinBucket(Key, Key, metadata, existing?.contentType);
428
+ };
429
+ exports.setObjectMetadata = setObjectMetadata;
430
+ const copyObject = async (fromRelPath, toRelPath, opts = {}) => {
431
+ const sourceKey = (0, exports.buildKeyFromRelative)(fromRelPath);
432
+ const targetKey = (0, exports.buildKeyFromRelative)(toRelPath);
433
+ let metadata = opts.metadata;
434
+ let contentType;
435
+ if (opts.metadata) {
436
+ const head = await (0, exports.headObject)(fromRelPath);
437
+ contentType = head?.contentType;
438
+ }
439
+ await copyWithinBucket(sourceKey, targetKey, metadata, contentType);
440
+ };
441
+ exports.copyObject = copyObject;
442
+ const deleteObject = async (relPath) => {
443
+ const bucket = requireBucket();
444
+ const client = (0, exports.getS3Client)();
445
+ const Key = (0, exports.buildKeyFromRelative)(relPath);
446
+ await client.send(new client_s3_1.DeleteObjectCommand({ Bucket: bucket, Key }));
447
+ };
448
+ exports.deleteObject = deleteObject;
449
+ const uploadBuffer = async (relPath, buffer, mimetype, metadata) => {
450
+ const bucket = requireBucket();
451
+ const client = (0, exports.getS3Client)();
452
+ const Key = (0, exports.buildKeyFromRelative)(relPath);
453
+ await client.send(new client_s3_1.PutObjectCommand({
454
+ Bucket: bucket,
455
+ Key,
456
+ Body: buffer,
457
+ ContentType: mimetype,
458
+ Metadata: encodeMetadata(metadata),
459
+ }));
460
+ };
461
+ exports.uploadBuffer = uploadBuffer;
462
+ const downloadBuffer = async (relPath) => {
463
+ const bucket = requireBucket();
464
+ const client = (0, exports.getS3Client)();
465
+ const Key = (0, exports.buildKeyFromRelative)(relPath);
466
+ const resp = await client.send(new client_s3_1.GetObjectCommand({
467
+ Bucket: bucket,
468
+ Key,
469
+ }));
470
+ return await streamToBuffer(resp.Body);
471
+ };
472
+ exports.downloadBuffer = downloadBuffer;
473
+ const getSignedFileUrl = async (relPath, opts = {}) => {
474
+ const bucket = requireBucket();
475
+ const client = (0, exports.getS3Client)();
476
+ const Key = (0, exports.buildKeyFromRelative)(relPath);
477
+ const params = {
478
+ Bucket: bucket,
479
+ Key,
480
+ };
481
+ if (opts.download) {
482
+ const filename = opts.filename || posixPath.basename(relPath);
483
+ params.ResponseContentDisposition = `attachment; filename="${filename}"`;
484
+ }
485
+ const command = new client_s3_1.GetObjectCommand(params);
486
+ return await (0, s3_request_presigner_1.getSignedUrl)(client, command, {
487
+ expiresIn: opts.expiresIn || 300,
488
+ });
489
+ };
490
+ exports.getSignedFileUrl = getSignedFileUrl;
491
+ const getPublicFileUrl = (relPath, opts = {}) => {
492
+ const settings = getS3Settings();
493
+ const Key = (0, exports.buildKeyFromRelative)(relPath);
494
+ const endpoint = settings.endpoint || "";
495
+ const bucket = requireBucket();
496
+ const baseUrl = endpoint
497
+ ? `${endpoint.replace(/\/$/, "")}/${bucket}`
498
+ : `https://${bucket}.s3.${settings.region}.amazonaws.com`;
499
+ const url = `${baseUrl}/${encodeURI(Key)}`;
500
+ if (!opts.download)
501
+ return url;
502
+ const filename = opts.filename || posixPath.basename(relPath);
503
+ const cd = `attachment; filename="${encodeURIComponent(filename)}"`;
504
+ const joiner = url.includes("?") ? "&" : "?";
505
+ return `${url}${joiner}response-content-disposition=${cd}`;
506
+ };
507
+ exports.getPublicFileUrl = getPublicFileUrl;
508
+ const getServeUrl = async (relPath, opts = {}) => {
509
+ try {
510
+ return await (0, exports.getSignedFileUrl)(relPath, opts);
511
+ }
512
+ catch (e) {
513
+ return (0, exports.getPublicFileUrl)(relPath, opts);
514
+ }
515
+ };
516
+ exports.getServeUrl = getServeUrl;
517
+ const publicUrlToRelativePath = (url) => {
518
+ if (!url)
519
+ return null;
520
+ const trimmed = url.trim();
521
+ if (!trimmed)
522
+ return null;
523
+ const settings = getS3Settings();
524
+ const bucket = settings.bucket;
525
+ if (!bucket)
526
+ return null;
527
+ const bases = [];
528
+ const endpointBase = settings.endpoint?.replace(/\/$/, "");
529
+ if (endpointBase) {
530
+ bases.push(`${endpointBase}/${bucket}/`);
531
+ try {
532
+ const parsed = new URL(endpointBase);
533
+ const pathPrefix = parsed.pathname.replace(/\/+$/, "");
534
+ const suffix = pathPrefix ? `${pathPrefix}/` : "/";
535
+ bases.push(`${parsed.protocol}//${bucket}.${parsed.host}${suffix}`);
536
+ }
537
+ catch (e) {
538
+ const host = endpointBase.replace(/^https?:\/\//i, "");
539
+ bases.push(`https://${bucket}.${host}/`);
540
+ }
541
+ }
542
+ const region = settings.region || "us-east-1";
543
+ bases.push(`https://${bucket}.s3.${region}.amazonaws.com/`);
544
+ bases.push(`https://${bucket}.s3.amazonaws.com/`);
545
+ for (const base of bases) {
546
+ if (trimmed.startsWith(base)) {
547
+ const remainder = trimmed.slice(base.length);
548
+ const withoutQuery = remainder.split("?")[0];
549
+ try {
550
+ const decoded = decodeURI(withoutQuery);
551
+ return cleanRelativePath(decoded);
552
+ }
553
+ catch (e) {
554
+ return cleanRelativePath(withoutQuery);
555
+ }
556
+ }
557
+ }
558
+ return null;
559
+ };
560
+ exports.publicUrlToRelativePath = publicUrlToRelativePath;
561
+ //# sourceMappingURL=s3_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3_helpers.js","sourceRoot":"","sources":["../../../models/internal/s3_helpers.ts"],"names":[],"mappings":"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"}
@@ -133,7 +133,7 @@ jest.setTimeout(30000);
133
133
  catch (e) {
134
134
  error = e;
135
135
  }
136
- (0, globals_1.expect)(error.constructor.name).toBe("ReferenceError");
136
+ (0, globals_1.expect)(error.constructor.name).toContain("Error");
137
137
  });
138
138
  (0, globals_1.it)("stored existing", async () => {
139
139
  const table = await table_1.default.create("withcalcs3");