@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":"completion-planner.d.ts","sourceRoot":"","sources":["../completion-planner.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAExB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CA2CvE;AAID,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,cAAc,CAwChB"}
@@ -0,0 +1,90 @@
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
+ import { enclosingChain, fenceMap, indentOf } from './document-context';
4
+ import { getSubLanguage } from './sub-language-registry';
5
+ import * as items from './completion-items';
6
+ export function completionEntriesFor(chain) {
7
+ const construct = chain[0];
8
+ if (construct === undefined)
9
+ return items.topLevelItems;
10
+ const subLanguage = getSubLanguage(construct);
11
+ if (subLanguage)
12
+ return subLanguage.completions ?? [];
13
+ switch (construct) {
14
+ case 'module':
15
+ return items.moduleItems;
16
+ case 'feature':
17
+ return items.featureItems;
18
+ case 'slice':
19
+ return items.sliceItems;
20
+ case 'command':
21
+ return items.commandItems;
22
+ case 'produces':
23
+ return items.producesItems;
24
+ case 'handler':
25
+ return items.handlerItems;
26
+ case 'query':
27
+ return items.queryItems;
28
+ case 'constraint':
29
+ return items.constraintItems;
30
+ case 'reactor':
31
+ return items.reactorItems;
32
+ case 'on':
33
+ return items.reactorOnItems;
34
+ case 'policy':
35
+ return items.policyItems;
36
+ case 'validate':
37
+ return items.validateItems;
38
+ case 'action':
39
+ return items.actionItems;
40
+ case 'table':
41
+ case 'summary':
42
+ return items.tableItems;
43
+ default:
44
+ // Layout slots and sections inside a screen expose the screen vocabulary.
45
+ if (chain.includes('screen') || construct === 'section' || construct === 'layout') {
46
+ return items.screenItems;
47
+ }
48
+ if (chain.includes('produces'))
49
+ return items.producesItems;
50
+ return [];
51
+ }
52
+ }
53
+ // Decides what to complete at a position, without any editor dependency — the
54
+ // Monaco service and the VSCode extension both materialize the plan into items.
55
+ export function planCompletions(lines, lineIndex, textBefore) {
56
+ const fences = fenceMap(lines);
57
+ if (fences[lineIndex])
58
+ return { kind: 'none' };
59
+ const contextVariableMatch = textBefore.match(/\$[\w.]*$/);
60
+ if (contextVariableMatch) {
61
+ return { kind: 'contextVariables', replaceLength: contextVariableMatch[0].length };
62
+ }
63
+ const currentLine = lines[lineIndex] ?? '';
64
+ const effectiveIndent = textBefore.trim().length === 0 ? textBefore.length : indentOf(currentLine);
65
+ const chain = enclosingChain(lines, fences, lineIndex, effectiveIndent);
66
+ if (/\bauthorize\s+[\w\s]*$/.test(textBefore) || chain[0] === 'authorize') {
67
+ return { kind: 'policies' };
68
+ }
69
+ if (/\bon\s+\w*$/.test(textBefore) && (chain.includes('reactor') || chain.includes('constraint'))) {
70
+ return { kind: 'events' };
71
+ }
72
+ if (/\b(?:on|unique\s+event)\s+\w*$/.test(textBefore) && chain[0] === 'constraint') {
73
+ return { kind: 'events' };
74
+ }
75
+ if (/\bproduces\s+\w*$/.test(textBefore)) {
76
+ return { kind: 'producesTargets' };
77
+ }
78
+ if (/\bnavigate\s+to\s+\w*$/.test(textBefore)) {
79
+ return { kind: 'screens' };
80
+ }
81
+ if (/\bvia\s+query\s+\w*$/.test(textBefore)) {
82
+ return { kind: 'queries' };
83
+ }
84
+ if ((chain[0] === 'event' || chain[0] === 'command') &&
85
+ /^\s+[a-z_]\w*\s+[\w[\]?]*$/.test(textBefore)) {
86
+ return { kind: 'types' };
87
+ }
88
+ return { kind: 'entries', entries: completionEntriesFor(chain) };
89
+ }
90
+ //# sourceMappingURL=completion-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-planner.js","sourceRoot":"","sources":["../completion-planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { languages } from 'monaco-editor';
2
+ import { Monaco } from './language';
3
+ export declare function createCompletionProvider(monaco: Monaco): languages.CompletionItemProvider;
4
+ //# sourceMappingURL=completions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../completions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAkB,MAAM,YAAY,CAAC;AAKpD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,sBAAsB,CAsGzF"}
@@ -0,0 +1,78 @@
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
+ import { primitiveTypes } from './language';
4
+ import { knownEventNames, scanDocument } from './symbols';
5
+ import { planCompletions } from './completion-planner';
6
+ import { contextVariableItems, producesItems } from './completion-items';
7
+ export function createCompletionProvider(monaco) {
8
+ return {
9
+ triggerCharacters: [' ', '$', '@', '.'],
10
+ provideCompletionItems(model, position) {
11
+ const lines = model.getLinesContent();
12
+ const lineIndex = position.lineNumber - 1;
13
+ const currentLine = lines[lineIndex] ?? '';
14
+ const textBefore = currentLine.substring(0, position.column - 1);
15
+ const plan = planCompletions(lines, lineIndex, textBefore);
16
+ if (plan.kind === 'none')
17
+ return { suggestions: [] };
18
+ const symbols = scanDocument(lines);
19
+ const word = model.getWordUntilPosition(position);
20
+ const range = new monaco.Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);
21
+ const kinds = monaco.languages.CompletionItemKind;
22
+ const asSnippet = monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet;
23
+ const snippet = (entry) => ({
24
+ label: entry.label,
25
+ kind: entry.insertText.includes('$') ? kinds.Snippet : kinds.Keyword,
26
+ insertText: entry.insertText,
27
+ insertTextRules: asSnippet,
28
+ documentation: entry.documentation,
29
+ range,
30
+ });
31
+ const symbolItem = (name, kind, detail) => ({
32
+ label: name,
33
+ kind,
34
+ insertText: name,
35
+ detail,
36
+ range,
37
+ });
38
+ const eventNames = () => knownEventNames(symbols).map((name) => symbolItem(name, kinds.Event, 'event'));
39
+ switch (plan.kind) {
40
+ case 'contextVariables': {
41
+ const variableRange = new monaco.Range(position.lineNumber, position.column - plan.replaceLength, position.lineNumber, word.endColumn);
42
+ return {
43
+ suggestions: contextVariableItems.map((entry) => ({
44
+ ...snippet(entry),
45
+ range: variableRange,
46
+ })),
47
+ };
48
+ }
49
+ case 'policies':
50
+ return {
51
+ suggestions: symbols.policies.map((policy) => symbolItem(policy.name, kinds.Reference, 'policy')),
52
+ };
53
+ case 'events':
54
+ return { suggestions: eventNames() };
55
+ case 'producesTargets':
56
+ return { suggestions: [...producesItems.map(snippet), ...eventNames()] };
57
+ case 'screens':
58
+ return {
59
+ suggestions: symbols.screens.map((screen) => symbolItem(screen.name, kinds.Interface, 'screen')),
60
+ };
61
+ case 'queries':
62
+ return {
63
+ suggestions: symbols.queries.map((query) => symbolItem(query.name, kinds.Function, `query => ${query.returnType}`)),
64
+ };
65
+ case 'types':
66
+ return {
67
+ suggestions: [
68
+ ...symbols.concepts.map((concept) => symbolItem(concept.name, kinds.Class, `concept : ${concept.primitive}${concept.attributes.length ? ' ' + concept.attributes.join(' ') : ''}`)),
69
+ ...primitiveTypes.map((primitive) => symbolItem(primitive, kinds.Struct, 'primitive')),
70
+ ],
71
+ };
72
+ case 'entries':
73
+ return { suggestions: plan.entries.map(snippet) };
74
+ }
75
+ },
76
+ };
77
+ }
78
+ //# sourceMappingURL=completions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.js","sourceRoot":"","sources":["../completions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { editor } from 'monaco-editor';
2
+ import { Monaco } from './language';
3
+ export declare function validate(monaco: Monaco, model: editor.ITextModel): editor.IMarkerData[];
4
+ export declare function attachDiagnostics(monaco: Monaco): void;
5
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAc,MAAM,YAAY,CAAC;AAMhD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAYvF;AA0BD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGtD"}
@@ -0,0 +1,47 @@
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
+ import { languageId } from './language';
4
+ import { validateLines } from './validation';
5
+ const owner = 'screenplay';
6
+ const validationDelay = 300;
7
+ export function validate(monaco, model) {
8
+ return validateLines(model.getLinesContent()).map((issue) => ({
9
+ severity: issue.severity === 'error'
10
+ ? monaco.MarkerSeverity.Error
11
+ : monaco.MarkerSeverity.Warning,
12
+ message: issue.message,
13
+ startLineNumber: issue.line + 1,
14
+ startColumn: issue.startColumn,
15
+ endLineNumber: issue.line + 1,
16
+ endColumn: issue.endColumn,
17
+ }));
18
+ }
19
+ function watch(monaco, model) {
20
+ let handle;
21
+ const run = () => {
22
+ if (model.isDisposed())
23
+ return;
24
+ if (model.getLanguageId() !== languageId) {
25
+ monaco.editor.setModelMarkers(model, owner, []);
26
+ return;
27
+ }
28
+ monaco.editor.setModelMarkers(model, owner, validate(monaco, model));
29
+ };
30
+ const schedule = () => {
31
+ if (handle !== undefined)
32
+ clearTimeout(handle);
33
+ handle = setTimeout(run, validationDelay);
34
+ };
35
+ model.onDidChangeContent(schedule);
36
+ model.onDidChangeLanguage(run);
37
+ model.onWillDispose(() => {
38
+ if (handle !== undefined)
39
+ clearTimeout(handle);
40
+ });
41
+ run();
42
+ }
43
+ export function attachDiagnostics(monaco) {
44
+ monaco.editor.getModels().forEach((model) => watch(monaco, model));
45
+ monaco.editor.onDidCreateModel((model) => watch(monaco, model));
46
+ }
47
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAU,UAAU,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAwB;IAC7D,OAAO,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1D,QAAQ,EACJ,KAAK,CAAC,QAAQ,KAAK,OAAO;YACtB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK;YAC7B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO;QACvC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,eAAe,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,KAAK,CAAC,MAAc,EAAE,KAAwB;IACnD,IAAI,MAAiD,CAAC;IAEtD,MAAM,GAAG,GAAG,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,UAAU,EAAE;YAAE,OAAO;QAC/B,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACrB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,GAAG,EAAE,CAAC;AACV,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function indentOf(line: string): number;
2
+ export declare function firstWord(line: string): string;
3
+ export declare function fenceMap(lines: string[]): boolean[];
4
+ export declare function enclosingChain(lines: string[], fences: boolean[], lineIndex: number, indent: number): string[];
5
+ //# sourceMappingURL=document-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-context.d.ts","sourceRoot":"","sources":["../document-context.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAYnD;AAMD,wBAAgB,cAAc,CAC1B,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,OAAO,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,MAAM,EAAE,CAcV"}
@@ -0,0 +1,45 @@
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 function indentOf(line) {
4
+ return line.length - line.trimStart().length;
5
+ }
6
+ export function firstWord(line) {
7
+ return line.trim().split(/\s+/)[0] ?? '';
8
+ }
9
+ // Marks every line that is a code fence or lives inside one, so structural
10
+ // scanning never mistakes inline C#/TypeScript/HTML for Screenplay.
11
+ export function fenceMap(lines) {
12
+ const map = new Array(lines.length).fill(false);
13
+ let open = false;
14
+ for (let index = 0; index < lines.length; index++) {
15
+ if (/^\s*```\s*$/.test(lines[index])) {
16
+ map[index] = true;
17
+ open = !open;
18
+ continue;
19
+ }
20
+ map[index] = open;
21
+ }
22
+ return map;
23
+ }
24
+ // Walks upward from a position and returns the chain of enclosing block openers,
25
+ // innermost first — e.g. ['command', 'slice', 'feature', 'module']. A block opener
26
+ // is any less-indented line above; its first word names the construct (for layout
27
+ // slots this is the slot name, which callers treat as an unknown construct).
28
+ export function enclosingChain(lines, fences, lineIndex, indent) {
29
+ const chain = [];
30
+ let currentIndent = indent;
31
+ for (let index = lineIndex - 1; index >= 0 && currentIndent > 0; index--) {
32
+ if (fences[index])
33
+ continue;
34
+ const line = lines[index];
35
+ if (line.trim().length === 0)
36
+ continue;
37
+ const lineIndent = indentOf(line);
38
+ if (lineIndent < currentIndent) {
39
+ chain.push(firstWord(line));
40
+ currentIndent = lineIndent;
41
+ }
42
+ }
43
+ return chain;
44
+ }
45
+ //# sourceMappingURL=document-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-context.js","sourceRoot":"","sources":["../document-context.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,2EAA2E;AAC3E,oEAAoE;AACpE,MAAM,UAAU,QAAQ,CAAC,KAAe;IACpC,MAAM,GAAG,GAAc,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,CAAC;YACb,SAAS;QACb,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,mFAAmF;AACnF,kFAAkF;AAClF,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAC1B,KAAe,EACf,MAAiB,EACjB,SAAiB,EACjB,MAAc;IAEd,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,aAAa,GAAG,MAAM,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,SAAS,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACvE,IAAI,MAAM,CAAC,KAAK,CAAC;YAAE,SAAS;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,aAAa,GAAG,UAAU,CAAC;QAC/B,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function hoverContent(lines: string[], lineIndex: number, word: string, startColumn: number, endColumn: number): string | null;
2
+ //# sourceMappingURL=hover-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover-content.d.ts","sourceRoot":"","sources":["../hover-content.ts"],"names":[],"mappings":"AAWA,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CA0Df"}
@@ -0,0 +1,64 @@
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
+ import { enclosingChain, fenceMap, indentOf } from './document-context';
4
+ import { scanDocument } from './symbols';
5
+ import { getSubLanguage } from './sub-language-registry';
6
+ import { attributeDocs, contextVariableDocs, keywordDocs } from './keyword-docs';
7
+ // Produces the hover markdown for a word at a position, without any editor
8
+ // dependency — the Monaco service and the VSCode extension share this content.
9
+ // Columns are 1-based, matching both editors' word-at-position APIs.
10
+ export function hoverContent(lines, lineIndex, word, startColumn, endColumn) {
11
+ const fences = fenceMap(lines);
12
+ if (fences[lineIndex])
13
+ return null;
14
+ const line = lines[lineIndex] ?? '';
15
+ const before = line.charAt(startColumn - 2);
16
+ if (before === '@') {
17
+ const doc = attributeDocs[word];
18
+ if (doc)
19
+ return doc;
20
+ }
21
+ if (before === '$' || before === '.') {
22
+ const variable = line.substring(0, endColumn - 1).match(/\$[\w.]*$/)?.[0];
23
+ if (variable) {
24
+ const doc = contextVariableDocs[variable] ??
25
+ (variable.startsWith('$env') ? contextVariableDocs['$env'] : undefined);
26
+ if (doc)
27
+ return doc;
28
+ }
29
+ }
30
+ const symbols = scanDocument(lines);
31
+ const concept = symbols.concepts.find((candidate) => candidate.name === word);
32
+ if (concept) {
33
+ const attributes = concept.attributes.length ? ` ${concept.attributes.join(' ')}` : '';
34
+ const values = concept.enumValues.length
35
+ ? `\n\nValues: ${concept.enumValues.join(', ')}`
36
+ : '';
37
+ return `\`\`\`screenplay\nconcept ${concept.name} : ${concept.primitive}${attributes}\n\`\`\`${values}`;
38
+ }
39
+ const policy = symbols.policies.find((candidate) => candidate.name === word);
40
+ if (policy) {
41
+ const body = policy.requires.length ? policy.requires.join('\n') : '(custom C#)';
42
+ return `\`\`\`screenplay\npolicy ${policy.name}\n${body}\n\`\`\``;
43
+ }
44
+ const event = symbols.events.find((candidate) => candidate.name === word);
45
+ if (event) {
46
+ const properties = event.properties
47
+ .map((property) => `${property.name} ${property.type}`)
48
+ .join('\n');
49
+ return `\`\`\`screenplay\nevent ${event.name}\n${properties}\n\`\`\``;
50
+ }
51
+ // Sub-language keywords take precedence inside their construct.
52
+ const chain = enclosingChain(lines, fences, lineIndex, indentOf(line));
53
+ for (const construct of [line.trim().split(/\s+/)[0], ...chain]) {
54
+ const subLanguage = getSubLanguage(construct ?? '');
55
+ const doc = subLanguage?.hovers?.[word];
56
+ if (doc)
57
+ return doc;
58
+ }
59
+ const keywordDoc = keywordDocs[word];
60
+ if (keywordDoc)
61
+ return `**${word}** — ${keywordDoc}`;
62
+ return null;
63
+ }
64
+ //# sourceMappingURL=hover-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover-content.js","sourceRoot":"","sources":["../hover-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { languages } from 'monaco-editor';
2
+ export declare function createHoverProvider(): languages.HoverProvider;
3
+ //# sourceMappingURL=hover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../hover.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,wBAAgB,mBAAmB,IAAI,SAAS,CAAC,aAAa,CAgB7D"}
package/dist/hover.js ADDED
@@ -0,0 +1,15 @@
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
+ import { hoverContent } from './hover-content';
4
+ export function createHoverProvider() {
5
+ return {
6
+ provideHover(model, position) {
7
+ const word = model.getWordAtPosition(position);
8
+ if (!word)
9
+ return null;
10
+ const content = hoverContent(model.getLinesContent(), position.lineNumber - 1, word.word, word.startColumn, word.endColumn);
11
+ return content ? { contents: [{ value: content }] } : null;
12
+ },
13
+ };
14
+ }
15
+ //# sourceMappingURL=hover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover.js","sourceRoot":"","sources":["../hover.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,UAAU,mBAAmB;IAC/B,OAAO;QACH,YAAY,CAAC,KAAK,EAAE,QAAQ;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YAEvB,MAAM,OAAO,GAAG,YAAY,CACxB,KAAK,CAAC,eAAe,EAAE,EACvB,QAAQ,CAAC,UAAU,GAAG,CAAC,EACvB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACjB,CAAC;YACF,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,CAAC;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Monaco } from './language';
2
+ export declare function ensureBuiltInSubLanguages(): void;
3
+ export declare function register(monaco: Monaco): void;
4
+ export { clauseKeywords, codeBlockTags, conceptAttributes, constructKeywords, languageId, primitiveTypes, sliceTypes, } from './language';
5
+ export type { Monaco } from './language';
6
+ export { getSubLanguage, getSubLanguages, registerSubLanguage } from './sub-language-registry';
7
+ export type { MonarchTokenRules, SubLanguage, SubLanguageCompletion, SubLanguageDefinition, } from './sub-language-registry';
8
+ export { pdl } from './sub-languages/pdl';
9
+ export { cdl } from './sub-languages/cdl';
10
+ export { screenplayDarkThemeName } from './themes/screenplay-dark';
11
+ export { screenplayLightThemeName } from './themes/screenplay-light';
12
+ export { enclosingChain, fenceMap, firstWord, indentOf } from './document-context';
13
+ export { knownEventNames, scanDocument } from './symbols';
14
+ export type { ConceptSymbol, DocumentSymbols, EventSymbol, ImportSymbol, NamedSymbol, PolicySymbol, PropertySymbol, QuerySymbol, } from './symbols';
15
+ export { attributeDocs, contextVariableDocs, keywordDocs } from './keyword-docs';
16
+ export { contextVariableItems, producesItems } from './completion-items';
17
+ export type { CompletionEntry } from './completion-items';
18
+ export { completionEntriesFor, planCompletions } from './completion-planner';
19
+ export type { CompletionPlan } from './completion-planner';
20
+ export { hoverContent } from './hover-content';
21
+ export { validateLines } from './validation';
22
+ export type { ValidationIssue, ValidationSeverity } from './validation';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,MAAM,EAIT,MAAM,YAAY,CAAC;AA2BpB,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe7C;AAED,OAAO,EACH,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,UAAU,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EACR,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EACR,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,54 @@
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
+ import { languageConfiguration, languageExtensionPoint, languageId, } from './language';
4
+ import { createTokensProvider } from './tokens';
5
+ import { createCompletionProvider } from './completions';
6
+ import { createHoverProvider } from './hover';
7
+ import { attachDiagnostics } from './diagnostics';
8
+ import { getSubLanguage, getSubLanguages, onSubLanguagesChanged, registerSubLanguage, } from './sub-language-registry';
9
+ import { pdl } from './sub-languages/pdl';
10
+ import { cdl } from './sub-languages/cdl';
11
+ import { screenplayDark, screenplayDarkThemeName } from './themes/screenplay-dark';
12
+ import { screenplayLight, screenplayLightThemeName } from './themes/screenplay-light';
13
+ const registeredInstances = new Set();
14
+ function applyTokensProvider(monaco) {
15
+ monaco.languages.setMonarchTokensProvider(languageId, createTokensProvider(getSubLanguages()));
16
+ }
17
+ // Sub-languages registered after register() recompose the tokenizer on the fly.
18
+ onSubLanguagesChanged(() => registeredInstances.forEach(applyTokensProvider));
19
+ // Registers the built-in PDL and CDL sub-languages. Hosts that do not go through
20
+ // register() — such as the VSCode extension — call this before using the registry.
21
+ export function ensureBuiltInSubLanguages() {
22
+ if (!getSubLanguage('projection'))
23
+ registerSubLanguage('projection', pdl);
24
+ if (!getSubLanguage('capture'))
25
+ registerSubLanguage('capture', cdl);
26
+ }
27
+ export function register(monaco) {
28
+ if (registeredInstances.has(monaco))
29
+ return;
30
+ ensureBuiltInSubLanguages();
31
+ registeredInstances.add(monaco);
32
+ monaco.languages.register(languageExtensionPoint);
33
+ monaco.languages.setLanguageConfiguration(languageId, languageConfiguration);
34
+ applyTokensProvider(monaco);
35
+ monaco.languages.registerCompletionItemProvider(languageId, createCompletionProvider(monaco));
36
+ monaco.languages.registerHoverProvider(languageId, createHoverProvider());
37
+ monaco.editor.defineTheme(screenplayDarkThemeName, screenplayDark);
38
+ monaco.editor.defineTheme(screenplayLightThemeName, screenplayLight);
39
+ attachDiagnostics(monaco);
40
+ }
41
+ export { clauseKeywords, codeBlockTags, conceptAttributes, constructKeywords, languageId, primitiveTypes, sliceTypes, } from './language';
42
+ export { getSubLanguage, getSubLanguages, registerSubLanguage } from './sub-language-registry';
43
+ export { pdl } from './sub-languages/pdl';
44
+ export { cdl } from './sub-languages/cdl';
45
+ export { screenplayDarkThemeName } from './themes/screenplay-dark';
46
+ export { screenplayLightThemeName } from './themes/screenplay-light';
47
+ export { enclosingChain, fenceMap, firstWord, indentOf } from './document-context';
48
+ export { knownEventNames, scanDocument } from './symbols';
49
+ export { attributeDocs, contextVariableDocs, keywordDocs } from './keyword-docs';
50
+ export { contextVariableItems, producesItems } from './completion-items';
51
+ export { completionEntriesFor, planCompletions } from './completion-planner';
52
+ export { hoverContent } from './hover-content';
53
+ export { validateLines } from './validation';
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const keywordDocs: Record<string, string>;
2
+ export declare const attributeDocs: Record<string, string>;
3
+ export declare const contextVariableDocs: Record<string, string>;
4
+ //# sourceMappingURL=keyword-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyword-docs.d.ts","sourceRoot":"","sources":["../keyword-docs.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoF9C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGhD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOtD,CAAC"}