@fluxfiles/node 0.1.14 → 0.1.15

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 CHANGED
@@ -104,6 +104,15 @@ interface BaseTokenOptions {
104
104
  autoOptimize?: boolean;
105
105
  /** WebP quality for optimization, 40–95. `0`/omitted = inherit the server default (82). */
106
106
  optimizeQuality?: number;
107
+ /** Target format for optimization: `'webp'` (default) or `'avif'` (falls back to
108
+ * WebP when the server build lacks AVIF). */
109
+ optimizeFormat?: 'webp' | 'avif';
110
+ /** Keep the original file when optimizing (default false = replace in place). */
111
+ optimizeKeepOriginal?: boolean;
112
+ /** Skip optimizing a file larger than this many MB (0/omitted = no limit). */
113
+ optimizeMaxMb?: number;
114
+ /** Ghostscript preset for PDF optimization. Default `'ebook'`. */
115
+ pdfLevel?: 'screen' | 'ebook' | 'printer' | 'prepress' | 'default';
107
116
  /** How an upload whose NAME collides with an existing different file is handled
108
117
  * (content dedup is separate, by hash): `'rename'` keep both `<name>-1.<ext>`
109
118
  * (default), `'overwrite'` replace in place, `'reject'` 409 for the host to prompt. */
@@ -111,6 +120,10 @@ interface BaseTokenOptions {
111
120
  /** Show dotfiles (.env, .gitignore, …) in listings + search. Default **false** —
112
121
  * dotfiles are hidden, matching Finder / cPanel / Nextcloud. */
113
122
  showHidden?: boolean;
123
+ /** Refuse byte-for-byte duplicate uploads (SHA-256). Default **false** — an
124
+ * identical re-upload is kept as a copy (like Finder / Drive / Dropbox); set true
125
+ * to save storage by blocking duplicates. */
126
+ dedupeUploads?: boolean;
114
127
  /** Allow downloading a multi-file/-folder selection as a zip (POST /api/fm/zip). Default true. */
115
128
  allowZip?: boolean;
116
129
  /** Allow extracting a zip in place (POST /api/fm/extract). Default true. */
package/dist/index.d.ts CHANGED
@@ -104,6 +104,15 @@ interface BaseTokenOptions {
104
104
  autoOptimize?: boolean;
105
105
  /** WebP quality for optimization, 40–95. `0`/omitted = inherit the server default (82). */
106
106
  optimizeQuality?: number;
107
+ /** Target format for optimization: `'webp'` (default) or `'avif'` (falls back to
108
+ * WebP when the server build lacks AVIF). */
109
+ optimizeFormat?: 'webp' | 'avif';
110
+ /** Keep the original file when optimizing (default false = replace in place). */
111
+ optimizeKeepOriginal?: boolean;
112
+ /** Skip optimizing a file larger than this many MB (0/omitted = no limit). */
113
+ optimizeMaxMb?: number;
114
+ /** Ghostscript preset for PDF optimization. Default `'ebook'`. */
115
+ pdfLevel?: 'screen' | 'ebook' | 'printer' | 'prepress' | 'default';
107
116
  /** How an upload whose NAME collides with an existing different file is handled
108
117
  * (content dedup is separate, by hash): `'rename'` keep both `<name>-1.<ext>`
109
118
  * (default), `'overwrite'` replace in place, `'reject'` 409 for the host to prompt. */
@@ -111,6 +120,10 @@ interface BaseTokenOptions {
111
120
  /** Show dotfiles (.env, .gitignore, …) in listings + search. Default **false** —
112
121
  * dotfiles are hidden, matching Finder / cPanel / Nextcloud. */
113
122
  showHidden?: boolean;
123
+ /** Refuse byte-for-byte duplicate uploads (SHA-256). Default **false** — an
124
+ * identical re-upload is kept as a copy (like Finder / Drive / Dropbox); set true
125
+ * to save storage by blocking duplicates. */
126
+ dedupeUploads?: boolean;
114
127
  /** Allow downloading a multi-file/-folder selection as a zip (POST /api/fm/zip). Default true. */
115
128
  allowZip?: boolean;
116
129
  /** Allow extracting a zip in place (POST /api/fm/extract). Default true. */
package/dist/index.js CHANGED
@@ -165,10 +165,17 @@ function applyTenantOverrides(payload, opts) {
165
165
  if (opts.allowOptimize !== void 0) payload.allow_optimize = !!opts.allowOptimize;
166
166
  if (opts.autoOptimize !== void 0) payload.auto_optimize = !!opts.autoOptimize;
167
167
  if (opts.optimizeQuality && opts.optimizeQuality > 0) payload.optimize_quality = Math.trunc(opts.optimizeQuality);
168
+ if (opts.optimizeFormat === "avif") payload.optimize_format = "avif";
169
+ if (opts.optimizeKeepOriginal !== void 0) payload.optimize_keep_original = !!opts.optimizeKeepOriginal;
170
+ if (opts.optimizeMaxMb && opts.optimizeMaxMb > 0) payload.optimize_max_mb = Math.trunc(opts.optimizeMaxMb);
171
+ if (opts.pdfLevel && ["screen", "ebook", "printer", "prepress", "default"].includes(opts.pdfLevel)) {
172
+ payload.pdf_level = opts.pdfLevel;
173
+ }
168
174
  if (opts.uploadCollision && ["rename", "overwrite", "reject"].includes(opts.uploadCollision)) {
169
175
  payload.upload_collision = opts.uploadCollision;
170
176
  }
171
177
  if (opts.showHidden !== void 0) payload.show_hidden = !!opts.showHidden;
178
+ if (opts.dedupeUploads !== void 0) payload.dedupe_uploads = !!opts.dedupeUploads;
172
179
  if (opts.allowZip !== void 0) payload.allow_zip = !!opts.allowZip;
173
180
  if (opts.allowExtract !== void 0) payload.allow_extract = !!opts.allowExtract;
174
181
  if (opts.zipMaxMb && opts.zipMaxMb > 0) payload.zip_max_mb = Math.trunc(opts.zipMaxMb);
package/dist/index.mjs CHANGED
@@ -143,10 +143,17 @@ function applyTenantOverrides(payload, opts) {
143
143
  if (opts.allowOptimize !== void 0) payload.allow_optimize = !!opts.allowOptimize;
144
144
  if (opts.autoOptimize !== void 0) payload.auto_optimize = !!opts.autoOptimize;
145
145
  if (opts.optimizeQuality && opts.optimizeQuality > 0) payload.optimize_quality = Math.trunc(opts.optimizeQuality);
146
+ if (opts.optimizeFormat === "avif") payload.optimize_format = "avif";
147
+ if (opts.optimizeKeepOriginal !== void 0) payload.optimize_keep_original = !!opts.optimizeKeepOriginal;
148
+ if (opts.optimizeMaxMb && opts.optimizeMaxMb > 0) payload.optimize_max_mb = Math.trunc(opts.optimizeMaxMb);
149
+ if (opts.pdfLevel && ["screen", "ebook", "printer", "prepress", "default"].includes(opts.pdfLevel)) {
150
+ payload.pdf_level = opts.pdfLevel;
151
+ }
146
152
  if (opts.uploadCollision && ["rename", "overwrite", "reject"].includes(opts.uploadCollision)) {
147
153
  payload.upload_collision = opts.uploadCollision;
148
154
  }
149
155
  if (opts.showHidden !== void 0) payload.show_hidden = !!opts.showHidden;
156
+ if (opts.dedupeUploads !== void 0) payload.dedupe_uploads = !!opts.dedupeUploads;
150
157
  if (opts.allowZip !== void 0) payload.allow_zip = !!opts.allowZip;
151
158
  if (opts.allowExtract !== void 0) payload.allow_extract = !!opts.allowExtract;
152
159
  if (opts.zipMaxMb && opts.zipMaxMb > 0) payload.zip_max_mb = Math.trunc(opts.zipMaxMb);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluxfiles/node",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "description": "Server-side Node/TypeScript SDK for minting FluxFiles JWTs (plain + BYOB), byte-compatible with the PHP core",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
package/src/token.ts CHANGED
@@ -135,10 +135,17 @@ function applyTenantOverrides(payload: Record<string, unknown>, opts: BaseTokenO
135
135
  if (opts.allowOptimize !== undefined) payload.allow_optimize = !!opts.allowOptimize;
136
136
  if (opts.autoOptimize !== undefined) payload.auto_optimize = !!opts.autoOptimize;
137
137
  if (opts.optimizeQuality && opts.optimizeQuality > 0) payload.optimize_quality = Math.trunc(opts.optimizeQuality);
138
+ if (opts.optimizeFormat === 'avif') payload.optimize_format = 'avif';
139
+ if (opts.optimizeKeepOriginal !== undefined) payload.optimize_keep_original = !!opts.optimizeKeepOriginal;
140
+ if (opts.optimizeMaxMb && opts.optimizeMaxMb > 0) payload.optimize_max_mb = Math.trunc(opts.optimizeMaxMb);
141
+ if (opts.pdfLevel && ['screen', 'ebook', 'printer', 'prepress', 'default'].includes(opts.pdfLevel)) {
142
+ payload.pdf_level = opts.pdfLevel;
143
+ }
138
144
  if (opts.uploadCollision && ['rename', 'overwrite', 'reject'].includes(opts.uploadCollision)) {
139
145
  payload.upload_collision = opts.uploadCollision;
140
146
  }
141
147
  if (opts.showHidden !== undefined) payload.show_hidden = !!opts.showHidden;
148
+ if (opts.dedupeUploads !== undefined) payload.dedupe_uploads = !!opts.dedupeUploads;
142
149
  if (opts.allowZip !== undefined) payload.allow_zip = !!opts.allowZip;
143
150
  if (opts.allowExtract !== undefined) payload.allow_extract = !!opts.allowExtract;
144
151
  if (opts.zipMaxMb && opts.zipMaxMb > 0) payload.zip_max_mb = Math.trunc(opts.zipMaxMb);
package/src/types.ts CHANGED
@@ -108,6 +108,15 @@ export interface BaseTokenOptions {
108
108
  autoOptimize?: boolean;
109
109
  /** WebP quality for optimization, 40–95. `0`/omitted = inherit the server default (82). */
110
110
  optimizeQuality?: number;
111
+ /** Target format for optimization: `'webp'` (default) or `'avif'` (falls back to
112
+ * WebP when the server build lacks AVIF). */
113
+ optimizeFormat?: 'webp' | 'avif';
114
+ /** Keep the original file when optimizing (default false = replace in place). */
115
+ optimizeKeepOriginal?: boolean;
116
+ /** Skip optimizing a file larger than this many MB (0/omitted = no limit). */
117
+ optimizeMaxMb?: number;
118
+ /** Ghostscript preset for PDF optimization. Default `'ebook'`. */
119
+ pdfLevel?: 'screen' | 'ebook' | 'printer' | 'prepress' | 'default';
111
120
  /** How an upload whose NAME collides with an existing different file is handled
112
121
  * (content dedup is separate, by hash): `'rename'` keep both `<name>-1.<ext>`
113
122
  * (default), `'overwrite'` replace in place, `'reject'` 409 for the host to prompt. */
@@ -115,6 +124,10 @@ export interface BaseTokenOptions {
115
124
  /** Show dotfiles (.env, .gitignore, …) in listings + search. Default **false** —
116
125
  * dotfiles are hidden, matching Finder / cPanel / Nextcloud. */
117
126
  showHidden?: boolean;
127
+ /** Refuse byte-for-byte duplicate uploads (SHA-256). Default **false** — an
128
+ * identical re-upload is kept as a copy (like Finder / Drive / Dropbox); set true
129
+ * to save storage by blocking duplicates. */
130
+ dedupeUploads?: boolean;
118
131
  /** Allow downloading a multi-file/-folder selection as a zip (POST /api/fm/zip). Default true. */
119
132
  allowZip?: boolean;
120
133
  /** Allow extracting a zip in place (POST /api/fm/extract). Default true. */