@cldmv/slothlet 3.15.2 → 3.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +8 -6
  2. package/dist/lib/builders/api-assignment.mjs +1 -1
  3. package/dist/lib/builders/api_builder.mjs +1 -1
  4. package/dist/lib/builders/builder.mjs +1 -1
  5. package/dist/lib/builders/modes-processor.mjs +1 -1
  6. package/dist/lib/handlers/api-cache-manager.mjs +1 -1
  7. package/dist/lib/handlers/api-manager.mjs +1 -1
  8. package/dist/lib/handlers/hook-manager.mjs +1 -1
  9. package/dist/lib/handlers/module-manager.mjs +1 -1
  10. package/dist/lib/handlers/ownership.mjs +1 -1
  11. package/dist/lib/handlers/routine-manager.mjs +17 -0
  12. package/dist/lib/handlers/unified-wrapper.mjs +1 -1
  13. package/dist/lib/helpers/config.mjs +1 -1
  14. package/dist/lib/helpers/defaults.mjs +17 -0
  15. package/dist/lib/helpers/eventtarget-property-context.mjs +17 -0
  16. package/dist/lib/helpers/observer-context.mjs +17 -0
  17. package/dist/lib/helpers/scheduler-context.mjs +1 -1
  18. package/dist/lib/i18n/languages/en-us.json +2 -0
  19. package/dist/lib/modes/eager.mjs +1 -1
  20. package/dist/lib/modes/lazy.mjs +1 -1
  21. package/dist/lib/processors/flatten.mjs +1 -1
  22. package/dist/lib/processors/loader.mjs +1 -1
  23. package/dist/slothlet.mjs +1 -1
  24. package/index.cjs +20 -0
  25. package/index.mjs +14 -0
  26. package/package.json +8 -7
  27. package/types/stub/devcheck.d.mts +1 -1
  28. package/types/stub/lib/builders/api-assignment.d.mts +130 -2
  29. package/types/stub/lib/builders/api_builder.d.mts +109 -2
  30. package/types/stub/lib/builders/builder.d.mts +87 -2
  31. package/types/stub/lib/builders/modes-processor.d.mts +71 -2
  32. package/types/stub/lib/factories/component-base.d.mts +177 -0
  33. package/types/stub/lib/helpers/caller-pinning.d.mts +22 -2
  34. package/types/stub/lib/helpers/class-instance-wrapper.d.mts +58 -2
  35. package/types/stub/lib/helpers/config.d.mts +321 -2
  36. package/types/stub/lib/helpers/defaults.d.mts +42 -0
  37. package/types/stub/lib/helpers/eventemitter-context.d.mts +31 -2
  38. package/types/stub/lib/helpers/eventtarget-context.d.mts +21 -2
  39. package/types/stub/lib/helpers/eventtarget-property-context.d.mts +23 -0
  40. package/types/stub/lib/helpers/generate-manifest.d.mts +180 -2
  41. package/types/stub/lib/helpers/hint-detector.d.mts +27 -2
  42. package/types/stub/lib/helpers/manifest-resolver.d.mts +101 -2
  43. package/types/stub/lib/helpers/modes-utils.d.mts +35 -2
  44. package/types/stub/lib/helpers/module-discovery.d.mts +81 -2
  45. package/types/stub/lib/helpers/module-manifest-validator.d.mts +37 -2
  46. package/types/stub/lib/helpers/module-sort.d.mts +65 -2
  47. package/types/stub/lib/helpers/observer-context.d.mts +23 -0
  48. package/types/stub/lib/helpers/pattern-matcher.d.mts +44 -2
  49. package/types/stub/lib/helpers/platform.d.mts +111 -2
  50. package/types/stub/lib/helpers/resolve-from-caller.d.mts +33 -2
  51. package/types/stub/lib/helpers/scheduler-context.d.mts +23 -2
  52. package/types/stub/lib/helpers/utilities.d.mts +57 -2
  53. package/types/stub/lib/i18n/translations.d.mts +52 -2
  54. package/types/stub/lib/modes/eager.d.mts +56 -2
  55. package/types/stub/lib/modes/lazy.d.mts +67 -2
  56. package/types/stub/lib/processors/flatten.d.mts +123 -2
  57. package/types/stub/lib/processors/loader.d.mts +83 -2
  58. package/types/stub/lib/processors/type-generator.d.mts +19 -2
  59. package/types/stub/lib/processors/typescript.d.mts +174 -2
  60. package/types/stub/lib/runtime/runtime-asynclocalstorage.d.mts +72 -2
  61. package/types/stub/lib/runtime/runtime-livebindings.d.mts +38 -2
@@ -14,4 +14,4 @@
14
14
  limitations under the License.
15
15
  */
16
16
 
