pug-tail 0.1.0-alpha.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.

Potentially problematic release.


This version of pug-tail might be problematic. Click here for more details.

Files changed (126) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +318 -0
  4. package/dist/cli/config/loader.d.ts +9 -0
  5. package/dist/cli/config/loader.d.ts.map +1 -0
  6. package/dist/cli/config/loader.js +82 -0
  7. package/dist/cli/config/loader.js.map +1 -0
  8. package/dist/cli/config/matcher.d.ts +3 -0
  9. package/dist/cli/config/matcher.d.ts.map +1 -0
  10. package/dist/cli/config/matcher.js +29 -0
  11. package/dist/cli/config/matcher.js.map +1 -0
  12. package/dist/cli/config/types.d.ts +26 -0
  13. package/dist/cli/config/types.d.ts.map +1 -0
  14. package/dist/cli/config/types.js +2 -0
  15. package/dist/cli/config/types.js.map +1 -0
  16. package/dist/cli/dataLoader.d.ts +8 -0
  17. package/dist/cli/dataLoader.d.ts.map +1 -0
  18. package/dist/cli/dataLoader.js +70 -0
  19. package/dist/cli/dataLoader.js.map +1 -0
  20. package/dist/cli/dependencyTracker.d.ts +19 -0
  21. package/dist/cli/dependencyTracker.d.ts.map +1 -0
  22. package/dist/cli/dependencyTracker.js +149 -0
  23. package/dist/cli/dependencyTracker.js.map +1 -0
  24. package/dist/cli/fileProcessor.d.ts +32 -0
  25. package/dist/cli/fileProcessor.d.ts.map +1 -0
  26. package/dist/cli/fileProcessor.js +218 -0
  27. package/dist/cli/fileProcessor.js.map +1 -0
  28. package/dist/cli/pathResolver.d.ts +12 -0
  29. package/dist/cli/pathResolver.d.ts.map +1 -0
  30. package/dist/cli/pathResolver.js +35 -0
  31. package/dist/cli/pathResolver.js.map +1 -0
  32. package/dist/cli/watcher.d.ts +22 -0
  33. package/dist/cli/watcher.d.ts.map +1 -0
  34. package/dist/cli/watcher.js +186 -0
  35. package/dist/cli/watcher.js.map +1 -0
  36. package/dist/cli.d.ts +3 -0
  37. package/dist/cli.d.ts.map +1 -0
  38. package/dist/cli.js +624 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/core/astTransformer.d.ts +32 -0
  41. package/dist/core/astTransformer.d.ts.map +1 -0
  42. package/dist/core/astTransformer.js +532 -0
  43. package/dist/core/astTransformer.js.map +1 -0
  44. package/dist/core/componentRegistry.d.ts +14 -0
  45. package/dist/core/componentRegistry.d.ts.map +1 -0
  46. package/dist/core/componentRegistry.js +32 -0
  47. package/dist/core/componentRegistry.js.map +1 -0
  48. package/dist/core/errorHandler.d.ts +24 -0
  49. package/dist/core/errorHandler.d.ts.map +1 -0
  50. package/dist/core/errorHandler.js +102 -0
  51. package/dist/core/errorHandler.js.map +1 -0
  52. package/dist/core/slotResolver.d.ts +9 -0
  53. package/dist/core/slotResolver.d.ts.map +1 -0
  54. package/dist/core/slotResolver.js +88 -0
  55. package/dist/core/slotResolver.js.map +1 -0
  56. package/dist/index.d.ts +10 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +8 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/transform.d.ts +26 -0
  61. package/dist/transform.d.ts.map +1 -0
  62. package/dist/transform.js +247 -0
  63. package/dist/transform.js.map +1 -0
  64. package/dist/types/index.d.ts +41 -0
  65. package/dist/types/index.d.ts.map +1 -0
  66. package/dist/types/index.js +2 -0
  67. package/dist/types/index.js.map +1 -0
  68. package/dist/utils/astHelpers.d.ts +16 -0
  69. package/dist/utils/astHelpers.d.ts.map +1 -0
  70. package/dist/utils/astHelpers.js +66 -0
  71. package/dist/utils/astHelpers.js.map +1 -0
  72. package/dist/utils/attributeCategorizer.d.ts +6 -0
  73. package/dist/utils/attributeCategorizer.d.ts.map +1 -0
  74. package/dist/utils/attributeCategorizer.js +17 -0
  75. package/dist/utils/attributeCategorizer.js.map +1 -0
  76. package/dist/utils/attributes/addAttributeFallthrough.d.ts +4 -0
  77. package/dist/utils/attributes/addAttributeFallthrough.d.ts.map +1 -0
  78. package/dist/utils/attributes/addAttributeFallthrough.js +22 -0
  79. package/dist/utils/attributes/addAttributeFallthrough.js.map +1 -0
  80. package/dist/utils/attributes/createAttributesCode.d.ts +3 -0
  81. package/dist/utils/attributes/createAttributesCode.d.ts.map +1 -0
  82. package/dist/utils/attributes/createAttributesCode.js +21 -0
  83. package/dist/utils/attributes/createAttributesCode.js.map +1 -0
  84. package/dist/utils/attributes/extractAttributes.d.ts +4 -0
  85. package/dist/utils/attributes/extractAttributes.d.ts.map +1 -0
  86. package/dist/utils/attributes/extractAttributes.js +15 -0
  87. package/dist/utils/attributes/extractAttributes.js.map +1 -0
  88. package/dist/utils/attributes/findRootElements.d.ts +7 -0
  89. package/dist/utils/attributes/findRootElements.d.ts.map +1 -0
  90. package/dist/utils/attributes/findRootElements.js +36 -0
  91. package/dist/utils/attributes/findRootElements.js.map +1 -0
  92. package/dist/utils/attributes/index.d.ts +5 -0
  93. package/dist/utils/attributes/index.d.ts.map +1 -0
  94. package/dist/utils/attributes/index.js +5 -0
  95. package/dist/utils/attributes/index.js.map +1 -0
  96. package/dist/utils/babelHelpers.d.ts +3 -0
  97. package/dist/utils/babelHelpers.d.ts.map +1 -0
  98. package/dist/utils/babelHelpers.js +73 -0
  99. package/dist/utils/babelHelpers.js.map +1 -0
  100. package/dist/utils/componentDetector.d.ts +12 -0
  101. package/dist/utils/componentDetector.d.ts.map +1 -0
  102. package/dist/utils/componentDetector.js +206 -0
  103. package/dist/utils/componentDetector.js.map +1 -0
  104. package/dist/utils/dataFilesDetector.d.ts +4 -0
  105. package/dist/utils/dataFilesDetector.d.ts.map +1 -0
  106. package/dist/utils/dataFilesDetector.js +88 -0
  107. package/dist/utils/dataFilesDetector.js.map +1 -0
  108. package/dist/utils/deepClone.d.ts +5 -0
  109. package/dist/utils/deepClone.d.ts.map +1 -0
  110. package/dist/utils/deepClone.js +10 -0
  111. package/dist/utils/deepClone.js.map +1 -0
  112. package/dist/utils/index.d.ts +7 -0
  113. package/dist/utils/index.d.ts.map +1 -0
  114. package/dist/utils/index.js +7 -0
  115. package/dist/utils/index.js.map +1 -0
  116. package/dist/utils/scopeAnalyzer.d.ts +5 -0
  117. package/dist/utils/scopeAnalyzer.d.ts.map +1 -0
  118. package/dist/utils/scopeAnalyzer.js +267 -0
  119. package/dist/utils/scopeAnalyzer.js.map +1 -0
  120. package/dist/utils/usageDetector.d.ts +8 -0
  121. package/dist/utils/usageDetector.d.ts.map +1 -0
  122. package/dist/utils/usageDetector.js +148 -0
  123. package/dist/utils/usageDetector.js.map +1 -0
  124. package/docs/COMPONENTS.md +708 -0
  125. package/docs/CONFIGURATION.md +708 -0
  126. package/package.json +103 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/astHelpers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAepE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,CAEjD;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,KAAK,CAErD;AAQD,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,CAEnD;AAgBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,GAAG,CAEnE;AAeD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,CAExD;AAeD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,OAAO,GAAG,SAAS,CAI9B;AAcD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAG1E;AAgBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,EAAE,CAE9D;AAcD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,CAM9D;AAeD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAWlD;AAeD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAUjE;AAeD,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,GACjC,IAAI,EAAE,CAER;AAeD,wBAAgB,QAAQ,CACtB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,GACjC,IAAI,GAAG,SAAS,CAElB"}
