From 50e9b6d04cefdcc2c811e5a84c9c560264f83280 Mon Sep 17 00:00:00 2001 From: Richard Rodger Date: Fri, 29 Dec 2023 02:37:10 +0000 Subject: [PATCH] vite --- dist/browser-store.cjs.js | 2 + dist/browser-store.cjs.js.map | 1 + dist/browser-store.d.ts | 83 ++++++++--------- dist/browser-store.es.js | 134 ++++++++++++++++++++++++++++ dist/browser-store.es.js.map | 1 + dist/browser-store.iife.js | 2 + dist/browser-store.iife.js.map | 1 + dist/browser-store.js | 158 --------------------------------- dist/browser-store.js.map | 1 - dist/browser-store.umd.js | 2 + dist/browser-store.umd.js.map | 1 + package.json | 49 ++++++---- src/browser-store.ts | 33 ++++--- tsconfig.json | 39 ++++---- tsconfig.node.json | 9 ++ vite.config.ts | 25 ++++++ 16 files changed, 297 insertions(+), 244 deletions(-) create mode 100644 dist/browser-store.cjs.js create mode 100644 dist/browser-store.cjs.js.map create mode 100644 dist/browser-store.es.js create mode 100644 dist/browser-store.es.js.map create mode 100644 dist/browser-store.iife.js create mode 100644 dist/browser-store.iife.js.map delete mode 100644 dist/browser-store.js delete mode 100644 dist/browser-store.js.map create mode 100644 dist/browser-store.umd.js create mode 100644 dist/browser-store.umd.js.map create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/dist/browser-store.cjs.js b/dist/browser-store.cjs.js new file mode 100644 index 0000000..fa0cb64 --- /dev/null +++ b/dist/browser-store.cjs.js @@ -0,0 +1,2 @@ +"use strict";function $(t){let r=this,o=r.export("entity/init"),c=t.handleResponse,s=["save","load","list","remove"].reduce((n,a)=>(n[a]=c[a]||c.any,n),{});const w=[];function u(n,a,_){let e={},i=_.apimsg;for(let l in i){let p=i[l];typeof p=="function"?e[l]=p(n,a,_):e[l]=JSON.parse(JSON.stringify(p))}return e}let m={name:"BrowserStore",save:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),l=u(n,i,t);e&&(e.ctx=i)&&(e.apimsg=l),this.act(l,function(d,f,g){return e&&(e.apiend=Date.now())&&(e.err=d)&&(e.res=f)&&(e.apimeta=g),s.save(this,i,a,d,f,g,e)})},load:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),l=u(n,i,t);e&&(e.ctx=i)&&(e.apimsg=l),this.act(l,function(d,f,g){return e&&x(e,arguments),s.load(this,i,a,d,f,g,e)})},list:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),l=u(n,i,t);e&&(e.ctx=i)&&(e.apimsg=l),this.act(l,function(d,f,g){return e&&x(e,arguments),s.list(this,i,a,d,f,g,e)})},remove:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),l=u(n,i,t);e&&(e.ctx=i)&&(e.apimsg=l),this.act(l,function(d,f,g){return e&&x(e,arguments),s.remove(this,i,a,d,f,g,e)})},close:function(n,a){a()},native:function(n,a){a()}},v=o(r,t,m);function h(n){let a=t.debug&&{msg:n[0],meta:n[2],start:Date.now()};return a&&w.push(a),a}function x(n,a){return n.apiend=Date.now(),n.err=a[0],n.res=a[1],n.apimeta=a[2],n}return{name:m.name,tag:v.tag,exports:{makeApiMsg:u,msglog:w}}}$.defaults={debug:!1,apimsg:{aim:"req",on:"entity",debounce$:!0,q:(t,r)=>t.q,ent:(t,r)=>t.ent,cmd:(t,r)=>r.cmd,canon:(t,r)=>(t.ent||t.qent).entity$,store:(t,r)=>r.store},prepareCtx:(t,r)=>{r=r||{};let o=t.q;return r.store=o.store$!==!1,delete o.store$,r.cmd=t.cmd,r.canon=(t.ent||t.qent).entity$,r},handleResponse:{any:function(t,r,o,c,s,w,u){if(console.log("BS RES",c,s),u&&(u.end=Date.now()),c&&o(c),s)if(s.ok)o(s.ent);else{let m=s.err;m=m||new Error(`BrowserStore: ${r.cmd} ${r.canon}: unknown error`),o(m)}},list:function(t,r,o,c,s,w,u){if(u&&(u.end=Date.now()),c&&o(c),s&&s.ok&&s.list){let m=s.list.map(v=>t.entity(r.canon).data$(v));u&&(u.end=Date.now()),o(m)}else o(s&&s.err||new Error(`BrowserStore: ${r.cmd} ${r.canon}: unknown list error`))}}};Object.defineProperty($,"name",{value:"BrowserStore"});module.exports=$; +//# sourceMappingURL=browser-store.cjs.js.map diff --git a/dist/browser-store.cjs.js.map b/dist/browser-store.cjs.js.map new file mode 100644 index 0000000..0be7aad --- /dev/null +++ b/dist/browser-store.cjs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser-store.cjs.js","sources":["../src/browser-store.ts"],"sourcesContent":["/* Copyright (c) 2023 Richard Rodger and other contributors, MIT License */\n\nfunction BrowserStore(this: any, options: any) {\n let seneca: any = this\n\n let init = seneca.export('entity/init')\n\n let ohr = options.handleResponse\n let handleResponse = ['save', 'load', 'list', 'remove'].reduce(\n (a: any, n) => ((a[n] = ohr[n] || ohr.any), a),\n {},\n )\n\n const msglog: {\n msg: any\n meta: any\n start: number\n ctx?: any\n apimsg?: any\n res?: any\n err?: any\n apimeta?: any\n apiend?: number\n end?: number\n }[] = []\n\n function makeApiMsg(msg: any, ctx: any, options: any) {\n let apimsg: any = {}\n let apimsgtm = options.apimsg\n\n for (let pn in apimsgtm) {\n let pv = apimsgtm[pn]\n if ('function' === typeof pv) {\n apimsg[pn] = pv(msg, ctx, options)\n } else {\n apimsg[pn] = JSON.parse(JSON.stringify(pv))\n }\n }\n\n return apimsg\n }\n\n let store = {\n name: 'BrowserStore',\n\n save: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function save_result(this: any, err: Error, res: any, apimeta: any) {\n logn &&\n (logn.apiend = Date.now()) &&\n (logn.err = err) &&\n (logn.res = res) &&\n (logn.apimeta = apimeta)\n return handleResponse.save(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n load: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function load_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.load(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n list: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function list_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.list(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n remove: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function remove_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.remove(\n this,\n ctx,\n reply,\n err,\n res,\n apimeta,\n logn,\n )\n },\n )\n },\n\n close: function (this: any, _msg: any, reply: any) {\n reply()\n },\n\n native: function (this: any, _msg: any, reply: any) {\n reply()\n },\n }\n\n let meta = init(seneca, options, store)\n\n function logstart(args: any) {\n let logn = options.debug && {\n msg: args[0],\n meta: args[2],\n start: Date.now(),\n }\n logn && msglog.push(logn)\n return logn\n }\n\n function logres(logn: any, args: any) {\n logn.apiend = Date.now()\n logn.err = args[0]\n logn.res = args[1]\n logn.apimeta = args[2]\n return logn\n }\n\n return {\n name: store.name,\n tag: meta.tag,\n exports: {\n makeApiMsg,\n msglog,\n },\n }\n}\n\nBrowserStore.defaults = {\n debug: false,\n\n apimsg: {\n aim: 'req',\n on: 'entity',\n debounce$: true,\n q: (msg: any, _ctx: any) => msg.q,\n ent: (msg: any, _ctx: any) => msg.ent,\n cmd: (_msg: any, ctx: any) => ctx.cmd,\n canon: (msg: any, _ctx: any) => (msg.ent || msg.qent).entity$,\n store: (_msg: any, ctx: any) => ctx.store,\n },\n\n prepareCtx: (msg: any, ctx: any) => {\n ctx = ctx || {}\n\n let q = msg.q\n ctx.store = false !== q.store$\n delete q.store$\n\n ctx.cmd = msg.cmd\n ctx.canon = (msg.ent || msg.qent).entity$\n\n return ctx\n },\n\n handleResponse: {\n any: function (\n _seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n console.log('BS RES', err, res)\n\n\n logn && (logn.end = Date.now())\n\n if (err) {\n reply(err)\n }\n\n if (res) {\n if (res.ok) {\n reply(res.ent)\n }\n else {\n let err = res.err\n err = err || new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown error`)\n reply(err)\n }\n }\n },\n\n list: function (\n seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n logn && (logn.end = Date.now())\n if (err) reply(err)\n\n if (res && res.ok && res.list) {\n let list = res.list.map((item: any) =>\n seneca.entity(ctx.canon).data$(item),\n )\n logn && (logn.end = Date.now())\n reply(list)\n } else {\n reply(\n (res && res.err) ||\n new Error(\n `BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown list error`,\n ),\n )\n }\n },\n },\n}\n\n// Prevent name mangling\nObject.defineProperty(BrowserStore, 'name', { value: 'BrowserStore' })\n\n\nexport default BrowserStore\n"],"names":["BrowserStore","options","seneca","init","ohr","handleResponse","a","n","msglog","makeApiMsg","msg","ctx","apimsg","apimsgtm","pn","pv","store","reply","_meta","logn","logstart","err","res","apimeta","logres","_msg","meta","args","_ctx","q","_seneca","_apimeta","list","item"],"mappings":"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"} \ No newline at end of file diff --git a/dist/browser-store.d.ts b/dist/browser-store.d.ts index c0e74c3..d4993e7 100644 --- a/dist/browser-store.d.ts +++ b/dist/browser-store.d.ts @@ -1,40 +1,43 @@ -declare function BrowserStore(this: any, options: any): { - name: string; - tag: any; - exports: { - makeApiMsg: (msg: any, ctx: any, options: any) => any; - msglog: { - msg: any; - meta: any; - start: number; - ctx?: any; - apimsg?: any; - res?: any; - err?: any; - apimeta?: any; - apiend?: number | undefined; - end?: number | undefined; - }[]; - }; -}; -declare namespace BrowserStore { - var defaults: { - debug: boolean; - apimsg: { - aim: string; - on: string; - debounce$: boolean; - q: (msg: any, _ctx: any) => any; - ent: (msg: any, _ctx: any) => any; - cmd: (_msg: any, ctx: any) => any; - canon: (msg: any, _ctx: any) => any; - store: (_msg: any, ctx: any) => any; - }; - prepareCtx: (msg: any, ctx: any) => any; - handleResponse: { - any: (_seneca: any, ctx: any, reply: any, err: Error, res: any, _apimeta: any, logn: any) => void; - list: (seneca: any, ctx: any, reply: any, err: Error, res: any, _apimeta: any, logn: any) => void; - }; - }; -} -export default BrowserStore; +declare function BrowserStore(this: any, options: any): { + name: string; + tag: any; + exports: { + makeApiMsg: (msg: any, ctx: any, options: any) => any; + msglog: { + msg: any; + meta: any; + start: number; + ctx?: any; + apimsg?: any; + res?: any; + err?: any; + apimeta?: any; + apiend?: number | undefined; + end?: number | undefined; + }[]; + }; +}; + +declare namespace BrowserStore { + var defaults: { + debug: boolean; + apimsg: { + aim: string; + on: string; + debounce$: boolean; + q: (msg: any, _ctx: any) => any; + ent: (msg: any, _ctx: any) => any; + cmd: (_msg: any, ctx: any) => any; + canon: (msg: any, _ctx: any) => any; + store: (_msg: any, ctx: any) => any; + }; + prepareCtx: (msg: any, ctx: any) => any; + handleResponse: { + any: (_seneca: any, ctx: any, reply: any, err: Error, res: any, _apimeta: any, logn: any) => void; + list: (seneca: any, ctx: any, reply: any, err: Error, res: any, _apimeta: any, logn: any) => void; + }; + }; +} +export default BrowserStore; + +export { } diff --git a/dist/browser-store.es.js b/dist/browser-store.es.js new file mode 100644 index 0000000..5c7772e --- /dev/null +++ b/dist/browser-store.es.js @@ -0,0 +1,134 @@ +function $(t) { + let r = this, o = r.export("entity/init"), m = t.handleResponse, l = ["save", "load", "list", "remove"].reduce( + (n, a) => (n[a] = m[a] || m.any, n), + {} + ); + const w = []; + function u(n, a, _) { + let e = {}, i = _.apimsg; + for (let s in i) { + let p = i[s]; + typeof p == "function" ? e[s] = p(n, a, _) : e[s] = JSON.parse(JSON.stringify(p)); + } + return e; + } + let c = { + name: "BrowserStore", + save: function(n, a, _) { + let e = t.debug && h(arguments), i = t.prepareCtx(n), s = u(n, i, t); + e && (e.ctx = i) && (e.apimsg = s), this.act( + s, + function(d, f, g) { + return e && (e.apiend = Date.now()) && (e.err = d) && (e.res = f) && (e.apimeta = g), l.save(this, i, a, d, f, g, e); + } + ); + }, + load: function(n, a, _) { + let e = t.debug && h(arguments), i = t.prepareCtx(n), s = u(n, i, t); + e && (e.ctx = i) && (e.apimsg = s), this.act( + s, + function(d, f, g) { + return e && x(e, arguments), l.load(this, i, a, d, f, g, e); + } + ); + }, + list: function(n, a, _) { + let e = t.debug && h(arguments), i = t.prepareCtx(n), s = u(n, i, t); + e && (e.ctx = i) && (e.apimsg = s), this.act( + s, + function(d, f, g) { + return e && x(e, arguments), l.list(this, i, a, d, f, g, e); + } + ); + }, + remove: function(n, a, _) { + let e = t.debug && h(arguments), i = t.prepareCtx(n), s = u(n, i, t); + e && (e.ctx = i) && (e.apimsg = s), this.act( + s, + function(d, f, g) { + return e && x(e, arguments), l.remove( + this, + i, + a, + d, + f, + g, + e + ); + } + ); + }, + close: function(n, a) { + a(); + }, + native: function(n, a) { + a(); + } + }, v = o(r, t, c); + function h(n) { + let a = t.debug && { + msg: n[0], + meta: n[2], + start: Date.now() + }; + return a && w.push(a), a; + } + function x(n, a) { + return n.apiend = Date.now(), n.err = a[0], n.res = a[1], n.apimeta = a[2], n; + } + return { + name: c.name, + tag: v.tag, + exports: { + makeApiMsg: u, + msglog: w + } + }; +} +$.defaults = { + debug: !1, + apimsg: { + aim: "req", + on: "entity", + debounce$: !0, + q: (t, r) => t.q, + ent: (t, r) => t.ent, + cmd: (t, r) => r.cmd, + canon: (t, r) => (t.ent || t.qent).entity$, + store: (t, r) => r.store + }, + prepareCtx: (t, r) => { + r = r || {}; + let o = t.q; + return r.store = o.store$ !== !1, delete o.store$, r.cmd = t.cmd, r.canon = (t.ent || t.qent).entity$, r; + }, + handleResponse: { + any: function(t, r, o, m, l, w, u) { + if (console.log("BS RES", m, l), u && (u.end = Date.now()), m && o(m), l) + if (l.ok) + o(l.ent); + else { + let c = l.err; + c = c || new Error(`BrowserStore: ${r.cmd} ${r.canon}: unknown error`), o(c); + } + }, + list: function(t, r, o, m, l, w, u) { + if (u && (u.end = Date.now()), m && o(m), l && l.ok && l.list) { + let c = l.list.map( + (v) => t.entity(r.canon).data$(v) + ); + u && (u.end = Date.now()), o(c); + } else + o( + l && l.err || new Error( + `BrowserStore: ${r.cmd} ${r.canon}: unknown list error` + ) + ); + } + } +}; +Object.defineProperty($, "name", { value: "BrowserStore" }); +export { + $ as default +}; +//# sourceMappingURL=browser-store.es.js.map diff --git a/dist/browser-store.es.js.map b/dist/browser-store.es.js.map new file mode 100644 index 0000000..80c6193 --- /dev/null +++ b/dist/browser-store.es.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser-store.es.js","sources":["../src/browser-store.ts"],"sourcesContent":["/* Copyright (c) 2023 Richard Rodger and other contributors, MIT License */\n\nfunction BrowserStore(this: any, options: any) {\n let seneca: any = this\n\n let init = seneca.export('entity/init')\n\n let ohr = options.handleResponse\n let handleResponse = ['save', 'load', 'list', 'remove'].reduce(\n (a: any, n) => ((a[n] = ohr[n] || ohr.any), a),\n {},\n )\n\n const msglog: {\n msg: any\n meta: any\n start: number\n ctx?: any\n apimsg?: any\n res?: any\n err?: any\n apimeta?: any\n apiend?: number\n end?: number\n }[] = []\n\n function makeApiMsg(msg: any, ctx: any, options: any) {\n let apimsg: any = {}\n let apimsgtm = options.apimsg\n\n for (let pn in apimsgtm) {\n let pv = apimsgtm[pn]\n if ('function' === typeof pv) {\n apimsg[pn] = pv(msg, ctx, options)\n } else {\n apimsg[pn] = JSON.parse(JSON.stringify(pv))\n }\n }\n\n return apimsg\n }\n\n let store = {\n name: 'BrowserStore',\n\n save: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function save_result(this: any, err: Error, res: any, apimeta: any) {\n logn &&\n (logn.apiend = Date.now()) &&\n (logn.err = err) &&\n (logn.res = res) &&\n (logn.apimeta = apimeta)\n return handleResponse.save(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n load: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function load_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.load(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n list: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function list_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.list(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n remove: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function remove_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.remove(\n this,\n ctx,\n reply,\n err,\n res,\n apimeta,\n logn,\n )\n },\n )\n },\n\n close: function (this: any, _msg: any, reply: any) {\n reply()\n },\n\n native: function (this: any, _msg: any, reply: any) {\n reply()\n },\n }\n\n let meta = init(seneca, options, store)\n\n function logstart(args: any) {\n let logn = options.debug && {\n msg: args[0],\n meta: args[2],\n start: Date.now(),\n }\n logn && msglog.push(logn)\n return logn\n }\n\n function logres(logn: any, args: any) {\n logn.apiend = Date.now()\n logn.err = args[0]\n logn.res = args[1]\n logn.apimeta = args[2]\n return logn\n }\n\n return {\n name: store.name,\n tag: meta.tag,\n exports: {\n makeApiMsg,\n msglog,\n },\n }\n}\n\nBrowserStore.defaults = {\n debug: false,\n\n apimsg: {\n aim: 'req',\n on: 'entity',\n debounce$: true,\n q: (msg: any, _ctx: any) => msg.q,\n ent: (msg: any, _ctx: any) => msg.ent,\n cmd: (_msg: any, ctx: any) => ctx.cmd,\n canon: (msg: any, _ctx: any) => (msg.ent || msg.qent).entity$,\n store: (_msg: any, ctx: any) => ctx.store,\n },\n\n prepareCtx: (msg: any, ctx: any) => {\n ctx = ctx || {}\n\n let q = msg.q\n ctx.store = false !== q.store$\n delete q.store$\n\n ctx.cmd = msg.cmd\n ctx.canon = (msg.ent || msg.qent).entity$\n\n return ctx\n },\n\n handleResponse: {\n any: function (\n _seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n console.log('BS RES', err, res)\n\n\n logn && (logn.end = Date.now())\n\n if (err) {\n reply(err)\n }\n\n if (res) {\n if (res.ok) {\n reply(res.ent)\n }\n else {\n let err = res.err\n err = err || new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown error`)\n reply(err)\n }\n }\n },\n\n list: function (\n seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n logn && (logn.end = Date.now())\n if (err) reply(err)\n\n if (res && res.ok && res.list) {\n let list = res.list.map((item: any) =>\n seneca.entity(ctx.canon).data$(item),\n )\n logn && (logn.end = Date.now())\n reply(list)\n } else {\n reply(\n (res && res.err) ||\n new Error(\n `BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown list error`,\n ),\n )\n }\n },\n },\n}\n\n// Prevent name mangling\nObject.defineProperty(BrowserStore, 'name', { value: 'BrowserStore' })\n\n\nexport default BrowserStore\n"],"names":["BrowserStore","options","seneca","init","ohr","handleResponse","a","n","msglog","makeApiMsg","msg","ctx","apimsg","apimsgtm","pn","pv","store","reply","_meta","logn","logstart","err","res","apimeta","logres","_msg","meta","args","_ctx","q","_seneca","_apimeta","list","item"],"mappings":"AAEA,SAASA,EAAwBC,GAAc;AAC7C,MAAIC,IAAc,MAEdC,IAAOD,EAAO,OAAO,aAAa,GAElCE,IAAMH,EAAQ,gBACdI,IAAiB,CAAC,QAAQ,QAAQ,QAAQ,QAAQ,EAAE;AAAA,IACtD,CAACC,GAAQC,OAAQD,EAAEC,CAAC,IAAIH,EAAIG,CAAC,KAAKH,EAAI,KAAME;AAAA,IAC5C,CAAC;AAAA,EAAA;AAGH,QAAME,IAWA,CAAA;AAEG,WAAAC,EAAWC,GAAUC,GAAUV,GAAc;AACpD,QAAIW,IAAc,CAAA,GACdC,IAAWZ,EAAQ;AAEvB,aAASa,KAAMD,GAAU;AACnB,UAAAE,IAAKF,EAASC,CAAE;AAChB,MAAe,OAAOC,KAAtB,aACFH,EAAOE,CAAE,IAAIC,EAAGL,GAAKC,GAAKV,CAAO,IAEjCW,EAAOE,CAAE,IAAI,KAAK,MAAM,KAAK,UAAUC,CAAE,CAAC;AAAA,IAE9C;AAEO,WAAAH;AAAA,EACT;AAEA,MAAII,IAAQ;AAAA,IACV,MAAM;AAAA,IAEN,MAAM,SAAqBN,GAAUO,GAAYC,GAAY;AAC3D,UAAIC,IAAOlB,EAAQ,SAASmB,EAAS,SAAS,GAC1CT,IAAMV,EAAQ,WAAWS,CAAG,GAC5BE,IAASH,EAAWC,GAAKC,GAAKV,CAAO;AAEzC,MAAAkB,MAASA,EAAK,MAAMR,OAASQ,EAAK,SAASP,IACtC,KAAA;AAAA,QACHA;AAAA,QACA,SAAgCS,GAAYC,GAAUC,GAAc;AAClE,iBAAAJ,MACGA,EAAK,SAAS,KAAK,IACnB,OAAAA,EAAK,MAAME,OACXF,EAAK,MAAMG,OACXH,EAAK,UAAUI,IACXlB,EAAe,KAAK,MAAMM,GAAKM,GAAOI,GAAKC,GAAKC,GAASJ,CAAI;AAAA,QACtE;AAAA,MAAA;AAAA,IAEJ;AAAA,IAEA,MAAM,SAAqBT,GAAUO,GAAYC,GAAY;AAC3D,UAAIC,IAAOlB,EAAQ,SAASmB,EAAS,SAAS,GAC1CT,IAAMV,EAAQ,WAAWS,CAAG,GAC5BE,IAASH,EAAWC,GAAKC,GAAKV,CAAO;AAEzC,MAAAkB,MAASA,EAAK,MAAMR,OAASQ,EAAK,SAASP,IACtC,KAAA;AAAA,QACHA;AAAA,QACA,SAAgCS,GAAYC,GAAUC,GAAc;AAC1D,iBAAAJ,KAAAK,EAAOL,GAAM,SAAS,GACvBd,EAAe,KAAK,MAAMM,GAAKM,GAAOI,GAAKC,GAAKC,GAASJ,CAAI;AAAA,QACtE;AAAA,MAAA;AAAA,IAEJ;AAAA,IAEA,MAAM,SAAqBT,GAAUO,GAAYC,GAAY;AAC3D,UAAIC,IAAOlB,EAAQ,SAASmB,EAAS,SAAS,GAC1CT,IAAMV,EAAQ,WAAWS,CAAG,GAC5BE,IAASH,EAAWC,GAAKC,GAAKV,CAAO;AAEzC,MAAAkB,MAASA,EAAK,MAAMR,OAASQ,EAAK,SAASP,IACtC,KAAA;AAAA,QACHA;AAAA,QACA,SAAgCS,GAAYC,GAAUC,GAAc;AAC1D,iBAAAJ,KAAAK,EAAOL,GAAM,SAAS,GACvBd,EAAe,KAAK,MAAMM,GAAKM,GAAOI,GAAKC,GAAKC,GAASJ,CAAI;AAAA,QACtE;AAAA,MAAA;AAAA,IAEJ;AAAA,IAEA,QAAQ,SAAqBT,GAAUO,GAAYC,GAAY;AAC7D,UAAIC,IAAOlB,EAAQ,SAASmB,EAAS,SAAS,GAC1CT,IAAMV,EAAQ,WAAWS,CAAG,GAC5BE,IAASH,EAAWC,GAAKC,GAAKV,CAAO;AAEzC,MAAAkB,MAASA,EAAK,MAAMR,OAASQ,EAAK,SAASP,IACtC,KAAA;AAAA,QACHA;AAAA,QACA,SAAkCS,GAAYC,GAAUC,GAAc;AAC5D,iBAAAJ,KAAAK,EAAOL,GAAM,SAAS,GACvBd,EAAe;AAAA,YACpB;AAAA,YACAM;AAAA,YACAM;AAAA,YACAI;AAAA,YACAC;AAAA,YACAC;AAAA,YACAJ;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IAEJ;AAAA,IAEA,OAAO,SAAqBM,GAAWR,GAAY;AAC3C,MAAAA;IACR;AAAA,IAEA,QAAQ,SAAqBQ,GAAWR,GAAY;AAC5C,MAAAA;IACR;AAAA,EAAA,GAGES,IAAOvB,EAAKD,GAAQD,GAASe,CAAK;AAEtC,WAASI,EAASO,GAAW;AACvB,QAAAR,IAAOlB,EAAQ,SAAS;AAAA,MAC1B,KAAK0B,EAAK,CAAC;AAAA,MACX,MAAMA,EAAK,CAAC;AAAA,MACZ,OAAO,KAAK,IAAI;AAAA,IAAA;AAEV,WAAAR,KAAAX,EAAO,KAAKW,CAAI,GACjBA;AAAA,EACT;AAES,WAAAK,EAAOL,GAAWQ,GAAW;AAC/B,WAAAR,EAAA,SAAS,KAAK,OACdA,EAAA,MAAMQ,EAAK,CAAC,GACZR,EAAA,MAAMQ,EAAK,CAAC,GACZR,EAAA,UAAUQ,EAAK,CAAC,GACdR;AAAA,EACT;AAEO,SAAA;AAAA,IACL,MAAMH,EAAM;AAAA,IACZ,KAAKU,EAAK;AAAA,IACV,SAAS;AAAA,MACP,YAAAjB;AAAA,MACA,QAAAD;AAAA,IACF;AAAA,EAAA;AAEJ;AAEAR,EAAa,WAAW;AAAA,EACtB,OAAO;AAAA,EAEP,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,GAAG,CAACU,GAAUkB,MAAclB,EAAI;AAAA,IAChC,KAAK,CAACA,GAAUkB,MAAclB,EAAI;AAAA,IAClC,KAAK,CAACe,GAAWd,MAAaA,EAAI;AAAA,IAClC,OAAO,CAACD,GAAUkB,OAAelB,EAAI,OAAOA,EAAI,MAAM;AAAA,IACtD,OAAO,CAACe,GAAWd,MAAaA,EAAI;AAAA,EACtC;AAAA,EAEA,YAAY,CAACD,GAAUC,MAAa;AAClC,IAAAA,IAAMA,KAAO;AAEb,QAAIkB,IAAInB,EAAI;AACR,WAAAC,EAAA,QAAkBkB,EAAE,WAAZ,IACZ,OAAOA,EAAE,QAETlB,EAAI,MAAMD,EAAI,KACdC,EAAI,SAASD,EAAI,OAAOA,EAAI,MAAM,SAE3BC;AAAA,EACT;AAAA,EAEA,gBAAgB;AAAA,IACd,KAAK,SACHmB,GACAnB,GACAM,GACAI,GACAC,GACAS,GACAZ,GACA;AAUA,UATQ,QAAA,IAAI,UAAUE,GAAKC,CAAG,GAGrBH,MAAAA,EAAK,MAAM,KAAK,IAAI,IAEzBE,KACFJ,EAAMI,CAAG,GAGPC;AACF,YAAIA,EAAI;AACN,UAAAL,EAAMK,EAAI,GAAG;AAAA,aAEV;AACH,cAAID,IAAMC,EAAI;AACdD,UAAAA,IAAMA,KAAO,IAAI,MAAM,iBAAiBV,EAAI,GAAG,IAAIA,EAAI,KAAK,iBAAiB,GAC7EM,EAAMI,CAAG;AAAA,QACX;AAAA,IAEJ;AAAA,IAEA,MAAM,SACJnB,GACAS,GACAM,GACAI,GACAC,GACAS,GACAZ,GACA;AAIA,UAHSA,MAAAA,EAAK,MAAM,KAAK,IAAI,IACzBE,KAAKJ,EAAMI,CAAG,GAEdC,KAAOA,EAAI,MAAMA,EAAI,MAAM;AACzB,YAAAU,IAAOV,EAAI,KAAK;AAAA,UAAI,CAACW,MACvB/B,EAAO,OAAOS,EAAI,KAAK,EAAE,MAAMsB,CAAI;AAAA,QAAA;AAE5B,QAAAd,MAAAA,EAAK,MAAM,KAAK,IAAI,IAC7BF,EAAMe,CAAI;AAAA,MAAA;AAEV,QAAAf;AAAA,UACGK,KAAOA,EAAI,OACZ,IAAI;AAAA,YACF,iBAAiBX,EAAI,GAAG,IAAIA,EAAI,KAAK;AAAA,UACvC;AAAA,QAAA;AAAA,IAGN;AAAA,EACF;AACF;AAGA,OAAO,eAAeX,GAAc,QAAQ,EAAE,OAAO,gBAAgB;"} \ No newline at end of file diff --git a/dist/browser-store.iife.js b/dist/browser-store.iife.js new file mode 100644 index 0000000..2d2947e --- /dev/null +++ b/dist/browser-store.iife.js @@ -0,0 +1,2 @@ +var BrowserStore=function(){"use strict";function v(t){let r=this,o=r.export("entity/init"),c=t.handleResponse,s=["save","load","list","remove"].reduce((n,a)=>(n[a]=c[a]||c.any,n),{});const w=[];function l(n,a,_){let e={},i=_.apimsg;for(let u in i){let p=i[u];typeof p=="function"?e[u]=p(n,a,_):e[u]=JSON.parse(JSON.stringify(p))}return e}let m={name:"BrowserStore",save:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),u=l(n,i,t);e&&(e.ctx=i)&&(e.apimsg=u),this.act(u,function(f,d,g){return e&&(e.apiend=Date.now())&&(e.err=f)&&(e.res=d)&&(e.apimeta=g),s.save(this,i,a,f,d,g,e)})},load:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),u=l(n,i,t);e&&(e.ctx=i)&&(e.apimsg=u),this.act(u,function(f,d,g){return e&&S(e,arguments),s.load(this,i,a,f,d,g,e)})},list:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),u=l(n,i,t);e&&(e.ctx=i)&&(e.apimsg=u),this.act(u,function(f,d,g){return e&&S(e,arguments),s.list(this,i,a,f,d,g,e)})},remove:function(n,a,_){let e=t.debug&&h(arguments),i=t.prepareCtx(n),u=l(n,i,t);e&&(e.ctx=i)&&(e.apimsg=u),this.act(u,function(f,d,g){return e&&S(e,arguments),s.remove(this,i,a,f,d,g,e)})},close:function(n,a){a()},native:function(n,a){a()}},x=o(r,t,m);function h(n){let a=t.debug&&{msg:n[0],meta:n[2],start:Date.now()};return a&&w.push(a),a}function S(n,a){return n.apiend=Date.now(),n.err=a[0],n.res=a[1],n.apimeta=a[2],n}return{name:m.name,tag:x.tag,exports:{makeApiMsg:l,msglog:w}}}return v.defaults={debug:!1,apimsg:{aim:"req",on:"entity",debounce$:!0,q:(t,r)=>t.q,ent:(t,r)=>t.ent,cmd:(t,r)=>r.cmd,canon:(t,r)=>(t.ent||t.qent).entity$,store:(t,r)=>r.store},prepareCtx:(t,r)=>{r=r||{};let o=t.q;return r.store=o.store$!==!1,delete o.store$,r.cmd=t.cmd,r.canon=(t.ent||t.qent).entity$,r},handleResponse:{any:function(t,r,o,c,s,w,l){if(console.log("BS RES",c,s),l&&(l.end=Date.now()),c&&o(c),s)if(s.ok)o(s.ent);else{let m=s.err;m=m||new Error(`BrowserStore: ${r.cmd} ${r.canon}: unknown error`),o(m)}},list:function(t,r,o,c,s,w,l){if(l&&(l.end=Date.now()),c&&o(c),s&&s.ok&&s.list){let m=s.list.map(x=>t.entity(r.canon).data$(x));l&&(l.end=Date.now()),o(m)}else o(s&&s.err||new Error(`BrowserStore: ${r.cmd} ${r.canon}: unknown list error`))}}},Object.defineProperty(v,"name",{value:"BrowserStore"}),v}(); +//# sourceMappingURL=browser-store.iife.js.map diff --git a/dist/browser-store.iife.js.map b/dist/browser-store.iife.js.map new file mode 100644 index 0000000..e96ee63 --- /dev/null +++ b/dist/browser-store.iife.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser-store.iife.js","sources":["../src/browser-store.ts"],"sourcesContent":["/* Copyright (c) 2023 Richard Rodger and other contributors, MIT License */\n\nfunction BrowserStore(this: any, options: any) {\n let seneca: any = this\n\n let init = seneca.export('entity/init')\n\n let ohr = options.handleResponse\n let handleResponse = ['save', 'load', 'list', 'remove'].reduce(\n (a: any, n) => ((a[n] = ohr[n] || ohr.any), a),\n {},\n )\n\n const msglog: {\n msg: any\n meta: any\n start: number\n ctx?: any\n apimsg?: any\n res?: any\n err?: any\n apimeta?: any\n apiend?: number\n end?: number\n }[] = []\n\n function makeApiMsg(msg: any, ctx: any, options: any) {\n let apimsg: any = {}\n let apimsgtm = options.apimsg\n\n for (let pn in apimsgtm) {\n let pv = apimsgtm[pn]\n if ('function' === typeof pv) {\n apimsg[pn] = pv(msg, ctx, options)\n } else {\n apimsg[pn] = JSON.parse(JSON.stringify(pv))\n }\n }\n\n return apimsg\n }\n\n let store = {\n name: 'BrowserStore',\n\n save: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function save_result(this: any, err: Error, res: any, apimeta: any) {\n logn &&\n (logn.apiend = Date.now()) &&\n (logn.err = err) &&\n (logn.res = res) &&\n (logn.apimeta = apimeta)\n return handleResponse.save(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n load: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function load_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.load(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n list: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function list_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.list(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n remove: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function remove_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.remove(\n this,\n ctx,\n reply,\n err,\n res,\n apimeta,\n logn,\n )\n },\n )\n },\n\n close: function (this: any, _msg: any, reply: any) {\n reply()\n },\n\n native: function (this: any, _msg: any, reply: any) {\n reply()\n },\n }\n\n let meta = init(seneca, options, store)\n\n function logstart(args: any) {\n let logn = options.debug && {\n msg: args[0],\n meta: args[2],\n start: Date.now(),\n }\n logn && msglog.push(logn)\n return logn\n }\n\n function logres(logn: any, args: any) {\n logn.apiend = Date.now()\n logn.err = args[0]\n logn.res = args[1]\n logn.apimeta = args[2]\n return logn\n }\n\n return {\n name: store.name,\n tag: meta.tag,\n exports: {\n makeApiMsg,\n msglog,\n },\n }\n}\n\nBrowserStore.defaults = {\n debug: false,\n\n apimsg: {\n aim: 'req',\n on: 'entity',\n debounce$: true,\n q: (msg: any, _ctx: any) => msg.q,\n ent: (msg: any, _ctx: any) => msg.ent,\n cmd: (_msg: any, ctx: any) => ctx.cmd,\n canon: (msg: any, _ctx: any) => (msg.ent || msg.qent).entity$,\n store: (_msg: any, ctx: any) => ctx.store,\n },\n\n prepareCtx: (msg: any, ctx: any) => {\n ctx = ctx || {}\n\n let q = msg.q\n ctx.store = false !== q.store$\n delete q.store$\n\n ctx.cmd = msg.cmd\n ctx.canon = (msg.ent || msg.qent).entity$\n\n return ctx\n },\n\n handleResponse: {\n any: function (\n _seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n console.log('BS RES', err, res)\n\n\n logn && (logn.end = Date.now())\n\n if (err) {\n reply(err)\n }\n\n if (res) {\n if (res.ok) {\n reply(res.ent)\n }\n else {\n let err = res.err\n err = err || new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown error`)\n reply(err)\n }\n }\n },\n\n list: function (\n seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n logn && (logn.end = Date.now())\n if (err) reply(err)\n\n if (res && res.ok && res.list) {\n let list = res.list.map((item: any) =>\n seneca.entity(ctx.canon).data$(item),\n )\n logn && (logn.end = Date.now())\n reply(list)\n } else {\n reply(\n (res && res.err) ||\n new Error(\n `BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown list error`,\n ),\n )\n }\n },\n },\n}\n\n// Prevent name mangling\nObject.defineProperty(BrowserStore, 'name', { value: 'BrowserStore' })\n\n\nexport default BrowserStore\n"],"names":["BrowserStore","options","seneca","init","ohr","handleResponse","a","n","msglog","makeApiMsg","msg","ctx","apimsg","apimsgtm","pn","pv","store","reply","_meta","logn","logstart","err","res","apimeta","logres","_msg","meta","args","_ctx","q","_seneca","_apimeta","list","item"],"mappings":"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"} \ No newline at end of file diff --git a/dist/browser-store.js b/dist/browser-store.js deleted file mode 100644 index 38eb011..0000000 --- a/dist/browser-store.js +++ /dev/null @@ -1,158 +0,0 @@ -"use strict"; -/* Copyright (c) 2023 Richard Rodger and other contributors, MIT License */ -Object.defineProperty(exports, "__esModule", { value: true }); -function BrowserStore(options) { - let seneca = this; - let init = seneca.export('entity/init'); - let ohr = options.handleResponse; - let handleResponse = ['save', 'load', 'list', 'remove'].reduce((a, n) => ((a[n] = ohr[n] || ohr.any), a), {}); - const msglog = []; - function makeApiMsg(msg, ctx, options) { - let apimsg = {}; - let apimsgtm = options.apimsg; - for (let pn in apimsgtm) { - let pv = apimsgtm[pn]; - if ('function' === typeof pv) { - apimsg[pn] = pv(msg, ctx, options); - } - else { - apimsg[pn] = JSON.parse(JSON.stringify(pv)); - } - } - return apimsg; - } - let store = { - name: 'BrowserStore', - save: function (msg, reply, _meta) { - let logn = options.debug && logstart(arguments); - let ctx = options.prepareCtx(msg); - let apimsg = makeApiMsg(msg, ctx, options); - logn && (logn.ctx = ctx) && (logn.apimsg = apimsg); - this.act(apimsg, function save_result(err, res, apimeta) { - logn && - (logn.apiend = Date.now()) && - (logn.err = err) && - (logn.res = res) && - (logn.apimeta = apimeta); - return handleResponse.save(this, ctx, reply, err, res, apimeta, logn); - }); - }, - load: function (msg, reply, _meta) { - let logn = options.debug && logstart(arguments); - let ctx = options.prepareCtx(msg); - let apimsg = makeApiMsg(msg, ctx, options); - logn && (logn.ctx = ctx) && (logn.apimsg = apimsg); - this.act(apimsg, function load_result(err, res, apimeta) { - logn && logres(logn, arguments); - return handleResponse.load(this, ctx, reply, err, res, apimeta, logn); - }); - }, - list: function (msg, reply, _meta) { - let logn = options.debug && logstart(arguments); - let ctx = options.prepareCtx(msg); - let apimsg = makeApiMsg(msg, ctx, options); - logn && (logn.ctx = ctx) && (logn.apimsg = apimsg); - this.act(apimsg, function list_result(err, res, apimeta) { - logn && logres(logn, arguments); - return handleResponse.list(this, ctx, reply, err, res, apimeta, logn); - }); - }, - remove: function (msg, reply, _meta) { - let logn = options.debug && logstart(arguments); - let ctx = options.prepareCtx(msg); - let apimsg = makeApiMsg(msg, ctx, options); - logn && (logn.ctx = ctx) && (logn.apimsg = apimsg); - this.act(apimsg, function remove_result(err, res, apimeta) { - logn && logres(logn, arguments); - return handleResponse.remove(this, ctx, reply, err, res, apimeta, logn); - }); - }, - close: function (_msg, reply) { - reply(); - }, - native: function (_msg, reply) { - reply(); - }, - }; - let meta = init(seneca, options, store); - function logstart(args) { - let logn = options.debug && { - msg: args[0], - meta: args[2], - start: Date.now(), - }; - logn && msglog.push(logn); - return logn; - } - function logres(logn, args) { - logn.apiend = Date.now(); - logn.err = args[0]; - logn.res = args[1]; - logn.apimeta = args[2]; - return logn; - } - return { - name: store.name, - tag: meta.tag, - exports: { - makeApiMsg, - msglog, - }, - }; -} -BrowserStore.defaults = { - debug: false, - apimsg: { - aim: 'req', - on: 'entity', - debounce$: true, - q: (msg, _ctx) => msg.q, - ent: (msg, _ctx) => msg.ent, - cmd: (_msg, ctx) => ctx.cmd, - canon: (msg, _ctx) => (msg.ent || msg.qent).entity$, - store: (_msg, ctx) => ctx.store, - }, - prepareCtx: (msg, ctx) => { - ctx = ctx || {}; - let q = msg.q; - ctx.store = false !== q.store$; - delete q.store$; - ctx.cmd = msg.cmd; - ctx.canon = (msg.ent || msg.qent).entity$; - return ctx; - }, - handleResponse: { - any: function (_seneca, ctx, reply, err, res, _apimeta, logn) { - logn && (logn.end = Date.now()); - if (err) { - reply(err); - } - if (res && res.ok) { - reply(res.ent); - } - else { - reply((res && res.err) || - new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown error`)); - } - }, - list: function (seneca, ctx, reply, err, res, _apimeta, logn) { - logn && (logn.end = Date.now()); - if (err) - reply(err); - if (res && res.ok && res.list) { - let list = res.list.map((item) => seneca.entity(ctx.canon).data$(item)); - logn && (logn.end = Date.now()); - reply(list); - } - else { - reply((res && res.err) || - new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown list error`)); - } - }, - }, -}; -exports.default = BrowserStore; -if ('undefined' !== typeof module) { - module.exports = BrowserStore; -} -//# sourceMappingURL=browser-store.js.map \ No newline at end of file diff --git a/dist/browser-store.js.map b/dist/browser-store.js.map deleted file mode 100644 index 182d557..0000000 --- a/dist/browser-store.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"browser-store.js","sourceRoot":"","sources":["../src/browser-store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/browser-store.umd.js b/dist/browser-store.umd.js new file mode 100644 index 0000000..82cdcbb --- /dev/null +++ b/dist/browser-store.umd.js @@ -0,0 +1,2 @@ +(function(g,e){typeof exports=="object"&&typeof module<"u"?module.exports=e():typeof define=="function"&&define.amd?define(e):(g=typeof globalThis<"u"?globalThis:g||self,g.BrowserStore=e())})(this,function(){"use strict";function g(e){let a=this,l=a.export("entity/init"),m=e.handleResponse,s=["save","load","list","remove"].reduce((n,r)=>(n[r]=m[r]||m.any,n),{});const w=[];function o(n,r,h){let t={},i=h.apimsg;for(let u in i){let _=i[u];typeof _=="function"?t[u]=_(n,r,h):t[u]=JSON.parse(JSON.stringify(_))}return t}let c={name:"BrowserStore",save:function(n,r,h){let t=e.debug&&x(arguments),i=e.prepareCtx(n),u=o(n,i,e);t&&(t.ctx=i)&&(t.apimsg=u),this.act(u,function(f,d,p){return t&&(t.apiend=Date.now())&&(t.err=f)&&(t.res=d)&&(t.apimeta=p),s.save(this,i,r,f,d,p,t)})},load:function(n,r,h){let t=e.debug&&x(arguments),i=e.prepareCtx(n),u=o(n,i,e);t&&(t.ctx=i)&&(t.apimsg=u),this.act(u,function(f,d,p){return t&&S(t,arguments),s.load(this,i,r,f,d,p,t)})},list:function(n,r,h){let t=e.debug&&x(arguments),i=e.prepareCtx(n),u=o(n,i,e);t&&(t.ctx=i)&&(t.apimsg=u),this.act(u,function(f,d,p){return t&&S(t,arguments),s.list(this,i,r,f,d,p,t)})},remove:function(n,r,h){let t=e.debug&&x(arguments),i=e.prepareCtx(n),u=o(n,i,e);t&&(t.ctx=i)&&(t.apimsg=u),this.act(u,function(f,d,p){return t&&S(t,arguments),s.remove(this,i,r,f,d,p,t)})},close:function(n,r){r()},native:function(n,r){r()}},v=l(a,e,c);function x(n){let r=e.debug&&{msg:n[0],meta:n[2],start:Date.now()};return r&&w.push(r),r}function S(n,r){return n.apiend=Date.now(),n.err=r[0],n.res=r[1],n.apimeta=r[2],n}return{name:c.name,tag:v.tag,exports:{makeApiMsg:o,msglog:w}}}return g.defaults={debug:!1,apimsg:{aim:"req",on:"entity",debounce$:!0,q:(e,a)=>e.q,ent:(e,a)=>e.ent,cmd:(e,a)=>a.cmd,canon:(e,a)=>(e.ent||e.qent).entity$,store:(e,a)=>a.store},prepareCtx:(e,a)=>{a=a||{};let l=e.q;return a.store=l.store$!==!1,delete l.store$,a.cmd=e.cmd,a.canon=(e.ent||e.qent).entity$,a},handleResponse:{any:function(e,a,l,m,s,w,o){if(console.log("BS RES",m,s),o&&(o.end=Date.now()),m&&l(m),s)if(s.ok)l(s.ent);else{let c=s.err;c=c||new Error(`BrowserStore: ${a.cmd} ${a.canon}: unknown error`),l(c)}},list:function(e,a,l,m,s,w,o){if(o&&(o.end=Date.now()),m&&l(m),s&&s.ok&&s.list){let c=s.list.map(v=>e.entity(a.canon).data$(v));o&&(o.end=Date.now()),l(c)}else l(s&&s.err||new Error(`BrowserStore: ${a.cmd} ${a.canon}: unknown list error`))}}},Object.defineProperty(g,"name",{value:"BrowserStore"}),g}); +//# sourceMappingURL=browser-store.umd.js.map diff --git a/dist/browser-store.umd.js.map b/dist/browser-store.umd.js.map new file mode 100644 index 0000000..1d120c0 --- /dev/null +++ b/dist/browser-store.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser-store.umd.js","sources":["../src/browser-store.ts"],"sourcesContent":["/* Copyright (c) 2023 Richard Rodger and other contributors, MIT License */\n\nfunction BrowserStore(this: any, options: any) {\n let seneca: any = this\n\n let init = seneca.export('entity/init')\n\n let ohr = options.handleResponse\n let handleResponse = ['save', 'load', 'list', 'remove'].reduce(\n (a: any, n) => ((a[n] = ohr[n] || ohr.any), a),\n {},\n )\n\n const msglog: {\n msg: any\n meta: any\n start: number\n ctx?: any\n apimsg?: any\n res?: any\n err?: any\n apimeta?: any\n apiend?: number\n end?: number\n }[] = []\n\n function makeApiMsg(msg: any, ctx: any, options: any) {\n let apimsg: any = {}\n let apimsgtm = options.apimsg\n\n for (let pn in apimsgtm) {\n let pv = apimsgtm[pn]\n if ('function' === typeof pv) {\n apimsg[pn] = pv(msg, ctx, options)\n } else {\n apimsg[pn] = JSON.parse(JSON.stringify(pv))\n }\n }\n\n return apimsg\n }\n\n let store = {\n name: 'BrowserStore',\n\n save: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function save_result(this: any, err: Error, res: any, apimeta: any) {\n logn &&\n (logn.apiend = Date.now()) &&\n (logn.err = err) &&\n (logn.res = res) &&\n (logn.apimeta = apimeta)\n return handleResponse.save(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n load: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function load_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.load(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n list: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function list_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.list(this, ctx, reply, err, res, apimeta, logn)\n },\n )\n },\n\n remove: function (this: any, msg: any, reply: any, _meta: any) {\n let logn = options.debug && logstart(arguments)\n let ctx = options.prepareCtx(msg)\n let apimsg = makeApiMsg(msg, ctx, options)\n\n logn && (logn.ctx = ctx) && (logn.apimsg = apimsg)\n this.act(\n apimsg,\n function remove_result(this: any, err: Error, res: any, apimeta: any) {\n logn && logres(logn, arguments)\n return handleResponse.remove(\n this,\n ctx,\n reply,\n err,\n res,\n apimeta,\n logn,\n )\n },\n )\n },\n\n close: function (this: any, _msg: any, reply: any) {\n reply()\n },\n\n native: function (this: any, _msg: any, reply: any) {\n reply()\n },\n }\n\n let meta = init(seneca, options, store)\n\n function logstart(args: any) {\n let logn = options.debug && {\n msg: args[0],\n meta: args[2],\n start: Date.now(),\n }\n logn && msglog.push(logn)\n return logn\n }\n\n function logres(logn: any, args: any) {\n logn.apiend = Date.now()\n logn.err = args[0]\n logn.res = args[1]\n logn.apimeta = args[2]\n return logn\n }\n\n return {\n name: store.name,\n tag: meta.tag,\n exports: {\n makeApiMsg,\n msglog,\n },\n }\n}\n\nBrowserStore.defaults = {\n debug: false,\n\n apimsg: {\n aim: 'req',\n on: 'entity',\n debounce$: true,\n q: (msg: any, _ctx: any) => msg.q,\n ent: (msg: any, _ctx: any) => msg.ent,\n cmd: (_msg: any, ctx: any) => ctx.cmd,\n canon: (msg: any, _ctx: any) => (msg.ent || msg.qent).entity$,\n store: (_msg: any, ctx: any) => ctx.store,\n },\n\n prepareCtx: (msg: any, ctx: any) => {\n ctx = ctx || {}\n\n let q = msg.q\n ctx.store = false !== q.store$\n delete q.store$\n\n ctx.cmd = msg.cmd\n ctx.canon = (msg.ent || msg.qent).entity$\n\n return ctx\n },\n\n handleResponse: {\n any: function (\n _seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n console.log('BS RES', err, res)\n\n\n logn && (logn.end = Date.now())\n\n if (err) {\n reply(err)\n }\n\n if (res) {\n if (res.ok) {\n reply(res.ent)\n }\n else {\n let err = res.err\n err = err || new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown error`)\n reply(err)\n }\n }\n },\n\n list: function (\n seneca: any,\n ctx: any,\n reply: any,\n err: Error,\n res: any,\n _apimeta: any,\n logn: any,\n ) {\n logn && (logn.end = Date.now())\n if (err) reply(err)\n\n if (res && res.ok && res.list) {\n let list = res.list.map((item: any) =>\n seneca.entity(ctx.canon).data$(item),\n )\n logn && (logn.end = Date.now())\n reply(list)\n } else {\n reply(\n (res && res.err) ||\n new Error(\n `BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown list error`,\n ),\n )\n }\n },\n },\n}\n\n// Prevent name mangling\nObject.defineProperty(BrowserStore, 'name', { value: 'BrowserStore' })\n\n\nexport default BrowserStore\n"],"names":["BrowserStore","options","seneca","init","ohr","handleResponse","a","n","msglog","makeApiMsg","msg","ctx","apimsg","apimsgtm","pn","pv","store","reply","_meta","logn","logstart","err","res","apimeta","logres","_msg","meta","args","_ctx","q","_seneca","_apimeta","list","item"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 3ac8fb5..a90f125 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,28 @@ { "name": "@seneca/browser-store", "version": "0.0.4", - "description": "Seneca in-memory data storage plugin.", - "main": "dist/browser-store.js", - "type": "commonjs", + "description": "Seneca browwer storage plugin.", + "main": "dist/browser-store.cjs.js", + "module": "dist/browser-store.es.js", "types": "dist/browser-store.d.ts", + "source": "src/browser-store.ts", + "exports": { + ".": { + "import": "./dist/browser-store.es.js", + "require": "./dist/browser-store.umd.js" + } + }, "license": "MIT", "author": "Richard Rodger (http://richardrodger.com)", "contributors": [ "Richard Rodger (http://richardrodger.com)" ], "scripts": { - "build": "tsc -d", - "watch": "tsc -w -d", - "test": "lab -v -P test -r console -o stdout -r html -o test/coverage.html -r lcov -o test/lcov.info --sourcemaps --transform node_modules/lab-transform-typescript", - "test-some": "lab -v -P test --sourcemaps --transform node_modules/lab-transform-typescript -g", + "dev": "tsc && vite build --watch", + "start": "vite --host --open", + "build": "tsc && vite build", + "build:types": "dts-bundle-generator --config ./dts-bundle-generator.config.ts", + "test": "echo test", "prettier": "prettier --write --no-semi --single-quote src/**/*.ts test/*.js", "reset": "npm run clean && npm i && npm run build && npm test", "clean": "rm -rf node_modules dist package-lock.json yarn.lock", @@ -38,15 +46,24 @@ "seneca-entity": ">=25" }, "devDependencies": { - "@hapi/code": "9.0.3", - "@hapi/lab": "25.1.3", - "async": "3.2.5", - "lab-transform-typescript": "3.0.1", - "prettier": "3.1.0", - "seneca-plugin-validator": "0.6.1", - "seneca-promisify": "3.7.1", - "seneca-store-test": "5.2.0", - "typescript": "5.3.2" + "@typescript-eslint/eslint-plugin": "^6.15.0", + "@typescript-eslint/parser": "^6.15.0", + "dts-bundle-generator": "^9.0.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.1", + "prettier": "^3.1.1", + "seneca": "^3.33.0", + "seneca-entity": "^25.1.1", + "seneca-promisify": "^3.7.1", + "stylelint": "15", + "stylelint-config-recommended": "13", + "stylelint-config-sass-guidelines": "^10.0.0", + "ts-node": "^10.9.2", + "tslib": "^2.6.2", + "typescript": "^5.3.3", + "vite": "^5.0.10", + "vite-plugin-dts": "^3.6.4" }, "files": [ "README.md", diff --git a/src/browser-store.ts b/src/browser-store.ts index 99c0e26..5c696c0 100644 --- a/src/browser-store.ts +++ b/src/browser-store.ts @@ -191,19 +191,24 @@ BrowserStore.defaults = { _apimeta: any, logn: any, ) { + console.log('BS RES', err, res) + + logn && (logn.end = Date.now()) if (err) { reply(err) } - if (res && res.ok) { - reply(res.ent) - } else { - reply( - (res && res.err) || - new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown error`), - ) + if (res) { + if (res.ok) { + reply(res.ent) + } + else { + let err = res.err + err = err || new Error(`BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown error`) + reply(err) + } } }, @@ -228,17 +233,17 @@ BrowserStore.defaults = { } else { reply( (res && res.err) || - new Error( - `BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown list error`, - ), + new Error( + `BrowserStore: ${ctx.cmd} ${ctx.canon}: unknown list error`, + ), ) } }, }, } -export default BrowserStore +// Prevent name mangling +Object.defineProperty(BrowserStore, 'name', { value: 'BrowserStore' }) -if ('undefined' !== typeof module) { - module.exports = BrowserStore -} + +export default BrowserStore diff --git a/tsconfig.json b/tsconfig.json index 67c6dc9..0808faf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,29 @@ { "compilerOptions": { - "esModuleInterop": true, - "isolatedModules": true, - "module": "commonjs", - "noEmitOnError": true, - "outDir":"dist", - "resolveJsonModule": true, - "rootDir": "src", - "sourceMap": true, + "baseUrl": "./src", + "rootDir": "./src", + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Node", + "jsx": "react-jsx", + "types": ["vite/client", "node"], + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "allowJs": true, + "allowSyntheticDefaultImports": true, + "useDefineForClassFields": true, "strict": true, - "target": "ES2019" + "skipLibCheck": false, + "sourceMap": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "noEmit": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": false, + "forceConsistentCasingInFileNames": true }, - "exclude": [ - "dist", - "node_modules", - "test" - ] + "include": ["src"], + "exclude": ["node_modules"], + "references": [{ "path": "./tsconfig.node.json" }] } - diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..122b8a1 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,25 @@ +import dts from "vite-plugin-dts" +import path from "path" +import { defineConfig } from "vite" + +export default defineConfig({ + base: "./", + plugins: [dts({ rollupTypes: true })], + build: { + sourcemap: true, + lib: { + entry: path.resolve(__dirname, "src/browser-store.ts"), + name: "BrowserStore", + formats: ["es", "cjs", "umd", "iife"], + fileName: (format) => `browser-store.${format}.js`, + }, + rollupOptions: { + external: [], + output: { + globals: { + }, + }, + }, + }, +}) +