Skip to content

Commit

Permalink
tests
Browse files Browse the repository at this point in the history
  • Loading branch information
liuxingbaoyu committed Sep 22, 2022
1 parent 0af98b6 commit 3b24750
Show file tree
Hide file tree
Showing 33 changed files with 541 additions and 99 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Expand Up @@ -3,6 +3,6 @@
arr.map(function (x) {
return x * x;
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnIiLCJtYXAiLCJ4Il0sInNvdXJjZXMiOlsic3RkaW4iXSwic291cmNlc0NvbnRlbnQiOlsiYXJyLm1hcCh4ID0+IHggKiB4KTsiXSwibWFwcGluZ3MiOiI7O0FBQUFBLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFVBQUFDLENBQUM7RUFBQSxPQUFJQSxDQUFDLEdBQUdBLENBQVI7QUFBQSxDQUFUIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnIiLCJtYXAiLCJ4Il0sInNvdXJjZXMiOlsic3RkaW4iXSwic291cmNlc0NvbnRlbnQiOlsiYXJyLm1hcCh4ID0+IHggKiB4KTsiXSwibWFwcGluZ3MiOiI7O0FBQUFBLEdBQUcsQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLENBQUM7RUFBQSxPQUFJQSxDQUFDLEdBQUdBLENBQUM7QUFBQSxFQUFDIn0=

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rkb3V0IiwibmFtZXMiOltdLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJtYXBwaW5ncyI6IiJ9
Expand Up @@ -11,5 +11,5 @@
"sourcesContent": [
"arr.map(x => x * x);"
],
"mappings": "AAAAA,GAAG,CAACC,GAAJ,CAAQ,UAAAC,CAAC;EAAA,OAAIA,CAAC,GAAGA,CAAR;AAAA,CAAT"
"mappings": "AAAAA,GAAG,CAACC,GAAG,CAAC,UAAAC,CAAC;EAAA,OAAIA,CAAC,GAAGA,CAAC;AAAA,EAAC"
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -1,6 +1,6 @@
{
"version": 3,
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAsFA;EACAA,kBADA;;EAEAC;IACA;MACAC;IADA;EAGA;;AANA,C",
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAsFA;EACAA;;EACAC;IACA;MACAC;IACA;EACA;;AACA",
"names": [
"name",
"data",
Expand Down
Expand Up @@ -55,7 +55,7 @@
"column": 4
},
"original": {
"line": 90,
"line": 92,
"column": 0
}
},
Expand Down
@@ -1,7 +1,11 @@
{
"mappings": "AAAA,UAAU,Y;SAAM;AAAC,CAAjB",
"version": 3,
"mappings": "AAAA,UAAU,Y;SAAM,C;CAAC",
"names": [],
"sources": ["original.js"],
"sourcesContent": ["var foo = () => 4;"],
"version": 3
}
"sources": [
"original.js"
],
"sourcesContent": [
"var foo = () => 4;"
]
}
@@ -1,15 +1,13 @@
{
"version": 3,
"mappings": "AAAC,KCAD;ACAA,K",
"mappings": "AAAC,KAAG;ACAJ,KAAG",
"names": [],
"sources": [
"bar.js",
"input.tsx",
"baz.js"
],
"sourcesContent": [
"<bar />",
"foo(1);\nfunction foo(bar: number): never {\n throw new Error('Intentional.');\n}",
"baz();"
]
}
@@ -1,6 +1,6 @@
{
"version": 3,
"mappings": "AAAC,KCAD;;AACA,SAASA,GAAT,CAAaC,GAAb,EAAwB;EACpB,MAAM,IAAIC,KAAJ,CAAU,cAAV,CAAN;AACH",
"mappings": "AAAC,KAAG;;ACCJ,SAASA,GAAG,CAACC,GAAW;EACpB,MAAM,IAAIC,KAAK,CAAC,cAAc,CAAC;AACnC",
"names": [
"foo",
"bar",
Expand Down
@@ -1,7 +1,11 @@
{
"mappings": "AAAA,UAAU,Y;SAAM;AAAC,CAAjB",
"version": 3,
"mappings": "AAAA,UAAU,Y;SAAM,C;CAAC",
"names": [],
"sources": ["source-maps/input-source-map-same-location/input.js"],
"sourcesContent": ["var foo = () => 4;"],
"version": 3
}
"sources": [
"source-maps/input-source-map-same-location/input.js"
],
"sourcesContent": [
"var foo = () => 4;"
]
}
@@ -1,13 +1,11 @@
{
"version": 3,
"mappings": "AAAC,KCAD",
"mappings": "AAAC,KAAG",
"names": [],
"sources": [
"test.js",
"input.tsx"
"test.js"
],
"sourcesContent": [
"<bar />",
"foo(1);\nfunction foo(bar: number): never {\n throw new Error('Intentional.');\n}"
"<bar />"
]
}
@@ -1,7 +1,11 @@
{
"mappings": "AAAA,UAAU,Y;SAAM;AAAC,CAAjB",
"version": 3,
"mappings": "AAAA,UAAU,Y;SAAM,C;CAAC",
"names": [],
"sources": ["original.js"],
"sourcesContent": ["var foo = () => 4;"],
"version": 3
}
"sources": [
"original.js"
],
"sourcesContent": [
"var foo = () => 4;"
]
}
@@ -1,5 +1,5 @@
{
"mappings": "AAAA;AAEAA,OAAO,CAACC,GAAR,CAAY,eAAZ",
"version": 3,
"names": [
"console",
"log"
Expand All @@ -10,5 +10,5 @@
"sourcesContent": [
"#!env node\n\nconsole.log(\"Hello, world!\");"
],
"version": 3
}
"mappings": "AAAA;AAEAA,OAAO,CAACC,GAAG,CAAC,eAAe,CAAC"
}
@@ -0,0 +1,4 @@
{
"plugins": ["typescript"],
"sourceMaps": true
}
Expand Up @@ -11,5 +11,5 @@
"sourcesContent": [
"foo;\nfoo();\nfoo().bar;\nobj.foo;\nobj.foo();\nobj.foo.bar;\nobj.foo().bar;\n{\n foo;\n foo();\n foo().bar;\n obj.foo;\n obj.foo();\n obj.foo.bar;\n obj.foo().bar;\n}"
],
"mappings": "AAAAA,GAAG;AACHA,GAAG;AACHA,GAAG,GAAGC,GAAN;AACAC,GAAG,CAACF,GAAJ;AACAE,GAAG,CAACF,GAAJ;AACAE,GAAG,CAACF,GAAJ,CAAQC,GAAR;AACAC,GAAG,CAACF,GAAJ,GAAUC,GAAV;AACA;EACED,GAAG;EACHA,GAAG;EACHA,GAAG,GAAGC,GAAN;EACAC,GAAG,CAACF,GAAJ;EACAE,GAAG,CAACF,GAAJ;EACAE,GAAG,CAACF,GAAJ,CAAQC,GAAR;EACAC,GAAG,CAACF,GAAJ,GAAUC,GAAV;AACD"
"mappings": "AAAAA,GAAG;AACHA,GAAG,EAAE;AACLA,GAAG,EAAE,CAACC,GAAG;AACTC,GAAG,CAACF,GAAG;AACPE,GAAG,CAACF,GAAG,EAAE;AACTE,GAAG,CAACF,GAAG,CAACC,GAAG;AACXC,GAAG,CAACF,GAAG,EAAE,CAACC,GAAG;AACb;EACED,GAAG;EACHA,GAAG,EAAE;EACLA,GAAG,EAAE,CAACC,GAAG;EACTC,GAAG,CAACF,GAAG;EACPE,GAAG,CAACF,GAAG,EAAE;EACTE,GAAG,CAACF,GAAG,CAACC,GAAG;EACXC,GAAG,CAACF,GAAG,EAAE,CAACC,GAAG;AACf"
}
@@ -0,0 +1,168 @@
// From packages\babel-cli\src\babel\watcher.ts

