@distrohelena/canton-explorer 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/README.md +26 -0
- package/config/nodes.example.json +5 -1
- package/dist/public/assets/DebuggerView-DzYGvNSr.js +2 -0
- package/dist/public/assets/css.worker-BKx7BC4h.js +89 -0
- package/dist/public/assets/editor-C5uazxST.css +1 -0
- package/dist/public/assets/editor.api-8w-mShFJ.js +820 -0
- package/dist/public/assets/editor.worker-DQJwLooG.js +26 -0
- package/dist/public/assets/html.worker-ChRLLxCa.js +502 -0
- package/dist/public/assets/index-BN8qy18M.css +1 -0
- package/dist/public/assets/index-C96u6Tuy.js +1 -0
- package/dist/public/assets/json.worker-DR52qCex.js +58 -0
- package/dist/public/assets/ts.worker-Cqvg7802.js +67734 -0
- package/dist/public/index.html +2 -2
- package/dist/src/api/debugger.controller.d.ts +16 -0
- package/dist/src/api/debugger.controller.js +105 -0
- package/dist/src/api/debugger.controller.js.map +1 -0
- package/dist/src/app.module.js +4 -1
- package/dist/src/app.module.js.map +1 -1
- package/dist/src/config/node-config.schema.d.ts +11 -0
- package/dist/src/config/node-config.schema.js +8 -0
- package/dist/src/config/node-config.schema.js.map +1 -1
- package/dist/src/config/node-config.service.d.ts +2 -1
- package/dist/src/config/node-config.service.js +3 -0
- package/dist/src/config/node-config.service.js.map +1 -1
- package/dist/src/debugger/debugger.service.d.ts +158 -0
- package/dist/src/debugger/debugger.service.js +746 -0
- package/dist/src/debugger/debugger.service.js.map +1 -0
- package/dist/src/domain/node.types.d.ts +1 -1
- package/dist/src/packages/daml-decoder.types.d.ts +8 -1
- package/dist/src/packages/daml-value-decoder.service.js.map +1 -1
- package/dist/src/packages/package-cache.service.js +103 -7
- package/dist/src/packages/package-cache.service.js.map +1 -1
- package/dist/src/packages/package-registry.service.js.map +1 -1
- package/dist/src/packages/package-sync.service.js +31 -3
- package/dist/src/packages/package-sync.service.js.map +1 -1
- package/dist/src/packages/pqs-package.service.js +15 -80
- package/dist/src/packages/pqs-package.service.js.map +1 -1
- package/dist/src/pqs/pqs-schema.d.ts +3 -0
- package/dist/src/pqs/pqs-schema.js +32 -0
- package/dist/src/pqs/pqs-schema.js.map +1 -0
- package/dist/src/pqs/pqs-summary.service.d.ts +3 -3
- package/dist/src/pqs/pqs-summary.service.js +619 -1414
- package/dist/src/pqs/pqs-summary.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +35 -31
- package/dist/public/assets/index-NfJYgVwb.css +0 -1
- package/dist/public/assets/index-ybPCCjei.js +0 -1
package/README.md
CHANGED
|
@@ -38,6 +38,32 @@ Create `./config/nodes.local.json` in the directory where you run the command. U
|
|
|
38
38
|
The explorer also expects the PQS PostgreSQL connection strings referenced by
|
|
39
39
|
`connectionUriEnv` to be available in the environment.
|
|
40
40
|
|
|
41
|
+
## Local Debug DARs
|
|
42
|
+
|
|
43
|
+
The debugger can prefer local source-mapped DARs before falling back to the
|
|
44
|
+
participant package service.
|
|
45
|
+
|
|
46
|
+
By default it scans:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
./debug-dars
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
relative to the current working directory.
|
|
53
|
+
|
|
54
|
+
You can also set this explicitly in `nodes.local.json`:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"debugger": {
|
|
59
|
+
"localDarDirectory": "./debug-dars"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Put sibling `*-debug.dar` files in that folder. The explorer indexes them by
|
|
65
|
+
their main package id and uses them only for debugger source/artifact loading.
|
|
66
|
+
|
|
41
67
|
## Local Development
|
|
42
68
|
|
|
43
69
|
From the repo root:
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
+
"debugger": {
|
|
3
|
+
"localDarDirectory": "./debug-dars"
|
|
4
|
+
},
|
|
2
5
|
"tokenMetadata": {
|
|
3
6
|
"nameKeys": ["name"],
|
|
4
7
|
"symbolKeys": ["symbol"]
|
|
@@ -11,7 +14,8 @@
|
|
|
11
14
|
"mode": "pqs_with_grpc",
|
|
12
15
|
"ledgerLabel": "Retail Ledger",
|
|
13
16
|
"pqs": {
|
|
14
|
-
"connectionUriEnv": "PARTICIPANT_1_PQS_URL"
|
|
17
|
+
"connectionUriEnv": "PARTICIPANT_1_PQS_URL",
|
|
18
|
+
"schema": "public"
|
|
15
19
|
},
|
|
16
20
|
"grpc": {
|
|
17
21
|
"ledgerTarget": "localhost:5012",
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor.api-8w-mShFJ.js","assets/editor-C5uazxST.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{A as e,C as t,D as n,E as r,M as i,N as a,O as o,S as s,T as c,_ as l,a as u,b as d,c as f,d as p,f as m,g as h,h as g,i as _,j as v,k as y,l as b,m as x,n as ee,o as te,p as S,r as ne,s as re,t as C,u as w,v as T,w as E,x as ie,y as D}from"./index-C96u6Tuy.js";var O={class:`debugger-control-panel`,"data-testid":`debugger-control-panel`,"aria-label":`Debugger controls`},k={class:`debugger-control-panel__actions`},A=[`disabled`],j=[`disabled`],M=[`disabled`],N=[`disabled`],P=[`disabled`],F=[`disabled`],ae=D({__name:`DebuggerControlPanel`,props:{actionLoading:{type:Boolean},isTerminal:{type:Boolean},currentStepIndex:{}},emits:[`drag-start`,`refresh`,`action`],setup(e){return(n,r)=>(t(),h(`section`,O,[S(`div`,{class:`debugger-control-panel__handle`,"data-testid":`debugger-control-panel-handle`,onPointerdown:r[0]||=w(e=>n.$emit(`drag-start`,e),[`stop`,`prevent`])},[...r[7]||=[S(`span`,{class:`debugger-control-panel__title`},`Replay Controls`,-1),S(`span`,{class:`debugger-control-panel__meta`},`drag to reposition`,-1)]],32),S(`div`,k,[S(`button`,{type:`button`,class:`debugger-control-panel__button`,disabled:e.actionLoading||e.currentStepIndex<=0,onClick:r[1]||=e=>n.$emit(`action`,`step-back`)},` Step Back `,8,A),S(`button`,{type:`button`,class:`debugger-control-panel__button`,disabled:e.actionLoading,onClick:r[2]||=e=>n.$emit(`refresh`)},` Refresh `,8,j),S(`button`,{type:`button`,class:`debugger-control-panel__button`,disabled:e.actionLoading||e.isTerminal,onClick:r[3]||=e=>n.$emit(`action`,`step-into`)},` Step Into `,8,M),S(`button`,{type:`button`,class:`debugger-control-panel__button`,disabled:e.actionLoading||e.isTerminal,onClick:r[4]||=e=>n.$emit(`action`,`step-over`)},` Step Over `,8,N),S(`button`,{type:`button`,class:`debugger-control-panel__button`,disabled:e.actionLoading||e.isTerminal,onClick:r[5]||=e=>n.$emit(`action`,`step-out`)},` Step Out `,8,P),S(`button`,{type:`button`,class:`debugger-control-panel__button`,disabled:e.actionLoading||e.isTerminal,onClick:r[6]||=e=>n.$emit(`action`,`continue`)},` Continue `,8,F)])]))}}),oe={class:`debugger-event-list`,"data-testid":`debugger-event-list`},I={class:`debugger-event-list__header`},L={class:`debugger-event-list__count`},R={class:`debugger-event-list__tabs`,role:`tablist`,"aria-label":`Ledger event views`},se=[`aria-selected`],z=[`aria-selected`],B={key:0,class:`debugger-event-list__empty`},V={key:1,class:`debugger-event-list__empty`},H={key:2,class:`debugger-event-list__empty`},U={key:3,class:`debugger-event-list__items`},ce=[`data-testid`,`onClick`],W={class:`debugger-event-list__ordinal`},le={class:`debugger-event-list__summary`},ue={class:`debugger-event-list__location`},G={key:4,class:`debugger-event-list__items`},K=[`data-testid`,`aria-expanded`,`onClick`],de={class:`debugger-event-list__ordinal`},q={class:`debugger-event-list__summary`},fe={class:`debugger-event-list__location`},J=[`data-testid`],Y={class:`debugger-event-list__detail-grid`},X={class:`debugger-event-list__detail-block`},pe={class:`debugger-event-list__detail-block`},me=D({__name:`DebuggerEventList`,props:{realEvents:{},replayEvents:{},currentStepId:{},loading:{type:Boolean}},emits:[`selectStep`],setup(e,{emit:n}){let r=e,i=n,s=o(`real`),l=o(new Set),u=m(()=>s.value===`real`?r.realEvents.length:r.replayEvents.length);function d(e){let t=e.templateId?.entityName??`unknown-template`,n=e.choice?`.${e.choice}`:``,r=e.targetContractId??e.createdContractId;return[e.kind??`event`,`${t}${n}`,r].filter(Boolean).join(` `)}function f(e){e&&i(`selectStep`,e)}function _(e){return e.stepId??`event-${e.stepIndex}`}function y(e){return l.value.has(_(e))}function b(e){let t=new Set(l.value),n=_(e);t.has(n)?t.delete(n):t.add(n),l.value=t}function x(e){if(e==null)return`n/a`;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}return c(()=>r.replayEvents.map(e=>_(e)),e=>{let t=new Set(e);l.value=new Set([...l.value].filter(e=>t.has(e)))}),(n,i)=>(t(),h(`section`,oe,[S(`div`,I,[i[2]||=S(`h3`,null,`Ledger Events`,-1),S(`span`,L,a(u.value)+` events`,1)]),S(`div`,R,[S(`button`,{type:`button`,role:`tab`,class:v([`debugger-event-list__tab`,{"debugger-event-list__tab--active":s.value===`real`}]),"aria-selected":s.value===`real`,onClick:i[0]||=e=>s.value=`real`},` Real Events `,10,se),S(`button`,{type:`button`,role:`tab`,class:v([`debugger-event-list__tab`,{"debugger-event-list__tab--active":s.value===`replay`}]),"aria-selected":s.value===`replay`,onClick:i[1]||=e=>s.value=`replay`},` Replay Events `,10,z)]),e.loading?(t(),h(`p`,B,`Loading ledger events…`)):s.value===`real`&&e.realEvents.length===0?(t(),h(`p`,V,` No real ledger events are available for this update. `)):s.value===`replay`&&e.replayEvents.length===0?(t(),h(`p`,H,` No replay ledger events were emitted in this session. `)):s.value===`real`?(t(),h(`ol`,U,[(t(!0),h(p,null,E(r.realEvents,n=>(t(),h(`li`,{key:n.stepId??`real-event-${n.stepIndex}`,class:`debugger-event-list__item`},[S(`button`,{type:`button`,class:v([`debugger-event-list__button`,{"debugger-event-list__button--active":n.stepId===e.currentStepId}]),"data-testid":`real-debugger-event-${n.stepIndex}`,onClick:e=>f(n.stepId)},[S(`span`,W,`#`+a(n.eventOrdinal??n.stepIndex),1),S(`span`,le,a(d(n)),1),S(`span`,ue,a(n.sourceLocation?.startLine??`n/a`),1)],10,ce)]))),128))])):(t(),h(`ol`,G,[(t(!0),h(p,null,E(r.replayEvents,e=>(t(),h(`li`,{key:_(e),class:`debugger-event-list__item`},[S(`button`,{type:`button`,class:v([`debugger-event-list__button`,{"debugger-event-list__button--expanded":y(e)}]),"data-testid":`debugger-event-${e.stepIndex}`,"aria-expanded":y(e),onClick:t=>b(e)},[S(`span`,de,`#`+a(e.eventOrdinal??e.stepIndex),1),S(`span`,q,a(d(e)),1),S(`span`,fe,a(e.sourceLocation?.startLine??`n/a`),1)],10,K),y(e)?(t(),h(`div`,{key:0,class:`debugger-event-list__details`,"data-testid":`debugger-event-details-${e.stepIndex}`},[S(`dl`,Y,[S(`div`,null,[i[3]||=S(`dt`,null,`Kind`,-1),S(`dd`,null,a(e.kind??`n/a`),1)]),S(`div`,null,[i[4]||=S(`dt`,null,`Template`,-1),S(`dd`,null,a(e.templateId?.entityName??`n/a`),1)]),S(`div`,null,[i[5]||=S(`dt`,null,`Choice`,-1),S(`dd`,null,a(e.choice??`n/a`),1)]),S(`div`,null,[i[6]||=S(`dt`,null,`Contract`,-1),S(`dd`,null,a(e.targetContractId??e.createdContractId??`n/a`),1)]),S(`div`,null,[i[7]||=S(`dt`,null,`Phase`,-1),S(`dd`,null,a(e.phase),1)]),S(`div`,null,[i[8]||=S(`dt`,null,`Source`,-1),S(`dd`,null,a(e.sourceLocation?.startLine??`n/a`),1)])]),S(`div`,X,[i[9]||=S(`h4`,null,`Choice Argument`,-1),S(`pre`,null,a(x(e.choiceArgument)),1)]),S(`div`,pe,[i[10]||=S(`h4`,null,`Payload`,-1),S(`pre`,null,a(x(e.payload)),1)])],8,J)):g(``,!0)]))),128))]))]))}}),he={class:`debugger-scope-panel`,"data-testid":`debugger-scope-panel`},ge={class:`debugger-scope-panel__header`},_e={class:`debugger-scope-panel__count`},ve={key:0,class:`debugger-scope-panel__empty`},ye=[`aria-expanded`,`onClick`],be={class:`debugger-scope-panel__scope-header`},xe={class:`debugger-scope-panel__scope-meta`},Se={class:`debugger-scope-panel__scope-id`},Ce={class:`debugger-scope-panel__scope-chevron`,"aria-hidden":`true`},we={key:0,class:`debugger-scope-panel__variables`},Z={class:`debugger-scope-panel__variable-meta`},Q={class:`debugger-scope-panel__kind`},Te={key:1,class:`debugger-scope-panel__empty`},Ee=D({__name:`DebuggerScopePanel`,props:{scopes:{},nodeId:{}},setup(n){let i=n,s=o(new Set);function u(e,t){return t===`contractId`&&e===`selfContractId`?`self`:e??`value`}function d(e,t){return e!==`contractId`||!i.nodeId||!t?null:`/nodes/${encodeURIComponent(i.nodeId)}/contracts/${encodeURIComponent(t)}`}function f(e){return e.frameId??e.name??`scope`}function m(e){return s.value.has(f(e))}function _(e){let t=new Set(s.value),n=f(e);t.has(n)?t.delete(n):t.add(n),s.value=t}return c(()=>i.scopes.map(e=>f(e)),e=>{let t=new Set(e);s.value=new Set([...s.value].filter(e=>t.has(e)))}),(i,o)=>(t(),h(`section`,he,[S(`div`,ge,[o[0]||=S(`h3`,null,`In-Scope Variables`,-1),S(`span`,_e,a(n.scopes.length)+` frames`,1)]),n.scopes.length===0?(t(),h(`p`,ve,` No scoped variables are available at this step. `)):g(``,!0),(t(!0),h(p,null,E(n.scopes,n=>(t(),h(`div`,{key:f(n),class:`debugger-scope-panel__scope`},[S(`button`,{type:`button`,class:`debugger-scope-panel__scope-toggle`,"aria-expanded":!m(n),onClick:e=>_(n)},[S(`div`,be,[S(`h4`,null,a(n.name??n.frameId??`Frame`),1),S(`div`,xe,[S(`span`,Se,a(n.frameId??`anonymous`),1),S(`span`,Ce,a(m(n)?`▸`:`▾`),1)])])],8,ye),!m(n)&&n.variables.length>0?(t(),h(`ul`,we,[(t(!0),h(p,null,E(n.variables,i=>(t(),h(`li`,{key:`${n.frameId??`scope`}:${i.name??`variable`}`,class:`debugger-scope-panel__variable`},[S(`div`,Z,[S(`strong`,null,a(u(i.name,i.kind)),1),S(`span`,Q,a(i.kind??`value`),1)]),S(`code`,null,[d(i.kind,i.value)?(t(),x(e(re),{key:0,class:`debugger-scope-panel__value-link`,to:d(i.kind,i.value)??``,target:`_blank`,rel:`noreferrer`},{default:r(()=>[l(a(i.value??`null`),1)]),_:2},1032,[`to`])):(t(),h(p,{key:1},[l(a(i.value??`null`),1)],64))])]))),128))])):m(n)?g(``,!0):(t(),h(`p`,Te,`No variables in this frame.`))]))),128))]))}});function De(e){return new Worker(`/assets/editor.worker-DQJwLooG.js`,{name:e?.name})}function Oe(e){return new Worker(`/assets/json.worker-DR52qCex.js`,{name:e?.name})}function ke(e){return new Worker(`/assets/css.worker-BKx7BC4h.js`,{name:e?.name})}function Ae(e){return new Worker(`/assets/html.worker-ChRLLxCa.js`,{name:e?.name})}function je(e){return new Worker(`/assets/ts.worker-Cqvg7802.js`,{name:e?.name})}var Me=`canton-explorer-noctis-uva`,Ne=`daml`,Pe=null;function Fe(){let e=globalThis;e.MonacoEnvironment||={getWorker(e,t){switch(t){case`json`:return new Oe;case`css`:case`scss`:case`less`:return new ke;case`html`:case`handlebars`:case`razor`:return new Ae;case`typescript`:case`javascript`:return new je;default:return new De}}}}function Ie(e){e.languages.register({id:Ne,extensions:[`.daml`],aliases:[`DAML`,`daml`]}),e.languages.setLanguageConfiguration(Ne,{comments:{lineComment:`--`,blockComment:[`{-`,`-}`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`}],indentationRules:{increaseIndentPattern:/^.*(\b(where|of|do|let|then|else)\b.*|[\[{(])$/,decreaseIndentPattern:/^\s*[\]})]/}}),e.languages.setMonarchTokensProvider(Ne,{defaultToken:``,tokenPostfix:`.daml`,keywords:`module.where.import.as.qualified.hiding.template.with.signatory.observer.controller.choice.nonconsuming.key.maintainer.archive.fetch.fetchByKey.lookupByKey.to.do.let.in.if.then.else.case.of.data.type.newtype.class.instance.deriving.interface.view.method.exception.message.exercise.exerciseByKey.create.createAndExercise.submit.submitMustFail.return.forall.from.when.unless.has.implements.interface.this.self.enum.struct`.split(`.`),builtins:[`True`,`False`,`None`,`Some`,`Optional`,`Text`,`Int`,`Decimal`,`Numeric`,`Bool`,`Party`,`Time`,`Date`,`RelTime`,`ContractId`,`Update`,`Scenario`,`Any`,`AnyException`,`List`,`Map`,`TextMap`,`Unit`],operators:[`=`,`->`,`<-`,`=>`,`::`,`:`,`\\`,`|`,`.`,`,`,`;`,`==`,`/=`,`<`,`>`,`<=`,`>=`,`&&`,`||`,`+`,`-`,`*`,`/`,`++`,`$`],escapes:/\\(?:[abfnrtv\\\"']|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[ \t\r\n]+/,`white`],[/--.*$/,`comment`],[/\{-/,{token:`comment`,next:`@comment`}],[/"([^"\\]|\\.)*$/,`string.invalid`],[/"/,{token:`string.quote`,bracket:`@open`,next:`@string`}],[/'[^\\']'/,`string`],[/'/,`string.invalid`],[/\b[0-9][0-9_]*(\.[0-9_]+)?\b/,`number`],[/\b[A-Z][\w']*(\.[A-Z][\w']*)*\b/,{cases:{"@builtins":`type`,"@default":`type.identifier`}}],[/\b[a-z_][\w']*\b/,{cases:{"@keywords":`keyword`,"@default":`identifier`}}],[/[{}()[\]]/,`@brackets`],[/[;,.]/,`delimiter`],[/[:!#$%&*+./<=>?@\\^|\-~]+/,{cases:{"@operators":`operator`,"@default":`operator`}}]],comment:[[/[^\{-]+/,`comment`],[/\{-/,{token:`comment`,next:`@push`}],[/-\}/,{token:`comment`,next:`@pop`}],[/[\{-]/,`comment`]],string:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,{token:`string.quote`,bracket:`@close`,next:`@pop`}]]}})}function Le(e){e.editor.defineTheme(Me,{base:`vs-dark`,inherit:!0,rules:[{token:``,foreground:`D8D3E8`,background:`252845`},{token:`comment`,foreground:`A39DBA`,fontStyle:`italic`},{token:`string`,foreground:`7FE6D7`},{token:`string.escape`,foreground:`FAD7A0`},{token:`number`,foreground:`A89BFF`},{token:`keyword`,foreground:`FFB86C`},{token:`operator`,foreground:`F2EFFA`},{token:`delimiter`,foreground:`D8D3E8`},{token:`type`,foreground:`7AD7FF`},{token:`type.identifier`,foreground:`7AD7FF`},{token:`identifier`,foreground:`F0E9FF`},{token:`identifier.daml`,foreground:`F0E9FF`},{token:`keyword.daml`,foreground:`FFB86C`},{token:`type.identifier.daml`,foreground:`7AD7FF`},{token:`variable`,foreground:`F0E9FF`},{token:`variable.parameter`,foreground:`FFCAA1`,fontStyle:`italic`},{token:`function`,foreground:`7AD7FF`},{token:`function.call`,foreground:`7FE6D7`},{token:`tag`,foreground:`FFB86C`},{token:`attribute.name`,foreground:`FFCAA1`}],colors:{"editor.background":`#252845`,"editor.foreground":`#D8D3E8`,"editorLineNumber.foreground":`#787291`,"editorLineNumber.activeForeground":`#D8D3E8`,"editorCursor.foreground":`#FFB86C`,"editor.selectionBackground":`#3A3E67`,"editor.inactiveSelectionBackground":`#303356`,"editor.lineHighlightBackground":`#2B2E4C`,"editorLineNumber.dimmedForeground":`#605B77`,"editorIndentGuide.background1":`#3A3D59`,"editorIndentGuide.activeBackground1":`#5A5E84`,"editorWhitespace.foreground":`#4A4E72`,"editorGutter.background":`#252845`,"editorWidget.background":`#2B2F4D`,"editorWidget.border":`#484C6B`,"scrollbarSlider.background":`#52577466`,"scrollbarSlider.hoverBackground":`#666C8C88`,"scrollbarSlider.activeBackground":`#7A82A699`}})}async function Re(){return Pe||=C(()=>import(`./editor.api-8w-mShFJ.js`).then(e=>(Fe(),Ie(e),Le(e),e)),__vite__mapDeps([0,1])),Pe}var ze={class:`monaco-surface`},Be={key:0,class:`monaco-surface__state monaco-surface__state--loading`},Ve={key:1,class:`monaco-surface__state monaco-surface__state--error`},He=[`aria-label`],Ue=D({__name:`MonacoCodeSurface`,props:{modelValue:{},language:{default:`plaintext`},theme:{default:`dark`},readOnly:{type:Boolean,default:!0},ariaLabel:{default:`Code editor`},highlightRange:{default:null}},setup(e){let r=e,i=o(null),l=o(!0),u=o(null),d=y(null),f=y(null),p=y(null),m=null,_=[];function v(e){return e===`light`?`vs`:Me}async function x(){if(i.value){l.value=!0,u.value=null;try{let e=await Re();if(!i.value)return;d.value=e,p.value=e.editor.createModel(r.modelValue,r.language),e.editor.setTheme(v(r.theme)),f.value=e.editor.create(i.value,{model:p.value,readOnly:r.readOnly,automaticLayout:!1,minimap:{enabled:!1},scrollBeyondLastLine:!1,lineNumbers:`on`,wordWrap:`on`,glyphMargin:!0,renderLineHighlight:`all`,fontSize:13,tabSize:2,ariaLabel:r.ariaLabel}),m=new ResizeObserver(e=>{let t=e[0],n=t?.contentRect.width??i.value?.clientWidth??0,r=t?.contentRect.height??i.value?.clientHeight??0;n>0&&r>0&&f.value?.layout({width:n,height:r})}),m.observe(i.value),ee()}catch(e){u.value=e instanceof Error?e.message:`Failed to load Monaco editor`}finally{l.value=!1}}}function ee(){let e=d.value,t=f.value;if(!e||!t)return;if(!r.highlightRange){_=t.deltaDecorations(_,[]);return}let{startLine:n,startColumn:i,endLine:a,endColumn:o}=r.highlightRange;_=t.deltaDecorations(_,[{range:new e.Range(n,i,a,o),options:{className:`monaco-surface__highlight`,isWholeLine:!1}},{range:new e.Range(n,1,n,1),options:{isWholeLine:!0,className:`monaco-surface__execution-line`,linesDecorationsClassName:`monaco-surface__execution-line-gutter`}}]),t.revealLineInCenter(n)}return c(()=>r.modelValue,e=>{!p.value||e===p.value.getValue()||p.value.setValue(e)}),c(()=>r.language,e=>{!p.value||!d.value||d.value.editor.setModelLanguage(p.value,e)}),c(()=>r.theme,e=>{d.value?.editor.setTheme(v(e))}),c(()=>r.readOnly,e=>{f.value?.updateOptions({readOnly:e})}),c(()=>r.highlightRange,()=>{ee()},{deep:!0}),s(()=>{x()}),ie(()=>{m?.disconnect(),f.value&&(_=f.value.deltaDecorations(_,[])),f.value?.dispose(),p.value?.dispose()}),(r,o)=>(t(),h(`div`,ze,[l.value?(t(),h(`div`,Be,` Loading editor... `)):u.value?(t(),h(`div`,Ve,a(u.value),1)):g(``,!0),n(S(`div`,{ref_key:`container`,ref:i,class:`monaco-surface__editor`,"aria-label":e.ariaLabel},null,8,He),[[b,!l.value&&!u.value]])]))}}),We={class:`debugger-view`},Ge={key:0,class:`node-detail__message node-detail__message--error`},Ke={key:1,class:`node-detail__message`},qe={class:`debugger-view__editor-shell`,"data-testid":`debugger-editor-shell`},Je={class:`debugger-view__summary`,"data-testid":`debugger-summary`},Ye={class:`debugger-view__summary-columns`},Xe={class:`debugger-view__summary-column debugger-view__summary-column--context`,"data-testid":`debugger-summary-context`},Ze={class:`debugger-view__summary-header`},Qe={class:`debugger-view__panel-meta`},$e={class:`debugger-view__signal-row`},et={class:`debugger-view__status`},tt={class:`debugger-view__status`},nt={class:`debugger-view__summary-section`},rt={class:`debugger-view__panel-copy`},it={class:`detail-grid debugger-view__summary-grid`},at={class:`update-detail__id`},ot={class:`debugger-view__summary-item debugger-view__summary-item--canonical`},st={class:`update-detail__canonical`},ct={key:1},lt={class:`update-detail__canonical`},ut={class:`debugger-view__summary-column debugger-view__summary-column--events`,"data-testid":`debugger-summary-events`},dt=14,ft=320,pt=420,mt=48,$=16,ht=D({__name:`DebuggerView`,setup(n){let p=f(),v=o(`dark`),y=o(null),b=o([]),C=o(!1),w=o(!1),E=o(!1),D=o(null),O=o(null),k=o(null),A=o(null),j=o(typeof window>`u`?1280:window.innerWidth),M=o(null),N=null,P=null,F=null,oe=0,I=0;function L(){v.value=document.documentElement.dataset.theme===`light`?`light`:`dark`}let R=m(()=>j.value<=980);function se(e){let t=O.value;if(!t)return e;let n=Math.max(pt,t.clientWidth-ft-dt);return Math.min(Math.max(e,pt),n)}function z(e){A.value=se(e)}function B(){P=null,window.removeEventListener(`pointermove`,G),window.removeEventListener(`pointerup`,K),window.removeEventListener(`pointercancel`,K),document.body.classList.remove(`debugger-view--resizing`)}function V(e){let t=O.value,n=k.value;if(!t||!n)return e;let r=Math.max($,t.clientWidth-n.offsetWidth-$),i=Math.max($,t.clientHeight-n.offsetHeight-$);return{x:Math.min(Math.max(e.x,$),r),y:Math.min(Math.max(e.y,$),i)}}function H(){if(R.value)return;let e=O.value,t=k.value;if(!e||!t)return;let n=Math.max($,Math.round((e.clientWidth-t.offsetWidth)/2));M.value=V({x:n,y:$})}function U(){F=null,window.removeEventListener(`pointermove`,ce),window.removeEventListener(`pointerup`,W),window.removeEventListener(`pointercancel`,W),document.body.classList.remove(`debugger-view--dragging-panel`)}function ce(e){let t=O.value;if(!t)return;let n=t.getBoundingClientRect();M.value=V({x:e.clientX-n.left-oe,y:e.clientY-n.top-I})}function W(e){e&&F!==null&&e.pointerId!==F||U()}function le(e){if(R.value||!k.value)return;let t=k.value.getBoundingClientRect();F=e.pointerId,oe=e.clientX-t.left,I=e.clientY-t.top,document.body.classList.add(`debugger-view--dragging-panel`),window.addEventListener(`pointermove`,ce),window.addEventListener(`pointerup`,W),window.addEventListener(`pointercancel`,W)}function ue(){if(j.value=window.innerWidth,R.value){U();return}if(M.value===null){d().then(()=>{H()});return}M.value=V(M.value)}function G(e){let t=O.value;if(!t)return;let n=t.getBoundingClientRect();z(e.clientX-n.left)}function K(e){e&&P!==null&&e.pointerId!==P||B()}function de(e){window.innerWidth<=980||(P=e.pointerId,document.body.classList.add(`debugger-view--resizing`),window.addEventListener(`pointermove`,G),window.addEventListener(`pointerup`,K),window.addEventListener(`pointercancel`,K),G(e))}function q(e){let t=O.value;if(!t)return;let n=Math.max(pt,Math.round((t.clientWidth-dt)*.6));z((A.value??n)+e)}function fe(e){window.innerWidth<=980||(e.key===`ArrowLeft`&&(e.preventDefault(),q(-48)),e.key===`ArrowRight`&&(e.preventDefault(),q(mt)))}let J=m(()=>{let e=p.query.nodeId;return typeof e==`string`&&e.trim().length>0?e.trim():null}),Y=m(()=>{let e=p.query.updateId;return typeof e==`string`&&e.trim().length>0?e.trim():null}),X=m(()=>{let e=p.query.eventOffset;return typeof e==`string`&&e.trim().length>0?e.trim():null}),pe=m(()=>y.value?.source?.content?y.value.source.content:y.value?JSON.stringify(y.value.currentStep,null,2):``),he=m(()=>(y.value?.source?.path?.toLowerCase()??``).endsWith(`.daml`)?`daml`:`plaintext`),ge=m(()=>{let e=y.value?.source;return!e||e.startLine===null||e.startColumn===null||e.endLine===null||e.endColumn===null?null:{startLine:e.startLine,startColumn:e.startColumn,endLine:e.endLine,endColumn:e.endColumn}}),_e=m(()=>y.value?`${y.value.currentStepIndex+1} / ${Math.max(1,y.value.stepCount)}`:`Not loaded`),ve=m(()=>y.value?y.value.currentStep.phase.replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase()):`n/a`),ye=m(()=>!y.value?.nodeId||!y.value.offset?null:`/nodes/${encodeURIComponent(y.value.nodeId)}/updates/${encodeURIComponent(y.value.offset)}`),be=m(()=>y.value?.currentStep.scopes??[]),xe=m(()=>b.value),Se=m(()=>y.value?b.value.filter(e=>e.stepIndex<=y.value.currentStepIndex):[]),Ce=m(()=>A.value===null?void 0:{gridTemplateColumns:`${A.value}px ${dt}px minmax(${ft}px, 1fr)`}),we=m(()=>R.value?{top:`${$}px`,left:`${$}px`,right:`${$}px`}:M.value===null?{visibility:`hidden`}:{left:`${M.value.x}px`,top:`${M.value.y}px`});async function Z(e){E.value=!0;try{let t=await ne(e);b.value=t.replayEvents}finally{E.value=!1}}async function Q(){if(!J.value||!X.value){y.value=null,D.value=`Open the debugger from an update detail page to launch a replay session.`;return}C.value=!0,D.value=null;try{let e=await ee(J.value,X.value);y.value=e,await Z(e.sessionId)}catch(e){D.value=e instanceof Error?e.message:`Unknown error`,y.value=null,b.value=[]}finally{C.value=!1}}async function Te(e){if(y.value?.sessionId){w.value=!0,D.value=null;try{let t=await te(y.value.sessionId,e);y.value=t,await Z(t.sessionId)}catch(e){D.value=e instanceof Error?e.message:`Unknown error`}finally{w.value=!1}}}async function De(){if(y.value?.sessionId){C.value=!0,D.value=null;try{let e=await _(y.value.sessionId);y.value=e,await Z(e.sessionId)}catch(e){D.value=e instanceof Error?e.message:`Unknown error`}finally{C.value=!1}}}async function Oe(e){if(y.value?.sessionId){w.value=!0,D.value=null;try{let t=await u(y.value.sessionId,e);y.value=t,await Z(t.sessionId)}catch(e){D.value=e instanceof Error?e.message:`Unknown error`}finally{w.value=!1}}}return c([J,X],()=>{M.value=null,Q()}),c(()=>y.value?.sessionId,async e=>{e&&(await d(),H())}),s(()=>{L(),j.value=window.innerWidth,N=new MutationObserver(()=>{L()}),N.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-theme`]}),window.addEventListener(`resize`,ue),Q()}),ie(()=>{N?.disconnect(),B(),U(),window.removeEventListener(`resize`,ue)}),(n,o)=>(t(),h(`section`,We,[D.value?(t(),h(`p`,Ge,a(D.value),1)):C.value&&!y.value?(t(),h(`p`,Ke,`Loading debugger session...`)):g(``,!0),y.value?(t(),h(`div`,{key:2,ref_key:`workspace`,ref:O,class:`debugger-view__workspace`,style:i(Ce.value),"data-testid":`debugger-workspace`},[S(`div`,{ref_key:`controlPanel`,ref:k,class:`debugger-view__floating-controls`,style:i(we.value),"data-testid":`debugger-floating-controls`},[T(ae,{"action-loading":w.value,"is-terminal":y.value.isTerminal,"current-step-index":y.value.currentStepIndex,onDragStart:le,onRefresh:De,onAction:Te},null,8,[`action-loading`,`is-terminal`,`current-step-index`])],4),S(`section`,qe,[T(Ue,{"model-value":pe.value,theme:v.value,language:he.value,"highlight-range":ge.value,"aria-label":`DAML debugger code surface`},null,8,[`model-value`,`theme`,`language`,`highlight-range`])]),S(`div`,{class:`debugger-view__divider`,role:`separator`,"aria-label":`Resize editor panel`,"aria-orientation":`vertical`,tabindex:`0`,"data-testid":`debugger-editor-divider`,onPointerdown:de,onKeydown:fe},null,32),S(`aside`,Je,[S(`div`,Ye,[S(`div`,Xe,[S(`div`,Ze,[S(`div`,Qe,[S(`div`,$e,[o[0]||=S(`span`,{class:`debugger-view__signal`},`Replay Session`,-1),S(`span`,et,a(_e.value),1),S(`span`,tt,a(ve.value),1)]),o[1]||=S(`h2`,null,`Launch Context`,-1)])]),S(`div`,nt,[o[2]||=S(`h3`,null,`Execution Script`,-1),S(`p`,rt,a(y.value.source?.path??`Source mapping unavailable for this step.`),1)]),S(`dl`,it,[S(`div`,null,[o[3]||=S(`dt`,null,`Node`,-1),S(`dd`,null,a(y.value.nodeId),1)]),S(`div`,null,[o[4]||=S(`dt`,null,`Event Offset`,-1),S(`dd`,at,a(y.value.offset),1)]),S(`div`,ot,[o[5]||=S(`dt`,null,`Canonical Update ID`,-1),S(`dd`,st,[ye.value&&(y.value.updateId??Y.value)?(t(),x(e(re),{key:0,class:`update-detail__debug-action`,to:ye.value,target:`_blank`,rel:`noreferrer`},{default:r(()=>[l(a(y.value.updateId??Y.value),1)]),_:1},8,[`to`])):(t(),h(`span`,ct,a(y.value.updateId??Y.value??`n/a`),1))])]),S(`div`,null,[o[6]||=S(`dt`,null,`Session`,-1),S(`dd`,lt,a(y.value.sessionId),1)]),S(`div`,null,[o[7]||=S(`dt`,null,`Step`,-1),S(`dd`,null,a(_e.value),1)]),S(`div`,null,[o[8]||=S(`dt`,null,`Phase`,-1),S(`dd`,null,a(ve.value),1)])]),T(Ee,{scopes:be.value,"node-id":y.value.nodeId},null,8,[`scopes`,`node-id`])]),S(`div`,ut,[T(me,{"real-events":xe.value,"replay-events":Se.value,"current-step-id":y.value.currentStep.stepId,loading:E.value,onSelectStep:Oe},null,8,[`real-events`,`replay-events`,`current-step-id`,`loading`])])])])],4)):g(``,!0)]))}});export{ht as default};
|