@bjornharrtell/pinia-json-api
Advanced tools
Comparing version
@@ -1,1 +0,1 @@ | ||
window.navigationData = "eJyV08lOwzAQBuB38TkiNKIFckNUlUBUrVhOiINxJs3QxLZiR6JCfXeURWRpmDrX+Pc3sT3z/sMsfFsWsmdIuUUlTYL69aCBeUxzm7CQgSwy4w/XLxKbpcxje5QRC2+O3p+0VhGk7XaRcmPA+NXn/q5Z0N23AiuSja6KtNtRWshjLsD43UAfCuaLIbTlOc8Ip16nmEej5J3GpRJFBtKOUoOMA1cVh5zSmogD9oRyv/n8AkH+XZtyJMevrRtwgNZgOeWU6w5Mt+8orptzYo0qcgE0WWcmcA8RSIsx0g98mqZKVIOzhBgllgcchQcZitvyHdRDNCq1yySCEnlzmher8vF7PElNIu+VjHHnBtdZij/bRxMbqByD1rEH3Z+QgXB5ez2bB9Rp3wysCin671KzVPZcnajsCSCeK24g4/8T7VdYXB0/fgEXLSU6" | ||
window.navigationData = "eJyV1FtPgzAUB/Dv0mcibnFTeTMuSzQuW7w8GR+6chjHQUtoSVyM391wiZSLZ+WV8z+/UnrK+zcz8GVYwJ4h4QaV1DFmr6cMmMcybmIWMJBFqv1+/SI2acI8dkQZsuDmx/uTNiqEpG0XCdcatF897nbN5nbfGoyIt1m1SNuO0kAecQHatwNdaL5Y9qEdz3lKOHWdYh61kncZrpQoUpBmlOplHLhqccgprYk4YE8oj9v9Jwjy7dqUIzn+2eyAA7QBwymnrDsw9txRnJ1zYrUqcgE0WWcmcA8hSIMR0gc8TFNLVBdnBRFKLDc4CvcyFLfjB6gv0ajUlkkEJfJmNy9G5ePfcZCaRN4rGeHBDa6zFH92jiYOUHkNWsecsu4N6QmXt9ezxZza7ZuGdSFF91xqlsqeW0fw1P4ZR02b9qtCt3t5ZTWG5TABcc4t9U90gH/8AgQ+OCk=" |
@@ -1,1 +0,1 @@ | ||
window.searchData = "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"; | ||
window.searchData = "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"; |
import { ComputedRef } from 'vue'; | ||
import { ShallowReactive } from 'vue'; | ||
/** | ||
* Convert str from kebab-case to camelCase | ||
*/ | ||
export declare function camel(str: string): string; | ||
export declare function definePiniaJsonApiStore(name: string, config: PiniaJsonApiStoreConfig, fetcher?: JsonApiFetcher): PiniaJsonApiStoreUseFunction; | ||
@@ -5,0 +10,0 @@ |
192
dist/lib.js
import { defineStore as x } from "pinia"; | ||
import { shallowReactive as O } from "vue"; | ||
import v from "ky"; | ||
function E(...h) { | ||
return new URL(h.join("/")).href; | ||
import E from "ky"; | ||
function $(...p) { | ||
return new URL(p.join("/")).href; | ||
} | ||
class N { | ||
constructor(n, i) { | ||
this.endpoint = n, this.state = i; | ||
constructor(n, a) { | ||
this.endpoint = n, this.state = a; | ||
} | ||
createOptions(n = {}, i = {}) { | ||
createOptions(n = {}, a = {}) { | ||
const r = new URLSearchParams(), c = new Headers(); | ||
@@ -16,31 +16,34 @@ c.append("Accept", "application/vnd.api+json"), this.state && c.append("Authorization", `Bearer ${this.state.value.token}`); | ||
if (n.fields) | ||
for (const [d, p] of Object.entries(n.fields)) r.append(`fields[${d}]`, p.join(",")); | ||
for (const [d, h] of Object.entries(n.fields)) r.append(`fields[${d}]`, h.join(",")); | ||
n.page?.size && r.append("page[size]", n.page.size.toString()), n.page?.number && r.append("page[number]", n.page.number.toString()), n.include && r.append("include", n.include.join(",")), n.filter && r.append("filter", n.filter); | ||
for (const [d, p] of Object.entries(i)) r.append(d, p); | ||
for (const [d, h] of Object.entries(a)) r.append(d, h); | ||
return u; | ||
} | ||
async fetchDocument(n, i, r, c) { | ||
async fetchDocument(n, a, r, c) { | ||
const u = [this.endpoint, n]; | ||
i && u.push(i); | ||
const d = E(...u); | ||
return await v.get(d, this.createOptions(r, c)).json(); | ||
a && u.push(a); | ||
const d = $(...u); | ||
return await E.get(d, this.createOptions(r, c)).json(); | ||
} | ||
async fetchAll(n, i, r) { | ||
const c = E(this.endpoint, n); | ||
return (await v.get(c, this.createOptions(i, r)).json()).data; | ||
async fetchAll(n, a, r) { | ||
const c = $(this.endpoint, n); | ||
return (await E.get(c, this.createOptions(a, r)).json()).data; | ||
} | ||
async fetchOne(n, i, r, c) { | ||
const u = E(this.endpoint, n, i); | ||
return (await v.get(u, this.createOptions(r, c)).json()).data; | ||
async fetchOne(n, a, r, c) { | ||
const u = $(this.endpoint, n, a); | ||
return (await E.get(u, this.createOptions(r, c)).json()).data; | ||
} | ||
async fetchHasMany(n, i, r, c, u) { | ||
const d = E(this.endpoint, n, i, r); | ||
return await v.get(d, this.createOptions(c, u)).json(); | ||
async fetchHasMany(n, a, r, c, u) { | ||
const d = $(this.endpoint, n, a, r); | ||
return await E.get(d, this.createOptions(c, u)).json(); | ||
} | ||
async fetchBelongsTo(n, i, r, c, u) { | ||
const d = E(this.endpoint, n, i, r); | ||
return await v.get(d, this.createOptions(c, u)).json(); | ||
async fetchBelongsTo(n, a, r, c, u) { | ||
const d = $(this.endpoint, n, a, r); | ||
return await E.get(d, this.createOptions(c, u)).json(); | ||
} | ||
} | ||
class W { | ||
function _(p) { | ||
return p.replace(/[-][a-z\u00E0-\u00F6\u00F8-\u00FE]/g, (n) => n.slice(1).toUpperCase()); | ||
} | ||
class X { | ||
constructor(n) { | ||
@@ -50,8 +53,8 @@ this.id = n, this.id = n; | ||
} | ||
var _ = /* @__PURE__ */ ((h) => (h[h.HasMany = 0] = "HasMany", h[h.BelongsTo = 1] = "BelongsTo", h))(_ || {}); | ||
function X(h, n, i) { | ||
const r = i ?? new N(n.endpoint, n.state), c = O(/* @__PURE__ */ new Map()), u = O(/* @__PURE__ */ new Map()), d = O(/* @__PURE__ */ new Map()), p = O(/* @__PURE__ */ new Map()); | ||
for (const t of n.modelDefinitions) { | ||
const e = t.ctor; | ||
c.set(e, t.type), u.set(t.type, e), t.rels && d.set(e, t.rels), p.set(t.type, /* @__PURE__ */ new Map()); | ||
var G = /* @__PURE__ */ ((p) => (p[p.HasMany = 0] = "HasMany", p[p.BelongsTo = 1] = "BelongsTo", p))(G || {}); | ||
function Y(p, n, a) { | ||
const r = a ?? new N(n.endpoint, n.state), c = O(/* @__PURE__ */ new Map()), u = O(/* @__PURE__ */ new Map()), d = O(/* @__PURE__ */ new Map()), h = O(/* @__PURE__ */ new Map()); | ||
for (const e of n.modelDefinitions) { | ||
const t = e.ctor; | ||
c.set(t, e.type), u.set(e.type, t), e.rels && d.set(t, e.rels), h.set(e.type, /* @__PURE__ */ new Map()); | ||
} | ||
@@ -61,44 +64,44 @@ function C() { | ||
} | ||
function F(t, e) { | ||
const s = e.id || C(); | ||
return b(t, s, e); | ||
function F(e, t) { | ||
const s = t.id || C(); | ||
return b(e, s, t); | ||
} | ||
function k(t) { | ||
return n.kebabCase ? t.replace(/[-][a-z\u00E0-\u00F6\u00F8-\u00FE]/g, (e) => e.slice(1).toUpperCase()) : t; | ||
function T(e) { | ||
return n.kebabCase && _(e), e; | ||
} | ||
function b(t, e, s) { | ||
const w = j(t), f = $(w); | ||
let a = f.get(e); | ||
if (a || (a = O(new t(e))), s) | ||
for (const [o, l] of Object.entries(s)) l !== void 0 && (a[k(o)] = l); | ||
return f.set(e, a), a; | ||
function b(e, t, s) { | ||
const w = j(e), f = v(w); | ||
let i = f.get(t); | ||
if (i || (i = O(new e(t))), s) | ||
for (const [o, l] of Object.entries(s)) l !== void 0 && (i[T(o)] = l); | ||
return f.set(t, i), i; | ||
} | ||
function j(t) { | ||
const e = c.get(t); | ||
if (!e) throw new Error(`Model ${t.name} not defined`); | ||
return e; | ||
function j(e) { | ||
const t = c.get(e); | ||
if (!t) throw new Error(`Model ${e.name} not defined`); | ||
return t; | ||
} | ||
function z(t) { | ||
const e = u.get(t); | ||
if (!e) throw new Error(`Model with name ${t} not defined`); | ||
return e; | ||
function k(e) { | ||
const t = u.get(e); | ||
if (!t) throw new Error(`Model with name ${e} not defined`); | ||
return t; | ||
} | ||
function $(t) { | ||
const e = p.get(t); | ||
if (!e) throw new Error(`Model with name ${t} not defined`); | ||
return e; | ||
function v(e) { | ||
const t = h.get(e); | ||
if (!t) throw new Error(`Model with name ${e} not defined`); | ||
return t; | ||
} | ||
function H(t, e) { | ||
const s = t.get(e); | ||
if (!s) throw new Error(`Record with id ${e} not found`); | ||
function H(e, t) { | ||
const s = e.get(t); | ||
if (!s) throw new Error(`Record with id ${t} not found`); | ||
return s; | ||
} | ||
function P(t) { | ||
const e = $(t.type); | ||
return H(e, t.id); | ||
function P(e) { | ||
const t = v(e.type); | ||
return H(t, e.id); | ||
} | ||
function S(t, e, s) { | ||
function S(e, t, s) { | ||
function w(o) { | ||
return b( | ||
z(o.type), | ||
k(o.type), | ||
o.id, | ||
@@ -109,50 +112,50 @@ o.attributes | ||
if (s) for (const o of s) w(o); | ||
const f = e.map((o) => b(t, o.id, o.attributes)); | ||
function a(o) { | ||
const l = P(o), g = z(o.type); | ||
const f = t.map((o) => b(e, o.id, o.attributes)); | ||
function i(o) { | ||
const l = P(o), g = k(o.type); | ||
if (o.relationships) | ||
for (const [A, m] of Object.entries(o.relationships)) { | ||
for (const [z, m] of Object.entries(o.relationships)) { | ||
const y = d.get(g); | ||
if (!y) continue; | ||
const M = k(A), R = y[M]; | ||
const M = T(z), R = y[M]; | ||
if (!R) throw new Error(`Relationship ${M} not defined`); | ||
const q = j(R.ctor), B = p.get(q); | ||
if (!B) continue; | ||
const D = (R.type === 0 ? m.data : [m.data]).filter((T) => B.has(T.id)).map((T) => H(B, T.id)); | ||
const q = j(R.ctor), A = h.get(q); | ||
if (!A) continue; | ||
const D = (R.type === 0 ? m.data : [m.data]).filter((B) => A.has(B.id)).map((B) => H(A, B.id)); | ||
l[M] = R.type === 0 ? D : D[0]; | ||
} | ||
} | ||
return s && (e.map(a), s.map(a)), f; | ||
return s && (t.map(i), s.map(i)), f; | ||
} | ||
async function U(t, e, s) { | ||
const w = j(t), f = await r.fetchDocument(w, void 0, e, s), a = f.data, o = S(t, a, f.included); | ||
async function U(e, t, s) { | ||
const w = j(e), f = await r.fetchDocument(w, void 0, t, s), i = f.data, o = S(e, i, f.included); | ||
return { doc: f, records: o }; | ||
} | ||
async function I(t, e, s, w) { | ||
const f = j(t), a = $(f); | ||
if (!a.has(e)) { | ||
const l = await r.fetchDocument(f, e, s, w), g = l.data, m = S(t, [g], l.included)[0]; | ||
a.set(e, m); | ||
async function I(e, t, s, w) { | ||
const f = j(e), i = v(f); | ||
if (!i.has(t)) { | ||
const l = await r.fetchDocument(f, t, s, w), g = l.data, m = S(e, [g], l.included)[0]; | ||
i.set(t, m); | ||
} | ||
const o = a.get(e); | ||
if (!o) throw new Error(`Record with id ${e} not found`); | ||
const o = i.get(t); | ||
if (!o) throw new Error(`Record with id ${t} not found`); | ||
return o; | ||
} | ||
async function J(t, e, s, w) { | ||
const f = t.constructor, a = j(f), o = d.get(f); | ||
async function J(e, t, s, w) { | ||
const f = e.constructor, i = j(f), o = d.get(f); | ||
if (!o) throw new Error(`Model ${f.name} has no relationships`); | ||
const l = o[e]; | ||
if (!l) throw new Error(`Has many relationship ${e} not defined`); | ||
const l = o[t]; | ||
if (!l) throw new Error(`Has many relationship ${t} not defined`); | ||
if (l.type === 1) { | ||
const y = await r.fetchBelongsTo(a, t.id, e, s, w), M = y.data, R = b(l.ctor, M.id, M.attributes); | ||
return t[e] = R, y; | ||
const y = await r.fetchBelongsTo(i, e.id, t, s, w), M = y.data, R = b(l.ctor, M.id, M.attributes); | ||
return e[t] = R, y; | ||
} | ||
const g = await r.fetchHasMany(a, t.id, e, s, w), m = (l.type === 0 ? g.data : [g.data]).map((y) => b(l.ctor, y.id, y.attributes)); | ||
return t[e] = l.type === 0 ? m : m[0], g; | ||
const g = await r.fetchHasMany(i, e.id, t, s, w), m = (l.type === 0 ? g.data : [g.data]).map((y) => b(l.ctor, y.id, y.attributes)); | ||
return e[t] = l.type === 0 ? m : m[0], g; | ||
} | ||
function L() { | ||
for (const t of p.values()) t.clear(); | ||
for (const e of h.values()) e.clear(); | ||
} | ||
return x(h, () => ({ | ||
recordsByType: p, | ||
return x(p, () => ({ | ||
recordsByType: h, | ||
modelRegistry: c, | ||
@@ -168,6 +171,7 @@ relsRegistry: d, | ||
export { | ||
W as Model, | ||
_ as RelationshipType, | ||
X as definePiniaJsonApiStore | ||
X as Model, | ||
G as RelationshipType, | ||
_ as camel, | ||
Y as definePiniaJsonApiStore | ||
}; | ||
//# sourceMappingURL=lib.js.map |
{ | ||
"name": "@bjornharrtell/pinia-json-api", | ||
"version": "0.7.1", | ||
"version": "0.8.0", | ||
"type": "module", | ||
@@ -27,3 +27,3 @@ "main": "./dist/lib.js", | ||
"ky": "^1.7.4", | ||
"pinia": "^2.3.0", | ||
"pinia": "^2.3.1", | ||
"vue": "^3.5.13" | ||
@@ -35,13 +35,13 @@ }, | ||
"@types/jsdom": "^21.1.7", | ||
"@types/node": "^22.10.2", | ||
"@types/node": "^22.10.10", | ||
"@vitejs/plugin-vue": "^5.2.1", | ||
"@vue/test-utils": "^2.4.6", | ||
"@vue/tsconfig": "^0.7.0", | ||
"typedoc": "^0.27.5", | ||
"typescript": "~5.6.3", | ||
"vite": "^6.0.5", | ||
"vite-plugin-dts": "^4.4.0", | ||
"vitest": "^2.1.8", | ||
"typedoc": "^0.27.6", | ||
"typescript": "~5.7.3", | ||
"vite": "^6.0.11", | ||
"vite-plugin-dts": "^4.5.0", | ||
"vitest": "^3.0.4", | ||
"vue-tsc": "^2.2.0" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
469963
1.55%38
2.7%2196
0.37%Updated