@react-pug/react-pug-core 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.
- package/README.md +60 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/language/diagnosticMapping.d.ts +25 -0
- package/dist/language/diagnosticMapping.d.ts.map +1 -0
- package/dist/language/diagnosticMapping.js +89 -0
- package/dist/language/diagnosticMapping.js.map +1 -0
- package/dist/language/extractRegions.d.ts +39 -0
- package/dist/language/extractRegions.d.ts.map +1 -0
- package/dist/language/extractRegions.js +419 -0
- package/dist/language/extractRegions.js.map +1 -0
- package/dist/language/mapping.d.ts +181 -0
- package/dist/language/mapping.d.ts.map +1 -0
- package/dist/language/mapping.js +32 -0
- package/dist/language/mapping.js.map +1 -0
- package/dist/language/positionMapping.d.ts +6 -0
- package/dist/language/positionMapping.d.ts.map +1 -0
- package/dist/language/positionMapping.js +138 -0
- package/dist/language/positionMapping.js.map +1 -0
- package/dist/language/pugToTsx.d.ts +39 -0
- package/dist/language/pugToTsx.d.ts.map +1 -0
- package/dist/language/pugToTsx.js +1484 -0
- package/dist/language/pugToTsx.js.map +1 -0
- package/dist/language/shadowDocument.d.ts +15 -0
- package/dist/language/shadowDocument.d.ts.map +1 -0
- package/dist/language/shadowDocument.js +480 -0
- package/dist/language/shadowDocument.js.map +1 -0
- package/dist/language/sourceTransform.d.ts +88 -0
- package/dist/language/sourceTransform.d.ts.map +1 -0
- package/dist/language/sourceTransform.js +80 -0
- package/dist/language/sourceTransform.js.map +1 -0
- package/package.json +22 -0
- package/tsconfig.json +12 -0
package/README.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# @react-pug/react-pug-core
|
|
2
|
+
|
|
3
|
+
Shared transformation and mapping engine for the `react-pug` toolchain.
|
|
4
|
+
|
|
5
|
+
This package is the low-level core used by:
|
|
6
|
+
|
|
7
|
+
- `@react-pug/typescript-plugin-react-pug`
|
|
8
|
+
- `@react-pug/babel-plugin-react-pug`
|
|
9
|
+
- `@react-pug/swc-plugin-react-pug`
|
|
10
|
+
- `@react-pug/esbuild-plugin-react-pug`
|
|
11
|
+
- `@react-pug/eslint-plugin-react-pug`
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm i @react-pug/react-pug-core
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## What It Provides
|
|
20
|
+
|
|
21
|
+
- extraction of `pug\`...\`` template regions from JS/TS files
|
|
22
|
+
- compilation of Pug to JSX/TSX-compatible output
|
|
23
|
+
- shadow document generation for editor tooling
|
|
24
|
+
- source range and diagnostic remapping back to original Pug locations
|
|
25
|
+
- compiler-facing source map generation for downstream transforms
|
|
26
|
+
|
|
27
|
+
## Main Exports
|
|
28
|
+
|
|
29
|
+
- `transformSourceFile(...)`
|
|
30
|
+
- `buildShadowDocument(...)`
|
|
31
|
+
- `createTransformSourceMap(...)`
|
|
32
|
+
- mapping helpers from `mapping`, `positionMapping`, and `diagnosticMapping`
|
|
33
|
+
|
|
34
|
+
## Common Options
|
|
35
|
+
|
|
36
|
+
Core transforms expose:
|
|
37
|
+
|
|
38
|
+
- `tagFunction`: tagged template function name, default `pug`
|
|
39
|
+
- `requirePugImport`: boolean, default `false`
|
|
40
|
+
- `removeTagImport`: boolean, default `true`
|
|
41
|
+
- `classShorthandProperty`: `auto | className | class | styleName`
|
|
42
|
+
- `classShorthandMerge`: `auto | concatenate | classnames`
|
|
43
|
+
- `startupjsCssxjs`: `never | auto | force`
|
|
44
|
+
- `componentPathFromUppercaseClassShorthand`: boolean, default `true`
|
|
45
|
+
|
|
46
|
+
When `removeTagImport` is enabled, used `pug` imports are removed from transformed/shadow output. If the removed specifier was the only runtime import from that module, the declaration is rewritten to a side-effect import.
|
|
47
|
+
|
|
48
|
+
## Intended Audience
|
|
49
|
+
|
|
50
|
+
Most users should use one of the higher-level packages instead of consuming this package directly.
|
|
51
|
+
|
|
52
|
+
Use this package directly if you are building:
|
|
53
|
+
|
|
54
|
+
- an editor integration
|
|
55
|
+
- a custom compiler adapter
|
|
56
|
+
- a lint/diagnostic pipeline that needs original Pug positions
|
|
57
|
+
|
|
58
|
+
## Notes
|
|
59
|
+
|
|
60
|
+
Published output is in `dist/`.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './language/mapping';
|
|
2
|
+
export * from './language/extractRegions';
|
|
3
|
+
export * from './language/pugToTsx';
|
|
4
|
+
export * from './language/shadowDocument';
|
|
5
|
+
export * from './language/positionMapping';
|
|
6
|
+
export * from './language/sourceTransform';
|
|
7
|
+
export * from './language/diagnosticMapping';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./language/mapping"), exports);
|
|
18
|
+
__exportStar(require("./language/extractRegions"), exports);
|
|
19
|
+
__exportStar(require("./language/pugToTsx"), exports);
|
|
20
|
+
__exportStar(require("./language/shadowDocument"), exports);
|
|
21
|
+
__exportStar(require("./language/positionMapping"), exports);
|
|
22
|
+
__exportStar(require("./language/sourceTransform"), exports);
|
|
23
|
+
__exportStar(require("./language/diagnosticMapping"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,4DAA0C;AAC1C,sDAAoC;AACpC,4DAA0C;AAC1C,6DAA2C;AAC3C,6DAA2C;AAC3C,+DAA6C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PugDocument } from './mapping';
|
|
2
|
+
export interface LineColumn {
|
|
3
|
+
line: number;
|
|
4
|
+
column: number;
|
|
5
|
+
}
|
|
6
|
+
export interface OffsetRange {
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
length: number;
|
|
10
|
+
}
|
|
11
|
+
export interface GeneratedDiagnosticLike {
|
|
12
|
+
start: number;
|
|
13
|
+
length: number;
|
|
14
|
+
}
|
|
15
|
+
export interface OriginalDiagnosticLocation extends OffsetRange {
|
|
16
|
+
startLine: number;
|
|
17
|
+
startColumn: number;
|
|
18
|
+
endLine: number;
|
|
19
|
+
endColumn: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function offsetToLineColumn(text: string, offset: number): LineColumn;
|
|
22
|
+
export declare function lineColumnToOffset(text: string, line: number, column: number): number;
|
|
23
|
+
export declare function mapGeneratedRangeToOriginal(doc: PugDocument, generatedStart: number, generatedLength: number): OffsetRange | null;
|
|
24
|
+
export declare function mapGeneratedDiagnosticToOriginal(doc: PugDocument, diagnostic: GeneratedDiagnosticLike): OriginalDiagnosticLocation | null;
|
|
25
|
+
//# sourceMappingURL=diagnosticMapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticMapping.d.ts","sourceRoot":"","sources":["../../src/language/diagnosticMapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAe3E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWrF;AAkBD,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,WAAW,EAChB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,WAAW,GAAG,IAAI,CAuBpB;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,uBAAuB,GAClC,0BAA0B,GAAG,IAAI,CAcnC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.offsetToLineColumn = offsetToLineColumn;
|
|
4
|
+
exports.lineColumnToOffset = lineColumnToOffset;
|
|
5
|
+
exports.mapGeneratedRangeToOriginal = mapGeneratedRangeToOriginal;
|
|
6
|
+
exports.mapGeneratedDiagnosticToOriginal = mapGeneratedDiagnosticToOriginal;
|
|
7
|
+
const positionMapping_1 = require("./positionMapping");
|
|
8
|
+
function clampOffset(offset, length) {
|
|
9
|
+
if (offset <= 0)
|
|
10
|
+
return 0;
|
|
11
|
+
if (offset >= length)
|
|
12
|
+
return length;
|
|
13
|
+
return offset;
|
|
14
|
+
}
|
|
15
|
+
function offsetToLineColumn(text, offset) {
|
|
16
|
+
const safeOffset = clampOffset(offset, text.length);
|
|
17
|
+
let line = 1;
|
|
18
|
+
let column = 1;
|
|
19
|
+
for (let i = 0; i < safeOffset; i += 1) {
|
|
20
|
+
if (text.charCodeAt(i) === 10) {
|
|
21
|
+
line += 1;
|
|
22
|
+
column = 1;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
column += 1;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return { line, column };
|
|
29
|
+
}
|
|
30
|
+
function lineColumnToOffset(text, line, column) {
|
|
31
|
+
if (line <= 1)
|
|
32
|
+
return Math.max(0, column - 1);
|
|
33
|
+
let currentLine = 1;
|
|
34
|
+
let offset = 0;
|
|
35
|
+
while (offset < text.length && currentLine < line) {
|
|
36
|
+
if (text.charCodeAt(offset) === 10)
|
|
37
|
+
currentLine += 1;
|
|
38
|
+
offset += 1;
|
|
39
|
+
}
|
|
40
|
+
return Math.min(text.length, offset + Math.max(0, column - 1));
|
|
41
|
+
}
|
|
42
|
+
function findMappedForward(doc, start, endExclusive) {
|
|
43
|
+
for (let i = start; i < endExclusive; i += 1) {
|
|
44
|
+
const mapped = (0, positionMapping_1.shadowToOriginal)(doc, i);
|
|
45
|
+
if (mapped != null)
|
|
46
|
+
return mapped;
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
function findMappedBackward(doc, startInclusive, endInclusive) {
|
|
51
|
+
for (let i = startInclusive; i >= endInclusive; i -= 1) {
|
|
52
|
+
const mapped = (0, positionMapping_1.shadowToOriginal)(doc, i);
|
|
53
|
+
if (mapped != null)
|
|
54
|
+
return mapped;
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
function mapGeneratedRangeToOriginal(doc, generatedStart, generatedLength) {
|
|
59
|
+
const safeStart = clampOffset(generatedStart, doc.shadowText.length);
|
|
60
|
+
const safeEnd = clampOffset(safeStart + Math.max(1, generatedLength), doc.shadowText.length);
|
|
61
|
+
const directStart = (0, positionMapping_1.shadowToOriginal)(doc, safeStart);
|
|
62
|
+
const directEnd = (0, positionMapping_1.shadowToOriginal)(doc, Math.max(safeStart, safeEnd - 1));
|
|
63
|
+
const mappedStart = directStart ?? findMappedForward(doc, safeStart, safeEnd);
|
|
64
|
+
const mappedEndInclusive = directEnd ?? findMappedBackward(doc, safeEnd - 1, safeStart);
|
|
65
|
+
if (mappedStart == null && mappedEndInclusive == null)
|
|
66
|
+
return null;
|
|
67
|
+
const start = mappedStart ?? mappedEndInclusive;
|
|
68
|
+
const end = (mappedEndInclusive ?? mappedStart) + 1;
|
|
69
|
+
return {
|
|
70
|
+
start: Math.min(start, end),
|
|
71
|
+
end: Math.max(start, end),
|
|
72
|
+
length: Math.max(1, Math.abs(end - start)),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function mapGeneratedDiagnosticToOriginal(doc, diagnostic) {
|
|
76
|
+
const range = mapGeneratedRangeToOriginal(doc, diagnostic.start, diagnostic.length);
|
|
77
|
+
if (!range)
|
|
78
|
+
return null;
|
|
79
|
+
const startLc = offsetToLineColumn(doc.originalText, range.start);
|
|
80
|
+
const endLc = offsetToLineColumn(doc.originalText, range.end);
|
|
81
|
+
return {
|
|
82
|
+
...range,
|
|
83
|
+
startLine: startLc.line,
|
|
84
|
+
startColumn: startLc.column,
|
|
85
|
+
endLine: endLc.line,
|
|
86
|
+
endColumn: endLc.column,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=diagnosticMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticMapping.js","sourceRoot":"","sources":["../../src/language/diagnosticMapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier } from '@babel/types';
|
|
2
|
+
import type { PugRegion, StyleTagLang, TagImportCleanup } from './mapping';
|
|
3
|
+
/** Walk the AST and collect TaggedTemplateExpression nodes where tag matches tagName */
|
|
4
|
+
export interface ExtractedImportData {
|
|
5
|
+
declaration: ImportDeclaration;
|
|
6
|
+
source: string;
|
|
7
|
+
sourceText: string;
|
|
8
|
+
cleanup: TagImportCleanup | null;
|
|
9
|
+
hasMatchedTag: boolean;
|
|
10
|
+
matchedSpecifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>;
|
|
11
|
+
helperImports: Set<StyleTagLang>;
|
|
12
|
+
}
|
|
13
|
+
export interface StyleScopeTarget {
|
|
14
|
+
kind: 'program' | 'block' | 'arrow-expression' | 'statement-body';
|
|
15
|
+
insertionOffset: number;
|
|
16
|
+
statementIndent: string;
|
|
17
|
+
closingIndent: string;
|
|
18
|
+
expressionEnd?: number;
|
|
19
|
+
statementEnd?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface ExtractPugAnalysisResult {
|
|
22
|
+
regions: PugRegion[];
|
|
23
|
+
importCleanups: TagImportCleanup[];
|
|
24
|
+
tagImportEntries: ExtractedImportData[];
|
|
25
|
+
usesTagFunction: boolean;
|
|
26
|
+
hasTagImport: boolean;
|
|
27
|
+
tagImportSource: string | null;
|
|
28
|
+
tagImportSourceText: string | null;
|
|
29
|
+
helperImportInsertionOffset: number | null;
|
|
30
|
+
existingStyleImports: Set<StyleTagLang>;
|
|
31
|
+
styleScopeTargets: StyleScopeTarget[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Extract all pug tagged template literal regions from a source file.
|
|
35
|
+
* Uses @babel/parser for accurate AST-based extraction, with regex fallback.
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractPugRegions(text: string, filename: string, tagName?: string): PugRegion[];
|
|
38
|
+
export declare function extractPugAnalysis(text: string, filename: string, tagName?: string): ExtractPugAnalysisResult;
|
|
39
|
+
//# sourceMappingURL=extractRegions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractRegions.d.ts","sourceRoot":"","sources":["../../src/language/extractRegions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,EAKhB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAoC3E,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,KAAK,CAAC,eAAe,GAAG,sBAAsB,GAAG,wBAAwB,CAAC,CAAC;IAC9F,aAAa,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,oBAAoB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC;AA0RD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,SAAS,EAAE,CAEtG;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAc,GACtB,wBAAwB,CA2I1B"}
|