New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@bjornharrtell/pinia-json-api

Package Overview
Dependencies
Maintainers
0
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bjornharrtell/pinia-json-api - npm Package Compare versions

Comparing version

to
0.8.0

dist/docs/functions/camel.html

2

dist/docs/assets/navigation.js

@@ -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 @@

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