@lyeve-labs/client-vue 0.1.3 → 0.1.5
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/README.md +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ One plugin at the root, reactive refs everywhere else. No ceremony.
|
|
|
40
40
|
|
|
41
41
|
- **Node 20** or newer
|
|
42
42
|
- **Vue 3.0** or newer
|
|
43
|
-
- **[@lyeve-labs/client](https://www.npmjs.com/package/@lyeve-labs/client)** `>=0.1
|
|
43
|
+
- **[@lyeve-labs/client](https://www.npmjs.com/package/@lyeve-labs/client)** `>=0.2.1`
|
|
44
44
|
|
|
45
45
|
## Install
|
|
46
46
|
|
package/dist/index.cjs
CHANGED
|
@@ -27,7 +27,7 @@ __export(src_exports, {
|
|
|
27
27
|
module.exports = __toCommonJS(src_exports);
|
|
28
28
|
var import_client = require("@lyeve-labs/client");
|
|
29
29
|
var import_vue = require("vue");
|
|
30
|
-
var
|
|
30
|
+
var LYEVE_KEY = /* @__PURE__ */ Symbol("lyeve-client");
|
|
31
31
|
var CmsPlugin = {
|
|
32
32
|
install(app, config) {
|
|
33
33
|
const base = config.baseUrl ?? "";
|
|
@@ -38,11 +38,11 @@ var CmsPlugin = {
|
|
|
38
38
|
headers: { ...init?.headers, ...config.getHeaders?.() }
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
|
-
app.provide(
|
|
41
|
+
app.provide(LYEVE_KEY, client);
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
function useClient() {
|
|
45
|
-
const client = (0, import_vue.inject)(
|
|
45
|
+
const client = (0, import_vue.inject)(LYEVE_KEY);
|
|
46
46
|
if (!client)
|
|
47
47
|
throw new Error(
|
|
48
48
|
"CmsPlugin must be installed via app.use(CmsPlugin, config)"
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createClient, type HttpClient } from \"@lyeve-labs/client\";\nimport { ref, inject, type InjectionKey, type Ref, type App } from \"vue\";\n\n// Plugin\n\nexport interface VueCmsConfig {\n baseUrl?: string;\n getHeaders?: () => Record<string, string>;\n}\n\nconst
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createClient, type HttpClient } from \"@lyeve-labs/client\";\nimport { ref, inject, type InjectionKey, type Ref, type App } from \"vue\";\n\n// Plugin\n\nexport interface VueCmsConfig {\n baseUrl?: string;\n getHeaders?: () => Record<string, string>;\n}\n\nconst LYEVE_KEY: InjectionKey<HttpClient> = Symbol(\"lyeve-client\");\n\n/** Vue plugin that provides an HttpClient via app-level dependency injection. */\nexport const CmsPlugin = {\n install(app: App, config: VueCmsConfig) {\n const base = config.baseUrl ?? \"\";\n const client = createClient((url, init) => {\n const fullUrl = typeof url === \"string\" ? `${base}${url}` : url;\n return fetch(fullUrl, {\n ...init,\n headers: { ...init?.headers, ...config.getHeaders?.() },\n });\n });\n app.provide(LYEVE_KEY, client);\n },\n};\n\nfunction useClient(): HttpClient {\n const client = inject(LYEVE_KEY);\n if (!client)\n throw new Error(\n \"CmsPlugin must be installed via app.use(CmsPlugin, config)\",\n );\n return client;\n}\n\n// Composables\n\nexport interface AsyncState<T> {\n data: Ref<T | null>;\n error: Ref<Error | null>;\n loading: Ref<boolean>;\n refetch: () => void;\n}\n\n/**\n * Reactive query that fires immediately on mount and exposes loading/data/error state.\n * Re-fetch by calling the returned `refetch` function.\n */\nexport function useQuery<T>(\n fetcher: (client: HttpClient) => Promise<T>,\n): AsyncState<T> {\n const client = useClient();\n const data = ref<T | null>(null) as Ref<T | null>;\n const error = ref<Error | null>(null);\n const loading = ref(true);\n\n async function run() {\n loading.value = true;\n try {\n data.value = await fetcher(client);\n error.value = null;\n } catch (e) {\n error.value = e as Error;\n } finally {\n loading.value = false;\n }\n }\n\n run();\n\n return { data, error, loading, refetch: run };\n}\n\n/**\n * Returns a mutate function and a reactive state object tracking the latest invocation.\n * The mutate function throws on failure so callers can catch and handle errors inline.\n */\nexport function useMutation<T, V>(\n mutator: (client: HttpClient, vars: V) => Promise<T>,\n): [\n (vars: V) => Promise<T>,\n { data: Ref<T | null>; error: Ref<Error | null>; loading: Ref<boolean> },\n] {\n const client = useClient();\n const data = ref<T | null>(null) as Ref<T | null>;\n const error = ref<Error | null>(null);\n const loading = ref(false);\n\n async function run(vars: V): Promise<T> {\n loading.value = true;\n error.value = null;\n try {\n const result = await mutator(client, vars);\n data.value = result;\n return result;\n } catch (e) {\n error.value = e as Error;\n throw e;\n } finally {\n loading.value = false;\n }\n }\n\n return [run, { data, error, loading }];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA8C;AAC9C,iBAAmE;AASnE,IAAM,YAAsC,uBAAO,cAAc;AAG1D,IAAM,YAAY;AAAA,EACvB,QAAQ,KAAU,QAAsB;AACtC,UAAM,OAAO,OAAO,WAAW;AAC/B,UAAM,aAAS,4BAAa,CAAC,KAAK,SAAS;AACzC,YAAM,UAAU,OAAO,QAAQ,WAAW,GAAG,IAAI,GAAG,GAAG,KAAK;AAC5D,aAAO,MAAM,SAAS;AAAA,QACpB,GAAG;AAAA,QACH,SAAS,EAAE,GAAG,MAAM,SAAS,GAAG,OAAO,aAAa,EAAE;AAAA,MACxD,CAAC;AAAA,IACH,CAAC;AACD,QAAI,QAAQ,WAAW,MAAM;AAAA,EAC/B;AACF;AAEA,SAAS,YAAwB;AAC/B,QAAM,aAAS,mBAAO,SAAS;AAC/B,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,SAAO;AACT;AAeO,SAAS,SACd,SACe;AACf,QAAM,SAAS,UAAU;AACzB,QAAM,WAAO,gBAAc,IAAI;AAC/B,QAAM,YAAQ,gBAAkB,IAAI;AACpC,QAAM,cAAU,gBAAI,IAAI;AAExB,iBAAe,MAAM;AACnB,YAAQ,QAAQ;AAChB,QAAI;AACF,WAAK,QAAQ,MAAM,QAAQ,MAAM;AACjC,YAAM,QAAQ;AAAA,IAChB,SAAS,GAAG;AACV,YAAM,QAAQ;AAAA,IAChB,UAAE;AACA,cAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AAEA,MAAI;AAEJ,SAAO,EAAE,MAAM,OAAO,SAAS,SAAS,IAAI;AAC9C;AAMO,SAAS,YACd,SAIA;AACA,QAAM,SAAS,UAAU;AACzB,QAAM,WAAO,gBAAc,IAAI;AAC/B,QAAM,YAAQ,gBAAkB,IAAI;AACpC,QAAM,cAAU,gBAAI,KAAK;AAEzB,iBAAe,IAAI,MAAqB;AACtC,YAAQ,QAAQ;AAChB,UAAM,QAAQ;AACd,QAAI;AACF,YAAM,SAAS,MAAM,QAAQ,QAAQ,IAAI;AACzC,WAAK,QAAQ;AACb,aAAO;AAAA,IACT,SAAS,GAAG;AACV,YAAM,QAAQ;AACd,YAAM;AAAA,IACR,UAAE;AACA,cAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,CAAC,KAAK,EAAE,MAAM,OAAO,QAAQ,CAAC;AACvC;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import { createClient } from "@lyeve-labs/client";
|
|
3
3
|
import { ref, inject } from "vue";
|
|
4
|
-
var
|
|
4
|
+
var LYEVE_KEY = /* @__PURE__ */ Symbol("lyeve-client");
|
|
5
5
|
var CmsPlugin = {
|
|
6
6
|
install(app, config) {
|
|
7
7
|
const base = config.baseUrl ?? "";
|
|
@@ -12,11 +12,11 @@ var CmsPlugin = {
|
|
|
12
12
|
headers: { ...init?.headers, ...config.getHeaders?.() }
|
|
13
13
|
});
|
|
14
14
|
});
|
|
15
|
-
app.provide(
|
|
15
|
+
app.provide(LYEVE_KEY, client);
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
function useClient() {
|
|
19
|
-
const client = inject(
|
|
19
|
+
const client = inject(LYEVE_KEY);
|
|
20
20
|
if (!client)
|
|
21
21
|
throw new Error(
|
|
22
22
|
"CmsPlugin must be installed via app.use(CmsPlugin, config)"
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createClient, type HttpClient } from \"@lyeve-labs/client\";\nimport { ref, inject, type InjectionKey, type Ref, type App } from \"vue\";\n\n// Plugin\n\nexport interface VueCmsConfig {\n baseUrl?: string;\n getHeaders?: () => Record<string, string>;\n}\n\nconst
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createClient, type HttpClient } from \"@lyeve-labs/client\";\nimport { ref, inject, type InjectionKey, type Ref, type App } from \"vue\";\n\n// Plugin\n\nexport interface VueCmsConfig {\n baseUrl?: string;\n getHeaders?: () => Record<string, string>;\n}\n\nconst LYEVE_KEY: InjectionKey<HttpClient> = Symbol(\"lyeve-client\");\n\n/** Vue plugin that provides an HttpClient via app-level dependency injection. */\nexport const CmsPlugin = {\n install(app: App, config: VueCmsConfig) {\n const base = config.baseUrl ?? \"\";\n const client = createClient((url, init) => {\n const fullUrl = typeof url === \"string\" ? `${base}${url}` : url;\n return fetch(fullUrl, {\n ...init,\n headers: { ...init?.headers, ...config.getHeaders?.() },\n });\n });\n app.provide(LYEVE_KEY, client);\n },\n};\n\nfunction useClient(): HttpClient {\n const client = inject(LYEVE_KEY);\n if (!client)\n throw new Error(\n \"CmsPlugin must be installed via app.use(CmsPlugin, config)\",\n );\n return client;\n}\n\n// Composables\n\nexport interface AsyncState<T> {\n data: Ref<T | null>;\n error: Ref<Error | null>;\n loading: Ref<boolean>;\n refetch: () => void;\n}\n\n/**\n * Reactive query that fires immediately on mount and exposes loading/data/error state.\n * Re-fetch by calling the returned `refetch` function.\n */\nexport function useQuery<T>(\n fetcher: (client: HttpClient) => Promise<T>,\n): AsyncState<T> {\n const client = useClient();\n const data = ref<T | null>(null) as Ref<T | null>;\n const error = ref<Error | null>(null);\n const loading = ref(true);\n\n async function run() {\n loading.value = true;\n try {\n data.value = await fetcher(client);\n error.value = null;\n } catch (e) {\n error.value = e as Error;\n } finally {\n loading.value = false;\n }\n }\n\n run();\n\n return { data, error, loading, refetch: run };\n}\n\n/**\n * Returns a mutate function and a reactive state object tracking the latest invocation.\n * The mutate function throws on failure so callers can catch and handle errors inline.\n */\nexport function useMutation<T, V>(\n mutator: (client: HttpClient, vars: V) => Promise<T>,\n): [\n (vars: V) => Promise<T>,\n { data: Ref<T | null>; error: Ref<Error | null>; loading: Ref<boolean> },\n] {\n const client = useClient();\n const data = ref<T | null>(null) as Ref<T | null>;\n const error = ref<Error | null>(null);\n const loading = ref(false);\n\n async function run(vars: V): Promise<T> {\n loading.value = true;\n error.value = null;\n try {\n const result = await mutator(client, vars);\n data.value = result;\n return result;\n } catch (e) {\n error.value = e as Error;\n throw e;\n } finally {\n loading.value = false;\n }\n }\n\n return [run, { data, error, loading }];\n}\n"],"mappings":";AAAA,SAAS,oBAAqC;AAC9C,SAAS,KAAK,cAAqD;AASnE,IAAM,YAAsC,uBAAO,cAAc;AAG1D,IAAM,YAAY;AAAA,EACvB,QAAQ,KAAU,QAAsB;AACtC,UAAM,OAAO,OAAO,WAAW;AAC/B,UAAM,SAAS,aAAa,CAAC,KAAK,SAAS;AACzC,YAAM,UAAU,OAAO,QAAQ,WAAW,GAAG,IAAI,GAAG,GAAG,KAAK;AAC5D,aAAO,MAAM,SAAS;AAAA,QACpB,GAAG;AAAA,QACH,SAAS,EAAE,GAAG,MAAM,SAAS,GAAG,OAAO,aAAa,EAAE;AAAA,MACxD,CAAC;AAAA,IACH,CAAC;AACD,QAAI,QAAQ,WAAW,MAAM;AAAA,EAC/B;AACF;AAEA,SAAS,YAAwB;AAC/B,QAAM,SAAS,OAAO,SAAS;AAC/B,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,SAAO;AACT;AAeO,SAAS,SACd,SACe;AACf,QAAM,SAAS,UAAU;AACzB,QAAM,OAAO,IAAc,IAAI;AAC/B,QAAM,QAAQ,IAAkB,IAAI;AACpC,QAAM,UAAU,IAAI,IAAI;AAExB,iBAAe,MAAM;AACnB,YAAQ,QAAQ;AAChB,QAAI;AACF,WAAK,QAAQ,MAAM,QAAQ,MAAM;AACjC,YAAM,QAAQ;AAAA,IAChB,SAAS,GAAG;AACV,YAAM,QAAQ;AAAA,IAChB,UAAE;AACA,cAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AAEA,MAAI;AAEJ,SAAO,EAAE,MAAM,OAAO,SAAS,SAAS,IAAI;AAC9C;AAMO,SAAS,YACd,SAIA;AACA,QAAM,SAAS,UAAU;AACzB,QAAM,OAAO,IAAc,IAAI;AAC/B,QAAM,QAAQ,IAAkB,IAAI;AACpC,QAAM,UAAU,IAAI,KAAK;AAEzB,iBAAe,IAAI,MAAqB;AACtC,YAAQ,QAAQ;AAChB,UAAM,QAAQ;AACd,QAAI;AACF,YAAM,SAAS,MAAM,QAAQ,QAAQ,IAAI;AACzC,WAAK,QAAQ;AACb,aAAO;AAAA,IACT,SAAS,GAAG;AACV,YAAM,QAAQ;AACd,YAAM;AAAA,IACR,UAAE;AACA,cAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,CAAC,KAAK,EAAE,MAAM,OAAO,QAAQ,CAAC;AACvC;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lyeve-labs/client-vue",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Vue 3 composables for the LyEve Core client - useQuery, useMutation, and the CmsPlugin provider",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "LyEve <info@lyeve.com>",
|
|
7
7
|
"type": "module",
|
|
8
|
-
"packageManager": "pnpm@
|
|
8
|
+
"packageManager": "pnpm@11.25.0",
|
|
9
9
|
"engines": {
|
|
10
10
|
"node": ">=20"
|
|
11
11
|
},
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"format:check": "prettier --check ."
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@lyeve-labs/client": ">=0.1
|
|
47
|
+
"@lyeve-labs/client": ">=0.2.1",
|
|
48
48
|
"vue": ">=3.0.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@lyeve-labs/client": "^0.
|
|
51
|
+
"@lyeve-labs/client": "^0.3.0",
|
|
52
52
|
"jsdom": "^29.1.1",
|
|
53
53
|
"prettier": "^3.4.0",
|
|
54
54
|
"publint": "^0.3.0",
|