zeed 0.28.9 → 0.28.11

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.
Files changed (150) hide show
  1. package/dist/{chunk-C3QCEKO3.js → chunk-25WKPUPK.js} +2 -2
  2. package/dist/{chunk-E3TYSVBQ.js → chunk-37WX4OII.js} +2 -2
  3. package/dist/{chunk-PIL7UROH.js → chunk-3DMNIQDX.js} +2 -2
  4. package/dist/chunk-3DMNIQDX.js.map +1 -0
  5. package/dist/{chunk-DJINTZFD.cjs → chunk-5BBJL6OC.cjs} +2 -2
  6. package/dist/{chunk-DJINTZFD.cjs.map → chunk-5BBJL6OC.cjs.map} +1 -1
  7. package/dist/{chunk-E2ATUVME.cjs → chunk-7SVWAR6H.cjs} +1 -1
  8. package/dist/chunk-7SVWAR6H.cjs.map +1 -0
  9. package/dist/{chunk-R7USC6WF.cjs → chunk-BOM3HKWA.cjs} +2 -2
  10. package/dist/{chunk-R7USC6WF.cjs.map → chunk-BOM3HKWA.cjs.map} +1 -1
  11. package/dist/{chunk-5GO3AK4J.cjs → chunk-BPESVGQQ.cjs} +2 -2
  12. package/dist/{chunk-5GO3AK4J.cjs.map → chunk-BPESVGQQ.cjs.map} +1 -1
  13. package/dist/{chunk-SA5MSIRV.cjs → chunk-DIIKUZU5.cjs} +2 -2
  14. package/dist/{chunk-SA5MSIRV.cjs.map → chunk-DIIKUZU5.cjs.map} +1 -1
  15. package/dist/{chunk-N7JQO6FG.cjs → chunk-DY6RMJJK.cjs} +2 -2
  16. package/dist/{chunk-N7JQO6FG.cjs.map → chunk-DY6RMJJK.cjs.map} +1 -1
  17. package/dist/{chunk-QV4LM6ZT.cjs → chunk-GEMIICZ3.cjs} +2 -2
  18. package/dist/{chunk-QV4LM6ZT.cjs.map → chunk-GEMIICZ3.cjs.map} +1 -1
  19. package/dist/{chunk-M3BNDEQI.js → chunk-GLXW4DRV.js} +2 -2
  20. package/dist/{chunk-3U2QR5SP.js → chunk-GMJXOP7Z.js} +2 -2
  21. package/dist/{chunk-FPI3N3JC.js → chunk-GO7IQI3W.js} +1 -1
  22. package/dist/chunk-GO7IQI3W.js.map +1 -0
  23. package/dist/{chunk-WVAB6E4Q.js → chunk-KBV6B6VE.js} +2 -2
  24. package/dist/{chunk-T2E5T2ZQ.js → chunk-KGZLR63U.js} +2 -2
  25. package/dist/{chunk-ZQYZWX6Y.cjs → chunk-KQGJRV27.cjs} +1 -1
  26. package/dist/chunk-KQGJRV27.cjs.map +1 -0
  27. package/dist/{chunk-AAHTORMI.js → chunk-LG6Q6ZYH.js} +2 -2
  28. package/dist/chunk-MPPDQFG7.js +3 -0
  29. package/dist/{chunk-JBJQF5IR.js.map → chunk-MPPDQFG7.js.map} +1 -1
  30. package/dist/{chunk-C4UETAZW.cjs → chunk-NIOT5ALA.cjs} +2 -2
  31. package/dist/{chunk-C4UETAZW.cjs.map → chunk-NIOT5ALA.cjs.map} +1 -1
  32. package/dist/{chunk-GSJ54UTH.cjs → chunk-P67NJXJB.cjs} +2 -2
  33. package/dist/{chunk-GSJ54UTH.cjs.map → chunk-P67NJXJB.cjs.map} +1 -1
  34. package/dist/{chunk-GEV3TRDQ.js → chunk-PBG65NPI.js} +2 -2
  35. package/dist/{chunk-YFV2QQVE.cjs → chunk-QZD36HZL.cjs} +2 -2
  36. package/dist/{chunk-YFV2QQVE.cjs.map → chunk-QZD36HZL.cjs.map} +1 -1
  37. package/dist/{chunk-RYOPEKWG.cjs → chunk-RCT2GXKQ.cjs} +2 -2
  38. package/dist/{chunk-RYOPEKWG.cjs.map → chunk-RCT2GXKQ.cjs.map} +1 -1
  39. package/dist/chunk-RWZACGJO.js +4 -0
  40. package/dist/chunk-RWZACGJO.js.map +1 -0
  41. package/dist/{chunk-TGIYHPPX.js → chunk-S2TSPHHP.js} +2 -2
  42. package/dist/{chunk-KTKS43F6.js → chunk-SUPJG4Y2.js} +2 -2
  43. package/dist/{chunk-5FLXL7Q3.cjs → chunk-X375623D.cjs} +2 -2
  44. package/dist/{chunk-5FLXL7Q3.cjs.map → chunk-X375623D.cjs.map} +1 -1
  45. package/dist/chunk-ZZWW5TC5.cjs +4 -0
  46. package/dist/chunk-ZZWW5TC5.cjs.map +1 -0
  47. package/dist/common/data/index.cjs +1 -1
  48. package/dist/common/data/index.cjs.map +1 -1
  49. package/dist/common/data/index.js +1 -1
  50. package/dist/common/exec/index.cjs +1 -1
  51. package/dist/common/exec/index.cjs.map +1 -1
  52. package/dist/common/exec/index.d.cts +1 -0
  53. package/dist/common/exec/index.d.ts +1 -0
  54. package/dist/common/exec/index.js +1 -1
  55. package/dist/common/exec/pool.cjs +1 -1
  56. package/dist/common/exec/pool.d.cts +1 -0
  57. package/dist/common/exec/pool.d.ts +1 -0
  58. package/dist/common/exec/pool.js +1 -1
  59. package/dist/common/exec/progress.cjs +1 -1
  60. package/dist/common/exec/progress.d.cts +1 -0
  61. package/dist/common/exec/progress.d.ts +1 -0
  62. package/dist/common/exec/progress.js +1 -1
  63. package/dist/common/exec/queue.cjs +1 -1
  64. package/dist/common/exec/queue.d.cts +1 -0
  65. package/dist/common/exec/queue.d.ts +1 -0
  66. package/dist/common/exec/queue.js +1 -1
  67. package/dist/common/index.cjs +1 -1
  68. package/dist/common/index.cjs.map +1 -1
  69. package/dist/common/index.js +1 -1
  70. package/dist/common/msg/channel-debug.cjs +1 -1
  71. package/dist/common/msg/channel-debug.d.cts +1 -0
  72. package/dist/common/msg/channel-debug.d.ts +1 -0
  73. package/dist/common/msg/channel-debug.js +1 -1
  74. package/dist/common/msg/channel-local.cjs +1 -1
  75. package/dist/common/msg/channel-local.d.cts +1 -0
  76. package/dist/common/msg/channel-local.d.ts +1 -0
  77. package/dist/common/msg/channel-local.js +1 -1
  78. package/dist/common/msg/channel-resilient.cjs +1 -1
  79. package/dist/common/msg/channel-resilient.d.cts +1 -0
  80. package/dist/common/msg/channel-resilient.d.ts +1 -0
  81. package/dist/common/msg/channel-resilient.js +1 -1
  82. package/dist/common/msg/channel-wkwebview.cjs +1 -1
  83. package/dist/common/msg/channel-wkwebview.d.cts +1 -0
  84. package/dist/common/msg/channel-wkwebview.d.ts +1 -0
  85. package/dist/common/msg/channel-wkwebview.js +1 -1
  86. package/dist/common/msg/channel.cjs +1 -1
  87. package/dist/common/msg/channel.d.cts +1 -0
  88. package/dist/common/msg/channel.d.ts +1 -0
  89. package/dist/common/msg/channel.js +1 -1
  90. package/dist/common/msg/emitter.d.cts +1 -0
  91. package/dist/common/msg/emitter.d.ts +1 -0
  92. package/dist/common/msg/index.cjs +1 -1
  93. package/dist/common/msg/index.d.cts +1 -0
  94. package/dist/common/msg/index.d.ts +1 -0
  95. package/dist/common/msg/index.js +1 -1
  96. package/dist/common/msg/messages.cjs +1 -1
  97. package/dist/common/msg/messages.d.cts +1 -0
  98. package/dist/common/msg/messages.d.ts +1 -0
  99. package/dist/common/msg/messages.js +1 -1
  100. package/dist/common/msg/pubsub.cjs +1 -1
  101. package/dist/common/msg/pubsub.d.cts +1 -0
  102. package/dist/common/msg/pubsub.d.ts +1 -0
  103. package/dist/common/msg/pubsub.js +1 -1
  104. package/dist/common/schema/export-swift.cjs +1 -1
  105. package/dist/common/schema/export-swift.d.cts +1 -0
  106. package/dist/common/schema/export-swift.d.ts +1 -0
  107. package/dist/common/schema/export-swift.js +1 -1
  108. package/dist/common/schema/index.cjs +1 -1
  109. package/dist/common/schema/index.js +1 -1
  110. package/dist/common/schema/parse-args.cjs +1 -1
  111. package/dist/common/schema/parse-args.js +1 -1
  112. package/dist/common/schema/parse-env.cjs +1 -1
  113. package/dist/common/schema/parse-env.d.cts +5 -0
  114. package/dist/common/schema/parse-env.d.ts +5 -0
  115. package/dist/common/schema/parse-env.js +1 -1
  116. package/dist/common/schema/schema.cjs +1 -1
  117. package/dist/common/schema/schema.d.cts +1 -0
  118. package/dist/common/schema/schema.d.ts +1 -0
  119. package/dist/common/schema/schema.js +1 -1
  120. package/dist/common/uuid.cjs +1 -1
  121. package/dist/common/uuid.js +1 -1
  122. package/dist/index.all.cjs +1 -1
  123. package/dist/index.all.cjs.map +1 -1
  124. package/dist/index.all.js +1 -1
  125. package/dist/index.browser.cjs +1 -1
  126. package/dist/index.browser.cjs.map +1 -1
  127. package/dist/index.browser.js +1 -1
  128. package/dist/index.node.cjs +1 -1
  129. package/dist/index.node.cjs.map +1 -1
  130. package/dist/index.node.js +1 -1
  131. package/package.json +2 -1
  132. package/dist/chunk-E2ATUVME.cjs.map +0 -1
  133. package/dist/chunk-FPI3N3JC.js.map +0 -1
  134. package/dist/chunk-JBJQF5IR.js +0 -3
  135. package/dist/chunk-JZXEVNFX.cjs +0 -3
  136. package/dist/chunk-JZXEVNFX.cjs.map +0 -1
  137. package/dist/chunk-PIL7UROH.js.map +0 -1
  138. package/dist/chunk-VPNMRZML.js +0 -3
  139. package/dist/chunk-VPNMRZML.js.map +0 -1
  140. package/dist/chunk-ZQYZWX6Y.cjs.map +0 -1
  141. /package/dist/{chunk-C3QCEKO3.js.map → chunk-25WKPUPK.js.map} +0 -0
  142. /package/dist/{chunk-E3TYSVBQ.js.map → chunk-37WX4OII.js.map} +0 -0
  143. /package/dist/{chunk-M3BNDEQI.js.map → chunk-GLXW4DRV.js.map} +0 -0
  144. /package/dist/{chunk-3U2QR5SP.js.map → chunk-GMJXOP7Z.js.map} +0 -0
  145. /package/dist/{chunk-WVAB6E4Q.js.map → chunk-KBV6B6VE.js.map} +0 -0
  146. /package/dist/{chunk-T2E5T2ZQ.js.map → chunk-KGZLR63U.js.map} +0 -0
  147. /package/dist/{chunk-AAHTORMI.js.map → chunk-LG6Q6ZYH.js.map} +0 -0
  148. /package/dist/{chunk-GEV3TRDQ.js.map → chunk-PBG65NPI.js.map} +0 -0
  149. /package/dist/{chunk-TGIYHPPX.js.map → chunk-S2TSPHHP.js.map} +0 -0
  150. /package/dist/{chunk-KTKS43F6.js.map → chunk-SUPJG4Y2.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as u}from"./chunk-L32SZCS2.js";import{u as a}from"./chunk-WVAB6E4Q.js";import{c as o}from"./chunk-OTNXCBEK.js";import{g as r}from"./chunk-RZR3ECDT.js";var h=class extends u{constructor(e={}){super();this.queue=[];this.waitToFinish=[];this.countMax=0;this.countResolved=0;this.paused=!1;let{name:t=a("queue"),logLevel:i}=e;this.name=t,this.log=o(`zeed:queue:${t}`,i??9007199254740991)}async performNext(){if(this.log("performNext, queue.length =",this.queue.length),this.currentTask!=null){this.log("performNext => skip while another task is running");return}if(this.paused){this.log("performNext => skip while is paused");return}for(;this.currentTask==null&&!this.paused;){let e=this.queue.shift();if(this.log(`performNext => ${e?.name}`),e==null)break;this.countResolved===0&&this.emit("didStart",this.countMax);let{name:t,task:i,resolve:s}=e;this.currentTask=i();let n;try{this.log.info(`start task ${t}`),n=await this.currentTask,this.log(`finished task ${t} with result =`,n)}catch(l){this.log.warn("Error performing task",l)}s(n),this.currentTask=void 0,this.countResolved+=1,this.emit("didUpdate",this.countMax,this.countResolved)}for(this.queue.length===0&&(this.emit("didFinish"),this.countMax=0,this.countResolved=0);this.waitToFinish.length>0;)this.waitToFinish.shift()()}async enqueue(e,t={}){let{immediate:i=!1,name:s=a(this.name)}=t;return i?(this.log.info(`immediate execution ${s}`),await e()):(this.log(`enqueue ${s}`),new Promise(n=>{this.queue.push({name:s,task:e,resolve:n}),this.countMax+=1,this.emit("didUpdate",this.countMax,this.countResolved),this.performNext()}))}async enqueueReentrant(e,t={}){return this.enqueue(e,{immediate:this.currentTask!=null,name:t.name})}async cancelAll(e=!0){this.log("cancelAll"),this.emit("didCancel");let t=this.queue.map(i=>i.resolve);this.queue=[],t.forEach(i=>i(void 0)),await this.wait()}async pause(){this.log("pause"),this.paused=!0,await this.wait()}resume(){this.log("resume"),this.paused=!1,this.performNext()}async wait(){if(this.log("wait"),!(this.currentTask==null&&(this.queue.length===0||this.paused)))return new Promise(e=>{this.waitToFinish.push(e)})}get isPaused(){return this.paused}get hasTasks(){return this.queue.length!==0}};export{h as a};
