@cratis/screenplay-language 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +52 -0
  2. package/completion-items.ts +128 -0
  3. package/completion-planner.ts +111 -0
  4. package/completions.ts +112 -0
  5. package/diagnostics.ts +52 -0
  6. package/dist/completion-items.d.ts +23 -0
  7. package/dist/completion-items.d.ts.map +1 -0
  8. package/dist/completion-items.js +105 -0
  9. package/dist/completion-items.js.map +1 -0
  10. package/dist/completion-planner.d.ts +25 -0
  11. package/dist/completion-planner.d.ts.map +1 -0
  12. package/dist/completion-planner.js +90 -0
  13. package/dist/completion-planner.js.map +1 -0
  14. package/dist/completions.d.ts +4 -0
  15. package/dist/completions.d.ts.map +1 -0
  16. package/dist/completions.js +78 -0
  17. package/dist/completions.js.map +1 -0
  18. package/dist/diagnostics.d.ts +5 -0
  19. package/dist/diagnostics.d.ts.map +1 -0
  20. package/dist/diagnostics.js +47 -0
  21. package/dist/diagnostics.js.map +1 -0
  22. package/dist/document-context.d.ts +5 -0
  23. package/dist/document-context.d.ts.map +1 -0
  24. package/dist/document-context.js +45 -0
  25. package/dist/document-context.js.map +1 -0
  26. package/dist/hover-content.d.ts +2 -0
  27. package/dist/hover-content.d.ts.map +1 -0
  28. package/dist/hover-content.js +64 -0
  29. package/dist/hover-content.js.map +1 -0
  30. package/dist/hover.d.ts +3 -0
  31. package/dist/hover.d.ts.map +1 -0
  32. package/dist/hover.js +15 -0
  33. package/dist/hover.js.map +1 -0
  34. package/dist/index.d.ts +23 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +54 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/keyword-docs.d.ts +4 -0
  39. package/dist/keyword-docs.d.ts.map +1 -0
  40. package/dist/keyword-docs.js +100 -0
  41. package/dist/keyword-docs.js.map +1 -0
  42. package/dist/language.d.ts +12 -0
  43. package/dist/language.d.ts.map +1 -0
  44. package/dist/language.js +117 -0
  45. package/dist/language.js.map +1 -0
  46. package/dist/sub-language-registry.d.ts +20 -0
  47. package/dist/sub-language-registry.d.ts.map +1 -0
  48. package/dist/sub-language-registry.js +18 -0
  49. package/dist/sub-language-registry.js.map +1 -0
  50. package/dist/sub-languages/capture/CompletionProvider.d.ts +32 -0
  51. package/dist/sub-languages/capture/CompletionProvider.d.ts.map +1 -0
  52. package/dist/sub-languages/capture/CompletionProvider.js +332 -0
  53. package/dist/sub-languages/capture/CompletionProvider.js.map +1 -0
  54. package/dist/sub-languages/capture/HoverProvider.d.ts +8 -0
  55. package/dist/sub-languages/capture/HoverProvider.d.ts.map +1 -0
  56. package/dist/sub-languages/capture/HoverProvider.js +87 -0
  57. package/dist/sub-languages/capture/HoverProvider.js.map +1 -0
  58. package/dist/sub-languages/capture/Validator.d.ts +6 -0
  59. package/dist/sub-languages/capture/Validator.d.ts.map +1 -0
  60. package/dist/sub-languages/capture/Validator.js +72 -0
  61. package/dist/sub-languages/capture/Validator.js.map +1 -0
  62. package/dist/sub-languages/capture/index.d.ts +6 -0
  63. package/dist/sub-languages/capture/index.d.ts.map +1 -0
  64. package/dist/sub-languages/capture/index.js +58 -0
  65. package/dist/sub-languages/capture/index.js.map +1 -0
  66. package/dist/sub-languages/capture/language.d.ts +6 -0
  67. package/dist/sub-languages/capture/language.d.ts.map +1 -0
  68. package/dist/sub-languages/capture/language.js +160 -0
  69. package/dist/sub-languages/capture/language.js.map +1 -0
  70. package/dist/sub-languages/cdl.d.ts +3 -0
  71. package/dist/sub-languages/cdl.d.ts.map +1 -0
  72. package/dist/sub-languages/cdl.js +74 -0
  73. package/dist/sub-languages/cdl.js.map +1 -0
  74. package/dist/sub-languages/pdl.d.ts +3 -0
  75. package/dist/sub-languages/pdl.d.ts.map +1 -0
  76. package/dist/sub-languages/pdl.js +67 -0
  77. package/dist/sub-languages/pdl.js.map +1 -0
  78. package/dist/sub-languages/projection/CodeActionProvider.d.ts +18 -0
  79. package/dist/sub-languages/projection/CodeActionProvider.d.ts.map +1 -0
  80. package/dist/sub-languages/projection/CodeActionProvider.js +93 -0
  81. package/dist/sub-languages/projection/CodeActionProvider.js.map +1 -0
  82. package/dist/sub-languages/projection/CompletionProvider.d.ts +41 -0
  83. package/dist/sub-languages/projection/CompletionProvider.d.ts.map +1 -0
  84. package/dist/sub-languages/projection/CompletionProvider.js +591 -0
  85. package/dist/sub-languages/projection/CompletionProvider.js.map +1 -0
  86. package/dist/sub-languages/projection/HoverProvider.d.ts +24 -0
  87. package/dist/sub-languages/projection/HoverProvider.d.ts.map +1 -0
  88. package/dist/sub-languages/projection/HoverProvider.js +298 -0
  89. package/dist/sub-languages/projection/HoverProvider.js.map +1 -0
  90. package/dist/sub-languages/projection/Validator.d.ts +22 -0
  91. package/dist/sub-languages/projection/Validator.d.ts.map +1 -0
  92. package/dist/sub-languages/projection/Validator.js +339 -0
  93. package/dist/sub-languages/projection/Validator.js.map +1 -0
  94. package/dist/sub-languages/projection/index.d.ts +49 -0
  95. package/dist/sub-languages/projection/index.d.ts.map +1 -0
  96. package/dist/sub-languages/projection/index.js +160 -0
  97. package/dist/sub-languages/projection/index.js.map +1 -0
  98. package/dist/sub-languages/projection/language.d.ts +5 -0
  99. package/dist/sub-languages/projection/language.d.ts.map +1 -0
  100. package/dist/sub-languages/projection/language.js +171 -0
  101. package/dist/sub-languages/projection/language.js.map +1 -0
  102. package/dist/symbols.d.ts +45 -0
  103. package/dist/symbols.d.ts.map +1 -0
  104. package/dist/symbols.js +100 -0
  105. package/dist/symbols.js.map +1 -0
  106. package/dist/themes/screenplay-dark.d.ts +4 -0
  107. package/dist/themes/screenplay-dark.d.ts.map +1 -0
  108. package/dist/themes/screenplay-dark.js +29 -0
  109. package/dist/themes/screenplay-dark.js.map +1 -0
  110. package/dist/themes/screenplay-light.d.ts +4 -0
  111. package/dist/themes/screenplay-light.d.ts.map +1 -0
  112. package/dist/themes/screenplay-light.js +29 -0
  113. package/dist/themes/screenplay-light.js.map +1 -0
  114. package/dist/tokens.d.ts +5 -0
  115. package/dist/tokens.d.ts.map +1 -0
  116. package/dist/tokens.js +121 -0
  117. package/dist/tokens.js.map +1 -0
  118. package/dist/validation.d.ts +10 -0
  119. package/dist/validation.d.ts.map +1 -0
  120. package/dist/validation.js +101 -0
  121. package/dist/validation.js.map +1 -0
  122. package/document-context.ts +51 -0
  123. package/hover-content.ts +76 -0
  124. package/hover.ts +23 -0
  125. package/index.ts +98 -0
  126. package/keyword-docs.ts +102 -0
  127. package/language.ts +130 -0
  128. package/package.json +44 -0
  129. package/sub-language-registry.ts +42 -0
  130. package/sub-languages/capture/CompletionProvider.ts +365 -0
  131. package/sub-languages/capture/HoverProvider.ts +99 -0
  132. package/sub-languages/capture/Validator.ts +97 -0
  133. package/sub-languages/capture/index.ts +72 -0
  134. package/sub-languages/capture/language.ts +176 -0
  135. package/sub-languages/cdl.ts +76 -0
  136. package/sub-languages/pdl.ts +69 -0
  137. package/sub-languages/projection/CodeActionProvider.ts +123 -0
  138. package/sub-languages/projection/CompletionProvider.ts +653 -0
  139. package/sub-languages/projection/HoverProvider.ts +338 -0
  140. package/sub-languages/projection/Validator.ts +387 -0
  141. package/sub-languages/projection/index.ts +223 -0
  142. package/sub-languages/projection/language.ts +193 -0
  143. package/symbols.ts +161 -0
  144. package/themes/screenplay-dark.ts +32 -0
  145. package/themes/screenplay-light.ts +32 -0
  146. package/tokens.ts +145 -0
  147. package/validation.ts +145 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../sub-languages/capture/language.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,MAAM,GAAG,cAAc,eAAe,CAAC,CAAC;AAMpD,eAAO,MAAM,UAAU,QAAQ,CAAC;AA0ChC,eAAO,MAAM,qBAAqB,EAAE,SAAS,CAAC,qBAqC7C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAAS,CAAC,gBAmFvC,CAAC"}
