@fragno-dev/forms 0.0.1

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.
@@ -0,0 +1,135 @@
1
+ import * as zod587 from "zod";
2
+ import * as zod_v4_core39 from "zod/v4/core";
3
+ import * as _fragno_dev_core_api19 from "@fragno-dev/core/api";
4
+ import * as _standard_schema_spec31 from "@standard-schema/spec";
5
+ import { FragnoPublicClientConfig } from "@fragno-dev/core/client";
6
+ import * as _fragno_dev_core_svelte0 from "@fragno-dev/core/svelte";
7
+
8
+ //#region src/client/svelte.d.ts
9
+ declare function createFormsClient(config?: FragnoPublicClientConfig): {
10
+ useForm: _fragno_dev_core_svelte0.FragnoSvelteHook<"GET", "/:slug", zod587.ZodObject<{
11
+ id: zod587.ZodString;
12
+ title: zod587.ZodString;
13
+ description: zod587.ZodNullable<zod587.ZodString>;
14
+ slug: zod587.ZodString;
15
+ status: zod587.ZodEnum<{
16
+ draft: "draft";
17
+ open: "open";
18
+ closed: "closed";
19
+ static: "static";
20
+ }>;
21
+ dataSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
22
+ uiSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
23
+ version: zod587.ZodNumber;
24
+ createdAt: zod587.ZodDate;
25
+ updatedAt: zod587.ZodDate;
26
+ }, zod_v4_core39.$strip>, "NOT_FOUND", string>;
27
+ useSubmitForm: _fragno_dev_core_svelte0.FragnoSvelteMutator<_fragno_dev_core_api19.NonGetHTTPMethod, "/:slug/submit", zod587.ZodObject<{
28
+ data: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
29
+ securityToken: zod587.ZodOptional<zod587.ZodString>;
30
+ }, zod_v4_core39.$strip> | undefined, zod587.ZodString | undefined, "NOT_FOUND" | "VALIDATION_ERROR" | "FORM_NOT_OPEN", string>;
31
+ useForms: _fragno_dev_core_svelte0.FragnoSvelteHook<"GET", "/admin/forms", NonNullable<zod587.ZodString | zod587.ZodArray<zod587.ZodObject<{
32
+ id: zod587.ZodString;
33
+ title: zod587.ZodString;
34
+ description: zod587.ZodNullable<zod587.ZodString>;
35
+ slug: zod587.ZodString;
36
+ status: zod587.ZodEnum<{
37
+ draft: "draft";
38
+ open: "open";
39
+ closed: "closed";
40
+ static: "static";
41
+ }>;
42
+ dataSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
43
+ uiSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
44
+ version: zod587.ZodNumber;
45
+ createdAt: zod587.ZodDate;
46
+ updatedAt: zod587.ZodDate;
47
+ }, zod_v4_core39.$strip>> | undefined>, string, string>;
48
+ useCreateForm: _fragno_dev_core_svelte0.FragnoSvelteMutator<_fragno_dev_core_api19.NonGetHTTPMethod, "/admin/forms", _standard_schema_spec31.StandardSchemaV1<unknown, unknown> | zod587.ZodObject<{
49
+ status: zod587.ZodEnum<{
50
+ draft: "draft";
51
+ open: "open";
52
+ closed: "closed";
53
+ static: "static";
54
+ }>;
55
+ title: zod587.ZodString;
56
+ description: zod587.ZodNullable<zod587.ZodString>;
57
+ slug: zod587.ZodString;
58
+ dataSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
59
+ uiSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
60
+ }, zod_v4_core39.$strip> | undefined, zod587.ZodString | zod587.ZodArray<zod587.ZodObject<{
61
+ id: zod587.ZodString;
62
+ title: zod587.ZodString;
63
+ description: zod587.ZodNullable<zod587.ZodString>;
64
+ slug: zod587.ZodString;
65
+ status: zod587.ZodEnum<{
66
+ draft: "draft";
67
+ open: "open";
68
+ closed: "closed";
69
+ static: "static";
70
+ }>;
71
+ dataSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
72
+ uiSchema: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
73
+ version: zod587.ZodNumber;
74
+ createdAt: zod587.ZodDate;
75
+ updatedAt: zod587.ZodDate;
76
+ }, zod_v4_core39.$strip>> | undefined, string, string>;
77
+ useUpdateForm: _fragno_dev_core_svelte0.FragnoSvelteMutator<_fragno_dev_core_api19.NonGetHTTPMethod, "/admin/forms/:id", _standard_schema_spec31.StandardSchemaV1<unknown, unknown> | zod587.ZodObject<{
78
+ status: zod587.ZodOptional<zod587.ZodEnum<{
79
+ draft: "draft";
80
+ open: "open";
81
+ closed: "closed";
82
+ static: "static";
83
+ }>>;
84
+ title: zod587.ZodOptional<zod587.ZodString>;
85
+ description: zod587.ZodOptional<zod587.ZodNullable<zod587.ZodString>>;
86
+ slug: zod587.ZodOptional<zod587.ZodString>;
87
+ dataSchema: zod587.ZodOptional<zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>>;
88
+ uiSchema: zod587.ZodOptional<zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>>;
89
+ }, zod_v4_core39.$strip> | undefined, _standard_schema_spec31.StandardSchemaV1<unknown, unknown> | undefined, "NOT_FOUND" | "STATIC_FORM_READ_ONLY", string>;
90
+ useDeleteForm: _fragno_dev_core_svelte0.FragnoSvelteMutator<_fragno_dev_core_api19.NonGetHTTPMethod, "/admin/forms/:id", _standard_schema_spec31.StandardSchemaV1<unknown, unknown> | zod587.ZodObject<{
91
+ status: zod587.ZodOptional<zod587.ZodEnum<{
92
+ draft: "draft";
93
+ open: "open";
94
+ closed: "closed";
95
+ static: "static";
96
+ }>>;
97
+ title: zod587.ZodOptional<zod587.ZodString>;
98
+ description: zod587.ZodOptional<zod587.ZodNullable<zod587.ZodString>>;
99
+ slug: zod587.ZodOptional<zod587.ZodString>;
100
+ dataSchema: zod587.ZodOptional<zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>>;
101
+ uiSchema: zod587.ZodOptional<zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>>;
102
+ }, zod_v4_core39.$strip> | undefined, _standard_schema_spec31.StandardSchemaV1<unknown, unknown> | undefined, "NOT_FOUND" | "STATIC_FORM_READ_ONLY", string>;
103
+ useSubmissions: _fragno_dev_core_svelte0.FragnoSvelteHook<"GET", "/admin/forms/:id/submissions", zod587.ZodArray<zod587.ZodObject<{
104
+ id: zod587.ZodString;
105
+ formId: zod587.ZodNullable<zod587.ZodString>;
106
+ formVersion: zod587.ZodNumber;
107
+ data: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
108
+ submittedAt: zod587.ZodDate;
109
+ ip: zod587.ZodNullable<zod587.ZodString>;
110
+ userAgent: zod587.ZodNullable<zod587.ZodString>;
111
+ }, zod_v4_core39.$strip>>, string, "sortOrder">;
112
+ useSubmission: _fragno_dev_core_svelte0.FragnoSvelteHook<"GET", "/admin/submissions/:id", NonNullable<_standard_schema_spec31.StandardSchemaV1<unknown, unknown> | zod587.ZodObject<{
113
+ id: zod587.ZodString;
114
+ formId: zod587.ZodNullable<zod587.ZodString>;
115
+ formVersion: zod587.ZodNumber;
116
+ data: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
117
+ submittedAt: zod587.ZodDate;
118
+ ip: zod587.ZodNullable<zod587.ZodString>;
119
+ userAgent: zod587.ZodNullable<zod587.ZodString>;
120
+ }, zod_v4_core39.$strip> | undefined>, "NOT_FOUND", string>;
121
+ useDeleteSubmission: _fragno_dev_core_svelte0.FragnoSvelteMutator<_fragno_dev_core_api19.NonGetHTTPMethod, "/admin/submissions/:id", _standard_schema_spec31.StandardSchemaV1<unknown, unknown> | undefined, _standard_schema_spec31.StandardSchemaV1<unknown, unknown> | zod587.ZodObject<{
122
+ id: zod587.ZodString;
123
+ formId: zod587.ZodNullable<zod587.ZodString>;
124
+ formVersion: zod587.ZodNumber;
125
+ data: zod587.ZodRecord<zod587.ZodString, zod587.ZodUnknown>;
126
+ submittedAt: zod587.ZodDate;
127
+ ip: zod587.ZodNullable<zod587.ZodString>;
128
+ userAgent: zod587.ZodNullable<zod587.ZodString>;
129
+ }, zod_v4_core39.$strip> | undefined, "NOT_FOUND", string>;
130
+ };
131
+ //# sourceMappingURL=svelte.d.ts.map
132
+
133
+ //#endregion
134
+ export { createFormsClient };
135
+ //# sourceMappingURL=svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.d.ts","names":[],"sources":["../../../../src/client/svelte.ts"],"sourcesContent":[],"mappings":";;;;;;;;iBAIgB,iBAAA,UAA0B;;QAA6B,MAAA,CAAA;;;;;MAAvD,KAAA,EAAA,OAAiB;MAAA,IAAA,EAAA,MAAA;MAAS,MAAA,EAAA,QAAA;MAA6B,MAAA,EAAA,QAAA"}
@@ -0,0 +1,125 @@
1
+ import { atom, createFormsClients, isGetHook, isMutatorHook, isStore } from "../src-DElBPLyi.js";
2
+ import { get, writable } from "svelte/store";
3
+ import { onDestroy } from "svelte";
4
+
5
+ //#region ../fragno/dist/client/client.svelte.js
6
+ function isReadable(value) {
7
+ return typeof value === "object" && value !== null && "subscribe" in value;
8
+ }
9
+ function isCallable(value) {
10
+ return typeof value === "function";
11
+ }
12
+ function readableToAtom(value) {
13
+ const a = atom(get(value));
14
+ value.subscribe((newVal) => {
15
+ a.set(newVal);
16
+ });
17
+ return a;
18
+ }
19
+ function runeToAtom(value) {
20
+ const a = atom(value());
21
+ $effect(() => {
22
+ a.set(value());
23
+ });
24
+ return a;
25
+ }
26
+ function createSvelteHook(hook) {
27
+ return ({ path, query } = {}) => {
28
+ const pathParams = {};
29
+ const queryParams = {};
30
+ for (const [key, value] of Object.entries(path ?? {})) {
31
+ const v = value;
32
+ if (isCallable(v)) pathParams[key] = runeToAtom(v);
33
+ else pathParams[key] = isReadable(v) ? readableToAtom(v) : v;
34
+ }
35
+ for (const [key, value] of Object.entries(query ?? {})) {
36
+ const v = value;
37
+ if (isCallable(v)) queryParams[key] = runeToAtom(v);
38
+ else queryParams[key] = isReadable(v) ? readableToAtom(v) : v;
39
+ }
40
+ const store = hook.store({
41
+ path: pathParams,
42
+ query: queryParams
43
+ });
44
+ const data = writable(void 0);
45
+ const loading = writable(false);
46
+ const error = writable(void 0);
47
+ const unsubscribe = store.subscribe((updatedStoreValue) => {
48
+ data.set(updatedStoreValue.data);
49
+ loading.set(updatedStoreValue.loading);
50
+ error.set(updatedStoreValue.error);
51
+ });
52
+ onDestroy(() => {
53
+ unsubscribe();
54
+ });
55
+ return {
56
+ data,
57
+ loading,
58
+ error
59
+ };
60
+ };
61
+ }
62
+ function createSvelteMutator(hook) {
63
+ return () => {
64
+ const data = writable(void 0);
65
+ const loading = writable(void 0);
66
+ const error = writable(void 0);
67
+ const unsubscribe = hook.mutatorStore.subscribe((storeValue) => {
68
+ data.set(storeValue.data);
69
+ loading.set(storeValue.loading);
70
+ error.set(storeValue.error);
71
+ });
72
+ onDestroy(() => {
73
+ unsubscribe();
74
+ });
75
+ const mutate = async (args) => {
76
+ const { body, path, query } = args;
77
+ const pathParams = {};
78
+ const queryParams = {};
79
+ for (const [key, value] of Object.entries(path ?? {})) {
80
+ const v = value;
81
+ pathParams[key] = isReadable(v) ? readableToAtom(v) : v;
82
+ }
83
+ for (const [key, value] of Object.entries(query ?? {})) {
84
+ const v = value;
85
+ queryParams[key] = isReadable(v) ? readableToAtom(v) : v;
86
+ }
87
+ return hook.mutatorStore.mutate({
88
+ body,
89
+ path: pathParams,
90
+ query: queryParams
91
+ });
92
+ };
93
+ return {
94
+ mutate,
95
+ loading,
96
+ error,
97
+ data
98
+ };
99
+ };
100
+ }
101
+ function createSvelteStore(hook) {
102
+ return hook.obj;
103
+ }
104
+ function useFragno(clientObj) {
105
+ const result = {};
106
+ for (const key in clientObj) {
107
+ if (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;
108
+ const hook = clientObj[key];
109
+ if (isGetHook(hook)) result[key] = createSvelteHook(hook);
110
+ else if (isMutatorHook(hook)) result[key] = createSvelteMutator(hook);
111
+ else if (isStore(hook)) result[key] = createSvelteStore(hook);
112
+ else result[key] = hook;
113
+ }
114
+ return result;
115
+ }
116
+
117
+ //#endregion
118
+ //#region src/client/svelte.ts
119
+ function createFormsClient(config = {}) {
120
+ return useFragno(createFormsClients(config));
121
+ }
122
+
123
+ //#endregion
124
+ export { createFormsClient };
125
+ //# sourceMappingURL=svelte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.js","names":["isGetHook","isMutatorHook","isStore","atom","get","writable","onDestroy","isReadable","value","isCallable","readableToAtom","a","subscribe","newVal","set","runeToAtom","$effect","createSvelteHook","hook","path","query","pathParams","queryParams","key","Object","entries","v","store","data","loading","error","unsubscribe","updatedStoreValue","createSvelteMutator","mutatorStore","storeValue","mutate","args","body","createSvelteStore","obj","useFragno","clientObj","result","prototype","hasOwnProperty","call","useFragno","createFormsClients","FragnoPublicClientConfig","createFormsClient","config"],"sources":["../../../../fragno/dist/client/client.svelte.js","../../../src/client/svelte.ts"],"sourcesContent":["import { isGetHook, isMutatorHook, isStore } from \"./client.js\";\nimport { atom } from \"nanostores\";\nimport { get, writable } from \"svelte/store\";\nimport { onDestroy } from \"svelte\";\n\n//#region src/client/client.svelte.ts\nfunction isReadable(value) {\n\treturn typeof value === \"object\" && value !== null && \"subscribe\" in value;\n}\nfunction isCallable(value) {\n\treturn typeof value === \"function\";\n}\nfunction readableToAtom(value) {\n\tconst a = atom(get(value));\n\tvalue.subscribe((newVal) => {\n\t\ta.set(newVal);\n\t});\n\treturn a;\n}\nfunction runeToAtom(value) {\n\tconst a = atom(value());\n\t$effect(() => {\n\t\ta.set(value());\n\t});\n\treturn a;\n}\nfunction createSvelteHook(hook) {\n\treturn ({ path, query } = {}) => {\n\t\tconst pathParams = {};\n\t\tconst queryParams = {};\n\t\tfor (const [key, value] of Object.entries(path ?? {})) {\n\t\t\tconst v = value;\n\t\t\tif (isCallable(v)) pathParams[key] = runeToAtom(v);\n\t\t\telse pathParams[key] = isReadable(v) ? readableToAtom(v) : v;\n\t\t}\n\t\tfor (const [key, value] of Object.entries(query ?? {})) {\n\t\t\tconst v = value;\n\t\t\tif (isCallable(v)) queryParams[key] = runeToAtom(v);\n\t\t\telse queryParams[key] = isReadable(v) ? readableToAtom(v) : v;\n\t\t}\n\t\tconst store = hook.store({\n\t\t\tpath: pathParams,\n\t\t\tquery: queryParams\n\t\t});\n\t\tconst data = writable(void 0);\n\t\tconst loading = writable(false);\n\t\tconst error = writable(void 0);\n\t\tconst unsubscribe = store.subscribe((updatedStoreValue) => {\n\t\t\tdata.set(updatedStoreValue.data);\n\t\t\tloading.set(updatedStoreValue.loading);\n\t\t\terror.set(updatedStoreValue.error);\n\t\t});\n\t\tonDestroy(() => {\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn {\n\t\t\tdata,\n\t\t\tloading,\n\t\t\terror\n\t\t};\n\t};\n}\nfunction createSvelteMutator(hook) {\n\treturn () => {\n\t\tconst data = writable(void 0);\n\t\tconst loading = writable(void 0);\n\t\tconst error = writable(void 0);\n\t\tconst unsubscribe = hook.mutatorStore.subscribe((storeValue) => {\n\t\t\tdata.set(storeValue.data);\n\t\t\tloading.set(storeValue.loading);\n\t\t\terror.set(storeValue.error);\n\t\t});\n\t\tonDestroy(() => {\n\t\t\tunsubscribe();\n\t\t});\n\t\tconst mutate = async (args) => {\n\t\t\tconst { body, path, query } = args;\n\t\t\tconst pathParams = {};\n\t\t\tconst queryParams = {};\n\t\t\tfor (const [key, value] of Object.entries(path ?? {})) {\n\t\t\t\tconst v = value;\n\t\t\t\tpathParams[key] = isReadable(v) ? readableToAtom(v) : v;\n\t\t\t}\n\t\t\tfor (const [key, value] of Object.entries(query ?? {})) {\n\t\t\t\tconst v = value;\n\t\t\t\tqueryParams[key] = isReadable(v) ? readableToAtom(v) : v;\n\t\t\t}\n\t\t\treturn hook.mutatorStore.mutate({\n\t\t\t\tbody,\n\t\t\t\tpath: pathParams,\n\t\t\t\tquery: queryParams\n\t\t\t});\n\t\t};\n\t\treturn {\n\t\t\tmutate,\n\t\t\tloading,\n\t\t\terror,\n\t\t\tdata\n\t\t};\n\t};\n}\nfunction createSvelteStore(hook) {\n\treturn hook.obj;\n}\nfunction useFragno(clientObj) {\n\tconst result = {};\n\tfor (const key in clientObj) {\n\t\tif (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;\n\t\tconst hook = clientObj[key];\n\t\tif (isGetHook(hook)) result[key] = createSvelteHook(hook);\n\t\telse if (isMutatorHook(hook)) result[key] = createSvelteMutator(hook);\n\t\telse if (isStore(hook)) result[key] = createSvelteStore(hook);\n\t\telse result[key] = hook;\n\t}\n\treturn result;\n}\n\n//#endregion\nexport { createSvelteStore, readableToAtom, runeToAtom, useFragno };\n//# sourceMappingURL=client.svelte.js.map","import { useFragno } from \"@fragno-dev/core/svelte\";\nimport { createFormsClients } from \"..\";\nimport type { FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\n\nexport function createFormsClient(config: FragnoPublicClientConfig = {}) {\n return useFragno(createFormsClients(config));\n}\n"],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import * as zod293 from "zod";
2
+ import * as zod_v4_core19 from "zod/v4/core";
3
+ import * as _fragno_dev_core_api9 from "@fragno-dev/core/api";
4
+ import * as _standard_schema_spec15 from "@standard-schema/spec";
5
+ import { FragnoPublicClientConfig } from "@fragno-dev/core/client";
6
+ import * as _fragno_dev_core_vanilla0 from "@fragno-dev/core/vanilla";
7
+
8
+ //#region src/client/vanilla.d.ts
9
+ declare function createFormsClient(config?: FragnoPublicClientConfig): {
10
+ useForm: _fragno_dev_core_vanilla0.FragnoVanillaListeners<"GET", "/:slug", zod293.ZodObject<{
11
+ id: zod293.ZodString;
12
+ title: zod293.ZodString;
13
+ description: zod293.ZodNullable<zod293.ZodString>;
14
+ slug: zod293.ZodString;
15
+ status: zod293.ZodEnum<{
16
+ draft: "draft";
17
+ open: "open";
18
+ closed: "closed";
19
+ static: "static";
20
+ }>;
21
+ dataSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
22
+ uiSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
23
+ version: zod293.ZodNumber;
24
+ createdAt: zod293.ZodDate;
25
+ updatedAt: zod293.ZodDate;
26
+ }, zod_v4_core19.$strip>, "NOT_FOUND", string>;
27
+ useSubmitForm: _fragno_dev_core_vanilla0.FragnoVanillaMutator<_fragno_dev_core_api9.NonGetHTTPMethod, "/:slug/submit", zod293.ZodObject<{
28
+ data: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
29
+ securityToken: zod293.ZodOptional<zod293.ZodString>;
30
+ }, zod_v4_core19.$strip> | undefined, zod293.ZodString | undefined, "NOT_FOUND" | "VALIDATION_ERROR" | "FORM_NOT_OPEN", string>;
31
+ useForms: _fragno_dev_core_vanilla0.FragnoVanillaListeners<"GET", "/admin/forms", NonNullable<zod293.ZodString | zod293.ZodArray<zod293.ZodObject<{
32
+ id: zod293.ZodString;
33
+ title: zod293.ZodString;
34
+ description: zod293.ZodNullable<zod293.ZodString>;
35
+ slug: zod293.ZodString;
36
+ status: zod293.ZodEnum<{
37
+ draft: "draft";
38
+ open: "open";
39
+ closed: "closed";
40
+ static: "static";
41
+ }>;
42
+ dataSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
43
+ uiSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
44
+ version: zod293.ZodNumber;
45
+ createdAt: zod293.ZodDate;
46
+ updatedAt: zod293.ZodDate;
47
+ }, zod_v4_core19.$strip>> | undefined>, string, string>;
48
+ useCreateForm: _fragno_dev_core_vanilla0.FragnoVanillaMutator<_fragno_dev_core_api9.NonGetHTTPMethod, "/admin/forms", _standard_schema_spec15.StandardSchemaV1<unknown, unknown> | zod293.ZodObject<{
49
+ status: zod293.ZodEnum<{
50
+ draft: "draft";
51
+ open: "open";
52
+ closed: "closed";
53
+ static: "static";
54
+ }>;
55
+ title: zod293.ZodString;
56
+ description: zod293.ZodNullable<zod293.ZodString>;
57
+ slug: zod293.ZodString;
58
+ dataSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
59
+ uiSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
60
+ }, zod_v4_core19.$strip> | undefined, zod293.ZodString | zod293.ZodArray<zod293.ZodObject<{
61
+ id: zod293.ZodString;
62
+ title: zod293.ZodString;
63
+ description: zod293.ZodNullable<zod293.ZodString>;
64
+ slug: zod293.ZodString;
65
+ status: zod293.ZodEnum<{
66
+ draft: "draft";
67
+ open: "open";
68
+ closed: "closed";
69
+ static: "static";
70
+ }>;
71
+ dataSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
72
+ uiSchema: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
73
+ version: zod293.ZodNumber;
74
+ createdAt: zod293.ZodDate;
75
+ updatedAt: zod293.ZodDate;
76
+ }, zod_v4_core19.$strip>> | undefined, string, string>;
77
+ useUpdateForm: _fragno_dev_core_vanilla0.FragnoVanillaMutator<_fragno_dev_core_api9.NonGetHTTPMethod, "/admin/forms/:id", _standard_schema_spec15.StandardSchemaV1<unknown, unknown> | zod293.ZodObject<{
78
+ status: zod293.ZodOptional<zod293.ZodEnum<{
79
+ draft: "draft";
80
+ open: "open";
81
+ closed: "closed";
82
+ static: "static";
83
+ }>>;
84
+ title: zod293.ZodOptional<zod293.ZodString>;
85
+ description: zod293.ZodOptional<zod293.ZodNullable<zod293.ZodString>>;
86
+ slug: zod293.ZodOptional<zod293.ZodString>;
87
+ dataSchema: zod293.ZodOptional<zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>>;
88
+ uiSchema: zod293.ZodOptional<zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>>;
89
+ }, zod_v4_core19.$strip> | undefined, _standard_schema_spec15.StandardSchemaV1<unknown, unknown> | undefined, "NOT_FOUND" | "STATIC_FORM_READ_ONLY", string>;
90
+ useDeleteForm: _fragno_dev_core_vanilla0.FragnoVanillaMutator<_fragno_dev_core_api9.NonGetHTTPMethod, "/admin/forms/:id", _standard_schema_spec15.StandardSchemaV1<unknown, unknown> | zod293.ZodObject<{
91
+ status: zod293.ZodOptional<zod293.ZodEnum<{
92
+ draft: "draft";
93
+ open: "open";
94
+ closed: "closed";
95
+ static: "static";
96
+ }>>;
97
+ title: zod293.ZodOptional<zod293.ZodString>;
98
+ description: zod293.ZodOptional<zod293.ZodNullable<zod293.ZodString>>;
99
+ slug: zod293.ZodOptional<zod293.ZodString>;
100
+ dataSchema: zod293.ZodOptional<zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>>;
101
+ uiSchema: zod293.ZodOptional<zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>>;
102
+ }, zod_v4_core19.$strip> | undefined, _standard_schema_spec15.StandardSchemaV1<unknown, unknown> | undefined, "NOT_FOUND" | "STATIC_FORM_READ_ONLY", string>;
103
+ useSubmissions: _fragno_dev_core_vanilla0.FragnoVanillaListeners<"GET", "/admin/forms/:id/submissions", zod293.ZodArray<zod293.ZodObject<{
104
+ id: zod293.ZodString;
105
+ formId: zod293.ZodNullable<zod293.ZodString>;
106
+ formVersion: zod293.ZodNumber;
107
+ data: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
108
+ submittedAt: zod293.ZodDate;
109
+ ip: zod293.ZodNullable<zod293.ZodString>;
110
+ userAgent: zod293.ZodNullable<zod293.ZodString>;
111
+ }, zod_v4_core19.$strip>>, string, "sortOrder">;
112
+ useSubmission: _fragno_dev_core_vanilla0.FragnoVanillaListeners<"GET", "/admin/submissions/:id", NonNullable<_standard_schema_spec15.StandardSchemaV1<unknown, unknown> | zod293.ZodObject<{
113
+ id: zod293.ZodString;
114
+ formId: zod293.ZodNullable<zod293.ZodString>;
115
+ formVersion: zod293.ZodNumber;
116
+ data: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
117
+ submittedAt: zod293.ZodDate;
118
+ ip: zod293.ZodNullable<zod293.ZodString>;
119
+ userAgent: zod293.ZodNullable<zod293.ZodString>;
120
+ }, zod_v4_core19.$strip> | undefined>, "NOT_FOUND", string>;
121
+ useDeleteSubmission: _fragno_dev_core_vanilla0.FragnoVanillaMutator<_fragno_dev_core_api9.NonGetHTTPMethod, "/admin/submissions/:id", _standard_schema_spec15.StandardSchemaV1<unknown, unknown> | undefined, _standard_schema_spec15.StandardSchemaV1<unknown, unknown> | zod293.ZodObject<{
122
+ id: zod293.ZodString;
123
+ formId: zod293.ZodNullable<zod293.ZodString>;
124
+ formVersion: zod293.ZodNumber;
125
+ data: zod293.ZodRecord<zod293.ZodString, zod293.ZodUnknown>;
126
+ submittedAt: zod293.ZodDate;
127
+ ip: zod293.ZodNullable<zod293.ZodString>;
128
+ userAgent: zod293.ZodNullable<zod293.ZodString>;
129
+ }, zod_v4_core19.$strip> | undefined, "NOT_FOUND", string>;
130
+ };
131
+ //# sourceMappingURL=vanilla.d.ts.map
132
+
133
+ //#endregion
134
+ export { createFormsClient };
135
+ //# sourceMappingURL=vanilla.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla.d.ts","names":[],"sources":["../../../../src/client/vanilla.ts"],"sourcesContent":[],"mappings":";;;;;;;;iBAIgB,iBAAA,UAA0B;;QAA6B,MAAA,CAAA;;;;;MAAvD,KAAA,EAAA,OAAiB;MAAA,IAAA,EAAA,MAAA;MAAS,MAAA,EAAA,QAAA;MAA6B,MAAA,EAAA,QAAA"}
@@ -0,0 +1,139 @@
1
+ import { createFormsClients, isGetHook, isMutatorHook } from "../src-DElBPLyi.js";
2
+
3
+ //#region ../fragno/dist/util/async.js
4
+ /**
5
+ * Creates an async iterator from a subscribe function that follows the observable pattern.
6
+ *
7
+ * @template T The type of values produced by the store.
8
+ * @param subscribe A function that subscribes to store updates. It receives a callback to be
9
+ * called on each update, and returns an unsubscribe function.
10
+ * @returns An async generator that yields store values as they are produced.
11
+ */
12
+ function createAsyncIteratorFromCallback(subscribe) {
13
+ const queue = [];
14
+ let unsubscribe = null;
15
+ let resolveNext = null;
16
+ const unsubscribeFunc = subscribe((value) => {
17
+ if (resolveNext) {
18
+ resolveNext({
19
+ value,
20
+ done: false
21
+ });
22
+ resolveNext = null;
23
+ } else queue.push(value);
24
+ });
25
+ if (typeof unsubscribeFunc === "function") unsubscribe = unsubscribeFunc;
26
+ return async function* () {
27
+ try {
28
+ while (true) if (queue.length > 0) yield queue.shift();
29
+ else yield await new Promise((resolve) => {
30
+ resolveNext = (result) => {
31
+ if (!result.done) resolve(result.value);
32
+ };
33
+ });
34
+ } finally {
35
+ if (unsubscribe) unsubscribe();
36
+ }
37
+ }();
38
+ }
39
+
40
+ //#endregion
41
+ //#region ../fragno/dist/client/vanilla.js
42
+ function createVanillaListeners(hook) {
43
+ return ({ path, query } = {}) => {
44
+ const store = hook.store({
45
+ path,
46
+ query
47
+ });
48
+ return {
49
+ listen: (callback) => {
50
+ return store.listen(({ loading, error, data }) => callback({
51
+ loading,
52
+ error,
53
+ data
54
+ }));
55
+ },
56
+ subscribe: (callback) => {
57
+ return store.subscribe(({ loading, error, data }) => callback({
58
+ loading,
59
+ error,
60
+ data
61
+ }));
62
+ },
63
+ refetch: () => {
64
+ return store.revalidate();
65
+ },
66
+ get: () => {
67
+ return store.get();
68
+ },
69
+ [Symbol.asyncIterator]() {
70
+ return createAsyncIteratorFromCallback((callback) => store.listen(({ loading, error, data }) => callback({
71
+ loading,
72
+ error,
73
+ data
74
+ })));
75
+ }
76
+ };
77
+ };
78
+ }
79
+ function createVanillaMutator(hook) {
80
+ return () => {
81
+ const store = hook.mutatorStore;
82
+ return {
83
+ subscribe: (callback) => {
84
+ return store.subscribe((value) => {
85
+ callback({
86
+ loading: value.loading ?? false,
87
+ error: value.error,
88
+ data: value.data
89
+ });
90
+ });
91
+ },
92
+ get: () => {
93
+ const { loading, error, data } = store.get();
94
+ return {
95
+ loading: loading ?? false,
96
+ error,
97
+ data
98
+ };
99
+ },
100
+ mutate: ({ body, path, query }) => {
101
+ return store.mutate({
102
+ body,
103
+ path,
104
+ query
105
+ });
106
+ },
107
+ [Symbol.asyncIterator]() {
108
+ return createAsyncIteratorFromCallback((callback) => store.listen((value) => {
109
+ callback({
110
+ loading: value.loading ?? false,
111
+ error: value.error,
112
+ data: value.data
113
+ });
114
+ }));
115
+ }
116
+ };
117
+ };
118
+ }
119
+ function useFragno(clientObj) {
120
+ const result = {};
121
+ for (const key in clientObj) {
122
+ if (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;
123
+ const hook = clientObj[key];
124
+ if (isGetHook(hook)) result[key] = createVanillaListeners(hook);
125
+ else if (isMutatorHook(hook)) result[key] = createVanillaMutator(hook);
126
+ else result[key] = hook;
127
+ }
128
+ return result;
129
+ }
130
+
131
+ //#endregion
132
+ //#region src/client/vanilla.ts
133
+ function createFormsClient(config = {}) {
134
+ return useFragno(createFormsClients(config));
135
+ }
136
+
137
+ //#endregion
138
+ export { createFormsClient };
139
+ //# sourceMappingURL=vanilla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla.js","names":["createAsyncIteratorFromCallback","subscribe","queue","unsubscribe","resolveNext","unsubscribeFunc","value","done","push","length","shift","Promise","resolve","result","isGetHook","isMutatorHook","createAsyncIteratorFromCallback","createVanillaListeners","hook","path","query","store","listen","callback","loading","error","data","subscribe","refetch","revalidate","get","Symbol","asyncIterator","createVanillaMutator","mutatorStore","value","mutate","body","useFragno","clientObj","result","key","Object","prototype","hasOwnProperty","call","useFragno","createFormsClients","FragnoPublicClientConfig","createFormsClient","config"],"sources":["../../../../fragno/dist/util/async.js","../../../../fragno/dist/client/vanilla.js","../../../src/client/vanilla.ts"],"sourcesContent":["//#region src/util/async.ts\n/**\n* Creates an async iterator from a subscribe function that follows the observable pattern.\n*\n* @template T The type of values produced by the store.\n* @param subscribe A function that subscribes to store updates. It receives a callback to be\n* called on each update, and returns an unsubscribe function.\n* @returns An async generator that yields store values as they are produced.\n*/\nfunction createAsyncIteratorFromCallback(subscribe) {\n\tconst queue = [];\n\tlet unsubscribe = null;\n\tlet resolveNext = null;\n\tconst unsubscribeFunc = subscribe((value) => {\n\t\tif (resolveNext) {\n\t\t\tresolveNext({\n\t\t\t\tvalue,\n\t\t\t\tdone: false\n\t\t\t});\n\t\t\tresolveNext = null;\n\t\t} else queue.push(value);\n\t});\n\tif (typeof unsubscribeFunc === \"function\") unsubscribe = unsubscribeFunc;\n\treturn (async function* () {\n\t\ttry {\n\t\t\twhile (true) if (queue.length > 0) yield queue.shift();\n\t\t\telse yield await new Promise((resolve) => {\n\t\t\t\tresolveNext = (result) => {\n\t\t\t\t\tif (!result.done) resolve(result.value);\n\t\t\t\t};\n\t\t\t});\n\t\t} finally {\n\t\t\tif (unsubscribe) unsubscribe();\n\t\t}\n\t})();\n}\n\n//#endregion\nexport { createAsyncIteratorFromCallback };\n//# sourceMappingURL=async.js.map","import { isGetHook, isMutatorHook } from \"./client.js\";\nimport { createAsyncIteratorFromCallback } from \"../util/async.js\";\n\n//#region src/client/vanilla.ts\nfunction createVanillaListeners(hook) {\n\treturn ({ path, query } = {}) => {\n\t\tconst store = hook.store({\n\t\t\tpath,\n\t\t\tquery\n\t\t});\n\t\treturn {\n\t\t\tlisten: (callback) => {\n\t\t\t\treturn store.listen(({ loading, error, data }) => callback({\n\t\t\t\t\tloading,\n\t\t\t\t\terror,\n\t\t\t\t\tdata\n\t\t\t\t}));\n\t\t\t},\n\t\t\tsubscribe: (callback) => {\n\t\t\t\treturn store.subscribe(({ loading, error, data }) => callback({\n\t\t\t\t\tloading,\n\t\t\t\t\terror,\n\t\t\t\t\tdata\n\t\t\t\t}));\n\t\t\t},\n\t\t\trefetch: () => {\n\t\t\t\treturn store.revalidate();\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\treturn store.get();\n\t\t\t},\n\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\treturn createAsyncIteratorFromCallback((callback) => store.listen(({ loading, error, data }) => callback({\n\t\t\t\t\tloading,\n\t\t\t\t\terror,\n\t\t\t\t\tdata\n\t\t\t\t})));\n\t\t\t}\n\t\t};\n\t};\n}\nfunction createVanillaMutator(hook) {\n\treturn () => {\n\t\tconst store = hook.mutatorStore;\n\t\treturn {\n\t\t\tsubscribe: (callback) => {\n\t\t\t\treturn store.subscribe((value) => {\n\t\t\t\t\tcallback({\n\t\t\t\t\t\tloading: value.loading ?? false,\n\t\t\t\t\t\terror: value.error,\n\t\t\t\t\t\tdata: value.data\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tget: () => {\n\t\t\t\tconst { loading, error, data } = store.get();\n\t\t\t\treturn {\n\t\t\t\t\tloading: loading ?? false,\n\t\t\t\t\terror,\n\t\t\t\t\tdata\n\t\t\t\t};\n\t\t\t},\n\t\t\tmutate: ({ body, path, query }) => {\n\t\t\t\treturn store.mutate({\n\t\t\t\t\tbody,\n\t\t\t\t\tpath,\n\t\t\t\t\tquery\n\t\t\t\t});\n\t\t\t},\n\t\t\t[Symbol.asyncIterator]() {\n\t\t\t\treturn createAsyncIteratorFromCallback((callback) => store.listen((value) => {\n\t\t\t\t\tcallback({\n\t\t\t\t\t\tloading: value.loading ?? false,\n\t\t\t\t\t\terror: value.error,\n\t\t\t\t\t\tdata: value.data\n\t\t\t\t\t});\n\t\t\t\t}));\n\t\t\t}\n\t\t};\n\t};\n}\nfunction useFragno(clientObj) {\n\tconst result = {};\n\tfor (const key in clientObj) {\n\t\tif (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;\n\t\tconst hook = clientObj[key];\n\t\tif (isGetHook(hook)) result[key] = createVanillaListeners(hook);\n\t\telse if (isMutatorHook(hook)) result[key] = createVanillaMutator(hook);\n\t\telse result[key] = hook;\n\t}\n\treturn result;\n}\n\n//#endregion\nexport { useFragno };\n//# sourceMappingURL=vanilla.js.map","import { useFragno } from \"@fragno-dev/core/vanilla\";\nimport { createFormsClients } from \"..\";\nimport type { FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\n\nexport function createFormsClient(config: FragnoPublicClientConfig = {}) {\n return useFragno(createFormsClients(config));\n}\n"],"mappings":"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"}