@backtickjs/compiler 0.2.1 → 0.2.3
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/dist/clientImports.d.ts +8 -2
- package/dist/clientImports.js +12 -8
- package/dist/clientImports.js.map +1 -1
- package/dist/transform.js +4 -4
- package/dist/transform.js.map +1 -1
- package/package.json +2 -2
- package/src/clientImports.ts +15 -11
- package/src/transform.ts +4 -4
package/dist/clientImports.d.ts
CHANGED
|
@@ -5,7 +5,13 @@ export declare function isClientImportDeclaration(ts: typeof import("typescript"
|
|
|
5
5
|
};
|
|
6
6
|
export declare function virtualClientImport(ts: typeof import("typescript"), sourceFile: ts.SourceFile, declaration: ts.ImportDeclaration): Segment[];
|
|
7
7
|
export declare function packageOf(specifier: string): string;
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function installedModule(ts: typeof import("typescript"), specifier: string, fileName: string): {
|
|
9
|
+
from: string;
|
|
10
|
+
version: string;
|
|
11
|
+
} | undefined;
|
|
9
12
|
export declare function runtimeClientImport(ts: typeof import("typescript"), declaration: ts.ImportDeclaration & {
|
|
10
13
|
moduleSpecifier: ts.StringLiteral;
|
|
11
|
-
}, version
|
|
14
|
+
}, { from, version }: {
|
|
15
|
+
from: string;
|
|
16
|
+
version: string;
|
|
17
|
+
}): ts.Statement[];
|
package/dist/clientImports.js
CHANGED
|
@@ -101,19 +101,23 @@ export function packageOf(specifier) {
|
|
|
101
101
|
const segments = specifier.split("/");
|
|
102
102
|
return segments.slice(0, specifier.startsWith("@") ? 2 : 1).join("/");
|
|
103
103
|
}
|
|
104
|
-
// The
|
|
105
|
-
// where the importing file finds it, up its directories
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
// The module a client import is of, and the version of its package it's typed
|
|
105
|
+
// against: as installed where the importing file finds it, up its directories
|
|
106
|
+
// as `tsc` finds a config. Named by its package's own name, so an alias,
|
|
107
|
+
// `"acme-ui-2": "npm:acme-ui@2"`, imports from `acme-ui`, as clients name it.
|
|
108
|
+
export function installedModule(ts, specifier, fileName) {
|
|
109
|
+
const installed = packageOf(specifier);
|
|
110
|
+
const manifest = ts.findConfigFile(ts.sys.resolvePath(fileName), ts.sys.fileExists, `node_modules/${installed}/package.json`);
|
|
108
111
|
if (manifest === undefined)
|
|
109
112
|
return undefined;
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
// A linked folder may not name itself: the folder's name is the module's.
|
|
114
|
+
const { name = installed, version } = JSON.parse(ts.sys.readFile(manifest));
|
|
115
|
+
return { from: name + specifier.slice(installed.length), version };
|
|
112
116
|
}
|
|
113
117
|
// For the runtime, a constant per value it names, in the declaration's place:
|
|
114
118
|
// `const View = { "@backtickjs": "ClientImport", name: "View", from:
|
|
115
119
|
// "react-native", version: "0.86.3" }`, core's `ClientImport`.
|
|
116
|
-
export function runtimeClientImport(ts, declaration, version) {
|
|
120
|
+
export function runtimeClientImport(ts, declaration, { from, version }) {
|
|
117
121
|
const f = ts.factory;
|
|
118
122
|
const property = (key, value) => f.createPropertyAssignment(key, f.createStringLiteral(value));
|
|
119
123
|
return bindingsOf(ts, declaration)
|
|
@@ -124,7 +128,7 @@ export function runtimeClientImport(ts, declaration, version) {
|
|
|
124
128
|
f.createVariableDeclaration(local.text, undefined, undefined, f.createObjectLiteralExpression([
|
|
125
129
|
property(f.createStringLiteral("@backtickjs"), "ClientImport"),
|
|
126
130
|
property("name", name),
|
|
127
|
-
property("from",
|
|
131
|
+
property("from", from),
|
|
128
132
|
property("version", version),
|
|
129
133
|
])),
|
|
130
134
|
], ts.NodeFlags.Const)), declaration));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientImports.js","sourceRoot":"","sources":["../src/clientImports.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"clientImports.js","sourceRoot":"","sources":["../src/clientImports.ts"],"names":[],"mappings":"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"}
|
package/dist/transform.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isClientImportDeclaration, packageOf, runtimeClientImport,
|
|
1
|
+
import { isClientImportDeclaration, packageOf, runtimeClientImport, installedModule, } from "./clientImports.js";
|
|
2
2
|
import { compileScript } from "./compileScript.js";
|
|
3
3
|
import { parseSourceFile } from "./parseFile.js";
|
|
4
4
|
import { rewriteFile } from "./rewriteFile.js";
|
|
@@ -43,8 +43,8 @@ export function transform(ts, addDiagnostic, { sourceName = (fileName) => fileNa
|
|
|
43
43
|
// installed.
|
|
44
44
|
if (isClientImportDeclaration(ts, node)) {
|
|
45
45
|
const { moduleSpecifier } = node;
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
46
|
+
const installed = installedModule(ts, moduleSpecifier.text, sourceFile.fileName);
|
|
47
|
+
if (installed === undefined) {
|
|
48
48
|
addDiagnostic?.({
|
|
49
49
|
file: sourceFile,
|
|
50
50
|
start: moduleSpecifier.getStart(sourceFile),
|
|
@@ -56,7 +56,7 @@ export function transform(ts, addDiagnostic, { sourceName = (fileName) => fileNa
|
|
|
56
56
|
});
|
|
57
57
|
return undefined;
|
|
58
58
|
}
|
|
59
|
-
return runtimeClientImport(ts, node,
|
|
59
|
+
return runtimeClientImport(ts, node, installed);
|
|
60
60
|
}
|
|
61
61
|
if (ts.isTaggedTemplateExpression(node) &&
|
|
62
62
|
ts.isIdentifier(node.tag) &&
|
package/dist/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,SAAS,EACT,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backtickjs/compiler",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Internal: the compiler for Backtick client scripts, used by the build plugins, backtick-tsc and the editor tooling",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"backtick",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@jridgewell/trace-mapping": "^0.3.31"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@backtickjs/core": "^0.2.
|
|
49
|
+
"@backtickjs/core": "^0.2.3",
|
|
50
50
|
"prettier": "^3.6.2",
|
|
51
51
|
"typescript": "^6.0.3"
|
|
52
52
|
},
|
package/src/clientImports.ts
CHANGED
|
@@ -135,23 +135,27 @@ export function packageOf(specifier: string): string {
|
|
|
135
135
|
return segments.slice(0, specifier.startsWith("@") ? 2 : 1).join("/");
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
// The
|
|
139
|
-
// where the importing file finds it, up its directories
|
|
140
|
-
|
|
138
|
+
// The module a client import is of, and the version of its package it's typed
|
|
139
|
+
// against: as installed where the importing file finds it, up its directories
|
|
140
|
+
// as `tsc` finds a config. Named by its package's own name, so an alias,
|
|
141
|
+
// `"acme-ui-2": "npm:acme-ui@2"`, imports from `acme-ui`, as clients name it.
|
|
142
|
+
export function installedModule(
|
|
141
143
|
ts: typeof import("typescript"),
|
|
142
144
|
specifier: string,
|
|
143
145
|
fileName: string,
|
|
144
|
-
): string | undefined {
|
|
146
|
+
): { from: string; version: string } | undefined {
|
|
147
|
+
const installed = packageOf(specifier);
|
|
145
148
|
const manifest = ts.findConfigFile(
|
|
146
149
|
ts.sys.resolvePath(fileName),
|
|
147
150
|
ts.sys.fileExists,
|
|
148
|
-
`node_modules/${
|
|
151
|
+
`node_modules/${installed}/package.json`,
|
|
149
152
|
);
|
|
150
153
|
if (manifest === undefined) return undefined;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
154
|
+
// A linked folder may not name itself: the folder's name is the module's.
|
|
155
|
+
const { name = installed, version } = JSON.parse(
|
|
156
|
+
ts.sys.readFile(manifest)!,
|
|
157
|
+
) as { name?: string; version: string };
|
|
158
|
+
return { from: name + specifier.slice(installed.length), version };
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
// For the runtime, a constant per value it names, in the declaration's place:
|
|
@@ -160,7 +164,7 @@ export function installedVersion(
|
|
|
160
164
|
export function runtimeClientImport(
|
|
161
165
|
ts: typeof import("typescript"),
|
|
162
166
|
declaration: ts.ImportDeclaration & { moduleSpecifier: ts.StringLiteral },
|
|
163
|
-
version: string,
|
|
167
|
+
{ from, version }: { from: string; version: string },
|
|
164
168
|
): ts.Statement[] {
|
|
165
169
|
const f = ts.factory;
|
|
166
170
|
const property = (key: string | ts.PropertyName, value: string) =>
|
|
@@ -184,7 +188,7 @@ export function runtimeClientImport(
|
|
|
184
188
|
"ClientImport",
|
|
185
189
|
),
|
|
186
190
|
property("name", name),
|
|
187
|
-
property("from",
|
|
191
|
+
property("from", from),
|
|
188
192
|
property("version", version),
|
|
189
193
|
]),
|
|
190
194
|
),
|
package/src/transform.ts
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
isClientImportDeclaration,
|
|
4
4
|
packageOf,
|
|
5
5
|
runtimeClientImport,
|
|
6
|
-
|
|
6
|
+
installedModule,
|
|
7
7
|
} from "./clientImports.js";
|
|
8
8
|
import { compileScript, type Plugin } from "./compileScript.js";
|
|
9
9
|
import { parseSourceFile } from "./parseFile.js";
|
|
@@ -80,12 +80,12 @@ export function transform(
|
|
|
80
80
|
// installed.
|
|
81
81
|
if (isClientImportDeclaration(ts, node)) {
|
|
82
82
|
const { moduleSpecifier } = node;
|
|
83
|
-
const
|
|
83
|
+
const installed = installedModule(
|
|
84
84
|
ts,
|
|
85
85
|
moduleSpecifier.text,
|
|
86
86
|
sourceFile.fileName,
|
|
87
87
|
);
|
|
88
|
-
if (
|
|
88
|
+
if (installed === undefined) {
|
|
89
89
|
addDiagnostic?.({
|
|
90
90
|
file: sourceFile,
|
|
91
91
|
start: moduleSpecifier.getStart(sourceFile),
|
|
@@ -97,7 +97,7 @@ export function transform(
|
|
|
97
97
|
});
|
|
98
98
|
return undefined;
|
|
99
99
|
}
|
|
100
|
-
return runtimeClientImport(ts, node,
|
|
100
|
+
return runtimeClientImport(ts, node, installed);
|
|
101
101
|
}
|
|
102
102
|
if (
|
|
103
103
|
ts.isTaggedTemplateExpression(node) &&
|