@jucie.io/engine 1.1.40 → 1.1.42

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.
@@ -1,2 +1,2 @@
1
1
  var u={PRIMITIVE:0,OBJECT:1,ARRAY:2,RESERVED:3},A=class s{constructor(e){this.flags=0,e!==void 0&&(typeof e=="function"?this.flags|=1:typeof e=="object"&&e!==null&&!Array.isArray(e)?(this._children=new Map(Object.entries(e).map(([t,r])=>[t,new s(r)])),this.flags|=16,this.originalType=u.OBJECT):Array.isArray(e)?(this._children=new Map(e.map((t,r)=>[r,new s(t)])),this.flags|=16,this.originalType=u.ARRAY):(this.value=e,this.originalType=u.PRIMITIVE))}get isFunction(){return(this.flags&1)!==0}set isFunction(e){this.flags=e?this.flags|1:this.flags&-2}get isSetOnce(){return(this.flags&2)!==0}set isSetOnce(e){this.flags=e?this.flags|2:this.flags&-3}get cached(){return(this.flags&4)!==0}set cached(e){this.flags=e?this.flags|4:this.flags&-5}get executed(){return(this.flags&8)!==0}set executed(e){this.flags=e?this.flags|8:this.flags&-9}get hasChildrenFlag(){return(this.flags&16)!==0}set hasChildrenFlag(e){this.flags=e?this.flags|16:this.flags&-17}get isFixed(){return(this.flags&32)!==0}set isFixed(e){this.flags=e?this.flags|32:this.flags&-33}get originalType(){return this.flags>>6&3}set originalType(e){this.flags=this.flags&-193|(e&3)<<6}get children(){return this._children||(this._children=new Map,this.hasChildrenFlag=!0),this._children}hasChildren(){return this.hasChildrenFlag&&this._children&&this._children.size>0}get cachedResult(){return this._cachedResult}set cachedResult(e){this._cachedResult=e}get cachedAt(){return this._cachedAt}set cachedAt(e){this._cachedAt=e}get(e){let t=e.shift();if(t===void 0){if(this.flags&1){if((this.flags&6)===6)return this.cachedResult;let r=this.value();return this.flags&2&&(this.flags|=4,this.cachedResult=r,this.cachedAt=Date.now()),this.flags|=8,r}return this.value!==void 0?this.value:this.hasChildren()?this._reconstructFromChildren():void 0}if(this._children?.has(t))return this._children.get(t).get(e)}set(e,t){let r=e.shift();if(r===void 0){if(this.isFixed)throw new Error("Cannot overwrite fixed value at path. Use clearFixed() first if you need to modify it.");return typeof t=="object"&&t!==null&&!Array.isArray(t)&&typeof t!="function"?this._syncObjectChildren(t):Array.isArray(t)?this._syncArrayChildren(t):(this.value=t,this.flags=typeof t=="function"?1:0,this.originalType=u.PRIMITIVE),this}let n=this.children;return n.has(r)||n.set(r,new s),n.get(r).set(e,t),this}setOnce(e,t){let r=e.shift();if(r===void 0){if(this.isFixed)throw new Error("Cannot overwrite fixed value at path. Use clearFixed() first if you need to modify it.");return typeof t=="object"&&t!==null&&!Array.isArray(t)&&typeof t!="function"?(this._syncObjectChildren(t),this.flags=this.flags|2):Array.isArray(t)?(this._syncArrayChildren(t),this.flags=this.flags|2):(this.value=t,this.flags=typeof t=="function"?3:2,this.originalType=u.PRIMITIVE),this}let n=this.children;return n.has(r)||n.set(r,new s),n.get(r).setOnce(e,t),this}has(e){let t=e.shift();return t===void 0?this.value!==void 0:this._children?.has(t)?this._children.get(t).has(e):!1}remove(e){let t=e.shift();return t===void 0?(this.value=void 0,this.flags=this.flags&-16,this):(this._children?.has(t)&&this._children.get(t).remove(e),this)}clearCache(e){let t=e.shift();return t===void 0?(this.flags=this.flags&-5,this.cachedResult=null,this.cachedAt=null,this):(this._children?.has(t)&&this._children.get(t).clearCache(e),this)}fixed(e,t){let r=e.shift();if(r===void 0){if(this.value!==void 0&&this.isFixed)throw new Error("Value at path is already fixed and cannot be changed. Use clearFixed() first if needed.");return this.value=t,this.flags=(typeof t=="function"?1:0)|32,this}let n=this.children;return n.has(r)||n.set(r,new s),n.get(r).fixed(e,t),this}clearFixed(e){let t=e.shift();return t===void 0?this.isFixed?(this.flags=this.flags&-33,this):(console.warn("Attempted to clear fixed flag on non-fixed value"),this):(this._children?.has(t)&&this._children.get(t).clearFixed(e),this)}isFixedValue(e){let t=e.shift();return t===void 0?this.isFixed:this._children?.has(t)?this._children.get(t).isFixedValue(e):!1}_syncObjectChildren(e){let t=new Set(Object.keys(e)),r=new Set(this.children.keys());for(let n of r)t.has(n)||this.children.delete(n);for(let[n,i]of Object.entries(e))if(this.children.has(n)||this.children.set(n,new s),typeof i=="object"&&i!==null&&!Array.isArray(i)&&typeof i!="function")this.children.get(n)._syncObjectChildren(i);else if(Array.isArray(i))this.children.get(n)._syncArrayChildren(i);else{let o=this.children.get(n);o.value=i,o.flags=typeof i=="function"?1:0}this.value=void 0,this.flags=this.flags&-2,this.originalType=u.OBJECT}_syncArrayChildren(e){let t=new Set(e.map((n,i)=>i)),r=new Set(this.children.keys());for(let n of r)typeof n=="number"&&!t.has(n)&&this.children.delete(n);for(let n=0;n<e.length;n++){let i=e[n];if(this.children.has(n)||this.children.set(n,new s),typeof i=="object"&&i!==null&&!Array.isArray(i)&&typeof i!="function")this.children.get(n)._syncObjectChildren(i);else if(Array.isArray(i))this.children.get(n)._syncArrayChildren(i);else{let o=this.children.get(n);o.value=i,o.flags=typeof i=="function"?1:0}}this.value=void 0,this.flags=this.flags&-2,this.originalType=u.ARRAY}_reconstructFromChildren(){if(!this._children||this._children.size===0)return;if(this.originalType===u.ARRAY){let t=[];for(let[r,n]of this._children)typeof r=="number"&&(t[r]=n.get([]));return t}else{let t={};for(let[r,n]of this._children)t[r]=n.get([]);return t}}},x=class s{static create(e){return new s(e)}constructor(e={}){return this.load(e)}load(e){return this.root=new A(e),this}get(e){let t=Array.isArray(e)?[...e]:[e];return this.root.get(t)}update(e,t){let r=Array.isArray(e)?[...e]:[e],n=this.root.get([...r]),i=t(n);return this.root.set([...r],i),this}set(e,t){let r=Array.isArray(e)?[...e]:[e];return this.root.set(r,t),this}setOnce(e,t){let r=Array.isArray(e)?[...e]:[e];return this.root.setOnce(r,t),this}fixed(e,t){let r=Array.isArray(e)?[...e]:[e];return this.root.fixed(r,t),this}has(e){let t=Array.isArray(e)?[...e]:[e];return this.root.has(t)}remove(e){let t=Array.isArray(e)?[...e]:[e];return this.root.remove(t),this}clearCache(e){let t=Array.isArray(e)?[...e]:[e];return this.root.clearCache(t),this}clearFixed(e){let t=Array.isArray(e)?[...e]:[e];return this.root.clearFixed(t),this}isFixed(e){let t=Array.isArray(e)?[...e]:[e];return this.root.isFixedValue(t)}export(){return this._exportNode(this.root)}static import(e){let t=new s;return t.root=t._importNode(e),t}_exportNode(e){let t={flags:e.flags};if(e.isFunction)t.type="function",t.skipped=!0;else if(e.hasChildren()){t.type="map",t.value=[];for(let[r,n]of e._children)t.value.push([r,this._exportNode(n)]);e.value!==void 0&&(t.nodeValue=e.value)}else e.value!==void 0?(t.type="primitive",t.value=e.value):t.type="empty";return t}_importNode(e){let t=new A;switch(t.flags=e.flags||0,e.type){case"function":t.value=void 0,t.flags=t.flags&-16;break;case"primitive":t.value=e.value;break;case"map":if(e.value&&e.value.length>0){t._children=new Map;for(let[r,n]of e.value){let i=typeof r=="string"&&/^\d+$/.test(r)?parseInt(r,10):r;t._children.set(i,this._importNode(n))}t.hasChildrenFlag=!0}e.nodeValue!==void 0&&(t.value=e.nodeValue);break;case"empty":default:break}return t}};var d=Object.freeze(Object.create(null));function V(s){if(globalThis.queueMicrotask&&typeof globalThis.queueMicrotask=="function"){globalThis.queueMicrotask(s);return}setTimeout(s,0)}var _=class{#t;#e;constructor(e,t){this.#t=e,this.#e=t}on(e,t){return this.#e.subscribe(e,d,this.#t,t)}once(e,t){return this.#e.once(e,d,this.#t,t)}broadcast(e,...t){this.#e.publish(e,this.#t,d,t)}from(e){return{subscribe:(t,r)=>this.#e.subscribe(t,e,this.#t,r),once:(t,r)=>this.#e.once(t,e,this.#t,r)}}to(e){return{publish:(t,...r)=>this.#e.publish(t,this.#t,e,r),publishAsync:(t,...r)=>this.#e.publishAsync(t,this.#t,e,r)}}},b=class s{#t=new WeakMap;#e=new Map;#r=null;static create(e={}){return new s(e)}constructor({onError:e=null}={}){this.#r=e,this.createChannel(d)}channel(e){return this.createChannel(e)}createChannel(e){if(this.#t.has(e))return this.#t.get(e);let t=new _(e,this);return this.#t.set(e,t),t}#n(e){let t=this.#e.get(e);return t||(t=new Set,this.#e.set(e,t)),t}static#s(e,t){return e===d||t===d||e===t}static#i(e,t,r,n){return s.#s(e,r)&&s.#s(t,n)}subscribe(e,t,r,n){let i={from:t,to:r,handler:n};return this.#n(e).add(i),()=>{let o=this.#e.get(e);o&&o.delete(i)}}once(e,t,r,n){let i=null,o=c=>{try{n(c)}finally{i&&i()}};return i=this.subscribe(e,t,r,o),i}offAllFor(e){for(let t of this.#e.values())for(let r of Array.from(t))(r.from===e||r.to===e)&&t.delete(r)}listenerCount(e){let t=this.#e.get(e);return t?t.size:0}#o(e,t,r,n){let i=this.#e.get(e);if(!(!i||i.size===0)){for(let o of i)if(o.to!==t&&s.#i(t,r,o.from,o.to))try{o.handler(...n)}catch(c){this.#r&&this.#r(c,{event:e,from:t,to:r,listener:o})}}}publish(e,t,r,n){this.#o(e,t,r,n)}publishAsync(e,t,r,n){V(()=>this.#o(e,t,r,n))}broadcast(e,t,r){this.publish(e,t,d,r)}};var y={trace:10,debug:20,info:30,warn:40,error:50,silent:90},E=class s{static create(e={}){return new s(e)}#t;#e;#r;constructor({level:e="info",sinks:t=[],base:r={}}={}){this.#t=y[e]??y.info,this.#e=t,this.#r=r}setLevel(e){this.#t=y[e]??this.#t}child(e={},t=[]){return new s({level:this.level,sinks:[...this.#e,...t],base:{...this.#r,...e}})}get level(){return Object.entries(y).find(([e,t])=>t===this.#t)?.[0]??"info"}log(e,t,r={}){if((y[e]??y.info)<this.#t)return;let i={t:Date.now(),level:e,msg:t,...this.#r,...r};for(let o of this.#e)o(i)}trace(e,t){this.log("trace",e,t)}debug(e,t){this.log("debug",e,t)}info(e,t){this.log("info",e,t)}warn(e,t){this.log("warn",e,t)}error(e,t){this.log("error",e,t)}progress(e,t,r="",n={}){let i={t:Date.now(),type:"progress",level:"info",msg:r,current:e,total:t,message:r,percentage:Math.round(e/t*100),...this.#r,...n};for(let o of this.#e)o(i)}metric(e,t,r="ms",n={}){let i={t:Date.now(),type:"metric",level:"info",msg:`${e}: ${t}${r}`,name:e,value:t,unit:r,...this.#r,...n};for(let o of this.#e)o(i)}},j=s=>{let{t:e,level:t,msg:r,ns:n,...i}=s,o=new Date(e).toISOString(),c=t==="error"?console.error:t==="warn"?console.warn:console.log,a=`${n?`[${n}] `:""}${r}`;Object.keys(i).length>0?c(`[${o}] ${t.toUpperCase()} ${a}`,i):c(`[${o}] ${t.toUpperCase()} ${a}`)},N=(s=1e3)=>{let e=[];return{sink:t=>{e.push(t),e.length>s&&e.shift()},read:()=>e.slice(),clear:()=>{e.length=0}}};var I=new WeakMap,k=s=>{if(I.has(s))return I.get(s)};var w=s=>s&&s.constructor&&s.constructor.name==="AsyncFunction",M=(s,e)=>w(e)||s.some(w);var C=(s,e)=>e.length===0?s:e.length===1&&Array.isArray(e[0])?e[0]:e;var p=s=>s?Array.isArray(s)?s:[s]:[];var v=new Set(["__proto__","prototype","constructor"]),L=new Set(["use","install","uninstall","relay","state","debug"]),O=64,F=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function R(s,e="key"){if(v.has(s))throw new Error(`Illegal key "${s}" in ${e}`)}function g(s){if(R(s,"namespace"),typeof s!="string")throw new Error(`Namespace must be a string, got ${typeof s}`);if(!F.test(s))throw new Error(`Invalid namespace "${s}". Must be a valid JS identifier`);if(s.length>O)throw new Error(`Namespace "${s}" too long (max ${O} chars)`);if(L.has(s))throw new Error(`Namespace "${s}" is reserved`);return s}function S(s,e,t="member"){if(R(s,`${t}:${e}`),typeof s!="string")throw new Error(`${t} name in ${e} must be a string`);if(!F.test(s))throw new Error(`Invalid ${t} name "${s}" in ${e}`);if(s.length>O)throw new Error(`${t} name "${s}" in ${e} too long (max ${O})`);return s}function T(s,e){if(!e||typeof e!="object")return e||s;if(!s||typeof s!="object")return e;let t={...s};for(let r in e)e.hasOwnProperty(r)&&(e[r]&&typeof e[r]=="object"&&!Array.isArray(e[r])&&s[r]&&typeof s[r]=="object"&&!Array.isArray(s[r])?t[r]=T(s[r],e[r]):t[r]=e[r]);return t}var D=()=>{let s=["DEVELOPMENT","TEST","DEV"];return typeof process<"u"&&process?.env?.NODE_ENV?s.includes(process.env.NODE_ENV.toUpperCase()):typeof globalThis<"u"&&globalThis.__ENV__?.NODE_ENV?s.includes(globalThis.__ENV__.NODE_ENV.toUpperCase()):!1};var P=class s{static options={};static create(e={}){return new s(e,s.options)}#t=new WeakMap;#e=new WeakMap;#r=new WeakMap;#n=new WeakMap;#s=new WeakMap;#i=void 0;#o={};#a=void 0;#l=void 0;#f=void 0;static configure(e){return e={...s.options,...e},{create:(t={})=>new s(t,e)}}constructor(e={},t=s.options){this.#i={...s.options,...t},this.#o={...e};for(let[r,n]of Object.entries(this.#o))Object.defineProperty(this,r,{value:n,enumerable:!0,configurable:!1,writable:!1});this.#f=x.create(),this.#a=b.create(),this.#l=E.create({level:D()?"debug":"info",sinks:[j,N(2e3).sink]})}get cache(){return this.#f}get relay(){return this.#a}get log(){return this.#l}use(...e){return this.#y(e,this)}install(...e){return this.#u(this,e)}#u(e,t){try{for(let n of t){if(!n.manifest?.namespace||!n.install)throw new Error(`${n.manifest?.name??"<unknown service>"} must have a namespace and install method`);if(Object.prototype.hasOwnProperty.call(e,n.manifest.namespace))throw new Error(`${n.manifest.namespace} already exists`);let i=T(this.#i||{},n.config||n.manifest.defaults||{}),o=this.#c(e,n.manifest.namespace),c=this.#m(e,n.manifest.namespace,o,i,n.manifest);if(n.manifest.dependencies?.length){let a=n.manifest.dependencies.filter(f=>f.unique),l=n.manifest.dependencies.filter(f=>!f.unique&&!Object.prototype.hasOwnProperty.call(e,f.manifest.namespace));a.length>0&&this.#u(c,a),l.length>0&&this.#u(e,l)}let h=this.#h(e,n.manifest.namespace,o,i,n.manifest);this.#y(n.install(h,i),e)}let r=this.#n.get(e);if(r?.size){for(let[n,i]of r)try{i()}finally{r.delete(n)}this.#n.delete(e)}return e}catch(r){throw r}}uninstall(...e){return this.#b(this,e)}#b(e,t){let r=this.#s.get(e),n=this.#t.get(e),i=this.#e.get(e),o=this.#d(e);for(let c of t)if(r?.get(c)?.(),r?.delete(c),o?.delete(c),this.#n.get(e)?.delete(c),Object.prototype.hasOwnProperty.call(e,c)&&delete e[c],n?.delete(c),i)for(let h of i.values())Object.prototype.hasOwnProperty.call(h,c)&&delete h[c];return r&&r.size===0&&this.#s.delete(e),this}#y(e,t=this){for(let r of e)if(r)switch(k(r)){case"MIDDLEWARE":this.#x(r,t);break;case"GETTERS":this.#A(r,t);break;case"ACTIONS":this.#w(r,t);break;case"INITIALIZE":this.#E(r,t);break;case"UNINSTALL":this.#C(r,t);break;default:throw new Error(`Unknown definition type: ${k(r)}`)}return this}#w(e,t=this){let r=g(e._name),n=this.#c(t,r),i=this.#h(t,r,n),o=e(i),c=this.#d(t).get(r)||[];for(let[h,a]of Object.entries(o)){if(h=S(h,r,"action"),Object.prototype.hasOwnProperty.call(n,h))throw new Error(`Action "${r}.${h}" already exists on this target`);let l=this.#O(r,h,a,n);if(c.length===0){n[h]=l;continue}let f=this.#$(c,l);n[h]=(...m)=>f(h,{namespace:r,action:h,args:m})}return this.#p(t,r,n)}#A(e,t=this){let r=g(e._name),n=this.#c(t,r),i=this.#h(t,r,n),o=e(i);for(let[c,h]of Object.entries(o)){S(c,r,"getter");let a=h.bind(n);Object.defineProperty(n,c,{get:()=>a(),enumerable:!0,configurable:!1})}return this.#p(t,r,n)}#x(e,t=this){let r=g(e._name),n=this.#c(t,r),i=this.#h(t,r,n),o=e(i),c=this.#d(t),h=c.get(r)||[],a=p(o).map(l=>{if(typeof l!="function")throw new Error("Middleware must be a function");return l});return c.set(r,h.concat(a)),this}#E(e,t=this){let r=g(e._name),n=this.#c(t,r),i=this.#h(t,r,n),o=()=>e(i),c=this.#n.get(t);return c||(c=new Map,this.#n.set(t,c)),c.set(r,o),this}#C(e,t=this){let r=g(e._name),n=this.#c(t,r),i=this.#h(t,r,n),o=()=>e(i),c=this.#s.get(t);return c||(c=new Map,this.#s.set(t,c)),c.set(r,o),this}#p(e,t,r){return Object.prototype.hasOwnProperty.call(e,t)?r=e[t]:Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!1}),this.#t.get(e)?.set(t,r),e}#O(e,t,r,n){let i=r.bind(n);return w(i)?async(...o)=>{try{return await i(...o)}catch(c){throw c.action=t,c.namespace=e,console.error(`Error in action "${e}.${t}":`,c),c}}:(...o)=>{try{return i(...o)}catch(c){throw c.action=t,c.namespace=e,console.error(`Error in action "${e}.${t}":`,c),c}}}#$(e,t){return M(p(e),t)?this.#k(e,t):this.#_(e,t)}#_(e,t){let r=p(e);return(n,i)=>{let o=-1,c=(h,a)=>{if(h<=o)throw new Error("next() called multiple times");o=h;let l=r[h];if(!l)return t(...a);let f={...i,args:a};return this.#g(l,n,f,(...m)=>{let $=C(a,m);return c(h+1,$)})};return c(0,i.args)}}#k(e,t){let r=p(e);return async(n,i)=>{let o=-1,c=async(h,a)=>{if(h<=o)throw new Error("next() called multiple times");o=h;let l=r[h];if(!l)return await t(...a);let f={...i,args:a};return await this.#g(l,n,f,(...m)=>{let $=C(a,m);return c(h+1,$)})};return c(0,i.args)}}#g(e,t,r,n){try{return e(t,r,n)}catch(i){throw i.middleware=e.name||"<anon>",i.action=t,i}}#d(e){let t=this.#r.get(e);return t||(t=new Map,this.#r.set(e,t)),t}#c(e,t){let r=this.#t.get(e);if(r||(r=new Map,this.#t.set(e,r)),r.has(t))return r.get(t);let n=Object.create(null);return r.set(t,n),n}#m(e,t,r,n=this.#i||{},i={}){let o=this.#e.get(e);if(o||(o=new Map,this.#e.set(e,o)),o.has(t))return o.get(t);let c={...this.#o,log:this.#l.child({ns:t},i.log?.sinks||[]),relay:this.#a.createChannel(r),cache:this.#f,config:n},h=new Proxy(c,{get(a,l,f){return l in a?Reflect.get(a,l,f):Reflect.get(e,l,f)},has(a,l){return l in a||l in e}});return o.set(t,h),h}#h(e,t,r,n=this.#i||{},i={}){return(...o)=>{let c=this.#m(e,t,r,n,i);if(!o||o.length===0)return c;if(o.length===1)return c[o[0]];let h=new Array(o.length);for(let a=0;a<o.length;a++)h[a]=c[o[a]];return h}}};export{P as Engine};
2
- //# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=main.js.map
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@jucie.io/engine",
3
- "version": "1.1.40",
3
+ "version": "1.1.42",
4
4
  "description": "A powerful, extensible service engine with middleware, async operations, and lifecycle management (includes core + services)",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
6
+ "main": "./dist/main.js",
7
+ "types": "./dist/types.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
10
+ "types": "./dist/types.d.ts",
11
+ "import": "./dist/main.js"
12
12
  },
13
- "./command-manager": "./dist/services/command-manager/index.js",
14
- "./message": "./dist/services/message/index.js",
15
- "./painter": "./dist/services/painter/index.js",
16
- "./server": "./dist/services/server/index.js",
17
- "./socket": "./dist/services/socket/index.js",
18
- "./storage": "./dist/services/storage/index.js",
19
- "./worker": "./dist/services/worker/index.js"
13
+ "./command-manager": "./dist/services/command-manager.js",
14
+ "./message": "./dist/services/message.js",
15
+ "./painter": "./dist/services/painter.js",
16
+ "./server": "./dist/services/server.js",
17
+ "./socket": "./dist/services/socket.js",
18
+ "./storage": "./dist/services/storage.js",
19
+ "./worker": "./dist/services/worker.js"
20
20
  },
21
21
  "files": [
22
22
  "dist/",
File without changes