@adrk/mxls 1.0.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 (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -0
  3. package/dist/completion/CompletionBuilder.d.ts +26 -0
  4. package/dist/completion/CompletionBuilder.d.ts.map +1 -0
  5. package/dist/completion/CompletionBuilder.js +113 -0
  6. package/dist/completion/CompletionBuilder.js.map +1 -0
  7. package/dist/completion/CompletionCache.d.ts +16 -0
  8. package/dist/completion/CompletionCache.d.ts.map +1 -0
  9. package/dist/completion/CompletionCache.js +25 -0
  10. package/dist/completion/CompletionCache.js.map +1 -0
  11. package/dist/completion/NamespaceResolver.d.ts +21 -0
  12. package/dist/completion/NamespaceResolver.d.ts.map +1 -0
  13. package/dist/completion/NamespaceResolver.js +58 -0
  14. package/dist/completion/NamespaceResolver.js.map +1 -0
  15. package/dist/completion/SchemaCompleter.d.ts +23 -0
  16. package/dist/completion/SchemaCompleter.d.ts.map +1 -0
  17. package/dist/completion/SchemaCompleter.js +164 -0
  18. package/dist/completion/SchemaCompleter.js.map +1 -0
  19. package/dist/completion/TextAnalyzer.d.ts +34 -0
  20. package/dist/completion/TextAnalyzer.d.ts.map +1 -0
  21. package/dist/completion/TextAnalyzer.js +122 -0
  22. package/dist/completion/TextAnalyzer.js.map +1 -0
  23. package/dist/features/EditorPlugin.d.ts +49 -0
  24. package/dist/features/EditorPlugin.d.ts.map +1 -0
  25. package/dist/features/EditorPlugin.js +128 -0
  26. package/dist/features/EditorPlugin.js.map +1 -0
  27. package/dist/formatter/XmlFormatter.d.ts +4 -0
  28. package/dist/formatter/XmlFormatter.d.ts.map +1 -0
  29. package/dist/formatter/XmlFormatter.js +13 -0
  30. package/dist/formatter/XmlFormatter.js.map +1 -0
  31. package/dist/hover/HoverBuilder.d.ts +8 -0
  32. package/dist/hover/HoverBuilder.d.ts.map +1 -0
  33. package/dist/hover/HoverBuilder.js +27 -0
  34. package/dist/hover/HoverBuilder.js.map +1 -0
  35. package/dist/hover/SchemaHover.d.ts +12 -0
  36. package/dist/hover/SchemaHover.d.ts.map +1 -0
  37. package/dist/hover/SchemaHover.js +71 -0
  38. package/dist/hover/SchemaHover.js.map +1 -0
  39. package/dist/index.d.ts +14 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +9 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/interfaces/IMonacoApi.d.ts +39 -0
  44. package/dist/interfaces/IMonacoApi.d.ts.map +1 -0
  45. package/dist/interfaces/IMonacoApi.js +2 -0
  46. package/dist/interfaces/IMonacoApi.js.map +1 -0
  47. package/dist/interfaces/ISchemaParser.d.ts +30 -0
  48. package/dist/interfaces/ISchemaParser.d.ts.map +1 -0
  49. package/dist/interfaces/ISchemaParser.js +2 -0
  50. package/dist/interfaces/ISchemaParser.js.map +1 -0
  51. package/dist/interfaces/ISchemaRegistry.d.ts +46 -0
  52. package/dist/interfaces/ISchemaRegistry.d.ts.map +1 -0
  53. package/dist/interfaces/ISchemaRegistry.js +2 -0
  54. package/dist/interfaces/ISchemaRegistry.js.map +1 -0
  55. package/dist/interfaces/ISchemaWorker.d.ts +25 -0
  56. package/dist/interfaces/ISchemaWorker.d.ts.map +1 -0
  57. package/dist/interfaces/ISchemaWorker.js +2 -0
  58. package/dist/interfaces/ISchemaWorker.js.map +1 -0
  59. package/dist/manager/SchemaRegistry.d.ts +24 -0
  60. package/dist/manager/SchemaRegistry.d.ts.map +1 -0
  61. package/dist/manager/SchemaRegistry.js +84 -0
  62. package/dist/manager/SchemaRegistry.js.map +1 -0
  63. package/dist/manager/SchemaWorker.d.ts +25 -0
  64. package/dist/manager/SchemaWorker.d.ts.map +1 -0
  65. package/dist/manager/SchemaWorker.js +70 -0
  66. package/dist/manager/SchemaWorker.js.map +1 -0
  67. package/dist/parser/SchemaIndex.d.ts +54 -0
  68. package/dist/parser/SchemaIndex.d.ts.map +1 -0
  69. package/dist/parser/SchemaIndex.js +149 -0
  70. package/dist/parser/SchemaIndex.js.map +1 -0
  71. package/dist/parser/SchemaParser.d.ts +23 -0
  72. package/dist/parser/SchemaParser.d.ts.map +1 -0
  73. package/dist/parser/SchemaParser.js +44 -0
  74. package/dist/parser/SchemaParser.js.map +1 -0
  75. package/dist/parser/SchemaQuery.d.ts +38 -0
  76. package/dist/parser/SchemaQuery.d.ts.map +1 -0
  77. package/dist/parser/SchemaQuery.js +364 -0
  78. package/dist/parser/SchemaQuery.js.map +1 -0
  79. package/dist/template/TemplateBuilder.d.ts +18 -0
  80. package/dist/template/TemplateBuilder.d.ts.map +1 -0
  81. package/dist/template/TemplateBuilder.js +52 -0
  82. package/dist/template/TemplateBuilder.js.map +1 -0
  83. package/dist/types.d.ts +81 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +27 -0
  86. package/dist/types.js.map +1 -0
  87. package/dist/utils/Logger.d.ts +17 -0
  88. package/dist/utils/Logger.d.ts.map +1 -0
  89. package/dist/utils/Logger.js +41 -0
  90. package/dist/utils/Logger.js.map +1 -0
  91. package/dist/utils/XmlTextUtils.d.ts +20 -0
  92. package/dist/utils/XmlTextUtils.d.ts.map +1 -0
  93. package/dist/utils/XmlTextUtils.js +85 -0
  94. package/dist/utils/XmlTextUtils.js.map +1 -0
  95. package/dist/validation/DecorationMapper.d.ts +15 -0
  96. package/dist/validation/DecorationMapper.d.ts.map +1 -0
  97. package/dist/validation/DecorationMapper.js +59 -0
  98. package/dist/validation/DecorationMapper.js.map +1 -0
  99. package/dist/validation/SchemaDecorator.d.ts +26 -0
  100. package/dist/validation/SchemaDecorator.d.ts.map +1 -0
  101. package/dist/validation/SchemaDecorator.js +50 -0
  102. package/dist/validation/SchemaDecorator.js.map +1 -0
  103. package/dist/validation/SchemaValidator.d.ts +13 -0
  104. package/dist/validation/SchemaValidator.d.ts.map +1 -0
  105. package/dist/validation/SchemaValidator.js +387 -0
  106. package/dist/validation/SchemaValidator.js.map +1 -0
  107. package/dist/validation/validation.worker.d.ts +2 -0
  108. package/dist/validation/validation.worker.d.ts.map +1 -0
  109. package/dist/validation/validation.worker.js +57 -0
  110. package/dist/validation/validation.worker.js.map +1 -0
  111. package/package.json +49 -0
  112. package/style.css +17 -0
@@ -0,0 +1,44 @@
1
+ import { SchemaIndex } from './SchemaIndex';
2
+ import { SchemaQuery } from './SchemaQuery';
3
+ /**
4
+ * Public entry point for the parser module.
5
+ * Composes SchemaIndex (build phase) and SchemaQuery (query phase).
6
+ * Implements ISchemaParser by delegating to SchemaQuery.
7
+ */
8
+ export class SchemaParser {
9
+ query;
10
+ constructor(xsd) {
11
+ const index = new SchemaIndex(xsd);
12
+ this.query = new SchemaQuery(index);
13
+ }
14
+ getRootElements() {
15
+ return this.query.getRootElements();
16
+ }
17
+ getSubElements(elementName, ancestorChain) {
18
+ return this.query.getSubElements(elementName, ancestorChain);
19
+ }
20
+ getFirstSubElements(elementName, withAttributes) {
21
+ return this.query.getFirstSubElements(elementName, withAttributes);
22
+ }
23
+ getAttributesForElement(elementName) {
24
+ return this.query.getAttributesForElement(elementName);
25
+ }
26
+ getEnumValuesForAttribute(elementName, attrName) {
27
+ return this.query.getEnumValuesForAttribute(elementName, attrName);
28
+ }
29
+ getEnumValuesForNamedType(typeName) {
30
+ return this.query.getEnumValuesForNamedType(typeName);
31
+ }
32
+ getContentModelType(elementName) {
33
+ return this.query.getContentModelType(elementName);
34
+ }
35
+ /** Returns the child elements declared inside a named xs:group. */
36
+ getElementsFromGroup(groupNode) {
37
+ return this.query.getElementsFromGroup(groupNode);
38
+ }
39
+ /** Returns the attributes declared inside a named xs:attributeGroup. */
40
+ getAttributesFromAttributeGroup(attrGroupNode) {
41
+ return this.query.getAttributesFromAttributeGroup(attrGroupNode);
42
+ }
43
+ }
44
+ //# sourceMappingURL=SchemaParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaParser.js","sourceRoot":"","sources":["../../src/parser/SchemaParser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACJ,KAAK,CAAa;IAEnC,YAAY,GAAS;QACjB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAA;IACvC,CAAC;IAED,cAAc,CAAC,WAAmB,EAAE,aAAwB;QACxD,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IAChE,CAAC;IAED,mBAAmB,CAAC,WAAmB,EAAE,cAAuB;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;IACtE,CAAC;IAED,uBAAuB,CAAC,WAAmB;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAC1D,CAAC;IAED,yBAAyB,CAAC,WAAmB,EAAE,QAAgB;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IACtE,CAAC;IAED,yBAAyB,CAAC,QAAgB;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IACzD,CAAC;IAED,mBAAmB,CAAC,WAAmB;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAA;IACtD,CAAC;IAED,mEAAmE;IACnE,oBAAoB,CAAC,SAAuB;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACrD,CAAC;IAED,wEAAwE;IACxE,+BAA+B,CAAC,aAA2B;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,aAAa,CAAC,CAAA;IACpE,CAAC;CACJ"}
@@ -0,0 +1,38 @@
1
+ import type { ContentModelType, DocumentNode } from '../types';
2
+ import type { ISchemaParser } from '../interfaces/ISchemaParser';
3
+ import { SchemaIndex } from './SchemaIndex';
4
+ /**
5
+ * Answers schema queries by reading the maps built by SchemaIndex.
6
+ * Has no mutable state — all methods are effectively pure given a fixed index.
7
+ */
8
+ export declare class SchemaQuery implements ISchemaParser {
9
+ private readonly index;
10
+ constructor(index: SchemaIndex);
11
+ getRootElements(): DocumentNode[];
12
+ getSubElements(elementName: string, ancestorChain?: string[]): DocumentNode[];
13
+ getFirstSubElements(elementName: string, withAttributes: boolean): DocumentNode[];
14
+ getAttributesForElement(elementName: string): DocumentNode[];
15
+ getEnumValuesForAttribute(elementName: string, attrName: string): string[];
16
+ getEnumValuesForNamedType(typeName: string): string[];
17
+ getContentModelType(elementName: string): ContentModelType | null;
18
+ getElementsFromGroup(groupNode: DocumentNode): DocumentNode[];
19
+ getAttributesFromAttributeGroup(attrGroupNode: DocumentNode): DocumentNode[];
20
+ private resolveTypeInContext;
21
+ private findChildType;
22
+ private collectElements;
23
+ private collectFirstBranchOfChoice;
24
+ private followGroupRef;
25
+ private collectAttributes;
26
+ private attributesFromGroup;
27
+ private enumsFromInlineSimpleType;
28
+ private enumsFromSimpleType;
29
+ private patternFromAttr;
30
+ private patternFromSimpleType;
31
+ private detectContentModel;
32
+ private parseElement;
33
+ private readAttributes;
34
+ private readDocumentation;
35
+ private complexTypeForElement;
36
+ private withRequiredAttributes;
37
+ }
38
+ //# sourceMappingURL=SchemaQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaQuery.d.ts","sourceRoot":"","sources":["../../src/parser/SchemaQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACH,WAAW,EAOd,MAAM,eAAe,CAAA;AAEtB;;;GAGG;AACH,qBAAa,WAAY,YAAW,aAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,WAAW;IAI/C,eAAe,IAAI,YAAY,EAAE;IAMjC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IA+C7E,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,YAAY,EAAE;IAkBjF,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE;IAW5D,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAqB1E,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAKrD,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAOjE,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,YAAY,EAAE;IAU7D,+BAA+B,CAAC,aAAa,EAAE,YAAY,GAAG,YAAY,EAAE;IAQ5E,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,eAAe;IA8BvB,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,sBAAsB;CA0BjC"}
@@ -0,0 +1,364 @@
1
+ import { XSD_NS, CONTAINER_LOCAL_NAMES, firstChildByLocalName, directChildElements, childrenByLocalName, stripNsPrefix, } from './SchemaIndex';
2
+ /**
3
+ * Answers schema queries by reading the maps built by SchemaIndex.
4
+ * Has no mutable state — all methods are effectively pure given a fixed index.
5
+ */
6
+ export class SchemaQuery {
7
+ index;
8
+ constructor(index) {
9
+ this.index = index;
10
+ }
11
+ // ─── ISchemaParser ────────────────────────────────────────────────────────
12
+ getRootElements() {
13
+ const schemaRoot = this.index.doc.documentElement;
14
+ const els = childrenByLocalName(schemaRoot, 'element').map(el => this.parseElement(el));
15
+ return this.withRequiredAttributes(els);
16
+ }
17
+ getSubElements(elementName, ancestorChain) {
18
+ // Context-aware path: walk ancestor chain to pinpoint the element's exact type
19
+ if (ancestorChain && ancestorChain.length > 0) {
20
+ const specificType = this.resolveTypeInContext(elementName, ancestorChain);
21
+ if (specificType) {
22
+ const ct = this.index.complexTypeMap.get(specificType);
23
+ if (ct) {
24
+ const collected = [];
25
+ this.collectElements(ct, collected, new Set(), false);
26
+ const nodes = collected.map(el => this.parseElement(el));
27
+ const hasAny = ct.getElementsByTagNameNS(XSD_NS, 'any').length > 0;
28
+ const base = hasAny ? nodes.concat(this.getRootElements()) : nodes;
29
+ return this.withRequiredAttributes(base);
30
+ }
31
+ }
32
+ }
33
+ // Fallback: union across all registered types for this element name
34
+ const typeNames = this.index.elementTypesMultiMap.get(elementName);
35
+ if (!typeNames || typeNames.size === 0)
36
+ return [];
37
+ const seenNames = new Set();
38
+ const collected = [];
39
+ let hasAny = false;
40
+ for (const typeName of typeNames) {
41
+ const ct = this.index.complexTypeMap.get(typeName);
42
+ if (!ct)
43
+ continue;
44
+ if (ct.getElementsByTagNameNS(XSD_NS, 'any').length > 0)
45
+ hasAny = true;
46
+ const perType = [];
47
+ this.collectElements(ct, perType, new Set(), false);
48
+ for (const el of perType) {
49
+ const localName = stripNsPrefix(el.getAttribute('name') ?? el.getAttribute('ref') ?? '');
50
+ if (localName && !seenNames.has(localName)) {
51
+ seenNames.add(localName);
52
+ collected.push(el);
53
+ }
54
+ }
55
+ }
56
+ const nodes = collected.map(el => this.parseElement(el));
57
+ const base = hasAny ? nodes.concat(this.getRootElements()) : nodes;
58
+ return this.withRequiredAttributes(base);
59
+ }
60
+ getFirstSubElements(elementName, withAttributes) {
61
+ const ct = this.complexTypeForElement(elementName);
62
+ if (!ct)
63
+ return [];
64
+ // Unwrap complexContent/extension or complexContent/restriction before traversal
65
+ const cc = firstChildByLocalName(ct, 'complexContent');
66
+ const unwrapped = cc &&
67
+ (firstChildByLocalName(cc, 'extension') ??
68
+ firstChildByLocalName(cc, 'restriction'));
69
+ const traversalRoot = unwrapped ?? ct;
70
+ const collected = [];
71
+ this.collectElements(traversalRoot, collected, new Set(), true);
72
+ const nodes = collected.map(el => this.parseElement(el));
73
+ return withAttributes ? this.withRequiredAttributes(nodes) : nodes;
74
+ }
75
+ getAttributesForElement(elementName) {
76
+ const ct = this.complexTypeForElement(elementName);
77
+ if (!ct)
78
+ return [];
79
+ return this.collectAttributes(ct).map(el => {
80
+ const node = this.parseElement(el);
81
+ const pattern = this.patternFromAttr(el);
82
+ if (pattern !== undefined)
83
+ node.pattern = pattern;
84
+ return node;
85
+ });
86
+ }
87
+ getEnumValuesForAttribute(elementName, attrName) {
88
+ const ct = this.complexTypeForElement(elementName);
89
+ if (!ct)
90
+ return [];
91
+ const attrEl = this.collectAttributes(ct).find(el => el.getAttribute('name') === attrName ||
92
+ el.getAttribute('ref') === attrName);
93
+ if (!attrEl)
94
+ return [];
95
+ // Inline simpleType takes priority
96
+ const inlineEnums = this.enumsFromInlineSimpleType(attrEl);
97
+ if (inlineEnums.length > 0)
98
+ return inlineEnums;
99
+ // Named type fallback
100
+ const typeName = attrEl.getAttribute('type');
101
+ if (typeName)
102
+ return this.getEnumValuesForNamedType(stripNsPrefix(typeName));
103
+ return [];
104
+ }
105
+ getEnumValuesForNamedType(typeName) {
106
+ const st = this.index.simpleTypeMap.get(typeName);
107
+ return st ? this.enumsFromSimpleType(st) : [];
108
+ }
109
+ getContentModelType(elementName) {
110
+ const ct = this.complexTypeForElement(elementName);
111
+ return ct ? this.detectContentModel(ct) : null;
112
+ }
113
+ // ─── Group / attributeGroup helpers ──────────────────────────────────────
114
+ getElementsFromGroup(groupNode) {
115
+ const ref = groupNode.ref;
116
+ if (!ref)
117
+ return [];
118
+ const group = this.index.groupMap.get(ref);
119
+ if (!group)
120
+ return [];
121
+ const collected = [];
122
+ this.collectElements(group, collected, new Set([ref]), false);
123
+ return collected.map(el => this.parseElement(el));
124
+ }
125
+ getAttributesFromAttributeGroup(attrGroupNode) {
126
+ const ref = attrGroupNode.ref;
127
+ if (!ref)
128
+ return [];
129
+ return this.attributesFromGroup(ref).map(el => this.parseElement(el));
130
+ }
131
+ // ─── Context-aware resolution ─────────────────────────────────────────────
132
+ resolveTypeInContext(elementName, ancestorChain) {
133
+ if (ancestorChain.length === 0) {
134
+ return this.index.elementTypeMap.get(elementName);
135
+ }
136
+ let currentType = this.index.elementTypeMap.get(ancestorChain[0]);
137
+ for (let i = 1; i < ancestorChain.length; i++) {
138
+ if (!currentType)
139
+ return undefined;
140
+ currentType = this.findChildType(ancestorChain[i], currentType);
141
+ }
142
+ if (!currentType)
143
+ return undefined;
144
+ return this.findChildType(elementName, currentType);
145
+ }
146
+ findChildType(childName, parentTypeName) {
147
+ const ct = this.index.complexTypeMap.get(parentTypeName);
148
+ if (!ct)
149
+ return undefined;
150
+ const elements = [];
151
+ this.collectElements(ct, elements, new Set(), false);
152
+ const match = elements.find(el => {
153
+ const candidate = stripNsPrefix(el.getAttribute('name') ?? el.getAttribute('ref') ?? '');
154
+ return candidate === childName;
155
+ });
156
+ if (!match)
157
+ return undefined;
158
+ const typeAttr = match.getAttribute('type');
159
+ if (typeAttr)
160
+ return stripNsPrefix(typeAttr);
161
+ return firstChildByLocalName(match, 'complexType')
162
+ ? `__inline__${childName}`
163
+ : undefined;
164
+ }
165
+ // ─── Content model traversal ──────────────────────────────────────────────
166
+ collectElements(node, result, visited, firstOnly) {
167
+ for (const child of directChildElements(node)) {
168
+ switch (child.localName) {
169
+ case 'element':
170
+ result.push(child);
171
+ break;
172
+ case 'choice':
173
+ if (firstOnly) {
174
+ this.collectFirstBranchOfChoice(child, result, visited);
175
+ }
176
+ else {
177
+ this.collectElements(child, result, visited, false);
178
+ }
179
+ break;
180
+ case 'group':
181
+ this.followGroupRef(child, result, visited, firstOnly);
182
+ break;
183
+ default:
184
+ if (CONTAINER_LOCAL_NAMES.has(child.localName ?? '')) {
185
+ this.collectElements(child, result, visited, firstOnly);
186
+ }
187
+ break;
188
+ }
189
+ }
190
+ }
191
+ collectFirstBranchOfChoice(choice, result, visited) {
192
+ const firstEl = firstChildByLocalName(choice, 'element');
193
+ if (firstEl) {
194
+ result.push(firstEl);
195
+ return;
196
+ }
197
+ const firstGroup = firstChildByLocalName(choice, 'group');
198
+ if (firstGroup)
199
+ this.followGroupRef(firstGroup, result, visited, true);
200
+ }
201
+ followGroupRef(groupNode, result, visited, firstOnly) {
202
+ const ref = groupNode.getAttribute('ref');
203
+ if (!ref)
204
+ return;
205
+ const name = stripNsPrefix(ref);
206
+ if (visited.has(name))
207
+ return;
208
+ visited.add(name);
209
+ const group = this.index.groupMap.get(name);
210
+ if (group)
211
+ this.collectElements(group, result, visited, firstOnly);
212
+ }
213
+ // ─── Attribute traversal ──────────────────────────────────────────────────
214
+ collectAttributes(node) {
215
+ const result = [];
216
+ for (const child of directChildElements(node)) {
217
+ switch (child.localName) {
218
+ case 'attribute':
219
+ result.push(child);
220
+ break;
221
+ case 'simpleContent':
222
+ case 'complexContent':
223
+ case 'extension':
224
+ case 'restriction':
225
+ result.push(...this.collectAttributes(child));
226
+ break;
227
+ case 'attributeGroup': {
228
+ const ref = child.getAttribute('ref');
229
+ if (ref)
230
+ result.push(...this.attributesFromGroup(stripNsPrefix(ref)));
231
+ break;
232
+ }
233
+ }
234
+ }
235
+ return result;
236
+ }
237
+ attributesFromGroup(groupName) {
238
+ const group = this.index.attributeGroupMap.get(groupName);
239
+ return group ? this.collectAttributes(group) : [];
240
+ }
241
+ // ─── Enum extraction ──────────────────────────────────────────────────────
242
+ enumsFromInlineSimpleType(attrEl) {
243
+ const st = firstChildByLocalName(attrEl, 'simpleType');
244
+ return st ? this.enumsFromSimpleType(st) : [];
245
+ }
246
+ enumsFromSimpleType(simpleType) {
247
+ const restriction = firstChildByLocalName(simpleType, 'restriction');
248
+ if (!restriction)
249
+ return [];
250
+ return directChildElements(restriction)
251
+ .filter(el => el.localName === 'enumeration')
252
+ .map(el => el.getAttribute('value') ?? '')
253
+ .filter(v => v !== '');
254
+ }
255
+ patternFromAttr(attrEl) {
256
+ const inline = firstChildByLocalName(attrEl, 'simpleType');
257
+ if (inline) {
258
+ const p = this.patternFromSimpleType(inline);
259
+ if (p !== undefined)
260
+ return p;
261
+ }
262
+ const typeName = attrEl.getAttribute('type');
263
+ if (typeName) {
264
+ const named = this.index.simpleTypeMap.get(stripNsPrefix(typeName));
265
+ if (named)
266
+ return this.patternFromSimpleType(named);
267
+ }
268
+ return undefined;
269
+ }
270
+ patternFromSimpleType(simpleType) {
271
+ const restriction = firstChildByLocalName(simpleType, 'restriction');
272
+ if (!restriction)
273
+ return undefined;
274
+ const pattern = firstChildByLocalName(restriction, 'pattern');
275
+ return pattern?.getAttribute('value') ?? undefined;
276
+ }
277
+ // ─── Content model detection ──────────────────────────────────────────────
278
+ detectContentModel(node) {
279
+ for (const child of directChildElements(node)) {
280
+ const ln = child.localName;
281
+ if (ln === 'sequence')
282
+ return 'sequence';
283
+ if (ln === 'choice')
284
+ return 'choice';
285
+ if (ln === 'all')
286
+ return 'all';
287
+ if (ln === 'simpleContent')
288
+ return 'simpleContent';
289
+ if (ln === 'complexContent' || ln === 'extension' || ln === 'restriction') {
290
+ const inner = this.detectContentModel(child);
291
+ if (inner)
292
+ return inner;
293
+ }
294
+ }
295
+ return null;
296
+ }
297
+ // ─── Element parsing ──────────────────────────────────────────────────────
298
+ parseElement(el) {
299
+ return {
300
+ ...this.readAttributes(el),
301
+ ...this.readDocumentation(el),
302
+ };
303
+ }
304
+ readAttributes(el) {
305
+ const result = {};
306
+ for (let i = 0; i < el.attributes.length; i++) {
307
+ const attr = el.attributes[i];
308
+ if (attr.name === 'xmlns' || attr.name.startsWith('xmlns:'))
309
+ continue;
310
+ result[attr.localName ?? attr.name] = attr.value;
311
+ }
312
+ return result;
313
+ }
314
+ readDocumentation(el) {
315
+ const parts = [];
316
+ for (const child of directChildElements(el)) {
317
+ if (child.localName !== 'annotation')
318
+ continue;
319
+ const docNodes = child.getElementsByTagNameNS(XSD_NS, 'documentation');
320
+ for (let i = 0; i < docNodes.length; i++) {
321
+ const docEl = docNodes[i];
322
+ const text = docEl.textContent ??
323
+ docEl.firstChild?.data ??
324
+ '';
325
+ if (text.trim())
326
+ parts.push(text.trim());
327
+ }
328
+ }
329
+ return {
330
+ documentation: parts.join('<br/><hr/><br/>') + `<br/>Source: ${this.index.xsd.path}`,
331
+ };
332
+ }
333
+ // ─── Helpers ──────────────────────────────────────────────────────────────
334
+ complexTypeForElement(elementName) {
335
+ const typeName = this.index.elementTypeMap.get(elementName);
336
+ return typeName ? this.index.complexTypeMap.get(typeName) : undefined;
337
+ }
338
+ withRequiredAttributes(nodes) {
339
+ return nodes.map(node => {
340
+ const name = node.name ?? node.ref;
341
+ if (!name)
342
+ return node;
343
+ const ct = this.complexTypeForElement(name);
344
+ if (!ct)
345
+ return node;
346
+ const required = this.collectAttributes(ct)
347
+ .filter(el => el.getAttribute('use') === 'required')
348
+ .map(el => this.parseElement(el));
349
+ if (required.length > 0)
350
+ node.requiredAttribute = required;
351
+ // Mark as self-closing when the element has no child-element content:
352
+ // covers xs:simpleContent (text value + attrs) and bare attribute-only
353
+ // complexTypes (no sequence/choice/all/complexContent present).
354
+ const hasElementChildren = firstChildByLocalName(ct, 'sequence') !== null ||
355
+ firstChildByLocalName(ct, 'choice') !== null ||
356
+ firstChildByLocalName(ct, 'all') !== null ||
357
+ firstChildByLocalName(ct, 'complexContent') !== null;
358
+ if (!hasElementChildren)
359
+ node.selfClose = true;
360
+ return node;
361
+ });
362
+ }
363
+ }
364
+ //# sourceMappingURL=SchemaQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaQuery.js","sourceRoot":"","sources":["../../src/parser/SchemaQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { DocumentNode } from '../types';
2
+ import type { ISchemaWorker } from '../interfaces/ISchemaWorker';
3
+ export declare class TemplateBuilder {
4
+ /**
5
+ * Build an XML skeleton for `rootTag` up to `level` nesting depth.
6
+ * Searches `workers` for the schema that declares `rootTag` as a root element.
7
+ */
8
+ buildFromRoot(rootTag: string, level: number, withAttributes: boolean, workers: ISchemaWorker[]): string;
9
+ /**
10
+ * Build an XML skeleton starting from a DocumentNode.
11
+ * `resolver` maps element names to the worker that owns them.
12
+ * Returns undefined if `model.name` is missing or no worker is found.
13
+ */
14
+ generateFromModel(model: DocumentNode, level: number, withAttributes: boolean, resolver: (name: string) => ISchemaWorker | undefined): string | undefined;
15
+ private buildNode;
16
+ private serializeAttrs;
17
+ }
18
+ //# sourceMappingURL=TemplateBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateBuilder.d.ts","sourceRoot":"","sources":["../../src/template/TemplateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhE,qBAAa,eAAe;IACxB;;;OAGG;IACH,aAAa,CACT,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,aAAa,EAAE,GACzB,MAAM;IAYT;;;;OAIG;IACH,iBAAiB,CACb,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,OAAO,EACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,GACtD,MAAM,GAAG,SAAS;IAOrB,OAAO,CAAC,SAAS;IA8BjB,OAAO,CAAC,cAAc;CAWzB"}
@@ -0,0 +1,52 @@
1
+ export class TemplateBuilder {
2
+ /**
3
+ * Build an XML skeleton for `rootTag` up to `level` nesting depth.
4
+ * Searches `workers` for the schema that declares `rootTag` as a root element.
5
+ */
6
+ buildFromRoot(rootTag, level, withAttributes, workers) {
7
+ const worker = workers.find(w => w.getRootElements().some(n => n.name === rootTag));
8
+ if (!worker)
9
+ return `<${rootTag}/>`;
10
+ const resolver = (name) => workers.find(w => w.getFirstSubElements(name, false).length > 0);
11
+ return this.buildNode(rootTag, 0, level, withAttributes, worker, resolver);
12
+ }
13
+ /**
14
+ * Build an XML skeleton starting from a DocumentNode.
15
+ * `resolver` maps element names to the worker that owns them.
16
+ * Returns undefined if `model.name` is missing or no worker is found.
17
+ */
18
+ generateFromModel(model, level, withAttributes, resolver) {
19
+ if (!model.name)
20
+ return undefined;
21
+ const worker = resolver(model.name);
22
+ if (!worker)
23
+ return undefined;
24
+ return this.buildNode(model.name, 0, level, withAttributes, worker, resolver);
25
+ }
26
+ buildNode(name, depth, maxDepth, withAttributes, worker, resolver) {
27
+ const indent = ' '.repeat(depth);
28
+ const attrs = this.serializeAttrs(name, withAttributes, worker);
29
+ if (depth >= maxDepth) {
30
+ return `${indent}<${name}${attrs}/>`;
31
+ }
32
+ const children = worker.getFirstSubElements(name, withAttributes);
33
+ const childNames = children.filter(c => !!c.name);
34
+ if (childNames.length === 0) {
35
+ return `${indent}<${name}${attrs}/>`;
36
+ }
37
+ const childLines = childNames.map(child => {
38
+ const childWorker = resolver(child.name) ?? worker;
39
+ return this.buildNode(child.name, depth + 1, maxDepth, withAttributes, childWorker, resolver);
40
+ });
41
+ return [`${indent}<${name}${attrs}>`, ...childLines, `${indent}</${name}>`].join('\n');
42
+ }
43
+ serializeAttrs(name, withAttributes, worker) {
44
+ if (!withAttributes)
45
+ return '';
46
+ const required = worker
47
+ .getAttributesForElement(name)
48
+ .filter(a => a.use === 'required' && !!a.name);
49
+ return required.map(a => ` ${a.name}=""`).join('');
50
+ }
51
+ }
52
+ //# sourceMappingURL=TemplateBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateBuilder.js","sourceRoot":"","sources":["../../src/template/TemplateBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type { editor, languages, IMarkdownString, IRange } from 'monaco-editor';
2
+ export interface IXsd {
3
+ path: string;
4
+ value: string;
5
+ namespace?: string;
6
+ /** Match by substring rather than exact path equality */
7
+ nonStrictPath?: boolean;
8
+ /** Always include this schema regardless of root tag */
9
+ alwaysInclude?: boolean;
10
+ /** Include this schema only when the document root tag matches one of these */
11
+ includeIfRootTag?: string[];
12
+ }
13
+ export declare const ContentModelType: {
14
+ readonly sequence: "sequence";
15
+ readonly choice: "choice";
16
+ readonly all: "all";
17
+ readonly simpleContent: "simpleContent";
18
+ };
19
+ export type ContentModelType = typeof ContentModelType[keyof typeof ContentModelType];
20
+ export interface DocumentNode {
21
+ name?: string;
22
+ documentation?: string;
23
+ type?: string;
24
+ use?: string;
25
+ ref?: string;
26
+ minOccurs?: string;
27
+ maxOccurs?: string;
28
+ selfClose?: boolean;
29
+ pattern?: string;
30
+ requiredAttribute?: DocumentNode[];
31
+ elements?: DocumentNode[];
32
+ }
33
+ export declare enum CompletionType {
34
+ none = 0,
35
+ element = 1,
36
+ attribute = 2,
37
+ incompleteElement = 3,
38
+ closingElement = 4,
39
+ snippet = 5,
40
+ incompleteAttribute = 6,
41
+ attributeValue = 7
42
+ }
43
+ export interface INamespaceInfo {
44
+ prefix: string;
45
+ path: string;
46
+ }
47
+ /** Monaco completion item — uses `import type` so it is erased at runtime. */
48
+ export interface ICompletion {
49
+ label: string | languages.CompletionItemLabel;
50
+ kind: languages.CompletionItemKind;
51
+ tags?: ReadonlyArray<languages.CompletionItemTag>;
52
+ detail?: string;
53
+ documentation?: string | IMarkdownString;
54
+ sortText?: string;
55
+ filterText?: string;
56
+ preselect?: boolean;
57
+ insertText: string;
58
+ insertTextRules?: languages.CompletionItemInsertTextRule;
59
+ /** XSD maxOccurs value — used internally to suppress exhausted suggestions. Not sent to Monaco. */
60
+ maxOccurs?: string;
61
+ range?: IRange | {
62
+ insert: IRange;
63
+ replace: IRange;
64
+ };
65
+ commitCharacters?: string[];
66
+ additionalTextEdits?: editor.ISingleEditOperation[];
67
+ command?: languages.Command;
68
+ }
69
+ export declare enum Severity {
70
+ warning = "warning",
71
+ error = "error",
72
+ fatalError = "fatalError"
73
+ }
74
+ /** Structured validation error — no string-parsing needed at the decoration layer. */
75
+ export interface ValidationError {
76
+ line: number;
77
+ col: number;
78
+ message: string;
79
+ severity: Severity;
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAI/E,MAAM,WAAW,IAAI;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B;AAID,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAA;AACV,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAA;AAErF,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAA;IAClC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;CAC5B;AAID,oBAAY,cAAc;IACtB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,SAAS,IAAA;IACT,iBAAiB,IAAA;IACjB,cAAc,IAAA;IACd,OAAO,IAAA;IACP,mBAAmB,IAAA;IACnB,cAAc,IAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAAA;IAC7C,IAAI,EAAE,SAAS,CAAC,kBAAkB,CAAA;IAClC,IAAI,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,eAAe,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,SAAS,CAAC,4BAA4B,CAAA;IACxD,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EACA,MAAM,GACN;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC,oBAAoB,EAAE,CAAA;IACnD,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO,CAAA;CAC9B;AAID,oBAAY,QAAQ;IAChB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,UAAU,eAAe;CAC5B;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAA;CACrB"}