@xyo-network/module-model 2.107.3 → 2.107.5
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/browser/index.cjs +864 -1
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +843 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/neutral/index.cjs +864 -1
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +843 -1
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/index.cjs +951 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +849 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +8 -8
package/dist/node/index.js
CHANGED
|
@@ -1,2 +1,850 @@
|
|
|
1
|
-
var K=Object.defineProperty;var Le=(e,t,r)=>t in e?K(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var o=(e,t)=>K(e,"name",{value:t,configurable:!0});var D=(e,t,r)=>Le(e,typeof t!="symbol"?t+"":t,r);var pt="network.xyo.module.config";function ht(){return e=>{}}o(ht,"creatableModule");function wt(){return e=>{}}o(wt,"creatableModuleFactory");var Ce=o((e,t)=>({...e,configSchemas:e.configSchemas,create:e.create.bind(e),defaultConfigSchema:e.defaultConfigSchema,labels:{...e.labels,...t}}),"buildModuleFactory"),Te=o((e,t,r,s=!1)=>{let n=o(i=>{switch(typeof s){case"boolean":return s;case"string":return i===s;case"object":if(Array.isArray(s))return s.includes(i)}throw new Error(`Invalid primary value: ${s}`)},"isPrimaryForSchema"),a=Ce(t,r);e[t.defaultConfigSchema]=[a,...e[a.defaultConfigSchema]??[]];for(let i of a.configSchemas)e[i]=n(i)?[a,...e[i]??[]]:[...e[i]??[],a]},"registerCreatableModuleFactory"),yt=o((e,t={},r=!1)=>{for(let s of e)Te(t,s,void 0,r);return t},"registerCreatableModuleFactories"),vt=o((e={},...t)=>(t.map(r=>Object.entries(r).map(([s,n])=>{if(n){let a=e[s];e[s]=a?e[s]=[...a,...n]:n}})),e),"assignCreatableModuleRegistry");var At=o(e=>e.labels!==void 0,"hasLabels");function It(){return e=>{}}o(It,"labeledCreatableModuleFactory");import{assertEx as X}from"@xylabs/assert";import{merge as Y}from"@xylabs/lodash";var T=class T{configSchemas;creatableModule;defaultConfigSchema;defaultLogger;defaultParams;labels;constructor(t,r,s={}){this.creatableModule=t,this.defaultParams=r,this.configSchemas=t.configSchemas,this.defaultConfigSchema=t.defaultConfigSchema,X(this.configSchemas.includes(this.defaultConfigSchema),()=>"defaultConfigSchema must be in configSchemas"),this.labels=Object.assign({},t.labels??{},s??{})}static withParams(t,r,s={}){return new T(t,r,s)}_getRootFunction(t){let r=this;for(;r.__proto__[t];)r=r.__proto__;return r[t]}_noOverride(t){let r=this[t],s=this._getRootFunction(t);X(r===s,()=>`Override not allowed for [${t}] - override ${t}Handler instead`)}create(t){var a;let r=this,s=r.creatableModule.defaultConfigSchema,n=Y({},r.defaultParams,t,{config:Y({},(a=r.defaultParams)==null?void 0:a.config,t==null?void 0:t.config,{schema:s})});return r.creatableModule.create(n)}factory(t){throw new Error("Method not implemented.")}};o(T,"ModuleFactory");var Z=T;var U=class U extends Error{details;constructor(t,r){super(t),this.details=r,this.name="ModuleError"}};o(U,"ModuleDetailsError");var ee=U;import{AsObjectFactory as Ue}from"@xylabs/object";import{IsObjectFactory as qe}from"@xylabs/object";import{AsObjectFactory as Re}from"@xylabs/object";var kt="network.xyo.query.module.manifest";var qt="network.xyo.query.module.address";var te="network.xyo.query.module.state";var Ut="network.xyo.query.module.subscribe";import{AsObjectFactory as Ne}from"@xylabs/object";import{IsObjectFactory as je}from"@xylabs/object";var Oe={address:"string",queries:"array",query:"function"},Fe=new je,h=Fe.create(Oe);var re=Ne.create(h);var H=class H{create(t,r){return(s,n)=>{let a=re(s);return h(a,n)&&((t==null?void 0:t.reduce((c,l)=>c&&a.queries.includes(l),!0))??!0)&&((r==null?void 0:r.reduce((c,l)=>c&&l(s,n),!0))??!0)}}};o(H,"IsModuleFactory");var j=H;var $e=[te],ke=new j,w=ke.create($e,[h]);var rr=Re.create(w);var Ee={manifest:"function",state:"function"},De=new qe,M=De.create(Ee,[w]);var O=Ue.create(M);import{AsObjectFactory as Ve}from"@xylabs/object";import{IsObjectFactory as He}from"@xylabs/object";var Pe={downResolver:"object",upResolver:"object"},Qe=new He,se=Qe.create(Pe,[M]);var xr=Ve.create(se);import{IsObjectFactory as We}from"@xylabs/object";var P=class P extends We{};o(P,"IsAttachableModuleInstanceFactory");var oe=P;import{IsObjectFactory as ze,toJsonString as Je}from"@xylabs/object";var F=class F extends Error{id;error;constructor(t,r,s="Dead Module Error"){super(`${s} [${t}]: ${(r==null?void 0:r.message)??Je(r)}`),this.id=t,this.error=r,Object.setPrototypeOf(this,F.prototype)}};o(F,"DeadModuleError");var ne=F,Q=class Q extends ze{};o(Q,"IsInstanceFactory");var ae=Q;var ie=o(e=>e.address!==void 0,"isAddressObjectFilter"),ce=o(e=>e.name!==void 0,"isNameObjectFilter"),le=o(e=>e.query!==void 0,"isQueryObjectFilter");var Lr=ie,Cr=ce,Tr=le;var ue=o(e=>typeof e.resolve=="function","isObjectResolver"),de;(function(e){e[e.Disabled=-1]="Disabled",e[e.VeryLow=0]="VeryLow",e[e.Low=1]="Low",e[e.Normal=2]="Normal",e[e.High=3]="High",e[e.VeryHigh=4]="VeryHigh"})(de||(de={}));var $r=ue;var Rr=o((e,t)=>t?Object.entries(t).every(([r,s])=>(e==null?void 0:e.hasOwnProperty(r))&&(e==null?void 0:e[r])===s):!0,"hasAllLabels");var Dr="network.xyo.module.limitation",Ur={ModuleLimitationLabelName:"view"};var g=o((e,t,r)=>r.findIndex(s=>s.address===e.address)===t,"duplicateModules");import{every as _e,isArray as Be,isBoolean as Ge,isNull as Ke,isNumber as Xe,isPlainObject as Ye,isString as Ze,isUndefined as et,overSome as V}from"@xylabs/lodash";var fe=[et,Ke,Ge,Xe,Ze],me=[Ye,Be],Wr=o((e,t)=>{let r=!1,s=o(()=>t?t--:void 0,"decrementDepth"),n=o(i=>{if(t!==void 0&&t<1)return r=!0,!1;s();let c=o(l=>V(me)(l)&&_e(l,n),"nestedSerializable");return V([...fe,c])(i)},"recursiveSerializable"),a=n(e);return r?null:a},"serializable"),zr=o(e=>V([...fe,...me])(e),"serializableField");import{isAddress as pe}from"@xylabs/hex";var W=":",tt={" ":!0,"!":!0,'"':!0,"#":!0,$:!0,"%":!0,"&":!0,"'":!0,"(":!0,")":!0,"*":!0,",":!0,".":!0,"/":!0,":":!0,";":!0,"<":!0,"=":!0,">":!0,"?":!0,"@":!0,"[":!0,"]":!0,"^":!0,_:!0,"{":!0,"|":!0,"}":!0,"~":!0},rt=new Set(Object.keys(tt)),st=o(e=>typeof e=="string"&&!pe(e)&&!ot(e),"isModuleName"),ot=o(e=>typeof e=="string"&&[...e].some(t=>rt.has(t)),"includesReservedModuleIdentifierCharacter"),Gr=o(e=>st(e)||pe(e),"isModuleIdentifierPart");var Yr="network.xyo.address",Zr="network.xyo.address.child";var ts="network.xyo.address.hash.previous";var ss="network.xyo.module.description";import{isPayloadOfSchemaType as xe}from"@xyo-network/payload-model";var he="network.xyo.module.state",as=o(e=>xe(he)(e),"isModuleState"),is=o(e=>xe(he)(e),"isModuleStateWithMeta");var N=o(async(e,t,r=!1,s=[])=>{var l,d,x;if(e.address===t)return e;let n=(l=e.addressCache)==null?void 0:l.call(e,"up",r),a=(r?await((d=e.privateChildren)==null?void 0:d.call(e)):[])??[],i=await((x=e.publicChildren)==null?void 0:x.call(e))??[],c=[...a,...i];for(let b of c){let y=await N(b,t,r,s);if(y)return n==null||n.set(t,new WeakRef(y)),y}n==null||n.set(t,null)},"resolveAddressToInstanceDown"),ds=o(async(e,t,r=!1,s=[])=>{var a;let n=await((a=e.siblings)==null?void 0:a.call(e))??[];for(let i of n){let c=await N(i,t,r,s);if(c)return c}},"resolveAddressToInstanceSiblings"),we=o(async(e,t,r=!1,s=[])=>{var i,c;let n=(i=e.addressCache)==null?void 0:i.call(e,"up",r),a=await((c=e.parents)==null?void 0:c.call(e))??[];for(let l of a){let d=await z(l,t,r,s);if(d)return n==null||n.set(t,new WeakRef(d)),d}n==null||n.set(t,null)},"resolveAddressToInstanceUp"),nt=o(async(e,t,r=!1,s=[])=>{var i;let n=(i=e.addressCache)==null?void 0:i.call(e,"all",r),a=await N(e,t,r??!1,s)??await we(e,t,r??!0,s);return n==null||n.set(t,a?new WeakRef(a):null),a},"resolveAddressToInstanceAll"),z=o(async(e,t,r=!1,s=[],n="all")=>{switch(n){case"all":return await nt(e,t,r,s);case"up":return await we(e,t,r??!0,s);case"down":return await N(e,t,r??!1,s)}},"resolveAddressToInstance");import{assertEx as lt}from"@xylabs/assert";import{exists as dt}from"@xylabs/exists";import{isAddress as ut}from"@xylabs/hex";import{IdLogger as ve}from"@xylabs/logger";import{toJsonString as ft}from"@xylabs/object";var S=class S{};o(S,"ResolveHelperStatic"),D(S,"defaultLogger"),D(S,"transformers",[]);var m=S;import{assertEx as at}from"@xylabs/assert";import{asAddress as it}from"@xylabs/hex";var $=o(async(e,t)=>{var s;return(await((s=e.parents)==null?void 0:s.call(e))??[]).find(n=>n.config.name===t)},"resolveLocalNameToInstanceUp"),k=o(async(e,t,r=!1)=>{var i,c;let s=(r?await((i=e.privateChildren)==null?void 0:i.call(e)):[])??[],n=await((c=e.publicChildren)==null?void 0:c.call(e))??[];return[...s,...n].find(l=>l.config.name===t)},"resolveLocalNameToInstanceDown"),J=o(async(e,t,r=!1)=>await k(e,t,r)??await $(e,t),"resolveLocalNameToInstanceAll"),Me=o(async(e,t,r=!1,s="all")=>{switch(s){case"all":return await J(e,t,r);case"up":return await $(e,t);case"down":return await k(e,t,r)}},"resolveLocalNameToInstance");var Ms=o(async(e,t)=>{var r;return(r=await $(e,t))==null?void 0:r.address},"resolveLocalNameToAddressUp"),bs=o(async(e,t,r=!1)=>{var s;return(s=await k(e,t,r))==null?void 0:s.address},"resolveLocalNameToAddressDown"),ys=o(async(e,t,r=!1)=>{var s;return(s=await J(e,t,r))==null?void 0:s.address},"resolveLocalNameToAddressAll"),be=o(async(e,t,r=!1,s="all")=>{var n;return(n=await Me(e,t,r,s))==null?void 0:n.address},"resolveLocalNameToAddress");var R=o(async(e,t)=>{let r=e;for(let s of t)r=await s.transform(e);return r},"transformModuleIdentifier");var _=o(async(e,t,r=!1,s=m.transformers)=>{let n=t.split(W),a=await R(at(n.shift(),()=>`First part is invalid [${t}]`),s);if(!a)return;let i=it(a)??await be(e,a,r);if(i){let c=await z(e,i,r);return c&&n.length>0?_(c,n.join(W)):c}},"resolvePathToInstance");var ye=o(async(e,t,r=!1,s=m.transformers)=>{var n;return(n=await _(e,t,r,s))==null?void 0:n.address},"resolvePathToAddress");import{assertEx as ct}from"@xylabs/assert";var B=o(async(e,t)=>{let r=t.split(":"),s=r.shift(),n=O(ct(await e.resolve(s,{maxDepth:1}),()=>`Failed to resolve [${s}]`),()=>`Resolved invalid module instance [${s}]`);return n?r.length>0?[n.address,...await B(n,r.join(":"))]:[n.address]:[]},"traceModuleIdentifier");var q=class q extends m{static async resolve(t,r="*",{maxDepth:s=3,required:n="log",...a}={}){let{transformers:i,module:c,logger:l=this.defaultLogger,dead:d=!1,upResolver:x,downResolver:b,privateResolver:y}=t,u=l?new ve(l,()=>`ResolveHelper [${c.id}][${r}]`):void 0,A={...a,direction:"down",maxDepth:s,required:!1},I={...A,direction:"up"},Ae={...a,maxDepth:s-1,required:!1},L=(a==null?void 0:a.direction)??"all",C=L==="up"||L==="all",G=L==="down"||L==="all",v;if(u==null||u.debug("start",r,s),r==="*"){if(d)return u==null||u.warn("failed [dead]",r),[];let f=[...G?await b.resolve("*",A):[],...C?await x.resolve("*",I):[]].filter(g).filter(p=>p.address!==t.address);if(f.length>0&&(u==null||u.log("modules [count]",f.length),u==null||u.debug("modules",ft(f,4))),s===0)return f;let E=(await Promise.all(f.map(async p=>await p.resolve("*",Ae)))).flat().filter(g);return[...f,...E].filter(g)}else switch(typeof r){case"string":{if(d)return;let f=await ye(c,r,!1,i)??r;if(f){let E=[[b,A],[C?x:void 0,I],[C?y:void 0,I]].filter(([p])=>dt(p));for(let p of E){let[Ie]=p;v||(v=await this.resolveModuleIdentifier(Ie,f))}}break}default:{if(d)return[];let f=r;v=[...G?await b.resolve(f,A):[],...C?await x.resolve(f,I):[]].filter(g);break}}return this.validateRequiredResolve(n,v,r,l),v}static async resolveModuleIdentifier(t,r,s){let n=r.split(":"),a=n.shift(),i=ut(a),c=await t.resolve(a,{maxDepth:i?10:1})??(a?await t.resolvePrivate(a,{maxDepth:i?10:1}):void 0),l=s?lt(c,()=>`Failed to resolve [${a}] [${i}]`):c,d=O(l,()=>`Resolved invalid module instance [${a}]`);if(d)return n.length>0?await this.resolveModuleIdentifier(d,n.join(":")):d}static traceModuleIdentifier(t,r){return B(t,r)}static transformModuleIdentifier(t,r=q.transformers){return R(t,r)}static validateRequiredResolve(t,r,s,n=this.defaultLogger){let a=n?new ve(n,()=>`validateRequiredResolve [${s}][${r}]`):void 0;if(t&&(r===void 0||Array.isArray(r)&&r.length>0))switch(t){case"warn":{a==null||a.warn("resolve failed",s);break}case"log":{a==null||a.log("resolve failed",s);break}default:throw new Error(`resolve failed [${s}]`)}}};o(q,"ResolveHelper");var ge=q;var Se={create:o(e=>(t,r)=>e(t)?r(t):void 0,"create")},so=Se.create(w),oo=Se.create(M);export{Zr as AddressChildSchema,ts as AddressPreviousHashSchema,Yr as AddressSchema,ne as DeadModuleError,tt as DisallowedModuleIdentifierCharacters,oe as IsAttachableModuleInstanceFactory,ae as IsInstanceFactory,j as IsModuleFactory,W as MODULE_PATH_SEPARATOR,qt as ModuleAddressQuerySchema,pt as ModuleConfigSchema,ss as ModuleDescriptionSchema,ee as ModuleDetailsError,Z as ModuleFactory,Dr as ModuleLimitationLabelName,Ur as ModuleLimitationViewLabel,kt as ModuleManifestQuerySchema,te as ModuleStateQuerySchema,he as ModuleStateSchema,Ut as ModuleSubscribeQuerySchema,de as ObjectResolverPriority,rt as ReservedModuleIdentifierCharacters,ge as ResolveHelper,Se as WithFactory,xr as asAttachableModuleInstance,rr as asModule,O as asModuleInstance,re as asModuleObject,vt as assignCreatableModuleRegistry,ht as creatableModule,wt as creatableModuleFactory,g as duplicateModules,Rr as hasAllLabels,At as hasLabels,ot as includesReservedModuleIdentifierCharacter,Lr as isAddressModuleFilter,ie as isAddressObjectFilter,se as isAttachableModuleInstance,w as isModule,Gr as isModuleIdentifierPart,M as isModuleInstance,st as isModuleName,h as isModuleObject,$r as isModuleResolver,as as isModuleState,is as isModuleStateWithMeta,Cr as isNameModuleFilter,ce as isNameObjectFilter,ue as isObjectResolver,Tr as isQueryModuleFilter,le as isQueryObjectFilter,It as labeledCreatableModuleFactory,yt as registerCreatableModuleFactories,Te as registerCreatableModuleFactory,Pe as requiredAttachableModuleInstanceFunctions,Ee as requiredModuleInstanceFunctions,$e as requiredModuleQueries,Oe as requiredModuleShape,z as resolveAddressToInstance,nt as resolveAddressToInstanceAll,N as resolveAddressToInstanceDown,ds as resolveAddressToInstanceSiblings,we as resolveAddressToInstanceUp,be as resolveLocalNameToAddress,ys as resolveLocalNameToAddressAll,bs as resolveLocalNameToAddressDown,Ms as resolveLocalNameToAddressUp,Me as resolveLocalNameToInstance,J as resolveLocalNameToInstanceAll,k as resolveLocalNameToInstanceDown,$ as resolveLocalNameToInstanceUp,ye as resolvePathToAddress,_ as resolvePathToInstance,Wr as serializable,zr as serializableField,R as transformModuleIdentifier,so as withModule,oo as withModuleInstance};
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
4
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
|
|
6
|
+
// src/Config/Config.ts
|
|
7
|
+
var ModuleConfigSchema = "network.xyo.module.config";
|
|
8
|
+
|
|
9
|
+
// src/CreatableModule/CreatableModule.ts
|
|
10
|
+
function creatableModule() {
|
|
11
|
+
return (constructor) => {
|
|
12
|
+
constructor;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
__name(creatableModule, "creatableModule");
|
|
16
|
+
function creatableModuleFactory() {
|
|
17
|
+
return (constructor) => {
|
|
18
|
+
constructor;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
__name(creatableModuleFactory, "creatableModuleFactory");
|
|
22
|
+
|
|
23
|
+
// src/CreatableModule/CreatableModuleRegistry.ts
|
|
24
|
+
var buildModuleFactory = /* @__PURE__ */ __name((mod, labels) => {
|
|
25
|
+
const factory5 = {
|
|
26
|
+
// Destructure instance properties
|
|
27
|
+
...mod,
|
|
28
|
+
configSchemas: mod.configSchemas,
|
|
29
|
+
// Copy static methods
|
|
30
|
+
create: mod.create.bind(mod),
|
|
31
|
+
defaultConfigSchema: mod.defaultConfigSchema,
|
|
32
|
+
// Merge module & supplied labels
|
|
33
|
+
labels: {
|
|
34
|
+
...mod.labels,
|
|
35
|
+
...labels
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
return factory5;
|
|
39
|
+
}, "buildModuleFactory");
|
|
40
|
+
var registerCreatableModuleFactory = /* @__PURE__ */ __name((registry, factory5, labels, primary = false) => {
|
|
41
|
+
const isPrimaryForSchema = /* @__PURE__ */ __name((schema) => {
|
|
42
|
+
switch (typeof primary) {
|
|
43
|
+
case "boolean": {
|
|
44
|
+
return primary;
|
|
45
|
+
}
|
|
46
|
+
case "string": {
|
|
47
|
+
return schema === primary;
|
|
48
|
+
}
|
|
49
|
+
case "object": {
|
|
50
|
+
if (Array.isArray(primary)) {
|
|
51
|
+
return primary.includes(schema);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
throw new Error(`Invalid primary value: ${primary}`);
|
|
56
|
+
}, "isPrimaryForSchema");
|
|
57
|
+
const factoryClone = buildModuleFactory(factory5, labels);
|
|
58
|
+
registry[factory5.defaultConfigSchema] = [
|
|
59
|
+
factoryClone,
|
|
60
|
+
...registry[factoryClone.defaultConfigSchema] ?? []
|
|
61
|
+
];
|
|
62
|
+
for (const schema of factoryClone.configSchemas) {
|
|
63
|
+
registry[schema] = isPrimaryForSchema(schema) ? [
|
|
64
|
+
factoryClone,
|
|
65
|
+
...registry[schema] ?? []
|
|
66
|
+
] : [
|
|
67
|
+
...registry[schema] ?? [],
|
|
68
|
+
factoryClone
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
}, "registerCreatableModuleFactory");
|
|
72
|
+
var registerCreatableModuleFactories = /* @__PURE__ */ __name((factories, registry = {}, primary = false) => {
|
|
73
|
+
for (const factory5 of factories) {
|
|
74
|
+
registerCreatableModuleFactory(registry, factory5, void 0, primary);
|
|
75
|
+
}
|
|
76
|
+
return registry;
|
|
77
|
+
}, "registerCreatableModuleFactories");
|
|
78
|
+
var assignCreatableModuleRegistry = /* @__PURE__ */ __name((target = {}, ...sources) => {
|
|
79
|
+
sources.map((source) => Object.entries(source).map(([schema, factories]) => {
|
|
80
|
+
if (factories) {
|
|
81
|
+
const existingFactories = target[schema];
|
|
82
|
+
target[schema] = existingFactories ? target[schema] = [
|
|
83
|
+
...existingFactories,
|
|
84
|
+
...factories
|
|
85
|
+
] : factories;
|
|
86
|
+
}
|
|
87
|
+
}));
|
|
88
|
+
return target;
|
|
89
|
+
}, "assignCreatableModuleRegistry");
|
|
90
|
+
|
|
91
|
+
// src/CreatableModule/LabeledCreatableModuleFactory.ts
|
|
92
|
+
var hasLabels = /* @__PURE__ */ __name((factory5) => {
|
|
93
|
+
return factory5.labels !== void 0;
|
|
94
|
+
}, "hasLabels");
|
|
95
|
+
function labeledCreatableModuleFactory() {
|
|
96
|
+
return (constructor) => {
|
|
97
|
+
constructor;
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
__name(labeledCreatableModuleFactory, "labeledCreatableModuleFactory");
|
|
101
|
+
|
|
102
|
+
// src/CreatableModule/ModuleFactory.ts
|
|
103
|
+
import { assertEx } from "@xylabs/assert";
|
|
104
|
+
import { merge } from "@xylabs/lodash";
|
|
105
|
+
var _ModuleFactory = class _ModuleFactory {
|
|
106
|
+
configSchemas;
|
|
107
|
+
creatableModule;
|
|
108
|
+
defaultConfigSchema;
|
|
109
|
+
defaultLogger;
|
|
110
|
+
defaultParams;
|
|
111
|
+
labels;
|
|
112
|
+
constructor(creatableModule2, params, labels = {}) {
|
|
113
|
+
this.creatableModule = creatableModule2;
|
|
114
|
+
this.defaultParams = params;
|
|
115
|
+
this.configSchemas = creatableModule2.configSchemas;
|
|
116
|
+
this.defaultConfigSchema = creatableModule2.defaultConfigSchema;
|
|
117
|
+
assertEx(this.configSchemas.includes(this.defaultConfigSchema), () => "defaultConfigSchema must be in configSchemas");
|
|
118
|
+
this.labels = Object.assign({}, creatableModule2.labels ?? {}, labels ?? {});
|
|
119
|
+
}
|
|
120
|
+
static withParams(creatableModule2, params, labels = {}) {
|
|
121
|
+
return new _ModuleFactory(creatableModule2, params, labels);
|
|
122
|
+
}
|
|
123
|
+
_getRootFunction(funcName) {
|
|
124
|
+
let anyThis = this;
|
|
125
|
+
while (anyThis.__proto__[funcName]) {
|
|
126
|
+
anyThis = anyThis.__proto__;
|
|
127
|
+
}
|
|
128
|
+
return anyThis[funcName];
|
|
129
|
+
}
|
|
130
|
+
_noOverride(functionName) {
|
|
131
|
+
const thisFunc = this[functionName];
|
|
132
|
+
const rootFunc = this._getRootFunction(functionName);
|
|
133
|
+
assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`);
|
|
134
|
+
}
|
|
135
|
+
create(params) {
|
|
136
|
+
var _a;
|
|
137
|
+
const factory5 = this;
|
|
138
|
+
const schema = factory5.creatableModule.defaultConfigSchema;
|
|
139
|
+
const mergedParams = merge({}, factory5.defaultParams, params, {
|
|
140
|
+
config: merge({}, (_a = factory5.defaultParams) == null ? void 0 : _a.config, params == null ? void 0 : params.config, {
|
|
141
|
+
schema
|
|
142
|
+
})
|
|
143
|
+
});
|
|
144
|
+
return factory5.creatableModule.create(mergedParams);
|
|
145
|
+
}
|
|
146
|
+
factory(_params) {
|
|
147
|
+
throw new Error("Method not implemented.");
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
__name(_ModuleFactory, "ModuleFactory");
|
|
151
|
+
var ModuleFactory = _ModuleFactory;
|
|
152
|
+
|
|
153
|
+
// src/DetailsError.ts
|
|
154
|
+
var _ModuleDetailsError = class _ModuleDetailsError extends Error {
|
|
155
|
+
details;
|
|
156
|
+
constructor(message, details) {
|
|
157
|
+
super(message);
|
|
158
|
+
this.details = details;
|
|
159
|
+
this.name = "ModuleError";
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
__name(_ModuleDetailsError, "ModuleDetailsError");
|
|
163
|
+
var ModuleDetailsError = _ModuleDetailsError;
|
|
164
|
+
|
|
165
|
+
// src/instance/asModuleInstance.ts
|
|
166
|
+
import { AsObjectFactory as AsObjectFactory3 } from "@xylabs/object";
|
|
167
|
+
|
|
168
|
+
// src/instance/isModuleInstance.ts
|
|
169
|
+
import { IsObjectFactory as IsObjectFactory2 } from "@xylabs/object";
|
|
170
|
+
|
|
171
|
+
// src/module/asModule.ts
|
|
172
|
+
import { AsObjectFactory as AsObjectFactory2 } from "@xylabs/object";
|
|
173
|
+
|
|
174
|
+
// src/Queries/Manifest.ts
|
|
175
|
+
var ModuleManifestQuerySchema = "network.xyo.query.module.manifest";
|
|
176
|
+
|
|
177
|
+
// src/Queries/ModuleAddress/Query.ts
|
|
178
|
+
var ModuleAddressQuerySchema = "network.xyo.query.module.address";
|
|
179
|
+
|
|
180
|
+
// src/Queries/State.ts
|
|
181
|
+
var ModuleStateQuerySchema = "network.xyo.query.module.state";
|
|
182
|
+
|
|
183
|
+
// src/Queries/Subscribe.ts
|
|
184
|
+
var ModuleSubscribeQuerySchema = "network.xyo.query.module.subscribe";
|
|
185
|
+
|
|
186
|
+
// src/module/asModuleObject.ts
|
|
187
|
+
import { AsObjectFactory } from "@xylabs/object";
|
|
188
|
+
|
|
189
|
+
// src/module/isModuleObject.ts
|
|
190
|
+
import { IsObjectFactory } from "@xylabs/object";
|
|
191
|
+
var requiredModuleShape = {
|
|
192
|
+
address: "string",
|
|
193
|
+
queries: "array",
|
|
194
|
+
query: "function"
|
|
195
|
+
};
|
|
196
|
+
var factory = new IsObjectFactory();
|
|
197
|
+
var isModuleObject = factory.create(requiredModuleShape);
|
|
198
|
+
|
|
199
|
+
// src/module/asModuleObject.ts
|
|
200
|
+
var asModuleObject = AsObjectFactory.create(isModuleObject);
|
|
201
|
+
|
|
202
|
+
// src/module/IsModuleFactory.ts
|
|
203
|
+
var _IsModuleFactory = class _IsModuleFactory {
|
|
204
|
+
create(expectedQueries, additionalChecks) {
|
|
205
|
+
return (obj, config) => {
|
|
206
|
+
const module = asModuleObject(obj);
|
|
207
|
+
const result = isModuleObject(module, config) && ((expectedQueries == null ? void 0 : expectedQueries.reduce((prev, query) => prev && module.queries.includes(query), true)) ?? true) && //perform additional checks
|
|
208
|
+
((additionalChecks == null ? void 0 : additionalChecks.reduce((prev, check) => prev && check(obj, config), true)) ?? true);
|
|
209
|
+
return result;
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
__name(_IsModuleFactory, "IsModuleFactory");
|
|
214
|
+
var IsModuleFactory = _IsModuleFactory;
|
|
215
|
+
|
|
216
|
+
// src/module/isModule.ts
|
|
217
|
+
var requiredModuleQueries = [
|
|
218
|
+
ModuleStateQuerySchema
|
|
219
|
+
];
|
|
220
|
+
var factory2 = new IsModuleFactory();
|
|
221
|
+
var isModule = factory2.create(requiredModuleQueries, [
|
|
222
|
+
isModuleObject
|
|
223
|
+
]);
|
|
224
|
+
|
|
225
|
+
// src/module/asModule.ts
|
|
226
|
+
var asModule = AsObjectFactory2.create(isModule);
|
|
227
|
+
|
|
228
|
+
// src/instance/isModuleInstance.ts
|
|
229
|
+
var requiredModuleInstanceFunctions = {
|
|
230
|
+
manifest: "function",
|
|
231
|
+
state: "function"
|
|
232
|
+
};
|
|
233
|
+
var factory3 = new IsObjectFactory2();
|
|
234
|
+
var isModuleInstance = factory3.create(requiredModuleInstanceFunctions, [
|
|
235
|
+
isModule
|
|
236
|
+
]);
|
|
237
|
+
|
|
238
|
+
// src/instance/asModuleInstance.ts
|
|
239
|
+
var asModuleInstance = AsObjectFactory3.create(isModuleInstance);
|
|
240
|
+
|
|
241
|
+
// src/instance/attachable/asAttachableInstance.ts
|
|
242
|
+
import { AsObjectFactory as AsObjectFactory4 } from "@xylabs/object";
|
|
243
|
+
|
|
244
|
+
// src/instance/attachable/isAttachableInstance.ts
|
|
245
|
+
import { IsObjectFactory as IsObjectFactory3 } from "@xylabs/object";
|
|
246
|
+
var requiredAttachableModuleInstanceFunctions = {
|
|
247
|
+
downResolver: "object",
|
|
248
|
+
upResolver: "object"
|
|
249
|
+
};
|
|
250
|
+
var factory4 = new IsObjectFactory3();
|
|
251
|
+
var isAttachableModuleInstance = factory4.create(requiredAttachableModuleInstanceFunctions, [
|
|
252
|
+
isModuleInstance
|
|
253
|
+
]);
|
|
254
|
+
|
|
255
|
+
// src/instance/attachable/asAttachableInstance.ts
|
|
256
|
+
var asAttachableModuleInstance = AsObjectFactory4.create(isAttachableModuleInstance);
|
|
257
|
+
|
|
258
|
+
// src/instance/attachable/AttachableInstance.ts
|
|
259
|
+
import { IsObjectFactory as IsObjectFactory4 } from "@xylabs/object";
|
|
260
|
+
var _IsAttachableModuleInstanceFactory = class _IsAttachableModuleInstanceFactory extends IsObjectFactory4 {
|
|
261
|
+
};
|
|
262
|
+
__name(_IsAttachableModuleInstanceFactory, "IsAttachableModuleInstanceFactory");
|
|
263
|
+
var IsAttachableModuleInstanceFactory = _IsAttachableModuleInstanceFactory;
|
|
264
|
+
|
|
265
|
+
// src/instance/Instance.ts
|
|
266
|
+
import { IsObjectFactory as IsObjectFactory5, toJsonString } from "@xylabs/object";
|
|
267
|
+
var _DeadModuleError = class _DeadModuleError extends Error {
|
|
268
|
+
id;
|
|
269
|
+
error;
|
|
270
|
+
constructor(id, error, msg = "Dead Module Error") {
|
|
271
|
+
super(`${msg} [${id}]: ${(error == null ? void 0 : error.message) ?? toJsonString(error)}`);
|
|
272
|
+
this.id = id;
|
|
273
|
+
this.error = error;
|
|
274
|
+
Object.setPrototypeOf(this, _DeadModuleError.prototype);
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
__name(_DeadModuleError, "DeadModuleError");
|
|
278
|
+
var DeadModuleError = _DeadModuleError;
|
|
279
|
+
var _IsInstanceFactory = class _IsInstanceFactory extends IsObjectFactory5 {
|
|
280
|
+
};
|
|
281
|
+
__name(_IsInstanceFactory, "IsInstanceFactory");
|
|
282
|
+
var IsInstanceFactory = _IsInstanceFactory;
|
|
283
|
+
|
|
284
|
+
// src/instance/ObjectFilter.ts
|
|
285
|
+
var isAddressObjectFilter = /* @__PURE__ */ __name((value) => value.address !== void 0, "isAddressObjectFilter");
|
|
286
|
+
var isNameObjectFilter = /* @__PURE__ */ __name((value) => value.name !== void 0, "isNameObjectFilter");
|
|
287
|
+
var isQueryObjectFilter = /* @__PURE__ */ __name((value) => value.query !== void 0, "isQueryObjectFilter");
|
|
288
|
+
|
|
289
|
+
// src/instance/ModuleFilter.ts
|
|
290
|
+
var isAddressModuleFilter = isAddressObjectFilter;
|
|
291
|
+
var isNameModuleFilter = isNameObjectFilter;
|
|
292
|
+
var isQueryModuleFilter = isQueryObjectFilter;
|
|
293
|
+
|
|
294
|
+
// src/instance/ObjectResolver.ts
|
|
295
|
+
var isObjectResolver = /* @__PURE__ */ __name((value) => {
|
|
296
|
+
return typeof value.resolve === "function";
|
|
297
|
+
}, "isObjectResolver");
|
|
298
|
+
var ObjectResolverPriority;
|
|
299
|
+
(function(ObjectResolverPriority2) {
|
|
300
|
+
ObjectResolverPriority2[ObjectResolverPriority2["Disabled"] = -1] = "Disabled";
|
|
301
|
+
ObjectResolverPriority2[ObjectResolverPriority2["VeryLow"] = 0] = "VeryLow";
|
|
302
|
+
ObjectResolverPriority2[ObjectResolverPriority2["Low"] = 1] = "Low";
|
|
303
|
+
ObjectResolverPriority2[ObjectResolverPriority2["Normal"] = 2] = "Normal";
|
|
304
|
+
ObjectResolverPriority2[ObjectResolverPriority2["High"] = 3] = "High";
|
|
305
|
+
ObjectResolverPriority2[ObjectResolverPriority2["VeryHigh"] = 4] = "VeryHigh";
|
|
306
|
+
})(ObjectResolverPriority || (ObjectResolverPriority = {}));
|
|
307
|
+
|
|
308
|
+
// src/instance/ModuleResolver.ts
|
|
309
|
+
var isModuleResolver = isObjectResolver;
|
|
310
|
+
|
|
311
|
+
// src/Labels/Labels.ts
|
|
312
|
+
var hasAllLabels = /* @__PURE__ */ __name((source, required) => {
|
|
313
|
+
if (!required) return true;
|
|
314
|
+
return Object.entries(required).every(([key, value]) => {
|
|
315
|
+
return (source == null ? void 0 : source.hasOwnProperty(key)) && (source == null ? void 0 : source[key]) === value;
|
|
316
|
+
});
|
|
317
|
+
}, "hasAllLabels");
|
|
318
|
+
|
|
319
|
+
// src/Labels/standard/View.ts
|
|
320
|
+
var ModuleLimitationLabelName = "network.xyo.module.limitation";
|
|
321
|
+
var ModuleLimitationViewLabel = {
|
|
322
|
+
ModuleLimitationLabelName: "view"
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
// src/lib/duplicateModules.ts
|
|
326
|
+
var duplicateModules = /* @__PURE__ */ __name((value, index, array) => {
|
|
327
|
+
return array.findIndex((v) => v.address === value.address) === index;
|
|
328
|
+
}, "duplicateModules");
|
|
329
|
+
|
|
330
|
+
// src/lib/serializable.ts
|
|
331
|
+
import { every, isArray, isBoolean, isNull, isNumber, isPlainObject, isString, isUndefined, overSome } from "@xylabs/lodash";
|
|
332
|
+
var JSONPrimitiveChecks = [
|
|
333
|
+
isUndefined,
|
|
334
|
+
isNull,
|
|
335
|
+
isBoolean,
|
|
336
|
+
isNumber,
|
|
337
|
+
isString
|
|
338
|
+
];
|
|
339
|
+
var JSONComplexChecks = [
|
|
340
|
+
isPlainObject,
|
|
341
|
+
isArray
|
|
342
|
+
];
|
|
343
|
+
var serializable = /* @__PURE__ */ __name((field, depth) => {
|
|
344
|
+
let depthExceeded = false;
|
|
345
|
+
const decrementDepth = /* @__PURE__ */ __name(() => depth ? depth-- : void 0, "decrementDepth");
|
|
346
|
+
const recursiveSerializable = /* @__PURE__ */ __name((field2) => {
|
|
347
|
+
if (depth !== void 0 && depth < 1) {
|
|
348
|
+
depthExceeded = true;
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
decrementDepth();
|
|
352
|
+
const nestedSerializable = /* @__PURE__ */ __name((field3) => overSome(JSONComplexChecks)(field3) && every(field3, recursiveSerializable), "nestedSerializable");
|
|
353
|
+
return overSome([
|
|
354
|
+
...JSONPrimitiveChecks,
|
|
355
|
+
nestedSerializable
|
|
356
|
+
])(field2);
|
|
357
|
+
}, "recursiveSerializable");
|
|
358
|
+
const valid = recursiveSerializable(field);
|
|
359
|
+
return depthExceeded ? null : valid;
|
|
360
|
+
}, "serializable");
|
|
361
|
+
var serializableField = /* @__PURE__ */ __name((field) => {
|
|
362
|
+
return overSome([
|
|
363
|
+
...JSONPrimitiveChecks,
|
|
364
|
+
...JSONComplexChecks
|
|
365
|
+
])(field);
|
|
366
|
+
}, "serializableField");
|
|
367
|
+
|
|
368
|
+
// src/ModuleIdentifier.ts
|
|
369
|
+
import { isAddress } from "@xylabs/hex";
|
|
370
|
+
var MODULE_PATH_SEPARATOR = ":";
|
|
371
|
+
var DisallowedModuleIdentifierCharacters = {
|
|
372
|
+
" ": true,
|
|
373
|
+
"!": true,
|
|
374
|
+
'"': true,
|
|
375
|
+
"#": true,
|
|
376
|
+
$: true,
|
|
377
|
+
"%": true,
|
|
378
|
+
"&": true,
|
|
379
|
+
"'": true,
|
|
380
|
+
"(": true,
|
|
381
|
+
")": true,
|
|
382
|
+
"*": true,
|
|
383
|
+
",": true,
|
|
384
|
+
".": true,
|
|
385
|
+
"/": true,
|
|
386
|
+
":": true,
|
|
387
|
+
";": true,
|
|
388
|
+
"<": true,
|
|
389
|
+
"=": true,
|
|
390
|
+
">": true,
|
|
391
|
+
"?": true,
|
|
392
|
+
"@": true,
|
|
393
|
+
"[": true,
|
|
394
|
+
"]": true,
|
|
395
|
+
"^": true,
|
|
396
|
+
_: true,
|
|
397
|
+
"{": true,
|
|
398
|
+
"|": true,
|
|
399
|
+
"}": true,
|
|
400
|
+
"~": true
|
|
401
|
+
};
|
|
402
|
+
var ReservedModuleIdentifierCharacters = new Set(Object.keys(DisallowedModuleIdentifierCharacters));
|
|
403
|
+
var isModuleName = /* @__PURE__ */ __name((value) => {
|
|
404
|
+
return typeof value === "string" && !isAddress(value) && !includesReservedModuleIdentifierCharacter(value);
|
|
405
|
+
}, "isModuleName");
|
|
406
|
+
var includesReservedModuleIdentifierCharacter = /* @__PURE__ */ __name((value) => {
|
|
407
|
+
return typeof value === "string" && [
|
|
408
|
+
...value
|
|
409
|
+
].some((char) => ReservedModuleIdentifierCharacters.has(char));
|
|
410
|
+
}, "includesReservedModuleIdentifierCharacter");
|
|
411
|
+
var isModuleIdentifierPart = /* @__PURE__ */ __name((value) => {
|
|
412
|
+
return isModuleName(value) || isAddress(value);
|
|
413
|
+
}, "isModuleIdentifierPart");
|
|
414
|
+
|
|
415
|
+
// src/Payload/Address.ts
|
|
416
|
+
var AddressSchema = "network.xyo.address";
|
|
417
|
+
var AddressChildSchema = "network.xyo.address.child";
|
|
418
|
+
|
|
419
|
+
// src/Payload/AddressPreviousHash.ts
|
|
420
|
+
var AddressPreviousHashSchema = "network.xyo.address.hash.previous";
|
|
421
|
+
|
|
422
|
+
// src/Payload/Description.ts
|
|
423
|
+
var ModuleDescriptionSchema = "network.xyo.module.description";
|
|
424
|
+
|
|
425
|
+
// src/Payload/ModuleState.ts
|
|
426
|
+
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
427
|
+
var ModuleStateSchema = "network.xyo.module.state";
|
|
428
|
+
var isModuleState = /* @__PURE__ */ __name((payload) => {
|
|
429
|
+
return isPayloadOfSchemaType(ModuleStateSchema)(payload);
|
|
430
|
+
}, "isModuleState");
|
|
431
|
+
var isModuleStateWithMeta = /* @__PURE__ */ __name((payload) => {
|
|
432
|
+
return isPayloadOfSchemaType(ModuleStateSchema)(payload);
|
|
433
|
+
}, "isModuleStateWithMeta");
|
|
434
|
+
|
|
435
|
+
// src/ResolveHelper/resolveAddressToInstance.ts
|
|
436
|
+
var resolveAddressToInstanceDown = /* @__PURE__ */ __name(async (root, address, includePrivate = false, ignore = []) => {
|
|
437
|
+
var _a, _b, _c;
|
|
438
|
+
if (root.address === address) {
|
|
439
|
+
return root;
|
|
440
|
+
}
|
|
441
|
+
const cache = (_a = root.addressCache) == null ? void 0 : _a.call(root, "up", includePrivate);
|
|
442
|
+
const privateChildren = (includePrivate ? await ((_b = root.privateChildren) == null ? void 0 : _b.call(root)) : []) ?? [];
|
|
443
|
+
const publicChildren = await ((_c = root.publicChildren) == null ? void 0 : _c.call(root)) ?? [];
|
|
444
|
+
const children = [
|
|
445
|
+
...privateChildren,
|
|
446
|
+
...publicChildren
|
|
447
|
+
];
|
|
448
|
+
for (const child of children) {
|
|
449
|
+
const found = await resolveAddressToInstanceDown(child, address, includePrivate, ignore);
|
|
450
|
+
if (found) {
|
|
451
|
+
cache == null ? void 0 : cache.set(address, new WeakRef(found));
|
|
452
|
+
return found;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
cache == null ? void 0 : cache.set(address, null);
|
|
456
|
+
}, "resolveAddressToInstanceDown");
|
|
457
|
+
var resolveAddressToInstanceSiblings = /* @__PURE__ */ __name(async (root, address, includePrivate = false, ignore = []) => {
|
|
458
|
+
var _a;
|
|
459
|
+
const siblings = await ((_a = root.siblings) == null ? void 0 : _a.call(root)) ?? [];
|
|
460
|
+
for (const sibling of siblings) {
|
|
461
|
+
const found = await resolveAddressToInstanceDown(sibling, address, includePrivate, ignore);
|
|
462
|
+
if (found) {
|
|
463
|
+
return found;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}, "resolveAddressToInstanceSiblings");
|
|
467
|
+
var resolveAddressToInstanceUp = /* @__PURE__ */ __name(async (root, address, includePrivate = false, ignore = []) => {
|
|
468
|
+
var _a, _b;
|
|
469
|
+
const cache = (_a = root.addressCache) == null ? void 0 : _a.call(root, "up", includePrivate);
|
|
470
|
+
const parents = await ((_b = root.parents) == null ? void 0 : _b.call(root)) ?? [];
|
|
471
|
+
for (const parent of parents) {
|
|
472
|
+
const found = await resolveAddressToInstance(parent, address, includePrivate, ignore);
|
|
473
|
+
if (found) {
|
|
474
|
+
cache == null ? void 0 : cache.set(address, new WeakRef(found));
|
|
475
|
+
return found;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
cache == null ? void 0 : cache.set(address, null);
|
|
479
|
+
}, "resolveAddressToInstanceUp");
|
|
480
|
+
var resolveAddressToInstanceAll = /* @__PURE__ */ __name(async (root, address, includePrivate = false, ignore = []) => {
|
|
481
|
+
var _a;
|
|
482
|
+
const cache = (_a = root.addressCache) == null ? void 0 : _a.call(root, "all", includePrivate);
|
|
483
|
+
const result = await resolveAddressToInstanceDown(root, address, includePrivate ?? false, ignore) ?? await resolveAddressToInstanceUp(root, address, includePrivate ?? true, ignore);
|
|
484
|
+
cache == null ? void 0 : cache.set(address, result ? new WeakRef(result) : null);
|
|
485
|
+
return result;
|
|
486
|
+
}, "resolveAddressToInstanceAll");
|
|
487
|
+
var resolveAddressToInstance = /* @__PURE__ */ __name(async (root, address, includePrivate = false, ignore = [], direction = "all") => {
|
|
488
|
+
switch (direction) {
|
|
489
|
+
case "all": {
|
|
490
|
+
return await resolveAddressToInstanceAll(root, address, includePrivate, ignore);
|
|
491
|
+
}
|
|
492
|
+
case "up": {
|
|
493
|
+
return await resolveAddressToInstanceUp(root, address, includePrivate ?? true, ignore);
|
|
494
|
+
}
|
|
495
|
+
case "down": {
|
|
496
|
+
return await resolveAddressToInstanceDown(root, address, includePrivate ?? false, ignore);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}, "resolveAddressToInstance");
|
|
500
|
+
|
|
501
|
+
// src/ResolveHelper/ResolveHelper.ts
|
|
502
|
+
import { assertEx as assertEx4 } from "@xylabs/assert";
|
|
503
|
+
import { exists } from "@xylabs/exists";
|
|
504
|
+
import { isAddress as isAddress2 } from "@xylabs/hex";
|
|
505
|
+
import { IdLogger } from "@xylabs/logger";
|
|
506
|
+
import { toJsonString as toJsonString2 } from "@xylabs/object";
|
|
507
|
+
|
|
508
|
+
// src/ResolveHelper/ResolveHelperStatic.ts
|
|
509
|
+
var _ResolveHelperStatic = class _ResolveHelperStatic {
|
|
510
|
+
};
|
|
511
|
+
__name(_ResolveHelperStatic, "ResolveHelperStatic");
|
|
512
|
+
__publicField(_ResolveHelperStatic, "defaultLogger");
|
|
513
|
+
__publicField(_ResolveHelperStatic, "transformers", []);
|
|
514
|
+
var ResolveHelperStatic = _ResolveHelperStatic;
|
|
515
|
+
|
|
516
|
+
// src/ResolveHelper/resolvePathToInstance.ts
|
|
517
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
518
|
+
import { asAddress } from "@xylabs/hex";
|
|
519
|
+
|
|
520
|
+
// src/ResolveHelper/resolveLocalNameToInstance.ts
|
|
521
|
+
var resolveLocalNameToInstanceUp = /* @__PURE__ */ __name(async (root, modName) => {
|
|
522
|
+
var _a;
|
|
523
|
+
const parents = await ((_a = root.parents) == null ? void 0 : _a.call(root)) ?? [];
|
|
524
|
+
return parents.find((parent) => parent.config.name === modName);
|
|
525
|
+
}, "resolveLocalNameToInstanceUp");
|
|
526
|
+
var resolveLocalNameToInstanceDown = /* @__PURE__ */ __name(async (root, modName, includePrivate = false) => {
|
|
527
|
+
var _a, _b;
|
|
528
|
+
const privateChildren = (includePrivate ? await ((_a = root.privateChildren) == null ? void 0 : _a.call(root)) : []) ?? [];
|
|
529
|
+
const publicChildren = await ((_b = root.publicChildren) == null ? void 0 : _b.call(root)) ?? [];
|
|
530
|
+
const children = [
|
|
531
|
+
...privateChildren,
|
|
532
|
+
...publicChildren
|
|
533
|
+
];
|
|
534
|
+
return children.find((child) => child.config.name === modName);
|
|
535
|
+
}, "resolveLocalNameToInstanceDown");
|
|
536
|
+
var resolveLocalNameToInstanceAll = /* @__PURE__ */ __name(async (root, modName, includePrivate = false) => {
|
|
537
|
+
return await resolveLocalNameToInstanceDown(root, modName, includePrivate) ?? await resolveLocalNameToInstanceUp(root, modName);
|
|
538
|
+
}, "resolveLocalNameToInstanceAll");
|
|
539
|
+
var resolveLocalNameToInstance = /* @__PURE__ */ __name(async (root, modName, includePrivate = false, direction = "all") => {
|
|
540
|
+
switch (direction) {
|
|
541
|
+
case "all": {
|
|
542
|
+
return await resolveLocalNameToInstanceAll(root, modName, includePrivate);
|
|
543
|
+
}
|
|
544
|
+
case "up": {
|
|
545
|
+
return await resolveLocalNameToInstanceUp(root, modName);
|
|
546
|
+
}
|
|
547
|
+
case "down": {
|
|
548
|
+
return await resolveLocalNameToInstanceDown(root, modName, includePrivate);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}, "resolveLocalNameToInstance");
|
|
552
|
+
|
|
553
|
+
// src/ResolveHelper/resolveLocalNameToAddress.ts
|
|
554
|
+
var resolveLocalNameToAddressUp = /* @__PURE__ */ __name(async (root, modName) => {
|
|
555
|
+
var _a;
|
|
556
|
+
return (_a = await resolveLocalNameToInstanceUp(root, modName)) == null ? void 0 : _a.address;
|
|
557
|
+
}, "resolveLocalNameToAddressUp");
|
|
558
|
+
var resolveLocalNameToAddressDown = /* @__PURE__ */ __name(async (root, modName, includePrivate = false) => {
|
|
559
|
+
var _a;
|
|
560
|
+
return (_a = await resolveLocalNameToInstanceDown(root, modName, includePrivate)) == null ? void 0 : _a.address;
|
|
561
|
+
}, "resolveLocalNameToAddressDown");
|
|
562
|
+
var resolveLocalNameToAddressAll = /* @__PURE__ */ __name(async (root, modName, includePrivate = false) => {
|
|
563
|
+
var _a;
|
|
564
|
+
return (_a = await resolveLocalNameToInstanceAll(root, modName, includePrivate)) == null ? void 0 : _a.address;
|
|
565
|
+
}, "resolveLocalNameToAddressAll");
|
|
566
|
+
var resolveLocalNameToAddress = /* @__PURE__ */ __name(async (root, modName, includePrivate = false, direction = "all") => {
|
|
567
|
+
var _a;
|
|
568
|
+
return (_a = await resolveLocalNameToInstance(root, modName, includePrivate, direction)) == null ? void 0 : _a.address;
|
|
569
|
+
}, "resolveLocalNameToAddress");
|
|
570
|
+
|
|
571
|
+
// src/ResolveHelper/transformModuleIdentifier.ts
|
|
572
|
+
var transformModuleIdentifier = /* @__PURE__ */ __name(async (id, transformers) => {
|
|
573
|
+
let result = id;
|
|
574
|
+
for (const transformer of transformers) {
|
|
575
|
+
result = await transformer.transform(id);
|
|
576
|
+
}
|
|
577
|
+
return result;
|
|
578
|
+
}, "transformModuleIdentifier");
|
|
579
|
+
|
|
580
|
+
// src/ResolveHelper/resolvePathToInstance.ts
|
|
581
|
+
var resolvePathToInstance = /* @__PURE__ */ __name(async (root, path, includePrivate = false, transformers = ResolveHelperStatic.transformers) => {
|
|
582
|
+
const parts = path.split(MODULE_PATH_SEPARATOR);
|
|
583
|
+
const first = await transformModuleIdentifier(assertEx2(parts.shift(), () => `First part is invalid [${path}]`), transformers);
|
|
584
|
+
if (!first) {
|
|
585
|
+
return void 0;
|
|
586
|
+
}
|
|
587
|
+
const firstAddress = asAddress(first) ?? await resolveLocalNameToAddress(root, first, includePrivate);
|
|
588
|
+
if (firstAddress) {
|
|
589
|
+
const firstModule = await resolveAddressToInstance(root, firstAddress, includePrivate);
|
|
590
|
+
if (firstModule && parts.length > 0) {
|
|
591
|
+
return resolvePathToInstance(firstModule, parts.join(MODULE_PATH_SEPARATOR));
|
|
592
|
+
}
|
|
593
|
+
return firstModule;
|
|
594
|
+
}
|
|
595
|
+
}, "resolvePathToInstance");
|
|
596
|
+
|
|
597
|
+
// src/ResolveHelper/resolvePathToAddress.ts
|
|
598
|
+
var resolvePathToAddress = /* @__PURE__ */ __name(async (root, path, includePrivate = false, transformers = ResolveHelperStatic.transformers) => {
|
|
599
|
+
var _a;
|
|
600
|
+
return (_a = await resolvePathToInstance(root, path, includePrivate, transformers)) == null ? void 0 : _a.address;
|
|
601
|
+
}, "resolvePathToAddress");
|
|
602
|
+
|
|
603
|
+
// src/ResolveHelper/traceModuleIdentifier.ts
|
|
604
|
+
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
605
|
+
var traceModuleIdentifier = /* @__PURE__ */ __name(async (resolver, path) => {
|
|
606
|
+
const parts = path.split(":");
|
|
607
|
+
const first = parts.shift();
|
|
608
|
+
const firstModule = asModuleInstance(assertEx3(await resolver.resolve(first, {
|
|
609
|
+
maxDepth: 1
|
|
610
|
+
}), () => `Failed to resolve [${first}]`), () => `Resolved invalid module instance [${first}]`);
|
|
611
|
+
if (firstModule) {
|
|
612
|
+
return parts.length > 0 ? [
|
|
613
|
+
firstModule.address,
|
|
614
|
+
...await traceModuleIdentifier(firstModule, parts.join(":"))
|
|
615
|
+
] : [
|
|
616
|
+
firstModule.address
|
|
617
|
+
];
|
|
618
|
+
}
|
|
619
|
+
return [];
|
|
620
|
+
}, "traceModuleIdentifier");
|
|
621
|
+
|
|
622
|
+
// src/ResolveHelper/ResolveHelper.ts
|
|
623
|
+
var _ResolveHelper = class _ResolveHelper extends ResolveHelperStatic {
|
|
624
|
+
static async resolve(config, idOrFilter = "*", { maxDepth = 3, required = "log", ...options } = {}) {
|
|
625
|
+
const { transformers, module, logger = this.defaultLogger, dead = false, upResolver, downResolver, privateResolver } = config;
|
|
626
|
+
const log = logger ? new IdLogger(logger, () => `ResolveHelper [${module.id}][${idOrFilter}]`) : void 0;
|
|
627
|
+
const downLocalOptions = {
|
|
628
|
+
...options,
|
|
629
|
+
direction: "down",
|
|
630
|
+
maxDepth,
|
|
631
|
+
required: false
|
|
632
|
+
};
|
|
633
|
+
const upLocalOptions = {
|
|
634
|
+
...downLocalOptions,
|
|
635
|
+
direction: "up"
|
|
636
|
+
};
|
|
637
|
+
const childOptions = {
|
|
638
|
+
...options,
|
|
639
|
+
maxDepth: maxDepth - 1,
|
|
640
|
+
required: false
|
|
641
|
+
};
|
|
642
|
+
const direction = (options == null ? void 0 : options.direction) ?? "all";
|
|
643
|
+
const up = direction === "up" || direction === "all";
|
|
644
|
+
const down = direction === "down" || direction === "all";
|
|
645
|
+
let result;
|
|
646
|
+
log == null ? void 0 : log.debug("start", idOrFilter, maxDepth);
|
|
647
|
+
if (idOrFilter === "*") {
|
|
648
|
+
if (dead) {
|
|
649
|
+
log == null ? void 0 : log.warn("failed [dead]", idOrFilter);
|
|
650
|
+
return [];
|
|
651
|
+
}
|
|
652
|
+
const modules = [
|
|
653
|
+
...down ? await downResolver.resolve("*", downLocalOptions) : [],
|
|
654
|
+
...up ? await upResolver.resolve("*", upLocalOptions) : []
|
|
655
|
+
].filter(duplicateModules).filter((module2) => module2.address !== config.address);
|
|
656
|
+
if (modules.length > 0) {
|
|
657
|
+
log == null ? void 0 : log.log("modules [count]", modules.length);
|
|
658
|
+
log == null ? void 0 : log.debug("modules", toJsonString2(modules, 4));
|
|
659
|
+
}
|
|
660
|
+
if (maxDepth === 0) {
|
|
661
|
+
return modules;
|
|
662
|
+
}
|
|
663
|
+
const childModules = (await Promise.all(modules.map(async (module2) => await module2.resolve("*", childOptions)))).flat().filter(duplicateModules);
|
|
664
|
+
return [
|
|
665
|
+
...modules,
|
|
666
|
+
...childModules
|
|
667
|
+
].filter(duplicateModules);
|
|
668
|
+
} else {
|
|
669
|
+
switch (typeof idOrFilter) {
|
|
670
|
+
case "string": {
|
|
671
|
+
if (dead) {
|
|
672
|
+
return void 0;
|
|
673
|
+
}
|
|
674
|
+
const id = await resolvePathToAddress(module, idOrFilter, false, transformers) ?? idOrFilter;
|
|
675
|
+
if (id) {
|
|
676
|
+
const resolvers = [
|
|
677
|
+
[
|
|
678
|
+
downResolver,
|
|
679
|
+
downLocalOptions
|
|
680
|
+
],
|
|
681
|
+
[
|
|
682
|
+
up ? upResolver : void 0,
|
|
683
|
+
upLocalOptions
|
|
684
|
+
],
|
|
685
|
+
[
|
|
686
|
+
up ? privateResolver : void 0,
|
|
687
|
+
upLocalOptions
|
|
688
|
+
]
|
|
689
|
+
].filter(([resolver]) => exists(resolver));
|
|
690
|
+
for (const resolver of resolvers) {
|
|
691
|
+
const [resolverInstance] = resolver;
|
|
692
|
+
if (!result) {
|
|
693
|
+
result = await this.resolveModuleIdentifier(resolverInstance, id);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
break;
|
|
698
|
+
}
|
|
699
|
+
default: {
|
|
700
|
+
if (dead) {
|
|
701
|
+
return [];
|
|
702
|
+
}
|
|
703
|
+
const filter = idOrFilter;
|
|
704
|
+
result = [
|
|
705
|
+
...down ? await downResolver.resolve(filter, downLocalOptions) : [],
|
|
706
|
+
...up ? await upResolver.resolve(filter, upLocalOptions) : []
|
|
707
|
+
].filter(duplicateModules);
|
|
708
|
+
break;
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
this.validateRequiredResolve(required, result, idOrFilter, logger);
|
|
713
|
+
return result;
|
|
714
|
+
}
|
|
715
|
+
//resolves a complex module path to addresses
|
|
716
|
+
static async resolveModuleIdentifier(resolver, path, required) {
|
|
717
|
+
const parts = path.split(":");
|
|
718
|
+
const first = parts.shift();
|
|
719
|
+
const firstIsAddress = isAddress2(first);
|
|
720
|
+
const resolvedModule = await resolver.resolve(first, {
|
|
721
|
+
maxDepth: firstIsAddress ? 10 : 1
|
|
722
|
+
}) ?? (first ? await resolver.resolvePrivate(first, {
|
|
723
|
+
maxDepth: firstIsAddress ? 10 : 1
|
|
724
|
+
}) : void 0);
|
|
725
|
+
const finalModule = required ? assertEx4(resolvedModule, () => `Failed to resolve [${first}] [${firstIsAddress}]`) : resolvedModule;
|
|
726
|
+
const firstModule = asModuleInstance(finalModule, () => `Resolved invalid module instance [${first}]`);
|
|
727
|
+
if (firstModule) {
|
|
728
|
+
return parts.length > 0 ? await this.resolveModuleIdentifier(firstModule, parts.join(":")) : firstModule;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
//translates a complex module path to addresses
|
|
732
|
+
static traceModuleIdentifier(resolver, path) {
|
|
733
|
+
return traceModuleIdentifier(resolver, path);
|
|
734
|
+
}
|
|
735
|
+
static transformModuleIdentifier(identifier, transformers = _ResolveHelper.transformers) {
|
|
736
|
+
return transformModuleIdentifier(identifier, transformers);
|
|
737
|
+
}
|
|
738
|
+
static validateRequiredResolve(required, result, idOrFilter, logger = this.defaultLogger) {
|
|
739
|
+
const log = logger ? new IdLogger(logger, () => `validateRequiredResolve [${idOrFilter}][${result}]`) : void 0;
|
|
740
|
+
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
741
|
+
switch (required) {
|
|
742
|
+
case "warn": {
|
|
743
|
+
log == null ? void 0 : log.warn("resolve failed", idOrFilter);
|
|
744
|
+
break;
|
|
745
|
+
}
|
|
746
|
+
case "log": {
|
|
747
|
+
log == null ? void 0 : log.log("resolve failed", idOrFilter);
|
|
748
|
+
break;
|
|
749
|
+
}
|
|
750
|
+
default: {
|
|
751
|
+
throw new Error(`resolve failed [${idOrFilter}]`);
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
};
|
|
757
|
+
__name(_ResolveHelper, "ResolveHelper");
|
|
758
|
+
var ResolveHelper = _ResolveHelper;
|
|
759
|
+
|
|
760
|
+
// src/withModule.ts
|
|
761
|
+
var WithFactory = {
|
|
762
|
+
create: /* @__PURE__ */ __name((typeCheck) => {
|
|
763
|
+
return (module, closure) => {
|
|
764
|
+
return typeCheck(module) ? closure(module) : void 0;
|
|
765
|
+
};
|
|
766
|
+
}, "create")
|
|
767
|
+
};
|
|
768
|
+
var withModule = WithFactory.create(isModule);
|
|
769
|
+
var withModuleInstance = WithFactory.create(isModuleInstance);
|
|
770
|
+
export {
|
|
771
|
+
AddressChildSchema,
|
|
772
|
+
AddressPreviousHashSchema,
|
|
773
|
+
AddressSchema,
|
|
774
|
+
DeadModuleError,
|
|
775
|
+
DisallowedModuleIdentifierCharacters,
|
|
776
|
+
IsAttachableModuleInstanceFactory,
|
|
777
|
+
IsInstanceFactory,
|
|
778
|
+
IsModuleFactory,
|
|
779
|
+
MODULE_PATH_SEPARATOR,
|
|
780
|
+
ModuleAddressQuerySchema,
|
|
781
|
+
ModuleConfigSchema,
|
|
782
|
+
ModuleDescriptionSchema,
|
|
783
|
+
ModuleDetailsError,
|
|
784
|
+
ModuleFactory,
|
|
785
|
+
ModuleLimitationLabelName,
|
|
786
|
+
ModuleLimitationViewLabel,
|
|
787
|
+
ModuleManifestQuerySchema,
|
|
788
|
+
ModuleStateQuerySchema,
|
|
789
|
+
ModuleStateSchema,
|
|
790
|
+
ModuleSubscribeQuerySchema,
|
|
791
|
+
ObjectResolverPriority,
|
|
792
|
+
ReservedModuleIdentifierCharacters,
|
|
793
|
+
ResolveHelper,
|
|
794
|
+
WithFactory,
|
|
795
|
+
asAttachableModuleInstance,
|
|
796
|
+
asModule,
|
|
797
|
+
asModuleInstance,
|
|
798
|
+
asModuleObject,
|
|
799
|
+
assignCreatableModuleRegistry,
|
|
800
|
+
creatableModule,
|
|
801
|
+
creatableModuleFactory,
|
|
802
|
+
duplicateModules,
|
|
803
|
+
hasAllLabels,
|
|
804
|
+
hasLabels,
|
|
805
|
+
includesReservedModuleIdentifierCharacter,
|
|
806
|
+
isAddressModuleFilter,
|
|
807
|
+
isAddressObjectFilter,
|
|
808
|
+
isAttachableModuleInstance,
|
|
809
|
+
isModule,
|
|
810
|
+
isModuleIdentifierPart,
|
|
811
|
+
isModuleInstance,
|
|
812
|
+
isModuleName,
|
|
813
|
+
isModuleObject,
|
|
814
|
+
isModuleResolver,
|
|
815
|
+
isModuleState,
|
|
816
|
+
isModuleStateWithMeta,
|
|
817
|
+
isNameModuleFilter,
|
|
818
|
+
isNameObjectFilter,
|
|
819
|
+
isObjectResolver,
|
|
820
|
+
isQueryModuleFilter,
|
|
821
|
+
isQueryObjectFilter,
|
|
822
|
+
labeledCreatableModuleFactory,
|
|
823
|
+
registerCreatableModuleFactories,
|
|
824
|
+
registerCreatableModuleFactory,
|
|
825
|
+
requiredAttachableModuleInstanceFunctions,
|
|
826
|
+
requiredModuleInstanceFunctions,
|
|
827
|
+
requiredModuleQueries,
|
|
828
|
+
requiredModuleShape,
|
|
829
|
+
resolveAddressToInstance,
|
|
830
|
+
resolveAddressToInstanceAll,
|
|
831
|
+
resolveAddressToInstanceDown,
|
|
832
|
+
resolveAddressToInstanceSiblings,
|
|
833
|
+
resolveAddressToInstanceUp,
|
|
834
|
+
resolveLocalNameToAddress,
|
|
835
|
+
resolveLocalNameToAddressAll,
|
|
836
|
+
resolveLocalNameToAddressDown,
|
|
837
|
+
resolveLocalNameToAddressUp,
|
|
838
|
+
resolveLocalNameToInstance,
|
|
839
|
+
resolveLocalNameToInstanceAll,
|
|
840
|
+
resolveLocalNameToInstanceDown,
|
|
841
|
+
resolveLocalNameToInstanceUp,
|
|
842
|
+
resolvePathToAddress,
|
|
843
|
+
resolvePathToInstance,
|
|
844
|
+
serializable,
|
|
845
|
+
serializableField,
|
|
846
|
+
transformModuleIdentifier,
|
|
847
|
+
withModule,
|
|
848
|
+
withModuleInstance
|
|
849
|
+
};
|
|
2
850
|
//# sourceMappingURL=index.js.map
|