@fluxfiles/node 0.1.4 → 0.1.6
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/index.d.mts +23 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +13 -0
- package/dist/index.mjs +13 -0
- package/package.json +1 -1
- package/src/token.ts +17 -0
- package/src/types.ts +23 -0
package/dist/index.d.mts
CHANGED
|
@@ -60,6 +60,29 @@ interface BaseTokenOptions {
|
|
|
60
60
|
maxPreviewMb?: number;
|
|
61
61
|
/** TTL (seconds) for per-file gated-local stream tokens. `0`/omitted = inherit (3600). */
|
|
62
62
|
streamTokenTtl?: number;
|
|
63
|
+
/** Expose the on-demand WebP endpoint (`/api/fm/img`) for images. Omit to inherit the default (true). */
|
|
64
|
+
webpEnabled?: boolean;
|
|
65
|
+
/** Max resize width (px) a transform request may ask for. `0`/omitted = inherit (2000). */
|
|
66
|
+
webpMaxWidth?: number;
|
|
67
|
+
/** Default WebP quality when a request omits it. `0`/omitted = inherit (80). */
|
|
68
|
+
webpDefaultQuality?: number;
|
|
69
|
+
/** May this token mint clean original download URLs? Default true. `false` = preview-only
|
|
70
|
+
* (list withholds url/permanent_url/variants; GET presign is denied — only watermarked img_base). */
|
|
71
|
+
allowDownload?: boolean;
|
|
72
|
+
/** Enable on-the-fly watermark on `/api/fm/img` (source file is never modified). Default off. */
|
|
73
|
+
watermarkEnabled?: boolean;
|
|
74
|
+
/** Watermark kind: 'text' or 'logo' (a PNG path in storage). Default 'text'. */
|
|
75
|
+
watermarkType?: 'text' | 'logo';
|
|
76
|
+
/** Watermark text (for type 'text'). */
|
|
77
|
+
watermarkText?: string;
|
|
78
|
+
/** Storage path to the logo PNG (for type 'logo'); missing → text fallback. */
|
|
79
|
+
watermarkLogoPath?: string;
|
|
80
|
+
/** Position: top-left / top-right / bottom-left / bottom-right / center. Default bottom-right. */
|
|
81
|
+
watermarkPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
|
|
82
|
+
/** Opacity 0.0–1.0. Default 0.6. */
|
|
83
|
+
watermarkOpacity?: number;
|
|
84
|
+
/** Font size for text watermark. Default 24. */
|
|
85
|
+
watermarkFontSize?: number;
|
|
63
86
|
}
|
|
64
87
|
interface CreateTokenOptions extends BaseTokenOptions {
|
|
65
88
|
/** Disk names the token may access. */
|
package/dist/index.d.ts
CHANGED
|
@@ -60,6 +60,29 @@ interface BaseTokenOptions {
|
|
|
60
60
|
maxPreviewMb?: number;
|
|
61
61
|
/** TTL (seconds) for per-file gated-local stream tokens. `0`/omitted = inherit (3600). */
|
|
62
62
|
streamTokenTtl?: number;
|
|
63
|
+
/** Expose the on-demand WebP endpoint (`/api/fm/img`) for images. Omit to inherit the default (true). */
|
|
64
|
+
webpEnabled?: boolean;
|
|
65
|
+
/** Max resize width (px) a transform request may ask for. `0`/omitted = inherit (2000). */
|
|
66
|
+
webpMaxWidth?: number;
|
|
67
|
+
/** Default WebP quality when a request omits it. `0`/omitted = inherit (80). */
|
|
68
|
+
webpDefaultQuality?: number;
|
|
69
|
+
/** May this token mint clean original download URLs? Default true. `false` = preview-only
|
|
70
|
+
* (list withholds url/permanent_url/variants; GET presign is denied — only watermarked img_base). */
|
|
71
|
+
allowDownload?: boolean;
|
|
72
|
+
/** Enable on-the-fly watermark on `/api/fm/img` (source file is never modified). Default off. */
|
|
73
|
+
watermarkEnabled?: boolean;
|
|
74
|
+
/** Watermark kind: 'text' or 'logo' (a PNG path in storage). Default 'text'. */
|
|
75
|
+
watermarkType?: 'text' | 'logo';
|
|
76
|
+
/** Watermark text (for type 'text'). */
|
|
77
|
+
watermarkText?: string;
|
|
78
|
+
/** Storage path to the logo PNG (for type 'logo'); missing → text fallback. */
|
|
79
|
+
watermarkLogoPath?: string;
|
|
80
|
+
/** Position: top-left / top-right / bottom-left / bottom-right / center. Default bottom-right. */
|
|
81
|
+
watermarkPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
|
|
82
|
+
/** Opacity 0.0–1.0. Default 0.6. */
|
|
83
|
+
watermarkOpacity?: number;
|
|
84
|
+
/** Font size for text watermark. Default 24. */
|
|
85
|
+
watermarkFontSize?: number;
|
|
63
86
|
}
|
|
64
87
|
interface CreateTokenOptions extends BaseTokenOptions {
|
|
65
88
|
/** Disk names the token may access. */
|
package/dist/index.js
CHANGED
|
@@ -154,6 +154,19 @@ function applyTenantOverrides(payload, opts) {
|
|
|
154
154
|
if (opts.previewUrlTtl && opts.previewUrlTtl > 0) payload.preview_url_ttl = Math.trunc(opts.previewUrlTtl);
|
|
155
155
|
if (opts.maxPreviewMb && opts.maxPreviewMb > 0) payload.max_preview_mb = Math.trunc(opts.maxPreviewMb);
|
|
156
156
|
if (opts.streamTokenTtl && opts.streamTokenTtl > 0) payload.stream_token_ttl = Math.trunc(opts.streamTokenTtl);
|
|
157
|
+
if (opts.webpEnabled !== void 0) payload.webp_enabled = !!opts.webpEnabled;
|
|
158
|
+
if (opts.webpMaxWidth && opts.webpMaxWidth > 0) payload.webp_max_width = Math.trunc(opts.webpMaxWidth);
|
|
159
|
+
if (opts.webpDefaultQuality && opts.webpDefaultQuality > 0) payload.webp_default_quality = Math.trunc(opts.webpDefaultQuality);
|
|
160
|
+
if (opts.allowDownload !== void 0) payload.allow_download = !!opts.allowDownload;
|
|
161
|
+
if (opts.watermarkEnabled) {
|
|
162
|
+
payload.watermark_enabled = true;
|
|
163
|
+
if (opts.watermarkType) payload.watermark_type = opts.watermarkType;
|
|
164
|
+
if (opts.watermarkText) payload.watermark_text = String(opts.watermarkText);
|
|
165
|
+
if (opts.watermarkLogoPath) payload.watermark_logo_path = String(opts.watermarkLogoPath);
|
|
166
|
+
if (opts.watermarkPosition) payload.watermark_position = opts.watermarkPosition;
|
|
167
|
+
if (opts.watermarkOpacity !== void 0) payload.watermark_opacity = opts.watermarkOpacity;
|
|
168
|
+
if (opts.watermarkFontSize && opts.watermarkFontSize > 0) payload.watermark_font_size = Math.trunc(opts.watermarkFontSize);
|
|
169
|
+
}
|
|
157
170
|
}
|
|
158
171
|
function validateByobDisk(name, config) {
|
|
159
172
|
if (!config || config.driver !== "s3") {
|
package/dist/index.mjs
CHANGED
|
@@ -132,6 +132,19 @@ function applyTenantOverrides(payload, opts) {
|
|
|
132
132
|
if (opts.previewUrlTtl && opts.previewUrlTtl > 0) payload.preview_url_ttl = Math.trunc(opts.previewUrlTtl);
|
|
133
133
|
if (opts.maxPreviewMb && opts.maxPreviewMb > 0) payload.max_preview_mb = Math.trunc(opts.maxPreviewMb);
|
|
134
134
|
if (opts.streamTokenTtl && opts.streamTokenTtl > 0) payload.stream_token_ttl = Math.trunc(opts.streamTokenTtl);
|
|
135
|
+
if (opts.webpEnabled !== void 0) payload.webp_enabled = !!opts.webpEnabled;
|
|
136
|
+
if (opts.webpMaxWidth && opts.webpMaxWidth > 0) payload.webp_max_width = Math.trunc(opts.webpMaxWidth);
|
|
137
|
+
if (opts.webpDefaultQuality && opts.webpDefaultQuality > 0) payload.webp_default_quality = Math.trunc(opts.webpDefaultQuality);
|
|
138
|
+
if (opts.allowDownload !== void 0) payload.allow_download = !!opts.allowDownload;
|
|
139
|
+
if (opts.watermarkEnabled) {
|
|
140
|
+
payload.watermark_enabled = true;
|
|
141
|
+
if (opts.watermarkType) payload.watermark_type = opts.watermarkType;
|
|
142
|
+
if (opts.watermarkText) payload.watermark_text = String(opts.watermarkText);
|
|
143
|
+
if (opts.watermarkLogoPath) payload.watermark_logo_path = String(opts.watermarkLogoPath);
|
|
144
|
+
if (opts.watermarkPosition) payload.watermark_position = opts.watermarkPosition;
|
|
145
|
+
if (opts.watermarkOpacity !== void 0) payload.watermark_opacity = opts.watermarkOpacity;
|
|
146
|
+
if (opts.watermarkFontSize && opts.watermarkFontSize > 0) payload.watermark_font_size = Math.trunc(opts.watermarkFontSize);
|
|
147
|
+
}
|
|
135
148
|
}
|
|
136
149
|
function validateByobDisk(name, config) {
|
|
137
150
|
if (!config || config.driver !== "s3") {
|
package/package.json
CHANGED
package/src/token.ts
CHANGED
|
@@ -120,6 +120,23 @@ function applyTenantOverrides(payload: Record<string, unknown>, opts: BaseTokenO
|
|
|
120
120
|
if (opts.previewUrlTtl && opts.previewUrlTtl > 0) payload.preview_url_ttl = Math.trunc(opts.previewUrlTtl);
|
|
121
121
|
if (opts.maxPreviewMb && opts.maxPreviewMb > 0) payload.max_preview_mb = Math.trunc(opts.maxPreviewMb);
|
|
122
122
|
if (opts.streamTokenTtl && opts.streamTokenTtl > 0) payload.stream_token_ttl = Math.trunc(opts.streamTokenTtl);
|
|
123
|
+
|
|
124
|
+
// On-demand WebP claims.
|
|
125
|
+
if (opts.webpEnabled !== undefined) payload.webp_enabled = !!opts.webpEnabled;
|
|
126
|
+
if (opts.webpMaxWidth && opts.webpMaxWidth > 0) payload.webp_max_width = Math.trunc(opts.webpMaxWidth);
|
|
127
|
+
if (opts.webpDefaultQuality && opts.webpDefaultQuality > 0) payload.webp_default_quality = Math.trunc(opts.webpDefaultQuality);
|
|
128
|
+
|
|
129
|
+
// Download gate + watermark.
|
|
130
|
+
if (opts.allowDownload !== undefined) payload.allow_download = !!opts.allowDownload;
|
|
131
|
+
if (opts.watermarkEnabled) {
|
|
132
|
+
payload.watermark_enabled = true;
|
|
133
|
+
if (opts.watermarkType) payload.watermark_type = opts.watermarkType;
|
|
134
|
+
if (opts.watermarkText) payload.watermark_text = String(opts.watermarkText);
|
|
135
|
+
if (opts.watermarkLogoPath) payload.watermark_logo_path = String(opts.watermarkLogoPath);
|
|
136
|
+
if (opts.watermarkPosition) payload.watermark_position = opts.watermarkPosition;
|
|
137
|
+
if (opts.watermarkOpacity !== undefined) payload.watermark_opacity = opts.watermarkOpacity;
|
|
138
|
+
if (opts.watermarkFontSize && opts.watermarkFontSize > 0) payload.watermark_font_size = Math.trunc(opts.watermarkFontSize);
|
|
139
|
+
}
|
|
123
140
|
}
|
|
124
141
|
|
|
125
142
|
/**
|
package/src/types.ts
CHANGED
|
@@ -62,6 +62,29 @@ export interface BaseTokenOptions {
|
|
|
62
62
|
maxPreviewMb?: number;
|
|
63
63
|
/** TTL (seconds) for per-file gated-local stream tokens. `0`/omitted = inherit (3600). */
|
|
64
64
|
streamTokenTtl?: number;
|
|
65
|
+
/** Expose the on-demand WebP endpoint (`/api/fm/img`) for images. Omit to inherit the default (true). */
|
|
66
|
+
webpEnabled?: boolean;
|
|
67
|
+
/** Max resize width (px) a transform request may ask for. `0`/omitted = inherit (2000). */
|
|
68
|
+
webpMaxWidth?: number;
|
|
69
|
+
/** Default WebP quality when a request omits it. `0`/omitted = inherit (80). */
|
|
70
|
+
webpDefaultQuality?: number;
|
|
71
|
+
/** May this token mint clean original download URLs? Default true. `false` = preview-only
|
|
72
|
+
* (list withholds url/permanent_url/variants; GET presign is denied — only watermarked img_base). */
|
|
73
|
+
allowDownload?: boolean;
|
|
74
|
+
/** Enable on-the-fly watermark on `/api/fm/img` (source file is never modified). Default off. */
|
|
75
|
+
watermarkEnabled?: boolean;
|
|
76
|
+
/** Watermark kind: 'text' or 'logo' (a PNG path in storage). Default 'text'. */
|
|
77
|
+
watermarkType?: 'text' | 'logo';
|
|
78
|
+
/** Watermark text (for type 'text'). */
|
|
79
|
+
watermarkText?: string;
|
|
80
|
+
/** Storage path to the logo PNG (for type 'logo'); missing → text fallback. */
|
|
81
|
+
watermarkLogoPath?: string;
|
|
82
|
+
/** Position: top-left / top-right / bottom-left / bottom-right / center. Default bottom-right. */
|
|
83
|
+
watermarkPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center';
|
|
84
|
+
/** Opacity 0.0–1.0. Default 0.6. */
|
|
85
|
+
watermarkOpacity?: number;
|
|
86
|
+
/** Font size for text watermark. Default 24. */
|
|
87
|
+
watermarkFontSize?: number;
|
|
65
88
|
}
|
|
66
89
|
|
|
67
90
|
export interface CreateTokenOptions extends BaseTokenOptions {
|