graphile-presigned-url-plugin 1.9.2 → 1.9.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.
- package/download-url-field.d.ts +1 -1
- package/download-url-field.js +1 -1
- package/esm/download-url-field.d.ts +1 -1
- package/esm/download-url-field.js +1 -1
- package/esm/index.d.ts +4 -4
- package/esm/index.js +3 -3
- package/esm/plugin.d.ts +1 -1
- package/esm/plugin.js +4 -4
- package/esm/preset.js +1 -1
- package/esm/s3-signer.js +1 -1
- package/esm/storage-module-cache.d.ts +1 -1
- package/esm/storage-module-cache.js +1 -1
- package/index.d.ts +4 -4
- package/index.js +15 -15
- package/package.json +5 -5
- package/plugin.d.ts +1 -1
- package/plugin.js +3 -3
- package/preset.js +1 -1
- package/storage-module-cache.d.ts +1 -1
- package/storage-module-cache.js +1 -1
package/download-url-field.d.ts
CHANGED
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* lookups. Since downloadUrl is a computed field (not a real column),
|
|
19
19
|
* the plan() function is required for Grafast to execute the S3 signing.
|
|
20
20
|
*/
|
|
21
|
-
import type { GraphileConfig } from 'graphile-config';
|
|
22
21
|
import 'graphile-build';
|
|
22
|
+
import type { GraphileConfig } from 'graphile-config';
|
|
23
23
|
import type { PresignedUrlPluginOptions } from './types';
|
|
24
24
|
export declare function createDownloadUrlPlugin(options: PresignedUrlPluginOptions): GraphileConfig.Plugin;
|
|
25
25
|
export default createDownloadUrlPlugin;
|
package/download-url-field.js
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.createDownloadUrlPlugin = createDownloadUrlPlugin;
|
|
24
24
|
require("graphile-build");
|
|
25
|
-
const grafast_1 = require("grafast");
|
|
26
25
|
const logger_1 = require("@pgpmjs/logger");
|
|
26
|
+
const grafast_1 = require("grafast");
|
|
27
27
|
const s3_signer_1 = require("./s3-signer");
|
|
28
28
|
const storage_module_cache_1 = require("./storage-module-cache");
|
|
29
29
|
const log = new logger_1.Logger('graphile-presigned-url:download-url');
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* lookups. Since downloadUrl is a computed field (not a real column),
|
|
19
19
|
* the plan() function is required for Grafast to execute the S3 signing.
|
|
20
20
|
*/
|
|
21
|
-
import type { GraphileConfig } from 'graphile-config';
|
|
22
21
|
import 'graphile-build';
|
|
22
|
+
import type { GraphileConfig } from 'graphile-config';
|
|
23
23
|
import type { PresignedUrlPluginOptions } from './types';
|
|
24
24
|
export declare function createDownloadUrlPlugin(options: PresignedUrlPluginOptions): GraphileConfig.Plugin;
|
|
25
25
|
export default createDownloadUrlPlugin;
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
* the plan() function is required for Grafast to execute the S3 signing.
|
|
20
20
|
*/
|
|
21
21
|
import 'graphile-build';
|
|
22
|
-
import { context as grafastContext, lambda, object } from 'grafast';
|
|
23
22
|
import { Logger } from '@pgpmjs/logger';
|
|
23
|
+
import { context as grafastContext, lambda, object } from 'grafast';
|
|
24
24
|
import { generatePresignedGetUrl } from './s3-signer';
|
|
25
25
|
import { loadAllStorageModules, resolveStorageConfigFromCodec } from './storage-module-cache';
|
|
26
26
|
const log = new Logger('graphile-presigned-url:download-url');
|
package/esm/index.d.ts
CHANGED
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
* };
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export { PresignedUrlPlugin, createPresignedUrlPlugin } from './plugin';
|
|
30
29
|
export { createDownloadUrlPlugin } from './download-url-field';
|
|
30
|
+
export { createPresignedUrlPlugin, PresignedUrlPlugin } from './plugin';
|
|
31
31
|
export { PresignedUrlPreset } from './preset';
|
|
32
|
-
export {
|
|
33
|
-
export {
|
|
34
|
-
export type { BucketConfig,
|
|
32
|
+
export { deleteS3Object, generatePresignedGetUrl, generatePresignedPutUrl, headObject } from './s3-signer';
|
|
33
|
+
export { clearBucketCache, clearStorageModuleCache, getBucketConfig, getStorageModuleConfig, getStorageModuleConfigForOwner, isS3BucketProvisioned, loadAllStorageModules, markS3BucketProvisioned, resolveStorageConfigFromCodec, resolveStorageModuleByFileId } from './storage-module-cache';
|
|
34
|
+
export type { BucketConfig, BucketNameResolver, EnsureBucketProvisioned, PresignedUrlPluginOptions, RequestUploadUrlInput, RequestUploadUrlPayload, S3Config, S3ConfigOrGetter, StorageModuleConfig, } from './types';
|
package/esm/index.js
CHANGED
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
* };
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export { PresignedUrlPlugin, createPresignedUrlPlugin } from './plugin';
|
|
30
29
|
export { createDownloadUrlPlugin } from './download-url-field';
|
|
30
|
+
export { createPresignedUrlPlugin, PresignedUrlPlugin } from './plugin';
|
|
31
31
|
export { PresignedUrlPreset } from './preset';
|
|
32
|
-
export {
|
|
33
|
-
export {
|
|
32
|
+
export { deleteS3Object, generatePresignedGetUrl, generatePresignedPutUrl, headObject } from './s3-signer';
|
|
33
|
+
export { clearBucketCache, clearStorageModuleCache, getBucketConfig, getStorageModuleConfig, getStorageModuleConfigForOwner, isS3BucketProvisioned, loadAllStorageModules, markS3BucketProvisioned, resolveStorageConfigFromCodec, resolveStorageModuleByFileId } from './storage-module-cache';
|
package/esm/plugin.d.ts
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
* Scope resolution uses the codec's schema/table name matched against
|
|
17
17
|
* cached storage module configs.
|
|
18
18
|
*/
|
|
19
|
-
import type { GraphileConfig } from 'graphile-config';
|
|
20
19
|
import 'graphile-build';
|
|
20
|
+
import type { GraphileConfig } from 'graphile-config';
|
|
21
21
|
import type { PresignedUrlPluginOptions } from './types';
|
|
22
22
|
export declare function createPresignedUrlPlugin(options: PresignedUrlPluginOptions): GraphileConfig.Plugin;
|
|
23
23
|
export declare const PresignedUrlPlugin: typeof createPresignedUrlPlugin;
|
package/esm/plugin.js
CHANGED
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
* Scope resolution uses the codec's schema/table name matched against
|
|
17
17
|
* cached storage module configs.
|
|
18
18
|
*/
|
|
19
|
-
import { access, context as grafastContext, lambda, object } from 'grafast';
|
|
20
19
|
import 'graphile-build';
|
|
21
20
|
import { Logger } from '@pgpmjs/logger';
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
21
|
+
import { access, context as grafastContext, lambda, object } from 'grafast';
|
|
22
|
+
import { deleteS3Object, generatePresignedPutUrl } from './s3-signer';
|
|
23
|
+
import { getBucketConfig, isS3BucketProvisioned, loadAllStorageModules, markS3BucketProvisioned, resolveStorageConfigFromCodec } from './storage-module-cache';
|
|
24
24
|
const log = new Logger('graphile-presigned-url:plugin');
|
|
25
25
|
// --- Protocol-level constants (not configurable) ---
|
|
26
26
|
const MAX_CONTENT_HASH_LENGTH = 128;
|
|
27
27
|
const MAX_CONTENT_TYPE_LENGTH = 255;
|
|
28
28
|
const MAX_CUSTOM_KEY_LENGTH = 1024;
|
|
29
29
|
const SHA256_HEX_REGEX = /^[a-f0-9]{64}$/;
|
|
30
|
-
const CUSTOM_KEY_REGEX = /^[a-zA-Z0-9][a-zA-Z0-9_
|
|
30
|
+
const CUSTOM_KEY_REGEX = /^[a-zA-Z0-9][a-zA-Z0-9_.\-/]*$/;
|
|
31
31
|
// --- Helpers ---
|
|
32
32
|
function isValidSha256(hash) {
|
|
33
33
|
return SHA256_HEX_REGEX.test(hash);
|
package/esm/preset.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* in PostGraphile. Combines the main mutation plugin (requestUploadUrl)
|
|
6
6
|
* with the downloadUrl computed field plugin.
|
|
7
7
|
*/
|
|
8
|
-
import { createPresignedUrlPlugin } from './plugin';
|
|
9
8
|
import { createDownloadUrlPlugin } from './download-url-field';
|
|
9
|
+
import { createPresignedUrlPlugin } from './plugin';
|
|
10
10
|
/**
|
|
11
11
|
* Creates a preset that includes the presigned URL plugins with the given options.
|
|
12
12
|
*
|
package/esm/s3-signer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, PutObjectCommand, } from '@aws-sdk/client-s3';
|
|
2
2
|
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
|
|
3
3
|
import { Logger } from '@pgpmjs/logger';
|
|
4
4
|
const log = new Logger('graphile-presigned-url:s3');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Logger } from '@pgpmjs/logger';
|
|
2
|
-
import { LRUCache } from 'lru-cache';
|
|
3
2
|
import { QuoteUtils } from '@pgsql/quotes';
|
|
3
|
+
import { LRUCache } from 'lru-cache';
|
|
4
4
|
const log = new Logger('graphile-presigned-url:cache');
|
|
5
5
|
// --- Defaults ---
|
|
6
6
|
const DEFAULT_UPLOAD_URL_EXPIRY_SECONDS = 900; // 15 minutes
|
package/index.d.ts
CHANGED
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
* };
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export { PresignedUrlPlugin, createPresignedUrlPlugin } from './plugin';
|
|
30
29
|
export { createDownloadUrlPlugin } from './download-url-field';
|
|
30
|
+
export { createPresignedUrlPlugin, PresignedUrlPlugin } from './plugin';
|
|
31
31
|
export { PresignedUrlPreset } from './preset';
|
|
32
|
-
export {
|
|
33
|
-
export {
|
|
34
|
-
export type { BucketConfig,
|
|
32
|
+
export { deleteS3Object, generatePresignedGetUrl, generatePresignedPutUrl, headObject } from './s3-signer';
|
|
33
|
+
export { clearBucketCache, clearStorageModuleCache, getBucketConfig, getStorageModuleConfig, getStorageModuleConfigForOwner, isS3BucketProvisioned, loadAllStorageModules, markS3BucketProvisioned, resolveStorageConfigFromCodec, resolveStorageModuleByFileId } from './storage-module-cache';
|
|
34
|
+
export type { BucketConfig, BucketNameResolver, EnsureBucketProvisioned, PresignedUrlPluginOptions, RequestUploadUrlInput, RequestUploadUrlPayload, S3Config, S3ConfigOrGetter, StorageModuleConfig, } from './types';
|
package/index.js
CHANGED
|
@@ -28,27 +28,27 @@
|
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.
|
|
32
|
-
var plugin_1 = require("./plugin");
|
|
33
|
-
Object.defineProperty(exports, "PresignedUrlPlugin", { enumerable: true, get: function () { return plugin_1.PresignedUrlPlugin; } });
|
|
34
|
-
Object.defineProperty(exports, "createPresignedUrlPlugin", { enumerable: true, get: function () { return plugin_1.createPresignedUrlPlugin; } });
|
|
31
|
+
exports.resolveStorageModuleByFileId = exports.resolveStorageConfigFromCodec = exports.markS3BucketProvisioned = exports.loadAllStorageModules = exports.isS3BucketProvisioned = exports.getStorageModuleConfigForOwner = exports.getStorageModuleConfig = exports.getBucketConfig = exports.clearStorageModuleCache = exports.clearBucketCache = exports.headObject = exports.generatePresignedPutUrl = exports.generatePresignedGetUrl = exports.deleteS3Object = exports.PresignedUrlPreset = exports.PresignedUrlPlugin = exports.createPresignedUrlPlugin = exports.createDownloadUrlPlugin = void 0;
|
|
35
32
|
var download_url_field_1 = require("./download-url-field");
|
|
36
33
|
Object.defineProperty(exports, "createDownloadUrlPlugin", { enumerable: true, get: function () { return download_url_field_1.createDownloadUrlPlugin; } });
|
|
34
|
+
var plugin_1 = require("./plugin");
|
|
35
|
+
Object.defineProperty(exports, "createPresignedUrlPlugin", { enumerable: true, get: function () { return plugin_1.createPresignedUrlPlugin; } });
|
|
36
|
+
Object.defineProperty(exports, "PresignedUrlPlugin", { enumerable: true, get: function () { return plugin_1.PresignedUrlPlugin; } });
|
|
37
37
|
var preset_1 = require("./preset");
|
|
38
38
|
Object.defineProperty(exports, "PresignedUrlPreset", { enumerable: true, get: function () { return preset_1.PresignedUrlPreset; } });
|
|
39
|
+
var s3_signer_1 = require("./s3-signer");
|
|
40
|
+
Object.defineProperty(exports, "deleteS3Object", { enumerable: true, get: function () { return s3_signer_1.deleteS3Object; } });
|
|
41
|
+
Object.defineProperty(exports, "generatePresignedGetUrl", { enumerable: true, get: function () { return s3_signer_1.generatePresignedGetUrl; } });
|
|
42
|
+
Object.defineProperty(exports, "generatePresignedPutUrl", { enumerable: true, get: function () { return s3_signer_1.generatePresignedPutUrl; } });
|
|
43
|
+
Object.defineProperty(exports, "headObject", { enumerable: true, get: function () { return s3_signer_1.headObject; } });
|
|
39
44
|
var storage_module_cache_1 = require("./storage-module-cache");
|
|
45
|
+
Object.defineProperty(exports, "clearBucketCache", { enumerable: true, get: function () { return storage_module_cache_1.clearBucketCache; } });
|
|
46
|
+
Object.defineProperty(exports, "clearStorageModuleCache", { enumerable: true, get: function () { return storage_module_cache_1.clearStorageModuleCache; } });
|
|
47
|
+
Object.defineProperty(exports, "getBucketConfig", { enumerable: true, get: function () { return storage_module_cache_1.getBucketConfig; } });
|
|
40
48
|
Object.defineProperty(exports, "getStorageModuleConfig", { enumerable: true, get: function () { return storage_module_cache_1.getStorageModuleConfig; } });
|
|
41
49
|
Object.defineProperty(exports, "getStorageModuleConfigForOwner", { enumerable: true, get: function () { return storage_module_cache_1.getStorageModuleConfigForOwner; } });
|
|
42
|
-
Object.defineProperty(exports, "getBucketConfig", { enumerable: true, get: function () { return storage_module_cache_1.getBucketConfig; } });
|
|
43
|
-
Object.defineProperty(exports, "resolveStorageModuleByFileId", { enumerable: true, get: function () { return storage_module_cache_1.resolveStorageModuleByFileId; } });
|
|
44
|
-
Object.defineProperty(exports, "loadAllStorageModules", { enumerable: true, get: function () { return storage_module_cache_1.loadAllStorageModules; } });
|
|
45
|
-
Object.defineProperty(exports, "resolveStorageConfigFromCodec", { enumerable: true, get: function () { return storage_module_cache_1.resolveStorageConfigFromCodec; } });
|
|
46
|
-
Object.defineProperty(exports, "clearStorageModuleCache", { enumerable: true, get: function () { return storage_module_cache_1.clearStorageModuleCache; } });
|
|
47
|
-
Object.defineProperty(exports, "clearBucketCache", { enumerable: true, get: function () { return storage_module_cache_1.clearBucketCache; } });
|
|
48
50
|
Object.defineProperty(exports, "isS3BucketProvisioned", { enumerable: true, get: function () { return storage_module_cache_1.isS3BucketProvisioned; } });
|
|
51
|
+
Object.defineProperty(exports, "loadAllStorageModules", { enumerable: true, get: function () { return storage_module_cache_1.loadAllStorageModules; } });
|
|
49
52
|
Object.defineProperty(exports, "markS3BucketProvisioned", { enumerable: true, get: function () { return storage_module_cache_1.markS3BucketProvisioned; } });
|
|
50
|
-
|
|
51
|
-
Object.defineProperty(exports, "
|
|
52
|
-
Object.defineProperty(exports, "generatePresignedGetUrl", { enumerable: true, get: function () { return s3_signer_1.generatePresignedGetUrl; } });
|
|
53
|
-
Object.defineProperty(exports, "deleteS3Object", { enumerable: true, get: function () { return s3_signer_1.deleteS3Object; } });
|
|
54
|
-
Object.defineProperty(exports, "headObject", { enumerable: true, get: function () { return s3_signer_1.headObject; } });
|
|
53
|
+
Object.defineProperty(exports, "resolveStorageConfigFromCodec", { enumerable: true, get: function () { return storage_module_cache_1.resolveStorageConfigFromCodec; } });
|
|
54
|
+
Object.defineProperty(exports, "resolveStorageModuleByFileId", { enumerable: true, get: function () { return storage_module_cache_1.resolveStorageModuleByFileId; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "graphile-presigned-url-plugin",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.3",
|
|
4
4
|
"description": "Presigned URL upload plugin for PostGraphile v5 — requestUploadUrl mutation and downloadUrl computed field",
|
|
5
5
|
"author": "Constructive <developers@constructive.io>",
|
|
6
6
|
"homepage": "https://github.com/constructive-io/constructive",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@aws-sdk/client-s3": "^3.1052.0",
|
|
44
44
|
"@aws-sdk/s3-request-presigner": "^3.1052.0",
|
|
45
|
-
"@pgpmjs/logger": "^2.23.
|
|
46
|
-
"@pgsql/quotes": "^18.
|
|
45
|
+
"@pgpmjs/logger": "^2.23.3",
|
|
46
|
+
"@pgsql/quotes": "^18.2.0",
|
|
47
47
|
"lru-cache": "^11.2.7"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
"postgraphile": "5.0.3"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@constructive-io/s3-utils": "^2.29.
|
|
59
|
+
"@constructive-io/s3-utils": "^2.29.3",
|
|
60
60
|
"@types/node": "^22.19.11",
|
|
61
61
|
"makage": "^0.3.0"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "c20b6be96b39bf71c0e2df0f4b51e05deacd006b"
|
|
64
64
|
}
|
package/plugin.d.ts
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
* Scope resolution uses the codec's schema/table name matched against
|
|
17
17
|
* cached storage module configs.
|
|
18
18
|
*/
|
|
19
|
-
import type { GraphileConfig } from 'graphile-config';
|
|
20
19
|
import 'graphile-build';
|
|
20
|
+
import type { GraphileConfig } from 'graphile-config';
|
|
21
21
|
import type { PresignedUrlPluginOptions } from './types';
|
|
22
22
|
export declare function createPresignedUrlPlugin(options: PresignedUrlPluginOptions): GraphileConfig.Plugin;
|
|
23
23
|
export declare const PresignedUrlPlugin: typeof createPresignedUrlPlugin;
|
package/plugin.js
CHANGED
|
@@ -20,18 +20,18 @@
|
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
exports.PresignedUrlPlugin = void 0;
|
|
22
22
|
exports.createPresignedUrlPlugin = createPresignedUrlPlugin;
|
|
23
|
-
const grafast_1 = require("grafast");
|
|
24
23
|
require("graphile-build");
|
|
25
24
|
const logger_1 = require("@pgpmjs/logger");
|
|
26
|
-
const
|
|
25
|
+
const grafast_1 = require("grafast");
|
|
27
26
|
const s3_signer_1 = require("./s3-signer");
|
|
27
|
+
const storage_module_cache_1 = require("./storage-module-cache");
|
|
28
28
|
const log = new logger_1.Logger('graphile-presigned-url:plugin');
|
|
29
29
|
// --- Protocol-level constants (not configurable) ---
|
|
30
30
|
const MAX_CONTENT_HASH_LENGTH = 128;
|
|
31
31
|
const MAX_CONTENT_TYPE_LENGTH = 255;
|
|
32
32
|
const MAX_CUSTOM_KEY_LENGTH = 1024;
|
|
33
33
|
const SHA256_HEX_REGEX = /^[a-f0-9]{64}$/;
|
|
34
|
-
const CUSTOM_KEY_REGEX = /^[a-zA-Z0-9][a-zA-Z0-9_
|
|
34
|
+
const CUSTOM_KEY_REGEX = /^[a-zA-Z0-9][a-zA-Z0-9_.\-/]*$/;
|
|
35
35
|
// --- Helpers ---
|
|
36
36
|
function isValidSha256(hash) {
|
|
37
37
|
return SHA256_HEX_REGEX.test(hash);
|
package/preset.js
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.PresignedUrlPreset = PresignedUrlPreset;
|
|
11
|
-
const plugin_1 = require("./plugin");
|
|
12
11
|
const download_url_field_1 = require("./download-url-field");
|
|
12
|
+
const plugin_1 = require("./plugin");
|
|
13
13
|
/**
|
|
14
14
|
* Creates a preset that includes the presigned URL plugins with the given options.
|
|
15
15
|
*
|
package/storage-module-cache.js
CHANGED
|
@@ -11,8 +11,8 @@ exports.markS3BucketProvisioned = markS3BucketProvisioned;
|
|
|
11
11
|
exports.clearStorageModuleCache = clearStorageModuleCache;
|
|
12
12
|
exports.clearBucketCache = clearBucketCache;
|
|
13
13
|
const logger_1 = require("@pgpmjs/logger");
|
|
14
|
-
const lru_cache_1 = require("lru-cache");
|
|
15
14
|
const quotes_1 = require("@pgsql/quotes");
|
|
15
|
+
const lru_cache_1 = require("lru-cache");
|
|
16
16
|
const log = new logger_1.Logger('graphile-presigned-url:cache');
|
|
17
17
|
// --- Defaults ---
|
|
18
18
|
const DEFAULT_UPLOAD_URL_EXPIRY_SECONDS = 900; // 15 minutes
|