import { createRequire } from "module";
import path from "path";
import type { WatchOptions, FSWatcher } from "chokidar";

const fileToDeps = new Map<string, Set<string>>();
const depToFiles = new Map<string, Set<string>>();

let isWatchMode = false;
let watcher: FSWatcher;
const watchQueue = new Set<string>();
let hasStarted = false;

export function enable({ enableGlobbing }: { enableGlobbing: boolean }) {
isWatchMode = true;

const { FSWatcher } = requireChokidar();

const options: WatchOptions = {
disableGlobbing: !enableGlobbing,
persistent: true,
ignoreInitial: true,
awaitWriteFinish: {
stabilityThreshold: 50,
pollInterval: 10,
},
};
watcher = new FSWatcher(options);

watcher.on("unlink", unwatchFile);
}

export function startWatcher() {
hasStarted = true;

for (const dep of watchQueue) {
watcher.add(dep);
}
watchQueue.clear();

watcher.on("ready", () => {
console.log("The watcher is ready.");
});
}

export function watch(filename: string): void {
if (!isWatchMode) {
throw new Error(
"Internal Babel error: .watch called when not in watch mode.",
);
}

if (!hasStarted) {
watchQueue.add(path.resolve(filename));
} else {
watcher.add(path.resolve(filename));
}
}

