@backtickjs/prettier-plugin 0.1.9 → 0.1.11
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 +1 -1
- package/dist/index.js +26 -3
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +32 -3
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ A splice of a bare identifier in code prints in its short form (`${name}` become
|
|
|
56
56
|
|
|
57
57
|
- [`@backtickjs/core`](https://github.com/backtickjs/backtick/tree/main/packages/core): the `cs` tag
|
|
58
58
|
- [Backtick for VS Code](https://marketplace.visualstudio.com/items?itemName=backtickjs.backtick-vscode): highlighting and type-checking inside scripts
|
|
59
|
-
- [How it works](https://backtickjs.com/docs/how-it-works)
|
|
59
|
+
- [How it works](https://backtickjs.com/docs/how-it-works/)
|
|
60
60
|
|
|
61
61
|
## License
|
|
62
62
|
|
package/dist/index.js
CHANGED
|
@@ -21,12 +21,35 @@ const embed = (path, options) => {
|
|
|
21
21
|
};
|
|
22
22
|
async function printScript(script, fileName, expressions, textToDoc, print) {
|
|
23
23
|
const parser = parserForFile(fileName);
|
|
24
|
-
const docWithPlaceholders = await textToDoc(script.textWithPlaceholders, {
|
|
25
|
-
parser,
|
|
26
|
-
});
|
|
24
|
+
const docWithPlaceholders = await textToDoc(classAsDeclaration(script) ?? script.textWithPlaceholders, { parser });
|
|
27
25
|
const body = reinjectSplices(stripTrailingSemicolon(docWithPlaceholders), script, expressions, print);
|
|
28
26
|
return ["cs", "`", isJsxRoot(script) ? wrapInParens(body) : body, "`"];
|
|
29
27
|
}
|
|
28
|
+
// A script that is one named class in parentheses, `(class A {})`, as the
|
|
29
|
+
// declaration it's the same class as, `class A {}`. Only parentheses,
|
|
30
|
+
// whitespace and a `;` around it: anything else, a comment, is kept as
|
|
31
|
+
// written. A class without a name has no declaration form.
|
|
32
|
+
function classAsDeclaration(script) {
|
|
33
|
+
const [statement, ...rest] = script.fileWithPlaceholders.statements;
|
|
34
|
+
if (statement === undefined ||
|
|
35
|
+
rest.length > 0 ||
|
|
36
|
+
!ts.isExpressionStatement(statement)) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
let root = statement.expression;
|
|
40
|
+
while (ts.isParenthesizedExpression(root)) {
|
|
41
|
+
root = root.expression;
|
|
42
|
+
}
|
|
43
|
+
if (!ts.isClassExpression(root) || root.name === undefined) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const text = script.textWithPlaceholders;
|
|
47
|
+
const start = root.getStart(script.fileWithPlaceholders);
|
|
48
|
+
const around = text.slice(0, start) + text.slice(root.getEnd());
|
|
49
|
+
return /^[\s();]*$/.test(around)
|
|
50
|
+
? text.slice(start, root.getEnd())
|
|
51
|
+
: undefined;
|
|
52
|
+
}
|
|
30
53
|
// A script that is one JSX element, parenthesized or not.
|
|
31
54
|
function isJsxRoot(script) {
|
|
32
55
|
const [statement, ...rest] = script.fileWithPlaceholders.statements;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAKL,GAAG,IAAI,WAAW,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,MAAM,GAAY,eAAe,CAAC,MAAM,CAAC;AAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;AACrC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC;AAKlE,MAAM,KAAK,GAAkC,CAC3C,IAAmB,EACnB,OAAgB,EAChB,EAAE;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,IAAI,EAAE,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAChC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,qDAAqD;IACrD,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;AAC3D,CAAC,CAAC;AAEF,KAAK,UAAU,WAAW,CACxB,MAAoB,EACpB,QAAgB,EAChB,WAAkC,EAClC,SAAoB,EACpB,KAAY;IAEZ,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,mBAAmB,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backtickjs/prettier-plugin",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"description": "A Prettier plugin that formats the code inside Backtick client scripts",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"backtick",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"typescript": "^6.0.3"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@backtickjs/compiler": "^0.1.
|
|
42
|
+
"@backtickjs/compiler": "^0.1.11"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"prettier": "^3.0.0",
|
package/src/index.ts
CHANGED
|
@@ -49,9 +49,10 @@ async function printScript(
|
|
|
49
49
|
print: Print,
|
|
50
50
|
): Promise<Doc> {
|
|
51
51
|
const parser = parserForFile(fileName);
|
|
52
|
-
const docWithPlaceholders = await textToDoc(
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
const docWithPlaceholders = await textToDoc(
|
|
53
|
+
classAsDeclaration(script) ?? script.textWithPlaceholders,
|
|
54
|
+
{ parser },
|
|
55
|
+
);
|
|
55
56
|
const body = reinjectSplices(
|
|
56
57
|
stripTrailingSemicolon(docWithPlaceholders),
|
|
57
58
|
script,
|
|
@@ -61,6 +62,34 @@ async function printScript(
|
|
|
61
62
|
return ["cs", "`", isJsxRoot(script) ? wrapInParens(body) : body, "`"];
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
// A script that is one named class in parentheses, `(class A {})`, as the
|
|
66
|
+
// declaration it's the same class as, `class A {}`. Only parentheses,
|
|
67
|
+
// whitespace and a `;` around it: anything else, a comment, is kept as
|
|
68
|
+
// written. A class without a name has no declaration form.
|
|
69
|
+
function classAsDeclaration(script: ClientScript): string | undefined {
|
|
70
|
+
const [statement, ...rest] = script.fileWithPlaceholders.statements;
|
|
71
|
+
if (
|
|
72
|
+
statement === undefined ||
|
|
73
|
+
rest.length > 0 ||
|
|
74
|
+
!ts.isExpressionStatement(statement)
|
|
75
|
+
) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
let root = statement.expression;
|
|
79
|
+
while (ts.isParenthesizedExpression(root)) {
|
|
80
|
+
root = root.expression;
|
|
81
|
+
}
|
|
82
|
+
if (!ts.isClassExpression(root) || root.name === undefined) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
const text = script.textWithPlaceholders;
|
|
86
|
+
const start = root.getStart(script.fileWithPlaceholders);
|
|
87
|
+
const around = text.slice(0, start) + text.slice(root.getEnd());
|
|
88
|
+
return /^[\s();]*$/.test(around)
|
|
89
|
+
? text.slice(start, root.getEnd())
|
|
90
|
+
: undefined;
|
|
91
|
+
}
|
|
92
|
+
|
|
64
93
|
// A script that is one JSX element, parenthesized or not.
|
|
65
94
|
function isJsxRoot(script: ClientScript): boolean {
|
|
66
95
|
const [statement, ...rest] = script.fileWithPlaceholders.statements;
|