zeed 0.30.8 → 0.30.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-IDSFBSTM.js → chunk-3A7OZZKW.js} +2 -2
- package/dist/chunk-5KQWU77O.cjs +2 -0
- package/dist/{chunk-YJSJ3UOB.cjs.map → chunk-5KQWU77O.cjs.map} +1 -1
- package/dist/chunk-7SA5676S.cjs +2 -0
- package/dist/chunk-7SA5676S.cjs.map +1 -0
- package/dist/{chunk-5OSU4S26.js → chunk-B6LFBEWI.js} +2 -2
- package/dist/{chunk-BROP4ORZ.js → chunk-BW6ELDI7.js} +2 -2
- package/dist/{chunk-UTG3L4AX.cjs → chunk-ENHBQFAF.cjs} +2 -2
- package/dist/{chunk-UTG3L4AX.cjs.map → chunk-ENHBQFAF.cjs.map} +1 -1
- package/dist/{chunk-FUNWQPTY.js → chunk-EVBOIENK.js} +2 -2
- package/dist/{chunk-67DMG3MF.js → chunk-FGSAM2EO.js} +2 -2
- package/dist/{chunk-4J5JWJ3G.cjs → chunk-GB7I2F7Y.cjs} +2 -2
- package/dist/{chunk-4J5JWJ3G.cjs.map → chunk-GB7I2F7Y.cjs.map} +1 -1
- package/dist/{chunk-MER72NHP.cjs → chunk-HEUNLZAT.cjs} +2 -2
- package/dist/{chunk-MER72NHP.cjs.map → chunk-HEUNLZAT.cjs.map} +1 -1
- package/dist/{chunk-UEQA6API.cjs → chunk-HKJ6OHSP.cjs} +2 -2
- package/dist/{chunk-UEQA6API.cjs.map → chunk-HKJ6OHSP.cjs.map} +1 -1
- package/dist/{chunk-LKMQMT6E.cjs → chunk-HQ5GBV6C.cjs} +2 -2
- package/dist/{chunk-LKMQMT6E.cjs.map → chunk-HQ5GBV6C.cjs.map} +1 -1
- package/dist/{chunk-HY7X2T5M.js → chunk-J6FUR3GH.js} +2 -2
- package/dist/{chunk-BNWTP6LK.js → chunk-LG7MULWM.js} +2 -2
- package/dist/{chunk-A3VTGYNC.js → chunk-M527IAG7.js} +2 -2
- package/dist/chunk-NQWSWWTK.js +2 -0
- package/dist/chunk-NQWSWWTK.js.map +1 -0
- package/dist/{chunk-7XJIDHHV.js → chunk-QQWKTUAQ.js} +2 -2
- package/dist/{chunk-EYZJHDVW.js → chunk-SMI723SR.js} +1 -1
- package/dist/{chunk-EYZJHDVW.js.map → chunk-SMI723SR.js.map} +1 -1
- package/dist/{chunk-DEH3JK4Z.cjs → chunk-W7FYGPET.cjs} +2 -2
- package/dist/{chunk-DEH3JK4Z.cjs.map → chunk-W7FYGPET.cjs.map} +1 -1
- package/dist/{chunk-ZSBHWCNY.cjs → chunk-YCUMMZUS.cjs} +2 -2
- package/dist/{chunk-ZSBHWCNY.cjs.map → chunk-YCUMMZUS.cjs.map} +1 -1
- package/dist/{chunk-6MMGEWEN.cjs → chunk-ZE3ISGNE.cjs} +2 -2
- package/dist/{chunk-6MMGEWEN.cjs.map → chunk-ZE3ISGNE.cjs.map} +1 -1
- package/dist/{chunk-5X7E7LZK.cjs → chunk-ZHCZJIQB.cjs} +1 -1
- package/dist/{chunk-5X7E7LZK.cjs.map → chunk-ZHCZJIQB.cjs.map} +1 -1
- package/dist/common/exec/index.cjs +1 -1
- package/dist/common/exec/index.js +1 -1
- package/dist/common/exec/pool.cjs +1 -1
- package/dist/common/exec/pool.js +1 -1
- package/dist/common/exec/progress.cjs +1 -1
- package/dist/common/exec/progress.js +1 -1
- package/dist/common/exec/queue.cjs +1 -1
- package/dist/common/exec/queue.js +1 -1
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.cjs.map +1 -1
- package/dist/common/index.d.cts +1 -1
- package/dist/common/index.d.ts +1 -1
- package/dist/common/index.js +1 -1
- package/dist/common/msg/channel-debug.cjs +1 -1
- package/dist/common/msg/channel-debug.js +1 -1
- package/dist/common/msg/channel-local.cjs +1 -1
- package/dist/common/msg/channel-local.js +1 -1
- package/dist/common/msg/channel-resilient.cjs +1 -1
- package/dist/common/msg/channel-resilient.js +1 -1
- package/dist/common/msg/channel.cjs +1 -1
- package/dist/common/msg/channel.js +1 -1
- package/dist/common/msg/emitter.cjs +1 -1
- package/dist/common/msg/emitter.d.cts +1 -1
- package/dist/common/msg/emitter.d.ts +1 -1
- package/dist/common/msg/emitter.js +1 -1
- package/dist/common/msg/index.cjs +1 -1
- package/dist/common/msg/index.js +1 -1
- package/dist/common/msg/pubsub.cjs +1 -1
- package/dist/common/msg/pubsub.js +1 -1
- package/dist/common/schema/index.cjs +1 -1
- package/dist/common/schema/index.cjs.map +1 -1
- package/dist/common/schema/index.d.cts +1 -1
- package/dist/common/schema/index.d.ts +1 -1
- package/dist/common/schema/index.js +1 -1
- package/dist/common/schema/schema.cjs +1 -1
- package/dist/common/schema/schema.d.cts +134 -9
- package/dist/common/schema/schema.d.ts +134 -9
- package/dist/common/schema/schema.js +1 -1
- package/dist/common/schema/z-collection.cjs +1 -1
- package/dist/common/schema/z-collection.js +1 -1
- package/dist/common/schema/z.cjs +1 -1
- package/dist/common/schema/z.js +1 -1
- package/dist/index.all.cjs +1 -1
- package/dist/index.all.cjs.map +1 -1
- package/dist/index.all.d.cts +1 -1
- package/dist/index.all.d.ts +1 -1
- package/dist/index.all.js +1 -1
- package/dist/index.browser.cjs +1 -1
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.d.cts +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.node.cjs +1 -1
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.cts +1 -1
- package/dist/index.node.d.ts +1 -1
- package/dist/index.node.js +1 -1
- package/package.json +1 -1
- package/src/common/msg/emitter.ts +1 -1
- package/src/common/schema/parse-args.spec.ts +0 -3
- package/src/common/schema/rpc.spec.ts +0 -14
- package/src/common/schema/schema-improvements.spec.ts +233 -0
- package/src/common/schema/schema.spec.ts +174 -0
- package/src/common/schema/schema.ts +265 -50
- package/dist/chunk-PIAAFUAP.cjs +0 -2
- package/dist/chunk-PIAAFUAP.cjs.map +0 -1
- package/dist/chunk-UQZADRIZ.js +0 -2
- package/dist/chunk-UQZADRIZ.js.map +0 -1
- package/dist/chunk-YJSJ3UOB.cjs +0 -2
- /package/dist/{chunk-IDSFBSTM.js.map → chunk-3A7OZZKW.js.map} +0 -0
- /package/dist/{chunk-5OSU4S26.js.map → chunk-B6LFBEWI.js.map} +0 -0
- /package/dist/{chunk-BROP4ORZ.js.map → chunk-BW6ELDI7.js.map} +0 -0
- /package/dist/{chunk-FUNWQPTY.js.map → chunk-EVBOIENK.js.map} +0 -0
- /package/dist/{chunk-67DMG3MF.js.map → chunk-FGSAM2EO.js.map} +0 -0
- /package/dist/{chunk-HY7X2T5M.js.map → chunk-J6FUR3GH.js.map} +0 -0
- /package/dist/{chunk-BNWTP6LK.js.map → chunk-LG7MULWM.js.map} +0 -0
- /package/dist/{chunk-A3VTGYNC.js.map → chunk-M527IAG7.js.map} +0 -0
- /package/dist/{chunk-7XJIDHHV.js.map → chunk-QQWKTUAQ.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as t}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as t}from"./chunk-SMI723SR.js";import{b as e}from"./chunk-P6R4QNHH.js";import{q as s}from"./chunk-73VPDAYP.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-3A7OZZKW.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk7SA5676Scjs = require('./chunk-7SA5676S.cjs');var _chunkM4G6J7DPcjs = require('./chunk-M4G6J7DP.cjs');var h={};_chunkM4G6J7DPcjs.a.call(void 0, h,{any:()=>_chunk7SA5676Scjs.g,array:()=>_chunk7SA5676Scjs.q,boolean:()=>_chunk7SA5676Scjs.e,double:()=>_chunk7SA5676Scjs.i,enum:()=>_chunk7SA5676Scjs.o,float:()=>_chunk7SA5676Scjs.h,func:()=>_chunk7SA5676Scjs.r,int:()=>_chunk7SA5676Scjs.d,literal:()=>_chunk7SA5676Scjs.n,none:()=>_chunk7SA5676Scjs.f,number:()=>_chunk7SA5676Scjs.c,object:()=>_chunk7SA5676Scjs.k,real:()=>_chunk7SA5676Scjs.j,record:()=>_chunk7SA5676Scjs.l,rpc:()=>_chunk7SA5676Scjs.s,string:()=>_chunk7SA5676Scjs.b,tuple:()=>_chunk7SA5676Scjs.p,union:()=>_chunk7SA5676Scjs.m});exports.a = h;
|
|
2
|
+
//# sourceMappingURL=chunk-5KQWU77O.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-5KQWU77O.cjs","../src/common/schema/z-collection.ts"],"names":["z_collection_exports","__export","any","array","boolean","double","stringLiterals","float","func","int","literal","none","number","object","real","record","rpc","string","tuple","union"],"mappings":"AAAA,iIAA0J,wDAAyC,ICAnMA,CAAAA,CAAA,CAAA,CAAA,CAAAC,iCAAAA,CAAAD,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAAE,mBAAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,OAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAAC,mBAAAA,CAAAA,CAAAA,CAAAA,cAAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-5KQWU77O.cjs","sourcesContent":[null,"export type { Infer as infer, Type as type } from './schema'\nexport { any, array, boolean, double, stringLiterals as enum, float, func, int, literal, none, number, object, real, record, rpc, string, tuple, union } from './schema'\n"]}
|
|
@@ -0,0 +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 _chunkPWWR4H26cjs = require('./chunk-PWWR4H26.cjs');var o=class n{constructor(e,t={}){this.type=e,Object.assign(this,t)}_cloneWithProps(e={}){let t=new n(this.type),r=["_default","_optional","_meta","_check","_object","_type","_union","_enumValues","_args","_ret","_info"];for(let y of r)this[y]!==void 0&&(t[y]=this[y]);return Object.assign(t,e),t}static _copyTypeProperties(e,t){let r=["_check","_default","_meta","_object","_type","_enumValues"];for(let y of r)e[y]!==void 0&&(t[y]=e[y])}optional(){return this._cloneWithProps({_optional:!0})}default(e){return this._default=e,this}meta(e){return this._meta=e,this}describe(e){return this._meta||(this._meta={}),this._meta.desc=e,this}extend(e){if(!this._object)throw new Error("extend() can only be used on object schemas");let t={...this._object,...e};return p(t)}pick(e){if(!this._object)throw new Error("pick() can only be used on object schemas");let t={};for(let r of Object.keys(e))r in this._object&&(t[r]=this._object[r]);return p(t)}omit(e){if(!this._object)throw new Error("omit() can only be used on object schemas");let t={...this._object};for(let r of Object.keys(e))delete t[r];return p(t)}_transformObjectProperties(e,t){if(!this._object)throw new Error("This operation can only be used on object schemas");let r={},y=this._object;for(let[i,_]of Object.entries(y)){let h=!t||i in t;r[i]=e(i,_,h)}return p(r)}partial(e){if(!this._object)throw new Error("partial() can only be used on object schemas");return this._transformObjectProperties((t,r,y)=>y?n._cloneTypeWithOptional(r,!0):r,e)}required(e){if(!this._object)throw new Error("required() can only be used on object schemas");return this._transformObjectProperties((t,r,y)=>y?n._cloneTypeWithOptional(r,!1):r,e)}static _cloneTypeWithOptional(e,t){let r=new n(e.type);return n._copyTypeProperties(e,r),r._optional=t,r}};function k(){return new o("string",{_check:_chunkPWWR4H26cjs.h})}function a(){return new o("number",{_check:_chunkPWWR4H26cjs.i})}function j(){return new o("int",{_check:_chunkPWWR4H26cjs.j})}function m(){return new o("boolean",{_check:_chunkPWWR4H26cjs.l})}function b(){return new o("none",{_check:n=>n==null,_optional:!0})}function O(){return new o("any",{_check:n=>n!=null})}var w=a,K= exports.i =a,R= exports.j =a;function p(n){return new o("object",{_check:_chunkPWWR4H26cjs.a,_object:n})}function g(n){return new o("record",{_check:_chunkPWWR4H26cjs.a,_type:n})}function P(n){return new o("union",{_check:e=>n.some(t=>_nullishCoalesce(_optionalChain([t, 'access', _2 => _2._check, 'optionalCall', _3 => _3(e)]), () => (!1))),_union:n})}function I(n){return new o("literal",{_check:e=>e===n,_default:n})}function A(n){return new o("string",{_check:e=>typeof e=="string"&&n.includes(e),_enumValues:n})}function F(n){return new o("tuple",{_check:e=>Array.isArray(e)&&e.length===n.length&&n.every((t,r)=>_nullishCoalesce(_optionalChain([t, 'access', _4 => _4._check, 'optionalCall', _5 => _5(e[r])]), () => (!1))),_type:n})}function U(n){return new o("array",{_check:_chunkPWWR4H26cjs.e,_type:n})}function q(n,e){return new o("function",{_check:_chunkPWWR4H26cjs.b,_args:n,_ret:e})}function v(n,e){return new o("rpc",{_check:_chunkPWWR4H26cjs.b,_info:n,_ret:_nullishCoalesce(e, () => (b()))})}exports.a = o; exports.b = k; exports.c = a; exports.d = j; exports.e = m; exports.f = b; exports.g = O; exports.h = w; exports.i = K; exports.j = R; exports.k = p; exports.l = g; exports.m = P; exports.n = I; exports.o = A; exports.p = F; exports.q = U; exports.r = q; exports.s = v;
|
|
2
|
+
//# sourceMappingURL=chunk-7SA5676S.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-7SA5676S.cjs","../src/common/schema/schema.ts"],"names":["Type","_Type","name","options","newProps","cloned","propertiesToCopy","prop","source","target","properties","value","meta","msg","obj","newObj","object","keys","pickedObj","key","omittedObj","transform","transformedObj","originalObj","typeInstance","shouldTransform","type","originalType","optional","newType","string","isString","number","isNumber","int","isInteger","boolean","isBoolean","none","v","any","float","double","real","tobj","isObject","record","valueType","union","option","literal","stringLiterals","values","tuple","items","item","i","array","itemType","isArray","func","args","ret","isFunction","rpc","info"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-7SA5676S.cjs","sourcesContent":[null,"// 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'\n\n/**\n * Metadata interface for type descriptions and additional properties\n */\nexport interface TypeMeta {\n desc?: string\n}\n\n/**\n * Core Type class for schema validation and type inference\n */\nexport class Type<T = unknown> {\n readonly type: string\n\n _default?: any\n _optional?: boolean\n _meta?: TypeMeta\n _check?: (obj: any) => boolean\n _object?: any\n _type?: any\n _union?: any\n _enumValues?: any\n _args?: any\n _ret?: any\n _info?: any\n\n // [key: `_${string}`]: any // Allow only optional dynamic properties starting with an underscore\n\n constructor(name: string, options: Partial<Type<T>> = {}) {\n this.type = name\n Object.assign(this, options)\n }\n\n /**\n * Creates a copy of the type with new properties merged\n */\n private _cloneWithProps<U = T>(newProps: Partial<Type<any>> = {}): Type<U> {\n const cloned = new Type<U>(this.type)\n // Copy all existing properties\n const propertiesToCopy = ['_default', '_optional', '_meta', '_check', '_object', '_type', '_union', '_enumValues', '_args', '_ret', '_info']\n for (const prop of propertiesToCopy) {\n if ((this as any)[prop] !== undefined) {\n (cloned as any)[prop] = (this as any)[prop]\n }\n }\n // Apply new properties\n Object.assign(cloned, newProps)\n return cloned\n }\n\n /**\n * Helper to copy type properties when creating new type instances\n */\n private static _copyTypeProperties(source: Type<any>, target: Type<any>): void {\n const properties = ['_check', '_default', '_meta', '_object', '_type', '_enumValues']\n for (const prop of properties) {\n if ((source as any)[prop] !== undefined) {\n (target as any)[prop] = (source as any)[prop]\n }\n }\n }\n\n /**\n * Marks the type as optional, meaning it can be undefined\n * This is useful for properties that are not required.\n */\n optional(): Type<T | undefined> {\n return this._cloneWithProps<T | undefined>({ _optional: true })\n }\n\n /**\n * Sets a default value for the type, which will be used if the value is not provided\n * The default value can be a function that receives the schema as argument, or a static value.\n */\n default(value: T | ((schema?: this) => T)): this {\n this._default = value\n return this\n }\n\n /**\n * Props / Metadata for the type, like description or other properties\n */\n meta(meta: TypeMeta): this {\n this._meta = meta\n return this\n }\n\n /**\n * Sets the `desc` property for the type, which is a human-readable description\n */\n describe(msg: string): this {\n if (!this._meta) {\n this._meta = {}\n }\n this._meta.desc = msg\n return this\n }\n\n /**\n * Extends the type with an object, merging the properties\n */\n extend<O>(obj: O): Type<T & TypeObject<O>> {\n if (!this._object) {\n throw new Error('extend() can only be used on object schemas')\n }\n const newObj = { ...this._object, ...obj }\n return object(newObj) as any\n }\n\n /**\n * Picks certain keys from an object schema\n */\n pick<K extends keyof T>(keys: Record<K, true>): Type<Pick<T, K>> {\n if (!this._object) {\n throw new Error('pick() can only be used on object schemas')\n }\n const pickedObj: any = {}\n for (const key of Object.keys(keys)) {\n if (key in this._object) {\n pickedObj[key] = (this._object as any)[key]\n }\n }\n return object(pickedObj) as any\n }\n\n /**\n * Omits certain keys from an object schema\n */\n omit<K extends keyof T>(keys: Record<K, true>): Type<Omit<T, K>> {\n if (!this._object) {\n throw new Error('omit() can only be used on object schemas')\n }\n const omittedObj: any = { ...this._object }\n for (const key of Object.keys(keys)) {\n delete omittedObj[key]\n }\n return object(omittedObj) as any\n }\n\n /**\n * Helper method to modify object properties with a transformation function\n */\n private _transformObjectProperties(\n transform: (key: string, type: Type<any>, shouldTransform: boolean) => Type<any>,\n keys?: Record<string, true>,\n ): any {\n if (!this._object) {\n throw new Error('This operation can only be used on object schemas')\n }\n\n const transformedObj: any = {}\n const originalObj = this._object as any\n\n for (const [key, typeInstance] of Object.entries(originalObj)) {\n const shouldTransform = !keys || key in keys\n transformedObj[key] = transform(key, typeInstance as Type<any>, shouldTransform)\n }\n\n return object(transformedObj)\n }\n\n /**\n * Makes some or all properties of an object schema optional\n */\n partial(): Type<Partial<T>>\n partial<K extends keyof T>(keys: Record<K, true>): Type<Partial<Pick<T, K>> & Omit<T, K>>\n partial<K extends keyof T>(keys?: Record<K, true>): Type<Partial<T> | (Partial<Pick<T, K>> & Omit<T, K>)> {\n if (!this._object) {\n throw new Error('partial() can only be used on object schemas')\n }\n return this._transformObjectProperties((key, type, shouldTransform) => {\n if (!shouldTransform)\n return type\n return Type._cloneTypeWithOptional(type, true)\n }, keys)\n }\n\n /**\n * Makes some or all properties of an object schema required\n */\n required(): Type<Required<T>>\n required<K extends keyof T>(keys: Record<K, true>): Type<Required<Pick<T, K>> & Omit<T, K>>\n required<K extends keyof T>(keys?: Record<K, true>): Type<Required<T> | (Required<Pick<T, K>> & Omit<T, K>)> {\n if (!this._object) {\n throw new Error('required() can only be used on object schemas')\n }\n return this._transformObjectProperties((key, type, shouldTransform) => {\n if (!shouldTransform)\n return type\n return Type._cloneTypeWithOptional(type, false)\n }, keys)\n }\n\n /**\n * Helper method to clone a type with optional flag\n */\n private static _cloneTypeWithOptional(originalType: Type<any>, optional: boolean): Type<any> {\n const newType = new Type(originalType.type)\n Type._copyTypeProperties(originalType, newType)\n newType._optional = optional\n return newType\n }\n}\n\n/**\n * Type inference utility for extracting the TypeScript type from a schema Type\n */\nexport type Infer<T> = T extends Type<infer TT> ? TT : never\n\n// =============================================================================\n// Primitive Types\n// =============================================================================\n\n/**\n * Creates a string type validator\n */\nexport function string(): Type<string> {\n return new Type('string', {\n _check: isString,\n })\n}\n\n/**\n * Creates a number type validator\n */\nexport function number(): Type<number> {\n return new Type('number', {\n _check: isNumber,\n })\n}\n\n/**\n * Creates an integer type validator\n */\nexport function int(): Type<number> {\n return new Type('int', {\n _check: isInteger,\n })\n}\n\n/**\n * Creates a boolean type validator\n */\nexport function boolean(): Type<boolean> {\n return new Type('boolean', {\n _check: isBoolean,\n })\n}\n\n/**\n * Creates a none type validator (undefined | null)\n * Like undefined | null in TS and nil in Swift\n */\nexport function none(): Type<undefined> {\n return new Type('none', {\n _check: (v: any) => v == null,\n _optional: true,\n })\n}\n\n/**\n * Creates an any type validator that accepts any non-null value\n */\nexport function any<T = any>(): Type<T> {\n return new Type('any', {\n _check: (v: any) => v != null,\n })\n}\n\n// Aliases for number types\nexport const float = number\nexport const double = number\nexport const real = number\n\n// =============================================================================\n// Object Types\n// =============================================================================\n\n/**\n * Utility type to make object properties optional if their value type includes undefined.\n * @category Schema\n */\nexport type TypeObjectFixOptional<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\n/**\n * Utility type for pretty-printing object types\n */\ntype TypeObjectPretty<V> = Extract<{ [K in keyof V]: V[K] }, unknown>\n\n/**\n * Main object type utility\n */\ntype TypeObject<T> = TypeObjectPretty<TypeObjectFixOptional<{\n [K in keyof T]: Infer<T[K]>\n}>>\n\n/**\n * Creates an object type validator with specified properties\n */\nexport function object<T>(tobj: T): Type<TypeObject<T>> {\n return new Type('object', {\n _check: isObject,\n _object: tobj,\n })\n}\n\n/**\n * Creates a record type validator (object with string keys and uniform value type)\n */\nexport function record<T extends Type>(valueType: T): Type<Record<string, Infer<T>>> {\n return new Type('record', {\n _check: isObject,\n _type: valueType,\n })\n}\n\n// =============================================================================\n// Union Types\n// =============================================================================\n\n/**\n * Utility type for union of types.\n * @category Schema\n */\nexport type TypeUnion<T extends Type<any>[]> = T extends Array<infer U> ? Infer<U> : never\n\n/**\n * Creates a union type validator (like `string | number | boolean`)\n */\nexport function union<T extends Type<any>[]>(options: T): Type<TypeUnion<T>> {\n return new Type('union', {\n _check: (v: any) => options.some(option => option._check?.(v) ?? false),\n _union: options,\n })\n}\n\n// =============================================================================\n// Literal Types\n// =============================================================================\n\n/**\n * Utility type for literal types.\n * @category Schema\n */\nexport type TypeLiterals = string | number | bigint | boolean\n\n/**\n * Creates a literal value validator\n */\nexport function literal<T extends TypeLiterals>(value: T): Type<T> {\n return new Type('literal', {\n _check: (v: any) => v === value,\n _default: value,\n })\n}\n\n/**\n * Creates a string literal union validator (like `\"a\" | \"b\" | \"c\"`)\n */\nexport function stringLiterals<const T extends readonly string[], O = T[number]>(values: T): Type<O> {\n return new Type('string', {\n _check: (v: any) => typeof v === 'string' && values.includes(v),\n _enumValues: values,\n })\n}\n\n// =============================================================================\n// Collection Types\n// =============================================================================\n\n/**\n * Utility type for tuple types.\n * @category Schema\n */\nexport type TypeTuple<T extends Type[]> = {\n [K in keyof T]: T[K] extends Type<infer U> ? U : never\n}\n\n/**\n * Output type for TypeArray.\n * @category Schema\n */\nexport type TypeArrayOutput<Head extends Type[], Rest extends Type | undefined> = [\n ...TypeTuple<Head>,\n ...(Rest extends Type ? Infer<Rest>[] : []),\n]\n\n/**\n * Utility type for array types.\n * @category Schema\n */\nexport type TypeArray<Head extends Type[] = Type[], Rest extends Type | undefined = Type | undefined> = Type<TypeArrayOutput<Head, Rest>>\n\n/**\n * Creates a tuple type validator with fixed length and types\n */\nexport function tuple<T extends [] | [Type, ...Type[]]>(items: T): TypeArray<T, undefined> {\n return new Type('tuple', {\n _check: (v: any) => Array.isArray(v) && v.length === items.length && items.every((item, i) => item._check?.(v[i]) ?? false),\n _type: items,\n })\n}\n\n/**\n * Creates an array type validator for a specific item type\n */\nexport function array<T>(itemType: Type<T>): Type<T[]> {\n return new Type('array', {\n _check: isArray,\n _type: itemType,\n })\n}\n\n// =============================================================================\n// Function Types\n// =============================================================================\n\n/**\n * Creates a regular function type validator\n */\nexport function func<\n TypeFuncArgs extends [Type<unknown>, ...Type<any>[]] | [],\n TypeFuncRet = Type,\n T = (...args: TypeTuple<TypeFuncArgs>) => Infer<TypeFuncRet>,\n>(args: TypeFuncArgs, ret: TypeFuncRet): Type<T> {\n return new Type('function', {\n _check: isFunction,\n _args: args,\n _ret: ret,\n })\n}\n\n/**\n * Creates an RPC function type validator that takes one argument and returns a promise\n */\nexport function rpc<\n TypeRpcInfo extends Type<unknown> | undefined = undefined,\n TypeRpcRet extends Type<unknown> = Type<void>,\n T = TypeRpcInfo extends undefined\n ? () => Infer<TypeRpcRet>\n : (info: Infer<TypeRpcInfo>) => Infer<TypeRpcRet> | Promise<Infer<TypeRpcRet>>,\n>(info?: TypeRpcInfo, ret?: TypeRpcRet): Type<T> {\n return new Type('rpc', {\n _check: isFunction,\n _info: info,\n _ret: ret ?? none(),\n })\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as h}from"./chunk-4LIUGZHX.js";import{a}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as h}from"./chunk-4LIUGZHX.js";import{a}from"./chunk-SMI723SR.js";import{c as o}from"./chunk-IV2DPA6C.js";import{u as c}from"./chunk-73VPDAYP.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-B6LFBEWI.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as s}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as s}from"./chunk-3A7OZZKW.js";var e=class extends s{constructor(){super(...arguments);this.messages=[]}postMessage(t){this.messages.push(t)}get isConnected(){return!0}};export{e as a};
|
|
2
|
+
//# sourceMappingURL=chunk-BW6ELDI7.js.map
|
|
@@ -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
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
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 _chunkHEUNLZATcjs = require('./chunk-HEUNLZAT.cjs');var _chunkZHCZJIQBcjs = require('./chunk-ZHCZJIQB.cjs');var _chunkZFGAU6WJcjs = require('./chunk-ZFGAU6WJ.cjs');var _chunkXHBPFXWQcjs = require('./chunk-XHBPFXWQ.cjs');var _chunkSLY6XQ6Ycjs = require('./chunk-SLY6XQ6Y.cjs');function N(w={}){let{maxParallel:F=3,name:U=_chunkSLY6XQ6Ycjs.u.call(void 0, "pool"),idConflictResolution:j="memoize"}=w,d=new _chunkZHCZJIQBcjs.a,y=_chunkZFGAU6WJcjs.b.call(void 0, );y.add(v);let m=new (0, _chunkHEUNLZATcjs.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, () => (_chunkSLY6XQ6Ycjs.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, _chunkHEUNLZATcjs.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-ENHBQFAF.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-UTG3L4AX.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":"/home/runner/work/zeed/zeed/dist/chunk-UTG3L4AX.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":["/home/runner/work/zeed/zeed/dist/chunk-ENHBQFAF.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":"AAAA,yuBAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAgD,SC+EnMA,CAAAA,CAAiBC,CAAAA,CAAqB,CAAC,CAAA,CAAG,CACxD,GAAM,CACJ,WAAA,CAAAC,CAAAA,CAAc,CAAA,CACd,IAAA,CAAAC,CAAAA,CAAOC,iCAAAA,MAAY,CAAA,CACnB,oBAAA,CAAAC,CAAAA,CAAuB,SACzB,CAAA,CAAIJ,CAAAA,CAEEK,CAAAA,CAAS,IAAIC,mBAAAA,CAEbC,CAAAA,CAAUC,iCAAAA,CAAW,CAC3BD,CAAAA,CAAQ,GAAA,CAAIE,CAAS,CAAA,CAErB,IAAMC,CAAAA,CAAW,IAAIC,wBAAAA,CAAS,CAAE,IAAA,CAAAT,CAAK,CAAC,CAAA,CAEtCQ,CAAAA,CAAS,EAAA,CAAG,mBAAA,CAAqBD,CAAS,CAAA,CAE1C,IAAIG,CAAAA,CAAW,CAAA,CACXC,CAAAA,CAAgB,CAAA,CAChBC,CAAAA,CAAkB,CAAA,CAClBC,CAAAA,CAAW,CAAA,CACTC,CAAAA,CAAqC,CAAC,CAAA,CAI5C,MAAA,SAAeC,CAAAA,CAAAA,CAAgB,CAC7B,EAAA,CAAIL,CAAAA,CAAW,CAAA,CAAG,CAChB,GAAM,CAACM,CAAAA,CAASC,CAAO,CAAA,CAAIC,iCAAAA,CAAc,CACzC,OAAAf,CAAAA,CAAO,IAAA,CAAK,WAAA,CAAac,CAAO,CAAA,CACzBD,CACT,CACF,CAEA,MAAA,SAAeG,CAAAA,CAAAA,CAAkB,CAC/B,GAAA,CAAA,IAAWC,EAAAA,GAAM,MAAA,CAAO,IAAA,CAAKN,CAAK,CAAA,CACnBA,CAAAA,CAAMM,CAAE,CAAA,CACZ,KAAA,GAAU,UAAA,EAAA,CACjB,MAAMN,CAAAA,CAAMM,CAAE,CAAA,CAAE,QAAA,CAAS,OAAA,CAAQ,CAAA,CACjC,OAAON,CAAAA,CAAMM,CAAE,CAAA,CAGrB,CAEA,SAASC,CAAAA,CAAAA,CAAY,CACdlB,CAAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAE5BO,CAAAA,CAAW,CAAA,CACXC,CAAAA,CAAgB,CAAA,CACXQ,CAAAA,CAAgB,CAAA,CACrBX,CAAAA,CAAS,KAAA,CAAM,CACjB,CAEA,SAASc,CAAAA,CAAAA,CAAY,CACnB,IAAIC,CAAAA,CAAa,CAAA,CACbC,CAAAA,CAAkB,CAAA,CACtB,GAAA,CAAA,GAAW,CAAE,GAAA,CAAAC,CAAAA,CAAK,QAAA,CAAAC,CAAAA,CAAU,KAAA,CAAAC,CAAM,CAAA,GAAK,MAAA,CAAO,MAAA,CAAOb,CAAK,CAAA,CACxDS,CAAAA,EAAcE,CAAAA,CACdD,CAAAA,EAAmBG,CAAAA,GAAU,UAAA,CAAaF,CAAAA,CAAM,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAKC,CAAQ,CAAA,CAEnEvB,CAAAA,CAAO,IAAA,CACV,WAAA,CACAO,CAAAA,CACAC,CAAAA,CACAY,CAAAA,CACAC,CACF,CACF,CAEA,SAASI,CAAAA,CAAAA,CAAc,CAIrB,EAAA,CAHAN,CAAAA,CAAU,CAAA,CACNZ,CAAAA,CAAW,CAAA,EAAKA,CAAAA,GAAaC,CAAAA,EAC/BU,CAAAA,CAAU,CAAA,CACRT,CAAAA,EAAmBb,CAAAA,CACrB,MAAA,CACF,IAAM8B,CAAAA,CAAe,MAAA,CAAO,MAAA,CAAOf,CAAK,CAAA,CAAE,MAAA,CACxCgB,CAAAA,EAAKA,CAAAA,CAAE,KAAA,GAAU,SACnB,CAAA,CACA,EAAA,CAAID,CAAAA,CAAa,MAAA,CAAS,CAAA,CAAG,CAC3B,IAAIE,CAAAA,CACJ,GAAA,CAAA,IAAWD,EAAAA,GAAKD,CAAAA,CAIZC,CAAAA,CAAE,KAAA,EAAS,IAAA,EACR,MAAA,CAAO,MAAA,CAAOhB,CAAK,CAAA,CAAE,IAAA,CACtBkB,CAAAA,EACEA,CAAAA,CAAG,KAAA,GAAU,SAAA,EACVA,CAAAA,CAAG,EAAA,GAAOF,CAAAA,CAAE,EAAA,EACZE,CAAAA,CAAG,KAAA,GAAUF,CAAAA,CAAE,KACtB,CAAA,EAAA,CAMEC,CAAAA,EAAY,IAAA,EAAQD,CAAAA,CAAE,QAAA,CAAWC,CAAAA,CAAS,QAAA,CAAA,EAAA,CAC5CA,CAAAA,CAAWD,CAAAA,CAAAA,CAEf,EAAA,CAAIC,CAAAA,EAAY,IAAA,CAAM,CACpB,IAAMX,CAAAA,CAAKW,CAAAA,CAAS,EAAA,CACdE,CAAAA,CAAOF,CAAAA,CAAS,IAAA,CACtBA,CAAAA,CAAS,KAAA,CAAQ,SAAA,CACjB,EAAEnB,CAAAA,CACGT,CAAAA,CAAO,IAAA,CAAK,UAAA,CAAYiB,CAAE,CAAA,CAE/B,IAAMc,CAAAA,CAAgBC,CAAAA,EAAe,CAC/BJ,CAAAA,EAAAA,CACFA,CAAAA,CAAS,MAAA,CAASI,CAAAA,CAClBJ,CAAAA,CAAS,KAAA,CAAQ,UAAA,CACjBA,CAAAA,CAAS,QAAA,CAAWA,CAAAA,CAAS,GAAA,iBAC7BA,CAAAA,mBAAS,QAAA,6BAAU,YAAA,mBAAa,GAAA,CAAA,CAGlC,EAAEnB,CAAAA,CACF,EAAED,CAAAA,CACFiB,CAAAA,CAAY,CACd,CAAA,CAEAG,CAAAA,CACG,IAAA,CAAKA,CAAQ,CAAA,CACb,IAAA,CAAM,CAAA,EAAM,CACXE,CAAAA,CAAK,CAAC,CAAA,CACD9B,CAAAA,CAAO,IAAA,CAAK,YAAA,CAAciB,CAAAA,CAAI,CAAC,CAAA,CACpCc,CAAAA,CAAa,CAAC,CAChB,CAAC,CAAA,CACA,KAAA,CAAOE,CAAAA,EAAQ,CACdH,CAAAA,CAAK,CAAA,CACA9B,CAAAA,CAAO,IAAA,CAAK,WAAA,CAAaiB,CAAAA,CAAIgB,CAAG,CAAA,CACrCF,CAAAA,CAAa,CACf,CAAC,CACL,CACF,CACF,CAEA,SAASG,CAAAA,CAAOjB,CAAAA,CAAY,CAC1B,IAAMW,CAAAA,CAAWjB,CAAAA,CAAMM,CAAE,CAAA,CACrBW,CAAAA,EAAYA,CAAAA,CAAS,KAAA,GAAU,SAAA,EAAA,CACjCjB,CAAAA,CAAMM,CAAE,CAAA,CAAE,KAAA,CAAQ,UAAA,CAClB,EAAET,CAAAA,CACGR,CAAAA,CAAO,IAAA,CAAK,WAAA,CAAaiB,CAAE,CAAA,CAC3BN,CAAAA,CAAMM,CAAE,CAAA,CAAE,QAAA,CAAS,OAAA,CAAQ,CAAA,CAChCE,CAAAA,CAAU,CAAA,CAEd,CAEA,SAASf,CAAAA,CAAAA,CAAY,CACnB,MAAA,CAAO,IAAA,CAAKO,CAAK,CAAA,CAAE,OAAA,CAAQuB,CAAM,CAEnC,CAEA,SAASC,CAAAA,CAAQlB,CAAAA,CAAY,CAC3B,OAAON,CAAAA,CAAMM,CAAE,CAAA,EAAK,IACtB,CAEA,SAASmB,CAAAA,CACPC,CAAAA,CACA1C,CAAAA,CAOI,CAAC,CAAA,CACL,CACA,IAAImC,CAAAA,CACEjB,CAAAA,CAAwB,IAAI,OAAA,CAAQC,CAAAA,EAAYgB,CAAAA,CAAOhB,CAAQ,CAAA,CAC/DG,CAAAA,kBAAKtB,CAAAA,CAAO,EAAA,SAAM2C,iCAAAA,GAAK,CAE7B,EAAA,CAAI3B,CAAAA,CAAMM,CAAE,CAAA,EAAK,IAAA,CAAM,CACrB,IAAMsB,CAAAA,kBAAa5C,CAAAA,CAAO,oBAAA,SAAwBI,GAAAA,CAElD,EAAA,CAAIwC,CAAAA,GAAe,SAAA,CACjBL,CAAAA,CAAOjB,CAAE,CAAA,CAAA,KAAA,EAAA,CAEFsB,CAAAA,GAAe,SAAA,EAAaA,CAAAA,GAAe,YAAA,CAAc,CAChE,IAAMC,CAAAA,CAAc7B,CAAAA,CAAMM,CAAE,CAAA,CAE5B,OAAIsB,CAAAA,GAAe,YAAA,EAAA,CACjBC,CAAAA,CAAY,QAAA,CAAW,EAAE9B,CAAAA,CAAAA,CAEpB,CACL,EAAA,CAAAO,CAAAA,CACA,OAAA,CAAA,CAAU,KAAA,CAAA,CAAA,EAAY,CACpB,EAAA,CAAIuB,CAAAA,CAAY,KAAA,GAAU,UAAA,CACxB,OAAO7B,CAAAA,CAAMM,CAAE,CAAA,CAAE,MAGrB,CAAA,CAAA,CAAG,CAAA,CACH,OAAA,CAAS,CAAA,CAAA,EAAMiB,CAAAA,CAAOjB,CAAE,CAAA,CACxB,MAAA,CAAQ,CAAA,CAAA,EAAMiB,CAAAA,CAAOjB,CAAE,CACzB,CACF,CAAA,KAEE,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqBA,CAAE,CAAA,gBAAA,CAAkB,CAE7D,CAEA,IAAMwB,CAAAA,CAAe,IAAInC,wBAAAA,CAAS,CAChC,IAAA,CAAMW,CAAAA,CACN,UAAA,kBAAYtB,CAAAA,CAAO,GAAA,SAAO,GAAA,CAC1B,aAAA,kBAAeA,CAAAA,CAAO,QAAA,SAAY,GACpC,CAAC,CAAA,CAED,OAAAU,CAAAA,CAAS,QAAA,CAASoC,CAAY,CAAA,CAE9B9B,CAAAA,CAAMM,CAAE,CAAA,CAAI,CACV,EAAA,CAAAA,CAAAA,CACA,IAAA,CAAAoB,CAAAA,CACA,QAAA,CAAU,EAAE3B,CAAAA,CACZ,KAAA,CAAOf,CAAAA,CAAO,KAAA,CACd,KAAA,CAAO,SAAA,CACP,GAAA,kBAAKA,CAAAA,CAAO,GAAA,SAAO,GAAA,CACnB,QAAA,kBAAUA,CAAAA,CAAO,QAAA,SAAY,GAAA,CAC7B,IAAA,CAAAmC,CAAAA,CACA,OAAA,CAASnC,CAAAA,CAAO,OAAA,CAChB,QAAA,CAAU8C,CAAAA,CAGV,MAAA,CAAOC,CAAAA,CAAO,CACZD,CAAAA,CAAa,aAAA,CAAcC,CAAK,CAAA,CAChC/B,CAAAA,CAAMM,CAAE,CAAA,CAAE,GAAA,CAAMyB,CAAAA,CAChBvB,CAAAA,CAAU,CACZ,CAAA,CAGA,WAAA,CAAYuB,CAAAA,CAAO,CACjBD,CAAAA,CAAa,mBAAA,CAAoBC,CAAK,CAAA,CACtC/B,CAAAA,CAAMM,CAAE,CAAA,CAAE,QAAA,CAAWyB,CAAAA,CACrBvB,CAAAA,CAAU,CACZ,CAAA,CAGA,WAAA,CAAYwB,CAAAA,CAAM,CAAA,CAAG,CACnBF,CAAAA,CAAa,iBAAA,CAAkBE,CAAG,CAAA,CAClChC,CAAAA,CAAMM,CAAE,CAAA,CAAE,QAAA,EAAY0B,CAAAA,CACtBxB,CAAAA,CAAU,CACZ,CACF,CAAA,CACA,EAAEZ,CAAAA,CACFkB,CAAAA,CAAY,CAAA,CAEL,CACL,EAAA,CAAAR,CAAAA,CACA,OAAA,CAAAJ,CAAAA,CACA,OAAA,CAAS,CAAA,CAAA,EAAMqB,CAAAA,CAAOjB,CAAE,CAAA,CACxB,MAAA,CAAQ,CAAA,CAAA,EAAMiB,CAAAA,CAAOjB,CAAE,CACzB,CACF,CAEA,MAAO,CACL,MAAA,CAAAjB,CAAAA,CACA,MAAA,CAAAkC,CAAAA,CACA,SAAA,CAAA9B,CAAAA,CACA,OAAA,CAAA+B,CAAAA,CACA,QAAA,CAAA9B,CAAAA,CACA,OAAA,CAAA+B,CAAAA,CACA,OAAA,CAAAlC,CAAAA,CACA,aAAA,CAAAU,CACF,CACF,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-ENHBQFAF.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,2 +1,2 @@
|
|
|
1
|
-
import{a as r}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as r}from"./chunk-3A7OZZKW.js";import{q as t}from"./chunk-73VPDAYP.js";var o=class extends r{constructor(){super(...arguments);this.isConnected=!0}postMessage(a){this.other?.emit("message",{data:a,origin:"local",lastEventId:t()})}};function l(){let e=new o,n=new o;return e.other=n,n.other=e,[e,n]}export{o as a,l as b};
|
|
2
|
+
//# sourceMappingURL=chunk-EVBOIENK.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as g}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as g}from"./chunk-J6FUR3GH.js";import{a as R}from"./chunk-SMI723SR.js";import{b as h}from"./chunk-P6R4QNHH.js";import{a as x}from"./chunk-2COZNZSC.js";import{q as b,u as C}from"./chunk-73VPDAYP.js";function N(w={}){let{maxParallel:F=3,name:U=C("pool"),idConflictResolution:j="memoize"}=w,d=new R,y=h();y.add(v);let m=new g({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]=x();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,e.progress?.setCompleted()),--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=e.id??b();if(i[o]!=null){let s=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 g({name:o,totalUnits:e.max??1,completeUnits:e.resolved??0});return m.addChild(r),i[o]={id:o,task:t,priority:++k,group:e.group,state:"waiting",max:e.max??1,resolved: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}}export{N as a};
|
|
2
|
+
//# sourceMappingURL=chunk-FGSAM2EO.js.map
|
|
@@ -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
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
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 _chunkZHCZJIQBcjs = require('./chunk-ZHCZJIQB.cjs');var _chunkSEHLU66Ecjs = require('./chunk-SEHLU66E.cjs');var _chunkSEQAFKIVcjs = require('./chunk-SEQAFKIV.cjs');var _chunkSLY6XQ6Ycjs = require('./chunk-SLY6XQ6Y.cjs');var h=class extends _chunkZHCZJIQBcjs.a{constructor(e={}){super();this.queue=[];this.waitToFinish=[];this.countMax=0;this.countResolved=0;this.paused=!1;let{name:t=_chunkSLY6XQ6Ycjs.u.call(void 0, "queue"),logLevel:i}=e;this.name=t,this.log=_chunkSEHLU66Ecjs.c.call(void 0, `zeed:queue:${t}`,_nullishCoalesce(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 => ${_optionalChain([e, 'optionalAccess', _ => _.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=_chunkSLY6XQ6Ycjs.u.call(void 0, 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}};exports.a = h;
|
|
2
|
+
//# sourceMappingURL=chunk-GB7I2F7Y.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-GB7I2F7Y.cjs","../src/common/exec/queue.ts"],"names":["SerialQueue","Emitter","opt","name","uname","logLevel","DefaultLogger"],"mappings":"AAAA,yuBAAwC,wDAAyC,wDAAyC,wDAAyC,IC6BtJA,CAAAA,CAAN,MAAA,QAA0BC,mBAAoB,CAYnD,WAAA,CAAYC,CAAAA,CAA8C,CAAC,CAAA,CAAG,CAC5D,KAAA,CAAM,CAAA,CAZR,IAAA,CAAQ,KAAA,CAAoB,CAAC,CAAA,CAC7B,IAAA,CAAQ,YAAA,CAA+B,CAAC,CAAA,CAGxC,IAAA,CAAQ,QAAA,CAAW,CAAA,CACnB,IAAA,CAAQ,aAAA,CAAgB,CAAA,CAExB,IAAA,CAAQ,MAAA,CAAS,CAAA,CAAA,CAMf,GAAM,CAAE,IAAA,CAAAC,CAAAA,CAAOC,iCAAAA,OAAa,CAAA,CAAG,QAAA,CAAAC,CAAS,CAAA,CAAIH,CAAAA,CAC5C,IAAA,CAAK,IAAA,CAAOC,CAAAA,CACZ,IAAA,CAAK,GAAA,CAAMG,iCAAAA,CAAc,WAAA,EAAcH,CAAI,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-GB7I2F7Y.cjs","sourcesContent":[null,"// Can learn from here https://github.com/sindresorhus/p-queue\n\nimport type { LoggerInterface, LogLevel } from '../log/log-base'\nimport { DefaultLogger } from '../log/log'\nimport { LogLevelOff } from '../log/log-base'\nimport { Emitter } from '../msg/emitter'\nimport { uname } from '../uuid'\n\ntype TaskResolver = any\n\nexport type TaskFn<T = any> = () => Promise<T>\n\ninterface TaskInfo {\n name: string\n task: TaskFn\n resolve: TaskResolver\n}\n\nexport interface TaskEvents {\n didUpdate: (max: number, resolved: number) => void\n didStart: (max: number) => void\n didCancel: () => void\n didFinish: () => void\n // didResolve(value: any): void\n // didReject(error: any): void\n // didPause(max: number): void\n}\n\n/** Guarentee serial execution of tasks. Able to wait, pause, resume and cancel all. */\nexport class SerialQueue extends Emitter<TaskEvents> {\n private queue: TaskInfo[] = []\n private waitToFinish: TaskResolver[] = []\n private currentTask?: Promise<any>\n private log: LoggerInterface\n private countMax = 0\n private countResolved = 0\n\n private paused = false\n\n name: string\n\n constructor(opt: { name?: string, logLevel?: LogLevel } = {}) {\n super()\n const { name = uname('queue'), logLevel } = opt\n this.name = name\n this.log = DefaultLogger(`zeed:queue:${name}`, logLevel ?? LogLevelOff)\n }\n\n private async performNext() {\n this.log('performNext, queue.length =', this.queue.length)\n\n if (this.currentTask != null) {\n this.log('performNext => skip while another task is running')\n return\n }\n\n if (this.paused) {\n this.log('performNext => skip while is paused')\n return\n }\n\n while (this.currentTask == null && !this.paused) {\n const info = this.queue.shift()\n this.log(`performNext => ${info?.name}`)\n\n if (info == null)\n break\n\n if (this.countResolved === 0)\n void this.emit('didStart', this.countMax)\n\n const { name, task, resolve } = info\n this.currentTask = task()\n let result\n try {\n this.log.info(`start task ${name}`)\n result = await this.currentTask\n this.log(`finished task ${name} with result =`, result)\n }\n catch (err) {\n this.log.warn('Error performing task', err)\n }\n\n resolve(result)\n this.currentTask = undefined\n\n this.countResolved += 1\n void this.emit('didUpdate', this.countMax, this.countResolved)\n }\n\n if (this.queue.length === 0) {\n void this.emit('didFinish')\n this.countMax = 0\n this.countResolved = 0\n }\n\n while (this.waitToFinish.length > 0)\n this.waitToFinish.shift()()\n }\n\n /** Enqueue task to be executed when all other tasks are done. Except `immediate = true`. */\n async enqueue<T>(\n task: TaskFn<T>,\n opt: { immediate?: boolean, name?: string } = {},\n ): Promise<T> {\n const { immediate = false, name = uname(this.name) } = opt\n if (immediate) {\n this.log.info(`immediate execution ${name}`)\n return await task()\n }\n\n this.log(`enqueue ${name}`)\n return new Promise((resolve) => {\n this.queue.push({\n name,\n task,\n resolve,\n })\n\n this.countMax += 1\n void this.emit('didUpdate', this.countMax, this.countResolved)\n\n void this.performNext()\n })\n }\n\n /** If a task is already performing, execute immediately. Otherwise enqueue as usual. */\n async enqueueReentrant<T>(\n task: TaskFn<T>,\n opt: { name?: string } = {},\n ): Promise<T> {\n return this.enqueue(task, {\n immediate: this.currentTask != null,\n name: opt.name,\n })\n }\n\n /** Remove all tasks from queue that are not yet executing. */\n async cancelAll(_unblock = true) {\n this.log('cancelAll')\n void this.emit('didCancel')\n const resolver = this.queue.map(task => task.resolve)\n this.queue = []\n resolver.forEach(r => r(undefined))\n await this.wait()\n }\n\n /** Pause execution after current task is finished. */\n async pause() {\n this.log('pause')\n this.paused = true\n await this.wait()\n }\n\n /** Resume paused queue. */\n resume() {\n this.log('resume')\n this.paused = false\n void this.performNext()\n }\n\n /** Wait for all tasks to finish */\n async wait() {\n this.log('wait')\n if (this.currentTask == null && (this.queue.length === 0 || this.paused))\n return\n\n return new Promise((resolve) => {\n this.waitToFinish.push(resolve)\n })\n }\n\n public get isPaused(): boolean {\n return this.paused\n }\n\n public get hasTasks(): boolean {\n return this.queue.length !== 0\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
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkZHCZJIQBcjs = require('./chunk-ZHCZJIQB.cjs');var _chunkZFGAU6WJcjs = require('./chunk-ZFGAU6WJ.cjs');var _chunkQHU5L465cjs = require('./chunk-QHU5L465.cjs');var _chunkSLY6XQ6Ycjs = require('./chunk-SLY6XQ6Y.cjs');var o=class h extends _chunkZHCZJIQBcjs.a{constructor(t={}){super();this._isCancelled=!1;this._resetWhenFinished=!0;this._children=[];this.dispose=_chunkZFGAU6WJcjs.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, () => (_chunkSLY6XQ6Ycjs.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){_chunkQHU5L465cjs.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-
|
|
3
|
+
//# sourceMappingURL=chunk-HEUNLZAT.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-HEUNLZAT.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":"/home/runner/work/zeed/zeed/dist/chunk-HEUNLZAT.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\nexport interface 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});var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkZE3ISGNEcjs = require('./chunk-ZE3ISGNE.cjs');var e=class extends _chunkZE3ISGNEcjs.a{constructor(){super(...arguments);this.messages=[]}postMessage(t){this.messages.push(t)}get isConnected(){return!0}};exports.a = e;
|
|
2
|
+
//# sourceMappingURL=chunk-HKJ6OHSP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-HKJ6OHSP.cjs","../src/common/msg/channel-debug.ts"],"names":["DebugChannel","Channel","data"],"mappings":"AAAA,iIAAwC,ICG3BA,CAAAA,CAAN,MAAA,QAA2BC,mBAAQ,CAAnC,WAAA,CAAA,CAAA,CAAA,KAAA,CAAA,GAAA,SAAA,CAAA,CACL,IAAA,CAAA,QAAA,CAAoC,CAAC,CAAA,CAOrC,WAAA,CAAYC,CAAAA,CAAiC,CAC3C,IAAA,CAAK,QAAA,CAAS,IAAA,CAAKA,CAAI,CACzB,CAEA,IAAI,WAAA,CAAA,CAAc,CAChB,MAAO,CAAA,CACT,CACF,CAAA,CAAA,cAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-HKJ6OHSP.cjs","sourcesContent":[null,"import { Channel } from './channel'\n\n/** Just track messages posted for debug purposes */\nexport class DebugChannel extends Channel {\n messages: (Uint8Array | string)[] = []\n\n // constructor() {\n // super()\n // this.emit('connect', )\n // }\n\n postMessage(data: Uint8Array | string): void {\n this.messages.push(data)\n }\n\n get isConnected() {\n return true\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 _chunkVFR5TEQEcjs = require('./chunk-VFR5TEQE.cjs');var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
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 _chunkVFR5TEQEcjs = require('./chunk-VFR5TEQE.cjs');var _chunkZHCZJIQBcjs = require('./chunk-ZHCZJIQB.cjs');var _chunkSEHLU66Ecjs = require('./chunk-SEHLU66E.cjs');var _chunkSLY6XQ6Ycjs = require('./chunk-SLY6XQ6Y.cjs');var s=class extends _chunkZHCZJIQBcjs.a{constructor(e){super();this.publish=this.emit.bind(this);this.subscribe=this.on.bind(this);let{name:n,encoder:t=new _chunkVFR5TEQEcjs.b,channel:l,debug:u=!1}=e;this.channel=l,this.encoder=t,this.debug=u,this.name=_nullishCoalesce(_nullishCoalesce(n, () => (this.channel.id)), () => (_chunkSLY6XQ6Ycjs.u.call(void 0, "pubsub"))),this.log=_chunkSEHLU66Ecjs.c.call(void 0, `${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=${_optionalChain([i, 'optionalAccess', _ => _.event])}, info=`,i):this.log(`channel message, event=${_optionalChain([i, 'optionalAccess', _2 => _2.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)}exports.a = s; exports.b = y;
|
|
2
|
+
//# sourceMappingURL=chunk-HQ5GBV6C.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-HQ5GBV6C.cjs","../src/common/msg/pubsub.ts"],"names":["PubSub","Emitter","opt","name","encoder","JsonEncoder","channel","debug","uname","DefaultLogger"],"mappings":"AAAA,yuBAAwC,wDAAoC,wDAAyC,wDAAyC,ICejJA,CAAAA,CAAN,MAAA,QAAuEC,mBAAW,CAWvF,WAAA,CAAYC,CAAAA,CAAmB,CAC7B,KAAA,CAAM,CAAA,CA6DR,IAAA,CAAA,OAAA,CAAU,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,CAC7B,IAAA,CAAA,SAAA,CAAY,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,IAAI,CAAA,CA5D3B,GAAM,CAAE,IAAA,CAAAC,CAAAA,CAAM,OAAA,CAAAC,CAAAA,CAAU,IAAIC,mBAAAA,CAAe,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAAA,CAAQ,CAAA,CAAM,CAAA,CAAIL,CAAAA,CAEtE,IAAA,CAAK,OAAA,CAAUI,CAAAA,CACf,IAAA,CAAK,OAAA,CAAUF,CAAAA,CACf,IAAA,CAAK,KAAA,CAAQG,CAAAA,CAEb,IAAA,CAAK,IAAA,mCAAOJ,CAAAA,SAAQ,IAAA,CAAK,OAAA,CAAQ,IAAA,SAAMK,iCAAAA,QAAc,GAAA,CACrD,IAAA,CAAK,GAAA,CAAMC,iCAAAA,CAAc,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-HQ5GBV6C.cjs","sourcesContent":[null,"import type { Channel } from './channel'\nimport type { DefaultListener, ListenerSignature } from './emitter'\nimport type { Encoder } from './encoder'\nimport { DefaultLogger } from '../log/log'\nimport { uname } from '../uuid'\nimport { Emitter } from './emitter'\nimport { JsonEncoder } from './encoder'\n\nexport interface PubSubConfig {\n channel: Channel\n encoder?: Encoder\n name?: string\n debug?: boolean\n}\n\nexport class PubSub<L extends ListenerSignature<L> = DefaultListener> extends Emitter<L> {\n name: string\n channel: Channel\n encoder: Encoder\n log: any\n debug: boolean\n\n get shortId() {\n return this.name.substr(0, 6)\n }\n\n constructor(opt: PubSubConfig) {\n super()\n\n const { name, encoder = new JsonEncoder(), channel, debug = false } = opt\n\n this.channel = channel\n this.encoder = encoder\n this.debug = debug\n\n this.name = name ?? this.channel.id ?? uname('pubsub')\n this.log = DefaultLogger(`${this.shortId}`)\n\n if (this.debug) {\n this.channel.on('connect', () => {\n this.log('channel connected')\n })\n this.channel.on('disconnect', () => {\n this.log('channel disconnected')\n })\n }\n\n this.channel.on('message', async ({ data }) => {\n const info = await this.encoder.decode(data)\n if (this.debug)\n this.log(`channel message, event=${info?.event}, info=`, info)\n else this.log(`channel message, event=${info?.event}`)\n if (info) {\n const { event, args } = info\n await this.emitSuper(event, ...args)\n }\n })\n }\n\n private async emitSuper<U extends keyof L>(\n event: U,\n ...args: Parameters<L[U]>\n ): Promise<boolean> {\n return await super.emit(event, ...args)\n }\n\n async emit<U extends keyof L>(\n event: U,\n ...args: Parameters<L[U]>\n ): Promise<boolean> {\n try {\n if (this.debug)\n this.log(`emit(${String(event)})`, event)\n else this.log(`emit(${String(event)})`, args.length)\n if (!this.channel.isConnected) {\n this.log.warn('channel not connected')\n return false\n }\n const data = await this.encoder.encode({ event, args })\n this.channel.postMessage(data)\n return true\n }\n catch (err) {\n this.log.warn(`emit(${String(event)})`, err)\n }\n return false\n }\n\n publish = this.emit.bind(this)\n subscribe = this.on.bind(this)\n}\n\nexport function usePubSub<L extends ListenerSignature<L> = DefaultListener>(\n opt: PubSubConfig,\n) {\n return new PubSub<L>(opt)\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as r}from"./chunk-
|
|
1
|
+
import{a as r}from"./chunk-SMI723SR.js";import{b as i}from"./chunk-P6R4QNHH.js";import{g as s}from"./chunk-TY2IJCPS.js";import{u as n}from"./chunk-73VPDAYP.js";var o=class h extends r{constructor(t={}){super();this._isCancelled=!1;this._resetWhenFinished=!0;this._children=[];this.dispose=i();this._totalUnits=t.totalUnits??0,this._completedUnits=t.completeUnits??0,this._resetWhenFinished=t.resetWhenFinished??!0,this.name=t.name??n("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){s(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}};export{o as a};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
//# sourceMappingURL=chunk-J6FUR3GH.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as u}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as u}from"./chunk-SMI723SR.js";import{c as o}from"./chunk-IV2DPA6C.js";import{g as r}from"./chunk-RZR3ECDT.js";import{u as a}from"./chunk-73VPDAYP.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-LG7MULWM.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as e,c as r,d as n,e as a,f as o,g as t,h as l,i,j as p,k as s,l as f,m as u,n as c,o as m,p as y,q as b,r as d,s as g}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as e,c as r,d as n,e as a,f as o,g as t,h as l,i,j as p,k as s,l as f,m as u,n as c,o as m,p as y,q as b,r as d,s as g}from"./chunk-NQWSWWTK.js";import{a as x}from"./chunk-4C666HHU.js";var h={};x(h,{any:()=>t,array:()=>b,boolean:()=>a,double:()=>i,enum:()=>m,float:()=>l,func:()=>d,int:()=>n,literal:()=>c,none:()=>o,number:()=>r,object:()=>s,real:()=>p,record:()=>f,rpc:()=>g,string:()=>e,tuple:()=>y,union:()=>u});export{h as a};
|
|
2
|
+
//# sourceMappingURL=chunk-M527IAG7.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as s,b as c,e as T,h as u,i as d,j as f,l}from"./chunk-7AQ7JFDC.js";var o=class n{constructor(e,t={}){this.type=e,Object.assign(this,t)}_cloneWithProps(e={}){let t=new n(this.type),r=["_default","_optional","_meta","_check","_object","_type","_union","_enumValues","_args","_ret","_info"];for(let y of r)this[y]!==void 0&&(t[y]=this[y]);return Object.assign(t,e),t}static _copyTypeProperties(e,t){let r=["_check","_default","_meta","_object","_type","_enumValues"];for(let y of r)e[y]!==void 0&&(t[y]=e[y])}optional(){return this._cloneWithProps({_optional:!0})}default(e){return this._default=e,this}meta(e){return this._meta=e,this}describe(e){return this._meta||(this._meta={}),this._meta.desc=e,this}extend(e){if(!this._object)throw new Error("extend() can only be used on object schemas");let t={...this._object,...e};return p(t)}pick(e){if(!this._object)throw new Error("pick() can only be used on object schemas");let t={};for(let r of Object.keys(e))r in this._object&&(t[r]=this._object[r]);return p(t)}omit(e){if(!this._object)throw new Error("omit() can only be used on object schemas");let t={...this._object};for(let r of Object.keys(e))delete t[r];return p(t)}_transformObjectProperties(e,t){if(!this._object)throw new Error("This operation can only be used on object schemas");let r={},y=this._object;for(let[i,_]of Object.entries(y)){let h=!t||i in t;r[i]=e(i,_,h)}return p(r)}partial(e){if(!this._object)throw new Error("partial() can only be used on object schemas");return this._transformObjectProperties((t,r,y)=>y?n._cloneTypeWithOptional(r,!0):r,e)}required(e){if(!this._object)throw new Error("required() can only be used on object schemas");return this._transformObjectProperties((t,r,y)=>y?n._cloneTypeWithOptional(r,!1):r,e)}static _cloneTypeWithOptional(e,t){let r=new n(e.type);return n._copyTypeProperties(e,r),r._optional=t,r}};function k(){return new o("string",{_check:u})}function a(){return new o("number",{_check:d})}function j(){return new o("int",{_check:f})}function m(){return new o("boolean",{_check:l})}function b(){return new o("none",{_check:n=>n==null,_optional:!0})}function O(){return new o("any",{_check:n=>n!=null})}var w=a,K=a,R=a;function p(n){return new o("object",{_check:s,_object:n})}function g(n){return new o("record",{_check:s,_type:n})}function P(n){return new o("union",{_check:e=>n.some(t=>t._check?.(e)??!1),_union:n})}function I(n){return new o("literal",{_check:e=>e===n,_default:n})}function A(n){return new o("string",{_check:e=>typeof e=="string"&&n.includes(e),_enumValues:n})}function F(n){return new o("tuple",{_check:e=>Array.isArray(e)&&e.length===n.length&&n.every((t,r)=>t._check?.(e[r])??!1),_type:n})}function U(n){return new o("array",{_check:T,_type:n})}function q(n,e){return new o("function",{_check:c,_args:n,_ret:e})}function v(n,e){return new o("rpc",{_check:c,_info:n,_ret:e??b()})}export{o as a,k as b,a as c,j as d,m as e,b as f,O as g,w as h,K as i,R as j,p as k,g as l,P as m,I as n,A as o,F as p,U as q,q as r,v as s};
|
|
2
|
+
//# sourceMappingURL=chunk-NQWSWWTK.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'\n\n/**\n * Metadata interface for type descriptions and additional properties\n */\nexport interface TypeMeta {\n desc?: string\n}\n\n/**\n * Core Type class for schema validation and type inference\n */\nexport class Type<T = unknown> {\n readonly type: string\n\n _default?: any\n _optional?: boolean\n _meta?: TypeMeta\n _check?: (obj: any) => boolean\n _object?: any\n _type?: any\n _union?: any\n _enumValues?: any\n _args?: any\n _ret?: any\n _info?: any\n\n // [key: `_${string}`]: any // Allow only optional dynamic properties starting with an underscore\n\n constructor(name: string, options: Partial<Type<T>> = {}) {\n this.type = name\n Object.assign(this, options)\n }\n\n /**\n * Creates a copy of the type with new properties merged\n */\n private _cloneWithProps<U = T>(newProps: Partial<Type<any>> = {}): Type<U> {\n const cloned = new Type<U>(this.type)\n // Copy all existing properties\n const propertiesToCopy = ['_default', '_optional', '_meta', '_check', '_object', '_type', '_union', '_enumValues', '_args', '_ret', '_info']\n for (const prop of propertiesToCopy) {\n if ((this as any)[prop] !== undefined) {\n (cloned as any)[prop] = (this as any)[prop]\n }\n }\n // Apply new properties\n Object.assign(cloned, newProps)\n return cloned\n }\n\n /**\n * Helper to copy type properties when creating new type instances\n */\n private static _copyTypeProperties(source: Type<any>, target: Type<any>): void {\n const properties = ['_check', '_default', '_meta', '_object', '_type', '_enumValues']\n for (const prop of properties) {\n if ((source as any)[prop] !== undefined) {\n (target as any)[prop] = (source as any)[prop]\n }\n }\n }\n\n /**\n * Marks the type as optional, meaning it can be undefined\n * This is useful for properties that are not required.\n */\n optional(): Type<T | undefined> {\n return this._cloneWithProps<T | undefined>({ _optional: true })\n }\n\n /**\n * Sets a default value for the type, which will be used if the value is not provided\n * The default value can be a function that receives the schema as argument, or a static value.\n */\n default(value: T | ((schema?: this) => T)): this {\n this._default = value\n return this\n }\n\n /**\n * Props / Metadata for the type, like description or other properties\n */\n meta(meta: TypeMeta): this {\n this._meta = meta\n return this\n }\n\n /**\n * Sets the `desc` property for the type, which is a human-readable description\n */\n describe(msg: string): this {\n if (!this._meta) {\n this._meta = {}\n }\n this._meta.desc = msg\n return this\n }\n\n /**\n * Extends the type with an object, merging the properties\n */\n extend<O>(obj: O): Type<T & TypeObject<O>> {\n if (!this._object) {\n throw new Error('extend() can only be used on object schemas')\n }\n const newObj = { ...this._object, ...obj }\n return object(newObj) as any\n }\n\n /**\n * Picks certain keys from an object schema\n */\n pick<K extends keyof T>(keys: Record<K, true>): Type<Pick<T, K>> {\n if (!this._object) {\n throw new Error('pick() can only be used on object schemas')\n }\n const pickedObj: any = {}\n for (const key of Object.keys(keys)) {\n if (key in this._object) {\n pickedObj[key] = (this._object as any)[key]\n }\n }\n return object(pickedObj) as any\n }\n\n /**\n * Omits certain keys from an object schema\n */\n omit<K extends keyof T>(keys: Record<K, true>): Type<Omit<T, K>> {\n if (!this._object) {\n throw new Error('omit() can only be used on object schemas')\n }\n const omittedObj: any = { ...this._object }\n for (const key of Object.keys(keys)) {\n delete omittedObj[key]\n }\n return object(omittedObj) as any\n }\n\n /**\n * Helper method to modify object properties with a transformation function\n */\n private _transformObjectProperties(\n transform: (key: string, type: Type<any>, shouldTransform: boolean) => Type<any>,\n keys?: Record<string, true>,\n ): any {\n if (!this._object) {\n throw new Error('This operation can only be used on object schemas')\n }\n\n const transformedObj: any = {}\n const originalObj = this._object as any\n\n for (const [key, typeInstance] of Object.entries(originalObj)) {\n const shouldTransform = !keys || key in keys\n transformedObj[key] = transform(key, typeInstance as Type<any>, shouldTransform)\n }\n\n return object(transformedObj)\n }\n\n /**\n * Makes some or all properties of an object schema optional\n */\n partial(): Type<Partial<T>>\n partial<K extends keyof T>(keys: Record<K, true>): Type<Partial<Pick<T, K>> & Omit<T, K>>\n partial<K extends keyof T>(keys?: Record<K, true>): Type<Partial<T> | (Partial<Pick<T, K>> & Omit<T, K>)> {\n if (!this._object) {\n throw new Error('partial() can only be used on object schemas')\n }\n return this._transformObjectProperties((key, type, shouldTransform) => {\n if (!shouldTransform)\n return type\n return Type._cloneTypeWithOptional(type, true)\n }, keys)\n }\n\n /**\n * Makes some or all properties of an object schema required\n */\n required(): Type<Required<T>>\n required<K extends keyof T>(keys: Record<K, true>): Type<Required<Pick<T, K>> & Omit<T, K>>\n required<K extends keyof T>(keys?: Record<K, true>): Type<Required<T> | (Required<Pick<T, K>> & Omit<T, K>)> {\n if (!this._object) {\n throw new Error('required() can only be used on object schemas')\n }\n return this._transformObjectProperties((key, type, shouldTransform) => {\n if (!shouldTransform)\n return type\n return Type._cloneTypeWithOptional(type, false)\n }, keys)\n }\n\n /**\n * Helper method to clone a type with optional flag\n */\n private static _cloneTypeWithOptional(originalType: Type<any>, optional: boolean): Type<any> {\n const newType = new Type(originalType.type)\n Type._copyTypeProperties(originalType, newType)\n newType._optional = optional\n return newType\n }\n}\n\n/**\n * Type inference utility for extracting the TypeScript type from a schema Type\n */\nexport type Infer<T> = T extends Type<infer TT> ? TT : never\n\n// =============================================================================\n// Primitive Types\n// =============================================================================\n\n/**\n * Creates a string type validator\n */\nexport function string(): Type<string> {\n return new Type('string', {\n _check: isString,\n })\n}\n\n/**\n * Creates a number type validator\n */\nexport function number(): Type<number> {\n return new Type('number', {\n _check: isNumber,\n })\n}\n\n/**\n * Creates an integer type validator\n */\nexport function int(): Type<number> {\n return new Type('int', {\n _check: isInteger,\n })\n}\n\n/**\n * Creates a boolean type validator\n */\nexport function boolean(): Type<boolean> {\n return new Type('boolean', {\n _check: isBoolean,\n })\n}\n\n/**\n * Creates a none type validator (undefined | null)\n * Like undefined | null in TS and nil in Swift\n */\nexport function none(): Type<undefined> {\n return new Type('none', {\n _check: (v: any) => v == null,\n _optional: true,\n })\n}\n\n/**\n * Creates an any type validator that accepts any non-null value\n */\nexport function any<T = any>(): Type<T> {\n return new Type('any', {\n _check: (v: any) => v != null,\n })\n}\n\n// Aliases for number types\nexport const float = number\nexport const double = number\nexport const real = number\n\n// =============================================================================\n// Object Types\n// =============================================================================\n\n/**\n * Utility type to make object properties optional if their value type includes undefined.\n * @category Schema\n */\nexport type TypeObjectFixOptional<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\n/**\n * Utility type for pretty-printing object types\n */\ntype TypeObjectPretty<V> = Extract<{ [K in keyof V]: V[K] }, unknown>\n\n/**\n * Main object type utility\n */\ntype TypeObject<T> = TypeObjectPretty<TypeObjectFixOptional<{\n [K in keyof T]: Infer<T[K]>\n}>>\n\n/**\n * Creates an object type validator with specified properties\n */\nexport function object<T>(tobj: T): Type<TypeObject<T>> {\n return new Type('object', {\n _check: isObject,\n _object: tobj,\n })\n}\n\n/**\n * Creates a record type validator (object with string keys and uniform value type)\n */\nexport function record<T extends Type>(valueType: T): Type<Record<string, Infer<T>>> {\n return new Type('record', {\n _check: isObject,\n _type: valueType,\n })\n}\n\n// =============================================================================\n// Union Types\n// =============================================================================\n\n/**\n * Utility type for union of types.\n * @category Schema\n */\nexport type TypeUnion<T extends Type<any>[]> = T extends Array<infer U> ? Infer<U> : never\n\n/**\n * Creates a union type validator (like `string | number | boolean`)\n */\nexport function union<T extends Type<any>[]>(options: T): Type<TypeUnion<T>> {\n return new Type('union', {\n _check: (v: any) => options.some(option => option._check?.(v) ?? false),\n _union: options,\n })\n}\n\n// =============================================================================\n// Literal Types\n// =============================================================================\n\n/**\n * Utility type for literal types.\n * @category Schema\n */\nexport type TypeLiterals = string | number | bigint | boolean\n\n/**\n * Creates a literal value validator\n */\nexport function literal<T extends TypeLiterals>(value: T): Type<T> {\n return new Type('literal', {\n _check: (v: any) => v === value,\n _default: value,\n })\n}\n\n/**\n * Creates a string literal union validator (like `\"a\" | \"b\" | \"c\"`)\n */\nexport function stringLiterals<const T extends readonly string[], O = T[number]>(values: T): Type<O> {\n return new Type('string', {\n _check: (v: any) => typeof v === 'string' && values.includes(v),\n _enumValues: values,\n })\n}\n\n// =============================================================================\n// Collection Types\n// =============================================================================\n\n/**\n * Utility type for tuple types.\n * @category Schema\n */\nexport type TypeTuple<T extends Type[]> = {\n [K in keyof T]: T[K] extends Type<infer U> ? U : never\n}\n\n/**\n * Output type for TypeArray.\n * @category Schema\n */\nexport type TypeArrayOutput<Head extends Type[], Rest extends Type | undefined> = [\n ...TypeTuple<Head>,\n ...(Rest extends Type ? Infer<Rest>[] : []),\n]\n\n/**\n * Utility type for array types.\n * @category Schema\n */\nexport type TypeArray<Head extends Type[] = Type[], Rest extends Type | undefined = Type | undefined> = Type<TypeArrayOutput<Head, Rest>>\n\n/**\n * Creates a tuple type validator with fixed length and types\n */\nexport function tuple<T extends [] | [Type, ...Type[]]>(items: T): TypeArray<T, undefined> {\n return new Type('tuple', {\n _check: (v: any) => Array.isArray(v) && v.length === items.length && items.every((item, i) => item._check?.(v[i]) ?? false),\n _type: items,\n })\n}\n\n/**\n * Creates an array type validator for a specific item type\n */\nexport function array<T>(itemType: Type<T>): Type<T[]> {\n return new Type('array', {\n _check: isArray,\n _type: itemType,\n })\n}\n\n// =============================================================================\n// Function Types\n// =============================================================================\n\n/**\n * Creates a regular function type validator\n */\nexport function func<\n TypeFuncArgs extends [Type<unknown>, ...Type<any>[]] | [],\n TypeFuncRet = Type,\n T = (...args: TypeTuple<TypeFuncArgs>) => Infer<TypeFuncRet>,\n>(args: TypeFuncArgs, ret: TypeFuncRet): Type<T> {\n return new Type('function', {\n _check: isFunction,\n _args: args,\n _ret: ret,\n })\n}\n\n/**\n * Creates an RPC function type validator that takes one argument and returns a promise\n */\nexport function rpc<\n TypeRpcInfo extends Type<unknown> | undefined = undefined,\n TypeRpcRet extends Type<unknown> = Type<void>,\n T = TypeRpcInfo extends undefined\n ? () => Infer<TypeRpcRet>\n : (info: Infer<TypeRpcInfo>) => Infer<TypeRpcRet> | Promise<Infer<TypeRpcRet>>,\n>(info?: TypeRpcInfo, ret?: TypeRpcRet): Type<T> {\n return new Type('rpc', {\n _check: isFunction,\n _info: info,\n _ret: ret ?? none(),\n })\n}\n"],"mappings":"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","names":["Type","_Type","name","options","newProps","cloned","propertiesToCopy","prop","source","target","properties","value","meta","msg","obj","newObj","object","keys","pickedObj","key","omittedObj","transform","transformedObj","originalObj","typeInstance","shouldTransform","type","originalType","optional","newType","string","isString","number","isNumber","int","isInteger","boolean","isBoolean","none","v","any","float","double","real","tobj","isObject","record","valueType","union","option","literal","stringLiterals","values","tuple","items","item","i","array","itemType","isArray","func","args","ret","isFunction","rpc","info"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as i}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as i}from"./chunk-3A7OZZKW.js";import{g as t}from"./chunk-5NFRGZ3B.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-QQWKTUAQ.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{c as b}from"./chunk-IV2DPA6C.js";import{a as c}from"./chunk-DZIYRR7H.js";import{a as L}from"./chunk-LZAJKLTJ.js";var u=class{constructor(){this.subscribers={};this.subscribersOnAny=[];this._logEmitter=b("zeed:emitter","warn");this.call=new Proxy({},{get:(e,r)=>async(...t)=>await this.emit(r,...t)});this.addEventListener=this.on.bind(this);this.removeEventListener=this.off.bind(this)}async getAll(e,...r){try{let t=this.subscribers[e]||[];if(this._logEmitter.debug("emit",this?.constructor?.name,e,...r,t),this.subscribersOnAny.forEach(i=>i(e,...r)),t.length>0){let i=t.map(({fn:s})=>{try{return Promise.resolve(s(...r))}catch(n){this._logEmitter.warn("emit warning:",n)}return null}).filter(s=>s!=null);return await Promise.all(i)}}catch(t){this._logEmitter.error("emit exception",t)}}async get(e,...r){let t=await this.getAll(e,...r);if(t&&t.length>0)return t[0]}async emit(e,...r){return await this.getAll(e,...r)!=null}onAny(e){this.subscribersOnAny.push(e)}on(e,r,t={}){let{priority:i=0}=t,s=this.subscribers[e]||[],n=s.length,a={fn:r,priority:i};if(n<=0)this.subscribers[e]=[a];else{let m=n;for(let l=s.length-1;l>=0;l--){let y=s[l];if(i<=y.priority)break;m-=1}s.splice(m,0,a)}return()=>{this.off(e,r)}}onCall(e){for(let[r,t]of Object.entries(e))this.on(r,t)}once(e,r){let t=async(...i)=>(this.off(e,t),await Promise.resolve(r(...i)));return this.on(e,t),()=>{this.off(e,r)}}off(e,r){return this.subscribers[e]=(this.subscribers[e]||[]).filter(t=>r&&t.fn!==r),this}removeAllListeners(){return this.subscribers={},this}hasListeners(e){return!!this.subscribers[e]&&this.subscribers[e].length>0}waitOn(e,r=1e3){return new Promise((t,i)=>{let s,n=this.once(e,a=>{s?.(),t(a)});s=L(()=>{n(),i(new Error("Did not respond in time"))},r)})}};function h(){let o=c().emitter;return o||(o=new u,c().emitter=o),o}export{u as a,h as b};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-SMI723SR.js.map
|