@fragno-dev/api-fragment 0.0.0-stage → 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.
- package/LICENSE.md +16 -0
- package/README.md +249 -2
- package/dist/browser/client/client-3ZV9sw3i.js +2580 -0
- package/dist/browser/client/client-3ZV9sw3i.js.map +1 -0
- package/dist/browser/client/client-DPjmoaJQ.d.ts +711 -0
- package/dist/browser/client/client-DPjmoaJQ.d.ts.map +1 -0
- package/dist/browser/client/client.d.ts +1645 -0
- package/dist/browser/client/client.d.ts.map +1 -0
- package/dist/browser/client/client.js +2 -0
- package/dist/browser/client/react.d.ts +1665 -0
- package/dist/browser/client/react.d.ts.map +1 -0
- package/dist/browser/client/react.js +194 -0
- package/dist/browser/client/react.js.map +1 -0
- package/dist/browser/client/solid.d.ts +1668 -0
- package/dist/browser/client/solid.d.ts.map +1 -0
- package/dist/browser/client/solid.js +129 -0
- package/dist/browser/client/solid.js.map +1 -0
- package/dist/browser/client/svelte.d.ts +1668 -0
- package/dist/browser/client/svelte.d.ts.map +1 -0
- package/dist/browser/client/svelte.js +131 -0
- package/dist/browser/client/svelte.js.map +1 -0
- package/dist/browser/client/vanilla.d.ts +1695 -0
- package/dist/browser/client/vanilla.d.ts.map +1 -0
- package/dist/browser/client/vanilla.js +159 -0
- package/dist/browser/client/vanilla.js.map +1 -0
- package/dist/browser/client/vue.d.ts +1668 -0
- package/dist/browser/client/vue.d.ts.map +1 -0
- package/dist/browser/client/vue.js +127 -0
- package/dist/browser/client/vue.js.map +1 -0
- package/dist/browser/client-D4NnY-zV.d.ts +713 -0
- package/dist/browser/client-D4NnY-zV.d.ts.map +1 -0
- package/dist/browser/client-DQE0c7GI.d.ts +711 -0
- package/dist/browser/client-DQE0c7GI.d.ts.map +1 -0
- package/dist/browser/index.d.ts +3130 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/src-BrYPVbAN.js +2404 -0
- package/dist/browser/src-BrYPVbAN.js.map +1 -0
- package/dist/browser/src-t-4wp9-f.js +2400 -0
- package/dist/browser/src-t-4wp9-f.js.map +1 -0
- package/dist/node/api-types.d.ts +731 -0
- package/dist/node/api-types.d.ts.map +1 -0
- package/dist/node/api-types.js +281 -0
- package/dist/node/api-types.js.map +1 -0
- package/dist/node/crypto.d.ts +6 -0
- package/dist/node/crypto.d.ts.map +1 -0
- package/dist/node/crypto.js +103 -0
- package/dist/node/crypto.js.map +1 -0
- package/dist/node/definition.d.ts +638 -0
- package/dist/node/definition.d.ts.map +1 -0
- package/dist/node/definition.js +315 -0
- package/dist/node/definition.js.map +1 -0
- package/dist/node/oauth.js +124 -0
- package/dist/node/oauth.js.map +1 -0
- package/dist/node/routes.d.ts +1585 -0
- package/dist/node/routes.d.ts.map +1 -0
- package/dist/node/routes.js +1100 -0
- package/dist/node/routes.js.map +1 -0
- package/dist/node/schema.d.ts +99 -0
- package/dist/node/schema.d.ts.map +1 -0
- package/dist/node/schema.js +16 -0
- package/dist/node/schema.js.map +1 -0
- package/dist/node/server.d.ts +1585 -0
- package/dist/node/server.d.ts.map +1 -0
- package/dist/node/server.js +12 -0
- package/dist/node/server.js.map +1 -0
- package/dist/node/services.d.ts +10 -0
- package/dist/node/services.d.ts.map +1 -0
- package/dist/node/services.js +304 -0
- package/dist/node/services.js.map +1 -0
- package/dist/node/webhooks/auth.d.ts +133 -0
- package/dist/node/webhooks/auth.d.ts.map +1 -0
- package/dist/node/webhooks/auth.js +268 -0
- package/dist/node/webhooks/auth.js.map +1 -0
- package/dist/node/webhooks/verification.d.ts +102 -0
- package/dist/node/webhooks/verification.d.ts.map +1 -0
- package/dist/node/webhooks/verification.js +119 -0
- package/dist/node/webhooks/verification.js.map +1 -0
- package/package.json +136 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid.d.ts","names":[],"sources":["../../../../fragno/dist/client/solid.d.ts","../../../src/client/solid.ts"],"mappings":";;;;;KASK,gBAAgB,wBAAwB,sBAAsB,sBAAsB,kBAAkB,2BAA2B,oCAAoC;EACxK,OAAO,8BAA8B,gBAAgB,mBAAmB;EACxE,QAAQ,gBAAgB,2BAA2B,mBAAmB;;EAEtE,MAAM,SAAS,QAAQ;EACvB,SAAS;EACT,OAAO,SAAS,yBAAyB;;KAEtC,mBAAmB,iBAAiB,kBAAkB,sBAAsB,qBAAqB,8BAA8B,sBAAsB,8BAA8B,2BAA2B;EACjN,SAAS;IACP,OAAO,QAAQ;IACf,OAAO,8BAA8B,gBAAgB,mBAAmB;IACxE,QAAQ,gBAAgB,2BAA2B,mBAAmB;QAClE,QAAQ,QAAQ;EACtB,SAAS;EACT,OAAO,SAAS,yBAAyB;EACzC,MAAM,SAAS,QAAQ;;;;iBCpBT,wBAAwB,SAAQ;kBAAA"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { a as atom, i as isStore, n as isGetHook, o as isReadableAtom, r as isMutatorHook, t as createApiFragmentClients } from "./client-3ZV9sw3i.js";
|
|
2
|
+
import { createEffect, onCleanup } from "solid-js";
|
|
3
|
+
import { createStore, reconcile } from "solid-js/store";
|
|
4
|
+
//#region ../../node_modules/.pnpm/@nanostores+solid@1.1.1_nanostores@1.3.0_solid-js@1.9.13/node_modules/@nanostores/solid/dist/index.js
|
|
5
|
+
function m(e, o = {}) {
|
|
6
|
+
let t = e.listen(() => {}), [r, s] = createStore({ value: e.get() }), n = e.subscribe((i) => {
|
|
7
|
+
s("value", reconcile(i, o));
|
|
8
|
+
});
|
|
9
|
+
return onCleanup(() => n()), t(), () => r.value;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region ../fragno/dist/client/solid.js
|
|
13
|
+
/**
|
|
14
|
+
* Type guard to check if a value is a SolidJS Accessor.
|
|
15
|
+
*
|
|
16
|
+
* @private
|
|
17
|
+
*/
|
|
18
|
+
function isAccessor(value) {
|
|
19
|
+
return typeof value === "function";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Converts a SolidJS Accessor to a NanoStore Atom.
|
|
23
|
+
*
|
|
24
|
+
* This is used to convert SolidJS accessors to atoms, so that we can use them in the store.
|
|
25
|
+
*
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
function accessorToAtom(accessor) {
|
|
29
|
+
const a = /* @__PURE__ */ atom(accessor());
|
|
30
|
+
createEffect(() => {
|
|
31
|
+
a.set(accessor());
|
|
32
|
+
});
|
|
33
|
+
return a;
|
|
34
|
+
}
|
|
35
|
+
function createSolidHook(hook) {
|
|
36
|
+
return ({ path, query } = {}) => {
|
|
37
|
+
const pathParams = {};
|
|
38
|
+
const queryParams = {};
|
|
39
|
+
for (const [key, value] of Object.entries(path ?? {})) {
|
|
40
|
+
const v = value;
|
|
41
|
+
pathParams[key] = isAccessor(v) ? accessorToAtom(v) : v;
|
|
42
|
+
}
|
|
43
|
+
for (const [key, value] of Object.entries(query ?? {})) {
|
|
44
|
+
const v = value;
|
|
45
|
+
queryParams[key] = isAccessor(v) ? accessorToAtom(v) : v;
|
|
46
|
+
}
|
|
47
|
+
const storeValue = m(hook.store({
|
|
48
|
+
path: pathParams,
|
|
49
|
+
query: queryParams
|
|
50
|
+
}));
|
|
51
|
+
return {
|
|
52
|
+
data: () => storeValue().data,
|
|
53
|
+
loading: () => storeValue().loading,
|
|
54
|
+
error: () => storeValue().error
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function createSolidMutator(hook) {
|
|
59
|
+
return () => {
|
|
60
|
+
const store = m(hook.mutatorStore);
|
|
61
|
+
const mutate = async (args) => {
|
|
62
|
+
const { body, path, query } = args;
|
|
63
|
+
const pathParams = {};
|
|
64
|
+
const queryParams = {};
|
|
65
|
+
for (const [key, value] of Object.entries(path ?? {})) {
|
|
66
|
+
const v = value;
|
|
67
|
+
pathParams[key] = isAccessor(v) ? v() : v;
|
|
68
|
+
}
|
|
69
|
+
for (const [key, value] of Object.entries(query ?? {})) {
|
|
70
|
+
const v = value;
|
|
71
|
+
queryParams[key] = isAccessor(v) ? v() : v;
|
|
72
|
+
}
|
|
73
|
+
return hook.mutatorStore.mutate({
|
|
74
|
+
body,
|
|
75
|
+
path: pathParams,
|
|
76
|
+
query: queryParams
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
mutate,
|
|
81
|
+
data: () => store().data,
|
|
82
|
+
loading: () => store().loading,
|
|
83
|
+
error: () => store().error
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function unwrapSolidStoreValue(value) {
|
|
88
|
+
if (isReadableAtom(value)) return m(value);
|
|
89
|
+
const entries = Object.keys(value).map((key) => {
|
|
90
|
+
const fieldValue = value[key];
|
|
91
|
+
return [key, isReadableAtom(fieldValue) ? m(fieldValue) : fieldValue];
|
|
92
|
+
});
|
|
93
|
+
return Object.fromEntries(entries);
|
|
94
|
+
}
|
|
95
|
+
function createSolidStore(hook) {
|
|
96
|
+
if ("obj" in hook) {
|
|
97
|
+
if (isReadableAtom(hook.obj)) return m(hook.obj);
|
|
98
|
+
return () => unwrapSolidStoreValue(hook.obj);
|
|
99
|
+
}
|
|
100
|
+
return (...args) => {
|
|
101
|
+
const value = hook.factory(...args);
|
|
102
|
+
const disposer = value[Symbol.dispose];
|
|
103
|
+
if (typeof disposer === "function") onCleanup(() => {
|
|
104
|
+
disposer.call(value);
|
|
105
|
+
});
|
|
106
|
+
return unwrapSolidStoreValue(value);
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function useFragno(clientObj) {
|
|
110
|
+
const result = {};
|
|
111
|
+
for (const key in clientObj) {
|
|
112
|
+
if (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;
|
|
113
|
+
const hook = clientObj[key];
|
|
114
|
+
if (isGetHook(hook)) result[key] = createSolidHook(hook);
|
|
115
|
+
else if (isMutatorHook(hook)) result[key] = createSolidMutator(hook);
|
|
116
|
+
else if (isStore(hook)) result[key] = createSolidStore(hook);
|
|
117
|
+
else result[key] = hook;
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region src/client/solid.ts
|
|
123
|
+
function createApiFragmentClient(config = {}) {
|
|
124
|
+
return useFragno(createApiFragmentClients(config));
|
|
125
|
+
}
|
|
126
|
+
//#endregion
|
|
127
|
+
export { createApiFragmentClient };
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=solid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solid.js","names":["createStore","c","reconcile","u","onCleanup","S","m","e","o","t","listen","r","s","value","get","n","subscribe","i","useStore","isReadableAtom","isGetHook","isMutatorHook","isStore","atom","createEffect","onCleanup","useStore","isAccessor","value","accessorToAtom","accessor","a","set","createSolidHook","hook","path","query","pathParams","queryParams","key","Object","entries","v","storeValue","store","data","loading","error","createSolidMutator","mutatorStore","mutate","args","body","unwrapSolidStoreValue","keys","map","fieldValue","fromEntries","createSolidStore","obj","factory","disposer","Symbol","dispose","call","useFragno","clientObj","result","prototype","hasOwnProperty","FragnoPublicClientConfig","useFragno","createApiFragmentClients","createApiFragmentClient","config"],"sources":["../../../../../node_modules/.pnpm/@nanostores+solid@1.1.1_nanostores@1.3.0_solid-js@1.9.13/node_modules/@nanostores/solid/dist/index.js","../../../../fragno/dist/client/solid.js","../../../src/client/solid.ts"],"sourcesContent":["import{createStore as c,reconcile as u}from\"solid-js/store\";import{onCleanup as S}from\"solid-js\";function m(e,o={}){let t=e.listen(()=>{}),[r,s]=c({value:e.get()}),n=e.subscribe(i=>{s(\"value\",u(i,o))});return S(()=>n()),t(),()=>r.value}export{m as useStore};\n","import { isReadableAtom } from \"../util/nanostores.js\";\nimport { isGetHook, isMutatorHook, isStore } from \"./client.js\";\nimport { atom } from \"nanostores\";\nimport { createEffect, onCleanup } from \"solid-js\";\nimport { useStore } from \"@nanostores/solid\";\n//#region src/client/solid.ts\n/**\n* Type guard to check if a value is a SolidJS Accessor.\n*\n* @private\n*/\nfunction isAccessor(value) {\n\treturn typeof value === \"function\";\n}\n/**\n* Converts a SolidJS Accessor to a NanoStore Atom.\n*\n* This is used to convert SolidJS accessors to atoms, so that we can use them in the store.\n*\n* @private\n*/\nfunction accessorToAtom(accessor) {\n\tconst a = atom(accessor());\n\tcreateEffect(() => {\n\t\ta.set(accessor());\n\t});\n\treturn a;\n}\nfunction createSolidHook(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\tpathParams[key] = isAccessor(v) ? accessorToAtom(v) : v;\n\t\t}\n\t\tfor (const [key, value] of Object.entries(query ?? {})) {\n\t\t\tconst v = value;\n\t\t\tqueryParams[key] = isAccessor(v) ? accessorToAtom(v) : v;\n\t\t}\n\t\tconst storeValue = useStore(hook.store({\n\t\t\tpath: pathParams,\n\t\t\tquery: queryParams\n\t\t}));\n\t\treturn {\n\t\t\tdata: () => storeValue().data,\n\t\t\tloading: () => storeValue().loading,\n\t\t\terror: () => storeValue().error\n\t\t};\n\t};\n}\nfunction createSolidMutator(hook) {\n\treturn () => {\n\t\tconst store = useStore(hook.mutatorStore);\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] = isAccessor(v) ? 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] = isAccessor(v) ? 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\tdata: () => store().data,\n\t\t\tloading: () => store().loading,\n\t\t\terror: () => store().error\n\t\t};\n\t};\n}\nfunction unwrapSolidStoreValue(value) {\n\tif (isReadableAtom(value)) return useStore(value);\n\tconst entries = Object.keys(value).map((key) => {\n\t\tconst fieldValue = value[key];\n\t\treturn [key, isReadableAtom(fieldValue) ? useStore(fieldValue) : fieldValue];\n\t});\n\treturn Object.fromEntries(entries);\n}\nfunction createSolidStore(hook) {\n\tif (\"obj\" in hook) {\n\t\tif (isReadableAtom(hook.obj)) return useStore(hook.obj);\n\t\treturn (() => unwrapSolidStoreValue(hook.obj));\n\t}\n\treturn ((...args) => {\n\t\tconst value = hook.factory(...args);\n\t\tconst disposer = value[Symbol.dispose];\n\t\tif (typeof disposer === \"function\") onCleanup(() => {\n\t\t\tdisposer.call(value);\n\t\t});\n\t\treturn unwrapSolidStoreValue(value);\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] = createSolidHook(hook);\n\t\telse if (isMutatorHook(hook)) result[key] = createSolidMutator(hook);\n\t\telse if (isStore(hook)) result[key] = createSolidStore(hook);\n\t\telse result[key] = hook;\n\t}\n\treturn result;\n}\n//#endregion\nexport { accessorToAtom, isAccessor, useFragno };\n\n//# sourceMappingURL=solid.js.map","import type { FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\nimport { useFragno } from \"@fragno-dev/core/solid\";\n\nimport { createApiFragmentClients } from \"./client\";\n\nexport function createApiFragmentClient(config: FragnoPublicClientConfig = {}) {\n return useFragno(createApiFragmentClients(config));\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|