17
- const ____COLLISION_MERGED_PROPERTY=Symbol("collisionMergedProperty");import{isNode,util,EventEmitter}from"@cldmv/slothlet/helpers/platform";import{ComponentBase}from"#factories/component-base";import{TRUSTED_ROOT,genuineWrappers}from"#handlers/trusted-root";import{isFrameworkInternal,isFrameworkMarkerKey}from"#handlers/framework-internals";const ERROR_HOOK_PROCESSED=Symbol.for("@cldmv/slothlet/hook-error-processed");const hasOwn=(obj,key)=>Object.prototype.hasOwnProperty.call(obj,key);function resolveEnforcedCaller(wrapper,ctxOverride){const ownInstanceID=wrapper.slothlet.instanceID;const ctx=ctxOverride!==void 0?ctxOverride:wrapper.slothlet.contextManager?.tryGetContext?.(ownInstanceID);const identity=ctxOverride!==void 0?ctxOverride:wrapper.slothlet.contextManager?.getCallerIdentity?.(ownInstanceID);if(identity?.unresolved)return{verdict:"deny"};const callerWrapper=identity?.currentWrapper;if(!callerWrapper){const store=ctx??wrapper.slothlet.contextManager?.instances?.get(wrapper.slothlet.instanceID);if(store&&store[TRUSTED_ROOT]===true)return{verdict:"allow"};if(wrapper.slothlet.config?.permissions?.failOpenOnAbsentCaller)return{verdict:"allow"};return{verdict:"deny"}}if(!genuineWrappers.has(callerWrapper))return{verdict:"deny"};return{verdict:"enforce",callerWrapper,ctx}}function runtime_enforceReadGate(wrapper,prop,resolvedValue,callerOverride){const pm=wrapper.slothlet.handlers?.permissionManager;if(!pm||!pm.isEnabled()||!pm.isReadGatingEnabled())return;if(!runtime_isTerminalData(resolvedValue))return;const targetPath=wrapper.____slothletInternal.apiPath+"."+String(prop);const decision=runtime_readGateDecision(wrapper,targetPath,callerOverride);if(decision.allowed)return;throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:decision.caller,target:targetPath})}function runtime_isTerminalData(value){return value!==Object(value)||value instanceof Map||value instanceof Set||value instanceof WeakMap||value instanceof WeakSet||value instanceof Date||value instanceof RegExp||value instanceof Promise||value instanceof Error||ArrayBuffer.isView(value)||value instanceof ArrayBuffer}function runtime_readGateDecision(wrapper,targetPath,callerOverride){if(isFrameworkInternal(wrapper)){const leafKey=targetPath.slice(targetPath.lastIndexOf(".")+1);if(isFrameworkMarkerKey(leafKey))return{allowed:true,caller:null}}const decision=resolveEnforcedCaller(wrapper,callerOverride);if(decision.verdict==="allow"){const hostPm=wrapper.slothlet.handlers.permissionManager;if(hostPm.isPrivateTarget?.(targetPath)&&!hostPm.enforceAccess(null,targetPath,null,wrapper.____slothletInternal.filePath,null)){return{allowed:false,caller:null}}return{allowed:true,caller:null}}if(decision.verdict==="deny")return{allowed:false,caller:null};const{callerWrapper,ctx}=decision;const callerPath=callerWrapper.____slothletInternal?.apiPath??"";const callerFilePath=callerWrapper.____slothletInternal?.filePath??null;const targetFilePath=wrapper.____slothletInternal.filePath??null;const allowed=wrapper.slothlet.handlers.permissionManager.enforceAccess(callerPath,targetPath,callerFilePath,targetFilePath,ctx.context??null);return{allowed,caller:callerPath}}function runtime_isReadRedacted(wrapper,prop){const pm=wrapper.slothlet.handlers?.permissionManager;if(!pm||!pm.isEnabled()||!pm.isReadGatingEnabled())return false;const impl=wrapper.____slothletInternal?.impl;const desc=(impl&&(typeof impl==="object"||typeof impl==="function")?Object.getOwnPropertyDescriptor(impl,prop):void 0)??Object.getOwnPropertyDescriptor(wrapper,prop);if(!desc||!("value"in desc)||!runtime_isTerminalData(runtime_unwrapLeafValue(desc.value)))return false;const targetPath=wrapper.____slothletInternal.apiPath+"."+String(prop);return!runtime_readGateDecision(wrapper,targetPath).allowed}function runtime_unwrapLeafValue(value){let current=value;for(let depth=0;depth<8;depth++){if(!current||typeof current!=="object"&&typeof current!=="function")return current;const inner=_proxyRegistry.get(current)??(hasOwn(current,"____slothletInternal")?current:null);if(!inner)return current;current=inner.____slothletInternal?.impl}return current}function runtime_redactSerialized(wrapper,data,basePath,seen){if(!data||typeof data!=="object"||Array.isArray(data)||seen.has(data))return;seen.add(data);for(const key of Object.keys(data)){const value=data[key];const targetPath=`${basePath}.${key}`;if(runtime_isTerminalData(value)){if(!runtime_readGateDecision(wrapper,targetPath).allowed)delete data[key]}else{runtime_redactSerialized(wrapper,value,targetPath,seen)}}}function enforcePermission(wrapper){const permissionManager=wrapper.slothlet.handlers?.permissionManager;if(!permissionManager||!permissionManager.isEnabled())return;const targetPath=wrapper.____slothletInternal.apiPath;const decision=resolveEnforcedCaller(wrapper);if(decision.verdict==="allow"){if(permissionManager.isPrivateTarget?.(targetPath)&&!permissionManager.enforceAccess(null,targetPath,null,wrapper.____slothletInternal.filePath,null)){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:null,target:targetPath})}return}if(decision.verdict==="deny"){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:null,target:targetPath})}const{callerWrapper,ctx}=decision;const callerPath=callerWrapper.____slothletInternal?.apiPath??"";const callerFilePath=callerWrapper.____slothletInternal?.filePath??null;const targetFilePath=wrapper.____slothletInternal.filePath??null;const runtimeContext=ctx?.context??null;if(!permissionManager.enforceAccess(callerPath,targetPath,callerFilePath,targetFilePath,runtimeContext)){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:callerPath,target:targetPath})}}const capturedViews=new WeakMap;function runtime_enforceCapturedCaller(wrapper,capturedCaller,targetPathOverride){const permissionManager=wrapper.slothlet.handlers?.permissionManager;if(!permissionManager||!permissionManager.isEnabled())return;const targetPath=targetPathOverride??wrapper.____slothletInternal.apiPath;const callerPath=capturedCaller.____slothletInternal?.apiPath??"";const callerFilePath=capturedCaller.____slothletInternal?.filePath??null;const targetFilePath=wrapper.____slothletInternal.filePath??null;const runtimeContext=wrapper.slothlet.contextManager?.tryGetContext?.()?.context??null;if(!permissionManager.enforceAccess(callerPath,targetPath,callerFilePath,targetFilePath,runtimeContext)){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:callerPath,target:targetPath})}}function runtime_capturedView(child,capturedCaller){let byChild=capturedViews.get(capturedCaller);if(!byChild){byChild=new WeakMap;capturedViews.set(capturedCaller,byChild)}const existing=byChild.get(child);if(existing)return existing;const inner=resolveWrapper(child);const view=new Proxy(child,{apply(target,thisArg,args){runtime_enforceCapturedCaller(inner,capturedCaller);return Reflect.apply(target,thisArg,args)},construct(target,args,newTarget){runtime_enforceCapturedCaller(inner,capturedCaller);return Reflect.construct(target,args,newTarget===view?target:newTarget)},get(target,prop){const resolved=Reflect.get(target,prop);if(resolved!==void 0&&typeof prop==="string"&&runtime_isTerminalData(resolved)){const context=inner.slothlet.contextManager?.tryGetContext?.()?.context??null;runtime_enforceReadGate(inner,prop,resolved,{currentWrapper:capturedCaller,context});return resolved}if(resolveWrapper(resolved)===null)return resolved;return runtime_capturedView(resolved,capturedCaller)}});byChild.set(child,view);return view}function runtime_bindCapturedIdentity(wrapper,prop,value){if(typeof prop!=="string")return value;if(value===null||typeof value!=="object"&&typeof value!=="function")return value;const permissionManager=wrapper.slothlet.handlers?.permissionManager;if(!permissionManager||!permissionManager.isEnabled())return value;if(permissionManager.isCaptureEnabled?.()===false)return value;const inner=resolveWrapper(value);if(inner===null)return value;const innerPath=inner.____slothletInternal?.apiPath;if(!innerPath||innerPath.split(".").pop()!==prop)return value;const capturedCaller=wrapper.slothlet.contextManager?.getCallerIdentity?.()?.currentWrapper;if(!capturedCaller)return value;return runtime_capturedView(value,capturedCaller)}function runtime_guardPromotedResult(promise,path,SlothletErrorCtor){const refuse=()=>{throw new SlothletErrorCtor("HOOK_PROMOTED_RESULT_NOT_AWAITED",{path},null,{validationError:true})};return new Proxy(promise,{get(target,prop,receiver){if(prop===Symbol.toPrimitive||prop==="valueOf"||prop==="toString"||prop==="toJSON"){return refuse}const value=Reflect.get(target,prop,receiver);if(prop==="then"||prop==="catch"||prop==="finally")return value.bind(target);return value}})}function unwrapError(error){if(error&&error.name==="SlothletError"&&error.originalError){return error.originalError}return error}const wrapperDebugEnabled=isNode&&(process.env.SLOTHLET_DEBUG_WRAPPER==="1"||process.env.SLOTHLET_DEBUG_WRAPPER==="true"||process.env.SLOTHLET_DEBUG_SCRIPT_VERBOSE==="1"||process.env.SLOTHLET_DEBUG_SCRIPT_VERBOSE==="true");const IMPL_METADATA_KEYS=new Set(["__childFilePaths","__filePath","__childFilePathsPreMaterialize"]);function isFrameworkReservedKey(key){if(typeof key!=="string")return false;return UnifiedWrapper.INTERNAL_KEYS.has(key)||IMPL_METADATA_KEYS.has(key)}const TYPE_STATES={UNMATERIALIZED:Symbol("unmaterialized"),IN_FLIGHT:Symbol("inFlight")};function getSafeFunctionName(apiPath,fallback){const parts=String(apiPath||"").split(".").filter(part=>part&&part!=="null");const baseName=parts.length>0?parts[parts.length-1]:"";let safeName=String(baseName||"").replace(/[^A-Za-z0-9_$]/g,"_");if(!safeName||!/^[A-Za-z_$]/.test(safeName[0])){safeName=safeName?`_${safeName}`:""}return safeName||fallback}function createNamedProxyTarget(nameHint,fallback){const safeName=getSafeFunctionName(nameHint,fallback);return{[safeName]:function(){}}[safeName]}const _proxyRegistry=new WeakMap;class UnifiedWrapper extends ComponentBase{#internal=null;get ____slothletInternal(){if(!(#internal in this))return void 0;return this.#internal}constructor(slothlet,{mode,apiPath,initialImpl=null,materializeFunc=null,isCallable,materializeOnCreate=false,filePath=null,moduleID=null,sourceFolder=null,__adoptVisited=null,deferChildAdopt=false}){super(slothlet);const isCallableExplicit=typeof isCallable==="boolean";const isCallableValue=isCallableExplicit?isCallable:typeof initialImpl==="function"||initialImpl&&typeof initialImpl.default==="function";const isCallableLocked=isCallableValue||isCallableExplicit;const internal=Object.create(null);internal.id=Math.random().toString(36).substr(2,9);internal.mode=mode;internal.apiPath=apiPath;internal.materializeOnCreate=materializeOnCreate;internal.isCallable=isCallableValue;internal.isCallableLocked=isCallableLocked;internal.moduleID=moduleID;internal.filePath=filePath;internal.sourceFolder=sourceFolder;internal.adoptVisited=__adoptVisited;internal.deferChildAdopt=deferChildAdopt;internal.invalid=false;internal.state={materialized:initialImpl!==null,inFlight:false,collisionMode:"merge"};internal.displayName=apiPath?`${String(apiPath).replace(/\./g,"__")}__UnifiedWrapper`:"UnifiedWrapper";this.#internal=internal;const wrapper=this;Object.defineProperty(internal,"wrapper",{get(){return wrapper},enumerable:false,configurable:false});internal.callableImpl=null;internal.waitingProxyCache=new Map;internal.waitingProxyCacheByContext=new WeakMap;internal.proxy=null;internal.impl=UnifiedWrapper._cloneImpl(initialImpl);internal.materializeFunc=materializeFunc;if(filePath&&slothlet.handlers?.lifecycle){slothlet.handlers.lifecycle.emit("impl:created",{apiPath,impl:this,wrapper:Object.freeze({__impl:this.____slothletInternal.impl}),source:"initial",moduleID,filePath,sourceFolder:sourceFolder||slothlet.config?.dir})}if(initialImpl!==null&&filePath&&slothlet.handlers?.lifecycle){slothlet.handlers.lifecycle.emit("impl:created",{apiPath,impl:initialImpl,wrapper:Object.freeze({__impl:this.____slothletInternal.impl}),source:"initial",moduleID,filePath,sourceFolder:sourceFolder||slothlet.config?.dir})}if(initialImpl!==null&&!deferChildAdopt){const implKeys=Object.keys(initialImpl||{});if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&apiPath&&(apiPath==="config"||apiPath.startsWith("config."))){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAPPER_CONSTRUCTOR_IMPL_KEYS",apiPath,keyCount:implKeys.length,keySample:implKeys.slice(0,5)})}this.___adoptImplChildren();if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&apiPath&&(apiPath==="config"||apiPath.startsWith("config."))){const childKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAPPER_CONSTRUCTOR_AFTER_ADOPT",apiPath,childCount:childKeys.length,childKeySample:childKeys.slice(0,5)})}}if(mode==="lazy"){slothlet._registerLazyWrapper();if(slothlet.config.tracking?.materialization){setImmediate(()=>{this._materialize().catch(err=>{if(slothlet.config?.debug?.materialize){slothlet.debug("materialize",{key:"DEBUG_MODE_BACKGROUND_MATERIALIZE_ERROR",apiPath:this.____slothletInternal?.apiPath,error:err.message})}})})}}}____inspectCustom(____depth,____options,____inspect){const w=_proxyRegistry.get(this)??this;const childKeys=Object.keys(w).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(childKeys.length>0&&!w.____slothletInternal?.isCallable){const inspectObj={};for(const key of childKeys){inspectObj[key]=w[key]}return inspectObj}if(w.____slothletInternal?.mode==="lazy"&&w.____slothletInternal?.state&&!w.____slothletInternal?.state.materialized&&w.____slothletInternal?.proxy){return w.____slothletInternal.proxy}return w.____slothletInternal?.impl}get __impl(){return this.____slothletInternal.impl}static _cloneImpl(value){if(value&&typeof value==="object"&&!Array.isArray(value)&&typeof value!=="function"){const isProxy=util.types.isProxy(value);if(isProxy){if(resolveWrapper(value)){const clone={};for(const key of Reflect.ownKeys(value)){try{clone[key]=value[key]}catch{}}return clone}return value}const uw_cloneDescriptors=Object.getOwnPropertyDescriptors(value);return Object.create(Object.getPrototypeOf(value),uw_cloneDescriptors)}return value}static _extractFullImpl(wrapper){if(!wrapper)return null;const impl=wrapper.____slothletInternal.impl;if(impl===null||impl===void 0)return impl;if(typeof impl!=="object"&&typeof impl!=="function")return impl;if(typeof impl==="function")return impl;if(Array.isArray(impl))return impl.slice();const extractFullImpl_result={};for(const key of Object.keys(impl)){if(isFrameworkReservedKey(key))continue;extractFullImpl_result[key]=impl[key]}if(impl.__childFilePaths){extractFullImpl_result.__childFilePaths=impl.__childFilePaths}if(impl.__childFilePathsPreMaterialize){extractFullImpl_result.__childFilePathsPreMaterialize=impl.__childFilePathsPreMaterialize}for(const key of Object.keys(wrapper)){if(UnifiedWrapper.INTERNAL_KEYS.has(key))continue;if(key in extractFullImpl_result)continue;const extractFullImpl_child=wrapper[key];const _extractChildW=resolveWrapper(extractFullImpl_child);if(_extractChildW){extractFullImpl_result[key]=UnifiedWrapper._extractFullImpl(_extractChildW)}else{extractFullImpl_result[key]=extractFullImpl_child}}return extractFullImpl_result}_applyNewImpl(newImpl,forceReuseChildren=false){this.____slothletInternal.impl=UnifiedWrapper._cloneImpl(newImpl);this.____slothletInternal.invalid=false;if(!this.____slothletInternal.isCallableLocked&&!this.____slothletInternal.isCallable&&(typeof newImpl==="function"||newImpl&&typeof newImpl.default==="function")){this.____slothletInternal.isCallable=true;this.____slothletInternal.isCallableLocked=true}if(!this.____slothletInternal.filePath&&this.____slothletInternal.impl&&this.____slothletInternal.impl.__filePath){this.____slothletInternal.filePath=this.____slothletInternal.impl.__filePath;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_APPLY_IMPL_UPDATE_PATH",apiPath:this.____slothletInternal.apiPath,filePath:this.____slothletInternal.filePath})}this.___adoptImplChildren(forceReuseChildren)}___setImpl(newImpl,moduleID=null,forceReuseChildren=false){if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_SETIMPL_CALLED",apiPath:this.____slothletInternal.apiPath,newImplKeys:Object.keys(newImpl||{})})}this._applyNewImpl(newImpl,forceReuseChildren);if(newImpl&&this.slothlet.handlers?.lifecycle){const wrapperMetadata=this.slothlet.handlers.metadata.getMetadata(this);const extractedModuleId=moduleID||wrapperMetadata?.baseModuleID||null;this.slothlet.handlers.lifecycle.emit("impl:changed",{apiPath:this.____slothletInternal.apiPath,impl:newImpl,wrapper:Object.freeze({__impl:this.____slothletInternal.impl}),source:"hot-reload",moduleID:extractedModuleId,filePath:wrapperMetadata?.filePath,sourceFolder:wrapperMetadata?.sourceFolder})}this.____slothletInternal.state.materialized=true;this.____slothletInternal.state.inFlight=false;if(this.slothlet._onWrapperMaterialized){this.slothlet._onWrapperMaterialized()}}___resetLazy(newMaterializeFunc){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_RESETLAZY_CALLED",apiPath:this.____slothletInternal.apiPath,hadImpl:this.____slothletInternal.impl!==null,hadChildren:Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__")).length});for(const key of Reflect.ownKeys(this)){if(typeof key==="string"&&(key.startsWith("_")||key.startsWith("__"))){continue}const child=this[key];const childRaw=resolveWrapper(child);if(childRaw){childRaw.___invalidate()}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}this.____slothletInternal.impl=null;this.____slothletInternal.invalid=false;this.____slothletInternal.state.materialized=false;this.____slothletInternal.state.inFlight=false;this.____slothletInternal.materializationPromise=null;this.____slothletInternal.materializeFunc=newMaterializeFunc;if(this.____slothletInternal.waitingProxyCache){this.____slothletInternal.waitingProxyCache.clear()}this.____slothletInternal.waitingProxyCacheByContext=new WeakMap;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_RESETLAZY_COMPLETE",apiPath:this.____slothletInternal.apiPath})}async ___materialize(){if(this.____slothletInternal.state.materialized){return}if(this.____slothletInternal.invalid){return}if(this.____slothletInternal.materializationPromise){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_AWAIT",apiPath:this.____slothletInternal.apiPath});return this.____slothletInternal.materializationPromise}if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_START",apiPath:this.apiPath})}this.____slothletInternal.materializationPromise=(async()=>{this.____slothletInternal.state.inFlight=true;try{if(this.____slothletInternal.materializeFunc){if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_CALLING_FUNC",apiPath:this.____slothletInternal.apiPath})}const lazy_setImpl=value=>{this._applyNewImpl(value)};const result=await this.____slothletInternal.materializeFunc(lazy_setImpl);if(!this.____slothletInternal.impl){this._applyNewImpl(result)}this.____slothletInternal.state.materialized=true;if(this.slothlet._onWrapperMaterialized){this.slothlet._onWrapperMaterialized()}if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_COMPLETE",apiPath:this.____slothletInternal.apiPath,resultType:typeof result,resultKeys:Object.keys(result||{})})}}}catch(error){if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_ERROR",apiPath:this.____slothletInternal.apiPath,error:error.message})}throw error}finally{this.____slothletInternal.state.inFlight=false;this.____slothletInternal.materializationPromise=null}})();return this.____slothletInternal.materializationPromise}_materialize(){return this.___materialize()}___invalidate(){this.____slothletInternal.invalid=true;this.____slothletInternal.impl=null;for(const key of Reflect.ownKeys(this)){if(typeof key==="string"&&(key.startsWith("_")||key.startsWith("__"))){continue}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}}___adoptImplChildren(forceReuseChildren=false){const preExistingKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_START",apiPath:this.____slothletInternal.apiPath,wrapperId:this.____slothletInternal.id||"no-id",preExistingKeys:preExistingKeys.join(","),collisionMode:this.____slothletInternal.state.collisionMode});const threadedVisited=this.____slothletInternal.adoptVisited;this.____slothletInternal.adoptVisited=null;if(!this.____slothletInternal.impl||typeof this.____slothletInternal.impl!=="object"&&typeof this.____slothletInternal.impl!=="function"){return}if(util.types.isProxy(this.____slothletInternal.impl))return;if(Array.isArray(this.____slothletInternal.impl))return;const adoptVisited=threadedVisited||new WeakSet;const ownKeys=Reflect.ownKeys(this.____slothletInternal.impl);const internalKeys=new Set(["__impl","___setImpl","___resetLazy","_materialize","_impl","_state","_invalid","____slothlet","____slothletInternal"]);const keepImplProperties=typeof this.____slothletInternal.impl==="function"||this.____slothletInternal.impl&&typeof this.____slothletInternal.impl==="object"&&typeof this.____slothletInternal.impl.default==="function";if(keepImplProperties&&this.____slothletInternal.impl&&typeof this.____slothletInternal.impl==="object"&&typeof this.____slothletInternal.impl.default==="function"){internalKeys.add("default")}const observedKeys=new Set;const existingKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));const storedCollisionMode=this.____slothletInternal.state.collisionMode;const isMergeScenario=storedCollisionMode!=="replace"&&existingKeys.length>0;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT",apiPath:this.____slothletInternal.apiPath,mode:this.____slothletInternal.mode,storedCollisionMode,existingKeys:existingKeys.join(","),isMergeScenario});const savedChildren=new Map;if(storedCollisionMode==="replace"&&existingKeys.length>0){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_REPLACE_CLEARING",count:existingKeys.length});for(const key of existingKeys){const child=this[key];if(resolveWrapper(child)!==null){savedChildren.set(key,child)}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}}else{for(const key of existingKeys){observedKeys.add(key)}}const metadataKeys=new Set(["__childFilePaths","__filePath","__childFilePathsPreMaterialize"]);const skipKeys=typeof this.____slothletInternal.impl==="function"?new Set(["length","name","prototype"]):null;for(const key of ownKeys){if(internalKeys.has(key)){continue}if(typeof key==="string"&&metadataKeys.has(key)){continue}if(skipKeys&&typeof key==="string"&&skipKeys.has(key)){continue}if(!this.____slothletInternal.impl||typeof this.____slothletInternal.impl!=="object"&&typeof this.____slothletInternal.impl!=="function"){break}const descriptor=Object.getOwnPropertyDescriptor(this.____slothletInternal.impl,key);if(!descriptor){continue}const value=this.____slothletInternal.impl[key];if(value===this.____slothletInternal.impl){continue}if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_PROCESS",apiPath:this.____slothletInternal.apiPath,propKey:key,typeOf:typeof value,valueName:value?.name})}observedKeys.add(key);if(hasOwn(this,key)&&!key.toString().startsWith("_")){if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_CHECK",apiPath:this.____slothletInternal.apiPath,propKey:key,has__collisionMergedKeys:!!this.____slothletInternal.collisionMergedKeys,inSet:this.____slothletInternal.collisionMergedKeys?.has(key)})}const isCollisionMerged=this.____slothletInternal.collisionMergedKeys&&this.____slothletInternal.collisionMergedKeys.has(key);if(isCollisionMerged&&!forceReuseChildren){if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED",apiPath:this.____slothletInternal.apiPath,propKey:key})}if(descriptor.configurable){delete this.____slothletInternal.impl[key]}continue}if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED",apiPath:this.____slothletInternal.apiPath,propKey:key})}}const existingChild=savedChildren.get(key)||this[key];let wrapped;const skipChildReuse=!forceReuseChildren&&this.____slothletInternal.mode==="lazy"&&storedCollisionMode==="replace";const existingChildUA=existingChild?resolveWrapper(existingChild):null;if(existingChildUA?.____slothletInternal?.userAssigned){wrapped=existingChild}else if(!skipChildReuse&&existingChild&&resolveWrapper(existingChild)!==null){if(resolveWrapper(value)!==null){const newWrapper=resolveWrapper(value);let rawImpl=newWrapper?newWrapper.____slothletInternal.impl:null;if(rawImpl&&typeof rawImpl==="object"&&!Array.isArray(rawImpl)&&typeof rawImpl!=="function"&&Object.keys(rawImpl).filter(k=>!k.startsWith("__")).length===0){const wrapperOwnKeys=Object.keys(newWrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(wrapperOwnKeys.length>0){rawImpl=UnifiedWrapper._extractFullImpl(newWrapper)}}if(rawImpl!==null&&rawImpl!==void 0){resolveWrapper(existingChild).___setImpl(rawImpl,this.____slothletInternal.moduleID,true)}else if(newWrapper&&newWrapper.____slothletInternal.materializeFunc){const existingChildWrapper=resolveWrapper(existingChild);if(existingChildWrapper){existingChildWrapper.___resetLazy(newWrapper.____slothletInternal.materializeFunc)}}wrapped=existingChild}else{resolveWrapper(existingChild).___setImpl(value,this.____slothletInternal.moduleID,true);wrapped=existingChild}if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER",apiPath:this.____slothletInternal.apiPath,propKey:key})}}else{wrapped=this.___createChildWrapper(key,value,adoptVisited);if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_WRAP",apiPath:this.____slothletInternal.apiPath,propKey:key,wrapped:wrapped?"YES":wrapped===null?"NULL":"NO"})}}if(wrapped){const existing=this[key];const existingDescriptor=Object.getOwnPropertyDescriptor(this,key);if(existing===wrapped||existingDescriptor&&!existingDescriptor.configurable){if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:existingDescriptor&&!existingDescriptor.configurable?"DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE":"DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER",apiPath:this.____slothletInternal.apiPath,propKey:key})}}else{if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_DEFINE",apiPath:this.____slothletInternal.apiPath,propKey:key})}Object.defineProperty(this,key,{value:wrapped,writable:false,enumerable:true,configurable:true});if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_DEFINED",apiPath:this.____slothletInternal.apiPath,propKey:key})}}if(descriptor.configurable&&!keepImplProperties&&this.____slothletInternal.impl){delete this.____slothletInternal.impl[key]}}else if(wrapped===null){Object.defineProperty(this,key,{value,writable:false,enumerable:true,configurable:true});if(descriptor.configurable&&!keepImplProperties&&this.____slothletInternal.impl){delete this.____slothletInternal.impl[key]}}else{Object.defineProperty(this,key,{value,writable:false,enumerable:true,configurable:true});if(descriptor.configurable&&!keepImplProperties&&this.____slothletInternal.impl){delete this.____slothletInternal.impl[key]}}}if(!isMergeScenario){const currentKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));for(const key of currentKeys){if(!observedKeys.has(key)){const existing=this[key];const existingRaw=resolveWrapper(existing);if(existingRaw){existingRaw.___invalidate()}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}}}if(this._mergeAfterMaterialize){const{existingWrapper,isMergeReplace:____isMergeReplace}=this._mergeAfterMaterialize;const existingKeys2=Object.keys(existingWrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));for(const key of existingKeys2){if(!(key in this)||key.startsWith("_")||key.startsWith("__")){const child=existingWrapper[key];Object.defineProperty(this,key,{value:child,writable:false,enumerable:true,configurable:true})}}delete this._mergeAfterMaterialize}}___createChildWrapper(key,value,visited=null,deferChildAdopt=false){if(value===void 0){return void 0}if(value===null){return null}if(value&&resolveWrapper(value)!==null){return value}if(value instanceof Map||value instanceof Set||value instanceof WeakMap||value instanceof WeakSet||value instanceof Date||value instanceof RegExp||value instanceof Promise||value instanceof Error||ArrayBuffer.isView(value)||value instanceof ArrayBuffer||EventEmitter&&value instanceof EventEmitter){return null}const trackCycle=typeof value==="object"||typeof value==="function";if(trackCycle){visited??=new WeakSet;if(visited.has(value)){return null}}let childImpl=value;if(this.____slothletInternal.mode==="eager"&&childImpl&&typeof childImpl==="object"){if(Array.isArray(childImpl)){childImpl=childImpl.slice()}else{const descriptors=Object.getOwnPropertyDescriptors(childImpl);childImpl=Object.create(Object.getPrototypeOf(childImpl),descriptors)}}const parentMetadata=this.slothlet.handlers?.metadata?.getMetadata(this);const childExistingMetadata=this.slothlet.handlers?.metadata?.getMetadata(value);let childFilePath=childExistingMetadata?.filePath||null;let childModuleId=null;if(!childFilePath){const keyStr=typeof key==="symbol"?String(key):key;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_CHECK",apiPath:this.apiPath,propKey:keyStr,has_impl:!!this.____slothletInternal.impl,has__childFilePaths:!!(this.____slothletInternal.impl&&this.____slothletInternal.impl.__childFilePaths),has__childFilePathsPreMaterialize:!!this.____slothletInternal.childFilePathsPreMaterialize,parentFilePath:parentMetadata?.filePath});if(this.____slothletInternal.impl&&this.____slothletInternal.impl.__childFilePaths){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE",keys:Object.keys(this.____slothletInternal.impl.__childFilePaths).join(","),propKey:keyStr,found:!!this.____slothletInternal.impl.__childFilePaths[key]})}if(this.____slothletInternal.impl&&this.____slothletInternal.impl.__childFilePaths&&this.____slothletInternal.impl.__childFilePaths[key]){childFilePath=this.____slothletInternal.impl.__childFilePaths[key];this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_USING",childFilePath})}else if(this.____slothletInternal.childFilePathsPreMaterialize&&this.____slothletInternal.childFilePathsPreMaterialize[key]){childFilePath=this.____slothletInternal.childFilePathsPreMaterialize[key];this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT",childFilePath})}else{childFilePath=parentMetadata?.filePath||null;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK",childFilePath})}}if(parentMetadata?.baseModuleID){childModuleId=parentMetadata.baseModuleID}const childSourceFolder=childExistingMetadata?.sourceFolder||parentMetadata?.sourceFolder||null;if(trackCycle){visited.add(value)}let nestedWrapper;try{nestedWrapper=new UnifiedWrapper(this.slothlet,{mode:"eager",apiPath:this.____slothletInternal.apiPath?`${this.____slothletInternal.apiPath}.${typeof key==="symbol"?String(key):key}`:String(key),initialImpl:childImpl,isCallable:typeof childImpl==="function",filePath:childFilePath,moduleID:childModuleId,sourceFolder:childSourceFolder,__adoptVisited:visited,deferChildAdopt})}finally{if(trackCycle){visited.delete(value)}}return nestedWrapper.createProxy()}___createWaitingProxy(propChain=[]){const wrapper=this;const __readGateStore=wrapper.slothlet.contextManager?.tryGetContext?.();const __readGateCaller=__readGateStore?{currentWrapper:wrapper.slothlet.contextManager?.getCallerIdentity?.()?.currentWrapper??null,context:__readGateStore.context,[TRUSTED_ROOT]:__readGateStore[TRUSTED_ROOT]===true}:null;const __callerKey=__readGateCaller?.currentWrapper?.____slothletInternal?.apiPath??"";const cacheKey=`${__callerKey}::${propChain.join(".")}`;const __readGateContextRef=__readGateStore?.context??null;const useContextBucket=__readGateContextRef&&typeof __readGateContextRef==="object";let cache;if(useContextBucket){cache=wrapper.____slothletInternal.waitingProxyCacheByContext.get(__readGateContextRef);if(!cache){cache=new Map;wrapper.____slothletInternal.waitingProxyCacheByContext.set(__readGateContextRef,cache)}}else{cache=wrapper.____slothletInternal.waitingProxyCache}if(cache.has(cacheKey)){return cache.get(cacheKey)}const waitingTarget=createNamedProxyTarget(`${wrapper.____slothletInternal.apiPath}_waitingProxy`,"waitingProxyTarget");const waitingProxy=new Proxy(waitingTarget,{get(___target,prop){if(prop==="then"){return(onFulfilled,onRejected)=>{const waitingProxy_thenResolve=async()=>{if(!wrapper.____slothletInternal.state.materialized){await wrapper._materialize()}let current=wrapper;let __gateParent=null;let __gateProp=null;const __descendRest=(startValue,nextIndex)=>{let descended=startValue;for(let __di=nextIndex;__di<propChain.length;__di++){if(descended===null||descended===void 0)return void 0;descended=descended[propChain[__di]]}return descended};for(let __chainIndex=0;__chainIndex<propChain.length;__chainIndex++){const chainProp=propChain[__chainIndex];if(!current)return void 0;if(current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){let result=current.____slothletInternal.impl;for(let i=__chainIndex;i<propChain.length;i++){result=result[propChain[i]]}return result}const isInternal2=isFrameworkReservedKey(chainProp);if(!isInternal2&&hasOwn(current,chainProp)){const child=current[chainProp];const _childW=resolveWrapper(child);if(_childW){__gateParent=current;__gateProp=chainProp;current=_childW;if(current.____slothletInternal.mode==="lazy"&&!current.____slothletInternal.state.materialized){await current._materialize()}continue}if(__chainIndex<propChain.length-1){const descendedChild=__descendRest(child,__chainIndex+1);if(descendedChild!==void 0){runtime_enforceReadGate(current,propChain.slice(__chainIndex).join("."),descendedChild,__readGateCaller)}return descendedChild}runtime_enforceReadGate(current,chainProp,child,__readGateCaller);return child}if(current.____slothletInternal.impl&&current.____slothletInternal.impl[chainProp]!==void 0){const implValue=current.____slothletInternal.impl[chainProp];if(__chainIndex<propChain.length-1){const descendedImpl=__descendRest(implValue,__chainIndex+1);if(descendedImpl!==void 0){runtime_enforceReadGate(current,propChain.slice(__chainIndex).join("."),descendedImpl,__readGateCaller)}return descendedImpl}runtime_enforceReadGate(current,chainProp,implValue,__readGateCaller);return implValue}return void 0}if(current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){return current.____slothletInternal.impl}if(__gateParent){runtime_enforceReadGate(__gateParent,__gateProp,current.____slothletInternal.impl,__readGateCaller)}const finalImpl=current.____slothletInternal.impl;const callableCarriesWrapperMembers=typeof finalImpl==="function"&&Object.keys(current).some(key=>!isFrameworkReservedKey(key)&&!Object.prototype.hasOwnProperty.call(finalImpl,key));if(callableCarriesWrapperMembers||finalImpl!==null&&typeof finalImpl==="object"&&!Array.isArray(finalImpl)&&!runtime_isTerminalData(finalImpl)){const resolvedProxy=current.____slothletInternal.proxy;const __capturedReader=__readGateCaller?.currentWrapper??null;const __pm=wrapper.slothlet.handlers?.permissionManager;if(__capturedReader&&__pm&&__pm.isEnabled()&&__pm.isCaptureEnabled?.()!==false){return runtime_capturedView(resolvedProxy,__capturedReader)}return resolvedProxy}return finalImpl};waitingProxy_thenResolve().then(onFulfilled,onRejected)}}if(prop==="____slothletInternal")return void 0;if(prop==="_materialize")return wrapper._materialize.bind(wrapper);if(prop==="__mode")return wrapper.____slothletInternal.mode;if(prop==="__materialized")return wrapper.____slothletInternal.state.materialized;if(prop==="__inFlight")return wrapper.____slothletInternal.state.inFlight;if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(prop===util.inspect.custom){if(wrapper.____slothletInternal.state.inFlight){return waitingTarget}if(!wrapper.____slothletInternal.state.materialized){return waitingTarget}if(wrapper.____slothletInternal.impl){let current=wrapper.____slothletInternal.impl;for(const chainProp of propChain){if(!current){return void 0}current=current[chainProp]}return current}return waitingTarget}if(prop==="__type"){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE",apiPath:wrapper.apiPath,propChain:propChain.join(","),materialized:wrapper.____slothletInternal.state.materialized,hasImpl:wrapper.____slothletInternal.impl!==null});if(wrapper.____slothletInternal.state.materialized||wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0){let current=wrapper.createProxy();for(const chainProp of propChain){if(!current)break;const currentWrapper=resolveWrapper(current);if(currentWrapper){const isInternal2=isFrameworkReservedKey(chainProp);if(!isInternal2&&hasOwn(currentWrapper,chainProp)){current=currentWrapper[chainProp];wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER",chainProp:String(chainProp),typeOf:typeof current});continue}if(currentWrapper.____slothletInternal.impl&&typeof currentWrapper.____slothletInternal.impl==="object"&&currentWrapper.____slothletInternal.impl!==null&&chainProp in currentWrapper.____slothletInternal.impl){current=currentWrapper.____slothletInternal.impl[chainProp];wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_WALK_IMPL",chainProp:String(chainProp),typeOf:typeof current});continue}}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_WALK_DIRECT",chainProp:String(chainProp),typeOf:typeof current});current=current[chainProp]}const resolvedType=typeof current==="function"?"function":typeof current==="object"&&current!==null?"object":typeof current;wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_RESOLVED",apiPath:wrapper.apiPath,propChain:propChain.join(","),resolvedType});return resolvedType}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_INFLIGHT",apiPath:wrapper.apiPath,propChain:propChain.join(",")});return TYPE_STATES.IN_FLIGHT}if(prop==="__metadata"){if(wrapper.slothlet.handlers?.metadata){return wrapper.slothlet.handlers.metadata.getMetadata(wrapper)}return{}}if(typeof prop==="symbol")return void 0;if(prop==="length"){return 0}if(prop==="name")return waitingTarget.name||"waitingProxyTarget";if(prop==="toString"){return Function.prototype.toString.bind(waitingTarget)}if(prop==="valueOf"){return Function.prototype.valueOf.bind(waitingTarget)}if(prop==="toJSON"){return()=>void 0}if(prop==="__slothletPath")return wrapper.____slothletInternal.apiPath;if(wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0&&typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){let result=wrapper.____slothletInternal.impl;for(const chainProp of propChain){result=result[chainProp]}return result[prop]}if(wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0){let current=wrapper;let remainingChain=[...propChain];for(let i=0;i<propChain.length;i++){const chainProp=propChain[i];if(current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){let proxyResult=current.____slothletInternal.impl;for(const remainingProp of remainingChain){proxyResult=proxyResult[remainingProp]}return proxyResult[prop]}const isInternal2=isFrameworkReservedKey(chainProp);if(!isInternal2&&current&&hasOwn(current,chainProp)){const cached=current[chainProp];const _cachedW2=resolveWrapper(cached);if(_cachedW2){current=_cachedW2;remainingChain.shift()}else{return void 0}}else{return void 0}}if(current&&current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){return current.____slothletInternal.impl[prop]}const isFinalInternal=isFrameworkReservedKey(prop);if(!isFinalInternal&&hasOwn(current,prop)){return current[prop]}return void 0}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_PREMATURE",apiPath:wrapper.____slothletInternal.apiPath,prop});return wrapper[prop]}if(wrapper.____slothletInternal.needsImmediateChildAdoption&&wrapper.____slothletInternal.materializeFunc&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT",apiPath:wrapper.____slothletInternal.apiPath,prop});wrapper._materialize().catch(err=>{wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR",apiPath:wrapper.apiPath,error:err.message})});const isInternal2=isFrameworkReservedKey(prop);if(!isInternal2&&hasOwn(wrapper,prop)){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS",apiPath:wrapper.____slothletInternal.apiPath,prop});return wrapper[prop]}}if(wrapper.____slothletInternal.state.inFlight){return wrapper.___createWaitingProxy([...propChain,prop])}return wrapper.___createWaitingProxy([...propChain,prop])},async apply(___target,___thisArg,args){const ___liveCallerWrapper=wrapper.slothlet.contextManager?.getCallerIdentity?.()?.currentWrapper??null;const ___capture=wrapper.slothlet.handlers?.permissionManager?.isCaptureEnabled()!==false;const ___creationCallerWrapper=___capture?__readGateCaller?.currentWrapper??null:null;const ___capturedCallerWrapper=___liveCallerWrapper??___creationCallerWrapper;wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_ENTRY",apiPath:wrapper.____slothletInternal.apiPath,propChain:propChain.join(","),args:args.join(",")});const chainLabel=propChain.map(prop=>String(prop)).join(".");if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_MATERIALIZE",apiPath:wrapper.____slothletInternal.apiPath});await wrapper._materialize();wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_MATERIALIZED",apiPath:wrapper.____slothletInternal.apiPath})}else if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&wrapper.____slothletInternal.state.inFlight){if(wrapper.____slothletInternal.materializationPromise){await wrapper.____slothletInternal.materializationPromise}else{await wrapper._materialize()}}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_START_WALK",apiPath:wrapper.____slothletInternal.apiPath,propChain:propChain.join(",")});let current=wrapper.createProxy();let lastWrapper=wrapper;let lastObject=null;for(const prop of propChain){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_WALK",prop:String(prop),typeOf:typeof current,constructorName:current?.constructor?.name});if(!current){if(propChain.some(p=>typeof p==="symbol")){return void 0}if(wrapper.____slothletInternal.invalid||wrapper.____slothletInternal.impl===null||lastWrapper&&(lastWrapper.__invalid||lastWrapper._impl===null)){return void 0}const finalProp=propChain[propChain.length-1];if(finalProp==="hasAttribute"||finalProp==="toJSON"||finalProp===Symbol.toStringTag||finalProp==="constructor"||typeof finalProp==="symbol"||typeof prop==="symbol"){return void 0}throw new wrapper.slothlet.SlothletError("CHAIN_ACCESS_UNDEFINED",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel,prop:String(prop)},null,{validationError:true})}const currentWrapper=resolveWrapper(current);if(currentWrapper){const state=currentWrapper.____slothletInternal.state;if(!state.materialized){if(!state.inFlight&&typeof current._materialize==="function"){await current._materialize()}while(!currentWrapper.____slothletInternal.state.materialized){const nextState=currentWrapper.____slothletInternal.state;if(!nextState.inFlight&&!nextState.materialized){throw new wrapper.slothlet.SlothletError("CHAIN_MATERIALIZE_FAILED",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel,prop:String(prop)},null,{validationError:true})}await new Promise(resolve=>setImmediate(resolve))}}}if(currentWrapper){lastWrapper=currentWrapper;const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(currentWrapper,prop)){lastObject=current;current=currentWrapper[prop];continue}if(currentWrapper.____slothletInternal.impl&&typeof currentWrapper.____slothletInternal.impl==="object"&&currentWrapper.____slothletInternal.impl!==null&&prop in currentWrapper.____slothletInternal.impl){lastObject=currentWrapper.____slothletInternal.impl;current=currentWrapper.____slothletInternal.impl[prop];continue}}lastObject=current;current=current[prop]}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY",apiPath:wrapper.____slothletInternal.apiPath,propChain:propChain.join(","),typeOf:typeof current,currentName:current?.name,isFunction:typeof current==="function"});if(typeof current==="function"){if(___creationCallerWrapper&&___creationCallerWrapper!==___capturedCallerWrapper){const ___resolvedInner=resolveWrapper(current);const ___targetPath=___resolvedInner?.____slothletInternal?.apiPath??[wrapper.____slothletInternal.apiPath,...propChain].filter(Boolean).join(".");runtime_enforceCapturedCaller(wrapper,___creationCallerWrapper,___targetPath)}if(___capturedCallerWrapper&&wrapper.slothlet.contextManager){const ___instanceStore=wrapper.slothlet.contextManager.instances?.get?.(wrapper.instanceID);if(___instanceStore&&!___instanceStore.currentWrapper){return wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,()=>Reflect.apply(current,lastObject,args),null,[],___capturedCallerWrapper,true)}}const ___identityStore=___capturedCallerWrapper?wrapper.slothlet.contextManager?.instances?.get?.(wrapper.instanceID):null;if(!___identityStore)return Reflect.apply(current,lastObject,args);const ___previousAuthoritative=___identityStore.__authoritativeWrapper;___identityStore.__authoritativeWrapper=___capturedCallerWrapper;try{return Reflect.apply(current,lastObject,args)}finally{___identityStore.__authoritativeWrapper=___previousAuthoritative}}const _finalChainProp=propChain[propChain.length-1];if(_finalChainProp==="hasAttribute"||_finalChainProp==="toJSON"){return void 0}if(current===void 0||current===null){throw new wrapper.slothlet.SlothletError("CHAIN_NOT_CALLABLE",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel},null,{validationError:true})}throw new wrapper.slothlet.SlothletError("CHAIN_NOT_CALLABLE",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel},null,{validationError:true})},getPrototypeOf:()=>null});_proxyRegistry.set(waitingProxy,wrapper);cache.set(cacheKey,waitingProxy);return waitingProxy}createProxy(){const wrapper=this;if(wrapper.____slothletInternal.proxy){return wrapper.____slothletInternal.proxy}if(wrapper.____slothletInternal.materializeOnCreate&&wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&wrapper.____slothletInternal.materializeFunc){wrapper._materialize().catch(()=>{})}const mightBeCallable=wrapper.____slothletInternal.isCallable||wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.isCallableLocked;let proxyTarget;if(mightBeCallable){proxyTarget=createNamedProxyTarget(wrapper.____slothletInternal.apiPath,"callableProxy")}else if(Array.isArray(wrapper.____slothletInternal.impl)){proxyTarget=wrapper.____slothletInternal.impl}else{proxyTarget=wrapper}if(!Array.isArray(proxyTarget)&&!(util.inspect.custom in proxyTarget)){Object.defineProperty(proxyTarget,util.inspect.custom,{value:function(){const childKeys=Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(childKeys.length>0&&!wrapper.____slothletInternal.isCallable){const obj={};for(const key of childKeys){const child=wrapper[key];if(child&&typeof child.createProxy==="function"){obj[key]=child.createProxy()}else{obj[key]=child}}return obj}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&(wrapper.____slothletInternal.impl===null||wrapper.____slothletInternal.impl===void 0)){return wrapper.____slothletInternal.proxy||wrapper}return wrapper.____slothletInternal.impl},writable:false,enumerable:false,configurable:true})}const getTrap=(target,prop,____receiver)=>{const enforceReadGate=resolvedValue=>runtime_enforceReadGate(wrapper,prop,resolvedValue);if(target!==wrapper&&prop in target){const desc=Object.getOwnPropertyDescriptor(target,prop);if(desc&&!desc.configurable){if(typeof prop==="string"&&prop.startsWith("__")){return wrapper[prop]}return target[prop]}}if(target===wrapper&&typeof prop==="string"){const desc=Object.getOwnPropertyDescriptor(target,prop);if(desc&&!desc.configurable){return target[prop]}}const isInternalProp=isFrameworkReservedKey(prop);const allowedInternals=new Set(["_materialize","__mode","__apiPath","__isCallable","__materializeOnCreate","__displayName","__type","__materialized","__inFlight","__slothletPath","__metadata","__filePath","__sourceFolder","__moduleID"]);if(isInternalProp&&!allowedInternals.has(prop)){return void 0}if(prop==="power"||prop==="add"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_START",apiPath:wrapper.____slothletInternal.apiPath,prop:String(prop),mode:wrapper.____slothletInternal.mode,collisionMode:wrapper.____slothletInternal.state.collisionMode||"none",materialized:wrapper.____slothletInternal.state.materialized,hasImpl:wrapper.____slothletInternal.impl!==null,inWrapper:!isInternalProp&&hasOwn(wrapper,prop)})}if(prop==="__mode")return wrapper.____slothletInternal.mode;if(prop==="__apiPath")return wrapper.____slothletInternal.apiPath;if(prop==="__isCallable")return wrapper.____slothletInternal.isCallable;if(prop==="__materializeOnCreate")return wrapper.____slothletInternal.materializeOnCreate;if(prop==="__materialized")return wrapper.____slothletInternal.state.materialized;if(prop==="__inFlight")return wrapper.____slothletInternal.state.inFlight;if(prop==="__displayName")return wrapper.____slothletInternal.displayName;if(prop==="__type"){if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.inFlight){return TYPE_STATES.IN_FLIGHT}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized){return TYPE_STATES.UNMATERIALIZED}const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return"function"}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return"function"}if(impl&&typeof impl==="object"){return"object"}if(typeof impl==="string"){return"string"}if(typeof impl==="number"){return"number"}if(typeof impl==="boolean"){return"boolean"}if(typeof impl==="symbol"){return"symbol"}if(typeof impl==="bigint"){return"bigint"}return"undefined"}if(prop==="_materialize")return wrapper._materialize.bind(wrapper);if(prop==="__slothletPath")return wrapper.____slothletInternal.apiPath;if(prop==="__metadata"){if(wrapper.slothlet.handlers?.metadata){return wrapper.slothlet.handlers.metadata.getMetadata(wrapper)}return{}}if(prop==="__filePath")return wrapper.____slothletInternal.filePath??void 0;if(prop==="__sourceFolder")return wrapper.____slothletInternal.sourceFolder??void 0;if(prop==="__moduleID")return wrapper.____slothletInternal.moduleID??void 0;if(prop==="__invalid")return wrapper.____slothletInternal.invalid;{const arrImpl=wrapper.____slothletInternal.impl;if(Array.isArray(arrImpl)){const isIndex=typeof prop==="string"&&/^(?:0|[1-9]\d*)$/.test(prop);if(!isIndex){const arrValue=Reflect.get(arrImpl,prop,arrImpl);enforceReadGate(arrValue);return arrValue}}}if(prop==="then"){if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized){return(onFulfilled,onRejected)=>wrapper._materialize().then(()=>onFulfilled(wrapper.____slothletInternal.proxy)).catch(onRejected)}return void 0}if(prop==="constructor")return Object.prototype.constructor;if(prop===util.inspect.custom){return()=>{const childKeys=Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(childKeys.length>0&&!wrapper.____slothletInternal.isCallable){const obj={};for(const key of childKeys){const child=wrapper[key];if(child&&typeof child.createProxy==="function"){obj[key]=child.createProxy()}else{obj[key]=child}}return obj}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&(wrapper.____slothletInternal.impl===null||wrapper.____slothletInternal.impl===void 0)){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_INSPECT_LAZY_UNMATERIALIZED",apiPath:wrapper.apiPath,wrapper,____proxy:wrapper.____slothletInternal.proxy});return wrapper||wrapper.____slothletInternal.proxy}return wrapper.____slothletInternal.impl}}if(prop===Symbol.toStringTag){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return"Function"}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return"Function"}return"Object"}if(typeof prop==="symbol")return void 0;if(prop==="length"){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return impl.length}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return impl.default.length}return 0}if(prop==="name"){if(wrapper.____slothletInternal.apiPath){const pathParts=wrapper.____slothletInternal.apiPath.split(".");const lastPart=pathParts[pathParts.length-1];if(lastPart){return lastPart}}return target.name||"unifiedWrapperProxy"}if(prop==="toString"){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return impl.toString.bind(impl)}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return impl.default.toString.bind(impl.default)}if(typeof target==="function"){return Function.prototype.toString.bind(target)}return()=>`[UnifiedWrapper: ${wrapper.____slothletInternal.apiPath}]`}if(prop==="valueOf"){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return impl.valueOf.bind(impl)}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return impl.default.valueOf.bind(impl.default)}return Function.prototype.valueOf.bind(target)}if(prop==="toJSON"){const impl=wrapper.____slothletInternal.impl;if(impl&&typeof impl.toJSON==="function"){return impl.toJSON.bind(impl)}return()=>{const data=UnifiedWrapper._extractFullImpl(wrapper);if(data&&typeof data==="object"){delete data.__childFilePaths;delete data.__childFilePathsPreMaterialize}const pm=wrapper.slothlet.handlers?.permissionManager;if(pm&&pm.isEnabled()&&pm.isReadGatingEnabled()){runtime_redactSerialized(wrapper,data,wrapper.____slothletInternal.apiPath,new WeakSet)}return data}}if(wrapper.____slothletInternal.invalid){return void 0}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(hasOwn(wrapper,prop)){if(wrapper.____slothletInternal.state.collisionMode==="replace"&&(prop==="power"||prop==="add")){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_CACHED_REPLACE",apiPath:wrapper.apiPath,prop:String(prop),collisionMode:wrapper.____slothletInternal.state.collisionMode,wrapperKeys:Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__")).join(", ")})}this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_CACHED",apiPath:wrapper.____slothletInternal.apiPath,prop:String(prop),materialized:wrapper.____slothletInternal.state.materialized,hasImpl:wrapper.____slothletInternal.impl!==null});const cached=wrapper[prop];const _cachedWrapper=resolveWrapper(cached);if(_cachedWrapper?.____slothletInternal?.impl!==null&&_cachedWrapper?.____slothletInternal?.impl!==void 0){const cachedImpl=_cachedWrapper.____slothletInternal.impl;const cachedType=typeof cachedImpl;if(cachedType==="string"||cachedType==="number"||cachedType==="boolean"||cachedType==="bigint"||cachedType==="symbol"){enforceReadGate(cachedImpl);return cachedImpl}}if(_cachedWrapper){const cachedWrapper=_cachedWrapper;if(cachedWrapper.____slothletInternal.mode==="lazy"&&!cachedWrapper.____slothletInternal.state.materialized&&!cachedWrapper.____slothletInternal.state.inFlight){cachedWrapper._materialize().catch(()=>{})}}enforceReadGate(cached);return cached}if(wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0){if(typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){return wrapper.____slothletInternal.impl[prop]}if(hasOwn(wrapper,prop)){if(prop==="power"||prop==="add"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_PROXYGET_ACCESSING",prop,wrapperId:wrapper.____slothletInternal.id,apiPath:wrapper.apiPath,collisionMode:wrapper.____slothletInternal.state.collisionMode||"none"});this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_PROXYGET_FOUND",wrapperKeys:Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__")).join(", ")})}const cached=wrapper[prop];const _cachedWrapper4=resolveWrapper(cached);if(_cachedWrapper4){const cachedWrapper=_cachedWrapper4;if(cachedWrapper.____slothletInternal.mode==="lazy"&&!cachedWrapper.____slothletInternal.state.materialized&&!cachedWrapper.____slothletInternal.state.inFlight){cachedWrapper._materialize().catch(()=>{})}}enforceReadGate(cached);return cached}}const isInternalProp2=typeof prop==="string"&&UnifiedWrapper.INTERNAL_KEYS.has(prop);if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.materialized&&!isInternalProp2&&!hasOwn(wrapper,prop)&&wrapper.____slothletInternal.impl&&!(prop in wrapper.____slothletInternal.impl)){return void 0}if(wrapper.____slothletInternal.mode==="lazy"&&(wrapper.____slothletInternal.state.inFlight||!wrapper.____slothletInternal.impl)){if(!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}this.slothlet.debug("wrapper",{key:"DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY",prop:String(prop),collisionMode:wrapper.____slothletInternal.state.collisionMode||"none",apiPath:wrapper.____slothletInternal.apiPath});if(wrapper.____slothletInternal.impl&&typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){const value2=wrapper.____slothletInternal.impl[prop];return value2}return wrapper.___createWaitingProxy([prop])}if(wrapper.____slothletInternal.impl&&typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){const value2=wrapper.____slothletInternal.impl[prop];return value2}let value=wrapper.____slothletInternal.impl?wrapper.____slothletInternal.impl[prop]:void 0;if(value===void 0&&wrapper.____slothletInternal.impl){const descriptor=Object.getOwnPropertyDescriptor(wrapper.____slothletInternal.impl,prop);if(descriptor&&descriptor.get){value=descriptor.get.call(wrapper.____slothletInternal.impl)}}if(value===void 0&&Object.prototype.hasOwnProperty.call(target,prop)){value=target[prop]}if(value===void 0){return void 0}enforceReadGate(value);const valueType=typeof value;if(value===null||valueType==="string"||valueType==="number"||valueType==="boolean"||valueType==="bigint"||valueType==="symbol"){return value}if(value instanceof Map||value instanceof Set||value instanceof WeakMap||value instanceof WeakSet||value instanceof Date||value instanceof RegExp||value instanceof Promise||value instanceof Error||ArrayBuffer.isView(value)||value instanceof ArrayBuffer){return value}if(value&&typeof value==="object"&&util.types.isProxy(value)){return value}if(value&&(typeof value==="object"||typeof value==="function")&&resolveWrapper(value)!==null){return value}const currentImpl=wrapper.____slothletInternal.impl;if(typeof currentImpl==="function"&&!Object.prototype.propertyIsEnumerable.call(currentImpl,prop)){return value}const wrapped=wrapper.___createChildWrapper(prop,value,null,wrapper.____slothletInternal.deferChildAdopt);if(wrapped){Object.defineProperty(wrapper,prop,{value:wrapped,writable:false,enumerable:true,configurable:true});return wrapped}return value};const applyTrap=(target,thisArg,args)=>{if(wrapper.____slothletInternal.invalid){throw new TypeError(`${wrapper.____slothletInternal.apiPath||"api"} is invalidated`)}enforcePermission(wrapper);const hookManager=wrapper.slothlet.handlers?.hookManager;const hasHooks=hookManager&&hookManager.enabled&&!wrapper.____slothletInternal.apiPath.startsWith("slothlet.hook");const api=wrapper.slothlet.boundApi;const ctx=wrapper.slothlet.config?.context||{};if(hasHooks){const ___strategy=hookManager.getDispatchStrategy(wrapper.____slothletInternal.apiPath);if(___strategy.asyncBefore||___strategy.asyncAfter){const ___path=wrapper.____slothletInternal.apiPath;const ___leafIsAsync=util.types.isAsyncFunction(wrapper.____slothletInternal.impl)||util.types.isAsyncFunction(wrapper.____slothletInternal.impl?.default);const ___promotedRun=(async()=>{let beforeResult;try{beforeResult=await hookManager.executeBeforeHooksAsync(___path,args,api,ctx)}catch(error){hookManager.executeAlwaysHooks(___path,args,void 0,true,[unwrapError(error)],api,ctx);throw error}args=beforeResult.args;if(beforeResult.shortCircuit){hookManager.executeAlwaysHooks(___path,args,beforeResult.value,false,[],api,ctx);return beforeResult.value}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized){await wrapper._materialize()}const impl=wrapper.____slothletInternal.impl;let settled;try{let raw;if(typeof impl==="function"){raw=wrapper.slothlet.contextManager?wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl,thisArg,args,wrapper):impl.apply(thisArg,args)}else if(impl&&typeof impl==="object"&&typeof impl.default==="function"){raw=wrapper.slothlet.contextManager?wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl.default,impl,args,wrapper):impl.default.apply(impl,args)}else{throw new wrapper.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:___path,actualType:typeof impl},null,{validationError:true})}settled=raw&&typeof raw==="object"&&typeof raw.then==="function"?await raw:raw}catch(error){const originalError=unwrapError(error);if(!error[ERROR_HOOK_PROCESSED]){const sourceInfo={type:"function",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(___path,originalError,sourceInfo,args,api,ctx)}hookManager.executeAlwaysHooks(___path,args,void 0,true,[originalError],api,ctx);if(wrapper.slothlet.config?.hook?.suppressErrors===true)return void 0;throw error}let promotedFinal;try{const afterResult=await hookManager.executeAfterHooksAsync(___path,settled,args,api,ctx);promotedFinal=afterResult.modified?afterResult.result:settled}catch(error){hookManager.executeAlwaysHooks(___path,args,void 0,true,[unwrapError(error)],api,ctx);throw error}hookManager.executeAlwaysHooks(___path,args,promotedFinal,false,[],api,ctx);return promotedFinal})();return ___leafIsAsync?___promotedRun:runtime_guardPromotedResult(___promotedRun,___path,wrapper.SlothletError)}}let result;let finalResult;let isAsync=false;let lastSyncError=null;try{if(hasHooks){const beforeResult=hookManager.executeBeforeHooks(wrapper.____slothletInternal.apiPath,args,api,ctx);args=beforeResult.args;if(beforeResult.shortCircuit){finalResult=beforeResult.value;return beforeResult.value}}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.inFlight){return new Promise((resolve,reject)=>{const checkMaterialized=()=>{if(wrapper.____slothletInternal.state.materialized){const impl2=wrapper.____slothletInternal.impl;try{if(typeof impl2==="function"){if(wrapper.slothlet.contextManager){resolve(wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl2,thisArg,args,wrapper,true))}else{resolve(impl2.apply(thisArg,args))}}else if(impl2&&typeof impl2==="object"&&typeof impl2.default==="function"){if(wrapper.contextManager){resolve(wrapper.contextManager.runInContext(wrapper.instanceID,impl2.default,impl2,args,wrapper,true))}else{resolve(impl2.default.apply(impl2,args))}}else{reject(new wrapper.slothlet.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl2},null,{validationError:true}))}}catch(err){reject(err)}return}if(!wrapper.____slothletInternal.state.inFlight){reject(new wrapper.slothlet.SlothletError("INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED",{apiPath:wrapper.____slothletInternal.apiPath},null,{validationError:true}));return}setImmediate(checkMaterialized)};checkMaterialized()})}const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){if(wrapper.slothlet.contextManager){result=wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl,thisArg,args,wrapper,true)}else{result=impl.apply(thisArg,args)}}else if(impl&&typeof impl==="object"&&typeof impl.default==="function"){if(wrapper.slothlet.contextManager){result=wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl.default,impl,args,wrapper,true)}else{result=impl.default.apply(impl,args)}}else{throw new wrapper.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl},null,{validationError:true})}if(result&&typeof result==="object"&&typeof result.then==="function"){isAsync=true;return result.then(resolvedResult=>{try{if(hasHooks){const afterResult=hookManager.executeAfterHooks(wrapper.____slothletInternal.apiPath,resolvedResult,args,api,ctx);const finalResult2=afterResult.modified?afterResult.result:resolvedResult;hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,finalResult2,false,[],api,ctx);return finalResult2}return resolvedResult}catch(error){if(hasHooks){const originalError=unwrapError(error);const sourceInfo={type:"after",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(wrapper.____slothletInternal.apiPath,originalError,sourceInfo,args,api,ctx);hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,void 0,true,[originalError],api,ctx)}const suppressErrors=wrapper.slothlet.config?.hook?.suppressErrors===true;if(suppressErrors){return void 0}throw error}},error=>{if(hasHooks&&!error[ERROR_HOOK_PROCESSED]){const originalError=unwrapError(error);const sourceInfo={type:"function",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(wrapper.____slothletInternal.apiPath,originalError,sourceInfo,args,api,ctx)}if(hasHooks){const originalError=unwrapError(error);hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,void 0,true,[originalError],api,ctx)}const suppressErrors=wrapper.slothlet.config?.hook?.suppressErrors===true;if(suppressErrors){return void 0}throw error})}finalResult=result;if(hasHooks){const afterResult=hookManager.executeAfterHooks(wrapper.____slothletInternal.apiPath,result,args,api,ctx);if(afterResult.modified){finalResult=afterResult.result}}return finalResult}catch(error){lastSyncError=error;if(hasHooks&&!error[ERROR_HOOK_PROCESSED]){const originalError=unwrapError(error);const sourceInfo={type:"function",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(wrapper.____slothletInternal.apiPath,originalError,sourceInfo,args,api,ctx)}const suppressErrors=wrapper.slothlet.config?.hook?.suppressErrors===true;if(suppressErrors){return void 0}throw error}finally{if(hasHooks&&!isAsync){const syncError=lastSyncError;const resultValue=syncError?void 0:typeof finalResult!=="undefined"?finalResult:result;const errors=syncError?[unwrapError(syncError)]:[];hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,resultValue,!!syncError,errors,api,ctx)}}};const hasTrap=(target,prop)=>{if(prop==="_materialize"){return true}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){return true}if(!isInternal&&wrapper.____slothletInternal.impl&&(typeof wrapper.____slothletInternal.impl==="object"||typeof wrapper.____slothletInternal.impl==="function")&&prop in wrapper.____slothletInternal.impl){return true}return Object.prototype.hasOwnProperty.call(target,prop)};const getOwnPropertyDescriptorTrap=(target,prop)=>{if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(prop==="____slothletInternal")return void 0;if(prop==="prototype"&&typeof target==="function"){const desc=Object.getOwnPropertyDescriptor(target,"prototype");if(desc){return desc}}const ownDesc=Object.getOwnPropertyDescriptor(target,prop);if((!ownDesc||ownDesc.configurable)&&runtime_isReadRedacted(wrapper,prop)){return void 0}if(Object.prototype.hasOwnProperty.call(target,prop)){return Object.getOwnPropertyDescriptor(target,prop)}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){const desc=Object.getOwnPropertyDescriptor(wrapper,prop);if(desc){return desc}}if(!isInternal&&wrapper.____slothletInternal.impl&&(typeof wrapper.____slothletInternal.impl==="object"||typeof wrapper.____slothletInternal.impl==="function")&&prop in wrapper.____slothletInternal.impl){return Object.getOwnPropertyDescriptor(wrapper.____slothletInternal.impl,prop)}return void 0};const ownKeysTrap=target=>{if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}const keys=new Set;if(typeof target==="function"||target&&target.__isCallable){keys.add("prototype");keys.add("length");keys.add("name")}for(const key of Reflect.ownKeys(target)){const descriptor=Object.getOwnPropertyDescriptor(target,key);if(!descriptor.configurable||descriptor.enumerable){keys.add(key)}}if(target!==wrapper){for(const key of Reflect.ownKeys(wrapper)){const descriptor=Object.getOwnPropertyDescriptor(wrapper,key);if(descriptor&&descriptor.enumerable){keys.add(key)}}}const implKeys=wrapper.____slothletInternal.impl&&(typeof wrapper.____slothletInternal.impl==="object"||typeof wrapper.____slothletInternal.impl==="function")?Reflect.ownKeys(wrapper.____slothletInternal.impl):[];for(const key of implKeys){if(key!=="prototype"&&!IMPL_METADATA_KEYS.has(key)){keys.add(key)}}for(const key of keys){const targetDesc=Object.getOwnPropertyDescriptor(target,key);if(targetDesc&&!targetDesc.configurable)continue;if(runtime_isReadRedacted(wrapper,key))keys.delete(key)}return Array.from(keys)};const setTrap=(target,prop,value)=>{if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize()}if(UnifiedWrapper.INTERNAL_KEYS.has(prop)&&prop!=="_materialize")return true;const internalKeys=new Set(["_materialize"]);if(!internalKeys.has(prop)){if(hasOwn(wrapper,prop)){delete wrapper[prop]}let stored=value;const inBuild=wrapper.slothlet.____buildDepth>0;if(!inBuild&&value!==null&&(typeof value==="object"||typeof value==="function")&&!util.types.isProxy(value)&&resolveWrapper(value)===null){const wrapped=wrapper.___createChildWrapper(prop,value,null,true);if(wrapped!==null&&wrapped!==void 0){const wrappedInternal=resolveWrapper(wrapped);if(wrappedInternal)wrappedInternal.____slothletInternal.userAssigned=true;stored=wrapped}}Object.defineProperty(wrapper,prop,{value:stored,writable:false,enumerable:true,configurable:true})}else{target[prop]=value}return true};const deletePropertyTrap=(target,prop)=>{const internalKeys=new Set(["____slothletInternal","__impl","___setImpl","___resetLazy","_materialize","___invalidate","_impl","___getState","__state","__mode","__apiPath","__slothletPath","__isCallable","__materializeOnCreate","__displayName","__type","__metadata","__invalid","__filePath","__sourceFolder","__moduleID","__materialized","__inFlight"]);if(internalKeys.has(prop)){return true}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){const childWrapper=wrapper[prop];const childWrapperRaw=resolveWrapper(childWrapper);if(childWrapperRaw){childWrapperRaw.___invalidate()}const descriptor=Object.getOwnPropertyDescriptor(wrapper,prop);if(descriptor?.configurable){delete wrapper[prop]}}if(wrapper.____slothletInternal.impl&&typeof wrapper.____slothletInternal.impl==="object"&&prop in wrapper.____slothletInternal.impl){delete wrapper.____slothletInternal.impl[prop]}delete target[prop];return true};const constructTrap=(target,args,newTarget)=>{if(wrapper.____slothletInternal.invalid){throw new TypeError(`${wrapper.____slothletInternal.apiPath||"api"} is invalidated`)}enforcePermission(wrapper);if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.inFlight){return Promise.resolve(wrapper.____slothletInternal.materializationPromise).then(()=>{if(!wrapper.____slothletInternal.state.materialized){throw new wrapper.slothlet.SlothletError("INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED",{apiPath:wrapper.____slothletInternal.apiPath},null,{validationError:true})}const impl2=wrapper.____slothletInternal.impl;if(typeof impl2==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl2:newTarget;return Reflect.construct(impl2,args,effectiveNewTarget)}if(impl2&&typeof impl2==="object"&&typeof impl2.default==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl2.default:newTarget;return Reflect.construct(impl2.default,args,effectiveNewTarget)}throw new wrapper.slothlet.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl2},null,{validationError:true})})}const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl:newTarget;return Reflect.construct(impl,args,effectiveNewTarget)}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl.default:newTarget;return Reflect.construct(impl.default,args,effectiveNewTarget)}throw new wrapper.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl},null,{validationError:true})};wrapper.____slothletInternal.proxy=new Proxy(proxyTarget,{get:(target,prop,receiver)=>runtime_bindCapturedIdentity(wrapper,prop,getTrap(target,prop,receiver)),apply:applyTrap,construct:constructTrap,has:hasTrap,getOwnPropertyDescriptor:getOwnPropertyDescriptorTrap,ownKeys:ownKeysTrap,set:setTrap,deleteProperty:deletePropertyTrap,getPrototypeOf:()=>Array.isArray(wrapper.____slothletInternal.impl)?Array.prototype:null});_proxyRegistry.set(wrapper.____slothletInternal.proxy,wrapper);genuineWrappers.add(wrapper);return wrapper.____slothletInternal.proxy}}Object.defineProperty(UnifiedWrapper.prototype,util.inspect.custom,{value:UnifiedWrapper.prototype.____inspectCustom,writable:true,enumerable:false,configurable:true});function resolveWrapper(value){if(!value)return null;const registered=_proxyRegistry.get(value);if(registered)return registered;if(value instanceof UnifiedWrapper&&value.____slothletInternal!=null)return value;return null}export{IMPL_METADATA_KEYS,TYPE_STATES,UnifiedWrapper,isFrameworkReservedKey,resolveWrapper};
17
+ const ____COLLISION_MERGED_PROPERTY=Symbol("collisionMergedProperty");import{isNode,util,EventEmitter}from"@cldmv/slothlet/helpers/platform";import{ComponentBase}from"#factories/component-base";import{TRUSTED_ROOT,genuineWrappers}from"#handlers/trusted-root";import{isFrameworkInternal,isFrameworkMarkerKey}from"#handlers/framework-internals";const ERROR_HOOK_PROCESSED=Symbol.for("@cldmv/slothlet/hook-error-processed");const hasOwn=(obj,key)=>Object.prototype.hasOwnProperty.call(obj,key);function resolveEnforcedCaller(wrapper,ctxOverride){const ownInstanceID=wrapper.slothlet.instanceID;const ctx=ctxOverride!==void 0?ctxOverride:wrapper.slothlet.contextManager?.tryGetContext?.(ownInstanceID);const identity=ctxOverride!==void 0?ctxOverride:wrapper.slothlet.contextManager?.getCallerIdentity?.(ownInstanceID);if(identity?.unresolved)return{verdict:"deny"};const callerWrapper=identity?.currentWrapper;if(!callerWrapper){const store=ctx??wrapper.slothlet.contextManager?.instances?.get(wrapper.slothlet.instanceID);if(store&&store[TRUSTED_ROOT]===true)return{verdict:"allow"};if(wrapper.slothlet.config?.permissions?.failOpenOnAbsentCaller)return{verdict:"allow"};return{verdict:"deny"}}if(!genuineWrappers.has(callerWrapper))return{verdict:"deny"};return{verdict:"enforce",callerWrapper,ctx}}function runtime_enforceReadGate(wrapper,prop,resolvedValue,callerOverride){const pm=wrapper.slothlet.handlers?.permissionManager;if(!pm||!pm.isEnabled()||!pm.isReadGatingEnabled())return;if(!runtime_isTerminalData(resolvedValue))return;const targetPath=wrapper.____slothletInternal.apiPath+"."+String(prop);const decision=runtime_readGateDecision(wrapper,targetPath,callerOverride);if(decision.allowed)return;throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:decision.caller,target:targetPath})}function runtime_isTerminalData(value){return value!==Object(value)||value instanceof Map||value instanceof Set||value instanceof WeakMap||value instanceof WeakSet||value instanceof Date||value instanceof RegExp||value instanceof Promise||value instanceof Error||ArrayBuffer.isView(value)||value instanceof ArrayBuffer}function runtime_readGateDecision(wrapper,targetPath,callerOverride){if(isFrameworkInternal(wrapper)){const leafKey=targetPath.slice(targetPath.lastIndexOf(".")+1);if(isFrameworkMarkerKey(leafKey))return{allowed:true,caller:null}}const decision=resolveEnforcedCaller(wrapper,callerOverride);if(decision.verdict==="allow"){const hostPm=wrapper.slothlet.handlers.permissionManager;if(hostPm.isPrivateTarget?.(targetPath)&&!hostPm.enforceAccess(null,targetPath,null,wrapper.____slothletInternal.filePath,null)){return{allowed:false,caller:null}}return{allowed:true,caller:null}}if(decision.verdict==="deny")return{allowed:false,caller:null};const{callerWrapper,ctx}=decision;const callerPath=callerWrapper.____slothletInternal?.apiPath??"";const callerFilePath=callerWrapper.____slothletInternal?.filePath??null;const targetFilePath=wrapper.____slothletInternal.filePath??null;const allowed=wrapper.slothlet.handlers.permissionManager.enforceAccess(callerPath,targetPath,callerFilePath,targetFilePath,ctx.context??null);return{allowed,caller:callerPath}}function runtime_isReadRedacted(wrapper,prop){const pm=wrapper.slothlet.handlers?.permissionManager;if(!pm||!pm.isEnabled()||!pm.isReadGatingEnabled())return false;const impl=wrapper.____slothletInternal?.impl;const desc=(impl&&(typeof impl==="object"||typeof impl==="function")?Object.getOwnPropertyDescriptor(impl,prop):void 0)??Object.getOwnPropertyDescriptor(wrapper,prop);if(!desc||!("value"in desc)||!runtime_isTerminalData(runtime_unwrapLeafValue(desc.value)))return false;const targetPath=wrapper.____slothletInternal.apiPath+"."+String(prop);return!runtime_readGateDecision(wrapper,targetPath).allowed}function runtime_unwrapLeafValue(value){let current=value;for(let depth=0;depth<8;depth++){if(!current||typeof current!=="object"&&typeof current!=="function")return current;const inner=_proxyRegistry.get(current)??(hasOwn(current,"____slothletInternal")?current:null);if(!inner)return current;current=inner.____slothletInternal?.impl}return current}function runtime_redactSerialized(wrapper,data,basePath,seen){if(!data||typeof data!=="object"||Array.isArray(data)||seen.has(data))return;seen.add(data);for(const key of Object.keys(data)){const value=data[key];const targetPath=`${basePath}.${key}`;if(runtime_isTerminalData(value)){if(!runtime_readGateDecision(wrapper,targetPath).allowed)delete data[key]}else{runtime_redactSerialized(wrapper,value,targetPath,seen)}}}function enforcePermission(wrapper){const permissionManager=wrapper.slothlet.handlers?.permissionManager;if(!permissionManager||!permissionManager.isEnabled())return;const targetPath=wrapper.____slothletInternal.apiPath;const decision=resolveEnforcedCaller(wrapper);if(decision.verdict==="allow"){if(permissionManager.isPrivateTarget?.(targetPath)&&!permissionManager.enforceAccess(null,targetPath,null,wrapper.____slothletInternal.filePath,null)){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:null,target:targetPath})}return}if(decision.verdict==="deny"){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:null,target:targetPath})}const{callerWrapper,ctx}=decision;const callerPath=callerWrapper.____slothletInternal?.apiPath??"";const callerFilePath=callerWrapper.____slothletInternal?.filePath??null;const targetFilePath=wrapper.____slothletInternal.filePath??null;const runtimeContext=ctx?.context??null;if(!permissionManager.enforceAccess(callerPath,targetPath,callerFilePath,targetFilePath,runtimeContext)){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:callerPath,target:targetPath})}}const capturedViews=new WeakMap;function runtime_enforceCapturedCaller(wrapper,capturedCaller,targetPathOverride){const permissionManager=wrapper.slothlet.handlers?.permissionManager;if(!permissionManager||!permissionManager.isEnabled())return;const targetPath=targetPathOverride??wrapper.____slothletInternal.apiPath;const callerPath=capturedCaller.____slothletInternal?.apiPath??"";const callerFilePath=capturedCaller.____slothletInternal?.filePath??null;const targetFilePath=wrapper.____slothletInternal.filePath??null;const runtimeContext=wrapper.slothlet.contextManager?.tryGetContext?.()?.context??null;if(!permissionManager.enforceAccess(callerPath,targetPath,callerFilePath,targetFilePath,runtimeContext)){throw new wrapper.SlothletError("PERMISSION_DENIED",{caller:callerPath,target:targetPath})}}function runtime_capturedView(child,capturedCaller){let byChild=capturedViews.get(capturedCaller);if(!byChild){byChild=new WeakMap;capturedViews.set(capturedCaller,byChild)}const existing=byChild.get(child);if(existing)return existing;const inner=resolveWrapper(child);const view=new Proxy(child,{apply(target,thisArg,args){runtime_enforceCapturedCaller(inner,capturedCaller);return Reflect.apply(target,thisArg,args)},construct(target,args,newTarget){runtime_enforceCapturedCaller(inner,capturedCaller);return Reflect.construct(target,args,newTarget===view?target:newTarget)},get(target,prop){const resolved=Reflect.get(target,prop);if(resolved!==void 0&&typeof prop==="string"&&runtime_isTerminalData(resolved)){const context=inner.slothlet.contextManager?.tryGetContext?.()?.context??null;runtime_enforceReadGate(inner,prop,resolved,{currentWrapper:capturedCaller,context});return resolved}if(resolveWrapper(resolved)===null)return resolved;return runtime_capturedView(resolved,capturedCaller)}});byChild.set(child,view);return view}function runtime_bindCapturedIdentity(wrapper,prop,value){if(typeof prop!=="string")return value;if(value===null||typeof value!=="object"&&typeof value!=="function")return value;const permissionManager=wrapper.slothlet.handlers?.permissionManager;if(!permissionManager||!permissionManager.isEnabled())return value;if(permissionManager.isCaptureEnabled?.()===false)return value;const inner=resolveWrapper(value);if(inner===null)return value;const innerPath=inner.____slothletInternal?.apiPath;if(!innerPath||innerPath.split(".").pop()!==prop)return value;const capturedCaller=wrapper.slothlet.contextManager?.getCallerIdentity?.()?.currentWrapper;if(!capturedCaller)return value;return runtime_capturedView(value,capturedCaller)}function runtime_guardPromotedResult(promise,path,SlothletErrorCtor){const refuse=()=>{throw new SlothletErrorCtor("HOOK_PROMOTED_RESULT_NOT_AWAITED",{path},null,{validationError:true})};return new Proxy(promise,{get(target,prop,receiver){if(prop===Symbol.toPrimitive||prop==="valueOf"||prop==="toString"||prop==="toJSON"){return refuse}const value=Reflect.get(target,prop,receiver);if(prop==="then"||prop==="catch"||prop==="finally")return value.bind(target);return value}})}function unwrapError(error){if(error&&error.name==="SlothletError"&&error.originalError){return error.originalError}return error}const wrapperDebugEnabled=isNode&&(process.env.SLOTHLET_DEBUG_WRAPPER==="1"||process.env.SLOTHLET_DEBUG_WRAPPER==="true"||process.env.SLOTHLET_DEBUG_SCRIPT_VERBOSE==="1"||process.env.SLOTHLET_DEBUG_SCRIPT_VERBOSE==="true");const IMPL_METADATA_KEYS=new Set(["__childFilePaths","__filePath","__childFilePathsPreMaterialize"]);function isFrameworkReservedKey(key){if(typeof key!=="string")return false;return UnifiedWrapper.INTERNAL_KEYS.has(key)||IMPL_METADATA_KEYS.has(key)}const TYPE_STATES={UNMATERIALIZED:Symbol("unmaterialized"),IN_FLIGHT:Symbol("inFlight")};function getSafeFunctionName(apiPath,fallback){const parts=String(apiPath||"").split(".").filter(part=>part&&part!=="null");const baseName=parts.length>0?parts[parts.length-1]:"";let safeName=String(baseName||"").replace(/[^A-Za-z0-9_$]/g,"_");if(!safeName||!/^[A-Za-z_$]/.test(safeName[0])){safeName=safeName?`_${safeName}`:""}return safeName||fallback}function createNamedProxyTarget(nameHint,fallback){const safeName=getSafeFunctionName(nameHint,fallback);return{[safeName]:function(){}}[safeName]}const _proxyRegistry=new WeakMap;class UnifiedWrapper extends ComponentBase{#internal=null;get ____slothletInternal(){if(!(#internal in this))return void 0;return this.#internal}constructor(slothlet,{mode,apiPath,initialImpl=null,materializeFunc=null,isCallable,materializeOnCreate=false,filePath=null,moduleID=null,sourceFolder=null,__adoptVisited=null,deferChildAdopt=false}){super(slothlet);const isCallableExplicit=typeof isCallable==="boolean";const isCallableValue=isCallableExplicit?isCallable:typeof initialImpl==="function"||initialImpl&&typeof initialImpl.default==="function";const isCallableLocked=isCallableValue||isCallableExplicit;const internal=Object.create(null);internal.id=Math.random().toString(36).substr(2,9);internal.mode=mode;internal.apiPath=apiPath;internal.materializeOnCreate=materializeOnCreate;internal.isCallable=isCallableValue;internal.isCallableLocked=isCallableLocked;internal.moduleID=moduleID;internal.filePath=filePath;internal.sourceFolder=sourceFolder;internal.adoptVisited=__adoptVisited;internal.deferChildAdopt=deferChildAdopt;internal.invalid=false;internal.state={materialized:initialImpl!==null,inFlight:false,collisionMode:"merge"};internal.displayName=apiPath?`${String(apiPath).replace(/\./g,"__")}__UnifiedWrapper`:"UnifiedWrapper";this.#internal=internal;const wrapper=this;Object.defineProperty(internal,"wrapper",{get(){return wrapper},enumerable:false,configurable:false});internal.callableImpl=null;internal.waitingProxyCache=new Map;internal.waitingProxyCacheByContext=new WeakMap;internal.proxy=null;const isRootLiveIdentity=deferChildAdopt||EventEmitter&&initialImpl instanceof EventEmitter;internal.impl=isRootLiveIdentity?initialImpl:UnifiedWrapper._cloneImpl(initialImpl);internal.materializeFunc=materializeFunc;if(filePath&&slothlet.handlers?.lifecycle){slothlet.handlers.lifecycle.emit("impl:created",{apiPath,impl:this,wrapper:Object.freeze({__impl:this.____slothletInternal.impl}),source:"initial",moduleID,filePath,sourceFolder:sourceFolder||slothlet.config?.dir})}if(initialImpl!==null&&filePath&&slothlet.handlers?.lifecycle){slothlet.handlers.lifecycle.emit("impl:created",{apiPath,impl:initialImpl,wrapper:Object.freeze({__impl:this.____slothletInternal.impl}),source:"initial",moduleID,filePath,sourceFolder:sourceFolder||slothlet.config?.dir})}if(initialImpl!==null&&!deferChildAdopt){const implKeys=Object.keys(initialImpl||{});if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&apiPath&&(apiPath==="config"||apiPath.startsWith("config."))){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAPPER_CONSTRUCTOR_IMPL_KEYS",apiPath,keyCount:implKeys.length,keySample:implKeys.slice(0,5)})}this.___adoptImplChildren();if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&apiPath&&(apiPath==="config"||apiPath.startsWith("config."))){const childKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAPPER_CONSTRUCTOR_AFTER_ADOPT",apiPath,childCount:childKeys.length,childKeySample:childKeys.slice(0,5)})}}if(mode==="lazy"){slothlet._registerLazyWrapper();if(slothlet.config.tracking?.materialization){setImmediate(()=>{this._materialize().catch(err=>{if(slothlet.config?.debug?.materialize){slothlet.debug("materialize",{key:"DEBUG_MODE_BACKGROUND_MATERIALIZE_ERROR",apiPath:this.____slothletInternal?.apiPath,error:err.message})}})})}}}____inspectCustom(____depth,____options,____inspect){const w=_proxyRegistry.get(this)??this;const childKeys=Object.keys(w).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(childKeys.length>0&&!w.____slothletInternal?.isCallable){const inspectObj={};for(const key of childKeys){inspectObj[key]=w[key]}return inspectObj}if(w.____slothletInternal?.mode==="lazy"&&w.____slothletInternal?.state&&!w.____slothletInternal?.state.materialized&&w.____slothletInternal?.proxy){return w.____slothletInternal.proxy}return w.____slothletInternal?.impl}get __impl(){return this.____slothletInternal.impl}static _cloneImpl(value){if(value&&typeof value==="object"&&!Array.isArray(value)&&typeof value!=="function"){const isProxy=util.types.isProxy(value);if(isProxy){if(resolveWrapper(value)){const clone={};for(const key of Reflect.ownKeys(value)){try{clone[key]=value[key]}catch{}}return clone}return value}const uw_cloneDescriptors=Object.getOwnPropertyDescriptors(value);return Object.create(Object.getPrototypeOf(value),uw_cloneDescriptors)}return value}static _extractFullImpl(wrapper){if(!wrapper)return null;const impl=wrapper.____slothletInternal.impl;if(impl===null||impl===void 0)return impl;if(typeof impl!=="object"&&typeof impl!=="function")return impl;if(typeof impl==="function")return impl;if(Array.isArray(impl))return impl.slice();const extractFullImpl_result={};for(const key of Object.keys(impl)){if(isFrameworkReservedKey(key))continue;extractFullImpl_result[key]=impl[key]}if(impl.__childFilePaths){extractFullImpl_result.__childFilePaths=impl.__childFilePaths}if(impl.__childFilePathsPreMaterialize){extractFullImpl_result.__childFilePathsPreMaterialize=impl.__childFilePathsPreMaterialize}for(const key of Object.keys(wrapper)){if(UnifiedWrapper.INTERNAL_KEYS.has(key))continue;if(key in extractFullImpl_result)continue;const extractFullImpl_child=wrapper[key];const _extractChildW=resolveWrapper(extractFullImpl_child);if(_extractChildW){extractFullImpl_result[key]=UnifiedWrapper._extractFullImpl(_extractChildW)}else{extractFullImpl_result[key]=extractFullImpl_child}}return extractFullImpl_result}_applyNewImpl(newImpl,forceReuseChildren=false){this.____slothletInternal.impl=UnifiedWrapper._cloneImpl(newImpl);this.____slothletInternal.invalid=false;if(!this.____slothletInternal.isCallableLocked&&!this.____slothletInternal.isCallable&&(typeof newImpl==="function"||newImpl&&typeof newImpl.default==="function")){this.____slothletInternal.isCallable=true;this.____slothletInternal.isCallableLocked=true}if(!this.____slothletInternal.filePath&&this.____slothletInternal.impl&&this.____slothletInternal.impl.__filePath){this.____slothletInternal.filePath=this.____slothletInternal.impl.__filePath;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_APPLY_IMPL_UPDATE_PATH",apiPath:this.____slothletInternal.apiPath,filePath:this.____slothletInternal.filePath})}this.___adoptImplChildren(forceReuseChildren)}___setImpl(newImpl,moduleID=null,forceReuseChildren=false){if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_SETIMPL_CALLED",apiPath:this.____slothletInternal.apiPath,newImplKeys:Object.keys(newImpl||{})})}this._applyNewImpl(newImpl,forceReuseChildren);if(newImpl&&this.slothlet.handlers?.lifecycle){const wrapperMetadata=this.slothlet.handlers.metadata.getMetadata(this);const extractedModuleId=moduleID||wrapperMetadata?.baseModuleID||null;this.slothlet.handlers.lifecycle.emit("impl:changed",{apiPath:this.____slothletInternal.apiPath,impl:newImpl,wrapper:Object.freeze({__impl:this.____slothletInternal.impl}),source:"hot-reload",moduleID:extractedModuleId,filePath:wrapperMetadata?.filePath,sourceFolder:wrapperMetadata?.sourceFolder})}this.____slothletInternal.state.materialized=true;this.____slothletInternal.state.inFlight=false;if(this.slothlet._onWrapperMaterialized){this.slothlet._onWrapperMaterialized()}}___resetLazy(newMaterializeFunc){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_RESETLAZY_CALLED",apiPath:this.____slothletInternal.apiPath,hadImpl:this.____slothletInternal.impl!==null,hadChildren:Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__")).length});for(const key of Reflect.ownKeys(this)){if(typeof key==="string"&&(key.startsWith("_")||key.startsWith("__"))){continue}const child=this[key];const childRaw=resolveWrapper(child);if(childRaw){childRaw.___invalidate()}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}this.____slothletInternal.impl=null;this.____slothletInternal.invalid=false;this.____slothletInternal.state.materialized=false;this.____slothletInternal.state.inFlight=false;this.____slothletInternal.materializationPromise=null;this.____slothletInternal.materializeFunc=newMaterializeFunc;if(this.____slothletInternal.waitingProxyCache){this.____slothletInternal.waitingProxyCache.clear()}this.____slothletInternal.waitingProxyCacheByContext=new WeakMap;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_RESETLAZY_COMPLETE",apiPath:this.____slothletInternal.apiPath})}async ___materialize(){if(this.____slothletInternal.state.materialized){return}if(this.____slothletInternal.invalid){return}if(this.____slothletInternal.materializationPromise){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_AWAIT",apiPath:this.____slothletInternal.apiPath});return this.____slothletInternal.materializationPromise}if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_START",apiPath:this.apiPath})}this.____slothletInternal.materializationPromise=(async()=>{this.____slothletInternal.state.inFlight=true;try{if(this.____slothletInternal.materializeFunc){if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_CALLING_FUNC",apiPath:this.____slothletInternal.apiPath})}const lazy_setImpl=value=>{if(this.____slothletInternal.invalid)return;this._applyNewImpl(value)};const result=await this.____slothletInternal.materializeFunc(lazy_setImpl);if(this.____slothletInternal.invalid){return}if(!this.____slothletInternal.impl){this._applyNewImpl(result)}this.____slothletInternal.state.materialized=true;if(this.slothlet._onWrapperMaterialized){this.slothlet._onWrapperMaterialized()}if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_COMPLETE",apiPath:this.____slothletInternal.apiPath,resultType:typeof result,resultKeys:Object.keys(result||{})})}}}catch(error){if((wrapperDebugEnabled||this.____config?.debug?.wrapper)&&this.____slothletInternal.apiPath==="string"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_MATERIALIZE_ERROR",apiPath:this.____slothletInternal.apiPath,error:error.message})}throw error}finally{this.____slothletInternal.state.inFlight=false;this.____slothletInternal.materializationPromise=null}})();return this.____slothletInternal.materializationPromise}_materialize(){return this.___materialize()}___invalidate(){this.____slothletInternal.invalid=true;this.____slothletInternal.impl=null;for(const key of Reflect.ownKeys(this)){if(typeof key==="string"&&(key.startsWith("_")||key.startsWith("__"))){continue}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}}___adoptImplChildren(forceReuseChildren=false){const preExistingKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_START",apiPath:this.____slothletInternal.apiPath,wrapperId:this.____slothletInternal.id||"no-id",preExistingKeys:preExistingKeys.join(","),collisionMode:this.____slothletInternal.state.collisionMode});const threadedVisited=this.____slothletInternal.adoptVisited;this.____slothletInternal.adoptVisited=null;if(!this.____slothletInternal.impl||typeof this.____slothletInternal.impl!=="object"&&typeof this.____slothletInternal.impl!=="function"){return}if(util.types.isProxy(this.____slothletInternal.impl))return;if(Array.isArray(this.____slothletInternal.impl))return;if(EventEmitter&&this.____slothletInternal.impl instanceof EventEmitter)return;const adoptVisited=threadedVisited||new WeakSet;const ownKeys=Reflect.ownKeys(this.____slothletInternal.impl);const internalKeys=new Set(["__impl","___setImpl","___resetLazy","_materialize","_impl","_state","_invalid","____slothlet","____slothletInternal"]);const keepImplProperties=typeof this.____slothletInternal.impl==="function"||this.____slothletInternal.impl&&typeof this.____slothletInternal.impl==="object"&&typeof this.____slothletInternal.impl.default==="function";if(keepImplProperties&&this.____slothletInternal.impl&&typeof this.____slothletInternal.impl==="object"&&typeof this.____slothletInternal.impl.default==="function"){internalKeys.add("default")}const observedKeys=new Set;const existingKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));const storedCollisionMode=this.____slothletInternal.state.collisionMode;const isMergeScenario=storedCollisionMode!=="replace"&&existingKeys.length>0;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT",apiPath:this.____slothletInternal.apiPath,mode:this.____slothletInternal.mode,storedCollisionMode,existingKeys:existingKeys.join(","),isMergeScenario});const savedChildren=new Map;if(storedCollisionMode==="replace"&&existingKeys.length>0){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_REPLACE_CLEARING",count:existingKeys.length});for(const key of existingKeys){const child=this[key];if(resolveWrapper(child)!==null){savedChildren.set(key,child)}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}}else{for(const key of existingKeys){observedKeys.add(key)}}const metadataKeys=new Set(["__childFilePaths","__filePath","__childFilePathsPreMaterialize"]);const skipKeys=typeof this.____slothletInternal.impl==="function"?new Set(["length","name","prototype"]):null;for(const key of ownKeys){if(internalKeys.has(key)){continue}if(typeof key==="string"&&metadataKeys.has(key)){continue}if(skipKeys&&typeof key==="string"&&skipKeys.has(key)){continue}if(!this.____slothletInternal.impl||typeof this.____slothletInternal.impl!=="object"&&typeof this.____slothletInternal.impl!=="function"){break}const descriptor=Object.getOwnPropertyDescriptor(this.____slothletInternal.impl,key);if(!descriptor){continue}const value=this.____slothletInternal.impl[key];if(value===this.____slothletInternal.impl){continue}if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_PROCESS",apiPath:this.____slothletInternal.apiPath,propKey:key,typeOf:typeof value,valueName:value?.name})}observedKeys.add(key);if(hasOwn(this,key)&&!key.toString().startsWith("_")){if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_CHECK",apiPath:this.____slothletInternal.apiPath,propKey:key,has__collisionMergedKeys:!!this.____slothletInternal.collisionMergedKeys,inSet:this.____slothletInternal.collisionMergedKeys?.has(key)})}const isCollisionMerged=this.____slothletInternal.collisionMergedKeys&&this.____slothletInternal.collisionMergedKeys.has(key);if(isCollisionMerged&&!forceReuseChildren){if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED",apiPath:this.____slothletInternal.apiPath,propKey:key})}if(descriptor.configurable){delete this.____slothletInternal.impl[key]}continue}if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED",apiPath:this.____slothletInternal.apiPath,propKey:key})}}const existingChild=savedChildren.get(key)||this[key];let wrapped;const skipChildReuse=!forceReuseChildren&&this.____slothletInternal.mode==="lazy"&&storedCollisionMode==="replace";const existingChildUA=existingChild?resolveWrapper(existingChild):null;if(existingChildUA?.____slothletInternal?.userAssigned){wrapped=existingChild}else if(!skipChildReuse&&existingChild&&resolveWrapper(existingChild)!==null){if(resolveWrapper(value)!==null){const newWrapper=resolveWrapper(value);let rawImpl=newWrapper?newWrapper.____slothletInternal.impl:null;if(rawImpl&&typeof rawImpl==="object"&&!Array.isArray(rawImpl)&&typeof rawImpl!=="function"&&Object.keys(rawImpl).filter(k=>!k.startsWith("__")).length===0){const wrapperOwnKeys=Object.keys(newWrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(wrapperOwnKeys.length>0){rawImpl=UnifiedWrapper._extractFullImpl(newWrapper)}}if(rawImpl!==null&&rawImpl!==void 0){resolveWrapper(existingChild).___setImpl(rawImpl,this.____slothletInternal.moduleID,true)}else if(newWrapper&&newWrapper.____slothletInternal.materializeFunc){const existingChildWrapper=resolveWrapper(existingChild);if(existingChildWrapper){existingChildWrapper.___resetLazy(newWrapper.____slothletInternal.materializeFunc)}}wrapped=existingChild}else{resolveWrapper(existingChild).___setImpl(value,this.____slothletInternal.moduleID,true);wrapped=existingChild}if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER",apiPath:this.____slothletInternal.apiPath,propKey:key})}}else{wrapped=this.___createChildWrapper(key,value,adoptVisited,this.____slothletInternal.deferChildAdopt);if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_WRAP",apiPath:this.____slothletInternal.apiPath,propKey:key,wrapped:wrapped?"YES":wrapped===null?"NULL":"NO"})}}if(wrapped){const existing=this[key];const existingDescriptor=Object.getOwnPropertyDescriptor(this,key);if(existing===wrapped||existingDescriptor&&!existingDescriptor.configurable){if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:existingDescriptor&&!existingDescriptor.configurable?"DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE":"DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER",apiPath:this.____slothletInternal.apiPath,propKey:key})}}else{if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_DEFINE",apiPath:this.____slothletInternal.apiPath,propKey:key})}Object.defineProperty(this,key,{value:wrapped,writable:false,enumerable:true,configurable:true});if(typeof key!=="symbol"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_ADOPT_DEFINED",apiPath:this.____slothletInternal.apiPath,propKey:key})}}if(descriptor.configurable&&!keepImplProperties&&this.____slothletInternal.impl){delete this.____slothletInternal.impl[key]}}else if(wrapped===null&&this.____slothletInternal.deferChildAdopt&&(value===null||typeof value!=="object"&&typeof value!=="function")){Object.defineProperty(this,key,{get:()=>{const currentImpl=this.____slothletInternal.impl;return currentImpl?currentImpl[key]:void 0},set:newValue=>{const currentImpl=this.____slothletInternal.impl;if(currentImpl)currentImpl[key]=newValue},enumerable:true,configurable:true})}else if(wrapped===null){Object.defineProperty(this,key,{value,writable:false,enumerable:true,configurable:true});if(descriptor.configurable&&!keepImplProperties&&this.____slothletInternal.impl){delete this.____slothletInternal.impl[key]}}else{Object.defineProperty(this,key,{value,writable:false,enumerable:true,configurable:true});if(descriptor.configurable&&!keepImplProperties&&this.____slothletInternal.impl){delete this.____slothletInternal.impl[key]}}}if(!isMergeScenario){const currentKeys=Object.keys(this).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));for(const key of currentKeys){if(!observedKeys.has(key)){const existing=this[key];const existingRaw=resolveWrapper(existing);if(existingRaw){existingRaw.___invalidate()}const descriptor=Object.getOwnPropertyDescriptor(this,key);if(descriptor?.configurable){delete this[key]}}}}if(this._mergeAfterMaterialize){const{existingWrapper,isMergeReplace:____isMergeReplace}=this._mergeAfterMaterialize;const existingKeys2=Object.keys(existingWrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));for(const key of existingKeys2){if(!(key in this)||key.startsWith("_")||key.startsWith("__")){const child=existingWrapper[key];Object.defineProperty(this,key,{value:child,writable:false,enumerable:true,configurable:true})}}delete this._mergeAfterMaterialize}}___createChildWrapper(key,value,visited=null,deferChildAdopt=false){if(value===void 0){return void 0}if(value===null){return null}if(value&&resolveWrapper(value)!==null){return value}if(value instanceof Map||value instanceof Set||value instanceof WeakMap||value instanceof WeakSet||value instanceof Date||value instanceof RegExp||value instanceof Promise||value instanceof Error||ArrayBuffer.isView(value)||value instanceof ArrayBuffer){return null}if(deferChildAdopt&&typeof value!=="object"&&typeof value!=="function"){return null}const trackCycle=typeof value==="object"||typeof value==="function";if(trackCycle){visited??=new WeakSet;if(visited.has(value)){return null}}let childImpl=value;const isChildLiveIdentity=deferChildAdopt||EventEmitter&&childImpl instanceof EventEmitter;if(!isChildLiveIdentity&&childImpl&&typeof childImpl==="object"){if(Array.isArray(childImpl)){childImpl=childImpl.slice()}else{const descriptors=Object.getOwnPropertyDescriptors(childImpl);childImpl=Object.create(Object.getPrototypeOf(childImpl),descriptors)}}const parentMetadata=this.slothlet.handlers?.metadata?.getMetadata(this);const childExistingMetadata=this.slothlet.handlers?.metadata?.getMetadata(value);let childFilePath=childExistingMetadata?.filePath||null;let childModuleId=null;if(!childFilePath){const keyStr=typeof key==="symbol"?String(key):key;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_CHECK",apiPath:this.apiPath,propKey:keyStr,has_impl:!!this.____slothletInternal.impl,has__childFilePaths:!!(this.____slothletInternal.impl&&this.____slothletInternal.impl.__childFilePaths),has__childFilePathsPreMaterialize:!!this.____slothletInternal.childFilePathsPreMaterialize,parentFilePath:parentMetadata?.filePath});if(this.____slothletInternal.impl&&this.____slothletInternal.impl.__childFilePaths){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE",keys:Object.keys(this.____slothletInternal.impl.__childFilePaths).join(","),propKey:keyStr,found:!!this.____slothletInternal.impl.__childFilePaths[key]})}if(this.____slothletInternal.impl&&this.____slothletInternal.impl.__childFilePaths&&this.____slothletInternal.impl.__childFilePaths[key]){childFilePath=this.____slothletInternal.impl.__childFilePaths[key];this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_USING",childFilePath})}else if(this.____slothletInternal.childFilePathsPreMaterialize&&this.____slothletInternal.childFilePathsPreMaterialize[key]){childFilePath=this.____slothletInternal.childFilePathsPreMaterialize[key];this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT",childFilePath})}else{childFilePath=parentMetadata?.filePath||null;this.slothlet.debug("wrapper",{key:"DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK",childFilePath})}}if(parentMetadata?.baseModuleID){childModuleId=parentMetadata.baseModuleID}const childSourceFolder=childExistingMetadata?.sourceFolder||parentMetadata?.sourceFolder||null;if(trackCycle){visited.add(value)}let nestedWrapper;try{nestedWrapper=new UnifiedWrapper(this.slothlet,{mode:"eager",apiPath:this.____slothletInternal.apiPath?`${this.____slothletInternal.apiPath}.${typeof key==="symbol"?String(key):key}`:String(key),initialImpl:childImpl,isCallable:typeof childImpl==="function",filePath:childFilePath,moduleID:childModuleId,sourceFolder:childSourceFolder,__adoptVisited:visited,deferChildAdopt})}finally{if(trackCycle){visited.delete(value)}}return nestedWrapper.createProxy()}___createWaitingProxy(propChain=[]){const wrapper=this;const __readGateStore=wrapper.slothlet.contextManager?.tryGetContext?.();const __readGateCaller=__readGateStore?{currentWrapper:wrapper.slothlet.contextManager?.getCallerIdentity?.()?.currentWrapper??null,context:__readGateStore.context,[TRUSTED_ROOT]:__readGateStore[TRUSTED_ROOT]===true}:null;const __callerKey=__readGateCaller?.currentWrapper?.____slothletInternal?.apiPath??"";const cacheKey=`${__callerKey}::${propChain.join(".")}`;const __readGateContextRef=__readGateStore?.context??null;const useContextBucket=__readGateContextRef&&typeof __readGateContextRef==="object";let cache;if(useContextBucket){cache=wrapper.____slothletInternal.waitingProxyCacheByContext.get(__readGateContextRef);if(!cache){cache=new Map;wrapper.____slothletInternal.waitingProxyCacheByContext.set(__readGateContextRef,cache)}}else{cache=wrapper.____slothletInternal.waitingProxyCache}if(cache.has(cacheKey)){return cache.get(cacheKey)}const waitingTarget=createNamedProxyTarget(`${wrapper.____slothletInternal.apiPath}_waitingProxy`,"waitingProxyTarget");const waitingProxy=new Proxy(waitingTarget,{get(___target,prop){if(prop==="then"){return(onFulfilled,onRejected)=>{const waitingProxy_thenResolve=async()=>{if(!wrapper.____slothletInternal.state.materialized){await wrapper._materialize()}let current=wrapper;let __gateParent=null;let __gateProp=null;const __descendRest=(startValue,nextIndex)=>{let descended=startValue;for(let __di=nextIndex;__di<propChain.length;__di++){if(descended===null||descended===void 0)return void 0;descended=descended[propChain[__di]]}return descended};for(let __chainIndex=0;__chainIndex<propChain.length;__chainIndex++){const chainProp=propChain[__chainIndex];if(!current)return void 0;if(current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){let result=current.____slothletInternal.impl;for(let i=__chainIndex;i<propChain.length;i++){result=result[propChain[i]]}return result}const isInternal2=isFrameworkReservedKey(chainProp);if(!isInternal2&&hasOwn(current,chainProp)){const child=current[chainProp];const _childW=resolveWrapper(child);if(_childW){__gateParent=current;__gateProp=chainProp;current=_childW;if(current.____slothletInternal.mode==="lazy"&&!current.____slothletInternal.state.materialized){await current._materialize()}continue}if(__chainIndex<propChain.length-1){const descendedChild=__descendRest(child,__chainIndex+1);if(descendedChild!==void 0){runtime_enforceReadGate(current,propChain.slice(__chainIndex).join("."),descendedChild,__readGateCaller)}return descendedChild}runtime_enforceReadGate(current,chainProp,child,__readGateCaller);return child}if(current.____slothletInternal.impl&&current.____slothletInternal.impl[chainProp]!==void 0){const implValue=current.____slothletInternal.impl[chainProp];if(__chainIndex<propChain.length-1){const descendedImpl=__descendRest(implValue,__chainIndex+1);if(descendedImpl!==void 0){runtime_enforceReadGate(current,propChain.slice(__chainIndex).join("."),descendedImpl,__readGateCaller)}return descendedImpl}runtime_enforceReadGate(current,chainProp,implValue,__readGateCaller);return implValue}return void 0}if(current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){return current.____slothletInternal.impl}if(__gateParent){runtime_enforceReadGate(__gateParent,__gateProp,current.____slothletInternal.impl,__readGateCaller)}const finalImpl=current.____slothletInternal.impl;const callableCarriesWrapperMembers=typeof finalImpl==="function"&&Object.keys(current).some(key=>!isFrameworkReservedKey(key)&&!Object.prototype.hasOwnProperty.call(finalImpl,key));if(callableCarriesWrapperMembers||finalImpl!==null&&typeof finalImpl==="object"&&!Array.isArray(finalImpl)&&!runtime_isTerminalData(finalImpl)){const resolvedProxy=current.____slothletInternal.proxy;const __capturedReader=__readGateCaller?.currentWrapper??null;const __pm=wrapper.slothlet.handlers?.permissionManager;if(__capturedReader&&__pm&&__pm.isEnabled()&&__pm.isCaptureEnabled?.()!==false){return runtime_capturedView(resolvedProxy,__capturedReader)}return resolvedProxy}return finalImpl};waitingProxy_thenResolve().then(onFulfilled,onRejected)}}if(prop==="____slothletInternal")return void 0;if(prop==="_materialize")return wrapper._materialize.bind(wrapper);if(prop==="__mode")return wrapper.____slothletInternal.mode;if(prop==="__materialized")return wrapper.____slothletInternal.state.materialized;if(prop==="__inFlight")return wrapper.____slothletInternal.state.inFlight;if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(prop===util.inspect.custom){if(wrapper.____slothletInternal.state.inFlight){return waitingTarget}if(!wrapper.____slothletInternal.state.materialized){return waitingTarget}if(wrapper.____slothletInternal.impl){let current=wrapper.____slothletInternal.impl;for(const chainProp of propChain){if(!current){return void 0}current=current[chainProp]}return current}return waitingTarget}if(prop==="__type"){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE",apiPath:wrapper.apiPath,propChain:propChain.join(","),materialized:wrapper.____slothletInternal.state.materialized,hasImpl:wrapper.____slothletInternal.impl!==null});if(wrapper.____slothletInternal.state.materialized||wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0){let current=wrapper.createProxy();for(const chainProp of propChain){if(!current)break;const currentWrapper=resolveWrapper(current);if(currentWrapper){const isInternal2=isFrameworkReservedKey(chainProp);if(!isInternal2&&hasOwn(currentWrapper,chainProp)){current=currentWrapper[chainProp];wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER",chainProp:String(chainProp),typeOf:typeof current});continue}if(currentWrapper.____slothletInternal.impl&&typeof currentWrapper.____slothletInternal.impl==="object"&&currentWrapper.____slothletInternal.impl!==null&&chainProp in currentWrapper.____slothletInternal.impl){current=currentWrapper.____slothletInternal.impl[chainProp];wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_WALK_IMPL",chainProp:String(chainProp),typeOf:typeof current});continue}}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_WALK_DIRECT",chainProp:String(chainProp),typeOf:typeof current});current=current[chainProp]}const resolvedType=typeof current==="function"?"function":typeof current==="object"&&current!==null?"object":typeof current;wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_RESOLVED",apiPath:wrapper.apiPath,propChain:propChain.join(","),resolvedType});return resolvedType}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_TYPE_INFLIGHT",apiPath:wrapper.apiPath,propChain:propChain.join(",")});return TYPE_STATES.IN_FLIGHT}if(prop==="__metadata"){if(wrapper.slothlet.handlers?.metadata){return wrapper.slothlet.handlers.metadata.getMetadata(wrapper)}return{}}if(typeof prop==="symbol")return void 0;if(prop==="length"){return 0}if(prop==="name")return waitingTarget.name||"waitingProxyTarget";if(prop==="toString"){return Function.prototype.toString.bind(waitingTarget)}if(prop==="valueOf"){return Function.prototype.valueOf.bind(waitingTarget)}if(prop==="toJSON"){return()=>void 0}if(prop==="__slothletPath")return wrapper.____slothletInternal.apiPath;if(wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0&&typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){let result=wrapper.____slothletInternal.impl;for(const chainProp of propChain){result=result[chainProp]}return result[prop]}if(wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0){let current=wrapper;let remainingChain=[...propChain];for(let i=0;i<propChain.length;i++){const chainProp=propChain[i];if(current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){let proxyResult=current.____slothletInternal.impl;for(const remainingProp of remainingChain){proxyResult=proxyResult[remainingProp]}return proxyResult[prop]}const isInternal2=isFrameworkReservedKey(chainProp);if(!isInternal2&&current&&hasOwn(current,chainProp)){const cached=current[chainProp];const _cachedW2=resolveWrapper(cached);if(_cachedW2){current=_cachedW2;remainingChain.shift()}else{return void 0}}else{return void 0}}if(current&&current.____slothletInternal.impl&&typeof current.____slothletInternal.impl==="object"&&util.types.isProxy(current.____slothletInternal.impl)){return current.____slothletInternal.impl[prop]}const isFinalInternal=isFrameworkReservedKey(prop);if(!isFinalInternal&&hasOwn(current,prop)){return current[prop]}return void 0}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_PREMATURE",apiPath:wrapper.____slothletInternal.apiPath,prop});return wrapper[prop]}if(wrapper.____slothletInternal.needsImmediateChildAdoption&&wrapper.____slothletInternal.materializeFunc&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT",apiPath:wrapper.____slothletInternal.apiPath,prop});wrapper._materialize().catch(err=>{wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR",apiPath:wrapper.apiPath,error:err.message})});const isInternal2=isFrameworkReservedKey(prop);if(!isInternal2&&hasOwn(wrapper,prop)){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS",apiPath:wrapper.____slothletInternal.apiPath,prop});return wrapper[prop]}}if(wrapper.____slothletInternal.state.inFlight){return wrapper.___createWaitingProxy([...propChain,prop])}return wrapper.___createWaitingProxy([...propChain,prop])},async apply(___target,___thisArg,args){const ___liveCallerWrapper=wrapper.slothlet.contextManager?.getCallerIdentity?.()?.currentWrapper??null;const ___capture=wrapper.slothlet.handlers?.permissionManager?.isCaptureEnabled()!==false;const ___creationCallerWrapper=___capture?__readGateCaller?.currentWrapper??null:null;const ___capturedCallerWrapper=___liveCallerWrapper??___creationCallerWrapper;wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_ENTRY",apiPath:wrapper.____slothletInternal.apiPath,propChain:propChain.join(","),args:args.join(",")});const chainLabel=propChain.map(prop=>String(prop)).join(".");if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_MATERIALIZE",apiPath:wrapper.____slothletInternal.apiPath});await wrapper._materialize();wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_MATERIALIZED",apiPath:wrapper.____slothletInternal.apiPath})}else if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&wrapper.____slothletInternal.state.inFlight){if(wrapper.____slothletInternal.materializationPromise){await wrapper.____slothletInternal.materializationPromise}else{await wrapper._materialize()}}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_START_WALK",apiPath:wrapper.____slothletInternal.apiPath,propChain:propChain.join(",")});let current=wrapper.createProxy();let lastWrapper=wrapper;let lastObject=null;for(const prop of propChain){wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY_WALK",prop:String(prop),typeOf:typeof current,constructorName:current?.constructor?.name});if(!current){if(propChain.some(p=>typeof p==="symbol")){return void 0}if(wrapper.____slothletInternal.invalid||wrapper.____slothletInternal.impl===null||lastWrapper&&(lastWrapper.__invalid||lastWrapper._impl===null)){return void 0}const finalProp=propChain[propChain.length-1];if(finalProp==="hasAttribute"||finalProp==="toJSON"||finalProp===Symbol.toStringTag||finalProp==="constructor"||typeof finalProp==="symbol"||typeof prop==="symbol"){return void 0}throw new wrapper.slothlet.SlothletError("CHAIN_ACCESS_UNDEFINED",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel,prop:String(prop)},null,{validationError:true})}const currentWrapper=resolveWrapper(current);if(currentWrapper){const state=currentWrapper.____slothletInternal.state;if(!state.materialized){if(!state.inFlight&&typeof current._materialize==="function"){await current._materialize()}while(!currentWrapper.____slothletInternal.state.materialized){const nextState=currentWrapper.____slothletInternal.state;if(!nextState.inFlight&&!nextState.materialized){throw new wrapper.slothlet.SlothletError("CHAIN_MATERIALIZE_FAILED",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel,prop:String(prop)},null,{validationError:true})}await new Promise(resolve=>setImmediate(resolve))}}}if(currentWrapper){lastWrapper=currentWrapper;const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(currentWrapper,prop)){lastObject=current;current=currentWrapper[prop];continue}if(currentWrapper.____slothletInternal.impl&&typeof currentWrapper.____slothletInternal.impl==="object"&&currentWrapper.____slothletInternal.impl!==null&&prop in currentWrapper.____slothletInternal.impl){lastObject=currentWrapper.____slothletInternal.impl;current=currentWrapper.____slothletInternal.impl[prop];continue}}lastObject=current;current=current[prop]}wrapper.slothlet.debug("wrapper",{key:"DEBUG_MODE_WAITING_APPLY",apiPath:wrapper.____slothletInternal.apiPath,propChain:propChain.join(","),typeOf:typeof current,currentName:current?.name,isFunction:typeof current==="function"});if(typeof current==="function"){if(___creationCallerWrapper&&___creationCallerWrapper!==___capturedCallerWrapper){const ___resolvedInner=resolveWrapper(current);const ___targetPath=___resolvedInner?.____slothletInternal?.apiPath??[wrapper.____slothletInternal.apiPath,...propChain].filter(Boolean).join(".");runtime_enforceCapturedCaller(wrapper,___creationCallerWrapper,___targetPath)}if(___capturedCallerWrapper&&wrapper.slothlet.contextManager){const ___instanceStore=wrapper.slothlet.contextManager.instances?.get?.(wrapper.instanceID);if(___instanceStore&&!___instanceStore.currentWrapper){return wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,()=>Reflect.apply(current,lastObject,args),null,[],___capturedCallerWrapper,true)}}const ___identityStore=___capturedCallerWrapper?wrapper.slothlet.contextManager?.instances?.get?.(wrapper.instanceID):null;if(!___identityStore)return Reflect.apply(current,lastObject,args);const ___previousAuthoritative=___identityStore.__authoritativeWrapper;___identityStore.__authoritativeWrapper=___capturedCallerWrapper;try{return Reflect.apply(current,lastObject,args)}finally{___identityStore.__authoritativeWrapper=___previousAuthoritative}}const _finalChainProp=propChain[propChain.length-1];if(_finalChainProp==="hasAttribute"||_finalChainProp==="toJSON"){return void 0}if(current===void 0||current===null){throw new wrapper.slothlet.SlothletError("CHAIN_NOT_CALLABLE",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel},null,{validationError:true})}throw new wrapper.slothlet.SlothletError("CHAIN_NOT_CALLABLE",{apiPath:wrapper.____slothletInternal.apiPath,chainLabel},null,{validationError:true})},getPrototypeOf:()=>null});_proxyRegistry.set(waitingProxy,wrapper);cache.set(cacheKey,waitingProxy);return waitingProxy}createProxy(){const wrapper=this;if(wrapper.____slothletInternal.proxy){return wrapper.____slothletInternal.proxy}if(wrapper.____slothletInternal.materializeOnCreate&&wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&wrapper.____slothletInternal.materializeFunc){wrapper._materialize().catch(()=>{})}const mightBeCallable=wrapper.____slothletInternal.isCallable||wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.isCallableLocked;let proxyTarget;if(mightBeCallable){proxyTarget=createNamedProxyTarget(wrapper.____slothletInternal.apiPath,"callableProxy")}else if(Array.isArray(wrapper.____slothletInternal.impl)){proxyTarget=wrapper.____slothletInternal.impl}else{proxyTarget=wrapper}if(!Array.isArray(proxyTarget)&&!(util.inspect.custom in proxyTarget)){Object.defineProperty(proxyTarget,util.inspect.custom,{value:function(){const childKeys=Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(childKeys.length>0&&!wrapper.____slothletInternal.isCallable){const obj={};for(const key of childKeys){const child=wrapper[key];if(child&&typeof child.createProxy==="function"){obj[key]=child.createProxy()}else{obj[key]=child}}return obj}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&(wrapper.____slothletInternal.impl===null||wrapper.____slothletInternal.impl===void 0)){return wrapper.____slothletInternal.proxy||wrapper}return wrapper.____slothletInternal.impl},writable:false,enumerable:false,configurable:true})}const getTrap=(target,prop,____receiver)=>{const enforceReadGate=resolvedValue=>runtime_enforceReadGate(wrapper,prop,resolvedValue);if(target!==wrapper&&prop in target){const desc=Object.getOwnPropertyDescriptor(target,prop);if(desc&&!desc.configurable){if(typeof prop==="string"&&prop.startsWith("__")){return wrapper[prop]}return target[prop]}}if(target===wrapper&&typeof prop==="string"){const desc=Object.getOwnPropertyDescriptor(target,prop);if(desc&&!desc.configurable){return target[prop]}}const isInternalProp=isFrameworkReservedKey(prop);const allowedInternals=new Set(["_materialize","__mode","__apiPath","__isCallable","__materializeOnCreate","__displayName","__type","__materialized","__inFlight","__slothletPath","__metadata","__filePath","__sourceFolder","__moduleID"]);if(isInternalProp&&!allowedInternals.has(prop)){return void 0}if(prop==="power"||prop==="add"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_START",apiPath:wrapper.____slothletInternal.apiPath,prop:String(prop),mode:wrapper.____slothletInternal.mode,collisionMode:wrapper.____slothletInternal.state.collisionMode||"none",materialized:wrapper.____slothletInternal.state.materialized,hasImpl:wrapper.____slothletInternal.impl!==null,inWrapper:!isInternalProp&&hasOwn(wrapper,prop)})}if(prop==="__mode")return wrapper.____slothletInternal.mode;if(prop==="__apiPath")return wrapper.____slothletInternal.apiPath;if(prop==="__isCallable")return wrapper.____slothletInternal.isCallable;if(prop==="__materializeOnCreate")return wrapper.____slothletInternal.materializeOnCreate;if(prop==="__materialized")return wrapper.____slothletInternal.state.materialized;if(prop==="__inFlight")return wrapper.____slothletInternal.state.inFlight;if(prop==="__displayName")return wrapper.____slothletInternal.displayName;if(prop==="__type"){if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.inFlight){return TYPE_STATES.IN_FLIGHT}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized){return TYPE_STATES.UNMATERIALIZED}const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return"function"}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return"function"}if(impl&&typeof impl==="object"){return"object"}if(typeof impl==="string"){return"string"}if(typeof impl==="number"){return"number"}if(typeof impl==="boolean"){return"boolean"}if(typeof impl==="symbol"){return"symbol"}if(typeof impl==="bigint"){return"bigint"}return"undefined"}if(prop==="_materialize")return wrapper._materialize.bind(wrapper);if(prop==="__slothletPath")return wrapper.____slothletInternal.apiPath;if(prop==="__metadata"){if(wrapper.slothlet.handlers?.metadata){return wrapper.slothlet.handlers.metadata.getMetadata(wrapper)}return{}}if(prop==="__filePath")return wrapper.____slothletInternal.filePath??void 0;if(prop==="__sourceFolder")return wrapper.____slothletInternal.sourceFolder??void 0;if(prop==="__moduleID")return wrapper.____slothletInternal.moduleID??void 0;if(prop==="__invalid")return wrapper.____slothletInternal.invalid;{const arrImpl=wrapper.____slothletInternal.impl;if(Array.isArray(arrImpl)){const isIndex=typeof prop==="string"&&/^(?:0|[1-9]\d*)$/.test(prop);if(!isIndex){const arrValue=Reflect.get(arrImpl,prop,arrImpl);enforceReadGate(arrValue);return arrValue}}}if(prop==="then"){if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized){return(onFulfilled,onRejected)=>wrapper._materialize().then(()=>onFulfilled(wrapper.____slothletInternal.proxy)).catch(onRejected)}return void 0}if(prop==="constructor"){const internal=wrapper.____slothletInternal;const constructorImpl=internal.impl;const constructorIsLiveIdentity=internal.deferChildAdopt||EventEmitter&&constructorImpl instanceof EventEmitter;if(constructorIsLiveIdentity&&constructorImpl&&typeof constructorImpl==="object"&&constructorImpl.constructor){return constructorImpl.constructor}return Object.prototype.constructor}if(prop===util.inspect.custom){return()=>{const childKeys=Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__"));if(childKeys.length>0&&!wrapper.____slothletInternal.isCallable){const obj={};for(const key of childKeys){const child=wrapper[key];if(child&&typeof child.createProxy==="function"){obj[key]=child.createProxy()}else{obj[key]=child}}return obj}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&(wrapper.____slothletInternal.impl===null||wrapper.____slothletInternal.impl===void 0)){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_INSPECT_LAZY_UNMATERIALIZED",apiPath:wrapper.apiPath,wrapper,____proxy:wrapper.____slothletInternal.proxy});return wrapper||wrapper.____slothletInternal.proxy}return wrapper.____slothletInternal.impl}}if(prop===Symbol.toStringTag){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return"Function"}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return"Function"}return"Object"}if(typeof prop==="symbol")return void 0;if(prop==="length"){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return impl.length}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return impl.default.length}return 0}if(prop==="name"){if(wrapper.____slothletInternal.apiPath){const pathParts=wrapper.____slothletInternal.apiPath.split(".");const lastPart=pathParts[pathParts.length-1];if(lastPart){return lastPart}}return target.name||"unifiedWrapperProxy"}if(prop==="toString"){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return impl.toString.bind(impl)}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return impl.default.toString.bind(impl.default)}if(typeof target==="function"){return Function.prototype.toString.bind(target)}return()=>`[UnifiedWrapper: ${wrapper.____slothletInternal.apiPath}]`}if(prop==="valueOf"){const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){return impl.valueOf.bind(impl)}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){return impl.default.valueOf.bind(impl.default)}return Function.prototype.valueOf.bind(target)}if(prop==="toJSON"){const impl=wrapper.____slothletInternal.impl;if(impl&&typeof impl.toJSON==="function"){return impl.toJSON.bind(impl)}return()=>{const data=UnifiedWrapper._extractFullImpl(wrapper);if(data&&typeof data==="object"){delete data.__childFilePaths;delete data.__childFilePathsPreMaterialize}const pm=wrapper.slothlet.handlers?.permissionManager;if(pm&&pm.isEnabled()&&pm.isReadGatingEnabled()){runtime_redactSerialized(wrapper,data,wrapper.____slothletInternal.apiPath,new WeakSet)}return data}}if(wrapper.____slothletInternal.invalid){return void 0}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(hasOwn(wrapper,prop)){if(wrapper.____slothletInternal.state.collisionMode==="replace"&&(prop==="power"||prop==="add")){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_CACHED_REPLACE",apiPath:wrapper.apiPath,prop:String(prop),collisionMode:wrapper.____slothletInternal.state.collisionMode,wrapperKeys:Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__")).join(", ")})}this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_CACHED",apiPath:wrapper.____slothletInternal.apiPath,prop:String(prop),materialized:wrapper.____slothletInternal.state.materialized,hasImpl:wrapper.____slothletInternal.impl!==null});const cached=wrapper[prop];const _cachedWrapper=resolveWrapper(cached);if(_cachedWrapper?.____slothletInternal?.impl!==null&&_cachedWrapper?.____slothletInternal?.impl!==void 0){const cachedImpl=_cachedWrapper.____slothletInternal.impl;const cachedType=typeof cachedImpl;if(cachedType==="string"||cachedType==="number"||cachedType==="boolean"||cachedType==="bigint"||cachedType==="symbol"){enforceReadGate(cachedImpl);return cachedImpl}}if(_cachedWrapper){const cachedWrapper=_cachedWrapper;if(cachedWrapper.____slothletInternal.mode==="lazy"&&!cachedWrapper.____slothletInternal.state.materialized&&!cachedWrapper.____slothletInternal.state.inFlight){cachedWrapper._materialize().catch(()=>{})}}enforceReadGate(cached);return cached}if(wrapper.____slothletInternal.impl!==null&&wrapper.____slothletInternal.impl!==void 0){if(typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){return wrapper.____slothletInternal.impl[prop]}if(hasOwn(wrapper,prop)){if(prop==="power"||prop==="add"){this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_PROXYGET_ACCESSING",prop,wrapperId:wrapper.____slothletInternal.id,apiPath:wrapper.apiPath,collisionMode:wrapper.____slothletInternal.state.collisionMode||"none"});this.slothlet.debug("wrapper",{key:"DEBUG_MODE_GET_PROXYGET_FOUND",wrapperKeys:Object.keys(wrapper).filter(k=>!k.startsWith("_")&&!k.startsWith("__")).join(", ")})}const cached=wrapper[prop];const _cachedWrapper4=resolveWrapper(cached);if(_cachedWrapper4){const cachedWrapper=_cachedWrapper4;if(cachedWrapper.____slothletInternal.mode==="lazy"&&!cachedWrapper.____slothletInternal.state.materialized&&!cachedWrapper.____slothletInternal.state.inFlight){cachedWrapper._materialize().catch(()=>{})}}enforceReadGate(cached);return cached}}const isInternalProp2=typeof prop==="string"&&UnifiedWrapper.INTERNAL_KEYS.has(prop);if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.materialized&&!isInternalProp2&&!hasOwn(wrapper,prop)&&wrapper.____slothletInternal.impl&&!(prop in wrapper.____slothletInternal.impl)){return void 0}if(wrapper.____slothletInternal.mode==="lazy"&&(wrapper.____slothletInternal.state.inFlight||!wrapper.____slothletInternal.impl)){if(!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}this.slothlet.debug("wrapper",{key:"DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY",prop:String(prop),collisionMode:wrapper.____slothletInternal.state.collisionMode||"none",apiPath:wrapper.____slothletInternal.apiPath});if(wrapper.____slothletInternal.impl&&typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){const value2=wrapper.____slothletInternal.impl[prop];return value2}return wrapper.___createWaitingProxy([prop])}if(wrapper.____slothletInternal.impl&&typeof wrapper.____slothletInternal.impl==="object"&&util.types.isProxy(wrapper.____slothletInternal.impl)){const value2=wrapper.____slothletInternal.impl[prop];return value2}let value=wrapper.____slothletInternal.impl?wrapper.____slothletInternal.impl[prop]:void 0;if(value===void 0&&wrapper.____slothletInternal.impl){const descriptor=Object.getOwnPropertyDescriptor(wrapper.____slothletInternal.impl,prop);if(descriptor&&descriptor.get){value=descriptor.get.call(wrapper.____slothletInternal.impl)}}if(value===void 0&&Object.prototype.hasOwnProperty.call(target,prop)){value=target[prop]}if(value===void 0){return void 0}enforceReadGate(value);const valueType=typeof value;if(value===null||valueType==="string"||valueType==="number"||valueType==="boolean"||valueType==="bigint"||valueType==="symbol"){return value}if(value instanceof Map||value instanceof Set||value instanceof WeakMap||value instanceof WeakSet||value instanceof Date||value instanceof RegExp||value instanceof Promise||value instanceof Error||ArrayBuffer.isView(value)||value instanceof ArrayBuffer){return value}if(value&&typeof value==="object"&&util.types.isProxy(value)){return value}if(value&&(typeof value==="object"||typeof value==="function")&&resolveWrapper(value)!==null){return value}const currentImpl=wrapper.____slothletInternal.impl;if(typeof currentImpl==="function"&&!Object.prototype.propertyIsEnumerable.call(currentImpl,prop)){return value}const wrapped=wrapper.___createChildWrapper(prop,value,null,wrapper.____slothletInternal.deferChildAdopt);if(wrapped){Object.defineProperty(wrapper,prop,{value:wrapped,writable:false,enumerable:true,configurable:true});return wrapped}return value};const applyTrap=(target,thisArg,args)=>{if(wrapper.____slothletInternal.invalid){throw new TypeError(`${wrapper.____slothletInternal.apiPath||"api"} is invalidated`)}const thisArgWrapper=resolveWrapper(thisArg);const thisArgImpl=thisArgWrapper?.____slothletInternal?.impl;const thisArgImplIsUsable=thisArgImpl!==null&&(typeof thisArgImpl==="object"||typeof thisArgImpl==="function");const thisArgIsLiveIdentity=thisArgWrapper&&thisArgImplIsUsable&&(thisArgWrapper.____slothletInternal.deferChildAdopt||EventEmitter&&thisArgImpl instanceof EventEmitter);const effectiveThisArg=thisArgIsLiveIdentity?thisArgImpl:thisArg;enforcePermission(wrapper);const hookManager=wrapper.slothlet.handlers?.hookManager;const hasHooks=hookManager&&hookManager.enabled&&!wrapper.____slothletInternal.apiPath.startsWith("slothlet.hook");const api=wrapper.slothlet.boundApi;const ctx=wrapper.slothlet.config?.context||{};if(hasHooks){const ___strategy=hookManager.getDispatchStrategy(wrapper.____slothletInternal.apiPath);if(___strategy.asyncBefore||___strategy.asyncAfter){const ___path=wrapper.____slothletInternal.apiPath;const ___leafIsAsync=util.types.isAsyncFunction(wrapper.____slothletInternal.impl)||util.types.isAsyncFunction(wrapper.____slothletInternal.impl?.default);const ___promotedRun=(async()=>{let beforeResult;try{beforeResult=await hookManager.executeBeforeHooksAsync(___path,args,api,ctx)}catch(error){hookManager.executeAlwaysHooks(___path,args,void 0,true,[unwrapError(error)],api,ctx);throw error}args=beforeResult.args;if(beforeResult.shortCircuit){hookManager.executeAlwaysHooks(___path,args,beforeResult.value,false,[],api,ctx);return beforeResult.value}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized){await wrapper._materialize()}const impl=wrapper.____slothletInternal.impl;let settled;try{let raw;if(typeof impl==="function"){raw=wrapper.slothlet.contextManager?wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl,effectiveThisArg,args,wrapper):impl.apply(effectiveThisArg,args)}else if(impl&&typeof impl==="object"&&typeof impl.default==="function"){raw=wrapper.slothlet.contextManager?wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl.default,impl,args,wrapper):impl.default.apply(impl,args)}else{throw new wrapper.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:___path,actualType:typeof impl},null,{validationError:true})}settled=raw&&typeof raw==="object"&&typeof raw.then==="function"?await raw:raw}catch(error){const originalError=unwrapError(error);if(!error[ERROR_HOOK_PROCESSED]){const sourceInfo={type:"function",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(___path,originalError,sourceInfo,args,api,ctx)}hookManager.executeAlwaysHooks(___path,args,void 0,true,[originalError],api,ctx);if(wrapper.slothlet.config?.hook?.suppressErrors===true)return void 0;throw error}let promotedFinal;try{const afterResult=await hookManager.executeAfterHooksAsync(___path,settled,args,api,ctx);promotedFinal=afterResult.modified?afterResult.result:settled}catch(error){hookManager.executeAlwaysHooks(___path,args,void 0,true,[unwrapError(error)],api,ctx);throw error}hookManager.executeAlwaysHooks(___path,args,promotedFinal,false,[],api,ctx);return promotedFinal})();return ___leafIsAsync?___promotedRun:runtime_guardPromotedResult(___promotedRun,___path,wrapper.SlothletError)}}let result;let finalResult;let isAsync=false;let lastSyncError=null;try{if(hasHooks){const beforeResult=hookManager.executeBeforeHooks(wrapper.____slothletInternal.apiPath,args,api,ctx);args=beforeResult.args;if(beforeResult.shortCircuit){finalResult=beforeResult.value;return beforeResult.value}}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.inFlight){return new Promise((resolve,reject)=>{const checkMaterialized=()=>{if(wrapper.____slothletInternal.state.materialized){const impl2=wrapper.____slothletInternal.impl;try{if(typeof impl2==="function"){if(wrapper.slothlet.contextManager){resolve(wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl2,effectiveThisArg,args,wrapper,true))}else{resolve(impl2.apply(effectiveThisArg,args))}}else if(impl2&&typeof impl2==="object"&&typeof impl2.default==="function"){if(wrapper.contextManager){resolve(wrapper.contextManager.runInContext(wrapper.instanceID,impl2.default,impl2,args,wrapper,true))}else{resolve(impl2.default.apply(impl2,args))}}else{reject(new wrapper.slothlet.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl2},null,{validationError:true}))}}catch(err){reject(err)}return}if(!wrapper.____slothletInternal.state.inFlight){reject(new wrapper.slothlet.SlothletError("INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED",{apiPath:wrapper.____slothletInternal.apiPath},null,{validationError:true}));return}setImmediate(checkMaterialized)};checkMaterialized()})}const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){if(wrapper.slothlet.contextManager){result=wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl,effectiveThisArg,args,wrapper,true)}else{result=impl.apply(effectiveThisArg,args)}}else if(impl&&typeof impl==="object"&&typeof impl.default==="function"){if(wrapper.slothlet.contextManager){result=wrapper.slothlet.contextManager.runInContext(wrapper.instanceID,impl.default,impl,args,wrapper,true)}else{result=impl.default.apply(impl,args)}}else{throw new wrapper.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl},null,{validationError:true})}if(result&&typeof result==="object"&&typeof result.then==="function"){isAsync=true;return result.then(resolvedResult=>{try{if(hasHooks){const afterResult=hookManager.executeAfterHooks(wrapper.____slothletInternal.apiPath,resolvedResult,args,api,ctx);const finalResult2=afterResult.modified?afterResult.result:resolvedResult;hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,finalResult2,false,[],api,ctx);return finalResult2}return resolvedResult}catch(error){if(hasHooks){const originalError=unwrapError(error);const sourceInfo={type:"after",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(wrapper.____slothletInternal.apiPath,originalError,sourceInfo,args,api,ctx);hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,void 0,true,[originalError],api,ctx)}const suppressErrors=wrapper.slothlet.config?.hook?.suppressErrors===true;if(suppressErrors){return void 0}throw error}},error=>{if(hasHooks&&!error[ERROR_HOOK_PROCESSED]){const originalError=unwrapError(error);const sourceInfo={type:"function",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(wrapper.____slothletInternal.apiPath,originalError,sourceInfo,args,api,ctx)}if(hasHooks){const originalError=unwrapError(error);hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,void 0,true,[originalError],api,ctx)}const suppressErrors=wrapper.slothlet.config?.hook?.suppressErrors===true;if(suppressErrors){return void 0}throw error})}finalResult=result;if(hasHooks){const afterResult=hookManager.executeAfterHooks(wrapper.____slothletInternal.apiPath,result,args,api,ctx);if(afterResult.modified){finalResult=afterResult.result}}return finalResult}catch(error){lastSyncError=error;if(hasHooks&&!error[ERROR_HOOK_PROCESSED]){const originalError=unwrapError(error);const sourceInfo={type:"function",timestamp:Date.now(),stack:originalError.stack};hookManager.executeErrorHooks(wrapper.____slothletInternal.apiPath,originalError,sourceInfo,args,api,ctx)}const suppressErrors=wrapper.slothlet.config?.hook?.suppressErrors===true;if(suppressErrors){return void 0}throw error}finally{if(hasHooks&&!isAsync){const syncError=lastSyncError;const resultValue=syncError?void 0:typeof finalResult!=="undefined"?finalResult:result;const errors=syncError?[unwrapError(syncError)]:[];hookManager.executeAlwaysHooks(wrapper.____slothletInternal.apiPath,args,resultValue,!!syncError,errors,api,ctx)}}};const hasTrap=(target,prop)=>{if(prop==="_materialize"){return true}if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){return true}if(!isInternal&&wrapper.____slothletInternal.impl&&(typeof wrapper.____slothletInternal.impl==="object"||typeof wrapper.____slothletInternal.impl==="function")&&prop in wrapper.____slothletInternal.impl){return true}return Object.prototype.hasOwnProperty.call(target,prop)};const getOwnPropertyDescriptorTrap=(target,prop)=>{if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(prop==="____slothletInternal")return void 0;if(prop==="prototype"&&typeof target==="function"){const desc=Object.getOwnPropertyDescriptor(target,"prototype");if(desc){return desc}}const ownDesc=Object.getOwnPropertyDescriptor(target,prop);if((!ownDesc||ownDesc.configurable)&&runtime_isReadRedacted(wrapper,prop)){return void 0}if(Object.prototype.hasOwnProperty.call(target,prop)){return Object.getOwnPropertyDescriptor(target,prop)}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){const desc=Object.getOwnPropertyDescriptor(wrapper,prop);if(desc){return desc}}if(!isInternal&&wrapper.____slothletInternal.impl&&(typeof wrapper.____slothletInternal.impl==="object"||typeof wrapper.____slothletInternal.impl==="function")&&prop in wrapper.____slothletInternal.impl){return Object.getOwnPropertyDescriptor(wrapper.____slothletInternal.impl,prop)}return void 0};const ownKeysTrap=target=>{if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}const keys=new Set;if(typeof target==="function"||target&&target.__isCallable){keys.add("prototype");keys.add("length");keys.add("name")}for(const key of Reflect.ownKeys(target)){const descriptor=Object.getOwnPropertyDescriptor(target,key);if(!descriptor.configurable||descriptor.enumerable){keys.add(key)}}if(target!==wrapper){for(const key of Reflect.ownKeys(wrapper)){const descriptor=Object.getOwnPropertyDescriptor(wrapper,key);if(descriptor&&descriptor.enumerable){keys.add(key)}}}const implKeys=wrapper.____slothletInternal.impl&&(typeof wrapper.____slothletInternal.impl==="object"||typeof wrapper.____slothletInternal.impl==="function")?Reflect.ownKeys(wrapper.____slothletInternal.impl):[];for(const key of implKeys){if(key!=="prototype"&&!IMPL_METADATA_KEYS.has(key)){keys.add(key)}}for(const key of keys){const targetDesc=Object.getOwnPropertyDescriptor(target,key);if(targetDesc&&!targetDesc.configurable)continue;if(runtime_isReadRedacted(wrapper,key))keys.delete(key)}return Array.from(keys)};const setTrap=(target,prop,value)=>{if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize()}if(UnifiedWrapper.INTERNAL_KEYS.has(prop)&&prop!=="_materialize")return true;const internalKeys=new Set(["_materialize"]);if(!internalKeys.has(prop)){const isObjectOrFunctionValue=value!==null&&(typeof value==="object"||typeof value==="function");if(!isObjectOrFunctionValue){const liveImpl=wrapper.____slothletInternal.impl;const isLiveIdentityWrapper=wrapper.____slothletInternal.deferChildAdopt||EventEmitter&&liveImpl instanceof EventEmitter;const hasLiveImpl=isLiveIdentityWrapper&&liveImpl!==null&&liveImpl!==void 0&&(typeof liveImpl==="object"||typeof liveImpl==="function");if(hasLiveImpl){const setSucceeded=Reflect.set(liveImpl,prop,value);if(!setSucceeded)return false;const existingDescriptor=Object.getOwnPropertyDescriptor(wrapper,prop);if(!existingDescriptor||typeof existingDescriptor.set!=="function"){Object.defineProperty(wrapper,prop,{get:()=>{const currentImpl=wrapper.____slothletInternal.impl;return currentImpl?currentImpl[prop]:void 0},set:newValue=>{const currentImpl=wrapper.____slothletInternal.impl;if(currentImpl)currentImpl[prop]=newValue},enumerable:true,configurable:true})}return true}}if(hasOwn(wrapper,prop)){delete wrapper[prop]}let stored=value;const inBuild=wrapper.slothlet.____buildDepth>0;if(!inBuild&&value!==null&&(typeof value==="object"||typeof value==="function")&&!util.types.isProxy(value)&&resolveWrapper(value)===null){const wrapped=wrapper.___createChildWrapper(prop,value,null,true);if(wrapped!==null&&wrapped!==void 0){const wrappedInternal=resolveWrapper(wrapped);if(wrappedInternal)wrappedInternal.____slothletInternal.userAssigned=true;stored=wrapped}}Object.defineProperty(wrapper,prop,{value:stored,writable:false,enumerable:true,configurable:true})}else{target[prop]=value}return true};const deletePropertyTrap=(target,prop)=>{const internalKeys=new Set(["____slothletInternal","__impl","___setImpl","___resetLazy","_materialize","___invalidate","_impl","___getState","__state","__mode","__apiPath","__slothletPath","__isCallable","__materializeOnCreate","__displayName","__type","__metadata","__invalid","__filePath","__sourceFolder","__moduleID","__materialized","__inFlight"]);if(internalKeys.has(prop)){return true}const isInternal=isFrameworkReservedKey(prop);if(!isInternal&&hasOwn(wrapper,prop)){const childWrapper=wrapper[prop];const childWrapperRaw=resolveWrapper(childWrapper);if(childWrapperRaw){childWrapperRaw.___invalidate()}const descriptor=Object.getOwnPropertyDescriptor(wrapper,prop);if(descriptor?.configurable){delete wrapper[prop]}}if(wrapper.____slothletInternal.impl&&typeof wrapper.____slothletInternal.impl==="object"&&prop in wrapper.____slothletInternal.impl){delete wrapper.____slothletInternal.impl[prop]}delete target[prop];return true};const constructTrap=(target,args,newTarget)=>{if(wrapper.____slothletInternal.invalid){throw new TypeError(`${wrapper.____slothletInternal.apiPath||"api"} is invalidated`)}enforcePermission(wrapper);if(wrapper.____slothletInternal.mode==="lazy"&&!wrapper.____slothletInternal.state.materialized&&!wrapper.____slothletInternal.state.inFlight){wrapper._materialize().catch(()=>{})}if(wrapper.____slothletInternal.mode==="lazy"&&wrapper.____slothletInternal.state.inFlight){return Promise.resolve(wrapper.____slothletInternal.materializationPromise).then(()=>{if(!wrapper.____slothletInternal.state.materialized){throw new wrapper.slothlet.SlothletError("INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED",{apiPath:wrapper.____slothletInternal.apiPath},null,{validationError:true})}const impl2=wrapper.____slothletInternal.impl;if(typeof impl2==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl2:newTarget;return Reflect.construct(impl2,args,effectiveNewTarget)}if(impl2&&typeof impl2==="object"&&typeof impl2.default==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl2.default:newTarget;return Reflect.construct(impl2.default,args,effectiveNewTarget)}throw new wrapper.slothlet.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl2},null,{validationError:true})})}const impl=wrapper.____slothletInternal.impl;if(typeof impl==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl:newTarget;return Reflect.construct(impl,args,effectiveNewTarget)}if(impl&&typeof impl==="object"&&typeof impl.default==="function"){const effectiveNewTarget=newTarget===wrapper.____slothletInternal.proxy?impl.default:newTarget;return Reflect.construct(impl.default,args,effectiveNewTarget)}throw new wrapper.SlothletError("INVALID_CONFIG_NOT_A_FUNCTION",{apiPath:wrapper.____slothletInternal.apiPath,actualType:typeof impl},null,{validationError:true})};wrapper.____slothletInternal.proxy=new Proxy(proxyTarget,{get:(target,prop,receiver)=>runtime_bindCapturedIdentity(wrapper,prop,getTrap(target,prop,receiver)),apply:applyTrap,construct:constructTrap,has:hasTrap,getOwnPropertyDescriptor:getOwnPropertyDescriptorTrap,ownKeys:ownKeysTrap,set:setTrap,deleteProperty:deletePropertyTrap,getPrototypeOf:target=>{const internal=wrapper.____slothletInternal;const impl=internal.impl;if(Array.isArray(impl))return Array.prototype;if(!Reflect.isExtensible(target))return Reflect.getPrototypeOf(target);const isLiveIdentity=internal.deferChildAdopt||EventEmitter&&impl instanceof EventEmitter;if(isLiveIdentity&&impl&&typeof impl==="object")return Object.getPrototypeOf(impl);return null}});_proxyRegistry.set(wrapper.____slothletInternal.proxy,wrapper);genuineWrappers.add(wrapper);return wrapper.____slothletInternal.proxy}}Object.defineProperty(UnifiedWrapper.prototype,util.inspect.custom,{value:UnifiedWrapper.prototype.____inspectCustom,writable:true,enumerable:false,configurable:true});function resolveWrapper(value){if(!value)return null;const registered=_proxyRegistry.get(value);if(registered)return registered;if(value instanceof UnifiedWrapper&&value.____slothletInternal!=null)return value;return null}export{IMPL_METADATA_KEYS,TYPE_STATES,UnifiedWrapper,isFrameworkReservedKey,resolveWrapper};
@@ -14,4 +14,4 @@
14
14
  limitations under the License.
15
15
  */
16
16
 
17
- import{ComponentBase}from"#factories/component-base";import{SlothletError}from"@cldmv/slothlet/errors";import{isNode as IS_NODE}from"@cldmv/slothlet/helpers/platform";function normalizeHookConfig(hook){const hookConfig={enabled:false,pattern:"**",suppressErrors:false,pin:true};if(hook===true||hook===false){hookConfig.enabled=hook;hookConfig.pattern=hook?"**":null}else if(typeof hook==="string"){hookConfig.enabled=true;hookConfig.pattern=hook}else if(hook&&typeof hook==="object"){hookConfig.enabled=hook.enabled!==false;hookConfig.pattern=hook.pattern||"**";hookConfig.suppressErrors=hook.suppressErrors||false;hookConfig.pin=hook.pin!==false}return hookConfig}class Config extends ComponentBase{static slothletProperty="config";normalizeCollision(collision){const validModes=["skip","warn","replace","merge","merge-replace","error"];const defaultMode="merge";if(typeof collision==="string"){const normalized=collision.toLowerCase();const mode=validModes.includes(normalized)?normalized:defaultMode;return{initial:mode,api:mode}}if(collision&&typeof collision==="object"){const validateMode=m=>{if(!m)return defaultMode;const normalized=String(m).toLowerCase();return validModes.includes(normalized)?normalized:defaultMode};return{initial:validateMode(collision.initial),api:validateMode(collision.api)}}return{initial:defaultMode,api:defaultMode}}normalizeRuntime(runtime){if(!runtime||typeof runtime!=="string"){return"async"}const normalized=runtime.toLowerCase().trim();if(normalized==="async"||normalized==="asynclocal"||normalized==="asynclocalstorage"){return"async"}if(normalized==="live"||normalized==="livebindings"||normalized==="experimental"){return"live"}return"async"}normalizeMode(mode){if(!mode||typeof mode!=="string"){return"eager"}const normalized=mode.toLowerCase().trim();if(normalized==="lazy"||normalized==="deferred"||normalized==="proxy"){return"lazy"}if(normalized==="eager"||normalized==="immediate"||normalized==="preload"){return"eager"}return"eager"}normalizeMutations(mutations){const defaults={add:true,remove:true,reload:true,permissions:true};if(!mutations||typeof mutations!=="object"){return defaults}return{add:mutations.add===false?false:true,remove:mutations.remove===false?false:true,reload:mutations.reload===false?false:true,permissions:mutations.permissions===false?false:true}}normalizeDebug(debug){if(!debug){return{builder:false,api:false,index:false,modes:false,wrapper:false,ownership:false,context:false,initialization:false,materialize:false,versioning:false,permissions:false}}if(debug===true){return{builder:true,api:true,index:true,modes:true,wrapper:true,ownership:true,context:true,initialization:true,materialize:true,versioning:true,permissions:true}}if(typeof debug==="object"){return{builder:debug.builder||false,api:debug.api||false,index:debug.index||false,modes:debug.modes||false,wrapper:debug.wrapper||false,ownership:debug.ownership||false,context:debug.context||false,initialization:debug.initialization||false,materialize:debug.materialize||false,versioning:debug.versioning||false,permissions:debug.permissions||false}}return{builder:false,api:false,index:false,modes:false,wrapper:false,ownership:false,context:false,initialization:false,materialize:false,versioning:false,permissions:false}}normalizeEnvTarget(platform,hasManifest=false){if(platform==="browser")return"browser";if(platform==="node")return"node";if(hasManifest)return"browser";return IS_NODE?"node":"browser"}normalizeHook(hook){return normalizeHookConfig(hook)}transformConfig(config={}){const hasManifest=config.manifest!=null;const envTarget=this.normalizeEnvTarget(config.platform,hasManifest);const rawBase=config.base??config.dir;if(config.dir!==void 0&&config.base===void 0&&!config.silent){new this.SlothletWarning("V3_CONFIG_DEPRECATED",{option:"dir",replacement:"base"})}if(!rawBase){throw new this.SlothletError("INVALID_CONFIG_DIR_MISSING",{},null,{validationError:true})}if(envTarget==="browser"){if(!config.manifest||typeof config.manifest!=="object"||Array.isArray(config.manifest)){throw new this.SlothletError("INVALID_CONFIG_BROWSER_REQUIRES_MANIFEST",{},null,{validationError:true})}if(!Array.isArray(config.manifest.files)||!Array.isArray(config.manifest.directories)){throw new this.SlothletError("INVALID_CONFIG_BROWSER_MANIFEST_INVALID",{received:typeof config.manifest},null,{validationError:true})}if(config.resolveModuleSpecifier!==void 0&&config.resolveModuleSpecifier!==null&&typeof config.resolveModuleSpecifier!=="function"){throw new this.SlothletError("INVALID_CONFIG_BROWSER_RESOLVE_SPECIFIER_INVALID",{received:typeof config.resolveModuleSpecifier},null,{validationError:true})}}const resolvedDir=envTarget==="browser"?rawBase:this.slothlet.helpers.resolver.resolvePathFromCaller(rawBase);let mutations=null;if(config.allowMutation===false){mutations={add:false,remove:false,reload:false};if(!config.silent){new this.SlothletWarning("V3_CONFIG_DEPRECATED",{option:"allowMutation",replacement:"api.mutations: { add: false, remove: false, reload: false }"})}}let collision=null;if(config.collision&&!config.api?.collision){collision=this.normalizeCollision(config.collision);if(!config.silent){new this.SlothletWarning("V3_CONFIG_DEPRECATED",{option:"collision",replacement:"api.collision"})}}const apiConfig=config.api||{};const finalCollision=apiConfig.collision?this.normalizeCollision(apiConfig.collision):collision||this.normalizeCollision(null);const finalMutations=apiConfig.mutations?this.normalizeMutations(apiConfig.mutations):mutations||this.normalizeMutations(null);let scopeConfig=config.scope;if(scopeConfig&&typeof scopeConfig==="object"&&scopeConfig.merge){const validMergeStrategies=["shallow","deep"];if(!validMergeStrategies.includes(scopeConfig.merge)){throw new this.SlothletError("INVALID_CONFIG",{option:"scope.merge",value:scopeConfig.merge,expected:validMergeStrategies.join(" or "),hint:`Invalid merge strategy: "${scopeConfig.merge}". Must be "shallow" or "deep".`,validationError:true},null,{validationError:true})}}const hookConfig=this.normalizeHook(config.hook);let trackingConfig={materialization:false};if(config.tracking===true||config.tracking===false){trackingConfig.materialization=config.tracking}else if(config.tracking&&typeof config.tracking==="object"){trackingConfig.materialization=config.tracking.materialization===true}if(config.backgroundMaterialize===true){trackingConfig.materialization=true}if(config.import!==void 0&&config.import!==null&&typeof config.import!=="function"){throw new this.SlothletError("INVALID_CONFIG_IMPORT",{received:typeof config.import,validationError:true})}if(config.versionDispatcher!==void 0&&config.versionDispatcher!==null){if(typeof config.versionDispatcher!=="string"&&typeof config.versionDispatcher!=="function"){throw new this.SlothletError("INVALID_CONFIG_VERSION_DISPATCHER",{received:typeof config.versionDispatcher,validationError:true})}}const permissionsConfig=this.normalizePermissions(config.permissions);const suppressFixes=this.normalizeSuppressFixes(config.suppressFixes,config.silent);let i18nConfig=null;if(config.i18n&&typeof config.i18n==="object"){i18nConfig={language:typeof config.i18n.language==="string"?config.i18n.language:void 0}}const lifecycleConfig=this.normalizeLifecycle(config.lifecycle);return{...config,base:resolvedDir,dir:resolvedDir,manifest:config.manifest??null,resolveModuleSpecifier:config.resolveModuleSpecifier??null,envTarget,mode:this.normalizeMode(config.mode),runtime:this.normalizeRuntime(config.runtime),apiDepth:config.apiDepth!==void 0?config.apiDepth:Infinity,reference:config.reference||null,context:config.context||null,i18n:i18nConfig,lifecycle:lifecycleConfig,debug:this.normalizeDebug(config.debug),diagnostics:config.diagnostics===true,collectLifecycleHooks:config.collectLifecycleHooks===true,hook:hookConfig,collision:finalCollision,api:{collision:finalCollision,mutations:finalMutations},scope:scopeConfig,tracking:trackingConfig,backgroundMaterialize:config.backgroundMaterialize===true,silent:config.silent===true,typescript:this.normalizeTypeScript(config.typescript),env:this.normalizeEnv(config.env),versionDispatcher:config.versionDispatcher??null,import:config.import??null,permissions:permissionsConfig,suppressFixes}}normalizeSuppressFixes(suppressFixes,silent){const KNOWN_FIX_IDS=new Set(["C03_116"]);const REPO_PR_BASE="https://github.com/CLDMV/slothlet/pull/";if(!Array.isArray(suppressFixes)||suppressFixes.length===0){return new Set}const result=new Set;for(const rule of suppressFixes){if(typeof rule!=="string"||!KNOWN_FIX_IDS.has(rule)){continue}result.add(rule);if(!silent){const prNumber=rule.split("_").pop();const url=`${REPO_PR_BASE}${prNumber}`;new this.SlothletWarning("WARN_SUPPRESS_FIX_ACTIVE",{rule,url})}}return result}normalizeTypeScript(typescript){if(!typescript){return null}if(typescript===true){return{enabled:true,mode:"fast"}}if(typeof typescript==="string"){const mode=typescript.toLowerCase();if(mode==="fast"||mode==="strict"){return{enabled:true,mode}}return{enabled:true,mode:"fast"}}if(typeof typescript==="object"){const mode=typescript.mode==="strict"?"strict":"fast";return{enabled:true,mode,types:typescript.types||null,target:typescript.target||"es2020",sourcemap:typescript.sourcemap||false}}return null}normalizeEnv(env){if(!env||typeof env!=="object"){return null}const include=Array.isArray(env.include)?env.include.filter(k=>typeof k==="string"):null;if(include&&include.length>0){return{include}}return null}normalizeLifecycle(lifecycle){if(lifecycle===void 0||lifecycle===null){return null}if(typeof lifecycle!=="object"||Array.isArray(lifecycle)){throw new this.SlothletError("INVALID_CONFIG",{option:"lifecycle",value:Array.isArray(lifecycle)?"array":typeof lifecycle,expected:"a plain object mapping event names to functions or arrays of functions",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}const lifecycleProto=Object.getPrototypeOf(lifecycle);if(lifecycleProto!==null&&lifecycleProto!==Object.prototype){throw new this.SlothletError("INVALID_CONFIG",{option:"lifecycle",value:lifecycle?.constructor?.name?`${lifecycle.constructor.name} instance`:"non-plain object",expected:"a plain object mapping event names to functions or arrays of functions",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}for(const[event,handler]of Object.entries(lifecycle)){const handlers=Array.isArray(handler)?handler:[handler];for(const fn of handlers){if(typeof fn!=="function"){throw new this.SlothletError("INVALID_CONFIG",{option:`lifecycle["${event}"]`,value:typeof fn,expected:"a function or an array of functions",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}}}return lifecycle}normalizePermissions(permissions){if(!permissions||typeof permissions!=="object"){return null}let defaultPolicy;if(permissions.defaultPolicy==="deny"){defaultPolicy="deny"}else if(permissions.defaultPolicy==="allow"||permissions.defaultPolicy===void 0){defaultPolicy="allow"}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.defaultPolicy",value:permissions.defaultPolicy,expected:'"allow" or "deny"',hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}const enabled=permissions.enabled!==false;let audit;if(permissions.audit==="verbose"){audit="verbose"}else if(permissions.audit==="default"||permissions.audit===void 0){audit="default"}else if(permissions.audit===true){audit="default"}else if(permissions.audit===false){audit="default"}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.audit",value:permissions.audit,expected:'"default" or "verbose"',hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let readGating;if(permissions.readGating===false){readGating=false}else if(permissions.readGating===true||permissions.readGating===void 0){readGating=true}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.readGating",value:permissions.readGating,expected:"boolean",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let failOpenOnAbsentCaller;if(permissions.failOpenOnAbsentCaller===true){failOpenOnAbsentCaller=true}else if(permissions.failOpenOnAbsentCaller===false||permissions.failOpenOnAbsentCaller===void 0){failOpenOnAbsentCaller=false}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.failOpenOnAbsentCaller",value:permissions.failOpenOnAbsentCaller,expected:"boolean",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}if(permissions.references!==void 0&&(typeof permissions.references!=="object"||permissions.references===null||Array.isArray(permissions.references))){throw new SlothletError("INVALID_CONFIG",{option:"permissions.references",value:permissions.references,expected:"object",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let capture;if(permissions.references?.capture===false){capture=false}else if(permissions.references?.capture===true||permissions.references?.capture===void 0){capture=true}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.references.capture",value:permissions.references.capture,expected:"boolean",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}if(permissions.rules!==void 0&&!Array.isArray(permissions.rules)){throw new SlothletError("INVALID_CONFIG",{option:"permissions.rules",value:permissions.rules,expected:"array",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}const rules=Array.isArray(permissions.rules)?permissions.rules:[];if(permissions.private!==void 0&&(typeof permissions.private!=="object"||permissions.private===null||Array.isArray(permissions.private))){throw new SlothletError("INVALID_CONFIG",{option:"permissions.private",value:permissions.private,expected:"object",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let privateHost;if(permissions.private?.host==="allow"){privateHost="allow"}else if(permissions.private?.host==="deny"||permissions.private?.host===void 0){privateHost="deny"}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.private.host",value:permissions.private.host,expected:'"deny" or "allow"',hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}return{defaultPolicy,enabled,audit,readGating,failOpenOnAbsentCaller,references:{capture},private:{host:privateHost},rules}}}export{Config,normalizeHookConfig};
17
+ import{ComponentBase}from"#factories/component-base";import{SlothletError}from"@cldmv/slothlet/errors";import{isNode as IS_NODE}from"@cldmv/slothlet/helpers/platform";import{DEFAULT_API_DEPTH,DEFAULT_ROUTINES}from"@cldmv/slothlet/helpers/defaults";import{compilePattern}from"@cldmv/slothlet/helpers/pattern-matcher";const VALID_ROUTINE_MODES=new Set(["manual","startup","shutdown","destroy"]);const VALID_ROUTINE_ORDERS=new Set(["mount","depth"]);const DEFAULT_ROUTINE_ORDER_BY_MODE=Object.freeze({startup:"mount",shutdown:"depth",destroy:"depth",manual:"mount"});const COLLECT_LIFECYCLE_HOOKS_IMPLICIT_ROUTINES=Object.freeze([Object.freeze({name:"^**.shutdown",mode:"shutdown",order:"depth"}),Object.freeze({name:"^**.destroy",mode:"destroy",order:"depth"})]);const ROUTINE_NAME_RESERVED=new Set(["slothlet","__proto__","constructor","prototype"]);function normalizeHookConfig(hook){const hookConfig={enabled:false,pattern:"**",suppressErrors:false,pin:true};if(hook===true||hook===false){hookConfig.enabled=hook;hookConfig.pattern=hook?"**":null}else if(typeof hook==="string"){hookConfig.enabled=true;hookConfig.pattern=hook}else if(hook&&typeof hook==="object"){hookConfig.enabled=hook.enabled!==false;hookConfig.pattern=hook.pattern||"**";hookConfig.suppressErrors=hook.suppressErrors||false;hookConfig.pin=hook.pin!==false}return hookConfig}class Config extends ComponentBase{static slothletProperty="config";normalizeCollision(collision){const validModes=["skip","warn","replace","merge","merge-replace","error"];const defaultMode="merge";if(typeof collision==="string"){const normalized=collision.toLowerCase();const mode=validModes.includes(normalized)?normalized:defaultMode;return{initial:mode,api:mode}}if(collision&&typeof collision==="object"){const validateMode=m=>{if(!m)return defaultMode;const normalized=String(m).toLowerCase();return validModes.includes(normalized)?normalized:defaultMode};return{initial:validateMode(collision.initial),api:validateMode(collision.api)}}return{initial:defaultMode,api:defaultMode}}normalizeRuntime(runtime){if(!runtime||typeof runtime!=="string"){return"async"}const normalized=runtime.toLowerCase().trim();if(normalized==="async"||normalized==="asynclocal"||normalized==="asynclocalstorage"){return"async"}if(normalized==="live"||normalized==="livebindings"||normalized==="experimental"){return"live"}return"async"}normalizeMode(mode){if(!mode||typeof mode!=="string"){return"eager"}const normalized=mode.toLowerCase().trim();if(normalized==="lazy"||normalized==="deferred"||normalized==="proxy"){return"lazy"}if(normalized==="eager"||normalized==="immediate"||normalized==="preload"){return"eager"}return"eager"}normalizeMutations(mutations){const defaults={add:true,remove:true,reload:true,permissions:true};if(!mutations||typeof mutations!=="object"){return defaults}return{add:mutations.add===false?false:true,remove:mutations.remove===false?false:true,reload:mutations.reload===false?false:true,permissions:mutations.permissions===false?false:true}}normalizeDebug(debug){if(!debug){return{builder:false,api:false,index:false,modes:false,wrapper:false,ownership:false,context:false,initialization:false,materialize:false,versioning:false,permissions:false}}if(debug===true){return{builder:true,api:true,index:true,modes:true,wrapper:true,ownership:true,context:true,initialization:true,materialize:true,versioning:true,permissions:true}}if(typeof debug==="object"){return{builder:debug.builder||false,api:debug.api||false,index:debug.index||false,modes:debug.modes||false,wrapper:debug.wrapper||false,ownership:debug.ownership||false,context:debug.context||false,initialization:debug.initialization||false,materialize:debug.materialize||false,versioning:debug.versioning||false,permissions:debug.permissions||false}}return{builder:false,api:false,index:false,modes:false,wrapper:false,ownership:false,context:false,initialization:false,materialize:false,versioning:false,permissions:false}}normalizeEnvTarget(platform,hasManifest=false){if(platform==="browser")return"browser";if(platform==="node")return"node";if(hasManifest)return"browser";return IS_NODE?"node":"browser"}normalizeHook(hook){return normalizeHookConfig(hook)}transformConfig(config={}){const hasManifest=config.manifest!=null;const envTarget=this.normalizeEnvTarget(config.platform,hasManifest);const rawBase=config.base??config.dir;if(config.dir!==void 0&&config.base===void 0&&!config.silent){new this.SlothletWarning("V3_CONFIG_DEPRECATED",{option:"dir",replacement:"base"})}if(!rawBase){throw new this.SlothletError("INVALID_CONFIG_DIR_MISSING",{},null,{validationError:true})}if(envTarget==="browser"){if(!config.manifest||typeof config.manifest!=="object"||Array.isArray(config.manifest)){throw new this.SlothletError("INVALID_CONFIG_BROWSER_REQUIRES_MANIFEST",{},null,{validationError:true})}if(!Array.isArray(config.manifest.files)||!Array.isArray(config.manifest.directories)){throw new this.SlothletError("INVALID_CONFIG_BROWSER_MANIFEST_INVALID",{received:typeof config.manifest},null,{validationError:true})}if(config.resolveModuleSpecifier!==void 0&&config.resolveModuleSpecifier!==null&&typeof config.resolveModuleSpecifier!=="function"){throw new this.SlothletError("INVALID_CONFIG_BROWSER_RESOLVE_SPECIFIER_INVALID",{received:typeof config.resolveModuleSpecifier},null,{validationError:true})}}const resolvedDir=envTarget==="browser"?rawBase:this.slothlet.helpers.resolver.resolvePathFromCaller(rawBase);let mutations=null;if(config.allowMutation===false){mutations={add:false,remove:false,reload:false};if(!config.silent){new this.SlothletWarning("V3_CONFIG_DEPRECATED",{option:"allowMutation",replacement:"api.mutations: { add: false, remove: false, reload: false }"})}}let collision=null;if(config.collision&&!config.api?.collision){collision=this.normalizeCollision(config.collision);if(!config.silent){new this.SlothletWarning("V3_CONFIG_DEPRECATED",{option:"collision",replacement:"api.collision"})}}const apiConfig=config.api||{};const finalCollision=apiConfig.collision?this.normalizeCollision(apiConfig.collision):collision||this.normalizeCollision(null);const finalMutations=apiConfig.mutations?this.normalizeMutations(apiConfig.mutations):mutations||this.normalizeMutations(null);let scopeConfig=config.scope;if(scopeConfig&&typeof scopeConfig==="object"&&scopeConfig.merge){const validMergeStrategies=["shallow","deep"];if(!validMergeStrategies.includes(scopeConfig.merge)){throw new this.SlothletError("INVALID_CONFIG",{option:"scope.merge",value:scopeConfig.merge,expected:validMergeStrategies.join(" or "),hint:`Invalid merge strategy: "${scopeConfig.merge}". Must be "shallow" or "deep".`,validationError:true},null,{validationError:true})}}const hookConfig=this.normalizeHook(config.hook);let trackingConfig={materialization:false};if(config.tracking===true||config.tracking===false){trackingConfig.materialization=config.tracking}else if(config.tracking&&typeof config.tracking==="object"){trackingConfig.materialization=config.tracking.materialization===true}if(config.backgroundMaterialize===true){trackingConfig.materialization=true}if(config.import!==void 0&&config.import!==null&&typeof config.import!=="function"){throw new this.SlothletError("INVALID_CONFIG_IMPORT",{received:typeof config.import,validationError:true})}if(config.versionDispatcher!==void 0&&config.versionDispatcher!==null){if(typeof config.versionDispatcher!=="string"&&typeof config.versionDispatcher!=="function"){throw new this.SlothletError("INVALID_CONFIG_VERSION_DISPATCHER",{received:typeof config.versionDispatcher,validationError:true})}}const permissionsConfig=this.normalizePermissions(config.permissions);const suppressFixes=this.normalizeSuppressFixes(config.suppressFixes,config.silent);let i18nConfig=null;if(config.i18n&&typeof config.i18n==="object"){i18nConfig={language:typeof config.i18n.language==="string"?config.i18n.language:void 0}}const lifecycleConfig=this.normalizeLifecycle(config.lifecycle);if(config.collectLifecycleHooks!==void 0&&config.autoRoutines===void 0&&!config.silent){new this.SlothletWarning("V3_CONFIG_DEPRECATED",{option:"collectLifecycleHooks",replacement:"autoRoutines"})}const autoRoutines=config.autoRoutines!==void 0?config.autoRoutines===true:config.collectLifecycleHooks===true;const normalizedRoutines=this.normalizeRoutines(config.routines);const routines=config.collectLifecycleHooks===true?[...normalizedRoutines.filter(routine=>routine.mode!=="shutdown"&&routine.mode!=="destroy"),...COLLECT_LIFECYCLE_HOOKS_IMPLICIT_ROUTINES.filter(implicit=>!normalizedRoutines.some(routine=>routine.name===implicit.name)).map(implicit=>({...implicit,recursive:false}))]:normalizedRoutines;return{...config,base:resolvedDir,dir:resolvedDir,manifest:config.manifest??null,resolveModuleSpecifier:config.resolveModuleSpecifier??null,envTarget,mode:this.normalizeMode(config.mode),runtime:this.normalizeRuntime(config.runtime),apiDepth:config.apiDepth!==void 0?config.apiDepth:DEFAULT_API_DEPTH,reference:config.reference||null,context:config.context||null,i18n:i18nConfig,lifecycle:lifecycleConfig,routines,debug:this.normalizeDebug(config.debug),diagnostics:config.diagnostics===true,collectLifecycleHooks:config.collectLifecycleHooks===true,autoRoutines,stackRoutines:config.stackRoutines===true,hook:hookConfig,collision:finalCollision,api:{collision:finalCollision,mutations:finalMutations},scope:scopeConfig,tracking:trackingConfig,backgroundMaterialize:config.backgroundMaterialize===true,silent:config.silent===true,typescript:this.normalizeTypeScript(config.typescript),env:this.normalizeEnv(config.env),versionDispatcher:config.versionDispatcher??null,import:config.import??null,permissions:permissionsConfig,suppressFixes}}normalizeSuppressFixes(suppressFixes,silent){const KNOWN_FIX_IDS=new Set(["C03_116"]);const REPO_PR_BASE="https://github.com/CLDMV/slothlet/pull/";if(!Array.isArray(suppressFixes)||suppressFixes.length===0){return new Set}const result=new Set;for(const rule of suppressFixes){if(typeof rule!=="string"||!KNOWN_FIX_IDS.has(rule)){continue}result.add(rule);if(!silent){const prNumber=rule.split("_").pop();const url=`${REPO_PR_BASE}${prNumber}`;new this.SlothletWarning("WARN_SUPPRESS_FIX_ACTIVE",{rule,url})}}return result}normalizeTypeScript(typescript){if(!typescript){return null}if(typescript===true){return{enabled:true,mode:"fast"}}if(typeof typescript==="string"){const mode=typescript.toLowerCase();if(mode==="fast"||mode==="strict"){return{enabled:true,mode}}return{enabled:true,mode:"fast"}}if(typeof typescript==="object"){const mode=typescript.mode==="strict"?"strict":"fast";return{enabled:true,mode,types:typescript.types||null,target:typescript.target||"es2020",sourcemap:typescript.sourcemap||false}}return null}normalizeEnv(env){if(!env||typeof env!=="object"){return null}const include=Array.isArray(env.include)?env.include.filter(k=>typeof k==="string"):null;if(include&&include.length>0){return{include}}return null}normalizeLifecycle(lifecycle){if(lifecycle===void 0||lifecycle===null){return null}if(typeof lifecycle!=="object"||Array.isArray(lifecycle)){throw new this.SlothletError("INVALID_CONFIG",{option:"lifecycle",value:Array.isArray(lifecycle)?"array":typeof lifecycle,expected:"a plain object mapping event names to functions or arrays of functions",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}const lifecycleProto=Object.getPrototypeOf(lifecycle);if(lifecycleProto!==null&&lifecycleProto!==Object.prototype){throw new this.SlothletError("INVALID_CONFIG",{option:"lifecycle",value:lifecycle?.constructor?.name?`${lifecycle.constructor.name} instance`:"non-plain object",expected:"a plain object mapping event names to functions or arrays of functions",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}for(const[event,handler]of Object.entries(lifecycle)){const handlers=Array.isArray(handler)?handler:[handler];for(const fn of handlers){if(typeof fn!=="function"){throw new this.SlothletError("INVALID_CONFIG",{option:`lifecycle["${event}"]`,value:typeof fn,expected:"a function or an array of functions",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}}}return lifecycle}normalizeRoutines(routines){if(routines===void 0){return DEFAULT_ROUTINES.map(entry=>({name:entry.name,mode:entry.mode,recursive:entry.recursive??false,order:entry.order??DEFAULT_ROUTINE_ORDER_BY_MODE[entry.mode]}))}if(routines===null){return[]}if(!Array.isArray(routines)){throw new this.SlothletError("INVALID_CONFIG",{option:"routines",value:typeof routines,expected:'an array of routine names/objects, e.g. ["initialize", "shutdown:shutdown", { name: "warmup" }]',hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}return routines.map((entry,index)=>{let name;let mode;if(typeof entry==="string"){const sepIndex=entry.indexOf(":");if(sepIndex===-1){name=entry;mode="manual"}else{name=entry.slice(0,sepIndex);mode=entry.slice(sepIndex+1)}}else if(entry&&typeof entry==="object"&&!Array.isArray(entry)){name=entry.name;mode=entry.mode??"manual"}else{throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}]`,value:Array.isArray(entry)?"array":typeof entry,expected:'a string ("name" or "name:mode") or an object ({ name, mode? })',hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}if(typeof name!=="string"||name.length===0){throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}].name`,value:typeof name,expected:"a non-empty string",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}if(ROUTINE_NAME_RESERVED.has(name)){throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}].name`,value:name,expected:`a name other than the reserved: ${[...ROUTINE_NAME_RESERVED].join(", ")}`,hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}if(!VALID_ROUTINE_MODES.has(mode)){throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}].mode`,value:String(mode),expected:`one of: ${[...VALID_ROUTINE_MODES].join(", ")}`,hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}const recursive=typeof entry==="object"?entry.recursive??false:false;if(typeof recursive!=="boolean"){throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}].recursive`,value:typeof recursive,expected:"a boolean",hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}const pattern=name.startsWith("^")?name.slice(1):name;if(pattern.length===0){throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}].name`,value:name,expected:'a root-anchored name with a pattern after the `^` (a bare "^" matches nothing)',hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}try{compilePattern(pattern)}catch(error){throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}].name`,value:name,expected:`a name that compiles as a valid glob pattern (see helpers/pattern-matcher.mjs): ${error.message}`,hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}const order=typeof entry==="object"&&entry.order!==void 0?entry.order:DEFAULT_ROUTINE_ORDER_BY_MODE[mode];if(!VALID_ROUTINE_ORDERS.has(order)){throw new this.SlothletError("INVALID_CONFIG",{option:`routines[${index}].order`,value:String(order),expected:`one of: ${[...VALID_ROUTINE_ORDERS].join(", ")}`,hint:"HINT_INVALID_CONFIG",validationError:true},null,{validationError:true})}return{name,mode,recursive,order}})}normalizePermissions(permissions){if(!permissions||typeof permissions!=="object"){return null}let defaultPolicy;if(permissions.defaultPolicy==="deny"){defaultPolicy="deny"}else if(permissions.defaultPolicy==="allow"||permissions.defaultPolicy===void 0){defaultPolicy="allow"}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.defaultPolicy",value:permissions.defaultPolicy,expected:'"allow" or "deny"',hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}const enabled=permissions.enabled!==false;let audit;if(permissions.audit==="verbose"){audit="verbose"}else if(permissions.audit==="default"||permissions.audit===void 0){audit="default"}else if(permissions.audit===true){audit="default"}else if(permissions.audit===false){audit="default"}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.audit",value:permissions.audit,expected:'"default" or "verbose"',hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let readGating;if(permissions.readGating===false){readGating=false}else if(permissions.readGating===true||permissions.readGating===void 0){readGating=true}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.readGating",value:permissions.readGating,expected:"boolean",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let failOpenOnAbsentCaller;if(permissions.failOpenOnAbsentCaller===true){failOpenOnAbsentCaller=true}else if(permissions.failOpenOnAbsentCaller===false||permissions.failOpenOnAbsentCaller===void 0){failOpenOnAbsentCaller=false}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.failOpenOnAbsentCaller",value:permissions.failOpenOnAbsentCaller,expected:"boolean",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}if(permissions.references!==void 0&&(typeof permissions.references!=="object"||permissions.references===null||Array.isArray(permissions.references))){throw new SlothletError("INVALID_CONFIG",{option:"permissions.references",value:permissions.references,expected:"object",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let capture;if(permissions.references?.capture===false){capture=false}else if(permissions.references?.capture===true||permissions.references?.capture===void 0){capture=true}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.references.capture",value:permissions.references.capture,expected:"boolean",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}if(permissions.rules!==void 0&&!Array.isArray(permissions.rules)){throw new SlothletError("INVALID_CONFIG",{option:"permissions.rules",value:permissions.rules,expected:"array",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}const rules=Array.isArray(permissions.rules)?permissions.rules:[];if(permissions.private!==void 0&&(typeof permissions.private!=="object"||permissions.private===null||Array.isArray(permissions.private))){throw new SlothletError("INVALID_CONFIG",{option:"permissions.private",value:permissions.private,expected:"object",hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}let privateHost;if(permissions.private?.host==="allow"){privateHost="allow"}else if(permissions.private?.host==="deny"||permissions.private?.host===void 0){privateHost="deny"}else{throw new SlothletError("INVALID_CONFIG",{option:"permissions.private.host",value:permissions.private.host,expected:'"deny" or "allow"',hint:"HINT_INVALID_CONFIG"},null,{validationError:true})}return{defaultPolicy,enabled,audit,readGating,failOpenOnAbsentCaller,references:{capture},private:{host:privateHost},rules}}}export{Config,normalizeHookConfig};
@@ -0,0 +1,17 @@
1
+ /*
2
+ Copyright 2026 CLDMV/Shinrai
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ import{ComponentBase}from"#factories/component-base";import{IMPL_METADATA_KEYS}from"#handlers/unified-wrapper";const DEFAULT_API_DEPTH=Infinity;const DEFAULT_ROUTINES=Object.freeze([Object.freeze({name:"initialize",mode:"startup"}),Object.freeze({name:"shutdown",mode:"shutdown"})]);function freezeSet(set){Object.freeze(set);return new Proxy(set,{get(target,prop){if(prop==="add"||prop==="delete"||prop==="clear"){return()=>{throw new TypeError("This Set is frozen and cannot be mutated.")}}const value=Reflect.get(target,prop,target);return typeof value==="function"?value.bind(target):value}})}const RESERVED_EXPORTS=freezeSet(new Set([...ComponentBase.INTERNAL_KEYS,...IMPL_METADATA_KEYS]));export{DEFAULT_API_DEPTH,DEFAULT_ROUTINES,RESERVED_EXPORTS};
@@ -0,0 +1,17 @@
1
+ /*
2
+ Copyright 2026 CLDMV/Shinrai
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ import{pinToCurrentCaller}from"@cldmv/slothlet/helpers/caller-pinning";const PATCHED_INTERFACES=[["EventSource",["onopen","onmessage","onerror"]],["WebSocket",["onopen","onmessage","onerror","onclose"]],["Worker",["onmessage","onmessageerror","onerror"]],["MessagePort",["onmessage","onmessageerror"]],["FileReader",["onloadstart","onprogress","onabort","onerror","onload","onloadend"]],["XMLHttpRequest",["onreadystatechange","onloadstart","onprogress","onabort","onerror","onload","ontimeout","onloadend"]]];const patched=[];let isPatchingEnabled=false;function runtime_patchHandlerProperty(ctor,propName){const proto=ctor?.prototype;const descriptor=proto&&Object.getOwnPropertyDescriptor(proto,propName);if(!descriptor||typeof descriptor.get!=="function"||typeof descriptor.set!=="function"||!descriptor.configurable)return;const{get:originalGet,set:originalSet}=descriptor;const tracked=new WeakMap;const wrapperGet=function(){const entry=tracked.get(this);const current=originalGet.call(this);if(entry){if(current===entry.wrapper)return entry.original;tracked.delete(this)}return current};const wrapperSet=function(value){if(typeof value!=="function"){const result2=originalSet.call(this,value);tracked.delete(this);return result2}const wrapper=pinToCurrentCaller(value);const result=originalSet.call(this,wrapper);tracked.set(this,{original:value,wrapper});return result};Object.defineProperty(proto,propName,{configurable:descriptor.configurable,enumerable:descriptor.enumerable,get:wrapperGet,set:wrapperSet});patched.push({proto,propName,descriptor,wrapperGet,wrapperSet})}function enableEventTargetPropertyPatching(){if(isPatchingEnabled)return;for(const[ctorName,propNames]of PATCHED_INTERFACES){const ctor=globalThis[ctorName];if(typeof ctor!=="function")continue;for(const propName of propNames)runtime_patchHandlerProperty(ctor,propName)}isPatchingEnabled=true}function disableEventTargetPropertyPatching(){if(!isPatchingEnabled)return;for(const{proto,propName,descriptor,wrapperGet,wrapperSet}of patched){const current=Object.getOwnPropertyDescriptor(proto,propName);if(current&&current.get===wrapperGet&&current.set===wrapperSet){Object.defineProperty(proto,propName,descriptor)}}patched.length=0;isPatchingEnabled=false}export{disableEventTargetPropertyPatching,enableEventTargetPropertyPatching};
@@ -0,0 +1,17 @@
1
+ /*
2
+ Copyright 2026 CLDMV/Shinrai
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ import{pinToCurrentCaller}from"@cldmv/slothlet/helpers/caller-pinning";const PATCHED_CONSTRUCTORS=["MutationObserver","ResizeObserver","IntersectionObserver"];const patched=[];let isPatchingEnabled=false;function runtime_carryOwnExtras(wrapper,original){for(const key of Object.getOwnPropertySymbols(original)){const descriptor=Object.getOwnPropertyDescriptor(original,key);if(!descriptor)continue;Object.defineProperty(wrapper,key,descriptor)}for(const key of Object.keys(original)){wrapper[key]=original[key]}}function runtime_patchObserverConstructor(name){const original=globalThis[name];if(typeof original!=="function")return;const wrapper=function(callback,...rest){if(!new.target)throw new TypeError(`Failed to construct '${name}': Please use the 'new' operator.`);const pinned=typeof callback==="function"?pinToCurrentCaller(callback):callback;return Reflect.construct(original,[pinned,...rest],new.target)};wrapper.prototype=Object.create(original.prototype,{constructor:{value:wrapper,writable:true,configurable:true}});runtime_carryOwnExtras(wrapper,original);globalThis[name]=wrapper;patched.push({name,original,wrapper})}function enableObserverPatching(){if(isPatchingEnabled)return;for(const name of PATCHED_CONSTRUCTORS)runtime_patchObserverConstructor(name);isPatchingEnabled=true}function disableObserverPatching(){if(!isPatchingEnabled)return;for(const{name,original,wrapper}of patched){if(globalThis[name]===wrapper)globalThis[name]=original}patched.length=0;isPatchingEnabled=false}export{disableObserverPatching,enableObserverPatching};
@@ -14,4 +14,4 @@
14
14
  limitations under the License.
15
15
  */
16
16
 
17
- import{pinToCurrentCaller}from"@cldmv/slothlet/helpers/caller-pinning";const patched=[];let isPatchingEnabled=false;function runtime_carryOwnExtras(wrapper,original){for(const key of Object.getOwnPropertySymbols(original)){const descriptor=Object.getOwnPropertyDescriptor(original,key);if(!descriptor)continue;Object.defineProperty(wrapper,key,descriptor)}for(const key of Object.keys(original)){wrapper[key]=original[key]}}function runtime_patchScheduler(host,name){const original=host?.[name];if(typeof original!=="function")return;const wrapper=function(callback,...rest){if(typeof callback!=="function")return original.call(host,callback,...rest);return original.call(host,pinToCurrentCaller(callback),...rest)};runtime_carryOwnExtras(wrapper,original);host[name]=wrapper;patched.push({host,name,original,wrapper})}function enableSchedulerPatching(){if(isPatchingEnabled)return;runtime_patchScheduler(globalThis,"setTimeout");runtime_patchScheduler(globalThis,"setInterval");runtime_patchScheduler(globalThis,"setImmediate");runtime_patchScheduler(globalThis,"queueMicrotask");runtime_patchScheduler(globalThis.process,"nextTick");isPatchingEnabled=true}function disableSchedulerPatching(){if(!isPatchingEnabled)return;for(const{host,name,original,wrapper}of patched){if(host[name]===wrapper)host[name]=original}patched.length=0;isPatchingEnabled=false}export{disableSchedulerPatching,enableSchedulerPatching};
17
+ import{pinToCurrentCaller}from"@cldmv/slothlet/helpers/caller-pinning";const patched=[];let isPatchingEnabled=false;function runtime_carryOwnExtras(wrapper,original){for(const key of Object.getOwnPropertySymbols(original)){const descriptor=Object.getOwnPropertyDescriptor(original,key);if(!descriptor)continue;Object.defineProperty(wrapper,key,descriptor)}for(const key of Object.keys(original)){wrapper[key]=original[key]}}function runtime_patchScheduler(host,name){const original=host?.[name];if(typeof original!=="function")return;const wrapper=function(callback,...rest){if(typeof callback!=="function")return original.call(host,callback,...rest);return original.call(host,pinToCurrentCaller(callback),...rest)};runtime_carryOwnExtras(wrapper,original);host[name]=wrapper;patched.push({host,name,original,wrapper})}function enableSchedulerPatching(){if(isPatchingEnabled)return;runtime_patchScheduler(globalThis,"setTimeout");runtime_patchScheduler(globalThis,"setInterval");runtime_patchScheduler(globalThis,"setImmediate");runtime_patchScheduler(globalThis,"queueMicrotask");runtime_patchScheduler(globalThis.process,"nextTick");runtime_patchScheduler(globalThis,"requestAnimationFrame");runtime_patchScheduler(globalThis,"requestIdleCallback");isPatchingEnabled=true}function disableSchedulerPatching(){if(!isPatchingEnabled)return;for(const{host,name,original,wrapper}of patched){if(host[name]===wrapper)host[name]=original}patched.length=0;isPatchingEnabled=false}export{disableSchedulerPatching,enableSchedulerPatching};
@@ -473,6 +473,8 @@
473
473
  "HINT_MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "This is almost certainly a misconfiguration — the same package at the same version installed in two unrelated locations. Investigate which install is intended and remove the other.",
474
474
  "MODULE_MOUNT_COLLISION": "Module package '{packageName}' cannot mount at '{mountPath}': path is already occupied by module '{existingModuleID}' and collisionMode is '{collisionMode}'.",
475
475
  "HINT_MODULE_MOUNT_COLLISION": "Either change the manifest's mountPath, pass `collisionMode: \"merge\"` to `addModule()` / `addModules()` to allow coexistence, or call `removeModule()` on the existing module first.",
476
+ "ROUTINE_FAILED": "Routine contributor from module '{moduleID}' at '{apiPath}' failed: {error} ({count} failure(s) total: {failures}).",
477
+ "HINT_ROUTINE_FAILED": "Fix the throwing contributor, or catch and handle the failure inside it — every contributor in the routine's chain still runs even after one throws, and a single aggregated error listing every failure is thrown afterward (see `context.failures`).",
476
478
  "HOOK_TYPEPATTERN_PREFIX_DEPRECATED": "Hook registration form '{given}' is deprecated and will be removed in v4. Use the path-first form '{suggested}' instead (e.g. 'math.*:before').",
477
479
  "HINT_HOOK_TYPEPATTERN_PREFIX_DEPRECATED": "Move the hook type to the end as a suffix: rewrite a type-first selector like 'before:math.add' as the path-first form 'math.add:before'.",
478
480
  "HOOK_UNPINNED_IGNORED": "lockCaller:false was ignored for hook '{pattern}'; hooks are pinned to their registering module. Set hook.pin:false (init) or call api.slothlet.hook.pin.disable() to permit unpinned hooks.",