@mxpicture/print-backlog 0.0.5 → 0.0.7
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/dist/public/assets/index-C4BbRvDB.js +1 -0
- package/dist/public/assets/index-D7yzmKDn.css +1 -0
- package/dist/public/index.html +2 -2
- package/dist/server/api/events.d.ts +21 -0
- package/dist/server/api/events.d.ts.map +1 -0
- package/dist/server/api/events.js +201 -0
- package/dist/server/api/events.js.map +1 -0
- package/dist/server/api/items.d.ts +24 -1
- package/dist/server/api/items.d.ts.map +1 -1
- package/dist/server/api/items.js +181 -9
- package/dist/server/api/items.js.map +1 -1
- package/dist/server/app.d.ts +7 -1
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +11 -5
- package/dist/server/app.js.map +1 -1
- package/dist/server/bambuddy.d.ts +23 -6
- package/dist/server/bambuddy.d.ts.map +1 -1
- package/dist/server/bambuddy.js +95 -23
- package/dist/server/bambuddy.js.map +1 -1
- package/dist/server/cli.js +8 -1
- package/dist/server/cli.js.map +1 -1
- package/dist/server/matching.d.ts +22 -0
- package/dist/server/matching.d.ts.map +1 -0
- package/dist/server/matching.js +72 -0
- package/dist/server/matching.js.map +1 -0
- package/dist/server/multipart.d.ts +3 -1
- package/dist/server/multipart.d.ts.map +1 -1
- package/dist/server/multipart.js +2 -2
- package/dist/server/multipart.js.map +1 -1
- package/dist/server/storage.d.ts +18 -4
- package/dist/server/storage.d.ts.map +1 -1
- package/dist/server/storage.js +32 -3
- package/dist/server/storage.js.map +1 -1
- package/dist/server/zip.d.ts +35 -0
- package/dist/server/zip.d.ts.map +1 -0
- package/dist/server/zip.js +190 -0
- package/dist/server/zip.js.map +1 -0
- package/dist/shared/types.d.ts +46 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +7 -1
- package/dist/public/assets/index-CLP1jBWd.js +0 -1
- package/dist/public/assets/index-DxpzozYw.css +0 -1
- package/dist/server/api/hooks.d.ts +0 -9
- package/dist/server/api/hooks.d.ts.map +0 -1
- package/dist/server/api/hooks.js +0 -29
- package/dist/server/api/hooks.js.map +0 -1
package/dist/shared/types.d.ts
CHANGED
|
@@ -31,6 +31,44 @@ export interface QueueSummary {
|
|
|
31
31
|
export interface HookAck {
|
|
32
32
|
stored: true;
|
|
33
33
|
id: number;
|
|
34
|
+
/** "auto": matched and applied; "ignored": nothing to do (a cancelled print, another event); null: left open for a person */
|
|
35
|
+
resolution: "auto" | "ignored" | null;
|
|
36
|
+
matchedItemId: number | null;
|
|
37
|
+
}
|
|
38
|
+
/** One candidate item for a print event. */
|
|
39
|
+
export interface EventCandidate {
|
|
40
|
+
id: number;
|
|
41
|
+
title: string;
|
|
42
|
+
queueId: number;
|
|
43
|
+
queueName: string;
|
|
44
|
+
status: ItemStatus;
|
|
45
|
+
/** the current version's file name, to tell same-titled items apart */
|
|
46
|
+
filename: string | null;
|
|
47
|
+
}
|
|
48
|
+
/** GET /api/v1/print-events: a print Bambuddy reported. */
|
|
49
|
+
export interface PrintEventView {
|
|
50
|
+
id: number;
|
|
51
|
+
receivedAt: string;
|
|
52
|
+
event: string;
|
|
53
|
+
filename: string | null;
|
|
54
|
+
printer: string | null;
|
|
55
|
+
status: string | null;
|
|
56
|
+
resolution: "auto" | "manual" | "ignored" | null;
|
|
57
|
+
matchedItemId: number | null;
|
|
58
|
+
/** for an open event: the items whose name matches, any status, any queue (the trash excluded) */
|
|
59
|
+
candidates: EventCandidate[];
|
|
60
|
+
}
|
|
61
|
+
/** POST /api/v1/print-events/:id/assign: the item it was, or ignore it. */
|
|
62
|
+
export type EventAssign = {
|
|
63
|
+
itemId: number;
|
|
64
|
+
} | {
|
|
65
|
+
ignore: true;
|
|
66
|
+
};
|
|
67
|
+
/** POST /api/v1/items/:id/send-to-bambuddy */
|
|
68
|
+
export interface SendResult {
|
|
69
|
+
item: ItemDetail;
|
|
70
|
+
/** Bambuddy already had a file with this content (and kept that one) */
|
|
71
|
+
duplicate: boolean;
|
|
34
72
|
}
|
|
35
73
|
/** One stored file of an item. Versions are never changed, only added. */
|
|
36
74
|
export interface Version {
|
|
@@ -43,6 +81,8 @@ export interface Version {
|
|
|
43
81
|
uploadedAt: string;
|
|
44
82
|
uploadedBy: string;
|
|
45
83
|
current: boolean;
|
|
84
|
+
/** a preview image (from a 3MF) at …/versions/:n/thumbnail */
|
|
85
|
+
hasThumbnail: boolean;
|
|
46
86
|
}
|
|
47
87
|
/** A row of the list: the item with its current version. */
|
|
48
88
|
export interface Item {
|
|
@@ -77,6 +117,8 @@ export interface ItemDetail extends Item {
|
|
|
77
117
|
/** POST /api/v1/queues/:id/items (multipart): one new item per file. */
|
|
78
118
|
export interface UploadResult {
|
|
79
119
|
items: Item[];
|
|
120
|
+
/** entries of dropped ZIPs that were not imported (not a model, sliced, hidden) */
|
|
121
|
+
skipped: string[];
|
|
80
122
|
}
|
|
81
123
|
/** POST /api/v1/items/:id/versions (multipart, one file). */
|
|
82
124
|
export interface VersionUploadResult {
|
|
@@ -107,6 +149,10 @@ export type HistoryEntry = {
|
|
|
107
149
|
printer: string | null;
|
|
108
150
|
filename: string | null;
|
|
109
151
|
resolution: string | null;
|
|
152
|
+
} | {
|
|
153
|
+
kind: "sent";
|
|
154
|
+
at: string;
|
|
155
|
+
fileId: number;
|
|
110
156
|
};
|
|
111
157
|
/** PATCH /api/v1/items/:id. `move` places the item right after `afterId` (null = top) in `queueId` (default: its queue). */
|
|
112
158
|
export interface ItemPatch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACjE,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAK9C,CAAC;AAEF,oDAAoD;AACpD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC;IACnB,kFAAkF;IAClF,QAAQ,EAAE,IAAI,GAAG,aAAa,GAAG,KAAK,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAqB;AACrB,MAAM,WAAW,EAAE;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,2BAA2B;AAC3B,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,IAAI,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mxpicture/print-backlog",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "A backlog for unsliced 3D models (STL, 3MF, STEP) next to Bambuddy: queues, one status per item, versions, drag & drop",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "MXPicture",
|
|
@@ -34,13 +34,19 @@
|
|
|
34
34
|
"busboy": "^1.6.0",
|
|
35
35
|
"dbmate": "2.35.1",
|
|
36
36
|
"postgres": "^3.4.9",
|
|
37
|
+
"yauzl": "^3.4.0",
|
|
38
|
+
"yazl": "^3.3.1",
|
|
37
39
|
"zod": "^4.3.6"
|
|
38
40
|
},
|
|
39
41
|
"devDependencies": {
|
|
40
42
|
"@preact/preset-vite": "^2.10.6",
|
|
41
43
|
"@types/busboy": "^1.5.5",
|
|
42
44
|
"@types/node": "^26.6.6",
|
|
45
|
+
"@types/sortablejs": "^1.15.9",
|
|
46
|
+
"@types/yauzl": "^2.10.3",
|
|
47
|
+
"@types/yazl": "^3.3.1",
|
|
43
48
|
"preact": "^10.29.8",
|
|
49
|
+
"sortablejs": "^1.15.7",
|
|
44
50
|
"typescript": "^5.9.3",
|
|
45
51
|
"vite": "^8.1.5",
|
|
46
52
|
"vitest": "^4.0.18"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e,t,n,r,i,a,o,s,c,l,u,d,f,p,m={},h=[],g=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,_=Array.isArray;function v(e,t){for(var n in t)e[n]=t[n];return e}function y(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function b(t,n,r){var i,a,o,s={};for(o in n)o==`key`?i=n[o]:o==`ref`?a=n[o]:s[o]=n[o];if(arguments.length>2&&(s.children=arguments.length>3?e.call(arguments,2):r),typeof t==`function`&&t.defaultProps!=null)for(o in t.defaultProps)s[o]===void 0&&(s[o]=t.defaultProps[o]);return x(t,s,i,a,null)}function x(e,r,i,a,o){var s={type:e,props:r,key:i,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:o??++n,__i:-1,__u:0};return o==null&&t.vnode!=null&&t.vnode(s),s}function S(e){return e.children}function C(e,t){this.props=e,this.context=t}function w(e,t){if(t==null)return e.__?w(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type==`function`?w(e):null}function T(e){if(e.__P&&e.__d){var n=e.__v,r=n.__e,i=[],a=[],o=v({},n);o.__v=n.__v+1,t.vnode&&t.vnode(o),I(e.__P,o,n,e.__n,e.__P.namespaceURI,32&n.__u?[r]:null,i,r??w(n),!!(32&n.__u),a),o.__v=n.__v,o.__.__k[o.__i]=o,te(i,o,a),n.__e=n.__=null,o.__e!=r&&E(o)}}function E(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),E(e)}function D(e){(!e.__d&&(e.__d=!0)&&r.push(e)&&!O.__r++||i!=t.debounceRendering)&&((i=t.debounceRendering)||a)(O)}function O(){try{for(var e,t=1;r.length;)r.length>t&&r.sort(o),e=r.shift(),t=r.length,T(e)}finally{r.length=O.__r=0}}function k(e,t,n,r,i,a,o,s,c,l,u){var d,f,p,g,_,v,y=r&&r.__k||h,b=t.length;for(c=A(n,t,y,c,b),d=0;d<b;d++)(p=n.__k[d])!=null&&(f=p.__i!=-1&&y[p.__i]||m,p.__i=d,v=I(e,p,f,i,a,o,s,c,l,u),g=p.__e,p.ref&&f.ref!=p.ref&&(f.ref&&R(f.ref,null,p),u.push(p.ref,p.__c||g,p)),_==null&&g!=null&&(_=g),4&p.__u?(c=j(p,c,e),f.__e&&(f.__e=null)):typeof p.type==`function`&&v!==void 0?c=v:g&&(c=g.nextSibling),p.__u&=-7);return n.__e=_,c}function A(e,t,n,r,i){var a,o,s,c,l,u=n.length,d=u,f=0;for(e.__k=Array(i),a=0;a<i;a++)(o=t[a])!=null&&typeof o!=`boolean`&&typeof o!=`function`?(typeof o==`string`||typeof o==`number`||typeof o==`bigint`||o.constructor==String?o=e.__k[a]=x(null,o,null,null,null):_(o)?o=e.__k[a]=x(S,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[a]=x(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[a]=o,c=a+f,o.__=e,o.__b=e.__b+1,s=null,(l=o.__i=M(o,n,c,d))!=-1&&(d--,(s=n[l])&&(s.__u|=2)),s==null||s.__v==null?(l==-1&&(i>u?f--:i<u&&f++),typeof o.type!=`function`&&(o.__u|=4)):l!=c&&(l==c-1?f--:l==c+1?f++:(l>c?f--:f++,o.__u|=4))):e.__k[a]=null;if(d)for(a=0;a<u;a++)(s=n[a])!=null&&!(2&s.__u)&&(s.__e==r&&(r=w(s)),re(s,s));return r}function j(e,t,n){var r,i;if(typeof e.type==`function`){for(r=e.__k,i=0;r&&i<r.length;i++)r[i]&&(r[i].__=e,t=j(r[i],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=w(e)),t=n.insertBefore(e.__e,t||null));do t&&=t.nextSibling;while(t!=null&&t.nodeType==8);return t}function M(e,t,n,r){var i,a,o,s=e.key,c=e.type,l=t[n],u=l!=null&&!(2&l.__u);if(l===null&&s==null||u&&s==l.key&&c==l.type)return n;if(r>+!!u){for(i=n-1,a=n+1;i>=0||a<t.length;)if((l=t[o=i>=0?i--:a++])!=null&&!(2&l.__u)&&s==l.key&&c==l.type)return o}return-1}function N(e,t,n){t[0]==`-`?e.setProperty(t,n??``):e[t]=n==null?``:typeof n!=`number`||g.test(t)?n:n+`px`}function P(e,t,n,r,i){var a,o;n:if(t==`style`){if(typeof n==`string`)e.style.cssText=n;else{if(typeof r==`string`&&(e.style.cssText=r=``),r)for(t in r)n&&t in n||N(e.style,t,``);if(n)for(t in n)r&&n[t]==r[t]||N(e.style,t,n[t])}}else if(t[0]==`o`&&t[1]==`n`)a=t!=(t=t.replace(u,`$1`)),o=t.toLowerCase(),t=o in e||t==`onFocusOut`||t==`onFocusIn`?o.slice(2):t.slice(2),e.l||={},e.l[t+a]=n,n?r?n[l]=r[l]:(n[l]=d,e.addEventListener(t,a?p:f,a)):e.removeEventListener(t,a?p:f,a);else{if(i==`http://www.w3.org/2000/svg`)t=t.replace(/xlink(H|:h)/,`h`).replace(/sName$/,`s`);else if(t!=`width`&&t!=`height`&&t!=`href`&&t!=`list`&&t!=`form`&&t!=`tabIndex`&&t!=`download`&&t!=`rowSpan`&&t!=`colSpan`&&t!=`role`&&t!=`popover`&&t in e)try{e[t]=n??``;break n}catch{}typeof n==`function`||(n==null||!1===n&&t[4]!=`-`?e.removeAttribute(t):e.setAttribute(t,t==`popover`&&n==1?``:n))}}function F(e){return function(n){if(this.l){var r=this.l[n.type+e];if(n[c]==null)n[c]=d++;else if(n[c]<r[l])return;return r(t.event?t.event(n):n)}}}function I(e,n,r,i,a,o,s,c,l,u){var d,f,p,m,g,b,x,T,E,D,O,A,j,M,N,P,F=n.type;if(n.constructor!==void 0)return null;128&r.__u&&(l=!!(32&r.__u),o=[c=n.__e=r.__e]),(d=t.__b)&&d(n);n:if(typeof F==`function`){f=s.length;try{if(E=n.props,D=F.prototype&&F.prototype.render,O=(d=F.contextType)&&i[d.__c],A=d?O?O.props.value:d.__:i,r.__c?T=(p=n.__c=r.__c).__=p.__E:(D?n.__c=p=new F(E,A):(n.__c=p=new C(E,A),p.constructor=F,p.render=ie),O&&O.sub(p),p.state||(p.state={}),p.__n=i,m=p.__d=!0,p.__h=[],p._sb=[]),D&&p.__s==null&&(p.__s=p.state),D&&F.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=v({},p.__s)),v(p.__s,F.getDerivedStateFromProps(E,p.__s))),g=p.props,b=p.state,p.__v=n,m)D&&F.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),D&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(D&&F.getDerivedStateFromProps==null&&E!==g&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(E,A),n.__v==r.__v||!p.__e&&p.shouldComponentUpdate!=null&&!1===p.shouldComponentUpdate(E,p.__s,A)){n.__v!=r.__v&&(p.props=E,p.state=p.__s,p.__d=!1),n.__e=r.__e,n.__k=r.__k,n.__k.some(function(e){e&&(e.__=n)}),h.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),c=w(r);break n}p.componentWillUpdate!=null&&p.componentWillUpdate(E,p.__s,A),D&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(g,b,x)})}if(p.context=A,p.props=E,p.__P=e,p.__e=!1,j=t.__r,M=0,D)p.state=p.__s,p.__d=!1,j&&j(n),d=p.render(p.props,p.state,p.context),h.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,j&&j(n),d=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++M<25);p.state=p.__s,p.getChildContext!=null&&(i=v(v({},i),p.getChildContext())),D&&!m&&p.getSnapshotBeforeUpdate!=null&&(x=p.getSnapshotBeforeUpdate(g,b)),N=d!=null&&d.type===S&&d.key==null?L(d.props.children):d,c=k(e,_(N)?N:[N],n,r,i,a,o,s,c,l,u),p.base=n.__e,n.__u&=-161,p.__h.length&&s.push(p),T&&(p.__E=p.__=null)}catch(e){if(s.length=f,n.__v=null,l||o!=null){if(e.then){for(n.__u|=l?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;o!=null&&(o[o.indexOf(c)]=null),n.__e=c}else if(o!=null)for(P=o.length;P--;)y(o[P])}else n.__e=r.__e;n.__k??=r.__k||[],e.then||ee(n),t.__e(e,n,r)}}else o==null&&n.__v==r.__v?(n.__k=r.__k,n.__e=r.__e):c=n.__e=ne(r.__e,n,r,i,a,o,s,l,u);return(d=t.diffed)&&d(n),128&n.__u?void 0:c}function ee(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(ee))}function te(e,n,r){for(var i=0;i<r.length;i++)R(r[i],r[++i],r[++i]);t.__c&&t.__c(n,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(e){e.call(n)})}catch(e){t.__e(e,n.__v)}})}function L(e){return typeof e!=`object`||!e||e.__b>0?e:_(e)?e.map(L):e.constructor===void 0?v({},e):null}function ne(n,r,i,a,o,s,c,l,u){var d,f,p,h,g,v,b,x=i.props||m,S=r.props,C=r.type;if(C==`svg`?o=`http://www.w3.org/2000/svg`:C==`math`?o=`http://www.w3.org/1998/Math/MathML`:o||=`http://www.w3.org/1999/xhtml`,s!=null){for(d=0;d<s.length;d++)if((g=s[d])&&`setAttribute`in g==!!C&&(C?g.localName==C:g.nodeType==3)){n=g,s[d]=null;break}}if(n==null){if(C==null)return document.createTextNode(S);n=document.createElementNS(o,C,S.is&&S),l&&=(t.__m&&t.__m(r,s),!1),s=null}if(C==null)x===S||l&&n.data==S||(n.data=S);else{if(s=C==`textarea`&&S.defaultValue!=null?null:s&&e.call(n.childNodes),!l&&s!=null)for(x={},d=0;d<n.attributes.length;d++)x[(g=n.attributes[d]).name]=g.value;for(d in x)g=x[d],d==`dangerouslySetInnerHTML`?p=g:d==`children`||d in S||d==`value`&&`defaultValue`in S||d==`checked`&&`defaultChecked`in S||P(n,d,null,g,o);for(d in S)g=S[d],d==`children`?h=g:d==`dangerouslySetInnerHTML`?f=g:d==`value`?v=g:d==`checked`?b=g:l&&typeof g!=`function`||x[d]===g||P(n,d,g,x[d],o);if(f)l||p&&(f.__html==p.__html||f.__html==n.innerHTML)||(n.innerHTML=f.__html),r.__k=[];else if(p&&(n.innerHTML=``),k(r.type==`template`?n.content:n,_(h)?h:[h],r,i,a,C==`foreignObject`?`http://www.w3.org/1999/xhtml`:o,s,c,s?s[0]:i.__k&&w(i,0),l,u),s!=null)for(d=s.length;d--;)y(s[d]);l&&C!=`textarea`||(d=`value`,C==`progress`&&v==null?n.removeAttribute(`value`):v!=null&&(v!==n[d]||C==`progress`&&!v||C==`option`&&v!=x[d])&&P(n,d,v,x[d],o),d=`checked`,b!=null&&b!=n[d]&&P(n,d,b,x[d],o))}return n}function R(e,n,r){try{if(typeof e==`function`){var i=typeof e.__u==`function`;i&&e.__u(),i&&n==null||(e.__u=e(n))}else e.current=n}catch(e){t.__e(e,r)}}function re(e,n,r){var i,a;if(t.unmount&&t.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||R(i,null,n)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(e){t.__e(e,n)}i.base=i.__P=i.__n=null}if(i=e.__k)for(a=0;a<i.length;a++)i[a]&&re(i[a],n,r||typeof e.type!=`function`);r||y(e.__e),e.__c=e.__=e.__e=void 0}function ie(e,t,n){return this.constructor(e,n)}function ae(n,r,i){var a,o,s,c;r==document&&(r=document.documentElement),t.__&&t.__(n,r),o=(a=typeof i==`function`)?null:i&&i.__k||r.__k,s=[],c=[],I(r,n=(!a&&i||r).__k=b(S,null,[n]),o||m,m,r.namespaceURI,!a&&i?[i]:o?null:r.firstChild?e.call(r.childNodes):null,s,!a&&i?i:o?o.__e:r.firstChild,a,c),te(s,n,c),n.props.children=null}e=h.slice,t={__e:function(e,t,n,r){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,r||{}),o=i.__d),o)return i.__E=i}catch(t){e=t}throw e}},n=0,C.prototype.setState=function(e,t){var n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=v({},this.state);typeof e==`function`&&(e=e(v({},n),this.props)),e&&v(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),D(this))},C.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),D(this))},C.prototype.render=S,r=[],a=typeof Promise==`function`?Promise.prototype.then.bind(Promise.resolve()):setTimeout,o=function(e,t){return e.__v.__b-t.__v.__b},O.__r=0,s=Math.random().toString(8),c=`__d`+s,l=`__a`+s,u=/(PointerCapture)$|Capture$/i,d=0,f=F(!1),p=F(!0);var z,B,V,H,U=0,W=[],G=t,K=G.__b,q=G.__r,J=G.diffed,oe=G.__c,se=G.unmount,ce=G.__;function le(e,t){G.__h&&G.__h(B,e,U||t),U=0;var n=B.__H||(B.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function Y(e){return U=1,ue(he,e)}function ue(e,t,n){var r=le(z++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):he(void 0,t),function(e){var t=r.__N?r.__N[0]:r.__[0],n=r.t(t,e);t!==n&&(r.__N=[n,r.__[1]],r.__c.setState({}))}],r.__c=B,!B.__f)){var i=function(e,t,n){if(!r.__c.__H)return!0;var i=!1,o=r.__c.props!==e;if(r.__c.__H.__.some(function(e){if(e.__N){i=!0;var t=e.__[0];e.__=e.__N,e.__N=void 0,t!==e.__[0]&&(o=!0)}}),a){var s=a.call(this,e,t,n);return i?s||o:s}return!i||o};B.__f=!0;var a=B.shouldComponentUpdate,o=B.componentWillUpdate;B.componentWillUpdate=function(e,t,n){if(this.__e){var r=a;a=void 0,i(e,t,n),a=r}o&&o.call(this,e,t,n)},B.shouldComponentUpdate=i}return r.__N||r.__}function de(e,t){var n=le(z++,3);!G.__s&&me(n.__H,t)&&(n.__=e,n.u=t,B.__H.__h.push(n))}function fe(){for(var e;e=W.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Z),t.__h.some(Q),t.__h=[]}catch(n){t.__h=[],G.__e(n,e.__v)}}}G.__b=function(e){B=null,K&&K(e)},G.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),ce&&ce(e,t)},G.__r=function(e){q&&q(e),z=0;var t=(B=e.__c).__H;t&&(V===B?(t.__h=[],B.__h=[],t.__.some(function(e){e.__N&&(e.__=e.__N),e.u=e.__N=void 0})):(t.__h.some(Z),t.__h.some(Q),t.__h=[],z=0)),V=B},G.diffed=function(e){J&&J(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(W.push(t)!==1&&H===G.requestAnimationFrame||((H=G.requestAnimationFrame)||pe)(fe)),t.__H.__.some(function(e){e.u&&=(e.__H=e.u,void 0)})),V=B=null},G.__c=function(e,t){t.some(function(e){try{e.__h.some(Z),e.__h=e.__h.filter(function(e){return!e.__||Q(e)})}catch(n){t.some(function(e){e.__h&&=[]}),t=[],G.__e(n,e.__v)}}),oe&&oe(e,t)},G.unmount=function(e){se&&se(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(e){try{Z(e)}catch(e){t=e}}),n.__H=void 0,t&&G.__e(t,n.__v))};var X=typeof requestAnimationFrame==`function`;function pe(e){var t,n=function(){clearTimeout(r),X&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);X&&(t=requestAnimationFrame(n))}function Z(e){var t=B,n=e.__c;typeof n==`function`&&(e.__c=void 0,n()),B=t}function Q(e){var t=B;e.__c=e.__(),B=t}function me(e,t){return!e||e.length!==t.length||t.some(function(t,n){return t!==e[n]})}function he(e,t){return typeof t==`function`?t(e):t}var ge=[`queued`,`skipped`,`done`,`error`],_e=async(e,t={})=>{let n=await fetch(e,{...t,redirect:`manual`,headers:{Accept:`application/json`,...t.headers}});if(n.type===`opaqueredirect`)throw location.reload(),Error(`session expired`);let r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error??`HTTP ${n.status}`);return r},ve={me:()=>_e(`/api/v1/me`),queues:()=>_e(`/api/v1/queues`)},ye=0;Array.isArray;function $(e,n,r,i,a,o){n||={};var s,c,l=n;if(`ref`in l)for(c in l={},n)c==`ref`?s=n[c]:l[c]=n[c];var u={type:e,props:l,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--ye,__i:-1,__u:0,__source:a,__self:o};if(typeof e==`function`&&(s=e.defaultProps))for(c in s)l[c]===void 0&&(l[c]=s[c]);return t.vnode&&t.vnode(u),u}ae($(()=>{let[e,t]=Y(null),[n,r]=Y(null),[i,a]=Y(null);return de(()=>{Promise.all([ve.me(),ve.queues()]).then(([e,n])=>{t(e),r(n)}).catch(e=>a(e instanceof Error?e.message:String(e)))},[]),$(`main`,{children:[$(`header`,{children:[$(`h1`,{children:`Print Backlog`}),$(`span`,{class:`muted`,children:e?`${e.user} · v${e.version}`:``})]}),i&&$(`p`,{class:`error`,children:i}),n?.map(e=>$(`section`,{class:`queue`,children:[$(`h2`,{children:e.name}),$(`ul`,{class:`counts`,children:ge.map(t=>$(`li`,{class:`status-${t}`,children:[t,` `,$(`b`,{children:e.counts[t]})]},t))})]},e.id))]})},{}),document.getElementById(`app`));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--bg:#fff;--fg:#0f172a;--muted:#64748b;--line:#e2e8f0;--accent:#2563eb;--error:#dc2626;color:var(--fg);background:var(--bg);font-family:system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#0b1120;--fg:#e2e8f0;--muted:#94a3b8;--line:#1e293b;--accent:#60a5fa;--error:#f87171}}body{background:var(--bg);margin:0}main{max-width:60rem;margin:0 auto;padding:1rem}header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;display:flex}h1{font-size:1.25rem}h2{font-size:1rem}.muted{color:var(--muted)}.error{color:var(--error)}.counts{flex-wrap:wrap;gap:.5rem;padding:0;list-style:none;display:flex}.counts li{border:1px solid var(--line);border-radius:999px;padding:.2rem .7rem}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { HookAck } from "../../shared/types.js";
|
|
2
|
-
import type { Sql } from "../db.js";
|
|
3
|
-
import type { Ctx } from "../http.js";
|
|
4
|
-
/**
|
|
5
|
-
* Store the event. Matching it to an item and applying the status rule comes
|
|
6
|
-
* with PB6 (docs/plan.md §3.9); until then every event stays open.
|
|
7
|
-
*/
|
|
8
|
-
export declare const bambuddyHook: (sql: Sql) => ({ body }: Ctx) => Promise<HookAck>;
|
|
9
|
-
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/server/api/hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAiBtC;;;GAGG;AACH,eAAO,MAAM,YAAY,GACtB,KAAK,GAAG,MACF,UAAU,GAAG,KAAG,OAAO,CAAC,OAAO,CAQrC,CAAC"}
|
package/dist/server/api/hooks.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
/**
|
|
3
|
-
* Bambuddy's "Webhook" notification provider, payload format "generic":
|
|
4
|
-
* {title, message, timestamp, source, event, printer, filename, status?,
|
|
5
|
-
* duration?, filament_grams?, reason?, …}. Only the fields the matching needs
|
|
6
|
-
* are typed; the whole payload is kept as it came.
|
|
7
|
-
*/
|
|
8
|
-
const payloadSchema = z
|
|
9
|
-
.object({
|
|
10
|
-
event: z.string().min(1).max(100),
|
|
11
|
-
filename: z.string().max(1000).optional(),
|
|
12
|
-
printer: z.string().max(200).optional(),
|
|
13
|
-
status: z.string().max(100).optional(),
|
|
14
|
-
})
|
|
15
|
-
.loose();
|
|
16
|
-
/**
|
|
17
|
-
* Store the event. Matching it to an item and applying the status rule comes
|
|
18
|
-
* with PB6 (docs/plan.md §3.9); until then every event stays open.
|
|
19
|
-
*/
|
|
20
|
-
export const bambuddyHook = (sql) => async ({ body }) => {
|
|
21
|
-
const p = payloadSchema.parse(body);
|
|
22
|
-
const [row] = await sql `
|
|
23
|
-
INSERT INTO backlog.print_event (event, filename, printer, status, payload)
|
|
24
|
-
VALUES (${p.event}, ${p.filename ?? null}, ${p.printer ?? null}, ${p.status ?? null}, ${sql.json(body)})
|
|
25
|
-
RETURNING id
|
|
26
|
-
`;
|
|
27
|
-
return { stored: true, id: Number(row.id) };
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/server/api/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GACvB,CAAC,GAAQ,EAAE,EAAE,CACb,KAAK,EAAE,EAAE,IAAI,EAAO,EAAoB,EAAE;IACxC,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAkB;;gBAE7B,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAa,CAAC;;KAEhH,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC,CAAC"}
|