@@ -0,0 +1,160 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ // Capture Declaration Language (CDL) — Chronicle's DSL for declaring change-data-capture
4
+ // rules, registered here as its own standalone top-level Monaco language. This is distinct
5
+ // from the lightweight CDL sub-language embedded inside a `.play` document's `capture`
6
+ // blocks (../cdl.ts) — this module owns its own language id, tokenizer, and providers.
7
+ export const languageId = 'cdl';
8
+ // `route`/`poll` are API source properties; `path` is the webhook inbound path; `topic`
9
+ // is the message source subject. There is no `auth`/`bearer`/`url` — an API source
10
+ // references a named External Service (`api <ServiceName>`) for base URL and auth, and
11
+ // a webhook source's authentication is configured on the source builder, not in CDL text.
12
+ const KEYWORDS = [
13
+ 'capture',
14
+ 'source',
15
+ 'key',
16
+ 'map',
17
+ 'append',
18
+ 'when',
19
+ 'nested',
20
+ 'children',
21
+ 'identified',
22
+ 'by',
23
+ 'api',
24
+ 'webhook',
25
+ 'message',
26
+ 'route',
27
+ 'poll',
28
+ 'path',
29
+ 'topic',
30
+ 'from',
31
+ 'to',
32
+ 'or',
33
+ 'and',
34
+ 'added',
35
+ 'removed',
36
+ 'translate',
37
+ 'split',
38
+ ];
39
+ const BUILTINS = [
40
+ '$context',
41
+ '$previous',
42
+ '$env',
43
+ ];
44
+ const OPERATORS = ['=', '=>', '.'];
45
+ export const languageConfiguration = {
46
+ comments: {
47
+ lineComment: '#',
48
+ },
49
+ brackets: [
50
+ ['{', '}'],
51
+ ['[', ']'],
52
+ ['(', ')'],
53
+ ],
54
+ autoClosingPairs: [
55
+ { open: '{', close: '}' },
56
+ { open: '[', close: ']' },
57
+ { open: '(', close: ')' },
58
+ { open: '"', close: '"' },
59
+ { open: "'", close: "'" },
60
+ { open: '`', close: '`' },
61
+ ],
62
+ surroundingPairs: [
63
+ { open: '{', close: '}' },
64
+ { open: '[', close: ']' },
65
+ { open: '(', close: ')' },
66
+ { open: '"', close: '"' },
67
+ { open: "'", close: "'" },
68
+ { open: '`', close: '`' },
69
+ ],
70
+ indentationRules: {
71
+ increaseIndentPattern: /^.*(\bcapture\b\s+\S+|\bsource\b(?:\s+\w+)?|\bmap\b|\bappend\b\s+\S+|\bnested\b\s+\S+|\bchildren\b\s+\S+.*|\btranslate\b|\bsplit\b.*)\s*$/,
72
+ decreaseIndentPattern: /^.*\}.*$/,
73
+ },
74
+ folding: {
75
+ offSide: true,
76
+ markers: {
77
+ start: /^\s*(capture|source|map|append|nested|children|translate|split)/,
78
+ end: /^\s*$/,
79
+ },
80
+ },
81
+ wordPattern: /[$]?[a-zA-Z_][\w$-]*/,
82
+ };
83
+ export const monarchLanguage = {
84
+ defaultToken: '',
85
+ tokenPostfix: '.cdl',
86
+ keywords: KEYWORDS,
87
+ builtins: BUILTINS,
88
+ operators: OPERATORS,
89
+ symbols: /[=><!~?:&|+\-*/^%]+/,
90
+ escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
91
+ tokenizer: {
92
+ root: [
93
+ { include: '@whitespace' },
94
+ [/`/, { token: 'string.template', next: '@templateString' }],
95
+ [/\$\.(?:[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)?/, 'variable'],
96
+ [/\$previous(?:\.[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)?/, 'variable.predefined'],
97
+ [/\$context(?:\.(?:occurred|eventSourceId))?/, 'variable.predefined'],
98
+ [/\$env(?:\.[A-Z_][A-Z0-9_]*)?/, 'variable.predefined'],
99
+ [/@[a-zA-Z_$][\w$]*/, 'identifier.escape'],
100
+ [
101
+ /[A-Z][a-zA-Z_$][\w$]*/,
102
+ {
103
+ cases: {
104
+ '@keywords': 'invalid',
105
+ '@default': 'identifier',
106
+ },
107
+ },
108
+ ],
109
+ [
110
+ /[a-z_$][\w$]*/,
111
+ {
112
+ cases: {
113
+ '@keywords': 'keyword',
114
+ '@builtins': 'variable.predefined',
115
+ '@default': 'identifier',
116
+ },
117
+ },
118
+ ],
119
+ [/[{}()[\]]/, '@brackets'],
120
+ [/=>/, 'operator.arrow'],
121
+ [
122
+ /@symbols/,
123
+ {
124
+ cases: {
125
+ '@operators': 'operator',
126
+ '@default': '',
127
+ },
128
+ },
129
+ ],
130
+ [/\d*\.\d+([eE][-+]?\d+)?/, 'number.float'],
131
+ [/0[xX][0-9a-fA-F]+/, 'number.hex'],
132
+ [/\d+/, 'number'],
133
+ [/[;,.]/, 'delimiter'],
134
+ [/"([^"\\]|\\.)*$/, 'string.invalid'],
135
+ [/"/, { token: 'string.quote', next: '@string' }],
136
+ ],
137
+ whitespace: [
138
+ [/[ \t\r\n]+/, ''],
139
+ [/#.*$/, 'comment'],
140
+ ],
141
+ templateString: [
142
+ [/\$\{/, { token: 'delimiter.bracket', next: '@templateExpression' }],
143
+ [/[^\\`$]+/, 'string.template'],
144
+ [/@escapes/, 'string.template.escape'],
145
+ [/\\./, 'string.template.escape.invalid'],
146
+ [/`/, { token: 'string.template', next: '@pop' }],
147
+ ],
148
+ templateExpression: [
149
+ [/\}/, { token: 'delimiter.bracket', next: '@pop' }],
150
+ { include: '@root' },
151
+ ],
152
+ string: [
153
+ [/[^\\"]+/, 'string'],
154
+ [/@escapes/, 'string.escape'],
155
+ [/\\./, 'string.escape.invalid'],
156
+ [/"/, { token: 'string.quote', next: '@pop' }],
157
+ ],
158
+ },
159
+ };
160
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../../sub-languages/capture/language.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SubLanguageDefinition } from '../sub-language-registry';
2
+ export declare const cdl: SubLanguageDefinition;
3
+ //# sourceMappingURL=cdl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdl.d.ts","sourceRoot":"","sources":["../../sub-languages/cdl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAMjE,eAAO,MAAM,GAAG,EAAE,qBAkEjB,CAAC"}
@@ -0,0 +1,74 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ // Change Data Capture Language (CDL) — embedded inside `capture` blocks. This is the
4
+ // lightweight definition mixed into the composite `.play` tokenizer; the full standalone
5
+ // CDL language (its own tokenizer, context-aware completions, hover, and validation) lives
6
+ // in `./capture` and is what `@cratis/screenplay-language/capture` exposes to consumers.
7
+ export const cdl = {
8
+ tokens: [
9
+ [
10
+ /\b(?:source|api|route|poll|path|topic|key|map|translate|split|append|tag|when|children|nested|identified|by|from|to|and|or|added|removed)\b/,
11
+ 'keyword',
12
+ ],
13
+ ],
14
+ completions: [
15
+ {
16
+ label: 'source',
17
+ insertText: 'source ${1:api}',
18
+ documentation: 'Declares where the captured data comes from.',
19
+ },
20
+ {
21
+ label: 'key',
22
+ insertText: 'key ${1:property}',
23
+ documentation: 'Declares which source property identifies an instance.',
24
+ },
25
+ {
26
+ label: 'map',
27
+ insertText: 'map\n ${1:property} = ${2:source}',
28
+ documentation: 'Maps and translates source values before events are appended.',
29
+ },
30
+ {
31
+ label: 'append',
32
+ insertText: 'append ${1:EventType}\n when ${2:property}',
33
+ documentation: 'Appends an event when the source data changes.',
34
+ },
35
+ {
36
+ label: 'translate',
37
+ insertText: 'translate\n "${1:source}" => ${2:target}',
38
+ documentation: 'Translates source values into Screenplay values.',
39
+ },
40
+ {
41
+ label: 'children',
42
+ insertText: 'children ${1:collection} identified by ${2:key}',
43
+ documentation: 'Captures changes in a child collection of the source data.',
44
+ },
45
+ {
46
+ label: 'when added',
47
+ insertText: 'when added',
48
+ documentation: 'Appends the event when a new item appears in the source.',
49
+ },
50
+ {
51
+ label: 'when removed',
52
+ insertText: 'when removed',
53
+ documentation: 'Appends the event when an item disappears from the source.',
54
+ },
55
+ ],
56
+ hovers: {
57
+ source: 'CDL — declares where the captured data comes from.',
58
+ api: 'CDL — as a source type, polls an HTTP API; as a source property (`api <ServiceName>`), references a named External Service for the base URL and authentication.',
59
+ route: 'CDL — optional path appended to an API source\'s External Service base URL.',
60
+ poll: 'CDL — the polling interval for an API source, e.g. 5m.',
61
+ path: 'CDL — the inbound path a webhook source listens on.',
62
+ topic: 'CDL — the topic a message source subscribes to.',
63
+ key: 'CDL — declares which source property identifies an instance.',
64
+ map: 'CDL — maps and translates source values before events are appended.',
65
+ translate: 'CDL — translates source values into Screenplay values.',
66
+ append: 'CDL — appends an event when the source data changes.',
67
+ when: 'CDL — the change condition: a property change, added, or removed.',
68
+ added: 'CDL — matches items that appear in the source.',
69
+ removed: 'CDL — matches items that disappear from the source.',
70
+ children: 'CDL — captures changes in a child collection of the source data.',
71
+ identified: 'CDL — introduces the identifying key of a child collection.',
72
+ },
73
+ };
74
+ //# sourceMappingURL=cdl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdl.js","sourceRoot":"","sources":["../../sub-languages/cdl.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAIrG,qFAAqF;AACrF,yFAAyF;AACzF,2FAA2F;AAC3F,yFAAyF;AACzF,MAAM,CAAC,MAAM,GAAG,GAA0B;IACtC,MAAM,EAAE;QACJ;YACI,6IAA6I;YAC7I,SAAS;SACZ;KACJ;IACD,WAAW,EAAE;QACT;YACI,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,iBAAiB;YAC7B,aAAa,EAAE,8CAA8C;SAChE;QACD;YACI,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,mBAAmB;YAC/B,aAAa,EAAE,wDAAwD;SAC1E;QACD;YACI,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,sCAAsC;YAClD,aAAa,EAAE,+DAA+D;SACjF;QACD;YACI,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,+CAA+C;YAC3D,aAAa,EAAE,gDAAgD;SAClE;QACD;YACI,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,6CAA6C;YACzD,aAAa,EAAE,kDAAkD;SACpE;QACD;YACI,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,iDAAiD;YAC7D,aAAa,EAAE,4DAA4D;SAC9E;QACD;YACI,KAAK,EAAE,YAAY;YACnB,UAAU,EAAE,YAAY;YACxB,aAAa,EAAE,0DAA0D;SAC5E;QACD;YACI,KAAK,EAAE,cAAc;YACrB,UAAU,EAAE,cAAc;YAC1B,aAAa,EAAE,4DAA4D;SAC9E;KACJ;IACD,MAAM,EAAE;QACJ,MAAM,EAAE,oDAAoD;QAC5D,GAAG,EAAE,iKAAiK;QACtK,KAAK,EAAE,6EAA6E;QACpF,IAAI,EAAE,wDAAwD;QAC9D,IAAI,EAAE,qDAAqD;QAC3D,KAAK,EAAE,iDAAiD;QACxD,GAAG,EAAE,8DAA8D;QACnE,GAAG,EAAE,qEAAqE;QAC1E,SAAS,EAAE,wDAAwD;QACnE,MAAM,EAAE,sDAAsD;QAC9D,IAAI,EAAE,mEAAmE;QACzE,KAAK,EAAE,gDAAgD;QACvD,OAAO,EAAE,qDAAqD;QAC9D,QAAQ,EAAE,kEAAkE;QAC5E,UAAU,EAAE,6DAA6D;KAC5E;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { SubLanguageDefinition } from '../sub-language-registry';
2
+ export declare const pdl: SubLanguageDefinition;
3
+ //# sourceMappingURL=pdl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdl.d.ts","sourceRoot":"","sources":["../../sub-languages/pdl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,eAAO,MAAM,GAAG,EAAE,qBA6DjB,CAAC"}
@@ -0,0 +1,67 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ // Projection Declaration Language (PDL) — embedded inside `projection` blocks.
4
+ // See https://www.cratis.io/chronicle/projections/projection-declaration-language/grammar/
5
+ export const pdl = {
6
+ tokens: [
7
+ [
8
+ /\b(?:from|every|all|nested|join|children|identified|by|key|parent|with|remove|via|clear|on|sequence|automap|no|exclude|literal|set|increment|decrement|add|subtract|count)\b/,
9
+ 'keyword',
10
+ ],
11
+ ],
12
+ completions: [
13
+ {
14
+ label: 'key',
15
+ insertText: 'key ${1:property}',
16
+ documentation: 'Declares which property identifies the read model instance.',
17
+ },
18
+ {
19
+ label: 'from',
20
+ insertText: 'from ${1:EventType}',
21
+ documentation: 'Maps properties from an event onto the read model.',
22
+ },
23
+ {
24
+ label: 'join',
25
+ insertText: 'join ${1:property} on ${2:key}',
26
+ documentation: 'Joins related state onto the read model by a key property.',
27
+ },
28
+ {
29
+ label: 'children',
30
+ insertText: 'children ${1:collection} identified by ${2:key}',
31
+ documentation: 'Projects events into a child collection on the read model.',
32
+ },
33
+ {
34
+ label: 'remove with',
35
+ insertText: 'remove with ${1:EventType}',
36
+ documentation: 'Removes the read model instance when the event occurs.',
37
+ },
38
+ {
39
+ label: 'parent',
40
+ insertText: 'parent ${1:property}',
41
+ documentation: 'Declares the property that identifies the parent of a child.',
42
+ },
43
+ {
44
+ label: 'increment',
45
+ insertText: 'increment ${1:property}',
46
+ documentation: 'Increments a numeric property when the event occurs.',
47
+ },
48
+ {
49
+ label: 'decrement',
50
+ insertText: 'decrement ${1:property}',
51
+ documentation: 'Decrements a numeric property when the event occurs.',
52
+ },
53
+ ],
54
+ hovers: {
55
+ from: 'PDL — maps properties from an event onto the read model.',
56
+ every: 'PDL — applies property mappings for every event type in the projection.',
57
+ join: 'PDL — joins related state onto the read model by a key property.',
58
+ children: 'PDL — projects events into a child collection on the read model.',
59
+ identified: 'PDL — introduces the identifying key of a child collection.',
60
+ key: 'PDL — declares which property identifies the read model instance.',
61
+ parent: 'PDL — declares the property that identifies the parent of a child.',
62
+ remove: 'PDL — removes the read model instance when an event occurs.',
63
+ increment: 'PDL — increments a numeric property when the event occurs.',
64
+ decrement: 'PDL — decrements a numeric property when the event occurs.',
65
+ },
66
+ };
67
+ //# sourceMappingURL=pdl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdl.js","sourceRoot":"","sources":["../../sub-languages/pdl.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAIrG,+EAA+E;AAC/E,2FAA2F;AAC3F,MAAM,CAAC,MAAM,GAAG,GAA0B;IACtC,MAAM,EAAE;QACJ;YACI,8KAA8K;YAC9K,SAAS;SACZ;KACJ;IACD,WAAW,EAAE;QACT;YACI,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,mBAAmB;YAC/B,aAAa,EAAE,6DAA6D;SAC/E;QACD;YACI,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,qBAAqB;YACjC,aAAa,EAAE,oDAAoD;SACtE;QACD;YACI,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,gCAAgC;YAC5C,aAAa,EAAE,4DAA4D;SAC9E;QACD;YACI,KAAK,EAAE,UAAU;YACjB,UAAU,EAAE,iDAAiD;YAC7D,aAAa,EAAE,4DAA4D;SAC9E;QACD;YACI,KAAK,EAAE,aAAa;YACpB,UAAU,EAAE,4BAA4B;YACxC,aAAa,EAAE,wDAAwD;SAC1E;QACD;YACI,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,sBAAsB;YAClC,aAAa,EAAE,8DAA8D;SAChF;QACD;YACI,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,yBAAyB;YACrC,aAAa,EAAE,sDAAsD;SACxE;QACD;YACI,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,yBAAyB;YACrC,aAAa,EAAE,sDAAsD;SACxE;KACJ;IACD,MAAM,EAAE;QACJ,IAAI,EAAE,0DAA0D;QAChE,KAAK,EAAE,yEAAyE;QAChF,IAAI,EAAE,kEAAkE;QACxE,QAAQ,EAAE,kEAAkE;QAC5E,UAAU,EAAE,6DAA6D;QACzE,GAAG,EAAE,mEAAmE;QACxE,MAAM,EAAE,oEAAoE;QAC5E,MAAM,EAAE,6DAA6D;QACrE,SAAS,EAAE,4DAA4D;QACvE,SAAS,EAAE,4DAA4D;KAC1E;CACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type * as Monaco from 'monaco-editor';
2
+ import type { JsonSchema, ReadModelInfo, DraftReadModelInfo } from './index';
3
+ export declare class CodeActionProvider {
4
+ private readModels;
5
+ private draftReadModel;
6
+ private onCreateReadModel?;
7
+ private onEditReadModel?;
8
+ setReadModels(readModels: ReadModelInfo[]): void;
9
+ setDraftReadModel(draft: DraftReadModelInfo | null): void;
10
+ setReadModelSchemas(schemas: JsonSchema[]): void;
11
+ setCreateReadModelCallback(callback: (readModelName: string) => void): void;
12
+ setEditReadModelCallback(callback: (readModelName: string, currentSchema: JsonSchema) => void): void;
13
+ invokeCreateReadModel(readModelName: string): void;
14
+ invokeEditReadModel(readModelName: string, currentSchema: JsonSchema): void;
15
+ provideCodeActions(_model: Monaco.editor.ITextModel, _range: Monaco.Range, context: Monaco.languages.CodeActionContext): Monaco.languages.ProviderResult<Monaco.languages.CodeActionList>;
16
+ private isDraftReadModel;
17
+ }
18
+ //# sourceMappingURL=CodeActionProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeActionProvider.d.ts","sourceRoot":"","sources":["../../../sub-languages/projection/CodeActionProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7E,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,iBAAiB,CAAC,CAAkC;IAC5D,OAAO,CAAC,eAAe,CAAC,CAA6D;IAErF,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI;IAIhD,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAKzD,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAQhD,0BAA0B,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI3E,wBAAwB,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAIpG,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAIlD,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,GAAG,IAAI;IAI3E,kBAAkB,CACd,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAChC,MAAM,EAAE,MAAM,CAAC,KAAK,EACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAC5C,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAsEnE,OAAO,CAAC,gBAAgB;CAG3B"}
@@ -0,0 +1,93 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ export class CodeActionProvider {
4
+ readModels = [];
5
+ draftReadModel = null;
6
+ onCreateReadModel;
7
+ onEditReadModel;
8
+ setReadModels(readModels) {
9
+ this.readModels = readModels;
10
+ }
11
+ setDraftReadModel(draft) {
12
+ this.draftReadModel = draft;
13
+ }
14
+ // Keep for backwards compatibility
15
+ setReadModelSchemas(schemas) {
16
+ this.readModels = schemas.map(schema => ({
17
+ identifier: schema.title || schema.name || '',
18
+ displayName: schema.title || schema.name || '',
19
+ schema
20
+ }));
21
+ }
22
+ setCreateReadModelCallback(callback) {
23
+ this.onCreateReadModel = callback;
24
+ }
25
+ setEditReadModelCallback(callback) {
26
+ this.onEditReadModel = callback;
27
+ }
28
+ invokeCreateReadModel(readModelName) {
29
+ this.onCreateReadModel?.(readModelName);
30
+ }
31
+ invokeEditReadModel(readModelName, currentSchema) {
32
+ this.onEditReadModel?.(readModelName, currentSchema);
33
+ }
34
+ provideCodeActions(_model, _range, context) {
35
+ const actions = [];
36
+ // Check for diagnostics about undefined read models (errors)
37
+ const notFoundDiagnostics = context.markers.filter((marker) => marker.message.includes("Read model") && marker.message.includes("not found"));
38
+ // Check for diagnostics about draft read models (info markers)
39
+ const draftDiagnostics = context.markers.filter((marker) => marker.message.includes("Read model") && marker.message.includes("is a draft"));
40
+ // Handle "not found" errors - offer to create
41
+ for (const diagnostic of notFoundDiagnostics) {
42
+ const match = diagnostic.message.match(/Read model ['"]([\w.]+)['"]/);
43
+ if (match && match[1]) {
44
+ const readModelName = match[1];
45
+ // Check if this read model already exists as a persisted read model
46
+ const existsAsPersisted = this.readModels.some(rm => rm.identifier === readModelName || rm.displayName === readModelName);
47
+ if (!existsAsPersisted && this.onCreateReadModel) {
48
+ actions.push({
49
+ title: `Create read model '${readModelName}'`,
50
+ diagnostics: [diagnostic],
51
+ kind: 'quickfix',
52
+ edit: undefined,
53
+ isPreferred: true,
54
+ command: {
55
+ id: 'pdl.createReadModel',
56
+ title: `Create ${readModelName}`,
57
+ arguments: [readModelName]
58
+ }
59
+ });
60
+ }
61
+ }
62
+ }
63
+ // Handle draft read model info markers - offer to edit
64
+ for (const diagnostic of draftDiagnostics) {
65
+ const match = diagnostic.message.match(/Read model ['"]([\w.]+)['"]/);
66
+ if (match && match[1]) {
67
+ const readModelName = match[1];
68
+ if (this.draftReadModel && this.isDraftReadModel(readModelName) && this.onEditReadModel) {
69
+ actions.push({
70
+ title: `Edit read model '${readModelName}'`,
71
+ diagnostics: [diagnostic],
72
+ kind: 'quickfix',
73
+ edit: undefined,
74
+ isPreferred: true,
75
+ command: {
76
+ id: 'pdl.editReadModel',
77
+ title: `Edit ${readModelName}`,
78
+ arguments: [readModelName, this.draftReadModel.schema]
79
+ }
80
+ });
81
+ }
82
+ }
83
+ }
84
+ return {
85
+ actions,
86
+ dispose: () => { }
87
+ };
88
+ }
89
+ isDraftReadModel(readModelToken) {
90
+ return !!this.draftReadModel && (this.draftReadModel.identifier === readModelToken || this.draftReadModel.displayName === readModelToken);
91
+ }
92
+ }
93
+ //# sourceMappingURL=CodeActionProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeActionProvider.js","sourceRoot":"","sources":["../../../sub-languages/projection/CodeActionProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { editor, languages, Position } from 'monaco-editor';
2
+ import type { JsonSchema, ReadModelInfo } from './index';
3
+ export declare class CompletionProvider implements languages.CompletionItemProvider {
4
+ private readModels;
5
+ private eventSchemas;
6
+ private eventSequences;
7
+ setReadModels(readModels: ReadModelInfo[]): void;
8
+ setEventSequences(sequences: string[]): void;
9
+ setReadModelSchemas(schemas: JsonSchema[]): void;
10
+ setEventSchemas(schemas: Record<string, JsonSchema> | JsonSchema[]): void;
11
+ provideCompletionItems(model: editor.ITextModel, position: Position): languages.ProviderResult<languages.CompletionList>;
12
+ private buildContext;
13
+ private getIndentLevel;
14
+ private isStartOfLine;
15
+ private isAfterIndent;
16
+ private isAfterKeyword;
17
+ private isAfterNumericOperationKeyword;
18
+ private isAfterAddOrSubtractBy;
19
+ private isInAssignment;
20
+ private isPropertyDotAccess;
21
+ private addProjectionLineCompletions;
22
+ private addEventTypeCompletions;
23
+ private addEventSequenceCompletions;
24
+ private addKeyCompletions;
25
+ private addParentCompletions;
26
+ private addNumericPropertyCompletions;
27
+ private addChildrenCompletions;
28
+ private addJoinCompletions;
29
+ private addStatementCompletions;
30
+ private addAssignmentValueCompletions;
31
+ private addExpressionCompletions;
32
+ private addPropertyMemberCompletions;
33
+ private getCurrentEventType;
34
+ private getActiveReadModelSchema;
35
+ private resolveReadModelInfo;
36
+ private getSchemaName;
37
+ private getSchemaDescription;
38
+ private getPropertyTypeDescription;
39
+ private getRangeForWord;
40
+ }
41
+ //# sourceMappingURL=CompletionProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompletionProvider.d.ts","sourceRoot":"","sources":["../../../sub-languages/projection/CompletionProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAU,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAsB,aAAa,EAAE,MAAM,SAAS,CAAC;AAW7E,qBAAa,kBAAmB,YAAW,SAAS,CAAC,sBAAsB;IACvE,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,cAAc,CAAgB;IAEtC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI;IAIhD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAK5C,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAQhD,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI;IAoBzE,sBAAsB,CAClB,KAAK,EAAE,MAAM,CAAC,UAAU,EACxB,QAAQ,EAAE,QAAQ,GACnB,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC;IAuCrD,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,8BAA8B;IAoBtC,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,4BAA4B;IAwDpC,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,6BAA6B;IA2CrC,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,uBAAuB;IAoD/B,OAAO,CAAC,6BAA6B;IA8BrC,OAAO,CAAC,wBAAwB;IA2DhC,OAAO,CAAC,4BAA4B;IAuEpC,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,eAAe;CAU1B"}