@blue-labs/document-processor 1.25.0 → 1.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/index.mjs +42 -39
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";var he=Object.defineProperty;var de=(c,e,t)=>e in c?he(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var l=(c,e,t)=>de(c,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@blue-repository/core-dev"),f=require("@blue-labs/language"),v=require("@blue-labs/shared-utils"),P=require("@blue-repository/myos-dev"),pe=(c,e)=>({on:(t,n)=>({end:()=>n(null)})});async function me(c){return new Promise((e,t)=>{pe().on("error",t).end()})}const b=(...c)=>c.map((e,t)=>{if(typeof e!="string")return"";if(t===0&&e==="/")return"/";const n=t>0?e.replace(/^\/+/,""):e;return t<c.length-1?n.replace(/\/+$/,""):n}).filter(Boolean).join("/").replace(/\/{2,}/g,"/");class z{constructor(e,t,n,o){l(this,"actions",[]);this.getDocument=e,this.taskInfo=t,this.blue=n,this.onFlush=o}get(e){const t=this.getDocument(),n=b(this.taskInfo.nodePath,e);return t.get(n)}addPatch(e){this.actions.push({kind:"patch",patch:{...e,path:b(this.taskInfo.nodePath,e.path)}})}emitEvent(e){const t=this.taskInfo.event,n=t.trace??[],o={...e,originNodePath:e.originNodePath??this.taskInfo.nodePath,rootEvent:e.rootEvent??t.rootEvent??t,trace:[...n]};this.actions.push({kind:"event",event:o})}async flush(){var t;if(!this.actions.length)return[];const e=[...this.actions];return this.actions.length=0,await((t=this.onFlush)==null?void 0:t.call(this,e)),e}getNodePath(){return this.taskInfo.nodePath}resolvePath(e){return b(this.taskInfo.nodePath,e)}getTaskInfo(){return this.taskInfo}getBlue(){return this.blue}loadExternalModule(e){if(!/^https?:\/\//.test(e))throw new Error("Only http/https URLs are allowed");return me()}loadBlueContent(e){throw new Error("Not implemented")}}class L extends Error{constructor(e,t){super(`Cannot apply patch ${JSON.stringify(e)}`),this.patch=e,this.cause=t,this.name="PatchApplicationError"}}class _ extends Error{constructor(e,t,n){super(`Patch ${JSON.stringify(e)} touches "${e.op==="move"||e.op==="copy"?`${e.from} → ${e.path}`:e.path}" which is inside embedded document "${t}" (Process Embedded @ "${n}")`),this.patch=e,this.offendingPath=t,this.contractNodePath=n,this.name="EmbeddedDocumentModificationError"}}class $ extends Error{constructor(e,t){super(`Failed to evaluate expression "${e}"`),this.code=e,this.cause=t,this.name="ExpressionEvaluationError"}}class A extends Error{constructor(e,t){super(`Failed to evaluate code block "${e}"`),this.code=e,this.cause=t,this.name="CodeBlockEvaluationError"}}function O(c,e,t="/",n=[]){const o=c.getContracts()??{};for(const[r,a]of Object.entries(o))if(f.BlueNodeTypeSchema.isTypeOf(a,d.ProcessEmbeddedSchema)){const u=e.nodeToSchemaOutput(a,d.ProcessEmbeddedSchema).paths??[];for(const h of u)n.push({absPath:b(t,h),contractPath:b(t,`contracts/${r}`)})}for(const[r,a]of Object.entries(c.getProperties()??{}))O(a,e,b(t,r),n);return n}function D(c,e){return c===e||c.startsWith(e.endsWith("/")?e:e+"/")}function W(c,e){if(!e.length)return c;let t=c.clone();for(const n of e)try{t=f.applyBlueNodePatch(t,n,!0)}catch(o){throw new L(n,o)}return v.deepFreeze(t)}function y(c){return c!=null}function C(c){return c instanceof f.BlueNode}class fe{constructor(e=[],t=(n,o)=>n<o?-1:n>o?1:0){l(this,"data");l(this,"length");l(this,"compare");if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let n=(this.length>>1)-1;n>=0;n--)this._down(n)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:n}=this,o=t[e];for(;e>0;){const r=e-1>>1,a=t[r];if(n(o,a)>=0)break;t[e]=a,e=r}t[e]=o}_down(e){const{data:t,compare:n}=this,o=this.length>>1,r=t[e];for(;e<o;){let a=(e<<1)+1;const s=a+1;if(s<this.length&&n(t[s],t[a])<0&&(a=s),n(t[a],r)>=0)break;t[e]=t[a],e=a}t[e]=r}}const ye=(c,e,t,n,o,r)=>[-c,e,t,n,o,r],ge=(c,e)=>{for(let t=0;t<c.key.length;t++){const n=c.key[t],o=e.key[t];if(n!==o)return typeof n=="number"&&typeof o=="number"?n-o:typeof n=="string"&&typeof o=="string"?n.localeCompare(o):0}return 0};class Ee{constructor(){l(this,"queue");this.queue=new fe([],ge)}push(e){this.queue.push(e)}pop(){return this.queue.pop()}get length(){return this.queue.length}}class ve{constructor(e=[]){l(this,"processors",new Map);l(this,"typeOrder",new Map);e.forEach((t,n)=>this.register(t,n))}register(e,t){if(this.processors.has(e.contractBlueId))throw new Error(`Processor for ${e.contractType} already registered`);this.processors.set(e.contractBlueId,e),this.typeOrder.has(e.contractBlueId)||this.typeOrder.set(e.contractBlueId,t??this.typeOrder.size)}get(e){if(!e)return;const t=e.getBlueId();if(t)return this.processors.get(t)}orderOf(e){if(!e)return 0;const t=e.getBlueId();return t?this.typeOrder.get(t)??0:0}values(){return this.processors.values()}}class we{constructor(){l(this,"isEnabled");this.isEnabled=process.env.TRACE_BLUE_ENABLED==="true"}makeHop(e,t){return`${e}#${t}`}shouldTrace(){return this.isEnabled}addHop(e,t,n){if(!this.shouldTrace())return{...e};const o=[...e.trace??[],this.makeHop(t,n)];return{...e,trace:o}}getTrace(e){return e.trace??[]}clearTrace(e){return{...e,trace:[]}}isTracingEnabled(){return this.isEnabled}}const Se=64;class be{constructor(e,t,n,o,r){l(this,"traceManager");this.blue=e,this.registry=t,this.queue=n,this.getNextTaskId=o,this.getNextEventSeq=r,this.traceManager=new we}async route(e,t,n,o,r=0){var i;if(n.seq===void 0&&(n.seq=this.getNextEventSeq()),t.length===0){if(n.dispatchPath){const u=n.dispatchPath.split("/").filter(Boolean),h={...n};return delete h.dispatchPath,this.route(e,u,h,o,r)}if(n.source==="channel"&&n.originNodePath&&n.originNodePath!=="/"){const u=((i=n.originNodePath)==null?void 0:i.split("/").filter(Boolean))??[];return this.route(e,u,n,o,r)}}const a=b("/",t.join("/")),s=e.get(a);C(s)&&await this.traverseContracts({doc:e,node:s,nodePath:a,event:n,afterTaskId:o,pathSegments:t,inlineDepth:r})}async traverseContracts(e){const{doc:t,node:n,nodePath:o,event:r,afterTaskId:a,pathSegments:s,inlineDepth:i}=e;if(!this.shouldSkipForChannel(r,o))for(const[u,h]of Object.entries(n.getContracts()??{})){if(!h.getType())continue;const p=this.registry.get(h.getType());if(!p){console.warn(`No processor registered for contract: ${u}`);continue}const m={nodePath:o,contractName:u,contractNode:h,event:r},g=new z(()=>t,m,this.blue);if(p.supports(r,h,g,u))switch(p.role){case"adapter":await this.processAdapter({cp:p,event:r,contractNode:h,ctx:g,contractName:u,doc:t,afterTaskId:a,inlineDepth:i});break;case"handler":this.scheduleHandler({contractNode:h,contractName:u,nodePath:o,event:r,depth:s.length,afterTaskId:a});break}}}async processAdapter(e){var w;const{cp:t,event:n,contractNode:o,ctx:r,contractName:a,doc:s,afterTaskId:i,inlineDepth:u}=e;if(u>=Se)throw new Error("Adapter recursion limit reached");const h=this.traceManager.addHop(n,((w=r.getTaskInfo())==null?void 0:w.nodePath)??"",a);await t.handle(h,o,r,a);const p=await r.flush();if(p.find(T=>T.kind==="patch"))throw new Error(`Contract "${a}" (adapter) attempted to patch the document`);const g=p.filter(T=>T.kind==="event");for(const T of g)await this.route(s,[],T.event,i,u+1)}scheduleHandler(e){const{contractNode:t,contractName:n,nodePath:o,event:r,depth:a,afterTaskId:s}=e,i=t.getType();if(!i){console.warn(`Contract node type is not defined for: ${n}`);return}const u=this.registry.orderOf(i),h=t.get("/order"),p=f.isBigNumber(h)?h.toNumber():0,m=this.getNextTaskId()+s,g=ye(a,r.seq,u,p,n,m),w=this.traceManager.addHop(r,o,n);this.queue.push({key:g,nodePath:o,contractName:n,contractNode:t,event:w})}shouldSkipForChannel(e,t){return e.source==="channel"&&!!e.originNodePath&&e.originNodePath!==t}}const Te=(c,e,t)=>{(t instanceof L||t instanceof _)&&console.error(`[Blue] Failed to apply patches for contract "${c}" on event ${JSON.stringify(e)}`,t)};function j(c,e){const t=c.clone(),n=o=>{if(!C(o))return;const r=o.getContracts();(!(r!=null&&r.checkpoint)||!f.BlueNodeTypeSchema.isTypeOf(r.checkpoint,d.ChannelEventCheckpointSchema))&&o.addContract("checkpoint",e.jsonValueToNode({type:{name:"Channel Event Checkpoint",blueId:d.blueIds["Channel Event Checkpoint"]},lastEvents:{}}))};n(t);for(const{absPath:o}of O(t,e)){const r=t.get(o);C(r)&&n(r)}return v.deepFreeze(t)}function Pe(c,e){const t=c.clone();return C(t)&&(H(t,e)||t.addContract("initialized",e.jsonValueToNode({type:{name:"Initialized Marker",blueId:d.blueIds["Initialized Marker"]}}))),v.deepFreeze(t)}function H(c,e){const t=c.getContracts();return Object.values(t??{}).some(n=>e.isTypeOf(n,d.InitializedMarkerSchema,{checkSchemaExtensions:!0}))}class R{constructor(e){l(this,"contractType","Channel Event Checkpoint");l(this,"contractBlueId",d.blueIds["Channel Event Checkpoint"]);l(this,"role","handler");this.cache=e}supports(e){var t,n;return e.source==="channel"&&((t=e.rootEvent)==null?void 0:t.payload)===e.payload&&((n=e.rootEvent)==null?void 0:n.source)==="external"}async handle(e,t,n){var a;if(!e.channelName||!((a=e.rootEvent)!=null&&a.seq))return;const o=await n.getBlue().calculateBlueId(e.rootEvent.payload),r=n.getNodePath().replace(/\/contracts\/checkpoint$/,"");this.cache.record(r,e,o)}}const x=(c,e)=>c.get(e)!==void 0;class Ce{constructor(){l(this,"firstSeen",new Map)}record(e,t,n){const o=e;this.firstSeen.has(o)||this.firstSeen.set(o,{docBase:e,event:t,eventBlueId:n})}flush(e){const t=[];for(const{docBase:n,event:o,eventBlueId:r}of this.firstSeen.values()){if(!o.channelName)continue;const a=b(n,"contracts/checkpoint/lastEvents",o.channelName),s=`${a}/blueId`;x(e,a)?t.push({op:x(e,s)?"replace":"add",path:s,val:r}):t.push({op:"add",path:a,val:{blueId:r}})}return t}clear(){this.firstSeen.clear()}}class k{constructor(){l(this,"role","adapter")}baseSupports(e){return e.source!=="channel"}}class Q extends k{constructor(){super(...arguments);l(this,"contractType","Composite Timeline Channel");l(this,"contractBlueId",d.blueIds["Composite Timeline Channel"])}supports(t,n,o){const r=o.getBlue().nodeToSchemaOutput(n,d.CompositeTimelineChannelSchema);return!r.channels||!t.channelName?!1:r.channels.includes(t.channelName)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class K extends k{constructor(){super(...arguments);l(this,"contractType","Document Update Channel");l(this,"contractBlueId",d.blueIds["Document Update Channel"])}supports(t,n,o,r){if(!this.baseSupports(t))return!1;const a=o.getBlue().nodeToSchemaOutput(n,d.DocumentUpdateChannelSchema),s=t.payload.get("/path");if(!s||t.channelName===r)return!1;const i=a.path;return v.isNonNullable(i)&&s===o.resolvePath(i)}handle(t,n,o,r){const a=t.payload;a&&o.emitEvent({payload:a,channelName:r,source:"channel"})}}class X extends k{constructor(){super(...arguments);l(this,"contractType","Embedded Node Channel");l(this,"contractBlueId",d.blueIds["Embedded Node Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;const r=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema);return y(t.originNodePath)&&y(r.path)&&t.originNodePath===o.resolvePath(r.path)}handle(t,n,o,r){const a=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema),{originNodePath:s,payload:i}=t;y(a.path)&&s===o.resolvePath(a.path)&&o.emitEvent({payload:i,channelName:r,source:"channel"})}}class Y{constructor(){l(this,"contractType","Initialized Marker");l(this,"contractBlueId",d.blueIds["Initialized Marker"]);l(this,"role","marker")}supports(){return!1}handle(){}}class Z extends k{constructor(){super(...arguments);l(this,"contractType","Lifecycle Event Channel");l(this,"contractBlueId",d.blueIds["Lifecycle Event Channel"])}supports(t,n,o){return!this.baseSupports(t)||!this.isLifecycleEvent(t,o)?!1:this.isEventPatternMatch(t,n,o)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}isLifecycleEvent(t,n){const o=n.getBlue(),r=t.payload;return o.isTypeOf(r,d.LifecycleEventSchema,{checkSchemaExtensions:!0})}isEventPatternMatch(t,n,o){var a;const r=(a=n.getProperties())==null?void 0:a.event;if(!r)return!0;try{const s=o.getBlue(),i=s.nodeToJson(t.payload),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during lifecycle event pattern matching:",s),!1}}}const F=(c,e)=>{const t=e.getBlue();return t.isTypeOf(c.payload,d.TimelineEntrySchema)||t.isTypeOf(c.payload,P.MyOSTimelineEntrySchema)};class G extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Timeline Channel");l(this,"contractBlueId",P.blueIds["MyOS Timeline Channel"])}supports(t,n,o){var m;if(!this.baseSupports(t)||!F(t,o))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,P.MyOSTimelineEntrySchema),s=o.getBlue().nodeToSchemaOutput(n,P.MyOSTimelineChannelSchema),i=(m=a.timeline)==null?void 0:m.timelineId,u=y(s.timelineId)&&y(i),h=y(s.account)&&y(a.account),p=y(s.email)&&y(a.email);return u&&i===s.timelineId||h&&a.account===s.account||p&&a.email===s.email}handle(t,n,o,r){F(t,o)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class ee extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Agent Channel");l(this,"contractBlueId",P.blueIds["MyOS Agent Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;try{const{myosAgentEvent:r,myosAgentChannel:a}=this.parseEventAndChannel(t,n,o);return this.isAgentMatch(r,a)&&this.isEventPatternMatch(r,a,o)}catch(r){return console.warn("Error in MyOSAgentChannelProcessor.supports:",r),!1}}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}parseEventAndChannel(t,n,o){const r=o.getBlue(),a=r.nodeToSchemaOutput(t.payload,P.MyOSAgentEventSchema),s=r.nodeToSchemaOutput(n,P.MyOSAgentChannelSchema);return{myosAgentEvent:a,myosAgentChannel:s}}isAgentMatch(t,n){var a;const o=t.agentId,r=(a=n.agent)==null?void 0:a.agentId;return y(o)&&y(r)&&o===r}isEventPatternMatch(t,n,o){const r=n.event;if(!r)return!0;const a=t.event;if(!a)return!1;try{const s=o.getBlue(),i=s.nodeToJson(a),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during event pattern matching:",s),!1}}}class te{constructor(){l(this,"contractType","Operation");l(this,"contractBlueId",d.blueIds.Operation);l(this,"role","adapter")}supports(e,t,n,o){const a=n.getBlue().nodeToSchemaOutput(t,d.OperationSchema),s=this.parseEventPayload(e,n);return y(s==null?void 0:s.operation)&&s.operation===o&&e.source==="channel"&&e.channelName===a.channel}async handle(e,t,n,o){n.emitEvent({payload:e.payload,channelName:o,source:"channel"})}parseEventPayload(e,t){const n=t.getBlue();if(n.isTypeOf(e.payload,d.TimelineEntrySchema,{checkSchemaExtensions:!0})){const o=n.nodeToSchemaOutput(e.payload,d.TimelineEntrySchema);if(o.message)return n.nodeToSchemaOutput(o.message,d.OperationRequestSchema)}return null}}class ne{constructor(){l(this,"contractType","Process Embedded");l(this,"role","adapter");l(this,"contractBlueId",d.blueIds["Process Embedded"])}supports(e){return e.source!=="channel"}handle(e,t,n){const o=n.getBlue().nodeToSchemaOutput(t,d.ProcessEmbeddedSchema);for(const r of o.paths??[])n.emitEvent({...e,dispatchPath:n.resolvePath(r)})}}const oe=!process.env.SKIP_ISOLATED_VM;let S=null;if(oe)try{S=require("isolated-vm")}catch{console.warn("isolated-vm not available, using fallback evaluation method")}function J(c){return/\bimport\s.+\sfrom\s+['"][^'"]+['"]/.test(c)||/\bexport\s+/.test(c)}class N{static async evaluate({code:e,ctx:t,bindings:n={},options:o={}}){return!S||!oe?this.evaluateSimple(e,n,o):this.evaluateSecure(e,n,t,o)}static async evaluateSimple(e,t,n={}){if(J(e))throw new Error("Static import/export syntax requires isolated-vm – start Node without SKIP_ISOLATED_VM.");try{if(n.isCodeBlock){const o=Object.keys(t);return await(await new Function(...o,`return async function codeBlock(${o.join(", ")}) { ${e} }`)(...o.map(s=>t[s])))(...o.map(s=>t[s]))}else return new Function(...Object.keys(t),`return ${e};`)(...Object.values(t))}catch(o){throw n.isCodeBlock?new A(e,o):new $(e,o)}}static async evaluateSecure(e,t,n,o={}){if(!S)throw new Error("isolated-vm not available");const r=new S.Isolate({memoryLimit:32}),a=await r.createContext(),s=a.global;try{await this.setupIsolateEnvironment(s,t);const i=new Map,u=this.createModuleResolver(r,a,i,n);return J(e)?await this.evaluateESModule(r,a,e,o,u):await this.evaluateSimpleScript(r,a,e,t,o)}catch(i){throw o.isCodeBlock?new A(e,i):new $(e,i)}finally{a.release(),r.dispose()}}static async setupIsolateEnvironment(e,t){if(!S)throw new Error("isolated-vm not available");const n=new S.Callback((...o)=>console.log(...o));await e.set("log",n);for(const[o,r]of Object.entries(t))typeof r=="function"?await e.set(o,new S.Callback(r)):await e.set(o,new S.ExternalCopy(r).copyInto())}static createModuleResolver(e,t,n,o){return async r=>{if(n.has(r))return n.get(r);if(r.startsWith("blue:")){const a=r.slice(5),s=o.loadBlueContent;if(typeof s!="function")throw new Error(`ProcessingContext is missing a loadBlueContent(blueId) implementation (needed for ${r})`);const i=await s(a),u=await e.compileModule(i);return n.set(r,u),await u.instantiate(t,this.createModuleResolver(e,t,n,o)),u}if(/^https?:\/\//.test(r)){let a;if(typeof o.loadExternalModule=="function")a=await o.loadExternalModule(r);else throw new Error(`ProcessingContext is missing a loadExternalModule(url) implementation (needed for ${r})`);const s=await e.compileModule(a);return n.set(r,s),await s.instantiate(t,this.createModuleResolver(e,t,n,o)),s}throw new Error(`Unsupported module specifier "${r}"`)}}static async evaluateSimpleScript(e,t,n,o,r){const a=Object.keys(o).join(", "),s=Object.keys(o).map(h=>h),i=`(async (${a}) => { ${r.isCodeBlock?n:`return (${n});`} })(${s.join(", ")})`;return await(await e.compileScript(i)).run(t,{timeout:r.timeout??500,promise:!0,copy:!0,release:!0})}static async evaluateESModule(e,t,n,o,r){let a=n;if(o.isCodeBlock){const u=/^\s*(import\s.+?;|export\s.+?;)/gm,h=(n.match(u)||[]).join(`
|
|
1
|
+
"use strict";var he=Object.defineProperty;var de=(c,e,t)=>e in c?he(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var l=(c,e,t)=>de(c,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@blue-repository/core-dev"),f=require("@blue-labs/language"),v=require("@blue-labs/shared-utils"),P=require("@blue-repository/myos-dev"),pe=(c,e)=>({on:(t,n)=>({end:()=>n(null)})});async function me(c){return new Promise((e,t)=>{pe().on("error",t).end()})}const b=(...c)=>c.map((e,t)=>{if(typeof e!="string")return"";if(t===0&&e==="/")return"/";const n=t>0?e.replace(/^\/+/,""):e;return t<c.length-1?n.replace(/\/+$/,""):n}).filter(Boolean).join("/").replace(/\/{2,}/g,"/");class z{constructor(e,t,n,o){l(this,"actions",[]);this.getDocument=e,this.taskInfo=t,this.blue=n,this.onFlush=o}get(e){const t=this.getDocument(),n=b(this.taskInfo.nodePath,e);return t.get(n)}addPatch(e){this.actions.push({kind:"patch",patch:{...e,path:b(this.taskInfo.nodePath,e.path)}})}emitEvent(e){const t=this.taskInfo.event,n=t.trace??[],o={...e,originNodePath:e.originNodePath??this.taskInfo.nodePath,rootEvent:e.rootEvent??t.rootEvent??t,trace:[...n]};this.actions.push({kind:"event",event:o})}async flush(){var t;if(!this.actions.length)return[];const e=[...this.actions];return this.actions.length=0,await((t=this.onFlush)==null?void 0:t.call(this,e)),e}getNodePath(){return this.taskInfo.nodePath}resolvePath(e){return b(this.taskInfo.nodePath,e)}getTaskInfo(){return this.taskInfo}getBlue(){return this.blue}loadExternalModule(e){if(!/^https?:\/\//.test(e))throw new Error("Only http/https URLs are allowed");return me()}loadBlueContent(e){throw new Error("Not implemented")}}class L extends Error{constructor(e,t){super(`Cannot apply patch ${JSON.stringify(e)}`),this.patch=e,this.cause=t,this.name="PatchApplicationError"}}class _ extends Error{constructor(e,t,n){super(`Patch ${JSON.stringify(e)} touches "${e.op==="move"||e.op==="copy"?`${e.from} → ${e.path}`:e.path}" which is inside embedded document "${t}" (Process Embedded @ "${n}")`),this.patch=e,this.offendingPath=t,this.contractNodePath=n,this.name="EmbeddedDocumentModificationError"}}class $ extends Error{constructor(e,t){super(`Failed to evaluate expression "${e}"`),this.code=e,this.cause=t,this.name="ExpressionEvaluationError"}}class A extends Error{constructor(e,t){super(`Failed to evaluate code block "${e}"`),this.code=e,this.cause=t,this.name="CodeBlockEvaluationError"}}function O(c,e,t="/",n=[]){const o=c.getContracts()??{};for(const[r,a]of Object.entries(o))if(f.BlueNodeTypeSchema.isTypeOf(a,d.ProcessEmbeddedSchema)){const u=e.nodeToSchemaOutput(a,d.ProcessEmbeddedSchema).paths??[];for(const h of u)n.push({absPath:b(t,h),contractPath:b(t,`contracts/${r}`)})}for(const[r,a]of Object.entries(c.getProperties()??{}))O(a,e,b(t,r),n);return n}function D(c,e){return c===e||c.startsWith(e.endsWith("/")?e:e+"/")}function W(c,e){if(!e.length)return c;let t=c.clone();for(const n of e)try{t=f.applyBlueNodePatch(t,n,!0)}catch(o){throw new L(n,o)}return v.deepFreeze(t)}function y(c){return c!=null}function C(c){return c instanceof f.BlueNode}class fe{constructor(e=[],t=(n,o)=>n<o?-1:n>o?1:0){l(this,"data");l(this,"length");l(this,"compare");if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let n=(this.length>>1)-1;n>=0;n--)this._down(n)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:n}=this,o=t[e];for(;e>0;){const r=e-1>>1,a=t[r];if(n(o,a)>=0)break;t[e]=a,e=r}t[e]=o}_down(e){const{data:t,compare:n}=this,o=this.length>>1,r=t[e];for(;e<o;){let a=(e<<1)+1;const s=a+1;if(s<this.length&&n(t[s],t[a])<0&&(a=s),n(t[a],r)>=0)break;t[e]=t[a],e=a}t[e]=r}}const ye=(c,e,t,n,o,r)=>[-c,e,t,n,o,r],ge=(c,e)=>{for(let t=0;t<c.key.length;t++){const n=c.key[t],o=e.key[t];if(n!==o)return typeof n=="number"&&typeof o=="number"?n-o:typeof n=="string"&&typeof o=="string"?n.localeCompare(o):0}return 0};class Ee{constructor(){l(this,"queue");this.queue=new fe([],ge)}push(e){this.queue.push(e)}pop(){return this.queue.pop()}get length(){return this.queue.length}}class ve{constructor(e=[]){l(this,"processors",new Map);l(this,"typeOrder",new Map);e.forEach((t,n)=>this.register(t,n))}register(e,t){if(this.processors.has(e.contractBlueId))throw new Error(`Processor for ${e.contractType} already registered`);this.processors.set(e.contractBlueId,e),this.typeOrder.has(e.contractBlueId)||this.typeOrder.set(e.contractBlueId,t??this.typeOrder.size)}get(e){if(!e)return;const t=e.getBlueId();if(t)return this.processors.get(t)}orderOf(e){if(!e)return 0;const t=e.getBlueId();return t?this.typeOrder.get(t)??0:0}values(){return this.processors.values()}}class we{constructor(){l(this,"isEnabled");this.isEnabled=process.env.TRACE_BLUE_ENABLED==="true"}makeHop(e,t){return`${e}#${t}`}shouldTrace(){return this.isEnabled}addHop(e,t,n){if(!this.shouldTrace())return{...e};const o=[...e.trace??[],this.makeHop(t,n)];return{...e,trace:o}}getTrace(e){return e.trace??[]}clearTrace(e){return{...e,trace:[]}}isTracingEnabled(){return this.isEnabled}}const Se=64;class be{constructor(e,t,n,o,r){l(this,"traceManager");this.blue=e,this.registry=t,this.queue=n,this.getNextTaskId=o,this.getNextEventSeq=r,this.traceManager=new we}async route(e,t,n,o,r=0){var i;if(n.seq===void 0&&(n.seq=this.getNextEventSeq()),t.length===0){if(n.dispatchPath){const u=n.dispatchPath.split("/").filter(Boolean),h={...n};return delete h.dispatchPath,this.route(e,u,h,o,r)}if(n.source==="channel"&&n.originNodePath&&n.originNodePath!=="/"){const u=((i=n.originNodePath)==null?void 0:i.split("/").filter(Boolean))??[];return this.route(e,u,n,o,r)}}const a=b("/",t.join("/")),s=e.get(a);C(s)&&await this.traverseContracts({doc:e,node:s,nodePath:a,event:n,afterTaskId:o,pathSegments:t,inlineDepth:r})}async traverseContracts(e){const{doc:t,node:n,nodePath:o,event:r,afterTaskId:a,pathSegments:s,inlineDepth:i}=e;if(!this.shouldSkipForChannel(r,o))for(const[u,h]of Object.entries(n.getContracts()??{})){if(!h.getType())continue;const p=this.registry.get(h.getType());if(!p){console.warn(`No processor registered for contract: ${u}`);continue}const m={nodePath:o,contractName:u,contractNode:h,event:r},g=new z(()=>t,m,this.blue);if(p.supports(r,h,g,u))switch(p.role){case"adapter":await this.processAdapter({cp:p,event:r,contractNode:h,ctx:g,contractName:u,doc:t,afterTaskId:a,inlineDepth:i});break;case"handler":this.scheduleHandler({contractNode:h,contractName:u,nodePath:o,event:r,depth:s.length,afterTaskId:a});break}}}async processAdapter(e){var w;const{cp:t,event:n,contractNode:o,ctx:r,contractName:a,doc:s,afterTaskId:i,inlineDepth:u}=e;if(u>=Se)throw new Error("Adapter recursion limit reached");const h=this.traceManager.addHop(n,((w=r.getTaskInfo())==null?void 0:w.nodePath)??"",a);await t.handle(h,o,r,a);const p=await r.flush();if(p.find(T=>T.kind==="patch"))throw new Error(`Contract "${a}" (adapter) attempted to patch the document`);const g=p.filter(T=>T.kind==="event");for(const T of g)await this.route(s,[],T.event,i,u+1)}scheduleHandler(e){const{contractNode:t,contractName:n,nodePath:o,event:r,depth:a,afterTaskId:s}=e,i=t.getType();if(!i){console.warn(`Contract node type is not defined for: ${n}`);return}const u=this.registry.orderOf(i),h=t.get("/order"),p=f.isBigNumber(h)?h.toNumber():0,m=this.getNextTaskId()+s,g=ye(a,r.seq,u,p,n,m),w=this.traceManager.addHop(r,o,n);this.queue.push({key:g,nodePath:o,contractName:n,contractNode:t,event:w})}shouldSkipForChannel(e,t){return e.source==="channel"&&!!e.originNodePath&&e.originNodePath!==t}}const Te=(c,e,t)=>{(t instanceof L||t instanceof _)&&console.error(`[Blue] Failed to apply patches for contract "${c}" on event ${JSON.stringify(e)}`,t)};function j(c,e){const t=c.clone(),n=o=>{if(!C(o))return;const r=o.getContracts();(!(r!=null&&r.checkpoint)||!f.BlueNodeTypeSchema.isTypeOf(r.checkpoint,d.ChannelEventCheckpointSchema))&&o.addContract("checkpoint",e.jsonValueToNode({type:{name:"Channel Event Checkpoint",blueId:d.blueIds["Channel Event Checkpoint"]},lastEvents:{}}))};n(t);for(const{absPath:o}of O(t,e)){const r=t.get(o);C(r)&&n(r)}return v.deepFreeze(t)}function Pe(c,e){const t=c.clone();return C(t)&&(H(t,e)||t.addContract("initialized",e.jsonValueToNode({type:{name:"Initialized Marker",blueId:d.blueIds["Initialized Marker"]}}))),v.deepFreeze(t)}function H(c,e){const t=c.getContracts();return Object.values(t??{}).some(n=>e.isTypeOf(n,d.InitializedMarkerSchema,{checkSchemaExtensions:!0}))}class R{constructor(e){l(this,"contractType","Channel Event Checkpoint");l(this,"contractBlueId",d.blueIds["Channel Event Checkpoint"]);l(this,"role","handler");this.cache=e}supports(e){var t,n;return e.source==="channel"&&((t=e.rootEvent)==null?void 0:t.payload)===e.payload&&((n=e.rootEvent)==null?void 0:n.source)==="external"}async handle(e,t,n){var a;if(!e.channelName||!((a=e.rootEvent)!=null&&a.seq))return;const o=await n.getBlue().calculateBlueId(e.rootEvent.payload),r=n.getNodePath().replace(/\/contracts\/checkpoint$/,"");this.cache.record(r,e,o)}}const x=(c,e)=>c.get(e)!==void 0;class Ce{constructor(){l(this,"firstSeen",new Map)}record(e,t,n){const o=e;this.firstSeen.has(o)||this.firstSeen.set(o,{docBase:e,event:t,eventBlueId:n})}flush(e){const t=[];for(const{docBase:n,event:o,eventBlueId:r}of this.firstSeen.values()){if(!o.channelName)continue;const a=b(n,"contracts/checkpoint/lastEvents",o.channelName),s=`${a}/blueId`;x(e,a)?t.push({op:x(e,s)?"replace":"add",path:s,val:r}):t.push({op:"add",path:a,val:{blueId:r}})}return t}clear(){this.firstSeen.clear()}}class k{constructor(){l(this,"role","adapter")}baseSupports(e){return e.source!=="channel"}}class Q extends k{constructor(){super(...arguments);l(this,"contractType","Composite Timeline Channel");l(this,"contractBlueId",d.blueIds["Composite Timeline Channel"])}supports(t,n,o){const r=o.getBlue().nodeToSchemaOutput(n,d.CompositeTimelineChannelSchema);return!r.channels||!t.channelName?!1:r.channels.includes(t.channelName)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class K extends k{constructor(){super(...arguments);l(this,"contractType","Document Update Channel");l(this,"contractBlueId",d.blueIds["Document Update Channel"])}supports(t,n,o,r){if(!this.baseSupports(t))return!1;const a=o.getBlue().nodeToSchemaOutput(n,d.DocumentUpdateChannelSchema),s=t.payload.get("/path");if(!s||t.channelName===r)return!1;const i=a.path;return v.isNonNullable(i)&&s===o.resolvePath(i)}handle(t,n,o,r){const a=t.payload;a&&o.emitEvent({payload:a,channelName:r,source:"channel"})}}class X extends k{constructor(){super(...arguments);l(this,"contractType","Embedded Node Channel");l(this,"contractBlueId",d.blueIds["Embedded Node Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;const r=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema);return y(t.originNodePath)&&y(r.path)&&t.originNodePath===o.resolvePath(r.path)}handle(t,n,o,r){const a=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema),{originNodePath:s,payload:i}=t;y(a.path)&&s===o.resolvePath(a.path)&&o.emitEvent({payload:i,channelName:r,source:"channel"})}}class Y{constructor(){l(this,"contractType","Initialized Marker");l(this,"contractBlueId",d.blueIds["Initialized Marker"]);l(this,"role","marker")}supports(){return!1}handle(){}}class Z extends k{constructor(){super(...arguments);l(this,"contractType","Lifecycle Event Channel");l(this,"contractBlueId",d.blueIds["Lifecycle Event Channel"])}supports(t,n,o){return!this.baseSupports(t)||!this.isLifecycleEvent(t,o)?!1:this.isEventPatternMatch(t,n,o)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}isLifecycleEvent(t,n){const o=n.getBlue(),r=t.payload;return o.isTypeOf(r,d.LifecycleEventSchema,{checkSchemaExtensions:!0})}isEventPatternMatch(t,n,o){var a;const r=(a=n.getProperties())==null?void 0:a.event;if(!r)return!0;try{const s=o.getBlue(),i=s.nodeToJson(t.payload),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during lifecycle event pattern matching:",s),!1}}}const J=(c,e)=>{const t=e.getBlue();return t.isTypeOf(c.payload,d.TimelineEntrySchema)||t.isTypeOf(c.payload,P.MyOSTimelineEntrySchema)};class G extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Timeline Channel");l(this,"contractBlueId",P.blueIds["MyOS Timeline Channel"])}supports(t,n,o){var m;if(!this.baseSupports(t)||!J(t,o))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,P.MyOSTimelineEntrySchema),s=o.getBlue().nodeToSchemaOutput(n,P.MyOSTimelineChannelSchema),i=(m=a.timeline)==null?void 0:m.timelineId,u=y(s.timelineId)&&y(i),h=y(s.account)&&y(a.account),p=y(s.email)&&y(a.email);return u&&i===s.timelineId||h&&a.account===s.account||p&&a.email===s.email}handle(t,n,o,r){J(t,o)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class ee extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Agent Channel");l(this,"contractBlueId",P.blueIds["MyOS Agent Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;try{const{myosAgentEvent:r,myosAgentChannel:a}=this.parseEventAndChannel(t,n,o);return this.isAgentMatch(r,a)&&this.isEventPatternMatch(r,a,o)}catch(r){return console.warn("Error in MyOSAgentChannelProcessor.supports:",r),!1}}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}parseEventAndChannel(t,n,o){const r=o.getBlue(),a=r.nodeToSchemaOutput(t.payload,P.MyOSAgentEventSchema),s=r.nodeToSchemaOutput(n,P.MyOSAgentChannelSchema);return{myosAgentEvent:a,myosAgentChannel:s}}isAgentMatch(t,n){var a;const o=t.agentId,r=(a=n.agent)==null?void 0:a.agentId;return y(o)&&y(r)&&o===r}isEventPatternMatch(t,n,o){const r=n.event;if(!r)return!0;const a=t.event;if(!a)return!1;try{const s=o.getBlue(),i=s.nodeToJson(a),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during event pattern matching:",s),!1}}}class te{constructor(){l(this,"contractType","Operation");l(this,"contractBlueId",d.blueIds.Operation);l(this,"role","adapter")}supports(e,t,n,o){const a=n.getBlue().nodeToSchemaOutput(t,d.OperationSchema),s=this.parseEventPayload(e,n);return y(s==null?void 0:s.operation)&&s.operation===o&&e.source==="channel"&&e.channelName===a.channel}async handle(e,t,n,o){n.emitEvent({payload:e.payload,channelName:o,source:"channel"})}parseEventPayload(e,t){const n=t.getBlue();if(n.isTypeOf(e.payload,d.TimelineEntrySchema,{checkSchemaExtensions:!0})){const o=n.nodeToSchemaOutput(e.payload,d.TimelineEntrySchema);if(o.message)return n.nodeToSchemaOutput(o.message,d.OperationRequestSchema)}return null}}class ne{constructor(){l(this,"contractType","Process Embedded");l(this,"role","adapter");l(this,"contractBlueId",d.blueIds["Process Embedded"])}supports(e){return e.source!=="channel"}handle(e,t,n){const o=n.getBlue().nodeToSchemaOutput(t,d.ProcessEmbeddedSchema);for(const r of o.paths??[])n.emitEvent({...e,dispatchPath:n.resolvePath(r)})}}const oe=!process.env.SKIP_ISOLATED_VM;let S=null;if(oe)try{S=require("isolated-vm")}catch{console.warn("isolated-vm not available, using fallback evaluation method")}function F(c){return/\bimport\s.+\sfrom\s+['"][^'"]+['"]/.test(c)||/\bexport\s+/.test(c)}class N{static async evaluate({code:e,ctx:t,bindings:n={},options:o={}}){return!S||!oe?this.evaluateSimple(e,n,o):this.evaluateSecure(e,n,t,o)}static async evaluateSimple(e,t,n={}){if(F(e))throw new Error("Static import/export syntax requires isolated-vm – start Node without SKIP_ISOLATED_VM.");try{if(n.isCodeBlock){const o=Object.keys(t);return await(await new Function(...o,`return async function codeBlock(${o.join(", ")}) { ${e} }`)(...o.map(s=>t[s])))(...o.map(s=>t[s]))}else return new Function(...Object.keys(t),`return ${e};`)(...Object.values(t))}catch(o){throw n.isCodeBlock?new A(e,o):new $(e,o)}}static async evaluateSecure(e,t,n,o={}){if(!S)throw new Error("isolated-vm not available");const r=new S.Isolate({memoryLimit:32}),a=await r.createContext(),s=a.global;try{await this.setupIsolateEnvironment(s,t);const i=new Map,u=this.createModuleResolver(r,a,i,n);return F(e)?await this.evaluateESModule(r,a,e,o,u):await this.evaluateSimpleScript(r,a,e,t,o)}catch(i){throw o.isCodeBlock?new A(e,i):new $(e,i)}finally{a.release(),r.dispose()}}static async setupIsolateEnvironment(e,t){if(!S)throw new Error("isolated-vm not available");const n=new S.Callback((...o)=>console.log(...o));await e.set("log",n);for(const[o,r]of Object.entries(t))typeof r=="function"?await e.set(o,new S.Callback(r)):await e.set(o,new S.ExternalCopy(r).copyInto())}static createModuleResolver(e,t,n,o){return async r=>{if(n.has(r))return n.get(r);if(r.startsWith("blue:")){const a=r.slice(5),s=o.loadBlueContent;if(typeof s!="function")throw new Error(`ProcessingContext is missing a loadBlueContent(blueId) implementation (needed for ${r})`);const i=await s(a),u=await e.compileModule(i);return n.set(r,u),await u.instantiate(t,this.createModuleResolver(e,t,n,o)),u}if(/^https?:\/\//.test(r)){let a;if(typeof o.loadExternalModule=="function")a=await o.loadExternalModule(r);else throw new Error(`ProcessingContext is missing a loadExternalModule(url) implementation (needed for ${r})`);const s=await e.compileModule(a);return n.set(r,s),await s.instantiate(t,this.createModuleResolver(e,t,n,o)),s}throw new Error(`Unsupported module specifier "${r}"`)}}static async evaluateSimpleScript(e,t,n,o,r){const a=Object.keys(o).join(", "),s=Object.keys(o).map(h=>h),i=`(async (${a}) => { ${r.isCodeBlock?n:`return (${n});`} })(${s.join(", ")})`;return await(await e.compileScript(i)).run(t,{timeout:r.timeout??500,promise:!0,copy:!0,release:!0})}static async evaluateESModule(e,t,n,o,r){let a=n;if(o.isCodeBlock){const u=/^\s*(import\s.+?;|export\s.+?;)/gm,h=(n.match(u)||[]).join(`
|
|
2
2
|
`),p=n.replace(u,"").trim();a=`
|
|
3
3
|
${h}
|
|
4
4
|
const run = function() {
|
|
5
5
|
${p}
|
|
6
6
|
};
|
|
7
7
|
export default run();
|
|
8
|
-
`}const s=await e.compileModule(a);return await s.instantiate(t,r),await s.evaluate({timeout:o.timeout??500,promise:!0,reference:!0,release:!0}),await s.namespace.get("default",{timeout:o.timeout??500,promise:!0,copy:!0,release:!0})}}class B{static createStandardBindings(e,t,n){const o=e.getBlue(),r=o.nodeToJson(t.payload,"simple"),a=f.isBigNumber(r)?r.toNumber():r;return{document:s=>{const i=e.get(s);return f.isBigNumber(i)?i.toNumber():C(i)?o.nodeToJson(i,"original"):i},event:a,steps:n}}}function U(c,e){const{op:t,path:n,val:o,from:r}=c;if((t==="move"||t==="copy")&&!r)throw new Error(`${t} operation requires 'from' path`);if((t==="add"||t==="replace")&&o===void 0)throw new Error(`${t} operation requires 'val' property`);const a={type:"Document Update",op:t,path:n};return o!==void 0&&(a.val=o),r!==void 0&&(a.from=r),e.jsonValueToNode(a)}function ke(c){return c.jsonValueToNode({type:"Document Processing Initiated"})}class Ie{constructor(){l(this,"stepType","Update Document")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema)}async execute(e,t,n,o,r){const a=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema))return;const s=await this.evaluateChangeset(e.get("/changeset"),n,t,r),i=f.applyBlueNodePatch(e,{op:"replace",path:"/changeset",val:s}),u=n.getBlue().nodeToSchemaOutput(i,d.UpdateDocumentSchema);for(const h of u.changeset??[]){if(!h.path)continue;const p=h.val;if((h.op==="replace"||h.op==="add")&&v.isNonNullable(p)){const m=await this.evaluateChangeValue(p,n,t,r);n.addPatch({op:h.op,path:h.path,val:m}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:a.nodeToJson(m,"original")},a)})}h.op==="remove"&&(n.addPatch({op:h.op,path:h.path}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:null},a)}))}}async evaluateChangeset(e,t,n,o){const r=t.getBlue();if(typeof e=="string"&&e.startsWith("${")&&e.endsWith("}")){const a=e.slice(2,-1),s=await N.evaluate({code:a,ctx:t,bindings:B.createStandardBindings(t,n,o)});return r.jsonValueToNode(s??null)}if(C(e))return e;throw new Error("Invalid changeset: expected a string or document node")}async evaluateChangeValue(e,t,n,o){const r=e.getValue(),a=t.getBlue();if(typeof r=="string"&&r.startsWith("${")&&r.endsWith("}")){const s=r.slice(2,-1),i=await N.evaluate({code:s,ctx:t,bindings:B.createStandardBindings(t,n,o)});return a.jsonValueToNode(i??null)}return e}}class Ne{constructor(){l(this,"stepType","Trigger Event")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema)}async execute(e,t,n){const o=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema))return;const r=o.nodeToSchemaOutput(e,d.TriggerEventSchema);r.event&&n.emitEvent({payload:r.event})}}class Be{constructor(){l(this,"stepType","JavaScript Code")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema)}async execute(e,t,n,o,r){if(!f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema))return;const a=n.getBlue(),s=a.nodeToSchemaOutput(e,d.JavaScriptCodeSchema);if(!s.code)throw new Error("JavaScript code is required");const i=await N.evaluate({code:s.code,ctx:n,bindings:B.createStandardBindings(n,t,r),options:{isCodeBlock:!0,timeout:500}});if(i&&typeof i=="object"&&"events"in i){const u=i;if(Array.isArray(u.events))for(const h of u.events)n.emitEvent({payload:a.jsonValueToNode(h)})}return i}}const
|
|
8
|
+
`}const s=await e.compileModule(a);return await s.instantiate(t,r),await s.evaluate({timeout:o.timeout??500,promise:!0,reference:!0,release:!0}),await s.namespace.get("default",{timeout:o.timeout??500,promise:!0,copy:!0,release:!0})}}class B{static createStandardBindings(e,t,n){const o=e.getBlue(),r=o.nodeToJson(t.payload,"simple"),a=f.isBigNumber(r)?r.toNumber():r;return{document:s=>{const i=e.get(s);return f.isBigNumber(i)?i.toNumber():C(i)?o.nodeToJson(i,"original"):i},event:a,steps:n}}}function U(c,e){const{op:t,path:n,val:o,from:r}=c;if((t==="move"||t==="copy")&&!r)throw new Error(`${t} operation requires 'from' path`);if((t==="add"||t==="replace")&&o===void 0)throw new Error(`${t} operation requires 'val' property`);const a={type:"Document Update",op:t,path:n};return o!==void 0&&(a.val=o),r!==void 0&&(a.from=r),e.jsonValueToNode(a)}function ke(c){return c.jsonValueToNode({type:"Document Processing Initiated"})}class Ie{constructor(){l(this,"stepType","Update Document")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema)}async execute(e,t,n,o,r){const a=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema))return;const s=await this.evaluateChangeset(e.get("/changeset"),n,t,r),i=f.applyBlueNodePatch(e,{op:"replace",path:"/changeset",val:s}),u=n.getBlue().nodeToSchemaOutput(i,d.UpdateDocumentSchema);for(const h of u.changeset??[]){if(!h.path)continue;const p=h.val;if((h.op==="replace"||h.op==="add")&&v.isNonNullable(p)){const m=await this.evaluateChangeValue(p,n,t,r);n.addPatch({op:h.op,path:h.path,val:m}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:a.nodeToJson(m,"original")},a)})}h.op==="remove"&&(n.addPatch({op:h.op,path:h.path}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:null},a)}))}}async evaluateChangeset(e,t,n,o){const r=t.getBlue();if(typeof e=="string"&&e.startsWith("${")&&e.endsWith("}")){const a=e.slice(2,-1),s=await N.evaluate({code:a,ctx:t,bindings:B.createStandardBindings(t,n,o)});return r.jsonValueToNode(s??null)}if(C(e))return e;throw new Error("Invalid changeset: expected a string or document node")}async evaluateChangeValue(e,t,n,o){const r=e.getValue(),a=t.getBlue();if(typeof r=="string"&&r.startsWith("${")&&r.endsWith("}")){const s=r.slice(2,-1),i=await N.evaluate({code:s,ctx:t,bindings:B.createStandardBindings(t,n,o)});return a.jsonValueToNode(i??null)}return e}}class Ne{constructor(){l(this,"stepType","Trigger Event")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema)}async execute(e,t,n){const o=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema))return;const r=o.nodeToSchemaOutput(e,d.TriggerEventSchema);r.event&&n.emitEvent({payload:r.event})}}class Be{constructor(){l(this,"stepType","JavaScript Code")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema)}async execute(e,t,n,o,r){if(!f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema))return;const a=n.getBlue(),s=a.nodeToSchemaOutput(e,d.JavaScriptCodeSchema);if(!s.code)throw new Error("JavaScript code is required");const i=await N.evaluate({code:s.code,ctx:n,bindings:B.createStandardBindings(n,t,r),options:{isCodeBlock:!0,timeout:500}});if(i&&typeof i=="object"&&"events"in i){const u=i;if(Array.isArray(u.events))for(const h of u.events)n.emitEvent({payload:a.jsonValueToNode(Oe(h))})}return i}}function Oe(c){return JSON.parse(JSON.stringify(c))}const Me=[new Ie,new Ne,new Be];class M{constructor(e=Me){l(this,"contractType","Sequential Workflow");l(this,"contractBlueId",d.blueIds["Sequential Workflow"]);l(this,"role","handler");l(this,"executors",[]);this.executors=e}registerExecutor(e){this.executors.push(e)}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowSchema).channel;return e.source==="channel"&&e.channelName===a}async handle(e,t,n,o){var s;const r={},a=(s=t.getProperties())==null?void 0:s.steps.getItems();for(const[i,u]of(a??[]).entries()){const h=this.executors.find(m=>m.supports(u));if(!h)throw new Error(`Unsupported workflow step type "${u.getType()}"`);const p=await h.execute(u,e,n,o,r);if(p!==void 0){const m=u.getName(),g=typeof m=="string"?m:`Step${i+1}`;r[g]=p}await n.flush()}}}class re{constructor(e){l(this,"contractType","Sequential Workflow Operation");l(this,"contractBlueId",d.blueIds["Sequential Workflow Operation"]);l(this,"role","handler");l(this,"sequentialWorkflowProcessor");this.sequentialWorkflowProcessor=e||new M}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowOperationSchema).operation,s=e.channelName;return e.source==="channel"&&v.isNonNullable(s)&&v.isNonNullable(a)&&s===a}async handle(e,t,n,o){try{await this.sequentialWorkflowProcessor.handle(e,t,n,o)}catch(r){throw console.error("Error in SequentialWorkflowOperationProcessor.handle:",r),r}}}const V=c=>f.BlueNodeTypeSchema.isTypeOf(c.payload,d.TimelineEntrySchema);class ae extends k{constructor(){super(...arguments);l(this,"contractType","Timeline Channel");l(this,"contractBlueId",d.blueIds["Timeline Channel"])}supports(t,n,o){var h;if(!this.baseSupports(t)||!V(t))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,d.TimelineEntrySchema),s=o.getBlue().nodeToSchemaOutput(n,d.TimelineChannelSchema),i=(h=a.timeline)==null?void 0:h.timelineId;return y(s.timelineId)&&y(i)&&i===s.timelineId}handle(t,n,o,r){V(t)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}const qe=[new ne,new X,new K,new ae,new G,new ee,new Q,new Z,new te,new M,new re,new Y];class $e{constructor(e,t=qe){l(this,"taskCounter",0);l(this,"eventCounter",0);l(this,"registry");l(this,"queue");l(this,"router");l(this,"checkpointCache",new Ce);this.blue=e,this.registry=new ve(t),this.queue=new Ee,this.router=new be(this.blue,this.registry,this.queue,()=>++this.taskCounter,()=>++this.eventCounter),this.register(new R(this.checkpointCache),9999)}register(e,t){this.registry.register(e,t)}async initialize(e){let t=j(e,this.blue);const n={payload:ke(this.blue)},o=[n.payload];await this.router.route(t,[],n,0);const r=await this.drainQueue(t);return t=r.state,o.push(...r.emitted),t=Pe(t,this.blue),{state:t,emitted:o}}async processEvents(e,t){let n=j(e,this.blue);const o=[];if(!H(n,this.blue))throw new Error("Document is not initialized");for(const r of t)try{const a={payload:r,source:"external"};await this.router.route(n,[],a,0);const s=await this.drainQueue(n);n=s.state,o.push(...s.emitted);const i=this.checkpointCache.flush(n);i.length&&(n=W(n,i))}finally{this.checkpointCache.clear()}return{state:n,emitted:o}}async drainQueue(e){var a;let t=e;const n=[],o=1e4;let r=0;for(;this.queue.length;){if(++r>o)throw new Error("Possible cycle – too many iterations");const s=this.queue.pop(),{nodePath:i,contractName:u,contractNode:h,event:p}=s,m=t.get(i);if(!C(m)||!((a=m.getContracts())!=null&&a[u])||!h.getType())continue;const g=this.registry.get(h.getType());if(!g){console.warn(`No processor registered for contract: ${u}`);continue}const w=new z(()=>t,s,this.blue,async T=>{for(const E of T)if(E.kind==="patch"){const se=O(t,this.blue);for(const I of se){const ce=E.patch.op==="move"||E.patch.op==="copy"?[E.patch.from,E.patch.path]:[E.patch.path],q=w.getNodePath(),ie=ce.some(ue=>D(ue,I.absPath)),le=D(q,I.absPath);if(ie&&!le)throw new _(E.patch,I.absPath,q)}try{t=W(t,[E.patch])}catch(I){throw Te(u,p,I),I}}else E.kind==="event"&&(n.push(E.event.payload),await this.router.route(t,[],E.event,s.key[5]))});await g.handle(p,h,w,u),await w.flush()}return{state:t,emitted:n}}}exports.BlueDocumentProcessor=$e;exports.ChannelEventCheckpointProcessor=R;exports.CompositeTimelineChannelProcessor=Q;exports.DocumentUpdateChannelProcessor=K;exports.EmbeddedNodeChannelProcessor=X;exports.InitializedMarkerProcessor=Y;exports.LifecycleEventChannelProcessor=Z;exports.MyOSAgentChannelProcessor=ee;exports.MyOSTimelineChannelProcessor=G;exports.OperationProcessor=te;exports.ProcessEmbeddedProcessor=ne;exports.SequentialWorkflowOperationProcessor=re;exports.SequentialWorkflowProcessor=M;exports.TimelineChannelProcessor=ae;
|
package/dist/index.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
var ue = Object.defineProperty;
|
|
2
2
|
var he = (c, e, t) => e in c ? ue(c, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : c[e] = t;
|
|
3
3
|
var l = (c, e, t) => he(c, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
-
import { ProcessEmbeddedSchema as $, ChannelEventCheckpointSchema as de, blueIds as f, InitializedMarkerSchema as pe, CompositeTimelineChannelSchema as me, DocumentUpdateChannelSchema as fe, EmbeddedNodeChannelSchema as x, LifecycleEventSchema as ye, TimelineEntrySchema as
|
|
4
|
+
import { ProcessEmbeddedSchema as $, ChannelEventCheckpointSchema as de, blueIds as f, InitializedMarkerSchema as pe, CompositeTimelineChannelSchema as me, DocumentUpdateChannelSchema as fe, EmbeddedNodeChannelSchema as x, LifecycleEventSchema as ye, TimelineEntrySchema as k, OperationSchema as ge, OperationRequestSchema as Ee, UpdateDocumentSchema as O, TriggerEventSchema as B, JavaScriptCodeSchema as M, SequentialWorkflowSchema as we, SequentialWorkflowOperationSchema as ve, TimelineChannelSchema as Te } from "@blue-repository/core-dev";
|
|
5
5
|
import { applyBlueNodePatch as K, BlueNodeTypeSchema as E, BlueNode as be, isBigNumber as q } from "@blue-labs/language";
|
|
6
6
|
import { deepFreeze as I, isNonNullable as N, deepContains as X } from "@blue-labs/shared-utils";
|
|
7
|
-
import { blueIds as Y, MyOSTimelineEntrySchema as Z, MyOSTimelineChannelSchema as Se, MyOSAgentEventSchema as Pe, MyOSAgentChannelSchema as
|
|
8
|
-
const
|
|
7
|
+
import { blueIds as Y, MyOSTimelineEntrySchema as Z, MyOSTimelineChannelSchema as Se, MyOSAgentEventSchema as Pe, MyOSAgentChannelSchema as Ce } from "@blue-repository/myos-dev";
|
|
8
|
+
const ke = (c, e) => ({
|
|
9
9
|
on: (t, n) => ({ end: () => n(null) })
|
|
10
10
|
});
|
|
11
11
|
async function Ie(c) {
|
|
12
12
|
return new Promise((e, t) => {
|
|
13
|
-
|
|
13
|
+
ke().on("error", t).end();
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
const T = (...c) => c.map((e, t) => {
|
|
@@ -176,14 +176,14 @@ class Ne {
|
|
|
176
176
|
t[e] = r;
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
|
-
const
|
|
179
|
+
const Oe = (c, e, t, n, o, r) => [
|
|
180
180
|
-c,
|
|
181
181
|
e,
|
|
182
182
|
t,
|
|
183
183
|
n,
|
|
184
184
|
o,
|
|
185
185
|
r
|
|
186
|
-
],
|
|
186
|
+
], Be = (c, e) => {
|
|
187
187
|
for (let t = 0; t < c.key.length; t++) {
|
|
188
188
|
const n = c.key[t], o = e.key[t];
|
|
189
189
|
if (n !== o)
|
|
@@ -197,7 +197,7 @@ class Me {
|
|
|
197
197
|
*/
|
|
198
198
|
constructor() {
|
|
199
199
|
l(this, "queue");
|
|
200
|
-
this.queue = new Ne([],
|
|
200
|
+
this.queue = new Ne([], Be);
|
|
201
201
|
}
|
|
202
202
|
/**
|
|
203
203
|
* Adds a task to the queue
|
|
@@ -487,7 +487,7 @@ class De {
|
|
|
487
487
|
console.warn(`Contract node type is not defined for: ${n}`);
|
|
488
488
|
return;
|
|
489
489
|
}
|
|
490
|
-
const u = this.registry.orderOf(i), h = t.get("/order"), d = q(h) ? h.toNumber() : 0, p = this.getNextTaskId() + s, y =
|
|
490
|
+
const u = this.registry.orderOf(i), h = t.get("/order"), d = q(h) ? h.toNumber() : 0, p = this.getNextTaskId() + s, y = Oe(
|
|
491
491
|
a,
|
|
492
492
|
r.seq,
|
|
493
493
|
u,
|
|
@@ -741,7 +741,7 @@ class _e extends P {
|
|
|
741
741
|
}
|
|
742
742
|
const z = (c, e) => {
|
|
743
743
|
const t = e.getBlue();
|
|
744
|
-
return t.isTypeOf(c.payload,
|
|
744
|
+
return t.isTypeOf(c.payload, k) || t.isTypeOf(c.payload, Z);
|
|
745
745
|
};
|
|
746
746
|
class ze extends P {
|
|
747
747
|
constructor() {
|
|
@@ -802,7 +802,7 @@ class He extends P {
|
|
|
802
802
|
Pe
|
|
803
803
|
), s = r.nodeToSchemaOutput(
|
|
804
804
|
n,
|
|
805
|
-
|
|
805
|
+
Ce
|
|
806
806
|
);
|
|
807
807
|
return { myosAgentEvent: a, myosAgentChannel: s };
|
|
808
808
|
}
|
|
@@ -864,12 +864,12 @@ class Re {
|
|
|
864
864
|
}
|
|
865
865
|
parseEventPayload(e, t) {
|
|
866
866
|
const n = t.getBlue();
|
|
867
|
-
if (n.isTypeOf(e.payload,
|
|
867
|
+
if (n.isTypeOf(e.payload, k, {
|
|
868
868
|
checkSchemaExtensions: !0
|
|
869
869
|
})) {
|
|
870
870
|
const o = n.nodeToSchemaOutput(
|
|
871
871
|
e.payload,
|
|
872
|
-
|
|
872
|
+
k
|
|
873
873
|
);
|
|
874
874
|
if (o.message)
|
|
875
875
|
return n.nodeToSchemaOutput(
|
|
@@ -1116,11 +1116,11 @@ class Xe {
|
|
|
1116
1116
|
l(this, "stepType", "Update Document");
|
|
1117
1117
|
}
|
|
1118
1118
|
supports(e) {
|
|
1119
|
-
return E.isTypeOf(e,
|
|
1119
|
+
return E.isTypeOf(e, O);
|
|
1120
1120
|
}
|
|
1121
1121
|
async execute(e, t, n, o, r) {
|
|
1122
1122
|
const a = n.getBlue();
|
|
1123
|
-
if (!E.isTypeOf(e,
|
|
1123
|
+
if (!E.isTypeOf(e, O)) return;
|
|
1124
1124
|
const s = await this.evaluateChangeset(
|
|
1125
1125
|
e.get("/changeset"),
|
|
1126
1126
|
n,
|
|
@@ -1130,7 +1130,7 @@ class Xe {
|
|
|
1130
1130
|
op: "replace",
|
|
1131
1131
|
path: "/changeset",
|
|
1132
1132
|
val: s
|
|
1133
|
-
}), u = n.getBlue().nodeToSchemaOutput(i,
|
|
1133
|
+
}), u = n.getBlue().nodeToSchemaOutput(i, O);
|
|
1134
1134
|
for (const h of u.changeset ?? []) {
|
|
1135
1135
|
if (!h.path) continue;
|
|
1136
1136
|
const d = h.val;
|
|
@@ -1208,12 +1208,12 @@ class Ye {
|
|
|
1208
1208
|
l(this, "stepType", "Trigger Event");
|
|
1209
1209
|
}
|
|
1210
1210
|
supports(e) {
|
|
1211
|
-
return E.isTypeOf(e,
|
|
1211
|
+
return E.isTypeOf(e, B);
|
|
1212
1212
|
}
|
|
1213
1213
|
async execute(e, t, n) {
|
|
1214
1214
|
const o = n.getBlue();
|
|
1215
|
-
if (!E.isTypeOf(e,
|
|
1216
|
-
const r = o.nodeToSchemaOutput(e,
|
|
1215
|
+
if (!E.isTypeOf(e, B)) return;
|
|
1216
|
+
const r = o.nodeToSchemaOutput(e, B);
|
|
1217
1217
|
r.event && n.emitEvent({
|
|
1218
1218
|
payload: r.event
|
|
1219
1219
|
});
|
|
@@ -1248,19 +1248,22 @@ class Ze {
|
|
|
1248
1248
|
if (Array.isArray(u.events))
|
|
1249
1249
|
for (const h of u.events)
|
|
1250
1250
|
n.emitEvent({
|
|
1251
|
-
payload: a.jsonValueToNode(h)
|
|
1251
|
+
payload: a.jsonValueToNode(Ge(h))
|
|
1252
1252
|
});
|
|
1253
1253
|
}
|
|
1254
1254
|
return i;
|
|
1255
1255
|
}
|
|
1256
1256
|
}
|
|
1257
|
-
|
|
1257
|
+
function Ge(c) {
|
|
1258
|
+
return JSON.parse(JSON.stringify(c));
|
|
1259
|
+
}
|
|
1260
|
+
const et = [
|
|
1258
1261
|
new Xe(),
|
|
1259
1262
|
new Ye(),
|
|
1260
1263
|
new Ze()
|
|
1261
1264
|
];
|
|
1262
1265
|
class re {
|
|
1263
|
-
constructor(e =
|
|
1266
|
+
constructor(e = et) {
|
|
1264
1267
|
l(this, "contractType", "Sequential Workflow");
|
|
1265
1268
|
l(this, "contractBlueId", f["Sequential Workflow"]);
|
|
1266
1269
|
l(this, "role", "handler");
|
|
@@ -1300,7 +1303,7 @@ class re {
|
|
|
1300
1303
|
}
|
|
1301
1304
|
}
|
|
1302
1305
|
}
|
|
1303
|
-
class
|
|
1306
|
+
class tt {
|
|
1304
1307
|
constructor(e) {
|
|
1305
1308
|
l(this, "contractType", "Sequential Workflow Operation");
|
|
1306
1309
|
l(this, "contractBlueId", f["Sequential Workflow Operation"]);
|
|
@@ -1326,8 +1329,8 @@ class et {
|
|
|
1326
1329
|
}
|
|
1327
1330
|
}
|
|
1328
1331
|
}
|
|
1329
|
-
const Q = (c) => E.isTypeOf(c.payload,
|
|
1330
|
-
class
|
|
1332
|
+
const Q = (c) => E.isTypeOf(c.payload, k);
|
|
1333
|
+
class nt extends P {
|
|
1331
1334
|
constructor() {
|
|
1332
1335
|
super(...arguments);
|
|
1333
1336
|
l(this, "contractType", "Timeline Channel");
|
|
@@ -1338,7 +1341,7 @@ class tt extends P {
|
|
|
1338
1341
|
if (!this.baseSupports(t) || !Q(t)) return !1;
|
|
1339
1342
|
const a = o.getBlue().nodeToSchemaOutput(
|
|
1340
1343
|
t.payload,
|
|
1341
|
-
|
|
1344
|
+
k
|
|
1342
1345
|
), s = o.getBlue().nodeToSchemaOutput(n, Te), i = (h = a.timeline) == null ? void 0 : h.timelineId;
|
|
1343
1346
|
return m(s.timelineId) && m(i) && i === s.timelineId;
|
|
1344
1347
|
}
|
|
@@ -1350,12 +1353,12 @@ class tt extends P {
|
|
|
1350
1353
|
});
|
|
1351
1354
|
}
|
|
1352
1355
|
}
|
|
1353
|
-
const
|
|
1356
|
+
const ot = [
|
|
1354
1357
|
new Qe(),
|
|
1355
1358
|
// channels
|
|
1356
1359
|
new Le(),
|
|
1357
1360
|
new Fe(),
|
|
1358
|
-
new
|
|
1361
|
+
new nt(),
|
|
1359
1362
|
new ze(),
|
|
1360
1363
|
new He(),
|
|
1361
1364
|
new Ve(),
|
|
@@ -1363,17 +1366,17 @@ const nt = [
|
|
|
1363
1366
|
new Re(),
|
|
1364
1367
|
// sequential workflows
|
|
1365
1368
|
new re(),
|
|
1366
|
-
new
|
|
1369
|
+
new tt(),
|
|
1367
1370
|
// markers
|
|
1368
1371
|
new Ue()
|
|
1369
1372
|
];
|
|
1370
|
-
class
|
|
1373
|
+
class ut {
|
|
1371
1374
|
/**
|
|
1372
1375
|
* Creates a new document processor
|
|
1373
1376
|
*
|
|
1374
1377
|
* @param processors - Initial list of processors to register
|
|
1375
1378
|
*/
|
|
1376
|
-
constructor(e, t =
|
|
1379
|
+
constructor(e, t = ot) {
|
|
1377
1380
|
l(this, "taskCounter", 0);
|
|
1378
1381
|
l(this, "eventCounter", 0);
|
|
1379
1382
|
l(this, "registry");
|
|
@@ -1466,24 +1469,24 @@ class lt {
|
|
|
1466
1469
|
for (const g of b)
|
|
1467
1470
|
if (g.kind === "patch") {
|
|
1468
1471
|
const ae = W(t, this.blue);
|
|
1469
|
-
for (const
|
|
1472
|
+
for (const C of ae) {
|
|
1470
1473
|
const se = g.patch.op === "move" || g.patch.op === "copy" ? [g.patch.from, g.patch.path] : [g.patch.path], j = w.getNodePath(), ce = se.some(
|
|
1471
|
-
(le) => F(le,
|
|
1474
|
+
(le) => F(le, C.absPath)
|
|
1472
1475
|
), ie = F(
|
|
1473
1476
|
j,
|
|
1474
|
-
|
|
1477
|
+
C.absPath
|
|
1475
1478
|
);
|
|
1476
1479
|
if (ce && !ie)
|
|
1477
1480
|
throw new te(
|
|
1478
1481
|
g.patch,
|
|
1479
|
-
|
|
1482
|
+
C.absPath,
|
|
1480
1483
|
j
|
|
1481
1484
|
);
|
|
1482
1485
|
}
|
|
1483
1486
|
try {
|
|
1484
1487
|
t = L(t, [g.patch]);
|
|
1485
|
-
} catch (
|
|
1486
|
-
throw We(u, d,
|
|
1488
|
+
} catch (C) {
|
|
1489
|
+
throw We(u, d, C), C;
|
|
1487
1490
|
}
|
|
1488
1491
|
} else g.kind === "event" && (n.push(g.event.payload), await this.router.route(t, [], g.event, s.key[5]));
|
|
1489
1492
|
}
|
|
@@ -1494,7 +1497,7 @@ class lt {
|
|
|
1494
1497
|
}
|
|
1495
1498
|
}
|
|
1496
1499
|
export {
|
|
1497
|
-
|
|
1500
|
+
ut as BlueDocumentProcessor,
|
|
1498
1501
|
xe as ChannelEventCheckpointProcessor,
|
|
1499
1502
|
Ve as CompositeTimelineChannelProcessor,
|
|
1500
1503
|
Fe as DocumentUpdateChannelProcessor,
|
|
@@ -1505,7 +1508,7 @@ export {
|
|
|
1505
1508
|
ze as MyOSTimelineChannelProcessor,
|
|
1506
1509
|
Re as OperationProcessor,
|
|
1507
1510
|
Qe as ProcessEmbeddedProcessor,
|
|
1508
|
-
|
|
1511
|
+
tt as SequentialWorkflowOperationProcessor,
|
|
1509
1512
|
re as SequentialWorkflowProcessor,
|
|
1510
|
-
|
|
1513
|
+
nt as TimelineChannelProcessor
|
|
1511
1514
|
};
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blue-labs/document-processor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.26.1",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@blue-labs/language": "1.
|
|
6
|
-
"@blue-labs/shared-utils": "1.
|
|
5
|
+
"@blue-labs/language": "1.26.1",
|
|
6
|
+
"@blue-labs/shared-utils": "1.26.1",
|
|
7
7
|
"isolated-vm": "^5.0.4"
|
|
8
8
|
},
|
|
9
9
|
"main": "./dist/index.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"name": "document-processor"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"@blue-repository/core-dev": "^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0",
|
|
37
|
-
"@blue-repository/myos-dev": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0"
|
|
36
|
+
"@blue-repository/core-dev": "^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0",
|
|
37
|
+
"@blue-repository/myos-dev": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0 || ^0.17.0"
|
|
38
38
|
}
|
|
39
39
|
}
|