@xyo-network/module-model 2.107.3 → 2.107.4

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