@@ -0,0 +1,66 @@
1
+ export function isTagNode(node) {
2
+ return node.type === 'Tag';
3
+ }
4
+ export function isBlockNode(node) {
5
+ return node.type === 'Block';
6
+ }
7
+ export function isTextNode(node) {
8
+ return node.type === 'Text';
9
+ }
10
+ export function isTagWithName(node, name) {
11
+ return isTagNode(node) && node.name === name;
12
+ }
13
+ export function isCapitalizedTag(node) {
14
+ return isTagNode(node) && /^[A-Z]/.test(node.name);
15
+ }
16
+ export function getAttributeValue(attrs, name) {
17
+ if (!attrs)
18
+ return undefined;
19
+ const attr = attrs.find((a) => a.name === name);
20
+ return attr?.val;
21
+ }
22
+ export function getAttributeNames(attrs) {
23
+ if (!attrs)
24
+ return [];
25
+ return attrs.map((a) => a.name);
26
+ }
27
+ export function getChildNodes(block) {
28
+ return block?.nodes ?? [];
29
+ }
30
+ export function getNodeLocationObject(node) {
31
+ return {
32
+ line: 'line' in node ? (node.line ?? 0) : 0,
33
+ column: 'column' in node ? node.column : undefined,
34
+ filename: 'filename' in node ? node.filename : undefined,
35
+ };
36
+ }
37
+ export function getNodeLocation(node) {
38
+ const filename = 'filename' in node ? node.filename : undefined;
39
+ const line = 'line' in node ? node.line : undefined;
40
+ const column = 'column' in node ? node.column : undefined;
41
+ const parts = [];
42
+ if (filename)
43
+ parts.push(filename);
44
+ if (line !== undefined)
45
+ parts.push(String(line));
46
+ if (column !== undefined)
47
+ parts.push(String(column));
48
+ return parts.length > 0 ? parts.join(':') : 'unknown';
49
+ }
50
+ export function getFirstTextContent(node) {
51
+ if (!node.block)
52
+ return undefined;
53
+ for (const child of node.block.nodes) {
54
+ if (isTextNode(child)) {
55
+ return child.val;
56
+ }
57
+ }
58
+ return undefined;
59
+ }
60
+ export function filterNodes(block, predicate) {
61
+ return block.nodes.filter(predicate);
62
+ }
63
+ export function findNode(block, predicate) {
64
+ return block.nodes.find(predicate);
65
+ }
66
+ //# sourceMappingURL=astHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astHelpers.js","sourceRoot":"","sources":["../../src/utils/astHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ComponentUsage } from '../types/index.js';
2
+ export declare function categorizeAttributes(callAttributes: Map<string, string>, usage: ComponentUsage): {
3
+ props: Map<string, string>;
4
+ attrs: Map<string, string>;
5
+ };
6
+ //# sourceMappingURL=attributeCategorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributeCategorizer.d.ts","sourceRoot":"","sources":["../../src/utils/attributeCategorizer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AA2B7C,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,KAAK,EAAE,cAAc,GACpB;IAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAkB5D"}
@@ -0,0 +1,17 @@
1
+ export function categorizeAttributes(callAttributes, usage) {
2
+ const props = new Map();
3
+ const attrs = new Map();
4
+ for (const [key, value] of callAttributes) {
5
+ if (usage.fromProps.includes(key)) {
6
+ props.set(key, value);
7
+ }
8
+ else if (usage.fromAttrs.includes(key)) {
9
+ attrs.set(key, value);
10
+ }
11
+ else {
12
+ attrs.set(key, value);
13
+ }
14
+ }
15
+ return { props, attrs };
16
+ }
17
+ //# sourceMappingURL=attributeCategorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributeCategorizer.js","sourceRoot":"","sources":["../../src/utils/attributeCategorizer.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,oBAAoB,CAClC,cAAmC,EACnC,KAAqB;IAErB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAElC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAEzC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YAEN,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACvB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AACzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Tag } from '@/types/pug';
2
+ export declare function addAttributeFallthrough(rootElement: Tag, variableName?: string): Tag;
3
+ export declare function hasAttributeBlocks(tag: Tag): boolean;
4
+ //# sourceMappingURL=addAttributeFallthrough.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAttributeFallthrough.d.ts","sourceRoot":"","sources":["../../../src/utils/attributes/addAttributeFallthrough.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAkB,GAAG,EAAE,MAAM,aAAa,CAAA;AA2BtD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,GAAG,EAChB,YAAY,GAAE,MAAqB,GAClC,GAAG,CAYL;AAQD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAEpD"}
@@ -0,0 +1,22 @@
1
+ export function addAttributeFallthrough(rootElement, variableName = 'attributes') {
2
+ if (!hasAttributeBlocks(rootElement)) {
3
+ if (!rootElement.attributeBlocks) {
4
+ rootElement.attributeBlocks = [];
5
+ }
6
+ rootElement.attributeBlocks.push(createAttributeBlock(variableName));
7
+ }
8
+ return rootElement;
9
+ }
10
+ export function hasAttributeBlocks(tag) {
11
+ return Boolean(tag.attributeBlocks && tag.attributeBlocks.length > 0);
12
+ }
13
+ function createAttributeBlock(variableName = 'attributes') {
14
+ return {
15
+ type: 'AttributeBlock',
16
+ val: variableName,
17
+ line: 0,
18
+ column: 0,
19
+ filename: '',
20
+ };
21
+ }
22
+ //# sourceMappingURL=addAttributeFallthrough.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAttributeFallthrough.js","sourceRoot":"","sources":["../../../src/utils/attributes/addAttributeFallthrough.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,uBAAuB,CACrC,WAAgB,EAChB,eAAuB,YAAY;IAEnC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QAErC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YACjC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAA;QAClC,CAAC;QAGD,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAQD,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACvE,CAAC;AAQD,SAAS,oBAAoB,CAC3B,eAAuB,YAAY;IAEnC,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,EAAE;KACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Code } from '@/types/pug';
2
+ export declare function createAttributesCode(attributes: Map<string, string>): Code;
3
+ //# sourceMappingURL=createAttributesCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAttributesCode.d.ts","sourceRoot":"","sources":["../../../src/utils/attributes/createAttributesCode.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AA8BvC,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAuB1E"}
@@ -0,0 +1,21 @@
1
+ export function createAttributesCode(attributes) {
2
+ const objectEntries = Array.from(attributes.entries())
3
+ .map(([key, val]) => {
4
+ const needsQuotes = !/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key);
5
+ const quotedKey = needsQuotes ? `"${key}"` : key;
6
+ return `${quotedKey}: ${val}`;
7
+ })
8
+ .join(', ');
9
+ const objectExpr = objectEntries.length > 0 ? `{${objectEntries}}` : '{}';
10
+ return {
11
+ type: 'Code',
12
+ val: `var attributes = ${objectExpr}`,
13
+ buffer: false,
14
+ mustEscape: false,
15
+ isInline: false,
16
+ line: 0,
17
+ column: 0,
18
+ filename: '',
19
+ };
20
+ }
21
+ //# sourceMappingURL=createAttributesCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAttributesCode.js","sourceRoot":"","sources":["../../../src/utils/attributes/createAttributesCode.ts"],"names":[],"mappings":"AAoCA,MAAM,UAAU,oBAAoB,CAAC,UAA+B;IAElE,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QAElB,MAAM,WAAW,GAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAChD,OAAO,GAAG,SAAS,KAAK,GAAG,EAAE,CAAA;IAC/B,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;IAEzE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,oBAAoB,UAAU,EAAE;QACrC,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,EAAE;KACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Tag } from '@/types/pug';
2
+ export declare function extractAttributes(callNode: Tag): Map<string, string>;
3
+ export declare function hasAttributes(callNode: Tag): boolean;
4
+ //# sourceMappingURL=extractAttributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractAttributes.d.ts","sourceRoot":"","sources":["../../../src/utils/attributes/extractAttributes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAsBtC,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBpE;AAeD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAEpD"}
@@ -0,0 +1,15 @@
1
+ export function extractAttributes(callNode) {
2
+ const attributes = new Map();
3
+ if (!callNode.attrs || callNode.attrs.length === 0) {
4
+ return attributes;
5
+ }
6
+ for (const attr of callNode.attrs) {
7
+ const val = typeof attr.val === 'boolean' ? String(attr.val) : attr.val;
8
+ attributes.set(attr.name, val);
9
+ }
10
+ return attributes;
11
+ }
12
+ export function hasAttributes(callNode) {
13
+ return Boolean(callNode.attrs && callNode.attrs.length > 0);
14
+ }
15
+ //# sourceMappingURL=extractAttributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractAttributes.js","sourceRoot":"","sources":["../../../src/utils/attributes/extractAttributes.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,iBAAiB,CAAC,QAAa;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE5C,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,UAAU,CAAA;IACnB,CAAC;IAGD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAIlC,MAAM,GAAG,GACP,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;QAC7D,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAeD,MAAM,UAAU,aAAa,CAAC,QAAa;IACzC,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAC7D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Block, Tag } from '@/types/pug';
2
+ export declare function findRootElements(componentBody: Block): Tag[];
3
+ export declare function findSingleRootElement(componentBody: Block): Tag | undefined;
4
+ export declare function hasSingleRoot(componentBody: Block): boolean;
5
+ export declare function hasMultipleRoots(componentBody: Block): boolean;
6
+ export declare function hasAnyAttributeBlocks(componentBody: Block): boolean;
7
+ //# sourceMappingURL=findRootElements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findRootElements.d.ts","sourceRoot":"","sources":["../../../src/utils/attributes/findRootElements.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAQ,GAAG,EAAE,MAAM,aAAa,CAAA;AAgCnD,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,KAAK,GAAG,GAAG,EAAE,CAU5D;AAoCD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,KAAK,GAAG,GAAG,GAAG,SAAS,CAG3E;AAQD,wBAAgB,aAAa,CAAC,aAAa,EAAE,KAAK,GAAG,OAAO,CAE3D;AAQD,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,KAAK,GAAG,OAAO,CAE9D;AA4BD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,KAAK,GAAG,OAAO,CAanE"}
@@ -0,0 +1,36 @@
1
+ import walk from 'pug-walk';
2
+ export function findRootElements(componentBody) {
3
+ const rootElements = [];
4
+ for (const node of componentBody.nodes) {
5
+ if (isRootElement(node)) {
6
+ rootElements.push(node);
7
+ }
8
+ }
9
+ return rootElements;
10
+ }
11
+ function isRootElement(node) {
12
+ return node.type === 'Tag';
13
+ }
14
+ export function findSingleRootElement(componentBody) {
15
+ const roots = findRootElements(componentBody);
16
+ return roots.length === 1 ? roots[0] : undefined;
17
+ }
18
+ export function hasSingleRoot(componentBody) {
19
+ return findRootElements(componentBody).length === 1;
20
+ }
21
+ export function hasMultipleRoots(componentBody) {
22
+ return findRootElements(componentBody).length > 1;
23
+ }
24
+ export function hasAnyAttributeBlocks(componentBody) {
25
+ let found = false;
26
+ walk(componentBody, (node) => {
27
+ if (node.type === 'Tag') {
28
+ const tag = node;
29
+ if (tag.attributeBlocks && tag.attributeBlocks.length > 0) {
30
+ found = true;
31
+ }
32
+ }
33
+ });
34
+ return found;
35
+ }
36
+ //# sourceMappingURL=findRootElements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findRootElements.js","sourceRoot":"","sources":["../../../src/utils/attributes/findRootElements.ts"],"names":[],"mappings":"AAMA,OAAO,IAAI,MAAM,UAAU,CAAA;AAiC3B,MAAM,UAAU,gBAAgB,CAAC,aAAoB;IACnD,MAAM,YAAY,GAAU,EAAE,CAAA;IAE9B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,IAAW,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAWD,SAAS,aAAa,CAAC,IAAU;IAC/B,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAA;AAC5B,CAAC;AAuBD,MAAM,UAAU,qBAAqB,CAAC,aAAoB;IACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAC7C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClD,CAAC;AAQD,MAAM,UAAU,aAAa,CAAC,aAAoB;IAChD,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AACrD,CAAC;AAQD,MAAM,UAAU,gBAAgB,CAAC,aAAoB;IACnD,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AACnD,CAAC;AA4BD,MAAM,UAAU,qBAAqB,CAAC,aAAoB;IACxD,IAAI,KAAK,GAAG,KAAK,CAAA;IAEjB,IAAI,CAAC,aAAa,EAAE,CAAC,IAAU,EAAE,EAAE;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAW,CAAA;YACvB,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,KAAK,GAAG,IAAI,CAAA;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { addAttributeFallthrough, hasAttributeBlocks, } from './addAttributeFallthrough.js';
2
+ export { createAttributesCode } from './createAttributesCode.js';
3
+ export { extractAttributes, hasAttributes, } from './extractAttributes.js';
4
+ export { findRootElements, findSingleRootElement, hasAnyAttributeBlocks, hasMultipleRoots, hasSingleRoot, } from './findRootElements.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/attributes/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GACd,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { addAttributeFallthrough, hasAttributeBlocks, } from './addAttributeFallthrough.js';
2
+ export { createAttributesCode } from './createAttributesCode.js';
3
+ export { extractAttributes, hasAttributes, } from './extractAttributes.js';
4
+ export { findRootElements, findSingleRootElement, hasAnyAttributeBlocks, hasMultipleRoots, hasSingleRoot, } from './findRootElements.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/attributes/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GACd,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare function extractDestructuredVars(code: string): string[];
2
+ export declare function detectDestructuringSource(code: string): 'props' | 'attrs' | null;
3
+ //# sourceMappingURL=babelHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"babelHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/babelHelpers.ts"],"names":[],"mappings":"AAwCA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAwC9D;AAuDD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,GACX,OAAO,GAAG,OAAO,GAAG,IAAI,CA6B1B"}
@@ -0,0 +1,73 @@
1
+ import { parse } from '@babel/parser';
2
+ import traverseModule from '@babel/traverse';
3
+ const traverse = typeof traverseModule === 'function'
4
+ ? traverseModule
5
+ : traverseModule.default;
6
+ export function extractDestructuredVars(code) {
7
+ try {
8
+ const ast = parse(code, {
9
+ sourceType: 'module',
10
+ plugins: ['typescript'],
11
+ });
12
+ const vars = [];
13
+ traverse(ast, {
14
+ VariableDeclarator(path) {
15
+ if (path.node.id.type === 'ObjectPattern') {
16
+ for (const prop of path.node.id.properties) {
17
+ if (prop.type === 'ObjectProperty') {
18
+ const keyName = getPropertyKeyName(prop);
19
+ if (keyName) {
20
+ vars.push(keyName);
21
+ }
22
+ }
23
+ }
24
+ }
25
+ },
26
+ });
27
+ return vars;
28
+ }
29
+ catch (_error) {
30
+ console.warn(`Failed to parse JavaScript code: ${code}`, _error instanceof Error ? _error.message : _error);
31
+ return [];
32
+ }
33
+ }
34
+ function getPropertyKeyName(prop) {
35
+ if (prop.key.type === 'Identifier') {
36
+ return prop.key.name;
37
+ }
38
+ if (prop.key.type === 'StringLiteral') {
39
+ return prop.key.value;
40
+ }
41
+ if (prop.key.type === 'NumericLiteral') {
42
+ return String(prop.key.value);
43
+ }
44
+ return null;
45
+ }
46
+ export function detectDestructuringSource(code) {
47
+ try {
48
+ const ast = parse(code, {
49
+ sourceType: 'module',
50
+ plugins: ['typescript'],
51
+ });
52
+ let source = null;
53
+ traverse(ast, {
54
+ VariableDeclarator(path) {
55
+ if (path.node.id.type === 'ObjectPattern' &&
56
+ path.node.init?.type === 'Identifier') {
57
+ const initName = path.node.init.name;
58
+ if (initName === '$props') {
59
+ source = 'props';
60
+ }
61
+ else if (initName === '$attrs') {
62
+ source = 'attrs';
63
+ }
64
+ }
65
+ },
66
+ });
67
+ return source;
68
+ }
69
+ catch (_error) {
70
+ return null;
71
+ }
72
+ }
73
+ //# sourceMappingURL=babelHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"babelHelpers.js","sourceRoot":"","sources":["../../src/utils/babelHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ErrorHandler } from '../core/errorHandler.js';
2
+ import type { ComponentDefinition, SlotDefinition } from '../types/index.js';
3
+ import type { Block, Node, Tag } from '@/types/pug';
4
+ export declare function isComponentDefinitionNode(node: Node): node is Tag;
5
+ export declare function extractComponentName(componentNode: Tag): string;
6
+ export declare function extractComponentBody(componentNode: Tag): Block;
7
+ export declare function extractComponentDefinition(componentNode: Tag, errorHandler?: ErrorHandler): ComponentDefinition;
8
+ export declare function isSlotDefinitionNode(node: Node): node is Tag;
9
+ export declare function extractSlotName(slotNode: Tag): string;
10
+ export declare function extractSlotDefinition(slotNode: Tag): SlotDefinition;
11
+ export declare function extractSlotDefinitions(block: Block, errorHandler?: ErrorHandler): Map<string, SlotDefinition>;
12
+ //# sourceMappingURL=componentDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"componentDetector.d.ts","sourceRoot":"","sources":["../../src/utils/componentDetector.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAA;AAChF,OAAO,KAAK,EACV,KAAK,EAKL,IAAI,EACJ,GAAG,EAIJ,MAAM,aAAa,CAAA;AAiBpB,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,CAEjE;AAmBD,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,GAAG,GAAG,MAAM,CA6B/D;AAiBD,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,GAAG,GAAG,KAAK,CAwB9D;AAmBD,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,GAAG,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,mBAAmB,CAiBrB;AAeD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,CAE5D;AAiBD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CA0BrD;AAiBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,GAAG,GAAG,cAAc,CAcnE;AAgBD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,EACZ,YAAY,CAAC,EAAE,YAAY,GAC1B,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAqI7B"}
@@ -0,0 +1,206 @@
1
+ import { getNodeLocationObject, isTagNode, isTagWithName } from './astHelpers.js';
2
+ import { deepCloneBlock } from './deepClone.js';
3
+ export function isComponentDefinitionNode(node) {
4
+ return isTagWithName(node, 'component');
5
+ }
6
+ export function extractComponentName(componentNode) {
7
+ if (!componentNode.block) {
8
+ throw new Error(`Component definition must have a block at ${getNodeLocationString(componentNode)}`);
9
+ }
10
+ const firstTextNode = componentNode.block.nodes.find((node) => node.type === 'Text');
11
+ if (!firstTextNode) {
12
+ throw new Error(`Component name not found. Expected format: component ComponentName() at ${getNodeLocationString(componentNode)}`);
13
+ }
14
+ const nameWithParens = firstTextNode.val.trim();
15
+ const match = nameWithParens.match(/^([A-Z][a-zA-Z0-9_]*)\s*\(\)?$/);
16
+ if (!match || !match[1]) {
17
+ throw new Error(`Invalid component name format: "${nameWithParens}". Expected format: ComponentName() at ${getNodeLocationString(componentNode)}`);
18
+ }
19
+ return match[1];
20
+ }
21
+ export function extractComponentBody(componentNode) {
22
+ if (!componentNode.block) {
23
+ return {
24
+ type: 'Block',
25
+ nodes: [],
26
+ line: componentNode.line,
27
+ column: componentNode.column,
28
+ filename: componentNode.filename,
29
+ };
30
+ }
31
+ const bodyNodes = componentNode.block.nodes.filter((node) => node.type !== 'Text' || !node.val.match(/^[A-Z][a-zA-Z0-9_]*\s*\(\)?$/));
32
+ return {
33
+ type: 'Block',
34
+ nodes: bodyNodes,
35
+ line: componentNode.block.line,
36
+ column: componentNode.block.column,
37
+ filename: componentNode.block.filename,
38
+ };
39
+ }
40
+ export function extractComponentDefinition(componentNode, errorHandler) {
41
+ const name = extractComponentName(componentNode);
42
+ const body = extractComponentBody(componentNode);
43
+ const slots = extractSlotDefinitions(body, errorHandler);
44
+ const location = {
45
+ line: componentNode.line,
46
+ column: componentNode.column,
47
+ filename: componentNode.filename,
48
+ };
49
+ return {
50
+ name,
51
+ body: deepCloneBlock(body),
52
+ slots,
53
+ location,
54
+ };
55
+ }
56
+ export function isSlotDefinitionNode(node) {
57
+ return isTagWithName(node, 'slot');
58
+ }
59
+ export function extractSlotName(slotNode) {
60
+ if (slotNode.attrs && slotNode.attrs.length > 0) {
61
+ const firstAttr = slotNode.attrs[0];
62
+ if (!firstAttr) {
63
+ return 'default';
64
+ }
65
+ if (firstAttr.name === 'name') {
66
+ const val = firstAttr.val;
67
+ if (typeof val === 'string') {
68
+ return val.replace(/^['"]|['"]$/g, '');
69
+ }
70
+ throw new Error(`Invalid slot name attribute value at ${getNodeLocationString(slotNode)}`);
71
+ }
72
+ return firstAttr.name;
73
+ }
74
+ return 'default';
75
+ }
76
+ export function extractSlotDefinition(slotNode) {
77
+ const name = extractSlotName(slotNode);
78
+ const location = {
79
+ line: slotNode.line,
80
+ column: slotNode.column,
81
+ filename: slotNode.filename,
82
+ };
83
+ return {
84
+ name,
85
+ placeholder: slotNode,
86
+ location,
87
+ };
88
+ }
89
+ export function extractSlotDefinitions(block, errorHandler) {
90
+ const slots = new Map();
91
+ function traverse(node, path = []) {
92
+ if (isSlotDefinitionNode(node)) {
93
+ const slotDef = extractSlotDefinition(node);
94
+ const currentPath = path.join('>');
95
+ if (slots.has(slotDef.name)) {
96
+ const existing = slots.get(slotDef.name);
97
+ if (existing && existing.location.path === currentPath) {
98
+ if (errorHandler) {
99
+ const location = getNodeLocationObject(node);
100
+ throw errorHandler.duplicateSlotDefinition(slotDef.name, location);
101
+ }
102
+ throw new Error(`Duplicate slot definition "${slotDef.name}" at ${getNodeLocationString(node)}. ` +
103
+ `Previously defined at ${getNodeLocationString(existing.placeholder)}`);
104
+ }
105
+ }
106
+ const slotDefWithPath = {
107
+ ...slotDef,
108
+ location: {
109
+ ...slotDef.location,
110
+ path: currentPath,
111
+ },
112
+ };
113
+ slots.set(slotDef.name, slotDefWithPath);
114
+ }
115
+ if (isTagNode(node) || node.type === 'InterpolatedTag') {
116
+ const tagNode = node;
117
+ if (node.type === 'Tag' && /^[A-Z]/.test(tagNode.name)) {
118
+ return;
119
+ }
120
+ if (tagNode.block) {
121
+ for (const child of tagNode.block.nodes) {
122
+ traverse(child, path);
123
+ }
124
+ }
125
+ }
126
+ if (node.type === 'Block') {
127
+ for (const child of node.nodes) {
128
+ traverse(child, path);
129
+ }
130
+ }
131
+ if (node.type === 'Conditional') {
132
+ const conditional = node;
133
+ if (conditional.consequent?.nodes) {
134
+ for (const child of conditional.consequent.nodes) {
135
+ traverse(child, [...path, 'if']);
136
+ }
137
+ }
138
+ if (conditional.alternate) {
139
+ if (conditional.alternate.type === 'Block' &&
140
+ conditional.alternate.nodes) {
141
+ for (const child of conditional.alternate.nodes) {
142
+ traverse(child, [...path, 'else']);
143
+ }
144
+ }
145
+ else if (conditional.alternate.type === 'Conditional') {
146
+ traverse(conditional.alternate, [...path, 'else-if']);
147
+ }
148
+ }
149
+ }
150
+ if (node.type === 'Each') {
151
+ const each = node;
152
+ if (each.block?.nodes) {
153
+ for (const child of each.block.nodes) {
154
+ traverse(child, [...path, 'each']);
155
+ }
156
+ }
157
+ if (each.alternate?.nodes) {
158
+ for (const child of each.alternate.nodes) {
159
+ traverse(child, [...path, 'each-else']);
160
+ }
161
+ }
162
+ }
163
+ if (node.type === 'Case') {
164
+ const caseNode = node;
165
+ if (caseNode.block?.nodes) {
166
+ for (const child of caseNode.block.nodes) {
167
+ traverse(child, [...path, 'case']);
168
+ }
169
+ }
170
+ }
171
+ if (node.type === 'When') {
172
+ const whenNode = node;
173
+ if (whenNode.block?.nodes) {
174
+ for (const child of whenNode.block.nodes) {
175
+ traverse(child, [...path, `when:${whenNode.expr}`]);
176
+ }
177
+ }
178
+ }
179
+ if (node.type === 'While') {
180
+ const whileNode = node;
181
+ if (whileNode.block?.nodes) {
182
+ for (const child of whileNode.block.nodes) {
183
+ traverse(child, [...path, 'while']);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ for (const node of block.nodes) {
189
+ traverse(node);
190
+ }
191
+ return slots;
192
+ }
193
+ function getNodeLocationString(node) {
194
+ const filename = 'filename' in node ? node.filename : undefined;
195
+ const line = 'line' in node ? node.line : undefined;
196
+ const column = 'column' in node ? node.column : undefined;
197
+ const parts = [];
198
+ if (filename)
199
+ parts.push(filename);
200
+ if (line !== undefined)
201
+ parts.push(String(line));
202
+ if (column !== undefined)
203
+ parts.push(String(column));
204
+ return parts.length > 0 ? parts.join(':') : 'unknown';
205
+ }
206
+ //# sourceMappingURL=componentDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"componentDetector.js","sourceRoot":"","sources":["../../src/utils/componentDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Block } from '@/types/pug';
2
+ export declare function detectDataFiles(ast: Block): string[];
3
+ export declare function removeDataFilesDeclaration(ast: Block): void;
4
+ //# sourceMappingURL=dataFilesDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataFilesDetector.d.ts","sourceRoot":"","sources":["../../src/utils/dataFilesDetector.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAQ,MAAM,aAAa,CAAA;AAS9C,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,EAAE,CAsBpD;AA+CD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAqB3D"}