@fluixi/start 0.1.0-alpha.74 → 0.1.0-alpha.76
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/adapter.cjs +6 -4
- package/dist/adapter.d.ts +9 -9
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +13 -11
- package/dist/adapter.mjs +6 -4
- package/dist/adapters/entry.cjs +1 -1
- package/dist/adapters/entry.js +1 -1
- package/dist/adapters/entry.mjs +1 -1
- package/dist/adapters/platforms.cjs +1 -1
- package/dist/adapters/platforms.d.ts +2 -2
- package/dist/adapters/platforms.js +8 -8
- package/dist/adapters/platforms.mjs +1 -1
- package/dist/{api-RH6E5UTH.mjs → api-HD7KU3BS.mjs} +1 -1
- package/dist/api.cjs +2 -2
- package/dist/api.js +1 -1
- package/dist/api.mjs +2 -2
- package/dist/commands/{api-RH6E5UTH.mjs → api-HD7KU3BS.mjs} +1 -1
- package/dist/commands/{api-23MJFSYL.mjs → api-LTOLCZPE.mjs} +2 -2
- package/dist/commands/{api-4IYNQRKG.mjs → api-PBT4QZ34.mjs} +1 -1
- package/dist/commands/build.cjs +14 -7
- package/dist/commands/build.js +6 -6
- package/dist/commands/build.mjs +14 -7
- package/dist/commands/{chunk-OCPCK4ZJ.mjs → chunk-JACRXSN7.mjs} +2 -2
- package/dist/commands/{chunk-NS5GR2GX.mjs → chunk-MTM6M3TC.mjs} +1 -1
- package/dist/commands/dev.cjs +17 -5
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +9 -4
- package/dist/commands/dev.mjs +18 -6
- package/dist/commands/index.cjs +21 -9
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.js +1 -1
- package/dist/commands/index.mjs +22 -10
- package/dist/commands/prerender.cjs +2 -0
- package/dist/commands/prerender.d.ts +1 -1
- package/dist/commands/prerender.js +2 -2
- package/dist/commands/prerender.mjs +2 -0
- package/dist/commands/start.cjs +2 -0
- package/dist/commands/start.d.ts +1 -1
- package/dist/commands/start.js +2 -2
- package/dist/commands/start.mjs +2 -0
- package/dist/config.cjs +7 -1
- package/dist/config.d.ts +24 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -6
- package/dist/config.mjs +7 -1
- package/dist/define-config.cjs +32 -0
- package/dist/define-config.d.ts +12 -0
- package/dist/define-config.d.ts.map +1 -0
- package/dist/define-config.js +3 -0
- package/dist/define-config.mjs +7 -0
- package/dist/di.cjs +1 -1
- package/dist/di.d.ts +4 -4
- package/dist/di.d.ts.map +1 -1
- package/dist/di.js +9 -9
- package/dist/di.mjs +1 -1
- package/dist/document.d.ts +1 -1
- package/dist/document.js +1 -1
- package/dist/generated-api.cjs +1 -1
- package/dist/generated-api.js +1 -1
- package/dist/generated-api.mjs +1 -1
- package/dist/generated-server-fns.cjs +1 -1
- package/dist/generated-server-fns.mjs +1 -1
- package/dist/handler-core.cjs +1 -1
- package/dist/handler-core.d.ts +2 -2
- package/dist/handler-core.js +2 -2
- package/dist/handler-core.mjs +1 -1
- package/dist/handler.cjs +1 -0
- package/dist/handler.d.ts +3 -3
- package/dist/handler.js +3 -3
- package/dist/handler.mjs +2 -0
- package/dist/head.cjs +1 -1
- package/dist/head.d.ts +1 -1
- package/dist/head.js +1 -1
- package/dist/head.mjs +1 -1
- package/dist/image-loader.cjs +37 -0
- package/dist/image-loader.d.ts +25 -0
- package/dist/image-loader.d.ts.map +1 -0
- package/dist/image-loader.js +18 -0
- package/dist/image-loader.mjs +12 -0
- package/dist/image.cjs +13 -8
- package/dist/image.d.ts +2 -19
- package/dist/image.d.ts.map +1 -1
- package/dist/image.js +5 -21
- package/dist/image.mjs +14 -8
- package/dist/index.cjs +5 -738
- package/dist/index.d.ts +28 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -17
- package/dist/index.mjs +4 -710
- package/dist/interceptors.cjs +1 -0
- package/dist/interceptors.js +1 -1
- package/dist/interceptors.mjs +2 -0
- package/dist/internal.cjs +9 -4
- package/dist/internal.d.ts +6 -6
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +23 -15
- package/dist/internal.mjs +9 -4
- package/dist/middleware.d.ts +3 -3
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +1 -1
- package/dist/preload.cjs +1 -1
- package/dist/preload.js +1 -1
- package/dist/preload.mjs +1 -1
- package/dist/router.cjs +1 -1
- package/dist/router.d.ts +3 -3
- package/dist/router.js +3 -3
- package/dist/router.mjs +1 -1
- package/dist/server-fn-setup.cjs +1 -1
- package/dist/server-fn-setup.d.ts +1 -1
- package/dist/server-fn-setup.js +2 -2
- package/dist/server-fn-setup.mjs +1 -1
- package/dist/server-fn.cjs +1 -1
- package/dist/server-fn.d.ts +2 -2
- package/dist/server-fn.js +2 -2
- package/dist/server-fn.mjs +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/ui.cjs +1 -1
- package/dist/ui.js +1 -1
- package/dist/ui.mjs +1 -1
- package/package.json +25 -7
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A loader for `@fluixi-ui/image` that targets a `createImageHandler` route.
|
|
3
|
+
*
|
|
4
|
+
* ```tsx
|
|
5
|
+
* import { imageLoader } from '@fluixi/start';
|
|
6
|
+
* const loader = imageLoader({ path: '/api/image' });
|
|
7
|
+
* <Image src="/mug.jpg" loader={loader} widths={[120, 240, 480]} />
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export function imageLoader(options = {}) {
|
|
11
|
+
const path = options.path ?? '/api/image';
|
|
12
|
+
return ({ src, width, quality }) => {
|
|
13
|
+
const params = new URLSearchParams({ url: src, w: String(width) });
|
|
14
|
+
if (quality != null)
|
|
15
|
+
params.set('q', String(quality));
|
|
16
|
+
return `${path}?${params.toString()}`;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// src/image-loader.ts
|
|
2
|
+
function imageLoader(options = {}) {
|
|
3
|
+
const path = options.path ?? "/api/image";
|
|
4
|
+
return ({ src, width, quality }) => {
|
|
5
|
+
const params = new URLSearchParams({ url: src, w: String(width) });
|
|
6
|
+
if (quality != null) params.set("q", String(quality));
|
|
7
|
+
return `${path}?${params.toString()}`;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
imageLoader
|
|
12
|
+
};
|
package/dist/image.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/*! @fluixi/start v0.1.0-alpha.76 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
1
2
|
"use strict";
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -26,6 +27,18 @@ __export(image_exports, {
|
|
|
26
27
|
module.exports = __toCommonJS(image_exports);
|
|
27
28
|
var import_promises = require("node:fs/promises");
|
|
28
29
|
var import_node_path = require("node:path");
|
|
30
|
+
|
|
31
|
+
// src/image-loader.ts
|
|
32
|
+
function imageLoader(options = {}) {
|
|
33
|
+
const path = options.path ?? "/api/image";
|
|
34
|
+
return ({ src, width, quality }) => {
|
|
35
|
+
const params = new URLSearchParams({ url: src, w: String(width) });
|
|
36
|
+
if (quality != null) params.set("q", String(quality));
|
|
37
|
+
return `${path}?${params.toString()}`;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// src/image.ts
|
|
29
42
|
var DEFAULT_SIZES = [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840];
|
|
30
43
|
var MIME = {
|
|
31
44
|
".jpg": "image/jpeg",
|
|
@@ -131,14 +144,6 @@ function createImageHandler(options = {}) {
|
|
|
131
144
|
return imageResponse(body, contentType, maxAge);
|
|
132
145
|
};
|
|
133
146
|
}
|
|
134
|
-
function imageLoader(options = {}) {
|
|
135
|
-
const path = options.path ?? "/api/image";
|
|
136
|
-
return ({ src, width, quality }) => {
|
|
137
|
-
const params = new URLSearchParams({ url: src, w: String(width) });
|
|
138
|
-
if (quality != null) params.set("q", String(quality));
|
|
139
|
-
return `${path}?${params.toString()}`;
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
147
|
// Annotate the CommonJS export names for ESM import in node:
|
|
143
148
|
0 && (module.exports = {
|
|
144
149
|
createImageHandler,
|
package/dist/image.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export interface ImageHandlerOptions {
|
|
|
35
35
|
*
|
|
36
36
|
* ```ts
|
|
37
37
|
* // src/api/image.ts
|
|
38
|
-
* import { createImageHandler } from '@fluixi/start';
|
|
38
|
+
* import { createImageHandler } from '@fluixi/start/image';
|
|
39
39
|
* export const GET = createImageHandler({ root: 'public', domains: ['cdn.example.com'] });
|
|
40
40
|
* ```
|
|
41
41
|
*
|
|
@@ -43,22 +43,5 @@ export interface ImageHandlerOptions {
|
|
|
43
43
|
* through unchanged (so it's safe to ship either way).
|
|
44
44
|
*/
|
|
45
45
|
export declare function createImageHandler(options?: ImageHandlerOptions): (request: Request) => Promise<Response>;
|
|
46
|
-
export
|
|
47
|
-
/** Path the {@link createImageHandler} route is mounted at. Default `/api/image`. */
|
|
48
|
-
path?: string;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* A loader for `@fluixi-ui/image` that targets a {@link createImageHandler} route.
|
|
52
|
-
*
|
|
53
|
-
* ```tsx
|
|
54
|
-
* import { imageLoader } from '@fluixi/start';
|
|
55
|
-
* const loader = imageLoader({ path: '/api/image' });
|
|
56
|
-
* <Image src="/mug.jpg" loader={loader} widths={[120, 240, 480]} />
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
export declare function imageLoader(options?: ImageLoaderOptions): (args: {
|
|
60
|
-
src: string;
|
|
61
|
-
width: number;
|
|
62
|
-
quality?: number;
|
|
63
|
-
}) => string;
|
|
46
|
+
export { imageLoader, type ImageLoaderOptions } from './image-loader.js';
|
|
64
47
|
//# sourceMappingURL=image.d.ts.map
|
package/dist/image.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IACtD,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,kBAAkB,KACrB,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,2FAA2F;IAC3F,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAyCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAoE7G;
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IACtD,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,kBAAkB,KACrB,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,2FAA2F;IAC3F,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAyCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAoE7G;AAGD,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/image.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// On-demand image optimization: a Web `Request` → `Response` handler that resizes
|
|
2
2
|
// and re-encodes images (to AVIF/WebP by content negotiation), plus a matching
|
|
3
|
-
// `imageLoader` for `@fluixi-ui/image`. The actual codec is pluggable
|
|
3
|
+
// `imageLoader` for `@fluixi-ui/image`. The actual codec is pluggable, the
|
|
4
4
|
// default uses `sharp` if it's installed, otherwise it streams the source through
|
|
5
5
|
// unchanged (so the framework never hard-depends on a native module).
|
|
6
6
|
import { readFile } from 'node:fs/promises';
|
|
@@ -52,7 +52,7 @@ function imageResponse(body, contentType, maxAge) {
|
|
|
52
52
|
*
|
|
53
53
|
* ```ts
|
|
54
54
|
* // src/api/image.ts
|
|
55
|
-
* import { createImageHandler } from '@fluixi/start';
|
|
55
|
+
* import { createImageHandler } from '@fluixi/start/image';
|
|
56
56
|
* export const GET = createImageHandler({ root: 'public', domains: ['cdn.example.com'] });
|
|
57
57
|
* ```
|
|
58
58
|
*
|
|
@@ -113,7 +113,7 @@ export function createImageHandler(options = {}) {
|
|
|
113
113
|
}
|
|
114
114
|
sourceType = MIME[extname(filePath).toLowerCase()] ?? 'application/octet-stream';
|
|
115
115
|
}
|
|
116
|
-
// Vector / animated sources aren't rasterized
|
|
116
|
+
// Vector / animated sources aren't rasterized, stream them through.
|
|
117
117
|
if (sourceType === 'image/svg+xml' || sourceType === 'image/gif') {
|
|
118
118
|
return imageResponse(input, sourceType, maxAge);
|
|
119
119
|
}
|
|
@@ -134,21 +134,5 @@ export function createImageHandler(options = {}) {
|
|
|
134
134
|
return imageResponse(body, contentType, maxAge);
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
*
|
|
140
|
-
* ```tsx
|
|
141
|
-
* import { imageLoader } from '@fluixi/start';
|
|
142
|
-
* const loader = imageLoader({ path: '/api/image' });
|
|
143
|
-
* <Image src="/mug.jpg" loader={loader} widths={[120, 240, 480]} />
|
|
144
|
-
* ```
|
|
145
|
-
*/
|
|
146
|
-
export function imageLoader(options = {}) {
|
|
147
|
-
const path = options.path ?? '/api/image';
|
|
148
|
-
return ({ src, width, quality }) => {
|
|
149
|
-
const params = new URLSearchParams({ url: src, w: String(width) });
|
|
150
|
-
if (quality != null)
|
|
151
|
-
params.set('q', String(quality));
|
|
152
|
-
return `${path}?${params.toString()}`;
|
|
153
|
-
};
|
|
154
|
-
}
|
|
137
|
+
// The loader lives apart, so a page can import it without this module's `node:fs`.
|
|
138
|
+
export { imageLoader } from './image-loader.js';
|
package/dist/image.mjs
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
/*! @fluixi/start v0.1.0-alpha.76 | (c) 2026 Ibrahima Touré and Fluixi contributors | MIT */
|
|
2
|
+
|
|
1
3
|
// src/image.ts
|
|
2
4
|
import { readFile } from "node:fs/promises";
|
|
3
5
|
import { resolve as resolvePath, join, extname, sep } from "node:path";
|
|
6
|
+
|
|
7
|
+
// src/image-loader.ts
|
|
8
|
+
function imageLoader(options = {}) {
|
|
9
|
+
const path = options.path ?? "/api/image";
|
|
10
|
+
return ({ src, width, quality }) => {
|
|
11
|
+
const params = new URLSearchParams({ url: src, w: String(width) });
|
|
12
|
+
if (quality != null) params.set("q", String(quality));
|
|
13
|
+
return `${path}?${params.toString()}`;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// src/image.ts
|
|
4
18
|
var DEFAULT_SIZES = [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840];
|
|
5
19
|
var MIME = {
|
|
6
20
|
".jpg": "image/jpeg",
|
|
@@ -106,14 +120,6 @@ function createImageHandler(options = {}) {
|
|
|
106
120
|
return imageResponse(body, contentType, maxAge);
|
|
107
121
|
};
|
|
108
122
|
}
|
|
109
|
-
function imageLoader(options = {}) {
|
|
110
|
-
const path = options.path ?? "/api/image";
|
|
111
|
-
return ({ src, width, quality }) => {
|
|
112
|
-
const params = new URLSearchParams({ url: src, w: String(width) });
|
|
113
|
-
if (quality != null) params.set("q", String(quality));
|
|
114
|
-
return `${path}?${params.toString()}`;
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
123
|
export {
|
|
118
124
|
createImageHandler,
|
|
119
125
|
imageLoader
|