2
- //# sourceMappingURL=chunk-C3QCEKO3.js.map
1
+ import{a as u}from"./chunk-L32SZCS2.js";import{u as a}from"./chunk-KBV6B6VE.js";import{c as o}from"./chunk-OTNXCBEK.js";import{g as r}from"./chunk-RZR3ECDT.js";var h=class extends u{constructor(e={}){super();this.queue=[];this.waitToFinish=[];this.countMax=0;this.countResolved=0;this.paused=!1;let{name:t=a("queue"),logLevel:i}=e;this.name=t,this.log=o(`zeed:queue:${t}`,i??9007199254740991)}async performNext(){if(this.log("performNext, queue.length =",this.queue.length),this.currentTask!=null){this.log("performNext => skip while another task is running");return}if(this.paused){this.log("performNext => skip while is paused");return}for(;this.currentTask==null&&!this.paused;){let e=this.queue.shift();if(this.log(`performNext => ${e?.name}`),e==null)break;this.countResolved===0&&this.emit("didStart",this.countMax);let{name:t,task:i,resolve:s}=e;this.currentTask=i();let n;try{this.log.info(`start task ${t}`),n=await this.currentTask,this.log(`finished task ${t} with result =`,n)}catch(l){this.log.warn("Error performing task",l)}s(n),this.currentTask=void 0,this.countResolved+=1,this.emit("didUpdate",this.countMax,this.countResolved)}for(this.queue.length===0&&(this.emit("didFinish"),this.countMax=0,this.countResolved=0);this.waitToFinish.length>0;)this.waitToFinish.shift()()}async enqueue(e,t={}){let{immediate:i=!1,name:s=a(this.name)}=t;return i?(this.log.info(`immediate execution ${s}`),await e()):(this.log(`enqueue ${s}`),new Promise(n=>{this.queue.push({name:s,task:e,resolve:n}),this.countMax+=1,this.emit("didUpdate",this.countMax,this.countResolved),this.performNext()}))}async enqueueReentrant(e,t={}){return this.enqueue(e,{immediate:this.currentTask!=null,name:t.name})}async cancelAll(e=!0){this.log("cancelAll"),this.emit("didCancel");let t=this.queue.map(i=>i.resolve);this.queue=[],t.forEach(i=>i(void 0)),await this.wait()}async pause(){this.log("pause"),this.paused=!0,await this.wait()}resume(){this.log("resume"),this.paused=!1,this.performNext()}async wait(){if(this.log("wait"),!(this.currentTask==null&&(this.queue.length===0||this.paused)))return new Promise(e=>{this.waitToFinish.push(e)})}get isPaused(){return this.paused}get hasTasks(){return this.queue.length!==0}};export{h as a};
2
+ //# sourceMappingURL=chunk-25WKPUPK.js.map
@@ -1,2 +1,2 @@
1
- import{a as t}from"./chunk-L32SZCS2.js";import{q as s}from"./chunk-WVAB6E4Q.js";import{b as e}from"./chunk-M7TCBWAB.js";var o=class extends t{constructor(){super(...arguments);this.id=s();this.context={};this.dispose=e()}close(){this.dispose()}};export{o as a};
2
- //# sourceMappingURL=chunk-E3TYSVBQ.js.map
1
+ import{a as t}from"./chunk-L32SZCS2.js";import{q as s}from"./chunk-KBV6B6VE.js";import{b as e}from"./chunk-M7TCBWAB.js";var o=class extends t{constructor(){super(...arguments);this.id=s();this.context={};this.dispose=e()}close(){this.dispose()}};export{o as a};
2
+ //# sourceMappingURL=chunk-37WX4OII.js.map
@@ -1,3 +1,3 @@
1
- import{e as s}from"./chunk-Z65G5XK5.js";import{a as n}from"./chunk-PM3JFDEY.js";import{b as p}from"./chunk-7PS6F2XX.js";var a={string:"String",number:"Double",int:"Int",boolean:"Bool"};function y(t,l="Example"){p(s(t),"schema should be a flat object");let i="";t._props?.swiftProtocol&&(i=`: ${t._props.swiftProtocol}`);let r=[`struct ${t._props?.swiftName??l}${i} {`];return n(t._object,(f,o)=>{let e=` var ${f}: ${a[o.type]??o.type}`;o._optional===!0&&(e+="?"),o._default!=null&&(e+=` = ${o._default}`),r.push(e)}),r.push("}"),r.join(`
1
+ import{e as n}from"./chunk-Z65G5XK5.js";import{a as s}from"./chunk-PM3JFDEY.js";import{b as p}from"./chunk-7PS6F2XX.js";var a={string:"String",number:"Double",int:"Int",boolean:"Bool"};function y(t,l="Example"){p(n(t),"schema should be a flat object");let i="";t._props?.swiftProtocol&&(i=`: ${t._props.swiftProtocol}`);let r=[`struct ${t._props?.swiftName??l}${i} {`];return s(t._object,(f,o)=>{let e=` var ${f}: ${a[o.type]??o.type}`;o._optional===!0&&(e+="?"),o._default!=null&&(e+=` = ${o._default}`),r.push(e)}),r.push("}"),r.join(`
2
2
  `)}export{y as a};
3
- //# sourceMappingURL=chunk-PIL7UROH.js.map
3
+ //# sourceMappingURL=chunk-3DMNIQDX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/schema/export-swift.ts"],"sourcesContent":["import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeProps {\n swiftName?: string\n swiftProtocol?: string\n swiftDesc?: string\n }\n}\n\nconst mapSwiftType = {\n string: 'String',\n number: 'Double',\n int: 'Int',\n boolean: 'Bool',\n} as any\n\nexport function schemaExportSwiftStruct<T>(schema: Type<T>, name: string = 'Example'): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n let protocol = ''\n if (schema._props?.swiftProtocol) {\n protocol = `: ${schema._props.swiftProtocol}`\n }\n\n const lines: string[] = [\n `struct ${schema._props?.swiftName ?? name}${protocol} {`,\n ]\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n let s = ` var ${key}: ${mapSwiftType[schema.type] ?? schema.type}`\n if (schema._optional === true)\n s += '?'\n if (schema._default != null)\n s += ` = ${schema._default}`\n lines.push(s)\n })\n\n lines.push('}')\n\n return lines.join('\\n')\n}\n"],"mappings":"wHAaA,IAAMA,EAAe,CACnB,OAAQ,SACR,OAAQ,SACR,IAAK,MACL,QAAS,MACX,EAEO,SAASC,EAA2BC,EAAiBC,EAAe,UAAmB,CAC5FC,EAAOC,EAAmBH,CAAM,EAAG,gCAAgC,EAEnE,IAAII,EAAW,GACXJ,EAAO,QAAQ,gBACjBI,EAAW,KAAKJ,EAAO,OAAO,aAAa,IAG7C,IAAMK,EAAkB,CACtB,UAAUL,EAAO,QAAQ,WAAaC,CAAI,GAAGG,CAAQ,IACvD,EAEA,OAAAE,EAAUN,EAAO,QAAU,CAACO,EAAKP,IAAsB,CACrD,IAAIQ,EAAI,SAASD,CAAG,KAAKT,EAAaE,EAAO,IAAI,GAAKA,EAAO,IAAI,GAC7DA,EAAO,YAAc,KACvBQ,GAAK,KACHR,EAAO,UAAY,OACrBQ,GAAK,MAAMR,EAAO,QAAQ,IAC5BK,EAAM,KAAKG,CAAC,CACd,CAAC,EAEDH,EAAM,KAAK,GAAG,EAEPA,EAAM,KAAK;AAAA,CAAI,CACxB","names":["mapSwiftType","schemaExportSwiftStruct","schema","name","assert","isSchemaObjectFlat","protocol","lines","objectMap","key","s"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk5FLXL7Q3cjs = require('./chunk-5FLXL7Q3.cjs');var _chunkCR2WSRFBcjs = require('./chunk-CR2WSRFB.cjs');var r=class extends _chunk5FLXL7Q3cjs.a{constructor(){super(...arguments);this.buffer=[];this.dispose=_chunkCR2WSRFBcjs.g.call(void 0, )}postMessageRaw(e){try{if(_optionalChain([this, 'access', _ => _.channel, 'optionalAccess', _2 => _2.isConnected]))return this.channel.postMessage(e),!0}catch (e2){}return!1}flushBuffer(){for(;this.buffer.length;){let e=this.buffer.shift();if(e&&!this.postMessageRaw(e)){this.buffer.unshift(e);break}}}emptyBuffer(){this.buffer=[]}setChannel(e){this.dispose(),this.channel=e,e&&(this.dispose.add(e.on("message",s=>this.emit("message",s))),e.isConnected?this.flushBuffer():this.dispose.add(e.on("connect",()=>this.flushBuffer())))}deleteChannel(){this.setChannel()}postMessage(e){this.flushBuffer(),this.postMessageRaw(e)||this.buffer.push(e)}get isConnected(){return _optionalChain([this, 'access', _3 => _3.channel, 'optionalAccess', _4 => _4.isConnected])===!0}};exports.a = r;
2
- //# sourceMappingURL=chunk-DJINTZFD.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkX375623Dcjs = require('./chunk-X375623D.cjs');var _chunkCR2WSRFBcjs = require('./chunk-CR2WSRFB.cjs');var r=class extends _chunkX375623Dcjs.a{constructor(){super(...arguments);this.buffer=[];this.dispose=_chunkCR2WSRFBcjs.g.call(void 0, )}postMessageRaw(e){try{if(_optionalChain([this, 'access', _ => _.channel, 'optionalAccess', _2 => _2.isConnected]))return this.channel.postMessage(e),!0}catch (e2){}return!1}flushBuffer(){for(;this.buffer.length;){let e=this.buffer.shift();if(e&&!this.postMessageRaw(e)){this.buffer.unshift(e);break}}}emptyBuffer(){this.buffer=[]}setChannel(e){this.dispose(),this.channel=e,e&&(this.dispose.add(e.on("message",s=>this.emit("message",s))),e.isConnected?this.flushBuffer():this.dispose.add(e.on("connect",()=>this.flushBuffer())))}deleteChannel(){this.setChannel()}postMessage(e){this.flushBuffer(),this.postMessageRaw(e)||this.buffer.push(e)}get isConnected(){return _optionalChain([this, 'access', _3 => _3.channel, 'optionalAccess', _4 => _4.isConnected])===!0}};exports.a = r;
2
+ //# sourceMappingURL=chunk-5BBJL6OC.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DJINTZFD.cjs","../src/common/msg/channel-resilient.ts"],"names":["ResillientChannel","Channel","useDisposeWithUtils","data","channel","msg"],"mappings":"AAAA,qoBAAwC,wDAAyC,ICOpEA,CAAAA,CAAN,MAAA,QAAgCC,mBAAQ,CAAxC,WAAA,CAAA,CAAA,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAEL,IAAA,CAAQ,MAAA,CAAkC,CAAC,CAAA,CAE3C,IAAA,CAAA,OAAA,CAAUC,iCAAAA,CAAoB,CAEtB,cAAA,CAAeC,CAAAA,CAAoC,CACzD,GAAI,CACF,EAAA,iBAAI,IAAA,mBAAK,OAAA,6BAAS,aAAA,CAChB,OAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAYA,CAAI,CAAA,CACtB,CAAA,CAEX,CAAA,UACY,CAEZ,CACA,MAAO,CAAA,CACT,CAGA,WAAA,CAAA,CAAc,CACZ,GAAA,CAAA,CAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAA,CAAQ,CACzB,IAAMA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAA,CAC/B,EAAA,CAAIA,CAAAA,EAAQ,CAAC,IAAA,CAAK,cAAA,CAAeA,CAAI,CAAA,CAAG,CACtC,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQA,CAAI,CAAA,CACxB,KACF,CACF,CACF,CAGA,WAAA,CAAA,CAAc,CACZ,IAAA,CAAK,MAAA,CAAS,CAAC,CACjB,CAKA,UAAA,CAAWC,CAAAA,CAAmB,CACvB,IAAA,CAAK,OAAA,CAAQ,CAAA,CAClB,IAAA,CAAK,OAAA,CAAUA,CAAAA,CACXA,CAAAA,EAAAA,CACF,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAIA,CAAAA,CAAQ,EAAA,CAAG,SAAA,CAAWC,CAAAA,EAAO,IAAA,CAAK,IAAA,CAAK,SAAA,CAAWA,CAAG,CAAC,CAAC,CAAA,CACpED,CAAAA,CAAQ,WAAA,CACV,IAAA,CAAK,WAAA,CAAY,CAAA,CAEjB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAIA,CAAAA,CAAQ,EAAA,CAAG,SAAA,CAAW,CAAA,CAAA,EAAM,IAAA,CAAK,WAAA,CAAY,CAAC,CAAC,CAAA,CAGtE,CAGA,aAAA,CAAA,CAAgB,CACd,IAAA,CAAK,UAAA,CAAW,CAClB,CAEA,WAAA,CAAYD,CAAAA,CAAiC,CAC3C,IAAA,CAAK,WAAA,CAAY,CAAA,CACZ,IAAA,CAAK,cAAA,CAAeA,CAAI,CAAA,EAC3B,IAAA,CAAK,MAAA,CAAO,IAAA,CAAKA,CAAI,CACzB,CAEA,IAAI,WAAA,CAAA,CAAc,CAChB,uBAAO,IAAA,qBAAK,OAAA,6BAAS,aAAA,GAAgB,CAAA,CACvC,CACF,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-DJINTZFD.cjs","sourcesContent":[null,"import { useDisposeWithUtils } from '../dispose-utils'\nimport { Channel } from './channel'\n\n/**\n * Channel that buffers if not connected.\n * The actual channel can be removed and replaced.\n */\nexport class ResillientChannel extends Channel {\n private channel?: Channel\n private buffer: (Uint8Array | string)[] = []\n\n dispose = useDisposeWithUtils()\n\n private postMessageRaw(data: Uint8Array | string): boolean {\n try {\n if (this.channel?.isConnected) {\n this.channel.postMessage(data)\n return true\n }\n }\n catch (err) {\n // log.warn('send failed', err)\n }\n return false\n }\n\n /** Post all buffered messages */\n flushBuffer() {\n while (this.buffer.length) {\n const data = this.buffer.shift()\n if (data && !this.postMessageRaw(data)) {\n this.buffer.unshift(data)\n break\n }\n }\n }\n\n /** Reset buffer without force sending */\n emptyBuffer() {\n this.buffer = []\n }\n\n /**\n * Set a new channel and flush buffer\n */\n setChannel(channel?: Channel) {\n void this.dispose()\n this.channel = channel\n if (channel) {\n this.dispose.add(channel.on('message', msg => this.emit('message', msg)))\n if (channel.isConnected)\n this.flushBuffer()\n else\n this.dispose.add(channel.on('connect', () => this.flushBuffer()))\n // channel.on('close', () => this.channels.delete(channel))\n }\n }\n\n /** @deprecated use `setChannel(undefined)` */\n deleteChannel() {\n this.setChannel()\n }\n\n postMessage(data: Uint8Array | string): void {\n this.flushBuffer()\n if (!this.postMessageRaw(data))\n this.buffer.push(data)\n }\n\n get isConnected() {\n return this.channel?.isConnected === true\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-5BBJL6OC.cjs","../src/common/msg/channel-resilient.ts"],"names":["ResillientChannel","Channel","useDisposeWithUtils","data","channel","msg"],"mappings":"AAAA,qoBAAwC,wDAAyC,ICOpEA,CAAAA,CAAN,MAAA,QAAgCC,mBAAQ,CAAxC,WAAA,CAAA,CAAA,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CAEL,IAAA,CAAQ,MAAA,CAAkC,CAAC,CAAA,CAE3C,IAAA,CAAA,OAAA,CAAUC,iCAAAA,CAAoB,CAEtB,cAAA,CAAeC,CAAAA,CAAoC,CACzD,GAAI,CACF,EAAA,iBAAI,IAAA,mBAAK,OAAA,6BAAS,aAAA,CAChB,OAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAYA,CAAI,CAAA,CACtB,CAAA,CAEX,CAAA,UACY,CAEZ,CACA,MAAO,CAAA,CACT,CAGA,WAAA,CAAA,CAAc,CACZ,GAAA,CAAA,CAAO,IAAA,CAAK,MAAA,CAAO,MAAA,CAAA,CAAQ,CACzB,IAAMA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAA,CAC/B,EAAA,CAAIA,CAAAA,EAAQ,CAAC,IAAA,CAAK,cAAA,CAAeA,CAAI,CAAA,CAAG,CACtC,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQA,CAAI,CAAA,CACxB,KACF,CACF,CACF,CAGA,WAAA,CAAA,CAAc,CACZ,IAAA,CAAK,MAAA,CAAS,CAAC,CACjB,CAKA,UAAA,CAAWC,CAAAA,CAAmB,CACvB,IAAA,CAAK,OAAA,CAAQ,CAAA,CAClB,IAAA,CAAK,OAAA,CAAUA,CAAAA,CACXA,CAAAA,EAAAA,CACF,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAIA,CAAAA,CAAQ,EAAA,CAAG,SAAA,CAAWC,CAAAA,EAAO,IAAA,CAAK,IAAA,CAAK,SAAA,CAAWA,CAAG,CAAC,CAAC,CAAA,CACpED,CAAAA,CAAQ,WAAA,CACV,IAAA,CAAK,WAAA,CAAY,CAAA,CAEjB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAIA,CAAAA,CAAQ,EAAA,CAAG,SAAA,CAAW,CAAA,CAAA,EAAM,IAAA,CAAK,WAAA,CAAY,CAAC,CAAC,CAAA,CAGtE,CAGA,aAAA,CAAA,CAAgB,CACd,IAAA,CAAK,UAAA,CAAW,CAClB,CAEA,WAAA,CAAYD,CAAAA,CAAiC,CAC3C,IAAA,CAAK,WAAA,CAAY,CAAA,CACZ,IAAA,CAAK,cAAA,CAAeA,CAAI,CAAA,EAC3B,IAAA,CAAK,MAAA,CAAO,IAAA,CAAKA,CAAI,CACzB,CAEA,IAAI,WAAA,CAAA,CAAc,CAChB,uBAAO,IAAA,qBAAK,OAAA,6BAAS,aAAA,GAAgB,CAAA,CACvC,CACF,CAAA,CAAA,cAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-5BBJL6OC.cjs","sourcesContent":[null,"import { useDisposeWithUtils } from '../dispose-utils'\nimport { Channel } from './channel'\n\n/**\n * Channel that buffers if not connected.\n * The actual channel can be removed and replaced.\n */\nexport class ResillientChannel extends Channel {\n private channel?: Channel\n private buffer: (Uint8Array | string)[] = []\n\n dispose = useDisposeWithUtils()\n\n private postMessageRaw(data: Uint8Array | string): boolean {\n try {\n if (this.channel?.isConnected) {\n this.channel.postMessage(data)\n return true\n }\n }\n catch (err) {\n // log.warn('send failed', err)\n }\n return false\n }\n\n /** Post all buffered messages */\n flushBuffer() {\n while (this.buffer.length) {\n const data = this.buffer.shift()\n if (data && !this.postMessageRaw(data)) {\n this.buffer.unshift(data)\n break\n }\n }\n }\n\n /** Reset buffer without force sending */\n emptyBuffer() {\n this.buffer = []\n }\n\n /**\n * Set a new channel and flush buffer\n */\n setChannel(channel?: Channel) {\n void this.dispose()\n this.channel = channel\n if (channel) {\n this.dispose.add(channel.on('message', msg => this.emit('message', msg)))\n if (channel.isConnected)\n this.flushBuffer()\n else\n this.dispose.add(channel.on('connect', () => this.flushBuffer()))\n // channel.on('close', () => this.channels.delete(channel))\n }\n }\n\n /** @deprecated use `setChannel(undefined)` */\n deleteChannel() {\n this.setChannel()\n }\n\n postMessage(data: Uint8Array | string): void {\n this.flushBuffer()\n if (!this.postMessageRaw(data))\n this.buffer.push(data)\n }\n\n get isConnected() {\n return this.channel?.isConnected === true\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkY4CZHSBVcjs = require('./chunk-Y4CZHSBV.cjs');var _chunkQSTP2ZQTcjs = require('./chunk-QSTP2ZQT.cjs');var _chunk3O7Y3U7Ycjs = require('./chunk-3O7Y3U7Y.cjs');var a={string:"String",number:"Double",int:"Int",boolean:"Bool"};function y(t,l="Example"){_chunk3O7Y3U7Ycjs.b.call(void 0, _chunkY4CZHSBVcjs.e.call(void 0, t),"schema should be a flat object");let i="";_optionalChain([t, 'access', _ => _._props, 'optionalAccess', _2 => _2.swiftProtocol])&&(i=`: ${t._props.swiftProtocol}`);let r=[`struct ${_nullishCoalesce(_optionalChain([t, 'access', _3 => _3._props, 'optionalAccess', _4 => _4.swiftName]), () => (l))}${i} {`];return _chunkQSTP2ZQTcjs.a.call(void 0, t._object,(f,o)=>{let e=` var ${f}: ${_nullishCoalesce(a[o.type], () => (o.type))}`;o._optional===!0&&(e+="?"),o._default!=null&&(e+=` = ${o._default}`),r.push(e)}),r.push("}"),r.join(`
2
2
  `)}exports.a = y;
3
- //# sourceMappingURL=chunk-E2ATUVME.cjs.map
3
+ //# sourceMappingURL=chunk-7SVWAR6H.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-7SVWAR6H.cjs","../src/common/schema/export-swift.ts"],"names":["mapSwiftType","schemaExportSwiftStruct","schema","name","assert","isSchemaObjectFlat","protocol"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,ICapHA,CAAAA,CAAe,CACnB,MAAA,CAAQ,QAAA,CACR,MAAA,CAAQ,QAAA,CACR,GAAA,CAAK,KAAA,CACL,OAAA,CAAS,MACX,CAAA,CAEO,SAASC,CAAAA,CAA2BC,CAAAA,CAAiBC,CAAAA,CAAe,SAAA,CAAmB,CAC5FC,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,IAAIC,CAAAA,CAAW,EAAA,iBACXJ,CAAAA,mBAAO,MAAA,6BAAQ,eAAA,EAAA,CACjBI,CAAAA,CAAW,CAAA,EAAA,EAAKJ,CAAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAAA;AAmB/C","file":"/Users/dirk/work/github-zeed/dist/chunk-7SVWAR6H.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeProps {\n swiftName?: string\n swiftProtocol?: string\n swiftDesc?: string\n }\n}\n\nconst mapSwiftType = {\n string: 'String',\n number: 'Double',\n int: 'Int',\n boolean: 'Bool',\n} as any\n\nexport function schemaExportSwiftStruct<T>(schema: Type<T>, name: string = 'Example'): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n let protocol = ''\n if (schema._props?.swiftProtocol) {\n protocol = `: ${schema._props.swiftProtocol}`\n }\n\n const lines: string[] = [\n `struct ${schema._props?.swiftName ?? name}${protocol} {`,\n ]\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n let s = ` var ${key}: ${mapSwiftType[schema.type] ?? schema.type}`\n if (schema._optional === true)\n s += '?'\n if (schema._default != null)\n s += ` = ${schema._default}`\n lines.push(s)\n })\n\n lines.push('}')\n\n return lines.join('\\n')\n}\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkVFR5TEQEcjs = require('./chunk-VFR5TEQE.cjs');var _chunkS43EDRFKcjs = require('./chunk-S43EDRFK.cjs');var _chunkN7JQO6FGcjs = require('./chunk-N7JQO6FG.cjs');var _chunkXHBPFXWQcjs = require('./chunk-XHBPFXWQ.cjs');var _chunkWIUZ5ACAcjs = require('./chunk-WIUZ5ACA.cjs');function O(g,M,p={}){return new Proxy(p,{get:(d,u)=>u in d?d[u]:(...w)=>g(u,w,M)})}function N(g={}){let{name:M=_chunkN7JQO6FGcjs.u.call(void 0, "hub"),encoder:p=new _chunkVFR5TEQEcjs.b,retryAfter:d=1e3,ignoreUnhandled:u=!0,logLevel:w=!1}=g,s=_chunkWIUZ5ACAcjs.c.call(void 0, M,w),L={},c,f=[],x,m={},R=()=>{clearTimeout(x)},y=async()=>{if(clearTimeout(x),c){if(c.isConnected)for(;f.length;){let n=f[0];try{c.postMessage(await p.encode(n)),f.shift()}catch(o){s.warn("postMessage",o);break}}f.length>0&&d>0&&(x=setTimeout(y,d))}},b=async n=>{s("enqueue postMessage",n),f.push(n),await y()},P=async n=>{c=n,c.on("connect",y),c.on("message",async o=>{s("onmessage",typeof o);let{name:r,args:v,id:e,result:l,error:a}=await p.decode(o.data);if(r){s(`name ${r} id ${e}`);try{if(L[r]==null)throw new Error(`handler for ${r} was not found`);let t=L[r](...v);_chunkXHBPFXWQcjs.h.call(void 0, t)&&(t=await t),s(`result ${t}`),e&&await b({id:e,result:t})}catch(t){let i=t instanceof Error?t:new Error(_chunkS43EDRFKcjs.h.call(void 0, t));s.warn("execution error",i.name),await b({id:e,error:{message:i.message,stack:i.stack,name:i.name}})}}else if(e)if(s(`response for id=${e}: result=${l}, error=${a}`),m[e]==null)l===void 0?s(`skip response for ${e}`):s.warn(`no response hook for ${e}`);else{let[t,i]=m[e];if(t&&i)if(delete m[e],a){let h=new Error(a.message);h.stack=a.stack,h.name=a.name,s.warn("reject",h.name),i(h)}else s("resolve",l),t(l)}else u||s.warn("Unhandled message",o)}),await y()},k=async(n,o,r={})=>{let{timeout:v=5e3}=r,e=_chunkN7JQO6FGcjs.q.call(void 0, );return await b({name:n,args:o,id:e}),_chunkXHBPFXWQcjs.f.call(void 0, new Promise((l,a)=>m[e]=[l,a]),v)};return g.channel&&P(g.channel),{dispose:R,connect:P,listen(n){Object.assign(L,n)},send(){return O(k,{},{options(n){return O(k,{...n})}})}}}exports.a = O; exports.b = N;
2
- //# sourceMappingURL=chunk-R7USC6WF.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkVFR5TEQEcjs = require('./chunk-VFR5TEQE.cjs');var _chunkS43EDRFKcjs = require('./chunk-S43EDRFK.cjs');var _chunkDY6RMJJKcjs = require('./chunk-DY6RMJJK.cjs');var _chunkXHBPFXWQcjs = require('./chunk-XHBPFXWQ.cjs');var _chunkWIUZ5ACAcjs = require('./chunk-WIUZ5ACA.cjs');function O(g,M,p={}){return new Proxy(p,{get:(d,u)=>u in d?d[u]:(...w)=>g(u,w,M)})}function N(g={}){let{name:M=_chunkDY6RMJJKcjs.u.call(void 0, "hub"),encoder:p=new _chunkVFR5TEQEcjs.b,retryAfter:d=1e3,ignoreUnhandled:u=!0,logLevel:w=!1}=g,s=_chunkWIUZ5ACAcjs.c.call(void 0, M,w),L={},c,f=[],x,m={},R=()=>{clearTimeout(x)},y=async()=>{if(clearTimeout(x),c){if(c.isConnected)for(;f.length;){let n=f[0];try{c.postMessage(await p.encode(n)),f.shift()}catch(o){s.warn("postMessage",o);break}}f.length>0&&d>0&&(x=setTimeout(y,d))}},b=async n=>{s("enqueue postMessage",n),f.push(n),await y()},P=async n=>{c=n,c.on("connect",y),c.on("message",async o=>{s("onmessage",typeof o);let{name:r,args:v,id:e,result:l,error:a}=await p.decode(o.data);if(r){s(`name ${r} id ${e}`);try{if(L[r]==null)throw new Error(`handler for ${r} was not found`);let t=L[r](...v);_chunkXHBPFXWQcjs.h.call(void 0, t)&&(t=await t),s(`result ${t}`),e&&await b({id:e,result:t})}catch(t){let i=t instanceof Error?t:new Error(_chunkS43EDRFKcjs.h.call(void 0, t));s.warn("execution error",i.name),await b({id:e,error:{message:i.message,stack:i.stack,name:i.name}})}}else if(e)if(s(`response for id=${e}: result=${l}, error=${a}`),m[e]==null)l===void 0?s(`skip response for ${e}`):s.warn(`no response hook for ${e}`);else{let[t,i]=m[e];if(t&&i)if(delete m[e],a){let h=new Error(a.message);h.stack=a.stack,h.name=a.name,s.warn("reject",h.name),i(h)}else s("resolve",l),t(l)}else u||s.warn("Unhandled message",o)}),await y()},k=async(n,o,r={})=>{let{timeout:v=5e3}=r,e=_chunkDY6RMJJKcjs.q.call(void 0, );return await b({name:n,args:o,id:e}),_chunkXHBPFXWQcjs.f.call(void 0, new Promise((l,a)=>m[e]=[l,a]),v)};return g.channel&&P(g.channel),{dispose:R,connect:P,listen(n){Object.assign(L,n)},send(){return O(k,{},{options(n){return O(k,{...n})}})}}}exports.a = O; exports.b = N;
2
+ //# sourceMappingURL=chunk-BOM3HKWA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-R7USC6WF.cjs","../src/common/msg/messages.ts"],"names":["createPromiseProxy","fn","opt","predefinedMethods","target","name","args","useMessageHub","uname","encoder","JsonEncoder","retryAfter","ignoreUnhandled","logLevel","log","DefaultLogger","handlers","channel","queue","queueRetryTimer","waitingForResponse","dispose","postNext","message","err","postMessage","connect","newChannel","msg","id","result","error"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-R7USC6WF.cjs","sourcesContent":[null,"import type { LogLevelAliasType } from '../log/log-base'\nimport type { Json } from '../types'\nimport type { Channel } from './channel'\nimport type { Encoder } from './encoder'\nimport { valueToString } from '../data/convert'\nimport { isPromise, tryTimeout } from '../exec/promise'\nimport { DefaultLogger } from '../log/log'\nimport { uname, uuid } from '../uuid'\nimport { JsonEncoder } from './encoder'\n\nexport interface MessageAction {\n name: string\n id: string\n args?: Json[]\n}\n\nexport interface MessageResult {\n id: string\n result?: Json\n error?: { stack?: string, name: string, message: string }\n}\n\nexport type Message = MessageAction | MessageResult\n\nexport interface MessagesOptions {\n timeout?: number\n}\n\nexport interface MessagesDefaultMethods<L> {\n dispose: () => void\n connect?: (channel: Channel) => void\n options: (opt: MessagesOptions) => L\n}\n\nexport type MessagesMethods<L> = L & MessagesDefaultMethods<L>\n\n// export type MessageDefinitions = {\n// [key: string]: (...args: any) => Promise<any>\n// }\n\nexport type MessageDefinitions = Record<any, (...args: any) => Promise<any>>\n\nexport interface MessageHub {\n dispose: () => void\n connect: (newChannel: Channel) => void\n listen: <L extends MessageDefinitions>(newHandlers: L) => void\n send: <L extends MessageDefinitions>() => MessagesMethods<L>\n}\n\n// The async proxy, waiting for a response\nexport function createPromiseProxy<P extends object>(fn: (name: string, args: any[], opt: any) => Promise<unknown>, opt: MessagesOptions, predefinedMethods: any = {}): P {\n return new Proxy<P>(predefinedMethods, {\n get: (target: any, name: any) => {\n if (name in target)\n return target[name]\n return (...args: any): any => fn(name, args, opt)\n },\n })\n}\n\n/**\n * RPC\n *\n * Features:\n * - Waits for connection\n * - Retries after fail\n * - Timeouts\n */\nexport function useMessageHub(\n opt: {\n name?: string\n channel?: Channel\n encoder?: Encoder\n retryAfter?: number\n ignoreUnhandled?: boolean\n debug?: boolean\n logLevel?: LogLevelAliasType\n } = {},\n): MessageHub {\n const {\n name = uname('hub'),\n encoder = new JsonEncoder(),\n retryAfter = 1000,\n ignoreUnhandled = true,\n logLevel = false,\n } = opt\n\n const log = DefaultLogger(name, logLevel)\n\n const handlers = {}\n let channel: Channel | undefined\n const queue: Message[] = []\n let queueRetryTimer: any\n const waitingForResponse: Record<string, [\n (result?: any) => any, // resolve\n (result?: any) => any, // reject\n ]> = {}\n\n const dispose = () => {\n clearTimeout(queueRetryTimer)\n }\n\n const postNext = async () => {\n clearTimeout(queueRetryTimer)\n if (channel) {\n if (channel.isConnected) {\n while (queue.length) {\n const message = queue[0]\n try {\n channel.postMessage(await encoder.encode(message))\n queue.shift() // remove from queue when done\n }\n catch (err) {\n log.warn('postMessage', err)\n break\n }\n }\n }\n if (queue.length > 0 && retryAfter > 0)\n queueRetryTimer = setTimeout(postNext, retryAfter)\n }\n }\n\n const postMessage = async (message: Message) => {\n log('enqueue postMessage', message)\n queue.push(message)\n await postNext()\n }\n\n const connect = async (newChannel: Channel) => {\n channel = newChannel\n\n channel.on('connect', postNext)\n\n channel.on('message', async (msg: any) => {\n log('onmessage', typeof msg)\n const { name, args, id, result, error } = await encoder.decode(msg.data)\n\n // Incoming new message\n if (name) {\n log(`name ${name} id ${id}`)\n try {\n // @ts-expect-error xxx\n if (handlers[name] == null)\n throw new Error(`handler for ${name} was not found`)\n\n // @ts-expect-error xxx\n let result = handlers[name](...args)\n if (isPromise(result))\n result = await result\n log(`result ${result}`)\n if (id)\n await postMessage({ id, result })\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(valueToString(error))\n log.warn('execution error', err.name)\n await postMessage({\n id,\n error: {\n message: err.message,\n stack: err.stack,\n name: err.name,\n },\n })\n }\n }\n\n // Incoming new response\n else if (id) {\n log(`response for id=${id}: result=${result}, error=${error}`)\n if (waitingForResponse[id] == null) {\n if (result === undefined)\n log(`skip response for ${id}`)\n else\n log.warn(`no response hook for ${id}`)\n }\n else {\n const [resolve, reject] = waitingForResponse[id]\n if (resolve && reject) {\n delete waitingForResponse[id]\n if (error) {\n const err = new Error(error.message)\n err.stack = error.stack\n err.name = error.name\n log.warn('reject', err.name)\n reject(err)\n }\n else {\n log('resolve', result)\n resolve(result)\n }\n }\n }\n }\n\n // Don't know what to do with it\n else if (!ignoreUnhandled) {\n log.warn('Unhandled message', msg)\n }\n })\n\n await postNext()\n }\n\n const fetchMessage = async (\n name: string,\n args: any[],\n opt: MessagesOptions = {},\n ): Promise<unknown> => {\n const { timeout = 5000 } = opt\n const id = uuid()\n await postMessage({\n name,\n args,\n id,\n })\n return tryTimeout(\n new Promise(\n (resolve, reject) => (waitingForResponse[id] = [resolve, reject]),\n ),\n timeout,\n )\n }\n\n if (opt.channel)\n void connect(opt.channel) // todo async\n\n return {\n dispose,\n\n connect,\n listen<L extends object>(newHandlers: L) {\n Object.assign(handlers, newHandlers)\n },\n send<L extends object>() {\n // The regular proxy without responding, just send\n return createPromiseProxy<L>(fetchMessage, {}, {\n options(perCallopt: MessagesOptions) {\n return createPromiseProxy<L>(fetchMessage, { ...perCallopt })\n },\n } as MessagesDefaultMethods<L>) as MessagesMethods<L>\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-BOM3HKWA.cjs","../src/common/msg/messages.ts"],"names":["createPromiseProxy","fn","opt","predefinedMethods","target","name","args","useMessageHub","uname","encoder","JsonEncoder","retryAfter","ignoreUnhandled","logLevel","log","DefaultLogger","handlers","channel","queue","queueRetryTimer","waitingForResponse","dispose","postNext","message","err","postMessage","connect","newChannel","msg","id","result","error"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-BOM3HKWA.cjs","sourcesContent":[null,"import type { LogLevelAliasType } from '../log/log-base'\nimport type { Json } from '../types'\nimport type { Channel } from './channel'\nimport type { Encoder } from './encoder'\nimport { valueToString } from '../data/convert'\nimport { isPromise, tryTimeout } from '../exec/promise'\nimport { DefaultLogger } from '../log/log'\nimport { uname, uuid } from '../uuid'\nimport { JsonEncoder } from './encoder'\n\nexport interface MessageAction {\n name: string\n id: string\n args?: Json[]\n}\n\nexport interface MessageResult {\n id: string\n result?: Json\n error?: { stack?: string, name: string, message: string }\n}\n\nexport type Message = MessageAction | MessageResult\n\nexport interface MessagesOptions {\n timeout?: number\n}\n\nexport interface MessagesDefaultMethods<L> {\n dispose: () => void\n connect?: (channel: Channel) => void\n options: (opt: MessagesOptions) => L\n}\n\nexport type MessagesMethods<L> = L & MessagesDefaultMethods<L>\n\n// export type MessageDefinitions = {\n// [key: string]: (...args: any) => Promise<any>\n// }\n\nexport type MessageDefinitions = Record<any, (...args: any) => Promise<any>>\n\nexport interface MessageHub {\n dispose: () => void\n connect: (newChannel: Channel) => void\n listen: <L extends MessageDefinitions>(newHandlers: L) => void\n send: <L extends MessageDefinitions>() => MessagesMethods<L>\n}\n\n// The async proxy, waiting for a response\nexport function createPromiseProxy<P extends object>(fn: (name: string, args: any[], opt: any) => Promise<unknown>, opt: MessagesOptions, predefinedMethods: any = {}): P {\n return new Proxy<P>(predefinedMethods, {\n get: (target: any, name: any) => {\n if (name in target)\n return target[name]\n return (...args: any): any => fn(name, args, opt)\n },\n })\n}\n\n/**\n * RPC\n *\n * Features:\n * - Waits for connection\n * - Retries after fail\n * - Timeouts\n */\nexport function useMessageHub(\n opt: {\n name?: string\n channel?: Channel\n encoder?: Encoder\n retryAfter?: number\n ignoreUnhandled?: boolean\n debug?: boolean\n logLevel?: LogLevelAliasType\n } = {},\n): MessageHub {\n const {\n name = uname('hub'),\n encoder = new JsonEncoder(),\n retryAfter = 1000,\n ignoreUnhandled = true,\n logLevel = false,\n } = opt\n\n const log = DefaultLogger(name, logLevel)\n\n const handlers = {}\n let channel: Channel | undefined\n const queue: Message[] = []\n let queueRetryTimer: any\n const waitingForResponse: Record<string, [\n (result?: any) => any, // resolve\n (result?: any) => any, // reject\n ]> = {}\n\n const dispose = () => {\n clearTimeout(queueRetryTimer)\n }\n\n const postNext = async () => {\n clearTimeout(queueRetryTimer)\n if (channel) {\n if (channel.isConnected) {\n while (queue.length) {\n const message = queue[0]\n try {\n channel.postMessage(await encoder.encode(message))\n queue.shift() // remove from queue when done\n }\n catch (err) {\n log.warn('postMessage', err)\n break\n }\n }\n }\n if (queue.length > 0 && retryAfter > 0)\n queueRetryTimer = setTimeout(postNext, retryAfter)\n }\n }\n\n const postMessage = async (message: Message) => {\n log('enqueue postMessage', message)\n queue.push(message)\n await postNext()\n }\n\n const connect = async (newChannel: Channel) => {\n channel = newChannel\n\n channel.on('connect', postNext)\n\n channel.on('message', async (msg: any) => {\n log('onmessage', typeof msg)\n const { name, args, id, result, error } = await encoder.decode(msg.data)\n\n // Incoming new message\n if (name) {\n log(`name ${name} id ${id}`)\n try {\n // @ts-expect-error xxx\n if (handlers[name] == null)\n throw new Error(`handler for ${name} was not found`)\n\n // @ts-expect-error xxx\n let result = handlers[name](...args)\n if (isPromise(result))\n result = await result\n log(`result ${result}`)\n if (id)\n await postMessage({ id, result })\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(valueToString(error))\n log.warn('execution error', err.name)\n await postMessage({\n id,\n error: {\n message: err.message,\n stack: err.stack,\n name: err.name,\n },\n })\n }\n }\n\n // Incoming new response\n else if (id) {\n log(`response for id=${id}: result=${result}, error=${error}`)\n if (waitingForResponse[id] == null) {\n if (result === undefined)\n log(`skip response for ${id}`)\n else\n log.warn(`no response hook for ${id}`)\n }\n else {\n const [resolve, reject] = waitingForResponse[id]\n if (resolve && reject) {\n delete waitingForResponse[id]\n if (error) {\n const err = new Error(error.message)\n err.stack = error.stack\n err.name = error.name\n log.warn('reject', err.name)\n reject(err)\n }\n else {\n log('resolve', result)\n resolve(result)\n }\n }\n }\n }\n\n // Don't know what to do with it\n else if (!ignoreUnhandled) {\n log.warn('Unhandled message', msg)\n }\n })\n\n await postNext()\n }\n\n const fetchMessage = async (\n name: string,\n args: any[],\n opt: MessagesOptions = {},\n ): Promise<unknown> => {\n const { timeout = 5000 } = opt\n const id = uuid()\n await postMessage({\n name,\n args,\n id,\n })\n return tryTimeout(\n new Promise(\n (resolve, reject) => (waitingForResponse[id] = [resolve, reject]),\n ),\n timeout,\n )\n }\n\n if (opt.channel)\n void connect(opt.channel) // todo async\n\n return {\n dispose,\n\n connect,\n listen<L extends object>(newHandlers: L) {\n Object.assign(handlers, newHandlers)\n },\n send<L extends object>() {\n // The regular proxy without responding, just send\n return createPromiseProxy<L>(fetchMessage, {}, {\n options(perCallopt: MessagesOptions) {\n return createPromiseProxy<L>(fetchMessage, { ...perCallopt })\n },\n } as MessagesDefaultMethods<L>) as MessagesMethods<L>\n },\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkSA5MSIRVcjs = require('./chunk-SA5MSIRV.cjs');var _chunkBNMSTFVYcjs = require('./chunk-BNMSTFVY.cjs');var _chunkN7JQO6FGcjs = require('./chunk-N7JQO6FG.cjs');var _chunkWGYEX7AJcjs = require('./chunk-WGYEX7AJ.cjs');var _chunkXHBPFXWQcjs = require('./chunk-XHBPFXWQ.cjs');function N(w={}){let{maxParallel:F=3,name:U=_chunkN7JQO6FGcjs.u.call(void 0, "pool"),idConflictResolution:j="memoize"}=w,d=new _chunkBNMSTFVYcjs.a,y=_chunkWGYEX7AJcjs.b.call(void 0, );y.add(v);let m=new (0, _chunkSA5MSIRVcjs.a)({name:U});m.on("progressCancelled",v);let u=0,c=0,f=0,k=0,i={};async function I(){if(u>0){let[t,e]=_chunkXHBPFXWQcjs.a.call(void 0, );return d.once("didFinish",e),t}}async function z(){for(let t of Object.keys(i))i[t].state==="finished"&&(await i[t].progress.dispose(),delete i[t])}function M(){d.emit("didFinish"),u=0,c=0,z(),m.reset()}function p(){let t=0,e=0;for(let{max:n,resolved:a,state:o}of Object.values(i))t+=n,e+=o==="finished"?n:Math.min(n,a);d.emit("didUpdate",u,c,t,e)}function P(){if(p(),u>0&&u===c&&M(),f>=F)return;let t=Object.values(i).filter(e=>e.state==="waiting");if(t.length>0){let e;for(let n of t)n.group!=null&&Object.values(i).some(a=>a.state==="running"&&a.id!==n.id&&a.group===n.group)||(e==null||n.priority<e.priority)&&(e=n);if(e!=null){let n=e.id,a=e.done;e.state="running",++f,d.emit("didStart",n);let o=r=>{e&&(e.result=r,e.state="finished",e.resolved=e.max,_optionalChain([e, 'access', _ => _.progress, 'optionalAccess', _2 => _2.setCompleted, 'call', _3 => _3()])),--f,++c,P()};e.task(e).then(r=>{a(r),d.emit("didResolve",n,r),o(r)}).catch(r=>{a(),d.emit("didReject",n,r),o()})}}}function l(t){let e=i[t];e&&e.state==="waiting"&&(i[t].state="finished",++c,d.emit("didCancel",t),i[t].progress.dispose(),p())}function v(){Object.keys(i).forEach(l)}function E(t){return i[t]!=null}function O(t,e={}){let n,a=new Promise(s=>n=s),o=_nullishCoalesce(e.id, () => (_chunkN7JQO6FGcjs.q.call(void 0, )));if(i[o]!=null){let s=_nullishCoalesce(e.idConflictResolution, () => (j));if(s==="replace")l(o);else if(s==="memoize"||s==="prioritize"){let T=i[o];return s==="prioritize"&&(T.priority=++k),{id:o,promise:(async()=>{if(T.state==="finished")return i[o].result})(),dispose:()=>l(o),cancel:()=>l(o)}}else throw new Error(`Pool task with id=${o} already exists!`)}let r=new (0, _chunkSA5MSIRVcjs.a)({name:o,totalUnits:_nullishCoalesce(e.max, () => (1)),completeUnits:_nullishCoalesce(e.resolved, () => (0))});return m.addChild(r),i[o]={id:o,task:t,priority:++k,group:e.group,state:"waiting",max:_nullishCoalesce(e.max, () => (1)),resolved:_nullishCoalesce(e.resolved, () => (0)),done:n,payload:e.payload,progress:r,setMax(s){r.setTotalUnits(s),i[o].max=s,p()},setResolved(s){r.setCompletetedUnits(s),i[o].resolved=s,p()},incResolved(s=1){r.incCompletedUnits(s),i[o].resolved+=s,p()}},++u,P(),{id:o,promise:a,dispose:()=>l(o),cancel:()=>l(o)}}return{events:d,cancel:l,cancelAll:v,hasById:E,progress:m,enqueue:O,dispose:y,waitFinishAll:I}}exports.a = N;
2
- //# sourceMappingURL=chunk-5GO3AK4J.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkDIIKUZU5cjs = require('./chunk-DIIKUZU5.cjs');var _chunkBNMSTFVYcjs = require('./chunk-BNMSTFVY.cjs');var _chunkDY6RMJJKcjs = require('./chunk-DY6RMJJK.cjs');var _chunkWGYEX7AJcjs = require('./chunk-WGYEX7AJ.cjs');var _chunkXHBPFXWQcjs = require('./chunk-XHBPFXWQ.cjs');function N(w={}){let{maxParallel:F=3,name:U=_chunkDY6RMJJKcjs.u.call(void 0, "pool"),idConflictResolution:j="memoize"}=w,d=new _chunkBNMSTFVYcjs.a,y=_chunkWGYEX7AJcjs.b.call(void 0, );y.add(v);let m=new (0, _chunkDIIKUZU5cjs.a)({name:U});m.on("progressCancelled",v);let u=0,c=0,f=0,k=0,i={};async function I(){if(u>0){let[t,e]=_chunkXHBPFXWQcjs.a.call(void 0, );return d.once("didFinish",e),t}}async function z(){for(let t of Object.keys(i))i[t].state==="finished"&&(await i[t].progress.dispose(),delete i[t])}function M(){d.emit("didFinish"),u=0,c=0,z(),m.reset()}function p(){let t=0,e=0;for(let{max:n,resolved:a,state:o}of Object.values(i))t+=n,e+=o==="finished"?n:Math.min(n,a);d.emit("didUpdate",u,c,t,e)}function P(){if(p(),u>0&&u===c&&M(),f>=F)return;let t=Object.values(i).filter(e=>e.state==="waiting");if(t.length>0){let e;for(let n of t)n.group!=null&&Object.values(i).some(a=>a.state==="running"&&a.id!==n.id&&a.group===n.group)||(e==null||n.priority<e.priority)&&(e=n);if(e!=null){let n=e.id,a=e.done;e.state="running",++f,d.emit("didStart",n);let o=r=>{e&&(e.result=r,e.state="finished",e.resolved=e.max,_optionalChain([e, 'access', _ => _.progress, 'optionalAccess', _2 => _2.setCompleted, 'call', _3 => _3()])),--f,++c,P()};e.task(e).then(r=>{a(r),d.emit("didResolve",n,r),o(r)}).catch(r=>{a(),d.emit("didReject",n,r),o()})}}}function l(t){let e=i[t];e&&e.state==="waiting"&&(i[t].state="finished",++c,d.emit("didCancel",t),i[t].progress.dispose(),p())}function v(){Object.keys(i).forEach(l)}function E(t){return i[t]!=null}function O(t,e={}){let n,a=new Promise(s=>n=s),o=_nullishCoalesce(e.id, () => (_chunkDY6RMJJKcjs.q.call(void 0, )));if(i[o]!=null){let s=_nullishCoalesce(e.idConflictResolution, () => (j));if(s==="replace")l(o);else if(s==="memoize"||s==="prioritize"){let T=i[o];return s==="prioritize"&&(T.priority=++k),{id:o,promise:(async()=>{if(T.state==="finished")return i[o].result})(),dispose:()=>l(o),cancel:()=>l(o)}}else throw new Error(`Pool task with id=${o} already exists!`)}let r=new (0, _chunkDIIKUZU5cjs.a)({name:o,totalUnits:_nullishCoalesce(e.max, () => (1)),completeUnits:_nullishCoalesce(e.resolved, () => (0))});return m.addChild(r),i[o]={id:o,task:t,priority:++k,group:e.group,state:"waiting",max:_nullishCoalesce(e.max, () => (1)),resolved:_nullishCoalesce(e.resolved, () => (0)),done:n,payload:e.payload,progress:r,setMax(s){r.setTotalUnits(s),i[o].max=s,p()},setResolved(s){r.setCompletetedUnits(s),i[o].resolved=s,p()},incResolved(s=1){r.incCompletedUnits(s),i[o].resolved+=s,p()}},++u,P(),{id:o,promise:a,dispose:()=>l(o),cancel:()=>l(o)}}return{events:d,cancel:l,cancelAll:v,hasById:E,progress:m,enqueue:O,dispose:y,waitFinishAll:I}}exports.a = N;
2
+ //# sourceMappingURL=chunk-BPESVGQQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-5GO3AK4J.cjs","../src/common/exec/pool.ts"],"names":["usePool","config","maxParallel","name","uname","idConflictResolution","events","Emitter","dispose","useDispose","cancelAll","progress","Progress","countMax","countResolved","currentParallel","priority","tasks","waitFinishAll","promise","resolve","createPromise","cleanupFinished","id","didFinish","didUpdate","presentMax","presentResolved","max","resolved","state","performNext","waitingTasks","t","taskInfo","tt","done","taskFinished","result","err","cancel","hasById","enqueue","task","uuid","resolution","runningTask","taskProgress","units","inc"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-5GO3AK4J.cjs","sourcesContent":[null,"import { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname, uuid } from '../uuid'\nimport { Progress } from './progress'\nimport { createPromise } from './promise'\n\nexport type PoolTaskIdConflictResolution = 'replace' | 'memoize' | 'prioritize' | 'error'\n\n// export enum PoolTaskIdConflictResolution {\n// /**\n// * Tasks with same `id` are replaced. Newest wins.\n// */\n// replace = 0,\n\n// /**\n// * Task with same `id` will continue to run. Reference is returned with option to cancel.\n// * Named \"memoize\" because the result of the task should always be the same for the same `id`,\n// * like e.g. a download.\n// */\n// memoize = 1,\n\n// /** Like memoize, but try to put on top of the list */\n// prioritize = 2,\n\n// /**\n// * Tasks with same `id` throw error\n// */\n// error = 3,\n\n// }\n\nexport interface PoolConfig {\n name?: string\n maxParallel?: number\n idConflictResolution?: PoolTaskIdConflictResolution\n}\n\nexport type PoolTaskFn<T = any> = (taskInfo: PoolTask<T>) => Promise<T>\n\nexport type PoolTaskState = 'waiting' | 'running' | 'finished'\n\n/** Task */\nexport interface PoolTask<T> {\n readonly id: string\n readonly task: PoolTaskFn<T>\n readonly done: (result?: any) => void\n readonly setMax: (max: number) => void\n readonly setResolved: (resolved: number) => void\n readonly incResolved: (inc?: number) => void\n state: PoolTaskState\n priority: number\n /** Same groups are executed only one at a time */\n group?: string\n\n progress: Progress\n max: number\n resolved: number\n\n result?: T\n payload?: unknown\n}\n\nexport interface PoolTaskEvents {\n didUpdate: (\n max: number,\n resolved: number,\n presentMax: number,\n presentResolved: number\n ) => void\n didStart: (id: string) => void\n didCancel: (id: string) => void\n didFinish: () => void\n didResolve: (id: string, value: any) => void\n didReject: (id: string, error: any) => void\n}\n\n// todo: barrier\n// todo: dependents\n\nexport function usePool<T = any>(config: PoolConfig = {}) {\n const {\n maxParallel = 3,\n name = uname('pool'),\n idConflictResolution = 'memoize',\n } = config\n\n const events = new Emitter<PoolTaskEvents>()\n\n const dispose = useDispose()\n dispose.add(cancelAll)\n\n const progress = new Progress({ name })\n\n progress.on('progressCancelled', cancelAll)\n\n let countMax = 0\n let countResolved = 0\n let currentParallel = 0\n let priority = 0\n const tasks: Record<string, PoolTask<T>> = {}\n\n // const [allFinishedPromise, allFinishedResolve] = createPromise()\n\n async function waitFinishAll() {\n if (countMax > 0) {\n const [promise, resolve] = createPromise()\n events.once('didFinish', resolve)\n return promise\n }\n }\n\n async function cleanupFinished() {\n for (const id of Object.keys(tasks)) {\n const task = tasks[id]\n if (task.state === 'finished') {\n await tasks[id].progress.dispose()\n delete tasks[id]\n }\n }\n }\n\n function didFinish() {\n void events.emit('didFinish')\n // allFinishedResolve(countMax)\n countMax = 0\n countResolved = 0\n void cleanupFinished()\n progress.reset()\n }\n\n function didUpdate() {\n let presentMax = 0\n let presentResolved = 0\n for (const { max, resolved, state } of Object.values(tasks)) {\n presentMax += max\n presentResolved += state === 'finished' ? max : Math.min(max, resolved)\n }\n void events.emit(\n 'didUpdate',\n countMax,\n countResolved,\n presentMax,\n presentResolved,\n )\n }\n\n function performNext() {\n didUpdate()\n if (countMax > 0 && countMax === countResolved)\n didFinish()\n if (currentParallel >= maxParallel)\n return\n const waitingTasks = Object.values(tasks).filter(\n t => t.state === 'waiting',\n )\n if (waitingTasks.length > 0) {\n let taskInfo: PoolTask<T> | undefined\n for (const t of waitingTasks) {\n // Skip task if one of same group is running.\n // Forces serialized execution for subgroup of tasks.\n if (\n t.group != null\n && Object.values(tasks).some(\n tt =>\n tt.state === 'running'\n && tt.id !== t.id\n && tt.group === t.group,\n )\n ) {\n continue\n }\n\n // fifo\n if (taskInfo == null || t.priority < taskInfo.priority)\n taskInfo = t\n }\n if (taskInfo != null) {\n const id = taskInfo.id\n const done = taskInfo.done\n taskInfo.state = 'running'\n ++currentParallel\n void events.emit('didStart', id)\n\n const taskFinished = (result?: T) => {\n if (taskInfo) {\n taskInfo.result = result\n taskInfo.state = 'finished'\n taskInfo.resolved = taskInfo.max\n taskInfo.progress?.setCompleted()\n // void taskInfo.progress.dispose()\n }\n --currentParallel\n ++countResolved\n performNext()\n }\n\n taskInfo\n .task(taskInfo)\n .then((r) => {\n done(r)\n void events.emit('didResolve', id, r)\n taskFinished(r)\n })\n .catch((err) => {\n done()\n void events.emit('didReject', id, err)\n taskFinished()\n })\n }\n }\n }\n\n function cancel(id: string) {\n const taskInfo = tasks[id]\n if (taskInfo && taskInfo.state === 'waiting') {\n tasks[id].state = 'finished'\n ++countResolved\n void events.emit('didCancel', id)\n void tasks[id].progress.dispose()\n didUpdate()\n }\n }\n\n function cancelAll() {\n Object.keys(tasks).forEach(cancel)\n // progress.dispose()\n }\n\n function hasById(id: string) {\n return tasks[id] != null\n }\n\n function enqueue<P>(\n task: PoolTaskFn<T>,\n config: {\n id?: string\n max?: number\n resolved?: number\n group?: string\n idConflictResolution?: PoolTaskIdConflictResolution\n payload?: P\n } = {},\n ) {\n let done: any\n const promise: Promise<any> = new Promise(resolve => (done = resolve))\n const id = config.id ?? uuid()\n\n if (tasks[id] != null) {\n const resolution = config.idConflictResolution ?? idConflictResolution\n\n if (resolution === 'replace') {\n cancel(id)\n }\n else if (resolution === 'memoize' || resolution === 'prioritize') {\n const runningTask = tasks[id]\n\n if (resolution === 'prioritize')\n runningTask.priority = ++priority\n\n return {\n id,\n promise: (async () => {\n if (runningTask.state === 'finished')\n return tasks[id].result\n\n // todo: wait for task to finish\n })(),\n dispose: () => cancel(id),\n cancel: () => cancel(id),\n }\n }\n else {\n throw new Error(`Pool task with id=${id} already exists!`)\n }\n }\n\n const taskProgress = new Progress({\n name: id,\n totalUnits: config.max ?? 1,\n completeUnits: config.resolved ?? 0,\n })\n\n progress.addChild(taskProgress)\n\n tasks[id] = {\n id,\n task,\n priority: ++priority,\n group: config.group,\n state: 'waiting',\n max: config.max ?? 1,\n resolved: config.resolved ?? 0,\n done,\n payload: config.payload,\n progress: taskProgress,\n\n /** @deprecated should use `.progress` */\n setMax(units) {\n taskProgress.setTotalUnits(units)\n tasks[id].max = units\n didUpdate()\n },\n\n /** @deprecated should use `.progress` */\n setResolved(units) {\n taskProgress.setCompletetedUnits(units)\n tasks[id].resolved = units\n didUpdate()\n },\n\n /** @deprecated should use `.progress` */\n incResolved(inc = 1) {\n taskProgress.incCompletedUnits(inc)\n tasks[id].resolved += inc\n didUpdate()\n },\n }\n ++countMax\n performNext()\n\n return {\n id,\n promise,\n dispose: () => cancel(id),\n cancel: () => cancel(id),\n }\n }\n\n return {\n events,\n cancel,\n cancelAll,\n hasById,\n progress,\n enqueue,\n dispose,\n waitFinishAll,\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-BPESVGQQ.cjs","../src/common/exec/pool.ts"],"names":["usePool","config","maxParallel","name","uname","idConflictResolution","events","Emitter","dispose","useDispose","cancelAll","progress","Progress","countMax","countResolved","currentParallel","priority","tasks","waitFinishAll","promise","resolve","createPromise","cleanupFinished","id","didFinish","didUpdate","presentMax","presentResolved","max","resolved","state","performNext","waitingTasks","t","taskInfo","tt","done","taskFinished","result","err","cancel","hasById","enqueue","task","uuid","resolution","runningTask","taskProgress","units","inc"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-BPESVGQQ.cjs","sourcesContent":[null,"import { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname, uuid } from '../uuid'\nimport { Progress } from './progress'\nimport { createPromise } from './promise'\n\nexport type PoolTaskIdConflictResolution = 'replace' | 'memoize' | 'prioritize' | 'error'\n\n// export enum PoolTaskIdConflictResolution {\n// /**\n// * Tasks with same `id` are replaced. Newest wins.\n// */\n// replace = 0,\n\n// /**\n// * Task with same `id` will continue to run. Reference is returned with option to cancel.\n// * Named \"memoize\" because the result of the task should always be the same for the same `id`,\n// * like e.g. a download.\n// */\n// memoize = 1,\n\n// /** Like memoize, but try to put on top of the list */\n// prioritize = 2,\n\n// /**\n// * Tasks with same `id` throw error\n// */\n// error = 3,\n\n// }\n\nexport interface PoolConfig {\n name?: string\n maxParallel?: number\n idConflictResolution?: PoolTaskIdConflictResolution\n}\n\nexport type PoolTaskFn<T = any> = (taskInfo: PoolTask<T>) => Promise<T>\n\nexport type PoolTaskState = 'waiting' | 'running' | 'finished'\n\n/** Task */\nexport interface PoolTask<T> {\n readonly id: string\n readonly task: PoolTaskFn<T>\n readonly done: (result?: any) => void\n readonly setMax: (max: number) => void\n readonly setResolved: (resolved: number) => void\n readonly incResolved: (inc?: number) => void\n state: PoolTaskState\n priority: number\n /** Same groups are executed only one at a time */\n group?: string\n\n progress: Progress\n max: number\n resolved: number\n\n result?: T\n payload?: unknown\n}\n\nexport interface PoolTaskEvents {\n didUpdate: (\n max: number,\n resolved: number,\n presentMax: number,\n presentResolved: number\n ) => void\n didStart: (id: string) => void\n didCancel: (id: string) => void\n didFinish: () => void\n didResolve: (id: string, value: any) => void\n didReject: (id: string, error: any) => void\n}\n\n// todo: barrier\n// todo: dependents\n\nexport function usePool<T = any>(config: PoolConfig = {}) {\n const {\n maxParallel = 3,\n name = uname('pool'),\n idConflictResolution = 'memoize',\n } = config\n\n const events = new Emitter<PoolTaskEvents>()\n\n const dispose = useDispose()\n dispose.add(cancelAll)\n\n const progress = new Progress({ name })\n\n progress.on('progressCancelled', cancelAll)\n\n let countMax = 0\n let countResolved = 0\n let currentParallel = 0\n let priority = 0\n const tasks: Record<string, PoolTask<T>> = {}\n\n // const [allFinishedPromise, allFinishedResolve] = createPromise()\n\n async function waitFinishAll() {\n if (countMax > 0) {\n const [promise, resolve] = createPromise()\n events.once('didFinish', resolve)\n return promise\n }\n }\n\n async function cleanupFinished() {\n for (const id of Object.keys(tasks)) {\n const task = tasks[id]\n if (task.state === 'finished') {\n await tasks[id].progress.dispose()\n delete tasks[id]\n }\n }\n }\n\n function didFinish() {\n void events.emit('didFinish')\n // allFinishedResolve(countMax)\n countMax = 0\n countResolved = 0\n void cleanupFinished()\n progress.reset()\n }\n\n function didUpdate() {\n let presentMax = 0\n let presentResolved = 0\n for (const { max, resolved, state } of Object.values(tasks)) {\n presentMax += max\n presentResolved += state === 'finished' ? max : Math.min(max, resolved)\n }\n void events.emit(\n 'didUpdate',\n countMax,\n countResolved,\n presentMax,\n presentResolved,\n )\n }\n\n function performNext() {\n didUpdate()\n if (countMax > 0 && countMax === countResolved)\n didFinish()\n if (currentParallel >= maxParallel)\n return\n const waitingTasks = Object.values(tasks).filter(\n t => t.state === 'waiting',\n )\n if (waitingTasks.length > 0) {\n let taskInfo: PoolTask<T> | undefined\n for (const t of waitingTasks) {\n // Skip task if one of same group is running.\n // Forces serialized execution for subgroup of tasks.\n if (\n t.group != null\n && Object.values(tasks).some(\n tt =>\n tt.state === 'running'\n && tt.id !== t.id\n && tt.group === t.group,\n )\n ) {\n continue\n }\n\n // fifo\n if (taskInfo == null || t.priority < taskInfo.priority)\n taskInfo = t\n }\n if (taskInfo != null) {\n const id = taskInfo.id\n const done = taskInfo.done\n taskInfo.state = 'running'\n ++currentParallel\n void events.emit('didStart', id)\n\n const taskFinished = (result?: T) => {\n if (taskInfo) {\n taskInfo.result = result\n taskInfo.state = 'finished'\n taskInfo.resolved = taskInfo.max\n taskInfo.progress?.setCompleted()\n // void taskInfo.progress.dispose()\n }\n --currentParallel\n ++countResolved\n performNext()\n }\n\n taskInfo\n .task(taskInfo)\n .then((r) => {\n done(r)\n void events.emit('didResolve', id, r)\n taskFinished(r)\n })\n .catch((err) => {\n done()\n void events.emit('didReject', id, err)\n taskFinished()\n })\n }\n }\n }\n\n function cancel(id: string) {\n const taskInfo = tasks[id]\n if (taskInfo && taskInfo.state === 'waiting') {\n tasks[id].state = 'finished'\n ++countResolved\n void events.emit('didCancel', id)\n void tasks[id].progress.dispose()\n didUpdate()\n }\n }\n\n function cancelAll() {\n Object.keys(tasks).forEach(cancel)\n // progress.dispose()\n }\n\n function hasById(id: string) {\n return tasks[id] != null\n }\n\n function enqueue<P>(\n task: PoolTaskFn<T>,\n config: {\n id?: string\n max?: number\n resolved?: number\n group?: string\n idConflictResolution?: PoolTaskIdConflictResolution\n payload?: P\n } = {},\n ) {\n let done: any\n const promise: Promise<any> = new Promise(resolve => (done = resolve))\n const id = config.id ?? uuid()\n\n if (tasks[id] != null) {\n const resolution = config.idConflictResolution ?? idConflictResolution\n\n if (resolution === 'replace') {\n cancel(id)\n }\n else if (resolution === 'memoize' || resolution === 'prioritize') {\n const runningTask = tasks[id]\n\n if (resolution === 'prioritize')\n runningTask.priority = ++priority\n\n return {\n id,\n promise: (async () => {\n if (runningTask.state === 'finished')\n return tasks[id].result\n\n // todo: wait for task to finish\n })(),\n dispose: () => cancel(id),\n cancel: () => cancel(id),\n }\n }\n else {\n throw new Error(`Pool task with id=${id} already exists!`)\n }\n }\n\n const taskProgress = new Progress({\n name: id,\n totalUnits: config.max ?? 1,\n completeUnits: config.resolved ?? 0,\n })\n\n progress.addChild(taskProgress)\n\n tasks[id] = {\n id,\n task,\n priority: ++priority,\n group: config.group,\n state: 'waiting',\n max: config.max ?? 1,\n resolved: config.resolved ?? 0,\n done,\n payload: config.payload,\n progress: taskProgress,\n\n /** @deprecated should use `.progress` */\n setMax(units) {\n taskProgress.setTotalUnits(units)\n tasks[id].max = units\n didUpdate()\n },\n\n /** @deprecated should use `.progress` */\n setResolved(units) {\n taskProgress.setCompletetedUnits(units)\n tasks[id].resolved = units\n didUpdate()\n },\n\n /** @deprecated should use `.progress` */\n incResolved(inc = 1) {\n taskProgress.incCompletedUnits(inc)\n tasks[id].resolved += inc\n didUpdate()\n },\n }\n ++countMax\n performNext()\n\n return {\n id,\n promise,\n dispose: () => cancel(id),\n cancel: () => cancel(id),\n }\n }\n\n return {\n events,\n cancel,\n cancelAll,\n hasById,\n progress,\n enqueue,\n dispose,\n waitFinishAll,\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkBNMSTFVYcjs = require('./chunk-BNMSTFVY.cjs');var _chunkN7JQO6FGcjs = require('./chunk-N7JQO6FG.cjs');var _chunkWGYEX7AJcjs = require('./chunk-WGYEX7AJ.cjs');var _chunk6ZLJSWLMcjs = require('./chunk-6ZLJSWLM.cjs');var o=class h extends _chunkBNMSTFVYcjs.a{constructor(t={}){super();this._isCancelled=!1;this._resetWhenFinished=!0;this._children=[];this.dispose=_chunkWGYEX7AJcjs.b.call(void 0, );this._totalUnits=_nullishCoalesce(t.totalUnits, () => (0)),this._completedUnits=_nullishCoalesce(t.completeUnits, () => (0)),this._resetWhenFinished=_nullishCoalesce(t.resetWhenFinished, () => (!0)),this.name=_nullishCoalesce(t.name, () => (_chunkN7JQO6FGcjs.u.call(void 0, "progress"))),this.dispose.add(async()=>{for(let e of this._children)await e.dispose();await this.emit("progressDispose",this)})}update(){this.emit("progressChanged",this),this._isCancelled&&this._resetWhenFinished&&this.getTotalUnits()<=this.getCompletedUnits()&&this.reset()}reset(){if(this._isCancelled){this._isCancelled=!1;for(let t of this._children)t.reset();this.update()}}async cancel(){if(!this._isCancelled){this._isCancelled=!0,await this.emit("progressCancelled",this);for(let t of this._children)await t.cancel();this.update()}}addChild(t){t.on("progressDispose",()=>this.removeChild(t)),t.on("progressChanged",()=>this.update()),this._children.includes(t)||this._children.push(t),this.update()}createChildProgress(t){let e=new h(t);return this.addChild(e),e}removeChild(t){_chunk6ZLJSWLMcjs.g.call(void 0, this._children,t),this.update()}getTotalUnits(){if(this.isIndeterminate())return 0;let t=this._totalUnits;for(let e of this._children)t+=e.getTotalUnits();return t}getCompletedUnits(){if(this.isIndeterminate())return 0;let t=this._completedUnits;for(let e of this._children)t+=e.getCompletedUnits();return t}isIndeterminate(){return this._totalUnits<=0&&this._children.length<=0}isCancelled(){return this._isCancelled}isFinished(){return this.dispose.isDisposed()||!this.isIndeterminate()&&this.getTotalUnits()<=this.getCompletedUnits()}getFraction(){if(this.isIndeterminate())return 0;let t=this.getCompletedUnits()/this.getTotalUnits();return Number.isNaN(t)&&(t=0),Math.min(1,Math.max(0,t))}getChildrenCount(){return this._children.length}setTotalUnits(t,e){this._totalUnits=t,e!=null&&(this._completedUnits=e),this.update()}incTotalUnits(t=1){this._totalUnits+=t,this.update()}setCompletetedUnits(t){this._completedUnits=t,this.update()}setCompleted(){this._completedUnits=this._totalUnits,this.update()}incCompletedUnits(t=1){this._completedUnits+=t,this.update()}toString(t=0){let e=`${" ".repeat(t)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction()*100)} %, cancel=${this._isCancelled}
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkBNMSTFVYcjs = require('./chunk-BNMSTFVY.cjs');var _chunkDY6RMJJKcjs = require('./chunk-DY6RMJJK.cjs');var _chunkWGYEX7AJcjs = require('./chunk-WGYEX7AJ.cjs');var _chunk6ZLJSWLMcjs = require('./chunk-6ZLJSWLM.cjs');var o=class h extends _chunkBNMSTFVYcjs.a{constructor(t={}){super();this._isCancelled=!1;this._resetWhenFinished=!0;this._children=[];this.dispose=_chunkWGYEX7AJcjs.b.call(void 0, );this._totalUnits=_nullishCoalesce(t.totalUnits, () => (0)),this._completedUnits=_nullishCoalesce(t.completeUnits, () => (0)),this._resetWhenFinished=_nullishCoalesce(t.resetWhenFinished, () => (!0)),this.name=_nullishCoalesce(t.name, () => (_chunkDY6RMJJKcjs.u.call(void 0, "progress"))),this.dispose.add(async()=>{for(let e of this._children)await e.dispose();await this.emit("progressDispose",this)})}update(){this.emit("progressChanged",this),this._isCancelled&&this._resetWhenFinished&&this.getTotalUnits()<=this.getCompletedUnits()&&this.reset()}reset(){if(this._isCancelled){this._isCancelled=!1;for(let t of this._children)t.reset();this.update()}}async cancel(){if(!this._isCancelled){this._isCancelled=!0,await this.emit("progressCancelled",this);for(let t of this._children)await t.cancel();this.update()}}addChild(t){t.on("progressDispose",()=>this.removeChild(t)),t.on("progressChanged",()=>this.update()),this._children.includes(t)||this._children.push(t),this.update()}createChildProgress(t){let e=new h(t);return this.addChild(e),e}removeChild(t){_chunk6ZLJSWLMcjs.g.call(void 0, this._children,t),this.update()}getTotalUnits(){if(this.isIndeterminate())return 0;let t=this._totalUnits;for(let e of this._children)t+=e.getTotalUnits();return t}getCompletedUnits(){if(this.isIndeterminate())return 0;let t=this._completedUnits;for(let e of this._children)t+=e.getCompletedUnits();return t}isIndeterminate(){return this._totalUnits<=0&&this._children.length<=0}isCancelled(){return this._isCancelled}isFinished(){return this.dispose.isDisposed()||!this.isIndeterminate()&&this.getTotalUnits()<=this.getCompletedUnits()}getFraction(){if(this.isIndeterminate())return 0;let t=this.getCompletedUnits()/this.getTotalUnits();return Number.isNaN(t)&&(t=0),Math.min(1,Math.max(0,t))}getChildrenCount(){return this._children.length}setTotalUnits(t,e){this._totalUnits=t,e!=null&&(this._completedUnits=e),this.update()}incTotalUnits(t=1){this._totalUnits+=t,this.update()}setCompletetedUnits(t){this._completedUnits=t,this.update()}setCompleted(){this._completedUnits=this._totalUnits,this.update()}incCompletedUnits(t=1){this._completedUnits+=t,this.update()}toString(t=0){let e=`${" ".repeat(t)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction()*100)} %, cancel=${this._isCancelled}
2
2
  `;for(let l of this._children)e+=l.toString(t+1);return t===0?e.trim():e}};exports.a = o;
3
- //# sourceMappingURL=chunk-SA5MSIRV.cjs.map
3
+ //# sourceMappingURL=chunk-DIIKUZU5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-SA5MSIRV.cjs","../src/common/exec/progress.ts"],"names":["Progress","_Progress","Emitter","opt","useDispose","uname","child","progress","arrayRemoveElement","units","value","completedUnits","step","indent","s"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-SA5MSIRV.cjs","sourcesContent":[null,"// Inspired by https://developer.apple.com/documentation/foundation/progress\n\nimport { arrayRemoveElement } from '../data/array'\nimport { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname } from '../uuid'\n\ninterface ProgressOptions {\n totalUnits?: number\n completeUnits?: number\n resetWhenFinished?: boolean\n name?: string\n}\n\n/**\n * Progress helper with these properties:\n *\n * - `totalUnits` and `completedUnits` for progress\n * - Can be cancelled\n * - Sends events on cancel, changed and dispose\n * - Supports children and propagates values.\n * Total progress is sum of all units in the tree.\n * - On `dispose` child removes itself from parent.\n */\nexport class Progress extends Emitter<{\n progressCancelled: (progress: Progress) => void\n progressChanged: (progress: Progress) => void\n progressDispose: (progress: Progress) => void\n}> {\n private _totalUnits: number\n private _completedUnits: number\n private _isCancelled = false\n private _resetWhenFinished = true\n private _children: Progress[] = []\n\n dispose = useDispose()\n name: string\n\n constructor(opt: ProgressOptions = {}) {\n super()\n\n this._totalUnits = opt.totalUnits ?? 0\n this._completedUnits = opt.completeUnits ?? 0\n this._resetWhenFinished = opt.resetWhenFinished ?? true\n this.name = opt.name ?? uname('progress')\n\n // Make sure to cleanup also children\n this.dispose.add(async () => {\n for (const child of this._children)\n await child.dispose()\n await this.emit('progressDispose', this)\n })\n }\n\n /** Notify others about changes and reset on completion, if flag is set. */\n private update() {\n void this.emit('progressChanged', this)\n\n if (this._isCancelled && this._resetWhenFinished) {\n if (this.getTotalUnits() <= this.getCompletedUnits())\n this.reset()\n }\n }\n\n /** Fresh start */\n reset() {\n if (this._isCancelled) {\n this._isCancelled = false\n for (const child of this._children)\n child.reset()\n this.update()\n }\n }\n\n /** Notify and mark as cancelled. May take some time before having an effect. */\n async cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true\n await this.emit('progressCancelled', this)\n for (const child of this._children)\n await child.cancel()\n this.update()\n }\n }\n\n /** Add child progress, which count into its parents units. On `dispose` it will auto remove itself from parent. */\n addChild(child: Progress) {\n child.on('progressDispose', () => this.removeChild(child))\n child.on('progressChanged', () => this.update())\n if (!this._children.includes(child))\n this._children.push(child)\n this.update()\n }\n\n /** Create child progress. */\n createChildProgress(opt?: ProgressOptions) {\n const progress = new Progress(opt)\n this.addChild(progress)\n return progress\n }\n\n removeChild(child: Progress) {\n arrayRemoveElement(this._children, child)\n this.update()\n }\n\n /** Total units including children */\n getTotalUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._totalUnits\n for (const child of this._children)\n units += child.getTotalUnits()\n return units\n }\n\n /** Completed units including children */\n getCompletedUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._completedUnits\n for (const child of this._children)\n units += child.getCompletedUnits()\n return units\n // return Math.min(this.getTotalUnits(), units)\n }\n\n /** Cannot calculate progress, because totalUnits are missing. Special representation in UI. */\n isIndeterminate(): boolean {\n return this._totalUnits <= 0 && this._children.length <= 0\n }\n\n isCancelled() {\n return this._isCancelled\n }\n\n /** Either disposed or all units completed. */\n isFinished() {\n return this.dispose.isDisposed() || (!this.isIndeterminate() && (this.getTotalUnits() <= this.getCompletedUnits()))\n }\n\n /** Value from 0 to 1, where 1 is 100% completeness. */\n getFraction() {\n if (this.isIndeterminate())\n return 0\n let value = this.getCompletedUnits() / this.getTotalUnits()\n if (Number.isNaN(value))\n value = 0\n return Math.min(1, Math.max(0, value))\n }\n\n getChildrenCount() {\n return this._children.length\n }\n\n /** Change total units. */\n setTotalUnits(units: number, completedUnits?: number) {\n this._totalUnits = units\n if (completedUnits != null)\n this._completedUnits = completedUnits\n this.update()\n }\n\n /** Relatively change total units. */\n incTotalUnits(step = 1) {\n this._totalUnits += step\n this.update()\n }\n\n /** Set fixed number of completed units. */\n setCompletetedUnits(units: number) {\n this._completedUnits = units\n this.update()\n }\n\n /** Set to 100% without disposing. */\n setCompleted() {\n this._completedUnits = this._totalUnits\n this.update()\n }\n\n /** Dynamically change completed units. */\n incCompletedUnits(step = 1) {\n this._completedUnits += step\n this.update()\n }\n\n /** Progress tree to string for debuggin purposes. Consider using `name` attribute of Progress. */\n toString(indent = 0) {\n let s = `${' '.repeat(indent)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction() * 100)} %, cancel=${this._isCancelled}\\n`\n for (const child of this._children)\n s += child.toString(indent + 1)\n if (indent === 0)\n return s.trim()\n return s\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DIIKUZU5.cjs","../src/common/exec/progress.ts"],"names":["Progress","_Progress","Emitter","opt","useDispose","uname","child","progress","arrayRemoveElement","units","value","completedUnits","step","indent","s"],"mappings":"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","file":"/Users/dirk/work/github-zeed/dist/chunk-DIIKUZU5.cjs","sourcesContent":[null,"// Inspired by https://developer.apple.com/documentation/foundation/progress\n\nimport { arrayRemoveElement } from '../data/array'\nimport { useDispose } from '../dispose-defer'\nimport { Emitter } from '../msg/emitter'\nimport { uname } from '../uuid'\n\ninterface ProgressOptions {\n totalUnits?: number\n completeUnits?: number\n resetWhenFinished?: boolean\n name?: string\n}\n\n/**\n * Progress helper with these properties:\n *\n * - `totalUnits` and `completedUnits` for progress\n * - Can be cancelled\n * - Sends events on cancel, changed and dispose\n * - Supports children and propagates values.\n * Total progress is sum of all units in the tree.\n * - On `dispose` child removes itself from parent.\n */\nexport class Progress extends Emitter<{\n progressCancelled: (progress: Progress) => void\n progressChanged: (progress: Progress) => void\n progressDispose: (progress: Progress) => void\n}> {\n private _totalUnits: number\n private _completedUnits: number\n private _isCancelled = false\n private _resetWhenFinished = true\n private _children: Progress[] = []\n\n dispose = useDispose()\n name: string\n\n constructor(opt: ProgressOptions = {}) {\n super()\n\n this._totalUnits = opt.totalUnits ?? 0\n this._completedUnits = opt.completeUnits ?? 0\n this._resetWhenFinished = opt.resetWhenFinished ?? true\n this.name = opt.name ?? uname('progress')\n\n // Make sure to cleanup also children\n this.dispose.add(async () => {\n for (const child of this._children)\n await child.dispose()\n await this.emit('progressDispose', this)\n })\n }\n\n /** Notify others about changes and reset on completion, if flag is set. */\n private update() {\n void this.emit('progressChanged', this)\n\n if (this._isCancelled && this._resetWhenFinished) {\n if (this.getTotalUnits() <= this.getCompletedUnits())\n this.reset()\n }\n }\n\n /** Fresh start */\n reset() {\n if (this._isCancelled) {\n this._isCancelled = false\n for (const child of this._children)\n child.reset()\n this.update()\n }\n }\n\n /** Notify and mark as cancelled. May take some time before having an effect. */\n async cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true\n await this.emit('progressCancelled', this)\n for (const child of this._children)\n await child.cancel()\n this.update()\n }\n }\n\n /** Add child progress, which count into its parents units. On `dispose` it will auto remove itself from parent. */\n addChild(child: Progress) {\n child.on('progressDispose', () => this.removeChild(child))\n child.on('progressChanged', () => this.update())\n if (!this._children.includes(child))\n this._children.push(child)\n this.update()\n }\n\n /** Create child progress. */\n createChildProgress(opt?: ProgressOptions) {\n const progress = new Progress(opt)\n this.addChild(progress)\n return progress\n }\n\n removeChild(child: Progress) {\n arrayRemoveElement(this._children, child)\n this.update()\n }\n\n /** Total units including children */\n getTotalUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._totalUnits\n for (const child of this._children)\n units += child.getTotalUnits()\n return units\n }\n\n /** Completed units including children */\n getCompletedUnits(): number {\n if (this.isIndeterminate())\n return 0\n let units = this._completedUnits\n for (const child of this._children)\n units += child.getCompletedUnits()\n return units\n // return Math.min(this.getTotalUnits(), units)\n }\n\n /** Cannot calculate progress, because totalUnits are missing. Special representation in UI. */\n isIndeterminate(): boolean {\n return this._totalUnits <= 0 && this._children.length <= 0\n }\n\n isCancelled() {\n return this._isCancelled\n }\n\n /** Either disposed or all units completed. */\n isFinished() {\n return this.dispose.isDisposed() || (!this.isIndeterminate() && (this.getTotalUnits() <= this.getCompletedUnits()))\n }\n\n /** Value from 0 to 1, where 1 is 100% completeness. */\n getFraction() {\n if (this.isIndeterminate())\n return 0\n let value = this.getCompletedUnits() / this.getTotalUnits()\n if (Number.isNaN(value))\n value = 0\n return Math.min(1, Math.max(0, value))\n }\n\n getChildrenCount() {\n return this._children.length\n }\n\n /** Change total units. */\n setTotalUnits(units: number, completedUnits?: number) {\n this._totalUnits = units\n if (completedUnits != null)\n this._completedUnits = completedUnits\n this.update()\n }\n\n /** Relatively change total units. */\n incTotalUnits(step = 1) {\n this._totalUnits += step\n this.update()\n }\n\n /** Set fixed number of completed units. */\n setCompletetedUnits(units: number) {\n this._completedUnits = units\n this.update()\n }\n\n /** Set to 100% without disposing. */\n setCompleted() {\n this._completedUnits = this._totalUnits\n this.update()\n }\n\n /** Dynamically change completed units. */\n incCompletedUnits(step = 1) {\n this._completedUnits += step\n this.update()\n }\n\n /** Progress tree to string for debuggin purposes. Consider using `name` attribute of Progress. */\n toString(indent = 0) {\n let s = `${' '.repeat(indent)}${this.name}: ${this._completedUnits} of ${this._totalUnits} units, ${Math.floor(this.getFraction() * 100)} %, cancel=${this._isCancelled}\\n`\n for (const child of this._children)\n s += child.toString(indent + 1)\n if (indent === 0)\n return s.trim()\n return s\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunk7ADMZQFXcjs = require('./chunk-7ADMZQFX.cjs');var _chunkN7XQZD7Ocjs = require('./chunk-N7XQZD7O.cjs');var _chunkPVD4WJLPcjs = require('./chunk-PVD4WJLP.cjs');var _chunk2FUSCDBBcjs = require('./chunk-2FUSCDBB.cjs');var u=16;function a(){return _chunkN7XQZD7Ocjs.a.call(void 0, u)}function $(t=a()){return _chunk7ADMZQFXcjs.i.call(void 0, t,22)}function h(t){return _chunk7ADMZQFXcjs.i.call(void 0, t,22)}function w(t){return _chunk7ADMZQFXcjs.j.call(void 0, t,u)}function I(t=a()){return _chunk7ADMZQFXcjs.c.call(void 0, t,26)}function M(t){return _chunk7ADMZQFXcjs.c.call(void 0, t,26)}function _(t){return _chunk7ADMZQFXcjs.d.call(void 0, t,u)}var R="10000000-1000-4000-8000-100000000000";function S(){return typeof crypto<"u"&&crypto.randomUUID!=null?crypto.randomUUID():R.replace(/[018]/g,t=>(t^_chunkN7XQZD7Ocjs.a.call(void 0, 1)[0]&15>>t/4).toString(16))}function T(t){let e=_chunkPVD4WJLPcjs.H.call(void 0, t);return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`}function V(t){return _chunkPVD4WJLPcjs.I.call(void 0, t.replace(/-/g,""))}var D=16e11;function k(t){let e=new Uint8Array([0,0,0,0,0,0]),o=e.length-1;for(let d=0;d<e.length;d++){let p=t&255;e[o-d]=p,t=(t-p)/256}return e}function B(){let t=_chunk2FUSCDBBcjs.a.call(void 0, )-D;return new Uint8Array([...k(t),..._chunkN7XQZD7Ocjs.a.call(void 0, 10)])}function J(){return v(B())}function K(t){return q(E(t))}function q(t){return new Date(D+t.slice(0,6).reduce((e,o)=>e*256+o,0))}function N(){return new Uint32Array(_chunkN7XQZD7Ocjs.a.call(void 0, 4))[0]}var f={base62:{uuid:$,uuidDecode:w,uuidEncode:h},base32:{uuid:I,uuidDecode:_,uuidEncode:M},uuidv4:{uuid:S,uuidDecode:V,uuidEncode:T},test:{uuid:()=>F("test"),uuidDecode:t=>_chunkPVD4WJLPcjs.F.call(void 0, t),uuidEncode:t=>_chunkPVD4WJLPcjs.E.call(void 0, t)}},i="base62",b=!1;function O(t,e=!1){t==="test"&&H("test"),i=_nullishCoalesce(t, () => ("base62")),b=e}function P(){return f[i].uuid(b?B():a())}function E(t){return f[i].uuidDecode(t)}function v(t){return f[i].uuidEncode(t)}function Q(t){try{return E(t).length===u}catch (e2){}return!1}var r={};function F(t="id"){return r[t]==null&&(r[t]=0),`${t}-${r[t]++}`}function H(t="id"){r[t]=0}var C=0;function W(){return`id-${C++}`}exports.a = a; exports.b = $; exports.c = h; exports.d = w; exports.e = I; exports.f = M; exports.g = _; exports.h = S; exports.i = T; exports.j = V; exports.k = B; exports.l = J; exports.m = K; exports.n = q; exports.o = N; exports.p = O; exports.q = P; exports.r = E; exports.s = v; exports.t = Q; exports.u = F; exports.v = H; exports.w = W;
2
- //# sourceMappingURL=chunk-N7JQO6FG.cjs.map
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkN7XQZD7Ocjs = require('./chunk-N7XQZD7O.cjs');var _chunk7ADMZQFXcjs = require('./chunk-7ADMZQFX.cjs');var _chunkPVD4WJLPcjs = require('./chunk-PVD4WJLP.cjs');var _chunk2FUSCDBBcjs = require('./chunk-2FUSCDBB.cjs');var u=16;function a(){return _chunkN7XQZD7Ocjs.a.call(void 0, u)}function $(t=a()){return _chunk7ADMZQFXcjs.i.call(void 0, t,22)}function h(t){return _chunk7ADMZQFXcjs.i.call(void 0, t,22)}function w(t){return _chunk7ADMZQFXcjs.j.call(void 0, t,u)}function I(t=a()){return _chunk7ADMZQFXcjs.c.call(void 0, t,26)}function M(t){return _chunk7ADMZQFXcjs.c.call(void 0, t,26)}function _(t){return _chunk7ADMZQFXcjs.d.call(void 0, t,u)}var R="10000000-1000-4000-8000-100000000000";function S(){return typeof crypto<"u"&&crypto.randomUUID!=null?crypto.randomUUID():R.replace(/[018]/g,t=>(t^_chunkN7XQZD7Ocjs.a.call(void 0, 1)[0]&15>>t/4).toString(16))}function T(t){let e=_chunkPVD4WJLPcjs.H.call(void 0, t);return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`}function V(t){return _chunkPVD4WJLPcjs.I.call(void 0, t.replace(/-/g,""))}var D=16e11;function k(t){let e=new Uint8Array([0,0,0,0,0,0]),o=e.length-1;for(let d=0;d<e.length;d++){let p=t&255;e[o-d]=p,t=(t-p)/256}return e}function B(){let t=_chunk2FUSCDBBcjs.a.call(void 0, )-D;return new Uint8Array([...k(t),..._chunkN7XQZD7Ocjs.a.call(void 0, 10)])}function J(){return v(B())}function K(t){return q(E(t))}function q(t){return new Date(D+t.slice(0,6).reduce((e,o)=>e*256+o,0))}function N(){return new Uint32Array(_chunkN7XQZD7Ocjs.a.call(void 0, 4))[0]}var f={base62:{uuid:$,uuidDecode:w,uuidEncode:h},base32:{uuid:I,uuidDecode:_,uuidEncode:M},uuidv4:{uuid:S,uuidDecode:V,uuidEncode:T},test:{uuid:()=>F("test"),uuidDecode:t=>_chunkPVD4WJLPcjs.F.call(void 0, t),uuidEncode:t=>_chunkPVD4WJLPcjs.E.call(void 0, t)}},i="base62",b=!1;function O(t,e=!1){t==="test"&&H("test"),i=_nullishCoalesce(t, () => ("base62")),b=e}function P(){return f[i].uuid(b?B():a())}function E(t){return f[i].uuidDecode(t)}function v(t){return f[i].uuidEncode(t)}function Q(t){try{return E(t).length===u}catch (e2){}return!1}var r={};function F(t="id"){return r[t]==null&&(r[t]=0),`${t}-${r[t]++}`}function H(t="id"){r[t]=0}var C=0;function W(){return`id-${C++}`}exports.a = a; exports.b = $; exports.c = h; exports.d = w; exports.e = I; exports.f = M; exports.g = _; exports.h = S; exports.i = T; exports.j = V; exports.k = B; exports.l = J; exports.m = K; exports.n = q; exports.o = N; exports.p = O; exports.q = P; exports.r = E; exports.s = v; exports.t = Q; exports.u = F; exports.v = H; exports.w = W;
2
+ //# sourceMappingURL=chunk-DY6RMJJK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-N7JQO6FG.cjs","../src/common/uuid.ts"],"names":["uuidBytesLength","uuidBytes","randomUint8Array","uuidB62","bytes","encodeBase62","uuidEncodeB62","uuidDecodeB62","uuid","decodeBase62","uuidB32","encodeBase32","uuidEncodeB32","uuidDecodeB32","decodeBase32","pattern","uuidv4","c","uuidEncodeV4","id","toHex"],"mappings":"AAAA,qOAAwD,wDAAyC,wDAA8D,wDAAyC,ICOlMA,CAAAA,CAAkB,EAAA,CAEjB,SAASC,CAAAA,CAAAA,CAAwB,CACtC,OAAOC,iCAAAA,CAAgC,CACzC,CAIO,SAASC,CAAAA,CAAQC,CAAAA,CAAQH,CAAAA,CAAU,CAAA,CAAW,CACnD,OAAOI,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAEO,SAASE,CAAAA,CAAcF,CAAAA,CAA2B,CACvD,OAAOC,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAEO,SAASG,CAAAA,CAAcC,CAAAA,CAA0B,CACtD,OAAOC,iCAAAA,CAAaD,CAAMR,CAAe,CAC3C,CAIO,SAASU,CAAAA,CAAQN,CAAAA,CAAQH,CAAAA,CAAU,CAAA,CAAW,CACnD,OAAOU,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAEO,SAASQ,CAAAA,CAAcR,CAAAA,CAA2B,CACvD,OAAOO,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAEO,SAASS,CAAAA,CAAcL,CAAAA,CAA0B,CACtD,OAAOM,iCAAAA,CAAaN,CAAMR,CAAe,CAC3C,CAKA,IAAMe,CAAAA,CAAU,sCAAA,CAET,SAASC,CAAAA,CAAAA,CAAS,CACvB,OAAQ,OAAO,MAAA,CAAW,GAAA,EAAe,MAAA,CAAO,UAAA,EAAc,IAAA,CAC1D,MAAA,CAAO,UAAA,CAAW,CAAA,CAClBD,CAAAA,CAAQ,OAAA,CAAQ,QAAA,CAAWE,CAAAA,EAAAA,CAAYA,CAAAA,CAAKf,iCAAAA,CAAkB,CAAA,CAAE,CAAC,CAAA,CAAK,EAAA,EAAOe,CAAAA,CAAI,CAAA,CAAA,CAAM,QAAA,CAAS,EAAE,CAAC,CACzG,CAEO,SAASC,CAAAA,CAAad,CAAAA,CAA2B,CACtD,IAAMe,CAAAA,CAAKC,iCAAAA,CAAW,CAAA,CACtB,MAAO,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-N7JQO6FG.cjs","sourcesContent":[null,"import { randomUint8Array } from './crypto'\nimport { decodeBase32, decodeBase62, encodeBase32, encodeBase62 } from './data/basex'\nimport { fromHex, toHex, toUint8Array, Uint8ArrayToString } from './data/bin'\nimport { getTimestamp } from './time'\n\n// 128 bit UUID\n\nconst uuidBytesLength = 16\n\nexport function uuidBytes(): Uint8Array {\n return randomUint8Array(uuidBytesLength)\n}\n\n// Base62\n\nexport function uuidB62(bytes = uuidBytes()): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidEncodeB62(bytes: Uint8Array): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidDecodeB62(uuid: string): Uint8Array {\n return decodeBase62(uuid, uuidBytesLength)\n}\n\n// Base32\n\nexport function uuidB32(bytes = uuidBytes()): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidEncodeB32(bytes: Uint8Array): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidDecodeB32(uuid: string): Uint8Array {\n return decodeBase32(uuid, uuidBytesLength)\n}\n\n// UUIDv4\n\n// https://stackoverflow.com/a/2117523/140927\nconst pattern = '10000000-1000-4000-8000-100000000000' // String([1e7] + -1e3 + -4e3 + -8e3 + -1e11)\n\nexport function uuidv4() {\n return (typeof crypto !== 'undefined' && crypto.randomUUID != null)\n ? crypto.randomUUID() // native!\n : pattern.replace(/[018]/g, (c: any) => (c ^ (randomUint8Array(1)[0] & (15 >> (c / 4)))).toString(16))\n}\n\nexport function uuidEncodeV4(bytes: Uint8Array): string {\n const id = toHex(bytes)\n return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}` // 10000000 - 1000 - 4000 - 8000 - 100000000000\n}\n\nexport function uuidDecodeV4(uuid: string): Uint8Array {\n return fromHex(uuid.replace(/-/g, ''))\n}\n\n// Sortable UID\n\n// https://github.com/segmentio/ksuid\n// https://pkg.go.dev/github.com/rsms/go-uuid\n\n/**\n * Sortable unique ID\n * Inspired by https://github.com/rsms/go-uuid\n *\n * Bytes 0-5: Current time in miliseconds from 2021-06-01T00:00:00Z\n * Bytes 6-15: Random\n */\n\n// 1622505600000 // new Date('2021-06-01T00:00:00Z').getTime()\nconst ReferenceDateInMS = 1600000000000\n\n// 6 bytes will stay valid until end of time: new Date(1622505600000 + 0xffffffffffff) === Date Sun Jan 01 10941 06:31:50 GMT+0100 (Central European Standard Time)\n\nfunction longToByteArray(long: number) {\n const byteArray = new Uint8Array([0, 0, 0, 0, 0, 0])\n const bytes = byteArray.length - 1\n for (let index = 0; index < byteArray.length; index++) {\n const byte = long & 0xFF\n byteArray[bytes - index] = byte\n long = (long - byte) / 256\n }\n return byteArray\n}\n\n// function byteArrayToLong(byteArray: number[]): number {\n// var value = 0\n// for (var i = byteArray.length - 1; i >= 0; i--) {\n// value = value * 256 + byteArray[i]\n// }\n// return value\n// }\n\nexport function suidBytes(): Uint8Array {\n const ms = getTimestamp() - ReferenceDateInMS\n return new Uint8Array([...longToByteArray(ms), ...randomUint8Array(10)])\n}\n\nexport function suid(): string {\n return uuidEncode(suidBytes())\n}\n\nexport function suidDate(id: string): Date {\n return suidBytesDate(uuidDecode(id))\n}\n\nexport function suidBytesDate(id: Uint8Array): Date {\n return new Date(\n ReferenceDateInMS + id.slice(0, 6).reduce((acc, byte) => acc * 256 + byte, 0),\n )\n}\n\n// 32 bit UUID\n\nexport function uuid32bit(): number {\n return new Uint32Array(randomUint8Array(4))[0]\n}\n\n// Global Settings\n\nconst mapModes = {\n base62: {\n uuid: uuidB62,\n uuidDecode: uuidDecodeB62,\n uuidEncode: uuidEncodeB62,\n },\n base32: {\n uuid: uuidB32,\n uuidDecode: uuidDecodeB32,\n uuidEncode: uuidEncodeB32,\n },\n uuidv4: {\n uuid: uuidv4,\n uuidDecode: uuidDecodeV4,\n uuidEncode: uuidEncodeV4,\n },\n test: {\n uuid: () => uname('test'),\n uuidDecode: (id: string) => toUint8Array(id),\n uuidEncode: (bin: Uint8Array) => Uint8ArrayToString(bin),\n },\n}\n\nlet _mode: keyof typeof mapModes = 'base62'\nlet _sorted = false\n\nexport function setUuidDefaultEncoding(mode?: keyof typeof mapModes, sorted = false) {\n if (mode === 'test')\n unameReset('test')\n\n _mode = mode ?? 'base62'\n _sorted = sorted\n}\n\nexport function uuid(): string {\n return mapModes[_mode].uuid(_sorted ? suidBytes() : uuidBytes())\n}\n\nexport function uuidDecode(uuid: string): Uint8Array {\n return mapModes[_mode].uuidDecode(uuid)\n}\n\nexport function uuidEncode(bytes: Uint8Array): string {\n return mapModes[_mode].uuidEncode(bytes)\n}\n\nexport function uuidIsValid(uuid: string): boolean {\n try {\n const bin = uuidDecode(uuid)\n return bin.length === uuidBytesLength\n }\n catch (err) {\n // log.warn('Invalid ID:', uuid)\n }\n return false\n}\n\n// Simple Counters\n\nconst _unameCounters: Record<string, number> = {}\n\nexport function uname(name = 'id'): string {\n if (_unameCounters[name] == null)\n _unameCounters[name] = 0\n\n return `${name}-${_unameCounters[name]++}`\n}\n\nexport function unameReset(name = 'id') {\n _unameCounters[name] = 0\n}\n\nlet _qid = 0\n\nexport function qid(): string {\n return `id-${_qid++}`\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-DY6RMJJK.cjs","../src/common/uuid.ts"],"names":["uuidBytesLength","uuidBytes","randomUint8Array","uuidB62","bytes","encodeBase62","uuidEncodeB62","uuidDecodeB62","uuid","decodeBase62","uuidB32","encodeBase32","uuidEncodeB32","uuidDecodeB32","decodeBase32","pattern","uuidv4","c","uuidEncodeV4","id","toHex"],"mappings":"AAAA,qOAAwC,wDAAyD,wDAA8D,wDAAyC,ICOlMA,CAAAA,CAAkB,EAAA,CAEjB,SAASC,CAAAA,CAAAA,CAAwB,CACtC,OAAOC,iCAAAA,CAAgC,CACzC,CAIO,SAASC,CAAAA,CAAQC,CAAAA,CAAQH,CAAAA,CAAU,CAAA,CAAW,CACnD,OAAOI,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAEO,SAASE,CAAAA,CAAcF,CAAAA,CAA2B,CACvD,OAAOC,iCAAAA,CAAaD,CAAO,EAAE,CAC/B,CAEO,SAASG,CAAAA,CAAcC,CAAAA,CAA0B,CACtD,OAAOC,iCAAAA,CAAaD,CAAMR,CAAe,CAC3C,CAIO,SAASU,CAAAA,CAAQN,CAAAA,CAAQH,CAAAA,CAAU,CAAA,CAAW,CACnD,OAAOU,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAEO,SAASQ,CAAAA,CAAcR,CAAAA,CAA2B,CACvD,OAAOO,iCAAAA,CAAaP,CAAO,EAAE,CAC/B,CAEO,SAASS,CAAAA,CAAcL,CAAAA,CAA0B,CACtD,OAAOM,iCAAAA,CAAaN,CAAMR,CAAe,CAC3C,CAKA,IAAMe,CAAAA,CAAU,sCAAA,CAET,SAASC,CAAAA,CAAAA,CAAS,CACvB,OAAQ,OAAO,MAAA,CAAW,GAAA,EAAe,MAAA,CAAO,UAAA,EAAc,IAAA,CAC1D,MAAA,CAAO,UAAA,CAAW,CAAA,CAClBD,CAAAA,CAAQ,OAAA,CAAQ,QAAA,CAAWE,CAAAA,EAAAA,CAAYA,CAAAA,CAAKf,iCAAAA,CAAkB,CAAA,CAAE,CAAC,CAAA,CAAK,EAAA,EAAOe,CAAAA,CAAI,CAAA,CAAA,CAAM,QAAA,CAAS,EAAE,CAAC,CACzG,CAEO,SAASC,CAAAA,CAAad,CAAAA,CAA2B,CACtD,IAAMe,CAAAA,CAAKC,iCAAAA,CAAW,CAAA,CACtB,MAAO,CAAA,EAAA","file":"/Users/dirk/work/github-zeed/dist/chunk-DY6RMJJK.cjs","sourcesContent":[null,"import { randomUint8Array } from './crypto'\nimport { decodeBase32, decodeBase62, encodeBase32, encodeBase62 } from './data/basex'\nimport { fromHex, toHex, toUint8Array, Uint8ArrayToString } from './data/bin'\nimport { getTimestamp } from './time'\n\n// 128 bit UUID\n\nconst uuidBytesLength = 16\n\nexport function uuidBytes(): Uint8Array {\n return randomUint8Array(uuidBytesLength)\n}\n\n// Base62\n\nexport function uuidB62(bytes = uuidBytes()): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidEncodeB62(bytes: Uint8Array): string {\n return encodeBase62(bytes, 22)\n}\n\nexport function uuidDecodeB62(uuid: string): Uint8Array {\n return decodeBase62(uuid, uuidBytesLength)\n}\n\n// Base32\n\nexport function uuidB32(bytes = uuidBytes()): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidEncodeB32(bytes: Uint8Array): string {\n return encodeBase32(bytes, 26)\n}\n\nexport function uuidDecodeB32(uuid: string): Uint8Array {\n return decodeBase32(uuid, uuidBytesLength)\n}\n\n// UUIDv4\n\n// https://stackoverflow.com/a/2117523/140927\nconst pattern = '10000000-1000-4000-8000-100000000000' // String([1e7] + -1e3 + -4e3 + -8e3 + -1e11)\n\nexport function uuidv4() {\n return (typeof crypto !== 'undefined' && crypto.randomUUID != null)\n ? crypto.randomUUID() // native!\n : pattern.replace(/[018]/g, (c: any) => (c ^ (randomUint8Array(1)[0] & (15 >> (c / 4)))).toString(16))\n}\n\nexport function uuidEncodeV4(bytes: Uint8Array): string {\n const id = toHex(bytes)\n return `${id.slice(0, 8)}-${id.slice(8, 12)}-${id.slice(12, 16)}-${id.slice(16, 20)}-${id.slice(20)}` // 10000000 - 1000 - 4000 - 8000 - 100000000000\n}\n\nexport function uuidDecodeV4(uuid: string): Uint8Array {\n return fromHex(uuid.replace(/-/g, ''))\n}\n\n// Sortable UID\n\n// https://github.com/segmentio/ksuid\n// https://pkg.go.dev/github.com/rsms/go-uuid\n\n/**\n * Sortable unique ID\n * Inspired by https://github.com/rsms/go-uuid\n *\n * Bytes 0-5: Current time in miliseconds from 2021-06-01T00:00:00Z\n * Bytes 6-15: Random\n */\n\n// 1622505600000 // new Date('2021-06-01T00:00:00Z').getTime()\nconst ReferenceDateInMS = 1600000000000\n\n// 6 bytes will stay valid until end of time: new Date(1622505600000 + 0xffffffffffff) === Date Sun Jan 01 10941 06:31:50 GMT+0100 (Central European Standard Time)\n\nfunction longToByteArray(long: number) {\n const byteArray = new Uint8Array([0, 0, 0, 0, 0, 0])\n const bytes = byteArray.length - 1\n for (let index = 0; index < byteArray.length; index++) {\n const byte = long & 0xFF\n byteArray[bytes - index] = byte\n long = (long - byte) / 256\n }\n return byteArray\n}\n\n// function byteArrayToLong(byteArray: number[]): number {\n// var value = 0\n// for (var i = byteArray.length - 1; i >= 0; i--) {\n// value = value * 256 + byteArray[i]\n// }\n// return value\n// }\n\nexport function suidBytes(): Uint8Array {\n const ms = getTimestamp() - ReferenceDateInMS\n return new Uint8Array([...longToByteArray(ms), ...randomUint8Array(10)])\n}\n\nexport function suid(): string {\n return uuidEncode(suidBytes())\n}\n\nexport function suidDate(id: string): Date {\n return suidBytesDate(uuidDecode(id))\n}\n\nexport function suidBytesDate(id: Uint8Array): Date {\n return new Date(\n ReferenceDateInMS + id.slice(0, 6).reduce((acc, byte) => acc * 256 + byte, 0),\n )\n}\n\n// 32 bit UUID\n\nexport function uuid32bit(): number {\n return new Uint32Array(randomUint8Array(4))[0]\n}\n\n// Global Settings\n\nconst mapModes = {\n base62: {\n uuid: uuidB62,\n uuidDecode: uuidDecodeB62,\n uuidEncode: uuidEncodeB62,\n },\n base32: {\n uuid: uuidB32,\n uuidDecode: uuidDecodeB32,\n uuidEncode: uuidEncodeB32,\n },\n uuidv4: {\n uuid: uuidv4,\n uuidDecode: uuidDecodeV4,\n uuidEncode: uuidEncodeV4,\n },\n test: {\n uuid: () => uname('test'),\n uuidDecode: (id: string) => toUint8Array(id),\n uuidEncode: (bin: Uint8Array) => Uint8ArrayToString(bin),\n },\n}\n\nlet _mode: keyof typeof mapModes = 'base62'\nlet _sorted = false\n\nexport function setUuidDefaultEncoding(mode?: keyof typeof mapModes, sorted = false) {\n if (mode === 'test')\n unameReset('test')\n\n _mode = mode ?? 'base62'\n _sorted = sorted\n}\n\nexport function uuid(): string {\n return mapModes[_mode].uuid(_sorted ? suidBytes() : uuidBytes())\n}\n\nexport function uuidDecode(uuid: string): Uint8Array {\n return mapModes[_mode].uuidDecode(uuid)\n}\n\nexport function uuidEncode(bytes: Uint8Array): string {\n return mapModes[_mode].uuidEncode(bytes)\n}\n\nexport function uuidIsValid(uuid: string): boolean {\n try {\n const bin = uuidDecode(uuid)\n return bin.length === uuidBytesLength\n }\n catch (err) {\n // log.warn('Invalid ID:', uuid)\n }\n return false\n}\n\n// Simple Counters\n\nconst _unameCounters: Record<string, number> = {}\n\nexport function uname(name = 'id'): string {\n if (_unameCounters[name] == null)\n _unameCounters[name] = 0\n\n return `${name}-${_unameCounters[name]++}`\n}\n\nexport function unameReset(name = 'id') {\n _unameCounters[name] = 0\n}\n\nlet _qid = 0\n\nexport function qid(): string {\n return `id-${_qid++}`\n}\n"]}
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkY4CZHSBVcjs = require('./chunk-Y4CZHSBV.cjs');var _chunkQSTP2ZQTcjs = require('./chunk-QSTP2ZQT.cjs');var _chunkS43EDRFKcjs = require('./chunk-S43EDRFK.cjs');var _chunkHBZHLYXWcjs = require('./chunk-HBZHLYXW.cjs');var _chunk3O7Y3U7Ycjs = require('./chunk-3O7Y3U7Y.cjs');function C(s,i=_nullishCoalesce(_optionalChain([process, 'optionalAccess', _ => _.argv]), () => ({}))){_chunk3O7Y3U7Ycjs.b.call(void 0, _chunkY4CZHSBVcjs.e.call(void 0, s),"schema should be a flat object");let l={},e=[];_chunkQSTP2ZQTcjs.a.call(void 0, s._object,(t,r)=>{_optionalChain([r, 'access', _2 => _2._props, 'optionalAccess', _3 => _3.argShort])&&(l[_chunkHBZHLYXWcjs.a.call(void 0, r._props.argShort)]=_chunkHBZHLYXWcjs.a.call(void 0, t)),r.type==="boolean"&&e.push(_chunkHBZHLYXWcjs.a.call(void 0, t))});let o=[...i],p,y=[],c={};for(;p=o.shift();){let t;if(/^--?/.test(p)){let r=p.replace(/^--?/,"");if(p.includes("=")){let[n,T]=r.split("=",2);r=n.trim(),t=T.trim()}r=_chunkHBZHLYXWcjs.a.call(void 0, r),r=_nullishCoalesce(l[r], () => (r)),e.includes(r)?c[r]=!0:(t=_nullishCoalesce(_nullishCoalesce(t, () => (o.shift())), () => ("")),c[r]=t)}else y.push(p)}return[_chunkQSTP2ZQTcjs.a.call(void 0, s._object,(t,r)=>{let n=c[_chunkHBZHLYXWcjs.a.call(void 0, t)];return r.type==="number"&&n!=null&&(n=_chunkS43EDRFKcjs.f.call(void 0, n)),r.parse(n)}),y]}function R(s){_chunk3O7Y3U7Ycjs.b.call(void 0, _chunkY4CZHSBVcjs.e.call(void 0, s),"schema should be a flat object");let i=[];return _chunkQSTP2ZQTcjs.a.call(void 0, s._object,(l,e)=>{let o=`--${_chunkHBZHLYXWcjs.d.call(void 0, l)}`;_optionalChain([e, 'access', _4 => _4._props, 'optionalAccess', _5 => _5.argShort])&&(o+=`, -${_chunkHBZHLYXWcjs.d.call(void 0, e._props.argShort)}`),e.type!=="boolean"&&(o+=`=${e.type}`),i.push(o),_optionalChain([e, 'access', _6 => _6._props, 'optionalAccess', _7 => _7.argDesc])&&i.push(` ${_optionalChain([e, 'access', _8 => _8._props, 'optionalAccess', _9 => _9.argDesc])}`)}),i.join(`
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkY4CZHSBVcjs = require('./chunk-Y4CZHSBV.cjs');var _chunkQSTP2ZQTcjs = require('./chunk-QSTP2ZQT.cjs');var _chunkS43EDRFKcjs = require('./chunk-S43EDRFK.cjs');var _chunkHBZHLYXWcjs = require('./chunk-HBZHLYXW.cjs');var _chunk3O7Y3U7Ycjs = require('./chunk-3O7Y3U7Y.cjs');function C(o,p=_nullishCoalesce(_optionalChain([process, 'optionalAccess', _ => _.argv]), () => ({}))){_chunk3O7Y3U7Ycjs.b.call(void 0, _chunkY4CZHSBVcjs.e.call(void 0, o),"schema should be a flat object");let l={},e=[];_chunkQSTP2ZQTcjs.a.call(void 0, o._object,(t,r)=>{_optionalChain([r, 'access', _2 => _2._props, 'optionalAccess', _3 => _3.argShort])&&(l[_chunkHBZHLYXWcjs.a.call(void 0, r._props.argShort)]=_chunkHBZHLYXWcjs.a.call(void 0, t)),r.type==="boolean"&&e.push(_chunkHBZHLYXWcjs.a.call(void 0, t))});let n=[...p],s,y=[],c={};for(;s=n.shift();){let t;if(/^--?/.test(s)){let r=s.replace(/^--?/,"");if(s.includes("=")){let[a,T]=r.split("=",2);r=a.trim(),t=T.trim()}r=_chunkHBZHLYXWcjs.a.call(void 0, r),r=_nullishCoalesce(l[r], () => (r)),e.includes(r)?c[r]=!0:(t=_nullishCoalesce(_nullishCoalesce(t, () => (n.shift())), () => ("")),c[r]=t)}else y.push(s)}return[_chunkQSTP2ZQTcjs.a.call(void 0, o._object,(t,r)=>{let a=c[_chunkHBZHLYXWcjs.a.call(void 0, t)];return r.type==="number"&&a!=null&&(a=_chunkS43EDRFKcjs.f.call(void 0, a)),r.parse(a)}),y]}function R(o){_chunk3O7Y3U7Ycjs.b.call(void 0, _chunkY4CZHSBVcjs.e.call(void 0, o),"schema should be a flat object");let p=[];return _chunkQSTP2ZQTcjs.a.call(void 0, o._object,(l,e)=>{let n=`--${_chunkHBZHLYXWcjs.d.call(void 0, l)}`;_optionalChain([e, 'access', _4 => _4._props, 'optionalAccess', _5 => _5.argShort])&&(n+=`, -${_chunkHBZHLYXWcjs.d.call(void 0, e._props.argShort)}`),e.type!=="boolean"&&(n+=`=${e.type}`),p.push(n);let s=_nullishCoalesce(_optionalChain([e, 'access', _6 => _6._props, 'optionalAccess', _7 => _7.argDesc]), () => (_optionalChain([e, 'access', _8 => _8._props, 'optionalAccess', _9 => _9.desc])));s&&p.push(` ${s}`)}),p.join(`
2
2
  `)}exports.a = C; exports.b = R;
3
- //# sourceMappingURL=chunk-QV4LM6ZT.cjs.map
3
+ //# sourceMappingURL=chunk-GEMIICZ3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-QV4LM6ZT.cjs","../src/common/schema/parse-args.ts"],"names":["parseSchemaArgs","schema","args","assert","isSchemaObjectFlat","alias","booleanArgs","objectMap","key","toCamelCase","argList","arg","names","argsObj","value","name","valuePart","valueToInteger","helpSchemaArgs","lines","s","fromCamelCase"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,wDAA2C,wDAAyC,SCe9LA,CAAAA,CAAmBC,CAAAA,CAAiBC,CAAAA,kCAAY,OAAA,2BAAS,MAAA,SAAQ,CAAC,GAAA,CAAkB,CAClGC,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,IAAMC,CAAAA,CAAgC,CAAC,CAAA,CACjCC,CAAAA,CAAwB,CAAC,CAAA,CAE/BC,iCAAAA,CAAUN,CAAO,OAAA,CAAU,CAACO,CAAAA,CAAKP,CAAAA,CAAAA,EAAsB,iBACjDA,CAAAA,qBAAO,MAAA,6BAAQ,UAAA,EAAA,CACjBI,CAAAA,CAAMI,iCAAAA,CAAYR,CAAO,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAIQ,iCAAAA,CAAe,CAAA,CAAA,CAC1DR,CAAAA,CAAO,IAAA,GAAS,SAAA,EAClBK,CAAAA,CAAY,IAAA,CAAKG,iCAAAA,CAAe,CAAC,CAErC,CAAC,CAAA,CAED,IAAMC,CAAAA,CAAU,CAAC,GAAGR,CAAI,CAAA,CACpBS,CAAAA,CACEC,CAAAA,CAAkB,CAAC,CAAA,CACnBC,CAAAA,CAA+B,CAAC,CAAA,CAGtC,GAAA,CAAA,CAAQF,CAAAA,CAAMD,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAA,CAAI,CAC9B,IAAII,CAAAA,CACJ,EAAA,CAAI,MAAA,CAAO,IAAA,CAAKH,CAAG,CAAA,CAAG,CACpB,IAAIH,CAAAA,CAAMG,CAAAA,CAAI,OAAA,CAAQ,MAAA,CAAQ,EAAE,CAAA,CAChC,EAAA,CAAIA,CAAAA,CAAI,QAAA,CAAS,GAAG,CAAA,CAAG,CACrB,GAAM,CAACI,CAAAA,CAAMC,CAAS,CAAA,CAAIR,CAAAA,CAAI,KAAA,CAAM,GAAA,CAAK,CAAC,CAAA,CAC1CA,CAAAA,CAAMO,CAAAA,CAAK,IAAA,CAAK,CAAA,CAChBD,CAAAA,CAAQE,CAAAA,CAAU,IAAA,CAAK,CACzB,CACAR,CAAAA,CAAMC,iCAAAA,CAAe,CAAA,CACrBD,CAAAA,kBAAMH,CAAAA,CAAMG,CAAG,CAAA,SAAKA,GAAAA,CAChBF,CAAAA,CAAY,QAAA,CAASE,CAAG,CAAA,CAC1BK,CAAAA,CAAQL,CAAG,CAAA,CAAI,CAAA,CAAA,CAAA,CAGfM,CAAAA,mCAAQA,CAAAA,SAASJ,CAAAA,CAAQ,KAAA,CAAM,GAAA,SAAK,IAAA,CACpCG,CAAAA,CAAQL,CAAG,CAAA,CAAIM,CAAAA,CAEnB,CAAA,KAEEF,CAAAA,CAAM,IAAA,CAAKD,CAAG,CAElB,CAUA,MAAO,CARYJ,iCAAAA,CAAUN,CAAO,OAAA,CAAU,CAACO,CAAAA,CAAKP,CAAAA,CAAAA,EAAW,CAC7D,IAAIa,CAAAA,CAAQD,CAAAA,CAAQJ,iCAAAA,CAAe,CAAC,CAAA,CACpC,OAAIR,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAYa,CAAAA,EAAS,IAAA,EAAA,CACvCA,CAAAA,CAAQG,iCAAAA,CAAoB,CAAA,CAAA,CAEvBhB,CAAAA,CAAO,KAAA,CAAMa,CAAK,CAC3B,CAAC,CAAA,CAEmBF,CAAK,CAC3B,CAEO,SAASM,CAAAA,CAAkBjB,CAAAA,CAAyB,CACzDE,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,IAAMe,CAAAA,CAAkB,CAAC,CAAA,CAEzB,OAAAZ,iCAAAA,CAAUN,CAAO,OAAA,CAAU,CAACO,CAAAA,CAAKP,CAAAA,CAAAA,EAAsB,CACrD,IAAImB,CAAAA,CAAI,CAAA,EAAA,EAAKC,iCAAAA,CAAiB,CAAC,CAAA,CAAA;AAWnC","file":"/Users/dirk/work/github-zeed/dist/chunk-QV4LM6ZT.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { fromCamelCase, toCamelCase } from '../data/camelcase'\nimport { valueToInteger } from '../data/convert'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeProps {\n argShort?: string\n argDesc?: string\n }\n}\n\n// eslint-disable-next-line node/prefer-global/process\nexport function parseSchemaArgs<T>(schema: Type<T>, args: any = process?.argv ?? {}): [T, string[]] {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n const alias: Record<string, string> = {}\n const booleanArgs: string[] = []\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n if (schema._props?.argShort)\n alias[toCamelCase(schema._props.argShort)] = toCamelCase(key)\n if (schema.type === 'boolean') {\n booleanArgs.push(toCamelCase(key))\n }\n })\n\n const argList = [...args]\n let arg: string | undefined\n const names: string[] = []\n const argsObj: Record<string, any> = {}\n\n // eslint-disable-next-line no-cond-assign\n while ((arg = argList.shift())) {\n let value: any\n if (/^--?/.test(arg)) {\n let key = arg.replace(/^--?/, '')\n if (arg.includes('=')) {\n const [name, valuePart] = key.split('=', 2)\n key = name.trim()\n value = valuePart.trim()\n }\n key = toCamelCase(key)\n key = alias[key] ?? key\n if (booleanArgs.includes(key)) {\n argsObj[key] = true\n }\n else {\n value = value ?? argList.shift() ?? ''\n argsObj[key] = value\n }\n }\n else {\n names.push(arg)\n }\n }\n\n const argsResult = objectMap(schema._object!, (key, schema) => {\n let value = argsObj[toCamelCase(key)]\n if (schema.type === 'number' && value != null) {\n value = valueToInteger(value)\n }\n return schema.parse(value)\n }) as T\n\n return [argsResult, names]\n}\n\nexport function helpSchemaArgs<T>(schema: Type<T>): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n const lines: string[] = []\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n let s = `--${fromCamelCase(key)}`\n if (schema._props?.argShort)\n s += `, -${fromCamelCase(schema._props.argShort)}`\n if (schema.type !== 'boolean')\n s += `=${schema.type}`\n lines.push(s)\n if (schema._props?.argDesc)\n lines.push(` ${schema._props?.argDesc}`)\n })\n\n return lines.join('\\n')\n}\n"]}
1
+ {"version":3,"sources":["/Users/dirk/work/github-zeed/dist/chunk-GEMIICZ3.cjs","../src/common/schema/parse-args.ts"],"names":["parseSchemaArgs","schema","args","assert","isSchemaObjectFlat","alias","booleanArgs","objectMap","key","toCamelCase","argList","arg","names","argsObj","value","name","valuePart","valueToInteger","helpSchemaArgs","lines","s","fromCamelCase"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,wDAAgD,wDAAyC,SCenMA,CAAAA,CAAmBC,CAAAA,CAAiBC,CAAAA,kCAAY,OAAA,2BAAS,MAAA,SAAQ,CAAC,GAAA,CAAkB,CAClGC,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,IAAMC,CAAAA,CAAgC,CAAC,CAAA,CACjCC,CAAAA,CAAwB,CAAC,CAAA,CAE/BC,iCAAAA,CAAUN,CAAO,OAAA,CAAU,CAACO,CAAAA,CAAKP,CAAAA,CAAAA,EAAsB,iBACjDA,CAAAA,qBAAO,MAAA,6BAAQ,UAAA,EAAA,CACjBI,CAAAA,CAAMI,iCAAAA,CAAYR,CAAO,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAIQ,iCAAAA,CAAe,CAAA,CAAA,CAC1DR,CAAAA,CAAO,IAAA,GAAS,SAAA,EAClBK,CAAAA,CAAY,IAAA,CAAKG,iCAAAA,CAAe,CAAC,CAErC,CAAC,CAAA,CAED,IAAMC,CAAAA,CAAU,CAAC,GAAGR,CAAI,CAAA,CACpBS,CAAAA,CACEC,CAAAA,CAAkB,CAAC,CAAA,CACnBC,CAAAA,CAA+B,CAAC,CAAA,CAGtC,GAAA,CAAA,CAAQF,CAAAA,CAAMD,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAA,CAAI,CAC9B,IAAII,CAAAA,CACJ,EAAA,CAAI,MAAA,CAAO,IAAA,CAAKH,CAAG,CAAA,CAAG,CACpB,IAAIH,CAAAA,CAAMG,CAAAA,CAAI,OAAA,CAAQ,MAAA,CAAQ,EAAE,CAAA,CAChC,EAAA,CAAIA,CAAAA,CAAI,QAAA,CAAS,GAAG,CAAA,CAAG,CACrB,GAAM,CAACI,CAAAA,CAAMC,CAAS,CAAA,CAAIR,CAAAA,CAAI,KAAA,CAAM,GAAA,CAAK,CAAC,CAAA,CAC1CA,CAAAA,CAAMO,CAAAA,CAAK,IAAA,CAAK,CAAA,CAChBD,CAAAA,CAAQE,CAAAA,CAAU,IAAA,CAAK,CACzB,CACAR,CAAAA,CAAMC,iCAAAA,CAAe,CAAA,CACrBD,CAAAA,kBAAMH,CAAAA,CAAMG,CAAG,CAAA,SAAKA,GAAAA,CAChBF,CAAAA,CAAY,QAAA,CAASE,CAAG,CAAA,CAC1BK,CAAAA,CAAQL,CAAG,CAAA,CAAI,CAAA,CAAA,CAAA,CAGfM,CAAAA,mCAAQA,CAAAA,SAASJ,CAAAA,CAAQ,KAAA,CAAM,GAAA,SAAK,IAAA,CACpCG,CAAAA,CAAQL,CAAG,CAAA,CAAIM,CAAAA,CAEnB,CAAA,KAEEF,CAAAA,CAAM,IAAA,CAAKD,CAAG,CAElB,CAUA,MAAO,CARYJ,iCAAAA,CAAUN,CAAO,OAAA,CAAU,CAACO,CAAAA,CAAKP,CAAAA,CAAAA,EAAW,CAC7D,IAAIa,CAAAA,CAAQD,CAAAA,CAAQJ,iCAAAA,CAAe,CAAC,CAAA,CACpC,OAAIR,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAYa,CAAAA,EAAS,IAAA,EAAA,CACvCA,CAAAA,CAAQG,iCAAAA,CAAoB,CAAA,CAAA,CAEvBhB,CAAAA,CAAO,KAAA,CAAMa,CAAK,CAC3B,CAAC,CAAA,CAEmBF,CAAK,CAC3B,CAEO,SAASM,CAAAA,CAAkBjB,CAAAA,CAAyB,CACzDE,iCAAAA,iCAAOC,CAAyB,CAAA,CAAG,gCAAgC,CAAA,CAEnE,IAAMe,CAAAA,CAAkB,CAAC,CAAA,CAEzB,OAAAZ,iCAAAA,CAAUN,CAAO,OAAA,CAAU,CAACO,CAAAA,CAAKP,CAAAA,CAAAA,EAAsB,CACrD,IAAImB,CAAAA,CAAI,CAAA,EAAA,EAAKC,iCAAAA,CAAiB,CAAC,CAAA,CAAA;AAYnC","file":"/Users/dirk/work/github-zeed/dist/chunk-GEMIICZ3.cjs","sourcesContent":[null,"import type { Type } from './schema'\nimport { assert } from '../assert'\nimport { fromCamelCase, toCamelCase } from '../data/camelcase'\nimport { valueToInteger } from '../data/convert'\nimport { objectMap } from '../data/object'\nimport { isSchemaObjectFlat } from './utils'\n\ndeclare module './schema' {\n interface TypeProps {\n argShort?: string\n argDesc?: string\n }\n}\n\n// eslint-disable-next-line node/prefer-global/process\nexport function parseSchemaArgs<T>(schema: Type<T>, args: any = process?.argv ?? {}): [T, string[]] {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n const alias: Record<string, string> = {}\n const booleanArgs: string[] = []\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n if (schema._props?.argShort)\n alias[toCamelCase(schema._props.argShort)] = toCamelCase(key)\n if (schema.type === 'boolean') {\n booleanArgs.push(toCamelCase(key))\n }\n })\n\n const argList = [...args]\n let arg: string | undefined\n const names: string[] = []\n const argsObj: Record<string, any> = {}\n\n // eslint-disable-next-line no-cond-assign\n while ((arg = argList.shift())) {\n let value: any\n if (/^--?/.test(arg)) {\n let key = arg.replace(/^--?/, '')\n if (arg.includes('=')) {\n const [name, valuePart] = key.split('=', 2)\n key = name.trim()\n value = valuePart.trim()\n }\n key = toCamelCase(key)\n key = alias[key] ?? key\n if (booleanArgs.includes(key)) {\n argsObj[key] = true\n }\n else {\n value = value ?? argList.shift() ?? ''\n argsObj[key] = value\n }\n }\n else {\n names.push(arg)\n }\n }\n\n const argsResult = objectMap(schema._object!, (key, schema) => {\n let value = argsObj[toCamelCase(key)]\n if (schema.type === 'number' && value != null) {\n value = valueToInteger(value)\n }\n return schema.parse(value)\n }) as T\n\n return [argsResult, names]\n}\n\nexport function helpSchemaArgs<T>(schema: Type<T>): string {\n assert(isSchemaObjectFlat(schema), 'schema should be a flat object')\n\n const lines: string[] = []\n\n objectMap(schema._object!, (key, schema: Type<any>) => {\n let s = `--${fromCamelCase(key)}`\n if (schema._props?.argShort)\n s += `, -${fromCamelCase(schema._props.argShort)}`\n if (schema.type !== 'boolean')\n s += `=${schema.type}`\n lines.push(s)\n const desc = schema._props?.argDesc ?? schema._props?.desc\n if (desc)\n lines.push(` ${desc}`)\n })\n\n return lines.join('\\n')\n}\n"]}
@@ -1,2 +1,2 @@
1
- import{b as h}from"./chunk-4LIUGZHX.js";import{a}from"./chunk-L32SZCS2.js";import{u as c}from"./chunk-WVAB6E4Q.js";import{c as o}from"./chunk-OTNXCBEK.js";var s=class extends a{constructor(e){super();this.publish=this.emit.bind(this);this.subscribe=this.on.bind(this);let{name:n,encoder:t=new h,channel:l,debug:u=!1}=e;this.channel=l,this.encoder=t,this.debug=u,this.name=n??this.channel.id??c("pubsub"),this.log=o(`${this.shortId}`),this.debug&&(this.channel.on("connect",()=>{this.log("channel connected")}),this.channel.on("disconnect",()=>{this.log("channel disconnected")})),this.channel.on("message",async({data:d})=>{let i=await this.encoder.decode(d);if(this.debug?this.log(`channel message, event=${i?.event}, info=`,i):this.log(`channel message, event=${i?.event}`),i){let{event:m,args:g}=i;await this.emitSuper(m,...g)}})}get shortId(){return this.name.substr(0,6)}async emitSuper(e,...n){return await super.emit(e,...n)}async emit(e,...n){try{if(this.debug?this.log(`emit(${String(e)})`,e):this.log(`emit(${String(e)})`,n.length),!this.channel.isConnected)return this.log.warn("channel not connected"),!1;let t=await this.encoder.encode({event:e,args:n});return this.channel.postMessage(t),!0}catch(t){this.log.warn(`emit(${String(e)})`,t)}return!1}};function y(r){return new s(r)}export{s as a,y as b};
2
- //# sourceMappingURL=chunk-M3BNDEQI.js.map
1
+ import{b as h}from"./chunk-4LIUGZHX.js";import{a}from"./chunk-L32SZCS2.js";import{u as c}from"./chunk-KBV6B6VE.js";import{c as o}from"./chunk-OTNXCBEK.js";var s=class extends a{constructor(e){super();this.publish=this.emit.bind(this);this.subscribe=this.on.bind(this);let{name:n,encoder:t=new h,channel:l,debug:u=!1}=e;this.channel=l,this.encoder=t,this.debug=u,this.name=n??this.channel.id??c("pubsub"),this.log=o(`${this.shortId}`),this.debug&&(this.channel.on("connect",()=>{this.log("channel connected")}),this.channel.on("disconnect",()=>{this.log("channel disconnected")})),this.channel.on("message",async({data:d})=>{let i=await this.encoder.decode(d);if(this.debug?this.log(`channel message, event=${i?.event}, info=`,i):this.log(`channel message, event=${i?.event}`),i){let{event:m,args:g}=i;await this.emitSuper(m,...g)}})}get shortId(){return this.name.substr(0,6)}async emitSuper(e,...n){return await super.emit(e,...n)}async emit(e,...n){try{if(this.debug?this.log(`emit(${String(e)})`,e):this.log(`emit(${String(e)})`,n.length),!this.channel.isConnected)return this.log.warn("channel not connected"),!1;let t=await this.encoder.encode({event:e,args:n});return this.channel.postMessage(t),!0}catch(t){this.log.warn(`emit(${String(e)})`,t)}return!1}};function y(r){return new s(r)}export{s as a,y as b};
2
+ //# sourceMappingURL=chunk-GLXW4DRV.js.map
@@ -1,2 +1,2 @@
1
- import{b as A}from"./chunk-4LIUGZHX.js";import{h as C}from"./chunk-GBX4HAEG.js";import{q as E,u as j}from"./chunk-WVAB6E4Q.js";import{f as T,h as D}from"./chunk-2COZNZSC.js";import{c as $}from"./chunk-OTNXCBEK.js";function O(g,M,p={}){return new Proxy(p,{get:(d,u)=>u in d?d[u]:(...w)=>g(u,w,M)})}function N(g={}){let{name:M=j("hub"),encoder:p=new A,retryAfter:d=1e3,ignoreUnhandled:u=!0,logLevel:w=!1}=g,s=$(M,w),L={},c,f=[],x,m={},R=()=>{clearTimeout(x)},y=async()=>{if(clearTimeout(x),c){if(c.isConnected)for(;f.length;){let n=f[0];try{c.postMessage(await p.encode(n)),f.shift()}catch(o){s.warn("postMessage",o);break}}f.length>0&&d>0&&(x=setTimeout(y,d))}},b=async n=>{s("enqueue postMessage",n),f.push(n),await y()},P=async n=>{c=n,c.on("connect",y),c.on("message",async o=>{s("onmessage",typeof o);let{name:r,args:v,id:e,result:l,error:a}=await p.decode(o.data);if(r){s(`name ${r} id ${e}`);try{if(L[r]==null)throw new Error(`handler for ${r} was not found`);let t=L[r](...v);D(t)&&(t=await t),s(`result ${t}`),e&&await b({id:e,result:t})}catch(t){let i=t instanceof Error?t:new Error(C(t));s.warn("execution error",i.name),await b({id:e,error:{message:i.message,stack:i.stack,name:i.name}})}}else if(e)if(s(`response for id=${e}: result=${l}, error=${a}`),m[e]==null)l===void 0?s(`skip response for ${e}`):s.warn(`no response hook for ${e}`);else{let[t,i]=m[e];if(t&&i)if(delete m[e],a){let h=new Error(a.message);h.stack=a.stack,h.name=a.name,s.warn("reject",h.name),i(h)}else s("resolve",l),t(l)}else u||s.warn("Unhandled message",o)}),await y()},k=async(n,o,r={})=>{let{timeout:v=5e3}=r,e=E();return await b({name:n,args:o,id:e}),T(new Promise((l,a)=>m[e]=[l,a]),v)};return g.channel&&P(g.channel),{dispose:R,connect:P,listen(n){Object.assign(L,n)},send(){return O(k,{},{options(n){return O(k,{...n})}})}}}export{O as a,N as b};
2
- //# sourceMappingURL=chunk-3U2QR5SP.js.map
1
+ import{b as A}from"./chunk-4LIUGZHX.js";import{h as C}from"./chunk-GBX4HAEG.js";import{q as E,u as j}from"./chunk-KBV6B6VE.js";import{f as T,h as D}from"./chunk-2COZNZSC.js";import{c as $}from"./chunk-OTNXCBEK.js";function O(g,M,p={}){return new Proxy(p,{get:(d,u)=>u in d?d[u]:(...w)=>g(u,w,M)})}function N(g={}){let{name:M=j("hub"),encoder:p=new A,retryAfter:d=1e3,ignoreUnhandled:u=!0,logLevel:w=!1}=g,s=$(M,w),L={},c,f=[],x,m={},R=()=>{clearTimeout(x)},y=async()=>{if(clearTimeout(x),c){if(c.isConnected)for(;f.length;){let n=f[0];try{c.postMessage(await p.encode(n)),f.shift()}catch(o){s.warn("postMessage",o);break}}f.length>0&&d>0&&(x=setTimeout(y,d))}},b=async n=>{s("enqueue postMessage",n),f.push(n),await y()},P=async n=>{c=n,c.on("connect",y),c.on("message",async o=>{s("onmessage",typeof o);let{name:r,args:v,id:e,result:l,error:a}=await p.decode(o.data);if(r){s(`name ${r} id ${e}`);try{if(L[r]==null)throw new Error(`handler for ${r} was not found`);let t=L[r](...v);D(t)&&(t=await t),s(`result ${t}`),e&&await b({id:e,result:t})}catch(t){let i=t instanceof Error?t:new Error(C(t));s.warn("execution error",i.name),await b({id:e,error:{message:i.message,stack:i.stack,name:i.name}})}}else if(e)if(s(`response for id=${e}: result=${l}, error=${a}`),m[e]==null)l===void 0?s(`skip response for ${e}`):s.warn(`no response hook for ${e}`);else{let[t,i]=m[e];if(t&&i)if(delete m[e],a){let h=new Error(a.message);h.stack=a.stack,h.name=a.name,s.warn("reject",h.name),i(h)}else s("resolve",l),t(l)}else u||s.warn("Unhandled message",o)}),await y()},k=async(n,o,r={})=>{let{timeout:v=5e3}=r,e=E();return await b({name:n,args:o,id:e}),T(new Promise((l,a)=>m[e]=[l,a]),v)};return g.channel&&P(g.channel),{dispose:R,connect:P,listen(n){Object.assign(L,n)},send(){return O(k,{},{options(n){return O(k,{...n})}})}}}export{O as a,N as b};
2
+ //# sourceMappingURL=chunk-GMJXOP7Z.js.map
@@ -1,2 +1,2 @@
1
1
  import{a as y,b as T,e as b,h as O,i as g,j as k,l as j}from"./chunk-7AQ7JFDC.js";import{d as h}from"./chunk-JQXSUJUH.js";var i=class{constructor(e,t){this.extend=e=>{let t={...this._object,...e};return I(t)};this.type=e,this._check=t??(()=>!0)}optional(){return this._optional=!0,this}default(e){return this._default=e,this}parse(e){if(e==null&&this._default!=null&&(T(this._default)?e=this._default():e=this._default),!(e==null&&this._optional===!0)){if(e==null)throw new Error(`cannot be undefined, is ${e}`);if(!this._check||this._check(e))return e;throw new Error("wrong value")}}map(e,t){return t.call(this,e,this)??e}props(e){return this._props=e,this}},c=class extends i{};function o(n,e){let t=new c(n,e?._check);return e?._default!==void 0&&(t._default=e?._default),e?._optional!==void 0&&(t._optional=e?._optional),e?._props!==void 0&&(t._props=e?._props),e?._object!==void 0&&(t._object=e?._object),t}var f=class extends i{pattern(e){return this}};function R(){return new f("string",O)}function u(){return o("number",{_check:g})}var K=u,A=u,v=u;function P(){return o("int",{_check:k})}function E(){return o("boolean",{_check:j})}function w(){return o("none",{_check:n=>n==null,_optional:!0})}function U(){return o("any",{_check:n=>n!=null,_optional:!0})}var a=class extends i{constructor(e){super("object",()=>!0),this._object=e}parse(e){if(e==null&&this._optional===!0)return;let t={};if(!y(e))return new Error("expected object input");if(!y(this._object))return new Error("expected object definition");for(let[r,s]of Object.entries(this._object)){let p=s.parse(e[r]);p!==void 0&&(t[r]=p)}return t}map(e,t){let r=t.call(this,e,this);if(r!==void 0)return r;let s={};if(e)for(let[p,m]of Object.entries(this._object??{})){let _=m.map(e[p],t);_!==void 0&&(s[p]=_)}return s}};function I(n){return new a(n)}function H(n){return new a(n)}function L(n){return o(h(n)?.type??"any",{})}function V(n){return o("literal",{_check:e=>e===n,_default:n})}function F(n){return o("string",{_check:e=>n.includes(e)})}function z(n){return o("tuple",{_check:e=>n.every((t,r)=>t._check(e[r]))})}var d=class extends i{constructor(e,t){super(e,b),this._type=t}};function B(n){return new d("array",n)}var l=class extends i{constructor(e,t,r){super(e,s=>T(s)),this._args=t,this._ret=r}};function N(n,e){return new l("function",n,e)}var x=class extends i{constructor(e,t,r){super(e,s=>T(s)),this._info=t,this._ret=r}};function $(n,e){return new x("rpc",n,e??w())}var J={string:R,number:u,int:P,boolean:E,none:w,any:U,object:I,array:B,tuple:z,union:L,func:N,rpc:$,literal:V,stringLiterals:F,float:K,double:A,real:v,record:H};export{i as a,R as b,u as c,K as d,A as e,v as f,P as g,E as h,w as i,U as j,a as k,I as l,H as m,L as n,V as o,F as p,z as q,d as r,B as s,N as t,x as u,$ as v,J as w};
2
- //# sourceMappingURL=chunk-FPI3N3JC.js.map
2
+ //# sourceMappingURL=chunk-GO7IQI3W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/schema/schema.ts"],"sourcesContent":["// With many, many inspiration from https://github.com/badrap/valita MIT License as of 2024-09-10\n\nimport { isArray, isBoolean, isFunction, isInteger, isNumber, isObject, isString } from '../data/is'\nimport { first } from '../data/utils'\n\nexport interface TypeProps {\n desc?: string\n}\n\n// export interface TypeAssert {\n// fn: (obj: any) => boolean | never\n// message?: string\n// }\n\nexport interface Type<T = unknown> {\n _default?: T\n _optional?: boolean\n _props?: TypeProps\n _object?: T\n readonly type: string\n readonly _check: (obj: any) => boolean\n optional: () => Type<T | undefined>\n default: (value: any) => Type<T>\n parse: (obj: any) => T\n map: (obj: any, fn: (this: Type<T>, obj: any, schema: Type<T>) => any) => any\n props: (props: TypeProps) => Type<T>\n extend: <O>(obj: O) => Type<T & InferObject<O>>\n}\n\nexport abstract class TypeClass<T = unknown> implements Type<T> {\n readonly type\n readonly _check\n\n constructor(name: string, check?: (obj: any) => boolean) {\n this.type = name\n this._check = check ?? (() => true)\n }\n\n _object?: T\n\n _optional?: boolean\n\n optional(): TypeClass<T | undefined> { // todo keep the inherited class type\n this._optional = true\n return this\n }\n\n _default?: T\n\n default(value: any): TypeClass<T> { // todo keep the inherited class type\n this._default = value\n return this\n }\n\n parse(obj: any): T {\n if (obj == null) {\n if (this._default != null) {\n if (isFunction(this._default))\n obj = this._default()\n else\n obj = this._default\n }\n }\n if (obj == null && this._optional === true)\n return undefined as any\n if (obj == null)\n throw new Error(`cannot be undefined, is ${obj}`)\n if (!this._check || this._check(obj))\n return obj\n throw new Error('wrong value')\n }\n\n map(obj: any, fn: (this: Type<T>, obj: any, schema: Type<T>) => any): any {\n return fn.call(this, obj, this) ?? obj\n }\n\n _props?: TypeProps\n\n props(props: TypeProps) {\n this._props = props\n return this\n }\n\n extend: <O>(obj: O) => Type<T & InferObject<O>> = (obj: any) => {\n const newObj = { ...this._object, ...obj }\n return object(newObj) as any\n }\n}\n\nexport type Infer<T> = T extends Type<infer TT> ? TT : never\n\n// Helper\n\nclass TypeGeneric<T> extends TypeClass<T> {\n}\n\nfunction generic<T = unknown>(type: string, opt?: Partial<Type<T>>): Type<T> {\n const t = new TypeGeneric<T>(type, opt?._check)\n if (opt?._default !== undefined)\n t._default = opt?._default\n if (opt?._optional !== undefined)\n t._optional = opt?._optional\n if (opt?._props !== undefined)\n t._props = opt?._props\n if (opt?._object !== undefined)\n t._object = opt?._object\n return t\n}\n\n// Primitives\n\nclass TypeStringClass<T extends string> extends TypeClass<T> {\n pattern(rx: RegExp) {\n // this.ass\n return this\n }\n}\n\n/// Just a simple string type\nexport function string() {\n return new TypeStringClass<string>('string', isString)\n}\n\n/// Number as in Javascript, could be float or int\nexport function number() {\n return generic<number>('number', {\n _check: isNumber,\n })\n}\n\nexport const float = number\nexport const double = number\nexport const real = number\n\n/// Integer\nexport function int() {\n return generic<number>('int', {\n _check: isInteger,\n })\n}\n\n/// Boolean\nexport function boolean() {\n return generic<boolean>('boolean', {\n _check: isBoolean,\n })\n}\n\n// Like undefined | null in TS and nil in Swift\nexport function none() {\n return generic<undefined>('none', {\n _check: v => v == null,\n _optional: true,\n })\n}\n\n/// todo: appears to result in optional inside object\nexport function any() {\n return generic<any>('any', {\n _check: v => v != null,\n _optional: true,\n })\n}\n\n// Object\n\ntype ObjectFixOptional<T> = {\n [K in keyof T as undefined extends T[K] ? K : never]?: T[K] & {}\n} & {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K] & {}\n}\n\ntype ObjectPretty<V> = Extract<{ [K in keyof V]: V[K] }, unknown>\n\nexport type InferObject<T> = ObjectPretty<ObjectFixOptional<{\n [K in keyof T]: Infer<T[K]>\n}>>\n\n// interface TypeObject<T = unknown> extends Type<T> {\n// _object: T\n// }\n\nexport class TypeObjectClass<T, O = InferObject<T>> extends TypeClass<O> {\n constructor(obj: T) {\n super('object', () => true)\n this._object = obj as any\n }\n\n parse(obj: any) {\n if (obj == null && this._optional === true)\n return undefined\n const newObj: any = {}\n if (!isObject(obj))\n return new Error('expected object input')\n if (!isObject(this._object))\n return new Error('expected object definition')\n for (const [key, info] of Object.entries(this._object)) {\n const value = info.parse((obj as any)[key])\n if (value !== undefined)\n newObj[key] = value\n }\n return newObj\n }\n\n map(obj: any, fn: (this: Type<O>, obj: any, schema: Type<O>) => any): any {\n const result = fn.call(this as any, obj, this as any)\n if (result !== undefined)\n return result\n const newObj: any = {}\n if (obj) {\n for (const [key, info] of Object.entries(this._object ?? {})) {\n const value = (info as Type).map((obj as any)[key], fn as any)\n if (value !== undefined)\n newObj[key] = value\n }\n }\n return newObj\n }\n}\n\n/// Object that can have any properties\nexport function object<T>(tobj: T): Type<InferObject<T>> {\n return new TypeObjectClass(tobj)\n}\n\nexport function record<T extends Type>(tobj: T): Type<Record<string, Infer<T>>> {\n return new TypeObjectClass(tobj)\n}\n\n// const schemaRecord = record(int())\n// const schemaRecord = record(object({ a: int() }))\n// type SchemaRecord = Infer<typeof schemaRecord> // expected Record<string, number>\n\n// Union\n\ntype TransformToUnion<T extends (Type<any>)[]> = T extends Array<infer U> ? Infer<U> : never\n\nexport function union<T extends (Type<any>)[]>(options: T): Type<TransformToUnion<T>> {\n return generic<any>(first(options)?.type ?? 'any', {\n // _union: options,\n // _check(obj) {\n // return this._union?.some(t => t._check(obj)) ?? true\n // },\n })\n}\n\n// Literals\n\ntype Literal = string | number | bigint | boolean\n\n/// todo: string?\nexport function literal<T extends Literal>(value: T): Type<T> {\n return generic<T>('literal', {\n _check: v => v === value,\n _default: value,\n })\n}\n\n/// Sting that can only be one of the values, like: `\"a\" | \"b\" | \"c\"``\nexport function stringLiterals<const T extends readonly string[], O = T[number]>(value: T): Type<O> {\n return generic<O>('string', {\n _check: v => value.includes(v),\n })\n}\n\n// Functions\n\ntype TupleOutput<T extends Type[]> = {\n [K in keyof T]: T[K] extends Type<infer U> ? U : never\n}\n\ntype ArrayOutput<Head extends Type[], Rest extends Type | undefined> = [\n ...TupleOutput<Head>,\n ...(Rest extends Type ? Infer<Rest>[] : []),\n]\n\ntype ArrayType<\n Head extends Type[] = Type[],\n Rest extends Type | undefined = Type | undefined,\n> = Type<ArrayOutput<Head, Rest>>\n\n// Like an array but with fixed length and types\nexport function tuple<T extends [] | [Type, ...Type[]]>(items: T): ArrayType<T, undefined> {\n return generic('tuple', {\n _check: v => items.every((item, i) => item._check(v[i])),\n })\n}\n\nexport class TypeArrayClass<T, TT> extends TypeClass<T> {\n constructor(\n name: string,\n type: TT,\n ) {\n super(name, isArray)\n this._type = type\n }\n\n _type?: TT\n}\n\nexport function array<T>(itemType: Type<T>): Type<T[]> {\n return new TypeArrayClass<T[], Type<T>>('array', itemType)\n}\n\n// const tt = tuple([number(), string(), boolean()])\n// type ttt = Infer<typeof tt> // expected [number, string, boolean]\n\n// type Test1 = Expect<IsEqual<ttt, [number, string, boolean]>> // Should pass\n\nclass TypeFuncClass<T, Args, Ret> extends TypeClass<T> {\n constructor(\n name: string,\n args: Args,\n ret?: Ret,\n ) {\n super(name, v => isFunction(v))\n this._args = args\n this._ret = ret\n }\n\n _args?: Args\n _ret?: Ret\n}\n\n/// Regular function\nexport function func<\n Args extends [Type<unknown>, ...Type<any>[]] | [],\n Ret = Type,\n T = (...args: TupleOutput<Args>) => Infer<Ret>,\n>(args: Args, ret: Ret): Type<T> {\n return new TypeFuncClass<T, Args, Ret>('function', args, ret)\n}\n\nexport class TypeRpcClass<T, Info, Ret> extends TypeClass<T> {\n constructor(\n name: string,\n info?: Info,\n ret?: Ret,\n ) {\n super(name, v => isFunction(v))\n this._info = info\n this._ret = ret\n }\n\n _info?: Info\n _ret?: Ret\n}\n\n/// RPC function that only takes one argument and returns a promise\nexport function rpc<\n Info extends Type<unknown> | undefined = undefined,\n Ret extends Type<unknown> = Type<void>, // ReturnType<typeof none>,\n T = Info extends undefined ? () => Infer<Ret> : (info: Infer<Info>) => Infer<Ret> | Promise<Infer<Ret>>,\n>(info?: Info, ret?: Ret) {\n return new TypeRpcClass<T, Info, Ret>('rpc', info, ret ?? none() as Ret)\n}\n\n/// Reduce conflicts with real type names, use like z.string()\nexport const z = {\n string,\n number,\n int,\n boolean,\n none,\n any,\n object,\n array,\n tuple,\n union,\n func,\n rpc,\n literal,\n stringLiterals,\n float,\n double,\n real,\n record,\n}\n"],"mappings":"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","names":["TypeClass","name","check","obj","newObj","object","value","isFunction","fn","props","TypeGeneric","generic","type","opt","TypeStringClass","rx","string","isString","number","isNumber","float","double","real","int","isInteger","boolean","isBoolean","none","v","any","TypeObjectClass","isObject","key","info","result","tobj","record","union","options","first","literal","stringLiterals","tuple","items","item","i","TypeArrayClass","isArray","array","itemType","TypeFuncClass","args","ret","func","TypeRpcClass","rpc","z"]}
@@ -1,2 +1,2 @@
1
- import{c,d as m,i as s,j as A}from"./chunk-JAS4XWZG.js";import{a as n}from"./chunk-K7TIJWZY.js";import{E as g,F as x,H as l,I as U}from"./chunk-T5KO3KAJ.js";import{a as y}from"./chunk-WYDZGMP2.js";var u=16;function a(){return n(u)}function $(t=a()){return s(t,22)}function h(t){return s(t,22)}function w(t){return A(t,u)}function I(t=a()){return c(t,26)}function M(t){return c(t,26)}function _(t){return m(t,u)}var R="10000000-1000-4000-8000-100000000000";function S(){return typeof crypto<"u"&&crypto.randomUUID!=null?crypto.randomUUID():R.replace(/[018]/g,t=>(t^n(1)[0]&15>>t/4).toString(16))}function T(t){let e=l(t);return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`}function V(t){return U(t.replace(/-/g,""))}var D=16e11;function k(t){let e=new Uint8Array([0,0,0,0,0,0]),o=e.length-1;for(let d=0;d<e.length;d++){let p=t&255;e[o-d]=p,t=(t-p)/256}return e}function B(){let t=y()-D;return new Uint8Array([...k(t),...n(10)])}function J(){return v(B())}function K(t){return q(E(t))}function q(t){return new Date(D+t.slice(0,6).reduce((e,o)=>e*256+o,0))}function N(){return new Uint32Array(n(4))[0]}var f={base62:{uuid:$,uuidDecode:w,uuidEncode:h},base32:{uuid:I,uuidDecode:_,uuidEncode:M},uuidv4:{uuid:S,uuidDecode:V,uuidEncode:T},test:{uuid:()=>F("test"),uuidDecode:t=>x(t),uuidEncode:t=>g(t)}},i="base62",b=!1;function O(t,e=!1){t==="test"&&H("test"),i=t??"base62",b=e}function P(){return f[i].uuid(b?B():a())}function E(t){return f[i].uuidDecode(t)}function v(t){return f[i].uuidEncode(t)}function Q(t){try{return E(t).length===u}catch{}return!1}var r={};function F(t="id"){return r[t]==null&&(r[t]=0),`${t}-${r[t]++}`}function H(t="id"){r[t]=0}var C=0;function W(){return`id-${C++}`}export{a,$ as b,h as c,w as d,I as e,M as f,_ as g,S as h,T as i,V as j,B as k,J as l,K as m,q as n,N as o,O as p,P as q,E as r,v as s,Q as t,F as u,H as v,W as w};
2
- //# sourceMappingURL=chunk-WVAB6E4Q.js.map
1
+ import{a as n}from"./chunk-K7TIJWZY.js";import{c,d as m,i as s,j as A}from"./chunk-JAS4XWZG.js";import{E as g,F as x,H as l,I as U}from"./chunk-T5KO3KAJ.js";import{a as y}from"./chunk-WYDZGMP2.js";var u=16;function a(){return n(u)}function $(t=a()){return s(t,22)}function h(t){return s(t,22)}function w(t){return A(t,u)}function I(t=a()){return c(t,26)}function M(t){return c(t,26)}function _(t){return m(t,u)}var R="10000000-1000-4000-8000-100000000000";function S(){return typeof crypto<"u"&&crypto.randomUUID!=null?crypto.randomUUID():R.replace(/[018]/g,t=>(t^n(1)[0]&15>>t/4).toString(16))}function T(t){let e=l(t);return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20)}`}function V(t){return U(t.replace(/-/g,""))}var D=16e11;function k(t){let e=new Uint8Array([0,0,0,0,0,0]),o=e.length-1;for(let d=0;d<e.length;d++){let p=t&255;e[o-d]=p,t=(t-p)/256}return e}function B(){let t=y()-D;return new Uint8Array([...k(t),...n(10)])}function J(){return v(B())}function K(t){return q(E(t))}function q(t){return new Date(D+t.slice(0,6).reduce((e,o)=>e*256+o,0))}function N(){return new Uint32Array(n(4))[0]}var f={base62:{uuid:$,uuidDecode:w,uuidEncode:h},base32:{uuid:I,uuidDecode:_,uuidEncode:M},uuidv4:{uuid:S,uuidDecode:V,uuidEncode:T},test:{uuid:()=>F("test"),uuidDecode:t=>x(t),uuidEncode:t=>g(t)}},i="base62",b=!1;function O(t,e=!1){t==="test"&&H("test"),i=t??"base62",b=e}function P(){return f[i].uuid(b?B():a())}function E(t){return f[i].uuidDecode(t)}function v(t){return f[i].uuidEncode(t)}function Q(t){try{return E(t).length===u}catch{}return!1}var r={};function F(t="id"){return r[t]==null&&(r[t]=0),`${t}-${r[t]++}`}function H(t="id"){r[t]=0}var C=0;function W(){return`id-${C++}`}export{a,$ as b,h as c,w as d,I as e,M as f,_ as g,S as h,T as i,V as j,B as k,J as l,K as m,q as n,N as o,O as p,P as q,E as r,v as s,Q as t,F as u,H as v,W as w};
2
+ //# sourceMappingURL=chunk-KBV6B6VE.js.map
@@ -1,2 +1,2 @@
1
- import{a as i}from"./chunk-E3TYSVBQ.js";import{g as t}from"./chunk-47SVTDUJ.js";var r=class extends i{constructor(){super(...arguments);this.buffer=[];this.dispose=t()}postMessageRaw(e){try{if(this.channel?.isConnected)return this.channel.postMessage(e),!0}catch{}return!1}flushBuffer(){for(;this.buffer.length;){let e=this.buffer.shift();if(e&&!this.postMessageRaw(e)){this.buffer.unshift(e);break}}}emptyBuffer(){this.buffer=[]}setChannel(e){this.dispose(),this.channel=e,e&&(this.dispose.add(e.on("message",s=>this.emit("message",s))),e.isConnected?this.flushBuffer():this.dispose.add(e.on("connect",()=>this.flushBuffer())))}deleteChannel(){this.setChannel()}postMessage(e){this.flushBuffer(),this.postMessageRaw(e)||this.buffer.push(e)}get isConnected(){return this.channel?.isConnected===!0}};export{r as a};
2
- //# sourceMappingURL=chunk-T2E5T2ZQ.js.map
1
+ import{a as i}from"./chunk-37WX4OII.js";import{g as t}from"./chunk-47SVTDUJ.js";var r=class extends i{constructor(){super(...arguments);this.buffer=[];this.dispose=t()}postMessageRaw(e){try{if(this.channel?.isConnected)return this.channel.postMessage(e),!0}catch{}return!1}flushBuffer(){for(;this.buffer.length;){let e=this.buffer.shift();if(e&&!this.postMessageRaw(e)){this.buffer.unshift(e);break}}}emptyBuffer(){this.buffer=[]}setChannel(e){this.dispose(),this.channel=e,e&&(this.dispose.add(e.on("message",s=>this.emit("message",s))),e.isConnected?this.flushBuffer():this.dispose.add(e.on("connect",()=>this.flushBuffer())))}deleteChannel(){this.setChannel()}postMessage(e){this.flushBuffer(),this.postMessageRaw(e)||this.buffer.push(e)}get isConnected(){return this.channel?.isConnected===!0}};export{r as a};
2
+ //# sourceMappingURL=chunk-KGZLR63U.js.map
@@ -1,2 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkPWWR4H26cjs = require('./chunk-PWWR4H26.cjs');var _chunkYKQSST44cjs = require('./chunk-YKQSST44.cjs');var i=class{constructor(e,t){this.extend=e=>{let t={...this._object,...e};return I(t)};this.type=e,this._check=_nullishCoalesce(t, () => ((()=>!0)))}optional(){return this._optional=!0,this}default(e){return this._default=e,this}parse(e){if(e==null&&this._default!=null&&(_chunkPWWR4H26cjs.b.call(void 0, this._default)?e=this._default():e=this._default),!(e==null&&this._optional===!0)){if(e==null)throw new Error(`cannot be undefined, is ${e}`);if(!this._check||this._check(e))return e;throw new Error("wrong value")}}map(e,t){return _nullishCoalesce(t.call(this,e,this), () => (e))}props(e){return this._props=e,this}},c=class extends i{};function o(n,e){let t=new c(n,_optionalChain([e, 'optionalAccess', _2 => _2._check]));return _optionalChain([e, 'optionalAccess', _3 => _3._default])!==void 0&&(t._default=_optionalChain([e, 'optionalAccess', _4 => _4._default])),_optionalChain([e, 'optionalAccess', _5 => _5._optional])!==void 0&&(t._optional=_optionalChain([e, 'optionalAccess', _6 => _6._optional])),_optionalChain([e, 'optionalAccess', _7 => _7._props])!==void 0&&(t._props=_optionalChain([e, 'optionalAccess', _8 => _8._props])),_optionalChain([e, 'optionalAccess', _9 => _9._object])!==void 0&&(t._object=_optionalChain([e, 'optionalAccess', _10 => _10._object])),t}var f=class extends i{pattern(e){return this}};function R(){return new f("string",_chunkPWWR4H26cjs.h)}function u(){return o("number",{_check:_chunkPWWR4H26cjs.i})}var K=u,A= exports.e =u,v= exports.f =u;function P(){return o("int",{_check:_chunkPWWR4H26cjs.j})}function E(){return o("boolean",{_check:_chunkPWWR4H26cjs.l})}function w(){return o("none",{_check:n=>n==null,_optional:!0})}function U(){return o("any",{_check:n=>n!=null,_optional:!0})}var a=class extends i{constructor(e){super("object",()=>!0),this._object=e}parse(e){if(e==null&&this._optional===!0)return;let t={};if(!_chunkPWWR4H26cjs.a.call(void 0, e))return new Error("expected object input");if(!_chunkPWWR4H26cjs.a.call(void 0, this._object))return new Error("expected object definition");for(let[r,s]of Object.entries(this._object)){let p=s.parse(e[r]);p!==void 0&&(t[r]=p)}return t}map(e,t){let r=t.call(this,e,this);if(r!==void 0)return r;let s={};if(e)for(let[p,m]of Object.entries(_nullishCoalesce(this._object, () => ({})))){let _=m.map(e[p],t);_!==void 0&&(s[p]=_)}return s}};function I(n){return new a(n)}function H(n){return new a(n)}function L(n){return o(_nullishCoalesce(_optionalChain([_chunkYKQSST44cjs.d.call(void 0, n), 'optionalAccess', _11 => _11.type]), () => ("any")),{})}function V(n){return o("literal",{_check:e=>e===n,_default:n})}function F(n){return o("string",{_check:e=>n.includes(e)})}function z(n){return o("tuple",{_check:e=>n.every((t,r)=>t._check(e[r]))})}var d=class extends i{constructor(e,t){super(e,_chunkPWWR4H26cjs.e),this._type=t}};function B(n){return new d("array",n)}var l=class extends i{constructor(e,t,r){super(e,s=>_chunkPWWR4H26cjs.b.call(void 0, s)),this._args=t,this._ret=r}};function N(n,e){return new l("function",n,e)}var x=class extends i{constructor(e,t,r){super(e,s=>_chunkPWWR4H26cjs.b.call(void 0, s)),this._info=t,this._ret=r}};function $(n,e){return new x("rpc",n,_nullishCoalesce(e, () => (w())))}var J={string:R,number:u,int:P,boolean:E,none:w,any:U,object:I,array:B,tuple:z,union:L,func:N,rpc:$,literal:V,stringLiterals:F,float:K,double:A,real:v,record:H};exports.a = i; exports.b = R; exports.c = u; exports.d = K; exports.e = A; exports.f = v; exports.g = P; exports.h = E; exports.i = w; exports.j = U; exports.k = a; exports.l = I; exports.m = H; exports.n = L; exports.o = V; exports.p = F; exports.q = z; exports.r = d; exports.s = B; exports.t = N; exports.u = x; exports.v = $; exports.w = J;
2
- //# sourceMappingURL=chunk-ZQYZWX6Y.cjs.map
2
+ //# sourceMappingURL=chunk-KQGJRV27.cjs.map