@fragno-dev/core 0.2.0 → 0.2.2
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/.turbo/turbo-build.log +72 -62
- package/CHANGELOG.md +28 -0
- package/dist/api/api.d.ts +3 -2
- package/dist/api/api.d.ts.map +1 -1
- package/dist/api/api.js +2 -1
- package/dist/api/api.js.map +1 -1
- package/dist/api/bind-services.d.ts +0 -1
- package/dist/api/bind-services.d.ts.map +1 -1
- package/dist/api/bind-services.js.map +1 -1
- package/dist/api/error.d.ts.map +1 -1
- package/dist/api/error.js.map +1 -1
- package/dist/api/fragment-definition-builder.d.ts +26 -44
- package/dist/api/fragment-definition-builder.d.ts.map +1 -1
- package/dist/api/fragment-definition-builder.js +15 -22
- package/dist/api/fragment-definition-builder.js.map +1 -1
- package/dist/api/fragment-instantiator.d.ts +51 -37
- package/dist/api/fragment-instantiator.d.ts.map +1 -1
- package/dist/api/fragment-instantiator.js +74 -69
- package/dist/api/fragment-instantiator.js.map +1 -1
- package/dist/api/request-context-storage.d.ts +4 -0
- package/dist/api/request-context-storage.d.ts.map +1 -1
- package/dist/api/request-context-storage.js +6 -0
- package/dist/api/request-context-storage.js.map +1 -1
- package/dist/api/request-input-context.d.ts.map +1 -1
- package/dist/api/request-input-context.js.map +1 -1
- package/dist/api/request-middleware.d.ts +1 -1
- package/dist/api/request-middleware.d.ts.map +1 -1
- package/dist/api/request-middleware.js.map +1 -1
- package/dist/api/request-output-context.d.ts +1 -1
- package/dist/api/request-output-context.d.ts.map +1 -1
- package/dist/api/request-output-context.js.map +1 -1
- package/dist/api/route-caller.d.ts +30 -0
- package/dist/api/route-caller.d.ts.map +1 -0
- package/dist/api/route-caller.js +63 -0
- package/dist/api/route-caller.js.map +1 -0
- package/dist/api/route-handler-input-options.d.ts.map +1 -1
- package/dist/api/route.d.ts +1 -1
- package/dist/api/route.d.ts.map +1 -1
- package/dist/api/route.js.map +1 -1
- package/dist/api/shared-types.d.ts.map +1 -1
- package/dist/client/client-error.d.ts.map +1 -1
- package/dist/client/client-error.js.map +1 -1
- package/dist/client/client.d.ts +91 -52
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +25 -9
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.svelte.d.ts +6 -5
- package/dist/client/client.svelte.d.ts.map +1 -1
- package/dist/client/client.svelte.js +10 -2
- package/dist/client/client.svelte.js.map +1 -1
- package/dist/client/internal/ndjson-streaming.js.map +1 -1
- package/dist/client/react.d.ts +5 -4
- package/dist/client/react.d.ts.map +1 -1
- package/dist/client/react.js +104 -12
- package/dist/client/react.js.map +1 -1
- package/dist/client/solid.d.ts +7 -5
- package/dist/client/solid.d.ts.map +1 -1
- package/dist/client/solid.js +23 -9
- package/dist/client/solid.js.map +1 -1
- package/dist/client/vanilla.d.ts +16 -4
- package/dist/client/vanilla.d.ts.map +1 -1
- package/dist/client/vanilla.js +21 -1
- package/dist/client/vanilla.js.map +1 -1
- package/dist/client/vue.d.ts +7 -5
- package/dist/client/vue.d.ts.map +1 -1
- package/dist/client/vue.js +18 -10
- package/dist/client/vue.js.map +1 -1
- package/dist/id.d.ts +2 -0
- package/dist/id.js +3 -0
- package/dist/internal/cuid.d.ts +16 -0
- package/dist/internal/cuid.d.ts.map +1 -0
- package/dist/internal/cuid.js +82 -0
- package/dist/internal/cuid.js.map +1 -0
- package/dist/mod-client.d.ts +5 -4
- package/dist/mod-client.d.ts.map +1 -1
- package/dist/mod-client.js +7 -5
- package/dist/mod-client.js.map +1 -1
- package/dist/mod.d.ts +6 -5
- package/dist/mod.js +2 -1
- package/dist/runtime.js +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/test/test.d.ts +6 -6
- package/dist/test/test.d.ts.map +1 -1
- package/dist/test/test.js.map +1 -1
- package/dist/util/ssr.js.map +1 -1
- package/package.json +24 -40
- package/src/api/api.test.ts +3 -1
- package/src/api/api.ts +6 -0
- package/src/api/bind-services.ts +0 -5
- package/src/api/error.ts +1 -0
- package/src/api/fragment-definition-builder.extend.test.ts +2 -1
- package/src/api/fragment-definition-builder.test.ts +2 -1
- package/src/api/fragment-definition-builder.ts +49 -124
- package/src/api/fragment-instantiator.test.ts +92 -233
- package/src/api/fragment-instantiator.ts +228 -196
- package/src/api/fragment-services.test.ts +1 -0
- package/src/api/internal/path-runtime.test.ts +1 -0
- package/src/api/internal/path-type.test.ts +3 -1
- package/src/api/internal/route.test.ts +1 -0
- package/src/api/request-context-storage.ts +7 -0
- package/src/api/request-input-context.test.ts +4 -2
- package/src/api/request-input-context.ts +2 -1
- package/src/api/request-middleware.test.ts +9 -14
- package/src/api/request-middleware.ts +3 -2
- package/src/api/request-output-context.test.ts +3 -1
- package/src/api/request-output-context.ts +2 -1
- package/src/api/route-caller.test.ts +195 -0
- package/src/api/route-caller.ts +167 -0
- package/src/api/route-handler-input-options.ts +2 -1
- package/src/api/route.test.ts +4 -2
- package/src/api/route.ts +2 -1
- package/src/api/shared-types.ts +2 -1
- package/src/client/client-builder.test.ts +4 -2
- package/src/client/client-error.test.ts +2 -1
- package/src/client/client-error.ts +1 -1
- package/src/client/client-types.test.ts +19 -5
- package/src/client/client.ssr.test.ts +6 -4
- package/src/client/client.svelte.test.ts +18 -9
- package/src/client/client.svelte.ts +38 -13
- package/src/client/client.test.ts +49 -10
- package/src/client/client.ts +291 -141
- package/src/client/internal/ndjson-streaming.test.ts +6 -3
- package/src/client/internal/ndjson-streaming.ts +1 -0
- package/src/client/react.test.ts +176 -6
- package/src/client/react.ts +226 -31
- package/src/client/solid.test.ts +29 -5
- package/src/client/solid.ts +60 -22
- package/src/client/vanilla.test.ts +148 -6
- package/src/client/vanilla.ts +63 -9
- package/src/client/vue.test.ts +223 -84
- package/src/client/vue.ts +57 -30
- package/src/id.ts +1 -0
- package/src/internal/cuid.test.ts +164 -0
- package/src/internal/cuid.ts +133 -0
- package/src/mod-client.ts +4 -2
- package/src/mod.ts +3 -2
- package/src/runtime.ts +1 -1
- package/src/test/test.test.ts +4 -2
- package/src/test/test.ts +7 -9
- package/src/util/async.test.ts +1 -0
- package/src/util/content-type.test.ts +1 -0
- package/src/util/nanostores.test.ts +3 -1
- package/src/util/ssr.ts +1 -0
- package/tsconfig.json +1 -1
- package/tsdown.config.ts +1 -0
- package/vitest.config.ts +2 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,84 +1,89 @@
|
|
|
1
1
|
|
|
2
|
-
> @fragno-dev/core@0.2.
|
|
2
|
+
> @fragno-dev/core@0.2.2 build /home/runner/work/fragno/fragno/packages/fragno
|
|
3
3
|
> tsdown
|
|
4
4
|
|
|
5
5
|
[34mℹ[39m tsdown [2mv0.15.12[22m powered by rolldown [2mv1.0.0-beta.45[22m
|
|
6
6
|
[34mℹ[39m Using tsdown config: [4m/home/runner/work/fragno/fragno/packages/fragno/tsdown.config.ts[24m
|
|
7
|
-
[34mℹ[39m entry: [34msrc/mod-client.ts, src/mod.ts, src/api/api.ts, src/api/fragment-definition-builder.ts, src/api/fragment-instantiator.ts, src/api/request-context-storage.ts, src/api/route.ts, src/api/shared-types.ts, src/client/client.svelte.ts, src/client/client.ts, src/client/react.ts, src/client/solid.ts, src/client/vanilla.ts, src/client/vue.ts, src/integrations/react-ssr.ts, src/internal/symbols.ts, src/internal/trace-context.ts, src/request/request.ts, src/test/test.ts[39m
|
|
7
|
+
[34mℹ[39m entry: [34msrc/id.ts, src/mod-client.ts, src/mod.ts, src/api/api.ts, src/api/fragment-definition-builder.ts, src/api/fragment-instantiator.ts, src/api/request-context-storage.ts, src/api/route.ts, src/api/shared-types.ts, src/client/client.svelte.ts, src/client/client.ts, src/client/react.ts, src/client/solid.ts, src/client/vanilla.ts, src/client/vue.ts, src/integrations/react-ssr.ts, src/internal/symbols.ts, src/internal/trace-context.ts, src/request/request.ts, src/test/test.ts[39m
|
|
8
8
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
9
9
|
[34mℹ[39m Build start
|
|
10
|
-
[34mℹ[39m [2mdist/[22m[1mapi/fragment-instantiator.js[22m [2m22.
|
|
11
|
-
[34mℹ[39m [2mdist/[22m[1mclient/client.js[22m [
|
|
12
|
-
[34mℹ[39m [2mdist/[22m[1mapi/fragment-definition-builder.js[22m [
|
|
10
|
+
[34mℹ[39m [2mdist/[22m[1mapi/fragment-instantiator.js[22m [2m22.89 kB[22m [2m│ gzip: 5.80 kB[22m
|
|
11
|
+
[34mℹ[39m [2mdist/[22m[1mclient/client.js[22m [2m18.32 kB[22m [2m│ gzip: 4.63 kB[22m
|
|
12
|
+
[34mℹ[39m [2mdist/[22m[1mapi/fragment-definition-builder.js[22m [2m10.83 kB[22m [2m│ gzip: 2.17 kB[22m
|
|
13
|
+
[34mℹ[39m [2mdist/[22m[1mclient/react.js[22m [2m 6.63 kB[22m [2m│ gzip: 1.96 kB[22m
|
|
13
14
|
[34mℹ[39m [2mdist/[22m[1mtest/test.js[22m [2m 3.67 kB[22m [2m│ gzip: 1.31 kB[22m
|
|
14
|
-
[34mℹ[39m [2mdist/[22m[1mclient/vue.js[22m [2m 3.
|
|
15
|
-
[34mℹ[39m [2mdist/[22m[1mclient/client.svelte.js[22m [2m 3.
|
|
16
|
-
[34mℹ[39m [2mdist/[22m[1mclient/solid.js[22m [2m
|
|
17
|
-
[34mℹ[39m [2mdist/[22m[1mclient/
|
|
18
|
-
[34mℹ[39m [2mdist/[22m[1mmod-client.js[22m [2m 2.
|
|
19
|
-
[34mℹ[39m [2mdist/[22m[
|
|
20
|
-
[34mℹ[39m [2mdist/[22m[1mapi/request-context-storage.js[22m [2m 1.49 kB[22m [2m│ gzip: 0.75 kB[22m
|
|
15
|
+
[34mℹ[39m [2mdist/[22m[1mclient/vue.js[22m [2m 3.58 kB[22m [2m│ gzip: 1.14 kB[22m
|
|
16
|
+
[34mℹ[39m [2mdist/[22m[1mclient/client.svelte.js[22m [2m 3.43 kB[22m [2m│ gzip: 0.99 kB[22m
|
|
17
|
+
[34mℹ[39m [2mdist/[22m[1mclient/solid.js[22m [2m 3.37 kB[22m [2m│ gzip: 1.03 kB[22m
|
|
18
|
+
[34mℹ[39m [2mdist/[22m[1mclient/vanilla.js[22m [2m 2.74 kB[22m [2m│ gzip: 0.85 kB[22m
|
|
19
|
+
[34mℹ[39m [2mdist/[22m[1mmod-client.js[22m [2m 2.36 kB[22m [2m│ gzip: 0.79 kB[22m
|
|
20
|
+
[34mℹ[39m [2mdist/[22m[1mapi/request-context-storage.js[22m [2m 1.61 kB[22m [2m│ gzip: 0.79 kB[22m
|
|
21
21
|
[34mℹ[39m [2mdist/[22m[1mintegrations/react-ssr.js[22m [2m 1.26 kB[22m [2m│ gzip: 0.64 kB[22m
|
|
22
22
|
[34mℹ[39m [2mdist/[22m[1mapi/route.js[22m [2m 0.67 kB[22m [2m│ gzip: 0.34 kB[22m
|
|
23
23
|
[34mℹ[39m [2mdist/[22m[1minternal/trace-context.js[22m [2m 0.53 kB[22m [2m│ gzip: 0.26 kB[22m
|
|
24
|
-
[34mℹ[39m [2mdist/[22m[1mmod.js[22m [2m 0.
|
|
24
|
+
[34mℹ[39m [2mdist/[22m[1mmod.js[22m [2m 0.46 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
25
25
|
[34mℹ[39m [2mdist/[22m[1mrequest/request.js[22m [2m 0.37 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
26
|
+
[34mℹ[39m [2mdist/[22m[1mapi/api.js[22m [2m 0.32 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
26
27
|
[34mℹ[39m [2mdist/[22m[1minternal/symbols.js[22m [2m 0.31 kB[22m [2m│ gzip: 0.22 kB[22m
|
|
27
|
-
[34mℹ[39m [2mdist/[22m[
|
|
28
|
+
[34mℹ[39m [2mdist/[22m[1mid.js[22m [2m 0.08 kB[22m [2m│ gzip: 0.08 kB[22m
|
|
28
29
|
[34mℹ[39m [2mdist/[22m[1mapi/shared-types.js[22m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
29
|
-
[34mℹ[39m [2mdist/[22mapi/fragment-instantiator.js.map [
|
|
30
|
-
[34mℹ[39m [2mdist/[22mclient/client.js.map [
|
|
31
|
-
[34mℹ[39m [2mdist/[22mapi/fragment-definition-builder.js.map [
|
|
30
|
+
[34mℹ[39m [2mdist/[22mapi/fragment-instantiator.js.map [2m64.50 kB[22m [2m│ gzip: 14.88 kB[22m
|
|
31
|
+
[34mℹ[39m [2mdist/[22mclient/client.js.map [2m55.46 kB[22m [2m│ gzip: 12.39 kB[22m
|
|
32
|
+
[34mℹ[39m [2mdist/[22mapi/fragment-definition-builder.js.map [2m34.01 kB[22m [2m│ gzip: 5.28 kB[22m
|
|
33
|
+
[34mℹ[39m [2mdist/[22mclient/react.js.map [2m18.10 kB[22m [2m│ gzip: 5.31 kB[22m
|
|
32
34
|
[34mℹ[39m [2mdist/[22mapi/route.js.map [2m14.07 kB[22m [2m│ gzip: 2.38 kB[22m
|
|
35
|
+
[34mℹ[39m [2mdist/[22mclient/vue.js.map [2m12.89 kB[22m [2m│ gzip: 3.42 kB[22m
|
|
36
|
+
[34mℹ[39m [2mdist/[22mclient/client.d.ts.map [2m12.66 kB[22m [2m│ gzip: 4.74 kB[22m
|
|
37
|
+
[34mℹ[39m [2mdist/[22mclient/solid.js.map [2m12.52 kB[22m [2m│ gzip: 3.13 kB[22m
|
|
38
|
+
[34mℹ[39m [2mdist/[22mclient/client.svelte.js.map [2m12.34 kB[22m [2m│ gzip: 3.01 kB[22m
|
|
39
|
+
[34mℹ[39m [2mdist/[22mapi/fragment-instantiator.d.ts.map [2m11.86 kB[22m [2m│ gzip: 4.53 kB[22m
|
|
33
40
|
[34mℹ[39m [2mdist/[22mapi/internal/path.js.map [2m11.83 kB[22m [2m│ gzip: 3.06 kB[22m
|
|
34
|
-
[34mℹ[39m [2mdist/[22mclient/
|
|
35
|
-
[34mℹ[39m [2mdist/[
|
|
36
|
-
[34mℹ[39m [2mdist/[22mapi/request-input-context.js.map [2m11.05 kB[22m [2m│ gzip: 3.01 kB[22m
|
|
37
|
-
[34mℹ[39m [2mdist/[22mclient/solid.js.map [2m11.00 kB[22m [2m│ gzip: 2.79 kB[22m
|
|
41
|
+
[34mℹ[39m [2mdist/[22mclient/vanilla.js.map [2m11.52 kB[22m [2m│ gzip: 2.95 kB[22m
|
|
42
|
+
[34mℹ[39m [2mdist/[22mapi/request-input-context.js.map [2m11.06 kB[22m [2m│ gzip: 3.01 kB[22m
|
|
38
43
|
[34mℹ[39m [2mdist/[22mclient/internal/ndjson-streaming.js.map [2m10.96 kB[22m [2m│ gzip: 3.00 kB[22m
|
|
39
|
-
[34mℹ[39m [2mdist/[
|
|
40
|
-
[34mℹ[39m [2mdist/[
|
|
41
|
-
[34mℹ[39m [2mdist/[
|
|
42
|
-
[34mℹ[39m [2mdist/[
|
|
43
|
-
[34mℹ[39m [2mdist/[
|
|
44
|
-
[34mℹ[39m [2mdist/[
|
|
45
|
-
[34mℹ[39m [2mdist/[22mapi/request-output-context.js.map [2m 7.53 kB[22m [2m│ gzip: 2.29 kB[22m
|
|
46
|
-
[34mℹ[39m [2mdist/[22mmod-client.js.map [2m 6.52 kB[22m [2m│ gzip: 1.78 kB[22m
|
|
47
|
-
[34mℹ[39m [2mdist/[22mclient/client-error.js.map [2m 5.88 kB[22m [2m│ gzip: 1.70 kB[22m
|
|
44
|
+
[34mℹ[39m [2mdist/[22mtest/test.js.map [2m 8.73 kB[22m [2m│ gzip: 2.48 kB[22m
|
|
45
|
+
[34mℹ[39m [2mdist/[22mapi/fragment-definition-builder.d.ts.map [2m 8.13 kB[22m [2m│ gzip: 3.19 kB[22m
|
|
46
|
+
[34mℹ[39m [2mdist/[22mapi/route-caller.js.map [2m 7.74 kB[22m [2m│ gzip: 2.34 kB[22m
|
|
47
|
+
[34mℹ[39m [2mdist/[22mapi/request-output-context.js.map [2m 7.54 kB[22m [2m│ gzip: 2.29 kB[22m
|
|
48
|
+
[34mℹ[39m [2mdist/[22mmod-client.js.map [2m 6.65 kB[22m [2m│ gzip: 1.83 kB[22m
|
|
49
|
+
[34mℹ[39m [2mdist/[22mclient/client-error.js.map [2m 5.89 kB[22m [2m│ gzip: 1.71 kB[22m
|
|
48
50
|
[34mℹ[39m [2mdist/[22mapi/route.d.ts.map [2m 5.79 kB[22m [2m│ gzip: 2.19 kB[22m
|
|
49
|
-
[34mℹ[39m [2mdist/[22mapi/request-middleware.js.map [2m 5.
|
|
51
|
+
[34mℹ[39m [2mdist/[22mapi/request-middleware.js.map [2m 5.69 kB[22m [2m│ gzip: 1.97 kB[22m
|
|
52
|
+
[34mℹ[39m [2mdist/[22minternal/cuid.js.map [2m 5.58 kB[22m [2m│ gzip: 2.03 kB[22m
|
|
50
53
|
[34mℹ[39m [2mdist/[22mapi/request-input-context.js [2m 5.34 kB[22m [2m│ gzip: 1.58 kB[22m
|
|
51
|
-
[34mℹ[39m [2mdist/[22mapi/api.js.map [2m 5.
|
|
54
|
+
[34mℹ[39m [2mdist/[22mapi/api.js.map [2m 5.32 kB[22m [2m│ gzip: 1.42 kB[22m
|
|
52
55
|
[34mℹ[39m [2mdist/[22mclient/internal/ndjson-streaming.js [2m 4.96 kB[22m [2m│ gzip: 1.46 kB[22m
|
|
53
56
|
[34mℹ[39m [2mdist/[22mapi/internal/response-stream.js.map [2m 4.28 kB[22m [2m│ gzip: 1.80 kB[22m
|
|
54
57
|
[34mℹ[39m [2mdist/[22mapi/fragno-response.js.map [2m 4.18 kB[22m [2m│ gzip: 1.47 kB[22m
|
|
55
58
|
[34mℹ[39m [2mdist/[22mutil/async.js.map [2m 3.84 kB[22m [2m│ gzip: 1.53 kB[22m
|
|
56
59
|
[34mℹ[39m [2mdist/[22mapi/mutable-request-state.js.map [2m 3.76 kB[22m [2m│ gzip: 1.34 kB[22m
|
|
60
|
+
[34mℹ[39m [2mdist/[22mclient/vanilla.d.ts.map [2m 3.66 kB[22m [2m│ gzip: 1.36 kB[22m
|
|
57
61
|
[34mℹ[39m [2mdist/[22mapi/request-output-context.js [2m 3.38 kB[22m [2m│ gzip: 1.02 kB[22m
|
|
58
62
|
[34mℹ[39m [2mdist/[22mutil/content-type.js.map [2m 3.24 kB[22m [2m│ gzip: 1.23 kB[22m
|
|
59
63
|
[34mℹ[39m [2mdist/[22mclient/client-error.js [2m 3.17 kB[22m [2m│ gzip: 0.91 kB[22m
|
|
60
|
-
[34mℹ[39m [2mdist/[
|
|
61
|
-
[34mℹ[39m [2mdist/[
|
|
62
|
-
[34mℹ[39m [2mdist/[
|
|
63
|
-
[34mℹ[39m [2mdist/[22mclient/react.d.ts.map [2m 2.
|
|
64
|
-
[34mℹ[39m [2mdist/[
|
|
65
|
-
[34mℹ[39m [2mdist/[
|
|
64
|
+
[34mℹ[39m [2mdist/[22mapi/request-context-storage.js.map [2m 3.14 kB[22m [2m│ gzip: 1.28 kB[22m
|
|
65
|
+
[34mℹ[39m [2mdist/[22mclient/solid.d.ts.map [2m 3.05 kB[22m [2m│ gzip: 1.33 kB[22m
|
|
66
|
+
[34mℹ[39m [2mdist/[22mutil/ssr.js.map [2m 2.96 kB[22m [2m│ gzip: 1.24 kB[22m
|
|
67
|
+
[34mℹ[39m [2mdist/[22mclient/react.d.ts.map [2m 2.91 kB[22m [2m│ gzip: 1.26 kB[22m
|
|
68
|
+
[34mℹ[39m [2mdist/[22mapi/route-caller.js [2m 2.90 kB[22m [2m│ gzip: 0.96 kB[22m
|
|
69
|
+
[34mℹ[39m [2mdist/[22minternal/cuid.js [2m 2.90 kB[22m [2m│ gzip: 1.14 kB[22m
|
|
70
|
+
[34mℹ[39m [2mdist/[22mclient/vue.d.ts.map [2m 2.85 kB[22m [2m│ gzip: 1.23 kB[22m
|
|
71
|
+
[34mℹ[39m [2mdist/[22mclient/client.svelte.d.ts.map [2m 2.69 kB[22m [2m│ gzip: 1.12 kB[22m
|
|
66
72
|
[34mℹ[39m [2mdist/[22mclient/internal/fetcher-merge.js.map [2m 2.44 kB[22m [2m│ gzip: 0.96 kB[22m
|
|
67
73
|
[34mℹ[39m [2mdist/[22mutil/nanostores.js.map [2m 2.43 kB[22m [2m│ gzip: 0.87 kB[22m
|
|
68
74
|
[34mℹ[39m [2mdist/[22mapi/mutable-request-state.js [2m 2.40 kB[22m [2m│ gzip: 0.91 kB[22m
|
|
69
|
-
[34mℹ[39m [2mdist/[22mclient/client.svelte.d.ts.map [2m 2.32 kB[22m [2m│ gzip: 0.97 kB[22m
|
|
70
75
|
[34mℹ[39m [2mdist/[22mapi/internal/path.js [2m 2.23 kB[22m [2m│ gzip: 0.79 kB[22m
|
|
71
76
|
[34mℹ[39m [2mdist/[22mapi/request-middleware.js [2m 2.17 kB[22m [2m│ gzip: 0.79 kB[22m
|
|
72
|
-
[34mℹ[39m [2mdist/[22mruntime.js.map [2m 2.
|
|
73
|
-
[34mℹ[39m [2mdist/[22mapi/api.d.ts.map [2m
|
|
77
|
+
[34mℹ[39m [2mdist/[22mruntime.js.map [2m 2.02 kB[22m [2m│ gzip: 0.85 kB[22m
|
|
78
|
+
[34mℹ[39m [2mdist/[22mapi/api.d.ts.map [2m 2.02 kB[22m [2m│ gzip: 0.90 kB[22m
|
|
74
79
|
[34mℹ[39m [2mdist/[22mapi/error.js.map [2m 1.96 kB[22m [2m│ gzip: 0.76 kB[22m
|
|
75
|
-
[34mℹ[39m [2mdist/[22mapi/bind-services.js.map [2m 1.
|
|
80
|
+
[34mℹ[39m [2mdist/[22mapi/bind-services.js.map [2m 1.78 kB[22m [2m│ gzip: 0.79 kB[22m
|
|
76
81
|
[34mℹ[39m [2mdist/[22mapi/internal/response-stream.js [2m 1.76 kB[22m [2m│ gzip: 0.73 kB[22m
|
|
77
82
|
[34mℹ[39m [2mdist/[22mapi/request-input-context.d.ts.map [2m 1.67 kB[22m [2m│ gzip: 0.72 kB[22m
|
|
78
83
|
[34mℹ[39m [2mdist/[22mintegrations/react-ssr.js.map [2m 1.65 kB[22m [2m│ gzip: 0.84 kB[22m
|
|
79
84
|
[34mℹ[39m [2mdist/[22mapi/fragno-response.js [2m 1.65 kB[22m [2m│ gzip: 0.69 kB[22m
|
|
80
|
-
[34mℹ[39m [2mdist/[22mtest/test.d.ts.map [2m 1.64 kB[22m [2m│ gzip: 0.76 kB[22m
|
|
81
85
|
[34mℹ[39m [2mdist/[22mutil/content-type.js [2m 1.61 kB[22m [2m│ gzip: 0.69 kB[22m
|
|
86
|
+
[34mℹ[39m [2mdist/[22mapi/route-caller.d.ts.map [2m 1.58 kB[22m [2m│ gzip: 0.76 kB[22m
|
|
82
87
|
[34mℹ[39m [2mdist/[22mapi/internal/path.d.ts.map [2m 1.58 kB[22m [2m│ gzip: 0.72 kB[22m
|
|
83
88
|
[34mℹ[39m [2mdist/[22mapi/request-middleware.d.ts.map [2m 1.53 kB[22m [2m│ gzip: 0.71 kB[22m
|
|
84
89
|
[34mℹ[39m [2mdist/[22minternal/trace-context.js.map [2m 1.36 kB[22m [2m│ gzip: 0.61 kB[22m
|
|
@@ -88,19 +93,21 @@
|
|
|
88
93
|
[34mℹ[39m [2mdist/[22mutil/nanostores.js [2m 1.25 kB[22m [2m│ gzip: 0.47 kB[22m
|
|
89
94
|
[34mℹ[39m [2mdist/[22mclient/internal/fetcher-merge.js [2m 1.23 kB[22m [2m│ gzip: 0.55 kB[22m
|
|
90
95
|
[34mℹ[39m [2mdist/[22mutil/async.js [2m 1.19 kB[22m [2m│ gzip: 0.57 kB[22m
|
|
96
|
+
[34mℹ[39m [2mdist/[22mtest/test.d.ts.map [2m 1.11 kB[22m [2m│ gzip: 0.56 kB[22m
|
|
91
97
|
[34mℹ[39m [2mdist/[22mapi/error.js [2m 0.96 kB[22m [2m│ gzip: 0.38 kB[22m
|
|
92
98
|
[34mℹ[39m [2mdist/[22mruntime.js [2m 0.94 kB[22m [2m│ gzip: 0.51 kB[22m
|
|
93
99
|
[34mℹ[39m [2mdist/[22mapi/bind-services.js [2m 0.79 kB[22m [2m│ gzip: 0.40 kB[22m
|
|
94
100
|
[34mℹ[39m [2mdist/[22mapi/error.d.ts.map [2m 0.58 kB[22m [2m│ gzip: 0.29 kB[22m
|
|
95
|
-
[34mℹ[39m [2mdist/[22mhttp/http-status.d.ts.map [2m 0.56 kB[22m [2m│ gzip: 0.25 kB[22m
|
|
96
101
|
[34mℹ[39m [2mdist/[22mapi/request-context-storage.d.ts.map [2m 0.56 kB[22m [2m│ gzip: 0.31 kB[22m
|
|
102
|
+
[34mℹ[39m [2mdist/[22mhttp/http-status.d.ts.map [2m 0.56 kB[22m [2m│ gzip: 0.25 kB[22m
|
|
97
103
|
[34mℹ[39m [2mdist/[22mapi/route-handler-input-options.d.ts.map [2m 0.54 kB[22m [2m│ gzip: 0.29 kB[22m
|
|
98
104
|
[34mℹ[39m [2mdist/[22mapi/internal/route.js.map [2m 0.50 kB[22m [2m│ gzip: 0.32 kB[22m
|
|
99
105
|
[34mℹ[39m [2mdist/[22minternal/trace-context.d.ts.map [2m 0.48 kB[22m [2m│ gzip: 0.27 kB[22m
|
|
100
|
-
[34mℹ[39m [2mdist/[22mapi/bind-services.d.ts.map [2m 0.
|
|
106
|
+
[34mℹ[39m [2mdist/[22mapi/bind-services.d.ts.map [2m 0.41 kB[22m [2m│ gzip: 0.25 kB[22m
|
|
101
107
|
[34mℹ[39m [2mdist/[22mapi/internal/response-stream.d.ts.map [2m 0.37 kB[22m [2m│ gzip: 0.26 kB[22m
|
|
102
108
|
[34mℹ[39m [2mdist/[22mapi/fragno-response.d.ts.map [2m 0.37 kB[22m [2m│ gzip: 0.23 kB[22m
|
|
103
109
|
[34mℹ[39m [2mdist/[22minternal/symbols.js.map [2m 0.35 kB[22m [2m│ gzip: 0.26 kB[22m
|
|
110
|
+
[34mℹ[39m [2mdist/[22minternal/cuid.d.ts.map [2m 0.32 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
104
111
|
[34mℹ[39m [2mdist/[22mapi/shared-types.d.ts.map [2m 0.31 kB[22m [2m│ gzip: 0.23 kB[22m
|
|
105
112
|
[34mℹ[39m [2mdist/[22mapi/internal/route.js [2m 0.28 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
106
113
|
[34mℹ[39m [2mdist/[22mapi/mutable-request-state.d.ts.map [2m 0.28 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
@@ -109,38 +116,41 @@
|
|
|
109
116
|
[34mℹ[39m [2mdist/[22mruntime.d.ts.map [2m 0.19 kB[22m [2m│ gzip: 0.15 kB[22m
|
|
110
117
|
[34mℹ[39m [2mdist/[22mmod-client.d.ts.map [2m 0.16 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
111
118
|
[34mℹ[39m [2mdist/[22minternal/symbols.d.ts.map [2m 0.14 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
112
|
-
[34mℹ[39m [2mdist/[22m[32m[1mapi/fragment-
|
|
113
|
-
[34mℹ[39m [2mdist/[22m[32m[
|
|
114
|
-
[34mℹ[39m [2mdist/[22m[32m[
|
|
115
|
-
[34mℹ[39m [2mdist/[22m[32m[1mapi/route.d.ts[22m[39m [2m 7.07 kB[22m [2m│ gzip: 1.
|
|
116
|
-
[34mℹ[39m [2mdist/[22m[32m[1mtest/test.d.ts[22m[39m [2m 5.
|
|
117
|
-
[34mℹ[39m [2mdist/[22m[32m[
|
|
118
|
-
[34mℹ[39m [2mdist/[22m[32m[
|
|
119
|
-
[34mℹ[39m [2mdist/[22m[32m[1mclient/react.d.ts[22m[39m [2m 3.
|
|
120
|
-
[34mℹ[39m [2mdist/[22m[32m[1mclient/
|
|
121
|
-
[34mℹ[39m [2mdist/[22m[32m[1mclient/
|
|
122
|
-
[34mℹ[39m [2mdist/[22m[32m[1mclient/client.svelte.d.ts[22m[39m [2m
|
|
123
|
-
[34mℹ[39m [2mdist/[22m[32m[1mapi/request-context-storage.d.ts[22m[39m [2m 1.
|
|
124
|
-
[34mℹ[39m [2mdist/[22m[32m[1mmod-client.d.ts[22m[39m [2m 1.
|
|
125
|
-
[34mℹ[39m [2mdist/[22m[32m[1mmod.d.ts[22m[39m [2m 1.
|
|
119
|
+
[34mℹ[39m [2mdist/[22m[32m[1mapi/fragment-instantiator.d.ts[22m[39m [2m17.61 kB[22m [2m│ gzip: 3.87 kB[22m
|
|
120
|
+
[34mℹ[39m [2mdist/[22m[32m[1mclient/client.d.ts[22m[39m [2m17.01 kB[22m [2m│ gzip: 3.54 kB[22m
|
|
121
|
+
[34mℹ[39m [2mdist/[22m[32m[1mapi/fragment-definition-builder.d.ts[22m[39m [2m15.52 kB[22m [2m│ gzip: 3.08 kB[22m
|
|
122
|
+
[34mℹ[39m [2mdist/[22m[32m[1mapi/route.d.ts[22m[39m [2m 7.07 kB[22m [2m│ gzip: 1.08 kB[22m
|
|
123
|
+
[34mℹ[39m [2mdist/[22m[32m[1mtest/test.d.ts[22m[39m [2m 5.25 kB[22m [2m│ gzip: 1.56 kB[22m
|
|
124
|
+
[34mℹ[39m [2mdist/[22m[32m[1mclient/vanilla.d.ts[22m[39m [2m 4.42 kB[22m [2m│ gzip: 1.21 kB[22m
|
|
125
|
+
[34mℹ[39m [2mdist/[22m[32m[1mapi/api.d.ts[22m[39m [2m 4.10 kB[22m [2m│ gzip: 1.21 kB[22m
|
|
126
|
+
[34mℹ[39m [2mdist/[22m[32m[1mclient/react.d.ts[22m[39m [2m 3.75 kB[22m [2m│ gzip: 1.24 kB[22m
|
|
127
|
+
[34mℹ[39m [2mdist/[22m[32m[1mclient/solid.d.ts[22m[39m [2m 3.68 kB[22m [2m│ gzip: 1.04 kB[22m
|
|
128
|
+
[34mℹ[39m [2mdist/[22m[32m[1mclient/vue.d.ts[22m[39m [2m 3.54 kB[22m [2m│ gzip: 1.09 kB[22m
|
|
129
|
+
[34mℹ[39m [2mdist/[22m[32m[1mclient/client.svelte.d.ts[22m[39m [2m 3.27 kB[22m [2m│ gzip: 0.90 kB[22m
|
|
130
|
+
[34mℹ[39m [2mdist/[22m[32m[1mapi/request-context-storage.d.ts[22m[39m [2m 1.88 kB[22m [2m│ gzip: 0.83 kB[22m
|
|
131
|
+
[34mℹ[39m [2mdist/[22m[32m[1mmod-client.d.ts[22m[39m [2m 1.52 kB[22m [2m│ gzip: 0.49 kB[22m
|
|
132
|
+
[34mℹ[39m [2mdist/[22m[32m[1mmod.d.ts[22m[39m [2m 1.40 kB[22m [2m│ gzip: 0.40 kB[22m
|
|
126
133
|
[34mℹ[39m [2mdist/[22m[32m[1mapi/shared-types.d.ts[22m[39m [2m 1.21 kB[22m [2m│ gzip: 0.51 kB[22m
|
|
127
134
|
[34mℹ[39m [2mdist/[22m[32m[1minternal/trace-context.d.ts[22m[39m [2m 0.84 kB[22m [2m│ gzip: 0.38 kB[22m
|
|
128
135
|
[34mℹ[39m [2mdist/[22m[32m[1mintegrations/react-ssr.d.ts[22m[39m [2m 0.78 kB[22m [2m│ gzip: 0.38 kB[22m
|
|
129
136
|
[34mℹ[39m [2mdist/[22m[32m[1mrequest/request.d.ts[22m[39m [2m 0.48 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
130
137
|
[34mℹ[39m [2mdist/[22m[32m[1minternal/symbols.d.ts[22m[39m [2m 0.32 kB[22m [2m│ gzip: 0.22 kB[22m
|
|
138
|
+
[34mℹ[39m [2mdist/[22m[32m[1mid.d.ts[22m[39m [2m 0.08 kB[22m [2m│ gzip: 0.08 kB[22m
|
|
131
139
|
[34mℹ[39m [2mdist/[22m[32mapi/request-input-context.d.ts[39m [2m 4.59 kB[22m [2m│ gzip: 1.42 kB[22m
|
|
132
140
|
[34mℹ[39m [2mdist/[22m[32mapi/internal/path.d.ts[39m [2m 2.91 kB[22m [2m│ gzip: 0.97 kB[22m
|
|
133
141
|
[34mℹ[39m [2mdist/[22m[32mapi/request-middleware.d.ts[39m [2m 2.55 kB[22m [2m│ gzip: 0.90 kB[22m
|
|
134
142
|
[34mℹ[39m [2mdist/[22m[32mclient/client-error.d.ts[39m [2m 2.45 kB[22m [2m│ gzip: 0.81 kB[22m
|
|
135
143
|
[34mℹ[39m [2mdist/[22m[32mapi/mutable-request-state.d.ts[39m [2m 2.29 kB[22m [2m│ gzip: 0.90 kB[22m
|
|
144
|
+
[34mℹ[39m [2mdist/[22m[32mapi/route-caller.d.ts[39m [2m 2.02 kB[22m [2m│ gzip: 0.68 kB[22m
|
|
136
145
|
[34mℹ[39m [2mdist/[22m[32mapi/request-output-context.d.ts[39m [2m 1.64 kB[22m [2m│ gzip: 0.64 kB[22m
|
|
137
146
|
[34mℹ[39m [2mdist/[22m[32mapi/internal/response-stream.d.ts[39m [2m 1.33 kB[22m [2m│ gzip: 0.71 kB[22m
|
|
138
147
|
[34mℹ[39m [2mdist/[22m[32mhttp/http-status.d.ts[39m [2m 1.26 kB[22m [2m│ gzip: 0.60 kB[22m
|
|
139
148
|
[34mℹ[39m [2mdist/[22m[32mapi/route-handler-input-options.d.ts[39m [2m 0.72 kB[22m [2m│ gzip: 0.38 kB[22m
|
|
140
149
|
[34mℹ[39m [2mdist/[22m[32mapi/error.d.ts[39m [2m 0.72 kB[22m [2m│ gzip: 0.33 kB[22m
|
|
141
150
|
[34mℹ[39m [2mdist/[22m[32mapi/fragno-response.d.ts[39m [2m 0.60 kB[22m [2m│ gzip: 0.30 kB[22m
|
|
142
|
-
[34mℹ[39m [2mdist/[22m[32mapi/bind-services.d.ts[39m [2m 0.42 kB[22m [2m│ gzip: 0.25 kB[22m
|
|
143
151
|
[34mℹ[39m [2mdist/[22m[32mutil/types-util.d.ts[39m [2m 0.35 kB[22m [2m│ gzip: 0.23 kB[22m
|
|
152
|
+
[34mℹ[39m [2mdist/[22m[32minternal/cuid.d.ts[39m [2m 0.33 kB[22m [2m│ gzip: 0.21 kB[22m
|
|
144
153
|
[34mℹ[39m [2mdist/[22m[32mruntime.d.ts[39m [2m 0.33 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
145
|
-
[34mℹ[39m
|
|
146
|
-
[
|
|
154
|
+
[34mℹ[39m [2mdist/[22m[32mapi/bind-services.d.ts[39m [2m 0.30 kB[22m [2m│ gzip: 0.21 kB[22m
|
|
155
|
+
[34mℹ[39m 145 files, total: 677.68 kB
|
|
156
|
+
[32m✔[39m Build complete in [32m7969ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @fragno-dev/core
|
|
2
2
|
|
|
3
|
+
## 0.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 0020e39: fix: align nanostores dependencies on version 1.2 across Fragno packages
|
|
8
|
+
|
|
9
|
+
## 0.2.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 3e2ff94: feat: register schemas via adapter registry and mount internal routes
|
|
14
|
+
- f34d7d7: fix: ensure cross-schema durable hook enqueuing works reliably
|
|
15
|
+
- 4d141f8: fix: remove development exports from published packages
|
|
16
|
+
- c8841b5: feat: add callServices helper with implicit request context
|
|
17
|
+
- 83f6223: feat: support createStore factory callbacks for per-consumer client stores
|
|
18
|
+
- 567c3b3: feat: add default org preference helpers and session seeding
|
|
19
|
+
- 8a2da9d: fix: infer route caller input and output types from fragment routes.
|
|
20
|
+
- 93fa469: fix: replace cuid2 with a shared Web Crypto id generator
|
|
21
|
+
- b3ad7eb: fix: lazily initialize createId randomness for Workers-safe startup
|
|
22
|
+
- 9eeba53: feat: add internal fragment describe metadata and adapter identity
|
|
23
|
+
- 2ae432c: fix: allow optional request bodies when input schema allows undefined
|
|
24
|
+
- 9f87189: fix: preserve explicit content-type behavior for binary request bodies
|
|
25
|
+
- 0f9b7ef: refactor: replace linked fragments with internal routes
|
|
26
|
+
- f4aedad: feat: add createRouteCaller helper for custom fetch targets
|
|
27
|
+
- f042c9d: feat: add typed workflow state restore support
|
|
28
|
+
- 7bda0b2: feat(db): add sync command registry, registration, and sync entrypoint
|
|
29
|
+
- b84a3d0: fix: preserve class methods when creating store-backed React hooks
|
|
30
|
+
|
|
3
31
|
## 0.2.0
|
|
4
32
|
|
|
5
33
|
### Minor Changes
|
package/dist/api/api.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { RequestInputContext } from "./request-input-context.js";
|
|
2
2
|
import { RequestOutputContext } from "./request-output-context.js";
|
|
3
3
|
import { FragnoApiError, FragnoApiValidationError } from "./error.js";
|
|
4
|
-
import { RouteHandlerInputOptions } from "./route-handler-input-options.js";
|
|
5
4
|
import { FragnoPublicConfig } from "./shared-types.js";
|
|
5
|
+
import { RouteHandlerInputOptions } from "./route-handler-input-options.js";
|
|
6
|
+
import { RouteCallerConfig, RouteCallerForFragment, createRouteCaller } from "./route-caller.js";
|
|
6
7
|
import { StandardSchemaV1, StandardSchemaV1 as StandardSchemaV1$1 } from "@standard-schema/spec";
|
|
7
8
|
|
|
8
9
|
//#region src/api/api.d.ts
|
|
@@ -52,5 +53,5 @@ declare function addRoute<TMethod extends HTTPMethod, TPath extends string, TInp
|
|
|
52
53
|
inputSchema: TInputSchema;
|
|
53
54
|
}): FragnoRouteConfig<TMethod, TPath, TInputSchema, TOutputSchema, TErrorCode, TQueryParameters, TThisContext>;
|
|
54
55
|
//#endregion
|
|
55
|
-
export { FragnoApiError, FragnoApiValidationError, type FragnoPublicConfig, FragnoRouteConfig, HTTPMethod, NonGetHTTPMethod, RequestThisContext, RouteContentType, type RouteHandlerInputOptions, type StandardSchemaV1, ValidPath, addRoute };
|
|
56
|
+
export { FragnoApiError, FragnoApiValidationError, type FragnoPublicConfig, FragnoRouteConfig, HTTPMethod, NonGetHTTPMethod, RequestThisContext, type RouteCallerConfig, type RouteCallerForFragment, RouteContentType, type RouteHandlerInputOptions, type StandardSchemaV1, ValidPath, addRoute, createRouteCaller };
|
|
56
57
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","names":[],"sources":["../../src/api/api.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","names":[],"sources":["../../src/api/api.ts"],"sourcesContent":[],"mappings":";;;;;;;;;KAOY,UAAA;KACA,gBAAA,GAAmB,QAAQ;KAGlC,uDAAuD,eAAe;;;AAJ3E;AACA;AAA0D;AAY1D;;AACI,KADQ,SACR,CAAA,UAAA,MAAA,GAAA,MAAA,CAAA,GAD+C,CAC/C,SAAA,IAAA,KAAA,KAAA,EAAA,GAAA,IAAA,SAAA,EAAA,GACE,SADF,CACY,CADZ,EAAA,0BAAA,CAAA,GAEE,CAFF,SAAA,GAAA,MAAA,GAAA,GAGI,SAHJ,CAGc,CAHd,EAAA,2BAAA,CAAA,GAII,CAJJ,GAKA,SALA,CAKU,CALV,EAAA,2BAAA,CAAA;AACY,UAMC,kBAAA,CAND;;;;;;;AAIH,KAUD,gBAAA,GAVC,kBAAA,GAAA,qBAAA,GAAA,0BAAA;AAEI,UAaA,iBAbkB,CAAA,gBAcjB,UAdiB,EAAA,cAAA,MAAA,EAAA,qBAgBZ,kBAhBY,GAAA,SAAA,EAAA,sBAiBX,kBAjBW,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,qBAoBZ,kBApBY,GAoBS,kBApBT,CAAA,CAAA;EAQvB,MAAA,EAcF,OAdE;EAKK,IAAA,EAUT,KAVS;EACC;;;;;;;;;;EAuBM,WAAA,CAAA,EAHR,gBAGQ;EACK,WAAA,CAAA,EAHb,YAGa;EAEnB,YAAA,CAAA,EAJO,aAIP;EACwB,UAAA,CAAA,EAAA,SAJV,UAIU,EAAA;EAAO,eAAA,CAAA,EAAA,SAHZ,gBAGY,EAAA;EAA3B,OAAA,CAAA,IAAA,EADJ,YACI,EAAA,QAAA,EAAA,mBAAA,CAAoB,KAApB,EAA2B,YAA3B,CAAA,EAAA,SAAA,EACC,oBADD,CACsB,aADtB,EACqC,UADrC,CAAA,CAAA,EAET,OAFS,CAED,QAFC,CAAA;;AACqC,iBAKnC,QALmC,CAAA,gBAMjC,UANiC,EAAA,cAAA,MAAA,EAAA,sBAQ3B,kBAR2B,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,qBAW5B,kBAX4B,GAWP,kBAXO,CAAA,CAAA,KAAA,EAa1C,iBAb0C,CAc/C,OAd+C,EAe/C,SAf+C,CAerC,KAfqC,CAAA,EAAA,SAAA,EAiB/C,aAjB+C,EAkB/C,UAlB+C,EAmB/C,gBAnB+C,EAoB/C,YApB+C,CAAA,GAAA;EAApC,WAAA,CAAA,EAAA,SAAA;CACF,CAAA,EAqBV,iBArBU,CAsBX,OAtBW,EAuBX,KAvBW,EAAA,SAAA,EAyBX,aAzBW,EA0BX,UA1BW,EA2BX,gBA3BW,EA4BX,YA5BW,CAAA;AAAR,iBAgCW,QAhCX,CAAA,gBAiCa,UAjCb,EAAA,cAAA,MAAA,EAAA,qBAmCkB,kBAnClB,EAAA,sBAoCmB,kBApCnB,GAAA,SAAA,EAAA,mBAAA,MAAA,GAAA,MAAA,EAAA,yBAAA,MAAA,GAAA,MAAA,EAAA,qBAuCkB,kBAvClB,GAuCuC,kBAvCvC,CAAA,CAAA,KAAA,EAyCI,iBAzCJ,CA0CD,OA1CC,EA2CD,SA3CC,CA2CS,KA3CT,CAAA,EA4CD,YA5CC,EA6CD,aA7CC,EA8CD,UA9CC,EA+CD,gBA/CC,EAgDD,YAhDC,CAAA,GAAA;EAAO,WAAA,EAkDK,YAlDL;AAIZ,CAAA,CAAA,EAgDG,iBAhDqB,CAiDtB,OAjDsB,EAkDtB,KAlDsB,EAmDtB,YAnDsB,EAoDtB,aApDsB,EAqDtB,UArDsB,EAsDtB,gBAtDsB,EAuDtB,YAvDsB,CAAA"}
|
package/dist/api/api.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FragnoApiError, FragnoApiValidationError } from "./error.js";
|
|
2
|
+
import { createRouteCaller } from "./route-caller.js";
|
|
2
3
|
|
|
3
4
|
//#region src/api/api.ts
|
|
4
5
|
function addRoute(route) {
|
|
@@ -6,5 +7,5 @@ function addRoute(route) {
|
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
//#endregion
|
|
9
|
-
export { FragnoApiError, FragnoApiValidationError, addRoute };
|
|
10
|
+
export { FragnoApiError, FragnoApiValidationError, addRoute, createRouteCaller };
|
|
10
11
|
//# sourceMappingURL=api.js.map
|
package/dist/api/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","names":[],"sources":["../../src/api/api.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { RequestInputContext } from \"./request-input-context\";\nimport type { RequestOutputContext } from \"./request-output-context\";\n\nexport type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\nexport type HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\" | \"OPTIONS\";\nexport type NonGetHTTPMethod = Exclude<HTTPMethod, \"GET\">;\n\n// Helper type to create branded error messages that are still assignable to string\ntype PathError<T extends string, TMessage extends string> = T & [`Error: ${TMessage}`];\n\n/**\n * A valid path string that:\n * - Is non-empty\n * - Starts with \"/\"\n * - Is not just \"/\"\n * - Does not end with \"/\"\n */\nexport type ValidPath<T extends string = string> = T extends `/${infer Rest}`\n ? Rest extends \"\"\n ? PathError<T, \"Path cannot be just '/'.\"> // Excludes \"/\"\n : T extends `${string}/`\n ? PathError<T, \"Path cannot end with '/'.\"> // Excludes paths ending with \"/\"\n : T\n : PathError<T, \"Path must start with '/'.\">; // Excludes paths not starting with \"/\"\n\nexport interface RequestThisContext {}\n\n/**\n * Content types that can be accepted by a route.\n *\n * - `\"application/json\"` (default): JSON request body, validated against inputSchema\n * - `\"multipart/form-data\"`: FormData request body (file uploads), no schema validation\n */\nexport type RouteContentType =\n | \"application/json\"\n | \"multipart/form-data\"\n | \"application/octet-stream\";\n\nexport interface FragnoRouteConfig<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n> {\n method: TMethod;\n path: TPath;\n /**\n * The expected content type for this route's request body.\n *\n * - `\"application/json\"` (default): Expects JSON body, will be validated against inputSchema\n * - `\"multipart/form-data\"`: Expects FormData body (for file uploads), use `ctx.formData()` in handler\n *\n * The server will reject requests with mismatched Content-Type headers.\n *\n * @default \"application/json\"\n */\n contentType?: RouteContentType;\n inputSchema?: TInputSchema;\n outputSchema?: TOutputSchema;\n errorCodes?: readonly TErrorCode[];\n queryParameters?: readonly TQueryParameters[];\n handler(\n this: TThisContext,\n inputCtx: RequestInputContext<TPath, TInputSchema>,\n outputCtx: RequestOutputContext<TOutputSchema, TErrorCode>,\n ): Promise<Response>;\n}\n\n// Overload for routes without inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n undefined,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n > & { inputSchema?: undefined },\n): FragnoRouteConfig<\n TMethod,\n TPath,\n undefined,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n>;\n\n// Overload for routes with inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n > & {\n inputSchema: TInputSchema;\n },\n): FragnoRouteConfig<\n TMethod,\n TPath,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n>;\n\n// Implementation\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n >,\n): FragnoRouteConfig<\n TMethod,\n TPath,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n> {\n return route;\n}\n\nexport { FragnoApiError, FragnoApiValidationError } from \"./error\";\nexport type { RouteHandlerInputOptions } from \"./route-handler-input-options\";\nexport type { FragnoPublicConfig } from \"./shared-types\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","names":[],"sources":["../../src/api/api.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\nimport type { RequestInputContext } from \"./request-input-context\";\nimport type { RequestOutputContext } from \"./request-output-context\";\n\nexport type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\nexport type HTTPMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\" | \"OPTIONS\";\nexport type NonGetHTTPMethod = Exclude<HTTPMethod, \"GET\">;\n\n// Helper type to create branded error messages that are still assignable to string\ntype PathError<T extends string, TMessage extends string> = T & [`Error: ${TMessage}`];\n\n/**\n * A valid path string that:\n * - Is non-empty\n * - Starts with \"/\"\n * - Is not just \"/\"\n * - Does not end with \"/\"\n */\nexport type ValidPath<T extends string = string> = T extends `/${infer Rest}`\n ? Rest extends \"\"\n ? PathError<T, \"Path cannot be just '/'.\"> // Excludes \"/\"\n : T extends `${string}/`\n ? PathError<T, \"Path cannot end with '/'.\"> // Excludes paths ending with \"/\"\n : T\n : PathError<T, \"Path must start with '/'.\">; // Excludes paths not starting with \"/\"\n\nexport interface RequestThisContext {}\n\n/**\n * Content types that can be accepted by a route.\n *\n * - `\"application/json\"` (default): JSON request body, validated against inputSchema\n * - `\"multipart/form-data\"`: FormData request body (file uploads), no schema validation\n */\nexport type RouteContentType =\n | \"application/json\"\n | \"multipart/form-data\"\n | \"application/octet-stream\";\n\nexport interface FragnoRouteConfig<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n> {\n method: TMethod;\n path: TPath;\n /**\n * The expected content type for this route's request body.\n *\n * - `\"application/json\"` (default): Expects JSON body, will be validated against inputSchema\n * - `\"multipart/form-data\"`: Expects FormData body (for file uploads), use `ctx.formData()` in handler\n *\n * The server will reject requests with mismatched Content-Type headers.\n *\n * @default \"application/json\"\n */\n contentType?: RouteContentType;\n inputSchema?: TInputSchema;\n outputSchema?: TOutputSchema;\n errorCodes?: readonly TErrorCode[];\n queryParameters?: readonly TQueryParameters[];\n handler(\n this: TThisContext,\n inputCtx: RequestInputContext<TPath, TInputSchema>,\n outputCtx: RequestOutputContext<TOutputSchema, TErrorCode>,\n ): Promise<Response>;\n}\n\n// Overload for routes without inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n undefined,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n > & { inputSchema?: undefined },\n): FragnoRouteConfig<\n TMethod,\n TPath,\n undefined,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n>;\n\n// Overload for routes with inputSchema\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n > & {\n inputSchema: TInputSchema;\n },\n): FragnoRouteConfig<\n TMethod,\n TPath,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n>;\n\n// Implementation\nexport function addRoute<\n TMethod extends HTTPMethod,\n TPath extends string,\n TInputSchema extends StandardSchemaV1 | undefined,\n TOutputSchema extends StandardSchemaV1 | undefined,\n TErrorCode extends string = string,\n TQueryParameters extends string = string,\n TThisContext extends RequestThisContext = RequestThisContext,\n>(\n route: FragnoRouteConfig<\n TMethod,\n ValidPath<TPath>,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n >,\n): FragnoRouteConfig<\n TMethod,\n TPath,\n TInputSchema,\n TOutputSchema,\n TErrorCode,\n TQueryParameters,\n TThisContext\n> {\n return route;\n}\n\nexport { FragnoApiError, FragnoApiValidationError } from \"./error\";\nexport {\n createRouteCaller,\n type RouteCallerConfig,\n type RouteCallerForFragment,\n} from \"./route-caller\";\nexport type { RouteHandlerInputOptions } from \"./route-handler-input-options\";\nexport type { FragnoPublicConfig } from \"./shared-types\";\n"],"mappings":";;;;AAsIA,SAAgB,SASd,OAiBA;AACA,QAAO"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
//#region src/api/bind-services.d.ts
|
|
2
|
-
type OmitThisParameter<T> = T extends ((this: infer _This, ...args: infer A) => infer R) ? (...args: A) => R : T;
|
|
3
2
|
type BoundServices<T> = { [K in keyof T]: T[K] extends ((...args: never[]) => unknown) ? OmitThisParameter<T[K]> : T[K] extends Record<string, unknown> ? BoundServices<T[K]> : T[K] };
|
|
4
3
|
//#endregion
|
|
5
4
|
export { BoundServices };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind-services.d.ts","names":[],"sources":["../../src/api/bind-services.ts"],"sourcesContent":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"bind-services.d.ts","names":[],"sources":["../../src/api/bind-services.ts"],"sourcesContent":[],"mappings":";KACY,2BAAA,MACE,CADF,GACM,CADO,CACL,CADK,CAAA,UAAA,CAAA,GAAA,IAAA,EAAA,KAAA,EAAA,EAAA,GAAA,OAAA,IAEnB,iBAFmB,CAED,CAFC,CAEC,CAFD,CAAA,CAAA,GAGnB,CAHmB,CAGjB,CAHiB,CAAA,SAGN,MAHM,CAAA,MAAA,EAAA,OAAA,CAAA,GAIjB,aAJiB,CAIH,CAJG,CAID,CAJC,CAAA,CAAA,GAKjB,CALiB,CAKf,CALe,CAAA,EACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind-services.js","names":[],"sources":["../../src/api/bind-services.ts"],"sourcesContent":["//
|
|
1
|
+
{"version":3,"file":"bind-services.js","names":[],"sources":["../../src/api/bind-services.ts"],"sourcesContent":["// Recursively remove 'this' parameter from all functions in an object\nexport type BoundServices<T> = {\n [K in keyof T]: T[K] extends (...args: never[]) => unknown\n ? OmitThisParameter<T[K]>\n : T[K] extends Record<string, unknown>\n ? BoundServices<T[K]>\n : T[K];\n};\n\n/**\n * Bind all functions in a service object to a specific context.\n * This allows services to use `this` to access the context.\n *\n * @param services - The service object to bind\n * @param context - The context to bind to (e.g., { getUnitOfWork })\n * @returns A new object with all functions bound to the context\n */\nexport function bindServicesToContext<T extends object, TContext extends object>(\n services: T,\n context: TContext,\n): BoundServices<T> {\n const bound = {} as BoundServices<T>;\n\n for (const [key, value] of Object.entries(services)) {\n if (typeof value === \"function\") {\n // Bind function to the provided context\n bound[key as keyof T] = value.bind(context) as BoundServices<T>[keyof T];\n } else if (value && typeof value === \"object\" && !Array.isArray(value)) {\n // Recursively bind nested service objects\n bound[key as keyof T] = bindServicesToContext(value, context) as BoundServices<T>[keyof T];\n } else {\n bound[key as keyof T] = value as BoundServices<T>[keyof T];\n }\n }\n\n return bound;\n}\n"],"mappings":";;;;;;;;;AAiBA,SAAgB,sBACd,UACA,SACkB;CAClB,MAAM,QAAQ,EAAE;AAEhB,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,CACjD,KAAI,OAAO,UAAU,WAEnB,OAAM,OAAkB,MAAM,KAAK,QAAQ;UAClC,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM,CAEpE,OAAM,OAAkB,sBAAsB,OAAO,QAAQ;KAE7D,OAAM,OAAkB;AAI5B,QAAO"}
|
package/dist/api/error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","names":[],"sources":["../../src/api/error.ts"],"sourcesContent":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"error.d.ts","names":[],"sources":["../../src/api/error.ts"],"sourcesContent":[],"mappings":";;;;cAIa,cAAA,SAAuB,KAAA;;EAAvB,WAAA,CAAA;IAAA,OAAe;IAAA;EAIgD,CAJhD,EAAA;IAIZ,OAAA,EAAA,MAAA;IAAS,IAAA,EAAA,MAAA;EAAmD,CAAA,EAAA,MAAA,EAAA,UAAA;EAOhE,IAAA,MAAA,CAAA,CAAA,EAAA,UAAA;EAQA,IAAA,IAAA,CAAA,CAAA,EAAA,MAAA;EAnBwB,UAAA,CAAA,CAAA,EAmBxB,QAnBwB;;AAwBvB,cAAA,wBAAA,SAAiC,cAAA,CAAR;EAGU,CAAA,OAAA;EAMpC,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SANoC,gBAAA,CAAiB,KAMrD,EAAA;EAIS,IAAA,MAAA,CAAA,CAAA,EAAA,SAJT,gBAAA,CAAA,KAIS,EAAA;EAbyB,UAAA,CAAA,CAAA,EAazB,QAbyB"}
|
package/dist/api/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","names":["#status","#code","#issues"],"sources":["../../src/api/error.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { StatusCode } from \"../http/http-status\";\n\nexport class FragnoApiError extends Error {\n readonly #status: StatusCode;\n readonly #code: string;\n\n constructor({ message, code }: { message: string; code: string }, status: StatusCode) {\n super(message);\n this.name = \"FragnoApiError\";\n this.#status = status;\n this.#code = code;\n }\n\n get status() {\n return this.#status;\n }\n\n get code() {\n return this.#code;\n }\n\n toResponse() {\n return Response.json({ message: this.message, code: this.code }, { status: this.status });\n }\n}\n\nexport class FragnoApiValidationError extends FragnoApiError {\n #issues: readonly StandardSchemaV1.Issue[];\n\n constructor(message: string, issues: readonly StandardSchemaV1.Issue[]) {\n super({ message, code: \"FRAGNO_VALIDATION_ERROR\" }, 400);\n this.name = \"FragnoApiValidationError\";\n this.#issues = issues;\n }\n\n get issues() {\n return this.#issues;\n }\n\n override toResponse() {\n return Response.json(\n { message: this.message, issues: this.#issues, code: this.code },\n { status: this.status },\n );\n }\n}\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"error.js","names":["#status","#code","#issues"],"sources":["../../src/api/error.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\nimport type { StatusCode } from \"../http/http-status\";\n\nexport class FragnoApiError extends Error {\n readonly #status: StatusCode;\n readonly #code: string;\n\n constructor({ message, code }: { message: string; code: string }, status: StatusCode) {\n super(message);\n this.name = \"FragnoApiError\";\n this.#status = status;\n this.#code = code;\n }\n\n get status() {\n return this.#status;\n }\n\n get code() {\n return this.#code;\n }\n\n toResponse() {\n return Response.json({ message: this.message, code: this.code }, { status: this.status });\n }\n}\n\nexport class FragnoApiValidationError extends FragnoApiError {\n #issues: readonly StandardSchemaV1.Issue[];\n\n constructor(message: string, issues: readonly StandardSchemaV1.Issue[]) {\n super({ message, code: \"FRAGNO_VALIDATION_ERROR\" }, 400);\n this.name = \"FragnoApiValidationError\";\n this.#issues = issues;\n }\n\n get issues() {\n return this.#issues;\n }\n\n override toResponse() {\n return Response.json(\n { message: this.message, issues: this.#issues, code: this.code },\n { status: this.status },\n );\n }\n}\n"],"mappings":";AAIA,IAAa,iBAAb,cAAoC,MAAM;CACxC,CAASA;CACT,CAASC;CAET,YAAY,EAAE,SAAS,QAA2C,QAAoB;AACpF,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,QAAKD,SAAU;AACf,QAAKC,OAAQ;;CAGf,IAAI,SAAS;AACX,SAAO,MAAKD;;CAGd,IAAI,OAAO;AACT,SAAO,MAAKC;;CAGd,aAAa;AACX,SAAO,SAAS,KAAK;GAAE,SAAS,KAAK;GAAS,MAAM,KAAK;GAAM,EAAE,EAAE,QAAQ,KAAK,QAAQ,CAAC;;;AAI7F,IAAa,2BAAb,cAA8C,eAAe;CAC3D;CAEA,YAAY,SAAiB,QAA2C;AACtE,QAAM;GAAE;GAAS,MAAM;GAA2B,EAAE,IAAI;AACxD,OAAK,OAAO;AACZ,QAAKC,SAAU;;CAGjB,IAAI,SAAS;AACX,SAAO,MAAKA;;CAGd,AAAS,aAAa;AACpB,SAAO,SAAS,KACd;GAAE,SAAS,KAAK;GAAS,QAAQ,MAAKA;GAAS,MAAM,KAAK;GAAM,EAChE,EAAE,QAAQ,KAAK,QAAQ,CACxB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { BoundServices } from "./bind-services.js";
|
|
2
|
+
import { RequestContextStorage } from "./request-context-storage.js";
|
|
3
|
+
import { AnyRouteOrFactory } from "./route.js";
|
|
1
4
|
import { FragnoPublicConfig } from "./shared-types.js";
|
|
2
5
|
import { RequestThisContext } from "./api.js";
|
|
3
|
-
import { RequestContextStorage } from "./request-context-storage.js";
|
|
4
|
-
import { AnyFragnoInstantiatedFragment, FragnoInstantiatedFragment } from "./fragment-instantiator.js";
|
|
5
6
|
|
|
6
7
|
//#region src/api/fragment-definition-builder.d.ts
|
|
7
8
|
|
|
@@ -14,19 +15,6 @@ interface ServiceMetadata {
|
|
|
14
15
|
/** Whether this service is required (false means optional) */
|
|
15
16
|
required: boolean;
|
|
16
17
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Callback that instantiates a linked fragment.
|
|
19
|
-
* Receives the same context as the main fragment and returns an instantiated fragment.
|
|
20
|
-
*/
|
|
21
|
-
type LinkedFragmentCallback<TConfig, TOptions extends FragnoPublicConfig, TServiceDependencies, TFragment extends AnyFragnoInstantiatedFragment = AnyFragnoInstantiatedFragment> = (context: {
|
|
22
|
-
config: TConfig;
|
|
23
|
-
options: TOptions;
|
|
24
|
-
serviceDependencies?: TServiceDependencies;
|
|
25
|
-
}) => TFragment;
|
|
26
|
-
/**
|
|
27
|
-
* Extract the services type from a FragnoInstantiatedFragment
|
|
28
|
-
*/
|
|
29
|
-
type ExtractLinkedServices<T> = T extends ((...args: never[]) => FragnoInstantiatedFragment<any, any, infer TServices, any, any, any, any>) ? TServices : never;
|
|
30
18
|
/**
|
|
31
19
|
* Context passed to the request context factory function.
|
|
32
20
|
*/
|
|
@@ -59,14 +47,14 @@ type ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPriva
|
|
|
59
47
|
* Fragment definition interface that supports both regular and database fragments.
|
|
60
48
|
* This is the core definition that will be used for fragment instantiation.
|
|
61
49
|
*/
|
|
62
|
-
interface FragmentDefinition<TConfig, TOptions extends FragnoPublicConfig, TDeps, TBaseServices, TServices
|
|
50
|
+
interface FragmentDefinition<TConfig, TOptions extends FragnoPublicConfig, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext extends RequestThisContext, THandlerThisContext extends RequestThisContext, TRequestStorage = {}, TInternalRoutes extends readonly AnyRouteOrFactory[] = readonly []> {
|
|
63
51
|
name: string;
|
|
64
52
|
dependencies?: (context: {
|
|
65
53
|
config: TConfig;
|
|
66
54
|
options: TOptions;
|
|
67
55
|
}) => TDeps;
|
|
68
56
|
baseServices?: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TBaseServices, TServiceThisContext>;
|
|
69
|
-
namedServices?: { [K in keyof TServices
|
|
57
|
+
namedServices?: { [K in keyof TServices]: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TServices[K], TServiceThisContext> };
|
|
70
58
|
privateServices?: { [K in keyof TPrivateServices]: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices,
|
|
71
59
|
// Private services can access other private services
|
|
72
60
|
TPrivateServices[K], TServiceThisContext> };
|
|
@@ -132,23 +120,20 @@ interface FragmentDefinition<TConfig, TOptions extends FragnoPublicConfig, TDeps
|
|
|
132
120
|
config: TConfig;
|
|
133
121
|
options: TOptions;
|
|
134
122
|
deps: TDeps;
|
|
135
|
-
|
|
123
|
+
services: BoundServices<TBaseServices & TServices>;
|
|
124
|
+
serviceDeps: TServiceDependencies;
|
|
136
125
|
}) => Record<string, unknown> | void;
|
|
137
|
-
|
|
138
|
-
* Optional linked fragments that will be automatically instantiated with this fragment.
|
|
139
|
-
* Linked fragments are service-only and share the same config/options as the parent.
|
|
140
|
-
*/
|
|
141
|
-
linkedFragments?: { [K in keyof TLinkedFragments]: LinkedFragmentCallback<TConfig, TOptions, TServiceDependencies, TLinkedFragments[K]> };
|
|
126
|
+
internalRoutes?: TInternalRoutes;
|
|
142
127
|
$serviceThisContext?: TServiceThisContext;
|
|
143
128
|
$handlerThisContext?: THandlerThisContext;
|
|
144
129
|
$requestStorage?: TRequestStorage;
|
|
145
|
-
$
|
|
130
|
+
$internalRoutes?: TInternalRoutes;
|
|
146
131
|
}
|
|
147
132
|
/**
|
|
148
133
|
* Builder class for creating fragment definitions.
|
|
149
134
|
* This provides a fluent API for defining fragments with type safety.
|
|
150
135
|
*/
|
|
151
|
-
declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicConfig, TDeps, TBaseServices, TServices
|
|
136
|
+
declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicConfig, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext extends RequestThisContext, THandlerThisContext extends RequestThisContext, TRequestStorage = {}, TInternalRoutes extends readonly AnyRouteOrFactory[] = readonly []> {
|
|
152
137
|
#private;
|
|
153
138
|
constructor(name: string, state?: {
|
|
154
139
|
dependencies?: (context: {
|
|
@@ -156,7 +141,7 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
156
141
|
options: TOptions;
|
|
157
142
|
}) => TDeps;
|
|
158
143
|
baseServices?: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TBaseServices, TServiceThisContext>;
|
|
159
|
-
namedServices?: { [K in keyof TServices
|
|
144
|
+
namedServices?: { [K in keyof TServices]: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TServices[K], TServiceThisContext> };
|
|
160
145
|
privateServices?: { [K in keyof TPrivateServices]: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TPrivateServices[K], TServiceThisContext> };
|
|
161
146
|
serviceDependencies?: { [K in keyof TServiceDependencies]: ServiceMetadata };
|
|
162
147
|
createRequestStorage?: (context: {
|
|
@@ -173,7 +158,7 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
173
158
|
options: TOptions;
|
|
174
159
|
deps: TDeps;
|
|
175
160
|
}) => RequestContextStorage<TRequestStorage>;
|
|
176
|
-
|
|
161
|
+
internalRoutes?: TInternalRoutes;
|
|
177
162
|
});
|
|
178
163
|
get name(): string;
|
|
179
164
|
/**
|
|
@@ -201,17 +186,17 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
201
186
|
withDependencies<TNewDeps>(fn: (context: {
|
|
202
187
|
config: TConfig;
|
|
203
188
|
options: TOptions;
|
|
204
|
-
}) => TNewDeps): FragmentDefinitionBuilder<TConfig, TOptions, TNewDeps, {}, {}, TServiceDependencies, {}, TServiceThisContext, THandlerThisContext, TRequestStorage,
|
|
189
|
+
}) => TNewDeps): FragmentDefinitionBuilder<TConfig, TOptions, TNewDeps, {}, {}, TServiceDependencies, {}, TServiceThisContext, THandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
205
190
|
/**
|
|
206
191
|
* Define base (unnamed) services for this fragment.
|
|
207
192
|
* Base services are accessible directly on the fragment instance.
|
|
208
193
|
*/
|
|
209
|
-
providesBaseService<TNewService>(fn: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TNewService, TServiceThisContext>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TNewService, TServices
|
|
194
|
+
providesBaseService<TNewService>(fn: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TNewService, TServiceThisContext>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TNewService, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
210
195
|
/**
|
|
211
196
|
* Provide a named service that other fragments or users can use.
|
|
212
197
|
* Named services are accessible as fragment.serviceName.method()
|
|
213
198
|
*/
|
|
214
|
-
providesService<TServiceName extends string, TService>(serviceName: TServiceName, fn: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TService, TServiceThisContext>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
199
|
+
providesService<TServiceName extends string, TService>(serviceName: TServiceName, fn: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TService, TServiceThisContext>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices & { [K in TServiceName]: TService }, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
215
200
|
/**
|
|
216
201
|
* Provide a private service that is only accessible to the fragment author.
|
|
217
202
|
* Private services are NOT exposed on the fragment instance, but can be used
|
|
@@ -219,15 +204,15 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
219
204
|
* Private services are instantiated in order, so earlier private services are available
|
|
220
205
|
* to later ones.
|
|
221
206
|
*/
|
|
222
|
-
providesPrivateService<TServiceName extends string, TService>(serviceName: TServiceName, fn: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TService, TServiceThisContext>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
207
|
+
providesPrivateService<TServiceName extends string, TService>(serviceName: TServiceName, fn: ServiceConstructorFn<TConfig, TOptions, TDeps, TServiceDependencies, TPrivateServices, TService, TServiceThisContext>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices & { [K in TServiceName]: TService }, TServiceThisContext, THandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
223
208
|
/**
|
|
224
209
|
* Declare that this fragment uses a required service provided by the runtime.
|
|
225
210
|
*/
|
|
226
|
-
usesService<TServiceName extends string, TService>(serviceName: TServiceName): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
211
|
+
usesService<TServiceName extends string, TService>(serviceName: TServiceName): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies & { [K in TServiceName]: TService }, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
227
212
|
/**
|
|
228
213
|
* Declare that this fragment uses an optional service provided by the runtime.
|
|
229
214
|
*/
|
|
230
|
-
usesOptionalService<TServiceName extends string, TService>(serviceName: TServiceName): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
215
|
+
usesOptionalService<TServiceName extends string, TService>(serviceName: TServiceName): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies & { [K in TServiceName]: TService | undefined }, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
231
216
|
/**
|
|
232
217
|
* Define the type and initial data stored in AsyncLocalStorage for per-request isolation.
|
|
233
218
|
* This should be called before withThisContext if you need to store request-specific data.
|
|
@@ -254,7 +239,7 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
254
239
|
config: TConfig;
|
|
255
240
|
options: TOptions;
|
|
256
241
|
deps: TDeps;
|
|
257
|
-
}) => TNewRequestStorage): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
242
|
+
}) => TNewRequestStorage): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TNewRequestStorage, TInternalRoutes>;
|
|
258
243
|
/**
|
|
259
244
|
* Use an externally-provided RequestContextStorage instance.
|
|
260
245
|
* This allows multiple fragments to share the same storage instance.
|
|
@@ -275,7 +260,7 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
275
260
|
config: TConfig;
|
|
276
261
|
options: TOptions;
|
|
277
262
|
deps: TDeps;
|
|
278
|
-
}) => RequestContextStorage<TNewStorage>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
263
|
+
}) => RequestContextStorage<TNewStorage>): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TNewStorage, TInternalRoutes>;
|
|
279
264
|
/**
|
|
280
265
|
* Set the this contexts for services and handlers in this fragment.
|
|
281
266
|
* Both contexts should contain only methods or getters that read from storage.
|
|
@@ -296,14 +281,11 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
296
281
|
withThisContext<TNewServiceThisContext extends RequestThisContext, TNewHandlerThisContext extends RequestThisContext>(fn: (context: RequestContextFactoryContext<TConfig, TOptions, TDeps, TRequestStorage>) => {
|
|
297
282
|
serviceContext: TNewServiceThisContext;
|
|
298
283
|
handlerContext: TNewHandlerThisContext;
|
|
299
|
-
}): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
284
|
+
}): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TNewServiceThisContext, TNewHandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
300
285
|
/**
|
|
301
|
-
*
|
|
302
|
-
* Linked fragments share the same config/options as the parent and their services
|
|
303
|
-
* are exposed as private services. Routes are not exposed by default, but the
|
|
304
|
-
* instantiator may mount internal linked fragment routes under an internal prefix.
|
|
286
|
+
* Define internal routes that will be mounted under /_internal.
|
|
305
287
|
*/
|
|
306
|
-
|
|
288
|
+
withInternalRoutes<const TNewInternalRoutes extends readonly AnyRouteOrFactory[]>(routes: TNewInternalRoutes): FragmentDefinitionBuilder<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TNewInternalRoutes>;
|
|
307
289
|
/**
|
|
308
290
|
* Extend this builder with a transformation function.
|
|
309
291
|
* This enables fluent API extensions like `.extend(withDatabase(schema))`.
|
|
@@ -312,12 +294,12 @@ declare class FragmentDefinitionBuilder<TConfig, TOptions extends FragnoPublicCo
|
|
|
312
294
|
/**
|
|
313
295
|
* Build the final fragment definition
|
|
314
296
|
*/
|
|
315
|
-
build(): FragmentDefinition<TConfig, TOptions, TDeps, TBaseServices, TServices
|
|
297
|
+
build(): FragmentDefinition<TConfig, TOptions, TDeps, TBaseServices, TServices, TServiceDependencies, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TInternalRoutes>;
|
|
316
298
|
}
|
|
317
299
|
/**
|
|
318
300
|
* Create a new fragment definition builder
|
|
319
301
|
*/
|
|
320
|
-
declare function defineFragment<TConfig = {}, TOptions extends FragnoPublicConfig = FragnoPublicConfig, TServiceThisContext extends RequestThisContext = RequestThisContext, THandlerThisContext extends RequestThisContext = RequestThisContext, TRequestStorage = {}>(name: string): FragmentDefinitionBuilder<TConfig, TOptions, {}, {}, {}, {}, {}, TServiceThisContext, THandlerThisContext, TRequestStorage,
|
|
302
|
+
declare function defineFragment<TConfig = {}, TOptions extends FragnoPublicConfig = FragnoPublicConfig, TServiceThisContext extends RequestThisContext = RequestThisContext, THandlerThisContext extends RequestThisContext = RequestThisContext, TRequestStorage = {}>(name: string): FragmentDefinitionBuilder<TConfig, TOptions, {}, {}, {}, {}, {}, TServiceThisContext, THandlerThisContext, TRequestStorage, []>;
|
|
321
303
|
//#endregion
|
|
322
|
-
export {
|
|
304
|
+
export { FragmentDefinition, FragmentDefinitionBuilder, RequestContextFactoryContext, ServiceConstructorFn, ServiceContext, defineFragment };
|
|
323
305
|
//# sourceMappingURL=fragment-definition-builder.d.ts.map
|