@polagram/core 0.1.0 → 0.1.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/polagram-core.js
CHANGED
|
@@ -182,8 +182,12 @@ class Xe {
|
|
|
182
182
|
}), this.add("end");
|
|
183
183
|
}
|
|
184
184
|
visitNote(e) {
|
|
185
|
-
const n = e.position || "over", r = e.participantIds.join(", ")
|
|
186
|
-
|
|
185
|
+
const n = e.position || "over", r = e.participantIds.join(", ");
|
|
186
|
+
let i = "";
|
|
187
|
+
e.participantIds.length > 0 ? n === "over" ? i = `note over ${r}` : i = `note ${n} of ${r}` : i = `note ${n}`, this.add(i), e.text.split(`
|
|
188
|
+
`).forEach((s) => {
|
|
189
|
+
this.add(` ${s}`);
|
|
190
|
+
}), this.add("end note");
|
|
187
191
|
}
|
|
188
192
|
visitActivation(e) {
|
|
189
193
|
this.add(`${e.action} ${e.participantId}`);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
(function(T,x){typeof exports=="object"&&typeof module<"u"?x(exports):typeof define=="function"&&define.amd?define(["exports"],x):(T=typeof globalThis<"u"?globalThis:T||self,x(T.PolagramCore={}))})(this,(function(T){"use strict";const x={"->":{type:"sync",style:{line:"solid",head:"open"}},"->>":{type:"sync",style:{line:"solid",head:"arrow"}},"-->":{type:"reply",style:{line:"dotted",head:"open"}},"-->>":{type:"reply",style:{line:"dotted",head:"arrow"}},"-)":{type:"async",style:{line:"solid",head:"async"}},"--)":{type:"async",style:{line:"dotted",head:"async"}},"-x":{type:"destroy",style:{line:"solid",head:"cross"}},"--x":{type:"destroy",style:{line:"dotted",head:"cross"}}},Ct=Object.entries(x).reduce((t,[e,n])=>{const r=JSON.stringify({type:n.type,style:n.style});return t[r]=e,t},{});function Rt(t,e){const n=JSON.stringify({type:t,style:e});return Ct[n]||"->>"}class ue{constructor(e){this.visitor=e}traverse(e){this.visitor.visitRoot(e)}dispatchEvent(e){switch(e.kind){case"message":this.visitor.visitMessage(e);break;case"fragment":this.visitor.visitFragment(e);break;case"note":this.visitor.visitNote(e);break;case"activation":this.visitor.visitActivation(e);break;case"divider":this.visitor.visitDivider(e);break;case"spacer":this.visitor.visitSpacer(e);break;case"ref":this.visitor.visitReference(e);break}}dispatchEvents(e){for(const n of e)this.dispatchEvent(n)}}class he{lines=[];indentLevel=0;traverser;constructor(){this.traverser=new ue(this)}generate(e){return this.lines=[],this.indentLevel=0,this.traverser.traverse(e),this.lines.join(`
|
|
2
2
|
`)}visitRoot(e){this.lines.push("sequenceDiagram"),this.indentLevel++,e.meta?.title&&this.add(`title ${e.meta.title}`);for(const n of e.participants)this.visitParticipant(n);this.traverser.dispatchEvents(e.events)}visitParticipant(e){const n=e.type==="actor"?"actor":"participant",r=e.name;e.id===e.name?this.add(`${n} ${e.id}`):this.add(`${n} ${e.id} as ${r}`)}visitParticipantGroup(e){let n="box";e.style?.backgroundColor&&(n+=` ${e.style.backgroundColor}`),e.name&&(n+=` ${e.name}`),this.add(n)}visitMessage(e){const n=e.from??"[*]",r=e.to??"[*]",i=Rt(e.type,e.style);let s="";e.lifecycle?.activateTarget&&(s+="+"),e.lifecycle?.deactivateSource&&(s+="-"),this.add(`${n}${i}${s}${r}: ${e.text}`)}visitFragment(e){if(e.branches.length===0)return;const n=e.branches[0],r=n.condition?` ${n.condition}`:"";this.add(`${e.operator}${r}`),this.indent(()=>{this.traverser.dispatchEvents(n.events)});let i="else";e.operator==="par"?i="and":e.operator==="critical"&&(i="option");for(let s=1;s<e.branches.length;s++){const o=e.branches[s],a=o.condition?` ${o.condition}`:"";this.add(`${i}${a}`),this.indent(()=>{this.traverser.dispatchEvents(o.events)})}this.add("end")}visitNote(e){const n=e.position;let r="";e.participantIds.length>0&&(r=e.participantIds.join(","),n!=="over"?r=` of ${r}`:r=` ${r}`),this.add(`note ${n}${r}: ${e.text}`)}visitActivation(e){this.add(`${e.action} ${e.participantId}`)}visitDivider(e){this.add(`%% == ${e.text||""} ==`)}visitSpacer(e){this.add(`...${e.text||""}...`)}visitReference(e){this.add(`%% ref: ${e.text}`)}add(e){const n=" ".repeat(this.indentLevel);this.lines.push(`${n}${e}`)}indent(e){this.indentLevel++,e(),this.indentLevel--}}class le{lines=[];traverser;constructor(){this.traverser=new ue(this)}generate(e){return this.lines=[],this.traverser.traverse(e),this.lines.join(`
|
|
3
|
-
`)}visitRoot(e){this.add("@startuml"),e.meta.title&&this.add(`title ${e.meta.title}`);const n=new Map(e.participants.map(i=>[i.id,i])),r=new Set;for(const i of e.groups)this.visitGroup(i,n),i.participantIds.forEach(s=>{r.add(s)});for(const i of e.participants)r.has(i.id)||this.visitParticipant(i);this.traverser.dispatchEvents(e.events),this.add("@enduml")}visitParticipant(e){e.name===e.id?this.add(`${e.type} ${e.id}`):this.add(`${e.type} "${e.name}" as ${e.id}`)}visitParticipantGroup(e){}visitGroup(e,n){const r=e.style?.backgroundColor?` ${e.style.backgroundColor}`:"",i=e.name?` "${e.name}"`:"";this.add(`box${i}${r}`);for(const s of e.participantIds){const o=n.get(s);o&&this.visitParticipant(o)}this.add("end box")}visitMessage(e){const n=e.from||"[*]",r=e.to||"[*]";let i="->";e.type==="reply"?i="-->":e.type==="async"&&(i="->>"),this.add(`${n} ${i} ${r}: ${e.text}`)}visitFragment(e){const n=e.operator;e.branches.forEach((r,i)=>{i===0?this.add(`${n} ${r.condition||""}`.trim()):this.add(`else ${r.condition||""}`.trim()),this.traverser.dispatchEvents(r.events)}),this.add("end")}visitNote(e){const n=e.position||"over",r=e.participantIds.join(", ")
|
|
3
|
+
`)}visitRoot(e){this.add("@startuml"),e.meta.title&&this.add(`title ${e.meta.title}`);const n=new Map(e.participants.map(i=>[i.id,i])),r=new Set;for(const i of e.groups)this.visitGroup(i,n),i.participantIds.forEach(s=>{r.add(s)});for(const i of e.participants)r.has(i.id)||this.visitParticipant(i);this.traverser.dispatchEvents(e.events),this.add("@enduml")}visitParticipant(e){e.name===e.id?this.add(`${e.type} ${e.id}`):this.add(`${e.type} "${e.name}" as ${e.id}`)}visitParticipantGroup(e){}visitGroup(e,n){const r=e.style?.backgroundColor?` ${e.style.backgroundColor}`:"",i=e.name?` "${e.name}"`:"";this.add(`box${i}${r}`);for(const s of e.participantIds){const o=n.get(s);o&&this.visitParticipant(o)}this.add("end box")}visitMessage(e){const n=e.from||"[*]",r=e.to||"[*]";let i="->";e.type==="reply"?i="-->":e.type==="async"&&(i="->>"),this.add(`${n} ${i} ${r}: ${e.text}`)}visitFragment(e){const n=e.operator;e.branches.forEach((r,i)=>{i===0?this.add(`${n} ${r.condition||""}`.trim()):this.add(`else ${r.condition||""}`.trim()),this.traverser.dispatchEvents(r.events)}),this.add("end")}visitNote(e){const n=e.position||"over",r=e.participantIds.join(", ");let i="";e.participantIds.length>0?n==="over"?i=`note over ${r}`:i=`note ${n} of ${r}`:i=`note ${n}`,this.add(i),e.text.split(`
|
|
4
|
+
`).forEach(s=>{this.add(` ${s}`)}),this.add("end note")}visitActivation(e){this.add(`${e.action} ${e.participantId}`)}visitDivider(e){e.text?this.add(`== ${e.text} ==`):this.add("====")}visitSpacer(e){this.add("|||")}visitReference(e){const n=e.participantIds.join(", ");this.add(`ref over ${n}: ${e.text}`)}add(e){this.lines.push(e)}}class Oe{constructor(e){this.input=e,this.readChar()}position=0;readPosition=0;ch="";line=1;column=0;getInput(){return this.input}readChar(){this.readPosition>=this.input.length?this.ch="":this.ch=this.input[this.readPosition],this.position=this.readPosition,this.readPosition+=1,this.column+=1,this.ch===`
|
|
4
5
|
`&&(this.line+=1,this.column=0)}peekChar(){return this.readPosition>=this.input.length?"":this.input[this.readPosition]}skipWhitespace(){for(;this.ch===" "||this.ch===" "||this.ch==="\r";)this.readChar()}readWhile(e){const n=this.position;for(;e(this.ch);)this.readChar();return this.input.slice(n,this.position)}isLetter(e){return"a"<=e&&e<="z"||"A"<=e&&e<="Z"||e==="_"?!0:e.charCodeAt(0)>127?!/[\s\d]/.test(e):!1}isDigit(e){return"0"<=e&&e<="9"}readIdentifier(){const e=this.position;for(;this.isLetter(this.ch)||this.isDigit(this.ch);)this.readChar();return this.input.slice(e,this.position)}readQuotedString(){const e=this.position+1;for(this.readChar();this.ch!=='"'&&this.ch!==""&&this.ch!==`
|
|
5
6
|
`;)this.readChar();const n=this.input.slice(e,this.position);return this.readChar(),n}createToken(e,n,r,i){return{type:e,literal:n,line:this.line,column:i,start:r,end:this.position>r?this.position:r+n.length}}}let Lt=class extends Oe{nextToken(){if(this.skipWhitespace(),this.ch==="%"&&this.peekChar()==="%")return this.skipComment(),this.nextToken();const e=this.position,n=this.column;let r;switch(this.ch){case":":r=this.newToken("COLON",this.ch,e,n);break;case",":r=this.newToken("COMMA",this.ch,e,n);break;case"+":r=this.newToken("PLUS",this.ch,e,n);break;case"-":if(this.isArrowStart()){const i=this.readArrow();return r=this.newToken("ARROW",i,e,n),r}else r=this.newToken("MINUS",this.ch,e,n);break;case'"':{const i=this.readString();return r=this.newToken("STRING",i,e,n),r}case`
|
|
6
7
|
`:r=this.newToken("NEWLINE",this.ch,e,n);break;case"":r=this.newToken("EOF","",e,n);break;default:if(this.isLetter(this.ch)){const i=this.readIdentifier(),s=this.lookupIdent(i);return this.newToken(s,i,e,n)}else if(this.isDigit(this.ch)){const i=this.readNumber();return this.newToken("IDENTIFIER",i,e,n)}else r=this.newToken("UNKNOWN",this.ch,e,n)}return this.readChar(),r}newToken(e,n,r,i){return{type:e,literal:n,line:this.line,column:i,start:r,end:this.position>r?this.position:r+n.length}}readNumber(){const e=this.position;for(;this.isDigit(this.ch);)this.readChar();return this.input.slice(e,this.position)}readString(){const e=this.position+1;for(this.readChar();this.ch!=='"'&&this.ch!==""&&this.ch!==`
|