weevar 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.
- package/dist/chunk-IXK7HELP.mjs +28 -0
- package/dist/chunk-IXK7HELP.mjs.map +1 -0
- package/dist/chunk-LFEEXHSC.mjs +55 -0
- package/dist/chunk-LFEEXHSC.mjs.map +1 -0
- package/dist/react.dev.d.mts +6 -0
- package/dist/react.dev.d.ts +6 -0
- package/dist/react.dev.js +5044 -0
- package/dist/react.dev.js.map +1 -0
- package/dist/react.dev.mjs +5024 -0
- package/dist/react.dev.mjs.map +1 -0
- package/dist/react.prod.d.mts +6 -0
- package/dist/react.prod.d.ts +6 -0
- package/dist/react.prod.js +10 -0
- package/dist/react.prod.js.map +1 -0
- package/dist/react.prod.mjs +8 -0
- package/dist/react.prod.mjs.map +1 -0
- package/dist/swc.d.mts +9 -0
- package/dist/swc.d.ts +9 -0
- package/dist/swc.js +111 -0
- package/dist/swc.js.map +1 -0
- package/dist/swc.mjs +93 -0
- package/dist/swc.mjs.map +1 -0
- package/dist/types-DXyR9jUf.d.mts +31 -0
- package/dist/types-DXyR9jUf.d.ts +31 -0
- package/dist/vite.d.mts +12 -0
- package/dist/vite.d.ts +12 -0
- package/dist/vite.js +259 -0
- package/dist/vite.js.map +1 -0
- package/dist/vite.mjs +172 -0
- package/dist/vite.mjs.map +1 -0
- package/dist/webpack-loader.d.mts +27 -0
- package/dist/webpack-loader.d.ts +27 -0
- package/dist/webpack-loader.js +110 -0
- package/dist/webpack-loader.js.map +1 -0
- package/dist/webpack-loader.mjs +23 -0
- package/dist/webpack-loader.mjs.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// src/engine/parseDataWvSource.ts
|
|
2
|
+
function decodeBase64Json(raw) {
|
|
3
|
+
try {
|
|
4
|
+
const bin = atob(raw.replace(/-/g, "+").replace(/_/g, "/"));
|
|
5
|
+
const j = JSON.parse(bin);
|
|
6
|
+
if (!j?.file || !Number.isFinite(j.line)) return void 0;
|
|
7
|
+
return { file: String(j.file), line: Number(j.line), col: Number(j.col ?? 0) };
|
|
8
|
+
} catch {
|
|
9
|
+
return void 0;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function parseDataWvSource(el) {
|
|
13
|
+
const raw = el.getAttribute("data-wv-source");
|
|
14
|
+
if (!raw) return void 0;
|
|
15
|
+
return decodeBase64Json(raw);
|
|
16
|
+
}
|
|
17
|
+
function encodeDataWvSource(loc) {
|
|
18
|
+
const json = JSON.stringify({
|
|
19
|
+
file: loc.file,
|
|
20
|
+
line: loc.line,
|
|
21
|
+
col: loc.col
|
|
22
|
+
});
|
|
23
|
+
return btoa(unescape(encodeURIComponent(json)));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { encodeDataWvSource, parseDataWvSource };
|
|
27
|
+
//# sourceMappingURL=chunk-IXK7HELP.mjs.map
|
|
28
|
+
//# sourceMappingURL=chunk-IXK7HELP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/parseDataWvSource.ts"],"names":[],"mappings":";AAEA,SAAS,iBAAiB,GAAA,EAAyC;AACjE,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA;AAC1D,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AACxB,IAAA,IAAI,CAAC,GAAG,IAAA,IAAQ,CAAC,OAAO,QAAA,CAAS,CAAA,CAAE,IAAI,CAAA,EAAG,OAAO,KAAA,CAAA;AACjD,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,CAAO,CAAA,CAAE,IAAI,GAAG,IAAA,EAAM,MAAA,CAAO,CAAA,CAAE,IAAI,GAAG,GAAA,EAAK,MAAA,CAAO,CAAA,CAAE,GAAA,IAAO,CAAC,CAAA,EAAE;AAAA,EAC/E,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAGO,SAAS,kBAAkB,EAAA,EAAyC;AACzE,EAAA,MAAM,GAAA,GAAM,EAAA,CAAG,YAAA,CAAa,gBAAgB,CAAA;AAC5C,EAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AACjB,EAAA,OAAO,iBAAiB,GAAG,CAAA;AAC7B;AAEO,SAAS,mBAAmB,GAAA,EAA6B;AAC9D,EAAA,MAAM,IAAA,GAAO,KAAK,SAAA,CAAU;AAAA,IAC1B,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,KAAK,GAAA,CAAI;AAAA,GACV,CAAA;AACD,EAAA,OAAO,IAAA,CAAK,QAAA,CAAS,kBAAA,CAAmB,IAAI,CAAC,CAAC,CAAA;AAChD","file":"chunk-IXK7HELP.mjs","sourcesContent":["import type { SourceLocation } from \"./layoutTypes\";\n\nfunction decodeBase64Json(raw: string): SourceLocation | undefined {\n try {\n const bin = atob(raw.replace(/-/g, \"+\").replace(/_/g, \"/\"));\n const j = JSON.parse(bin) as { file?: string; line?: number; col?: number };\n if (!j?.file || !Number.isFinite(j.line)) return undefined;\n return { file: String(j.file), line: Number(j.line), col: Number(j.col ?? 0) };\n } catch {\n return undefined;\n }\n}\n\n/** `data-wv-source` = base64(JSON.stringify({file,line,col})) from optional tooling. */\nexport function parseDataWvSource(el: Element): SourceLocation | undefined {\n const raw = el.getAttribute(\"data-wv-source\");\n if (!raw) return undefined;\n return decodeBase64Json(raw);\n}\n\nexport function encodeDataWvSource(loc: SourceLocation): string {\n const json = JSON.stringify({\n file: loc.file,\n line: loc.line,\n col: loc.col,\n });\n return btoa(unescape(encodeURIComponent(json)));\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { encodeDataWvSource } from './chunk-IXK7HELP.mjs';
|
|
2
|
+
import * as babel from '@babel/core';
|
|
3
|
+
import * as t from '@babel/types';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
|
|
6
|
+
function weevarJsxSourcePlugin(absFile, cwd) {
|
|
7
|
+
const rel = path.relative(cwd, absFile).split(path.sep).join("/") || absFile;
|
|
8
|
+
return {
|
|
9
|
+
name: "weevar-jsx-source-attr",
|
|
10
|
+
visitor: {
|
|
11
|
+
JSXOpeningElement(p) {
|
|
12
|
+
const loc = p.node.loc;
|
|
13
|
+
if (!loc) return;
|
|
14
|
+
const attrs = p.node.attributes;
|
|
15
|
+
if (attrs.some(
|
|
16
|
+
(a) => a.type === "JSXAttribute" && "name" in a && a.name.type === "JSXIdentifier" && a.name.name === "data-wv-source"
|
|
17
|
+
))
|
|
18
|
+
return;
|
|
19
|
+
const payload = encodeDataWvSource({
|
|
20
|
+
file: rel,
|
|
21
|
+
line: loc.start.line,
|
|
22
|
+
col: loc.start.column
|
|
23
|
+
});
|
|
24
|
+
attrs.push(
|
|
25
|
+
t.jsxAttribute(t.jsxIdentifier("data-wv-source"), t.stringLiteral(payload))
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function transformJsxWithWeevarSource(code, absFile, cwd) {
|
|
32
|
+
try {
|
|
33
|
+
const result = babel.transformSync(code, {
|
|
34
|
+
filename: absFile,
|
|
35
|
+
cwd,
|
|
36
|
+
ast: false,
|
|
37
|
+
babelrc: false,
|
|
38
|
+
configFile: false,
|
|
39
|
+
sourceMaps: true,
|
|
40
|
+
presets: [
|
|
41
|
+
["@babel/preset-typescript", { isTSX: true, allExtensions: true }],
|
|
42
|
+
["@babel/preset-react", { runtime: "automatic" }]
|
|
43
|
+
],
|
|
44
|
+
plugins: [weevarJsxSourcePlugin(absFile, cwd)]
|
|
45
|
+
});
|
|
46
|
+
if (!result?.code) return null;
|
|
47
|
+
return { code: result.code, map: result.map ?? null };
|
|
48
|
+
} catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { transformJsxWithWeevarSource };
|
|
54
|
+
//# sourceMappingURL=chunk-LFEEXHSC.mjs.map
|
|
55
|
+
//# sourceMappingURL=chunk-LFEEXHSC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vite/babelAddSource.ts"],"names":[],"mappings":";;;;;AAMA,SAAS,qBAAA,CAAsB,SAAiB,GAAA,EAAwB;AACtE,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,QAAA,CAAS,GAAA,EAAK,OAAO,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IAAK,OAAA;AACrE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP,kBAAkB,CAAA,EAAG;AACnB,QAAA,MAAM,GAAA,GAAM,EAAE,IAAA,CAAK,GAAA;AACnB,QAAA,IAAI,CAAC,GAAA,EAAK;AACV,QAAA,MAAM,KAAA,GAAQ,EAAE,IAAA,CAAK,UAAA;AACrB,QAAA,IACE,KAAA,CAAM,IAAA;AAAA,UACJ,CAAC,CAAA,KACC,CAAA,CAAE,IAAA,KAAS,cAAA,IACX,MAAA,IAAU,CAAA,IACV,CAAA,CAAE,IAAA,CAAK,IAAA,KAAS,eAAA,IAChB,CAAA,CAAE,KAAK,IAAA,KAAS;AAAA,SACpB;AAEA,UAAA;AACF,QAAA,MAAM,UAAU,kBAAA,CAAmB;AAAA,UACjC,IAAA,EAAM,GAAA;AAAA,UACN,IAAA,EAAM,IAAI,KAAA,CAAM,IAAA;AAAA,UAChB,GAAA,EAAK,IAAI,KAAA,CAAM;AAAA,SAChB,CAAA;AACD,QAAA,KAAA,CAAM,IAAA;AAAA,UACF,eAAe,CAAA,CAAA,aAAA,CAAc,gBAAgB,CAAA,EAAK,CAAA,CAAA,aAAA,CAAc,OAAO,CAAC;AAAA,SAC5E;AAAA,MACF;AAAA;AACF,GACF;AACF;AAEO,SAAS,4BAAA,CACd,IAAA,EACA,OAAA,EACA,GAAA,EAC4D;AAC5D,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAe,oBAAc,IAAA,EAAM;AAAA,MACvC,QAAA,EAAU,OAAA;AAAA,MACV,GAAA;AAAA,MACA,GAAA,EAAK,KAAA;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,UAAA,EAAY,IAAA;AAAA,MACZ,OAAA,EAAS;AAAA,QACP,CAAC,0BAAA,EAA4B,EAAE,OAAO,IAAA,EAAM,aAAA,EAAe,MAAM,CAAA;AAAA,QACjE,CAAC,qBAAA,EAAuB,EAAE,OAAA,EAAS,aAAa;AAAA,OAClD;AAAA,MACA,OAAA,EAAS,CAAC,qBAAA,CAAsB,OAAA,EAAS,GAAG,CAAC;AAAA,KAC9C,CAAA;AACD,IAAA,IAAI,CAAC,MAAA,EAAQ,IAAA,EAAM,OAAO,IAAA;AAC1B,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,CAAO,MAAM,GAAA,EAAK,MAAA,CAAO,OAAO,IAAA,EAAK;AAAA,EACtD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF","file":"chunk-LFEEXHSC.mjs","sourcesContent":["import * as babel from \"@babel/core\";\nimport * as t from \"@babel/types\";\nimport path from \"node:path\";\nimport type { PluginObj } from \"@babel/core\";\nimport { encodeDataWvSource } from \"../engine/parseDataWvSource\";\n\nfunction weevarJsxSourcePlugin(absFile: string, cwd: string): PluginObj {\n const rel = path.relative(cwd, absFile).split(path.sep).join(\"/\") || absFile;\n return {\n name: \"weevar-jsx-source-attr\",\n visitor: {\n JSXOpeningElement(p) {\n const loc = p.node.loc;\n if (!loc) return;\n const attrs = p.node.attributes;\n if (\n attrs.some(\n (a) =>\n a.type === \"JSXAttribute\" &&\n \"name\" in a &&\n a.name.type === \"JSXIdentifier\" &&\n a.name.name === \"data-wv-source\",\n )\n )\n return;\n const payload = encodeDataWvSource({\n file: rel,\n line: loc.start.line,\n col: loc.start.column,\n });\n attrs.push(\n t.jsxAttribute(t.jsxIdentifier(\"data-wv-source\"), t.stringLiteral(payload)),\n );\n },\n },\n };\n}\n\nexport function transformJsxWithWeevarSource(\n code: string,\n absFile: string,\n cwd: string,\n): { code: string; map: babel.BabelFileResult[\"map\"] } | null {\n try {\n const result = babel.transformSync(code, {\n filename: absFile,\n cwd,\n ast: false,\n babelrc: false,\n configFile: false,\n sourceMaps: true,\n presets: [\n [\"@babel/preset-typescript\", { isTSX: true, allExtensions: true }],\n [\"@babel/preset-react\", { runtime: \"automatic\" }],\n ],\n plugins: [weevarJsxSourcePlugin(absFile, cwd)],\n });\n if (!result?.code) return null;\n return { code: result.code, map: result.map ?? null };\n } catch {\n return null;\n }\n}\n"]}
|