@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":"vue.d.ts","names":[],"sources":["../../../../fragno/dist/client/vue.d.ts","../../../src/client/vue.ts"],"mappings":";;;;;KASK,cAAc,wBAAwB,sBAAsB,sBAAsB,kBAAkB,2BAA2B,oCAAoC;EACtK,OAAO,8BAA8B,gBAAgB,cAAc;EACnE,QAAQ,gBAAgB,2BAA2B,cAAc;;EAEjE,MAAM,IAAI,QAAQ;EAClB,SAAS;EACT,OAAO,IAAI,yBAAyB;;KAEjC,iBAAiB,iBAAiB,kBAAkB,sBAAsB,qBAAqB,8BAA8B,sBAAsB,8BAA8B,2BAA2B;EAC/M,SAAS;IACP,OAAO,QAAQ;IACf,OAAO,8BAA8B,gBAAgB,cAAc;IACnE,QAAQ,gBAAgB,2BAA2B,cAAc;QAC7D,QAAQ,QAAQ;EACtB,SAAS;EACT,OAAO,IAAI,yBAAyB;EACpC,MAAM,IAAI,QAAQ;;;;iBCpBJ,wBAAwB,SAAQ;kBAAA"}
|
|
@@ -0,0 +1,127 @@
|
|
|
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 { computed, getCurrentScope, isRef, onScopeDispose, ref, shallowRef, watch } from "vue";
|
|
3
|
+
//#region ../fragno/dist/client/vue.js
|
|
4
|
+
/**
|
|
5
|
+
* Converts a Vue Ref to a NanoStore Atom.
|
|
6
|
+
*
|
|
7
|
+
* This is used to convert Vue refs to atoms, so that we can use them in the store.
|
|
8
|
+
*
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
function refToAtom(ref) {
|
|
12
|
+
const a = /* @__PURE__ */ atom(ref.value);
|
|
13
|
+
watch(ref, (newVal) => {
|
|
14
|
+
a.set(newVal);
|
|
15
|
+
});
|
|
16
|
+
return a;
|
|
17
|
+
}
|
|
18
|
+
function createVueHook(hook) {
|
|
19
|
+
return ({ path, query } = {}) => {
|
|
20
|
+
const pathParams = {};
|
|
21
|
+
const queryParams = {};
|
|
22
|
+
for (const [key, value] of Object.entries(path ?? {})) {
|
|
23
|
+
const v = value;
|
|
24
|
+
pathParams[key] = isRef(v) ? refToAtom(v) : v;
|
|
25
|
+
}
|
|
26
|
+
for (const [key, value] of Object.entries(query ?? {})) {
|
|
27
|
+
const v = value;
|
|
28
|
+
queryParams[key] = isRef(v) ? refToAtom(v) : v;
|
|
29
|
+
}
|
|
30
|
+
const store = hook.store({
|
|
31
|
+
path: pathParams,
|
|
32
|
+
query: queryParams
|
|
33
|
+
});
|
|
34
|
+
const data = ref();
|
|
35
|
+
const loading = ref();
|
|
36
|
+
const error = ref();
|
|
37
|
+
const unsubscribe = store.subscribe((updatedStoreValue) => {
|
|
38
|
+
data.value = updatedStoreValue.data;
|
|
39
|
+
loading.value = updatedStoreValue.loading;
|
|
40
|
+
error.value = updatedStoreValue.error;
|
|
41
|
+
});
|
|
42
|
+
if (getCurrentScope()) onScopeDispose(() => {
|
|
43
|
+
unsubscribe();
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
data,
|
|
47
|
+
loading,
|
|
48
|
+
error
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createVueMutator(hook) {
|
|
53
|
+
return () => {
|
|
54
|
+
const store = useStore(hook.mutatorStore);
|
|
55
|
+
const mutate = async (args) => {
|
|
56
|
+
const { body, path, query } = args;
|
|
57
|
+
const pathParams = {};
|
|
58
|
+
const queryParams = {};
|
|
59
|
+
for (const [key, value] of Object.entries(path ?? {})) {
|
|
60
|
+
const v = value;
|
|
61
|
+
pathParams[key] = isRef(v) ? v.value : v;
|
|
62
|
+
}
|
|
63
|
+
for (const [key, value] of Object.entries(query ?? {})) {
|
|
64
|
+
const v = value;
|
|
65
|
+
queryParams[key] = isRef(v) ? v.value : v;
|
|
66
|
+
}
|
|
67
|
+
return store.value.mutate({
|
|
68
|
+
body,
|
|
69
|
+
path: pathParams,
|
|
70
|
+
query: queryParams
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
mutate,
|
|
75
|
+
loading: computed(() => store.value.loading),
|
|
76
|
+
error: computed(() => store.value.error),
|
|
77
|
+
data: computed(() => store.value.data)
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function unwrapVueStoreValue(value) {
|
|
82
|
+
if (isReadableAtom(value)) return useStore(value);
|
|
83
|
+
const entries = Object.keys(value).map((key) => {
|
|
84
|
+
const fieldValue = value[key];
|
|
85
|
+
return [key, isReadableAtom(fieldValue) ? useStore(fieldValue) : fieldValue];
|
|
86
|
+
});
|
|
87
|
+
return Object.fromEntries(entries);
|
|
88
|
+
}
|
|
89
|
+
function createVueStore(hook) {
|
|
90
|
+
return (...args) => {
|
|
91
|
+
const value = "factory" in hook ? hook.factory(...args) : hook.obj;
|
|
92
|
+
const disposer = value[Symbol.dispose];
|
|
93
|
+
if (typeof disposer === "function" && getCurrentScope()) onScopeDispose(() => {
|
|
94
|
+
disposer.call(value);
|
|
95
|
+
});
|
|
96
|
+
return unwrapVueStoreValue(value);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function useFragno(clientObj) {
|
|
100
|
+
const result = {};
|
|
101
|
+
for (const key in clientObj) {
|
|
102
|
+
if (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;
|
|
103
|
+
const hook = clientObj[key];
|
|
104
|
+
if (isGetHook(hook)) result[key] = createVueHook(hook);
|
|
105
|
+
else if (isMutatorHook(hook)) result[key] = createVueMutator(hook);
|
|
106
|
+
else if (isStore(hook)) result[key] = createVueStore(hook);
|
|
107
|
+
else result[key] = hook;
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
function useStore(store) {
|
|
112
|
+
const state = shallowRef();
|
|
113
|
+
const unsubscribe = store.subscribe((value) => {
|
|
114
|
+
state.value = value;
|
|
115
|
+
});
|
|
116
|
+
if (getCurrentScope()) onScopeDispose(unsubscribe);
|
|
117
|
+
return state;
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/client/vue.ts
|
|
121
|
+
function createApiFragmentClient(config = {}) {
|
|
122
|
+
return useFragno(createApiFragmentClients(config));
|
|
123
|
+
}
|
|
124
|
+
//#endregion
|
|
125
|
+
export { createApiFragmentClient };
|
|
126
|
+
|
|
127
|
+
//# sourceMappingURL=vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vue.js","names":["isReadableAtom","isGetHook","isMutatorHook","isStore","atom","computed","computed$1","getCurrentScope","isRef","onScopeDispose","ref","shallowRef","watch","refToAtom","a","value","newVal","set","createVueHook","hook","path","query","pathParams","queryParams","key","Object","entries","v","store","data","loading","error","unsubscribe","subscribe","updatedStoreValue","createVueMutator","useStore","mutatorStore","mutate","args","body","unwrapVueStoreValue","keys","map","fieldValue","fromEntries","createVueStore","factory","obj","disposer","Symbol","dispose","call","useFragno","clientObj","result","prototype","hasOwnProperty","state","FragnoPublicClientConfig","useFragno","createApiFragmentClients","createApiFragmentClient","config"],"sources":["../../../../fragno/dist/client/vue.js","../../../src/client/vue.ts"],"sourcesContent":["import { isReadableAtom } from \"../util/nanostores.js\";\nimport { isGetHook, isMutatorHook, isStore } from \"./client.js\";\nimport { atom } from \"nanostores\";\nimport { computed as computed$1, getCurrentScope, isRef, onScopeDispose, ref, shallowRef, watch } from \"vue\";\n//#region src/client/vue.ts\n/**\n* Converts a Vue Ref to a NanoStore Atom.\n*\n* This is used to convert Vue refs to atoms, so that we can use them in the store.\n*\n* @private\n*/\nfunction refToAtom(ref) {\n\tconst a = atom(ref.value);\n\twatch(ref, (newVal) => {\n\t\ta.set(newVal);\n\t});\n\treturn a;\n}\nfunction createVueHook(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] = isRef(v) ? refToAtom(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] = isRef(v) ? refToAtom(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 = ref();\n\t\tconst loading = ref();\n\t\tconst error = ref();\n\t\tconst unsubscribe = store.subscribe((updatedStoreValue) => {\n\t\t\tdata.value = updatedStoreValue.data;\n\t\t\tloading.value = updatedStoreValue.loading;\n\t\t\terror.value = updatedStoreValue.error;\n\t\t});\n\t\tif (getCurrentScope()) onScopeDispose(() => {\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 createVueMutator(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] = isRef(v) ? v.value : 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] = isRef(v) ? v.value : v;\n\t\t\t}\n\t\t\treturn store.value.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: computed$1(() => store.value.loading),\n\t\t\terror: computed$1(() => store.value.error),\n\t\t\tdata: computed$1(() => store.value.data)\n\t\t};\n\t};\n}\nfunction unwrapVueStoreValue(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 createVueStore(hook) {\n\treturn ((...args) => {\n\t\tconst value = \"factory\" in hook ? hook.factory(...args) : hook.obj;\n\t\tconst disposer = value[Symbol.dispose];\n\t\tif (typeof disposer === \"function\" && getCurrentScope()) onScopeDispose(() => {\n\t\t\tdisposer.call(value);\n\t\t});\n\t\treturn unwrapVueStoreValue(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] = createVueHook(hook);\n\t\telse if (isMutatorHook(hook)) result[key] = createVueMutator(hook);\n\t\telse if (isStore(hook)) result[key] = createVueStore(hook);\n\t\telse result[key] = hook;\n\t}\n\treturn result;\n}\nfunction useStore(store) {\n\tconst state = shallowRef();\n\tconst unsubscribe = store.subscribe((value) => {\n\t\tstate.value = value;\n\t});\n\tif (getCurrentScope()) onScopeDispose(unsubscribe);\n\treturn state;\n}\n//#endregion\nexport { refToAtom, useFragno, useStore };\n\n//# sourceMappingURL=vue.js.map","import type { FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\nimport { useFragno } from \"@fragno-dev/core/vue\";\n\nimport { createApiFragmentClients } from \"./client\";\n\nexport function createApiFragmentClient(config: FragnoPublicClientConfig = {}) {\n return useFragno(createApiFragmentClients(config));\n}\n"],"mappings":"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"}
|