/**
* Call @param callback whenever a dependency (source file)/
* external dependency (non-source file) changes.
*
* Handles mapping external dependencies to their corresponding
* dependencies.
*/
export function onFilesChange(
callback: (filenames: string[], event: string, cause: string) => void,
): void {
if (!isWatchMode) {
throw new Error(
"Internal Babel error: .onFilesChange called when not in watch mode.",
);
}

watcher.on("all", (event, filename) => {
if (event !== "change" && event !== "add") return;

const absoluteFile = path.resolve(filename);
callback(
[absoluteFile, ...(depToFiles.get(absoluteFile) ?? [])],
event,
absoluteFile,
);
});
}

export function updateExternalDependencies(
filename: string,
dependencies: Set<string>,
) {
if (!isWatchMode) return;

// Use absolute paths
const absFilename = path.resolve(filename);
const absDependencies = new Set(
Array.from(dependencies, dep => path.resolve(dep)),
);

const deps = fileToDeps.get(absFilename);
if (deps) {
for (const dep of deps) {
if (!absDependencies.has(dep)) {
removeFileDependency(absFilename, dep);
}
}
}
for (const dep of absDependencies) {
let deps = depToFiles.get(dep);
if (!deps) {
depToFiles.set(dep, (deps = new Set()));

if (!hasStarted) {
watchQueue.add(dep);
} else {
watcher.add(dep);
}
}

deps.add(absFilename);
}

fileToDeps.set(absFilename, absDependencies);
}

function removeFileDependency(filename: string, dep: string) {
const deps = depToFiles.get(dep) as Set<string>;
deps.delete(filename);

if (deps.size === 0) {
depToFiles.delete(dep);

if (!hasStarted) {
watchQueue.delete(dep);
} else {
watcher.unwatch(dep);
}
}
}

function unwatchFile(filename: string) {
const deps = fileToDeps.get(filename);
if (!deps) return;

for (const dep of deps) {
removeFileDependency(filename, dep);
}
fileToDeps.delete(filename);
}

function requireChokidar(): any {
const require = createRequire(import.meta.url);

try {
return process.env.BABEL_8_BREAKING
? require("chokidar")
: parseInt(process.versions.node) >= 8
? require("chokidar")
: require("@nicolo-ribaudo/chokidar-2");
} catch (err) {
console.error(
"The optional dependency chokidar failed to install and is required for " +
"--watch. Chokidar is likely not supported on your platform.",
);
throw err;
}
}
@@ -0,0 +1,4 @@
{
"plugins": ["typescript"],
"sourceMaps": true
}

0 comments on commit 3b24750

Please sign in to comment.