plgg-bundle 0.0.1 → 0.0.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/bin/hook.d.mts +20 -0
- package/bin/hook.mjs +11 -2
- package/bin/plgg-bundle.mjs +9 -0
- package/bin/relocate.mjs +108 -0
- package/package.json +2 -5
- package/src/Dev/fixtures/aliasDir/index.ts +6 -0
- package/src/Dev/node/devServer.ts +5 -5
- package/src/Dev/node/httpAdapter.ts +1 -1
- package/src/Dev/node/scanGraph.ts +2 -2
- package/src/Dev/node/watch.ts +1 -1
- package/src/Dev/usecase/selfAliasResolve.spec.ts +68 -0
- package/src/domain/usecase/build.ts +2 -2
- package/src/domain/usecase/collectModules.ts +2 -2
- package/src/domain/usecase/deriveExternal.ts +2 -2
- package/src/domain/usecase/discoverWorkspace.ts +2 -2
- package/src/domain/usecase/emitDts.ts +4 -4
- package/src/domain/usecase/resolveSpecifier.ts +2 -2
- package/src/domain/usecase/resolveWorkspaceSpecifier.ts +1 -1
- package/src/domain/usecase/rewriteDtsAliases.ts +2 -2
- package/src/vendors/nodeFs.ts +22 -0
- package/src/vendors/nodeHttp.ts +14 -0
- package/src/vendors/nodePath.ts +15 -0
- package/src/vendors/nodeProc.ts +12 -0
- package/src/vendors/nodeUrl.ts +6 -0
- package/dist/Dev/fixtures/devPoc.spec.d.ts +0 -2
- package/dist/Dev/fixtures/devPoc.spec.d.ts.map +0 -1
- package/dist/Dev/fixtures/devPoc.spec.js +0 -145
- package/dist/Dev/fixtures/devPoc.spec.js.map +0 -1
- package/dist/Dev/model/Fetch.d.ts +0 -20
- package/dist/Dev/model/Fetch.d.ts.map +0 -1
- package/dist/Dev/model/Fetch.js +0 -8
- package/dist/Dev/model/Fetch.js.map +0 -1
- package/dist/Dev/model/ModuleGraph.d.ts +0 -27
- package/dist/Dev/model/ModuleGraph.d.ts.map +0 -1
- package/dist/Dev/model/ModuleGraph.js +0 -2
- package/dist/Dev/model/ModuleGraph.js.map +0 -1
- package/dist/Dev/model/Protocol.d.ts +0 -22
- package/dist/Dev/model/Protocol.d.ts.map +0 -1
- package/dist/Dev/model/Protocol.js +0 -31
- package/dist/Dev/model/Protocol.js.map +0 -1
- package/dist/Dev/node/devServer.d.ts +0 -21
- package/dist/Dev/node/devServer.d.ts.map +0 -1
- package/dist/Dev/node/devServer.js +0 -298
- package/dist/Dev/node/devServer.js.map +0 -1
- package/dist/Dev/node/httpAdapter.d.ts +0 -19
- package/dist/Dev/node/httpAdapter.d.ts.map +0 -1
- package/dist/Dev/node/httpAdapter.js +0 -76
- package/dist/Dev/node/httpAdapter.js.map +0 -1
- package/dist/Dev/node/scanGraph.d.ts +0 -21
- package/dist/Dev/node/scanGraph.d.ts.map +0 -1
- package/dist/Dev/node/scanGraph.js +0 -145
- package/dist/Dev/node/scanGraph.js.map +0 -1
- package/dist/Dev/node/watch.d.ts +0 -10
- package/dist/Dev/node/watch.d.ts.map +0 -1
- package/dist/Dev/node/watch.js +0 -44
- package/dist/Dev/node/watch.js.map +0 -1
- package/dist/Dev/usecase/allowedHost.d.ts +0 -16
- package/dist/Dev/usecase/allowedHost.d.ts.map +0 -1
- package/dist/Dev/usecase/allowedHost.js +0 -33
- package/dist/Dev/usecase/allowedHost.js.map +0 -1
- package/dist/Dev/usecase/allowedHost.spec.d.ts +0 -2
- package/dist/Dev/usecase/allowedHost.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/allowedHost.spec.js +0 -13
- package/dist/Dev/usecase/allowedHost.spec.js.map +0 -1
- package/dist/Dev/usecase/buildGraph.d.ts +0 -12
- package/dist/Dev/usecase/buildGraph.d.ts.map +0 -1
- package/dist/Dev/usecase/buildGraph.js +0 -24
- package/dist/Dev/usecase/buildGraph.js.map +0 -1
- package/dist/Dev/usecase/buildGraph.spec.d.ts +0 -2
- package/dist/Dev/usecase/buildGraph.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/buildGraph.spec.js +0 -16
- package/dist/Dev/usecase/buildGraph.spec.js.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.d.ts +0 -12
- package/dist/Dev/usecase/decorateDevHtml.d.ts.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.js +0 -15
- package/dist/Dev/usecase/decorateDevHtml.js.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.spec.d.ts +0 -2
- package/dist/Dev/usecase/decorateDevHtml.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/decorateDevHtml.spec.js +0 -19
- package/dist/Dev/usecase/decorateDevHtml.spec.js.map +0 -1
- package/dist/Dev/usecase/invalidate.d.ts +0 -17
- package/dist/Dev/usecase/invalidate.d.ts.map +0 -1
- package/dist/Dev/usecase/invalidate.js +0 -57
- package/dist/Dev/usecase/invalidate.js.map +0 -1
- package/dist/Dev/usecase/invalidate.spec.d.ts +0 -2
- package/dist/Dev/usecase/invalidate.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/invalidate.spec.js +0 -64
- package/dist/Dev/usecase/invalidate.spec.js.map +0 -1
- package/dist/Dev/usecase/parseImports.d.ts +0 -24
- package/dist/Dev/usecase/parseImports.d.ts.map +0 -1
- package/dist/Dev/usecase/parseImports.js +0 -40
- package/dist/Dev/usecase/parseImports.js.map +0 -1
- package/dist/Dev/usecase/parseImports.spec.d.ts +0 -2
- package/dist/Dev/usecase/parseImports.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/parseImports.spec.js +0 -24
- package/dist/Dev/usecase/parseImports.spec.js.map +0 -1
- package/dist/Dev/usecase/reloadDecision.d.ts +0 -20
- package/dist/Dev/usecase/reloadDecision.d.ts.map +0 -1
- package/dist/Dev/usecase/reloadDecision.js +0 -52
- package/dist/Dev/usecase/reloadDecision.js.map +0 -1
- package/dist/Dev/usecase/reloadDecision.spec.d.ts +0 -2
- package/dist/Dev/usecase/reloadDecision.spec.d.ts.map +0 -1
- package/dist/Dev/usecase/reloadDecision.spec.js +0 -17
- package/dist/Dev/usecase/reloadDecision.spec.js.map +0 -1
- package/dist/domain/model/BundleConfig.d.ts +0 -136
- package/dist/domain/model/BundleConfig.d.ts.map +0 -1
- package/dist/domain/model/BundleConfig.js +0 -18
- package/dist/domain/model/BundleConfig.js.map +0 -1
- package/dist/domain/model/BundleConfig.spec.d.ts +0 -2
- package/dist/domain/model/BundleConfig.spec.d.ts.map +0 -1
- package/dist/domain/model/BundleConfig.spec.js +0 -8
- package/dist/domain/model/BundleConfig.spec.js.map +0 -1
- package/dist/domain/usecase/asBundleConfig.d.ts +0 -17
- package/dist/domain/usecase/asBundleConfig.d.ts.map +0 -1
- package/dist/domain/usecase/asBundleConfig.js +0 -179
- package/dist/domain/usecase/asBundleConfig.js.map +0 -1
- package/dist/domain/usecase/asBundleConfig.spec.d.ts +0 -2
- package/dist/domain/usecase/asBundleConfig.spec.d.ts.map +0 -1
- package/dist/domain/usecase/asBundleConfig.spec.js +0 -119
- package/dist/domain/usecase/asBundleConfig.spec.js.map +0 -1
- package/dist/domain/usecase/build.d.ts +0 -14
- package/dist/domain/usecase/build.d.ts.map +0 -1
- package/dist/domain/usecase/build.js +0 -177
- package/dist/domain/usecase/build.js.map +0 -1
- package/dist/domain/usecase/collectModules.d.ts +0 -53
- package/dist/domain/usecase/collectModules.d.ts.map +0 -1
- package/dist/domain/usecase/collectModules.js +0 -118
- package/dist/domain/usecase/collectModules.js.map +0 -1
- package/dist/domain/usecase/deriveExternal.d.ts +0 -25
- package/dist/domain/usecase/deriveExternal.d.ts.map +0 -1
- package/dist/domain/usecase/deriveExternal.js +0 -79
- package/dist/domain/usecase/deriveExternal.js.map +0 -1
- package/dist/domain/usecase/deriveExternal.spec.d.ts +0 -2
- package/dist/domain/usecase/deriveExternal.spec.d.ts.map +0 -1
- package/dist/domain/usecase/deriveExternal.spec.js +0 -56
- package/dist/domain/usecase/deriveExternal.spec.js.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.d.ts +0 -27
- package/dist/domain/usecase/discoverWorkspace.d.ts.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.js +0 -116
- package/dist/domain/usecase/discoverWorkspace.js.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.spec.d.ts +0 -2
- package/dist/domain/usecase/discoverWorkspace.spec.d.ts.map +0 -1
- package/dist/domain/usecase/discoverWorkspace.spec.js +0 -23
- package/dist/domain/usecase/discoverWorkspace.spec.js.map +0 -1
- package/dist/domain/usecase/emitBundle.d.ts +0 -43
- package/dist/domain/usecase/emitBundle.d.ts.map +0 -1
- package/dist/domain/usecase/emitBundle.js +0 -157
- package/dist/domain/usecase/emitBundle.js.map +0 -1
- package/dist/domain/usecase/emitBundle.spec.d.ts +0 -2
- package/dist/domain/usecase/emitBundle.spec.d.ts.map +0 -1
- package/dist/domain/usecase/emitBundle.spec.js +0 -80
- package/dist/domain/usecase/emitBundle.spec.js.map +0 -1
- package/dist/domain/usecase/emitDts.d.ts +0 -32
- package/dist/domain/usecase/emitDts.d.ts.map +0 -1
- package/dist/domain/usecase/emitDts.js +0 -99
- package/dist/domain/usecase/emitDts.js.map +0 -1
- package/dist/domain/usecase/isExternal.d.ts +0 -12
- package/dist/domain/usecase/isExternal.d.ts.map +0 -1
- package/dist/domain/usecase/isExternal.js +0 -16
- package/dist/domain/usecase/isExternal.js.map +0 -1
- package/dist/domain/usecase/isExternal.spec.d.ts +0 -2
- package/dist/domain/usecase/isExternal.spec.d.ts.map +0 -1
- package/dist/domain/usecase/isExternal.spec.js +0 -16
- package/dist/domain/usecase/isExternal.spec.js.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.d.ts +0 -35
- package/dist/domain/usecase/resolveSpecifier.d.ts.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.js +0 -83
- package/dist/domain/usecase/resolveSpecifier.js.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.spec.d.ts +0 -2
- package/dist/domain/usecase/resolveSpecifier.spec.d.ts.map +0 -1
- package/dist/domain/usecase/resolveSpecifier.spec.js +0 -44
- package/dist/domain/usecase/resolveSpecifier.spec.js.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts +0 -29
- package/dist/domain/usecase/resolveWorkspaceSpecifier.d.ts.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.js +0 -89
- package/dist/domain/usecase/resolveWorkspaceSpecifier.js.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts +0 -2
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.d.ts.map +0 -1
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js +0 -27
- package/dist/domain/usecase/resolveWorkspaceSpecifier.spec.js.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.d.ts +0 -25
- package/dist/domain/usecase/rewriteDtsAliases.d.ts.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.js +0 -71
- package/dist/domain/usecase/rewriteDtsAliases.js.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts +0 -2
- package/dist/domain/usecase/rewriteDtsAliases.spec.d.ts.map +0 -1
- package/dist/domain/usecase/rewriteDtsAliases.spec.js +0 -35
- package/dist/domain/usecase/rewriteDtsAliases.spec.js.map +0 -1
- package/dist/entrypoints/cli.d.ts +0 -2
- package/dist/entrypoints/cli.d.ts.map +0 -1
- package/dist/entrypoints/cli.js +0 -79
- package/dist/entrypoints/cli.js.map +0 -1
- package/dist/index.d.ts +0 -21
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -28
- package/dist/index.js.map +0 -1
- package/dist/vendors/runner.d.ts +0 -20
- package/dist/vendors/runner.d.ts.map +0 -1
- package/dist/vendors/runner.js +0 -60
- package/dist/vendors/runner.js.map +0 -1
- package/dist/vendors/runner.spec.d.ts +0 -2
- package/dist/vendors/runner.spec.d.ts.map +0 -1
- package/dist/vendors/runner.spec.js +0 -20
- package/dist/vendors/runner.spec.js.map +0 -1
- package/dist/vendors/transpiler.d.ts +0 -19
- package/dist/vendors/transpiler.d.ts.map +0 -1
- package/dist/vendors/transpiler.js +0 -42
- package/dist/vendors/transpiler.js.map +0 -1
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from "node:child_process";
|
|
2
|
-
import { join, dirname, basename, relative, } from "node:path";
|
|
3
|
-
import { existsSync, writeFileSync, rmSync, } from "node:fs";
|
|
4
|
-
import { createRequire } from "node:module";
|
|
5
|
-
import { rewriteDtsAliases } from "plgg-bundle/domain/usecase/rewriteDtsAliases";
|
|
6
|
-
/**
|
|
7
|
-
* Emit the per-file `.d.ts` tree for a package — the
|
|
8
|
-
* single declaration mode every package uses. Rides on
|
|
9
|
-
* the project's own `tsc` in declaration-only mode (no
|
|
10
|
-
* new dependency); a single rolled-up `index.d.ts` was
|
|
11
|
-
* a vite-plugin-dts stylistic choice, not a correctness
|
|
12
|
-
* requirement, so it is dropped (breaking-changes-OK)
|
|
13
|
-
* to keep the bundler at zero new dependencies. Throws
|
|
14
|
-
* on a tsc failure.
|
|
15
|
-
*
|
|
16
|
-
* `emitDeclarationOnly` guarantees no `.js`/`.js.map`
|
|
17
|
-
* leaks into `dist` (the reproduction trap). The
|
|
18
|
-
* synthesized config reuses the package's
|
|
19
|
-
* `tsconfig.build.json` when present, else
|
|
20
|
-
* `tsconfig.json`, and adds the two things the
|
|
21
|
-
* declaration build needs but the package config must
|
|
22
|
-
* not carry permanently:
|
|
23
|
-
* - `emitDeclarationOnly` (the package config drives
|
|
24
|
-
* `tsc --noEmit` type-checking),
|
|
25
|
-
* - exclusion of `*.spec.ts` and `dist`. Spec files are
|
|
26
|
-
* not published API and, in a clean build, would pull
|
|
27
|
-
* the package's own not-yet-built dist types through
|
|
28
|
-
* plgg-test; excluding them also avoids the TS5055
|
|
29
|
-
* "overwrite input" collision with a prior `dist`.
|
|
30
|
-
*/
|
|
31
|
-
export const emitDts = (args) => {
|
|
32
|
-
const project = tsconfigFor(args.root);
|
|
33
|
-
const dtsConfig = join(args.root, "tsconfig.dts.json");
|
|
34
|
-
// tsc must emit into the SAME staging dir the JS bundles
|
|
35
|
-
// went to (args.outDir), overriding the `outDir: "dist"`
|
|
36
|
-
// the package config carries, so the whole `dist` is
|
|
37
|
-
// published atomically by the caller's single swap.
|
|
38
|
-
writeFileSync(dtsConfig, dtsTsconfig(basename(project), relative(args.root, args.outDir)), "utf8");
|
|
39
|
-
// tsc invocation seam: run the package's OWN pinned
|
|
40
|
-
// `tsc` directly via `node` — NOT `npx`. `npx` re-runs
|
|
41
|
-
// its own resolution each call and, on a loaded
|
|
42
|
-
// machine, can intermittently resolve/launch `tsc`
|
|
43
|
-
// differently (the non-deterministic dts-emit flake
|
|
44
|
-
// Planner caught). Resolving the local binary makes
|
|
45
|
-
// the compiler, its version, and its module resolution
|
|
46
|
-
// identical every run.
|
|
47
|
-
const r = spawnSync(process.execPath, [tscBin(args.root), "--project", dtsConfig], { cwd: args.root, encoding: "utf8" });
|
|
48
|
-
rmSync(dtsConfig, { force: true });
|
|
49
|
-
if (r.status !== 0) {
|
|
50
|
-
throw new Error(`DtsError: tsc declaration emit failed\n${r.stdout ?? ""}${r.stderr ?? ""}`);
|
|
51
|
-
}
|
|
52
|
-
// Relativize the self-alias in the declarations (tsc
|
|
53
|
-
// leaves `paths` aliases verbatim; consumers have no
|
|
54
|
-
// such alias).
|
|
55
|
-
rewriteDtsAliases(args.outDir, args.aliasPrefix);
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* The synthesized declaration-emit tsconfig, extending
|
|
59
|
-
* the package's base config.
|
|
60
|
-
*/
|
|
61
|
-
const dtsTsconfig = (baseName, outRel) => JSON.stringify({
|
|
62
|
-
extends: `./${baseName}`,
|
|
63
|
-
compilerOptions: {
|
|
64
|
-
noEmit: false,
|
|
65
|
-
declaration: true,
|
|
66
|
-
emitDeclarationOnly: true,
|
|
67
|
-
// Emit into the caller's staging dir, not the
|
|
68
|
-
// live `dist` (overrides the package config).
|
|
69
|
-
outDir: outRel,
|
|
70
|
-
// No incremental cache: a `.tsbuildinfo` could
|
|
71
|
-
// otherwise persist a stale module resolution
|
|
72
|
-
// across runs. Each emit is a clean resolution.
|
|
73
|
-
incremental: false,
|
|
74
|
-
composite: false,
|
|
75
|
-
},
|
|
76
|
-
exclude: [
|
|
77
|
-
"**/*.spec.ts",
|
|
78
|
-
"**/*.spec.tsx",
|
|
79
|
-
"dist",
|
|
80
|
-
`${outRel}`,
|
|
81
|
-
"node_modules",
|
|
82
|
-
],
|
|
83
|
-
}, null, 2);
|
|
84
|
-
/**
|
|
85
|
-
* Absolute path to the package's OWN pinned `tsc`
|
|
86
|
-
* launcher, resolved from its `typescript` dependency
|
|
87
|
-
* (derived from the package main so it works regardless
|
|
88
|
-
* of `typescript`'s `exports` map). Run via `node`.
|
|
89
|
-
*/
|
|
90
|
-
const tscBin = (root) => join(dirname(createRequire(join(root, "package.json")).resolve("typescript")), "..", "bin", "tsc");
|
|
91
|
-
/**
|
|
92
|
-
* Pick the tsconfig that drives declaration emit:
|
|
93
|
-
* `tsconfig.build.json` when the package carries one,
|
|
94
|
-
* otherwise `tsconfig.json`.
|
|
95
|
-
*/
|
|
96
|
-
const tsconfigFor = (root) => existsSync(join(root, "tsconfig.build.json"))
|
|
97
|
-
? join(root, "tsconfig.build.json")
|
|
98
|
-
: join(root, "tsconfig.json");
|
|
99
|
-
//# sourceMappingURL=emitDts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emitDts.js","sourceRoot":"","sources":["../../../src/domain/usecase/emitDts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type External } from "plgg-bundle/domain/model/BundleConfig";
|
|
2
|
-
/**
|
|
3
|
-
* Decide whether a specifier is external given the
|
|
4
|
-
* config's {@link External} declaration, dispatching on
|
|
5
|
-
* its three shapes: a string array (exact match), a
|
|
6
|
-
* `RegExp` (test), or a predicate function (call). This
|
|
7
|
-
* is the single place the three vite-config external
|
|
8
|
-
* forms — string[], `/^node:/`, and plgg-fetch's
|
|
9
|
-
* `isFrameworkDep` predicate — converge.
|
|
10
|
-
*/
|
|
11
|
-
export declare const isExternal: (external: External, specifier: string) => boolean;
|
|
12
|
-
//# sourceMappingURL=isExternal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isExternal.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/isExternal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AAEtE;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,QAAQ,EAClB,WAAW,MAAM,KAChB,OAKiC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import {} from "plgg-bundle/domain/model/BundleConfig";
|
|
2
|
-
/**
|
|
3
|
-
* Decide whether a specifier is external given the
|
|
4
|
-
* config's {@link External} declaration, dispatching on
|
|
5
|
-
* its three shapes: a string array (exact match), a
|
|
6
|
-
* `RegExp` (test), or a predicate function (call). This
|
|
7
|
-
* is the single place the three vite-config external
|
|
8
|
-
* forms — string[], `/^node:/`, and plgg-fetch's
|
|
9
|
-
* `isFrameworkDep` predicate — converge.
|
|
10
|
-
*/
|
|
11
|
-
export const isExternal = (external, specifier) => typeof external === "function"
|
|
12
|
-
? external(specifier)
|
|
13
|
-
: external instanceof RegExp
|
|
14
|
-
? external.test(specifier)
|
|
15
|
-
: external.includes(specifier);
|
|
16
|
-
//# sourceMappingURL=isExternal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isExternal.js","sourceRoot":"","sources":["../../../src/domain/usecase/isExternal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,uCAAuC,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAAkB,EAClB,SAAiB,EACR,EAAE,CACX,OAAO,QAAQ,KAAK,UAAU;IAC5B,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;IACrB,CAAC,CAAC,QAAQ,YAAY,MAAM;QAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isExternal.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/isExternal.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { test, check, all, toBe, } from "plgg-test";
|
|
2
|
-
import { isExternal } from "plgg-bundle/domain/usecase/isExternal";
|
|
3
|
-
test("isExternal handles a string-array external", () => all([
|
|
4
|
-
check(isExternal(["plgg", "node:fs"], "plgg"), toBe(true)),
|
|
5
|
-
check(isExternal(["plgg"], "plgg-server"), toBe(false)),
|
|
6
|
-
check(isExternal([], "anything"), toBe(false)),
|
|
7
|
-
]));
|
|
8
|
-
test("isExternal handles a RegExp external", () => all([
|
|
9
|
-
check(isExternal(/^node:/, "node:stream"), toBe(true)),
|
|
10
|
-
check(isExternal(/^node:/, "plgg/index"), toBe(false)),
|
|
11
|
-
]));
|
|
12
|
-
test("isExternal handles a predicate external", () => all([
|
|
13
|
-
check(isExternal((id) => id.startsWith("plgg"), "plgg-server/node"), toBe(true)),
|
|
14
|
-
check(isExternal((id) => id.startsWith("plgg"), "./relative"), toBe(false)),
|
|
15
|
-
]));
|
|
16
|
-
//# sourceMappingURL=isExternal.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isExternal.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/isExternal.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,GACL,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEnE,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE,CACtD,GAAG,CAAC;IACF,KAAK,CACH,UAAU,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,EACvC,IAAI,CAAC,IAAI,CAAC,CACX;IACD,KAAK,CACH,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,EACnC,IAAI,CAAC,KAAK,CAAC,CACZ;IACD,KAAK,CACH,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,EAC1B,IAAI,CAAC,KAAK,CAAC,CACZ;CACF,CAAC,CAAC,CAAC;AAEN,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAChD,GAAG,CAAC;IACF,KAAK,CACH,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,EACnC,IAAI,CAAC,IAAI,CAAC,CACX;IACD,KAAK,CACH,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,EAClC,IAAI,CAAC,KAAK,CAAC,CACZ;CACF,CAAC,CAAC,CAAC;AAEN,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE,CACnD,GAAG,CAAC;IACF,KAAK,CACH,UAAU,CACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAC7B,kBAAkB,CACnB,EACD,IAAI,CAAC,IAAI,CAAC,CACX;IACD,KAAK,CACH,UAAU,CACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAC7B,YAAY,CACb,EACD,IAAI,CAAC,KAAK,CAAC,CACZ;CACF,CAAC,CAAC,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolve a bare import specifier to an absolute source
|
|
3
|
-
* file path, given the importing file and the
|
|
4
|
-
* package-self-alias mapping. Pure resolution logic —
|
|
5
|
-
* it only consults the filesystem to pick between
|
|
6
|
-
* `X.ts` and `X/index.ts`, mirroring how the alias +
|
|
7
|
-
* relative imports across the plgg packages resolve
|
|
8
|
-
* under `tsc`.
|
|
9
|
-
*
|
|
10
|
-
* Returns `undefined` when the specifier is external
|
|
11
|
-
* (not the self-alias and not relative) or cannot be
|
|
12
|
-
* found on disk — the caller decides whether that means
|
|
13
|
-
* "external, leave it" or "broken import, fail".
|
|
14
|
-
*/
|
|
15
|
-
export declare const resolveSpecifier: (args: {
|
|
16
|
-
specifier: string;
|
|
17
|
-
fromFile: string;
|
|
18
|
-
aliasPrefix: string;
|
|
19
|
-
aliasSrcRoot: string;
|
|
20
|
-
}) => string | undefined;
|
|
21
|
-
/**
|
|
22
|
-
* Whether the specifier is a relative path (`./` or
|
|
23
|
-
* `../`). Exported for the app-mode workspace resolver,
|
|
24
|
-
* which shares this relative-import handling.
|
|
25
|
-
*/
|
|
26
|
-
export declare const isRelative: (specifier: string) => boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Given a base path with no extension, pick the
|
|
29
|
-
* existing source file: the path as-is, then `base.ts`,
|
|
30
|
-
* then `base/index.ts`. Exported so the app-mode
|
|
31
|
-
* workspace resolver picks sibling source files the same
|
|
32
|
-
* way.
|
|
33
|
-
*/
|
|
34
|
-
export declare const pickExisting: (base: string) => string | undefined;
|
|
35
|
-
//# sourceMappingURL=resolveSpecifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveSpecifier.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/resolveSpecifier.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,KAAG,MAAM,GAAG,SAaZ,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GACrB,WAAW,MAAM,KAChB,OAE0B,CAAC;AA0B9B;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,KACX,MAAM,GAAG,SACmB,CAAC"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { existsSync, statSync } from "node:fs";
|
|
2
|
-
import { dirname, resolve, join, } from "node:path";
|
|
3
|
-
/**
|
|
4
|
-
* Resolve a bare import specifier to an absolute source
|
|
5
|
-
* file path, given the importing file and the
|
|
6
|
-
* package-self-alias mapping. Pure resolution logic —
|
|
7
|
-
* it only consults the filesystem to pick between
|
|
8
|
-
* `X.ts` and `X/index.ts`, mirroring how the alias +
|
|
9
|
-
* relative imports across the plgg packages resolve
|
|
10
|
-
* under `tsc`.
|
|
11
|
-
*
|
|
12
|
-
* Returns `undefined` when the specifier is external
|
|
13
|
-
* (not the self-alias and not relative) or cannot be
|
|
14
|
-
* found on disk — the caller decides whether that means
|
|
15
|
-
* "external, leave it" or "broken import, fail".
|
|
16
|
-
*/
|
|
17
|
-
export const resolveSpecifier = (args) => {
|
|
18
|
-
if (isRelative(args.specifier)) {
|
|
19
|
-
return pickExisting(resolve(dirname(args.fromFile), args.specifier));
|
|
20
|
-
}
|
|
21
|
-
const base = aliasTarget(args);
|
|
22
|
-
return base === undefined
|
|
23
|
-
? undefined
|
|
24
|
-
: pickExisting(base);
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Whether the specifier is a relative path (`./` or
|
|
28
|
-
* `../`). Exported for the app-mode workspace resolver,
|
|
29
|
-
* which shares this relative-import handling.
|
|
30
|
-
*/
|
|
31
|
-
export const isRelative = (specifier) => specifier.startsWith("./") ||
|
|
32
|
-
specifier.startsWith("../");
|
|
33
|
-
/**
|
|
34
|
-
* Map a self-alias specifier (`<prefix>` or
|
|
35
|
-
* `<prefix>/sub/path`) to its base path under the
|
|
36
|
-
* source root. A non-alias specifier yields `undefined`
|
|
37
|
-
* (it is external).
|
|
38
|
-
*/
|
|
39
|
-
const aliasTarget = (args) => args.specifier === args.aliasPrefix
|
|
40
|
-
? args.aliasSrcRoot
|
|
41
|
-
: args.specifier.startsWith(`${args.aliasPrefix}/`)
|
|
42
|
-
? join(args.aliasSrcRoot, args.specifier.slice(args.aliasPrefix.length + 1))
|
|
43
|
-
: undefined;
|
|
44
|
-
/**
|
|
45
|
-
* Given a base path with no extension, pick the
|
|
46
|
-
* existing source file: the path as-is, then `base.ts`,
|
|
47
|
-
* then `base/index.ts`. Exported so the app-mode
|
|
48
|
-
* workspace resolver picks sibling source files the same
|
|
49
|
-
* way.
|
|
50
|
-
*/
|
|
51
|
-
export const pickExisting = (base) => candidates(base).find(isFile);
|
|
52
|
-
/**
|
|
53
|
-
* Whether a path exists and is a regular file (not a
|
|
54
|
-
* directory). A bare `plgg/Abstracts` base resolves to
|
|
55
|
-
* the `Abstracts/` directory, which must be skipped in
|
|
56
|
-
* favor of `Abstracts/index.ts`.
|
|
57
|
-
*/
|
|
58
|
-
const isFile = (p) => existsSync(p) && statSync(p).isFile();
|
|
59
|
-
/**
|
|
60
|
-
* The ordered candidate file paths for a base path. A
|
|
61
|
-
* `.js`/`.mjs`/`.jsx` specifier is the NodeNext/ESM way
|
|
62
|
-
* to reference a TypeScript sibling (`./X.js` → `X.ts`),
|
|
63
|
-
* so its `.ts`/`.mts`/`.tsx` form is tried first.
|
|
64
|
-
*/
|
|
65
|
-
const candidates = (base) => [
|
|
66
|
-
...tsForJs(base),
|
|
67
|
-
base,
|
|
68
|
-
`${base}.ts`,
|
|
69
|
-
join(base, "index.ts"),
|
|
70
|
-
];
|
|
71
|
-
/**
|
|
72
|
-
* The TypeScript-source path implied by a JS-extension
|
|
73
|
-
* specifier, or nothing if `base` carries no such
|
|
74
|
-
* extension.
|
|
75
|
-
*/
|
|
76
|
-
const tsForJs = (base) => base.endsWith(".js")
|
|
77
|
-
? [`${base.slice(0, -3)}.ts`]
|
|
78
|
-
: base.endsWith(".mjs")
|
|
79
|
-
? [`${base.slice(0, -4)}.mts`]
|
|
80
|
-
: base.endsWith(".jsx")
|
|
81
|
-
? [`${base.slice(0, -4)}.tsx`]
|
|
82
|
-
: [];
|
|
83
|
-
//# sourceMappingURL=resolveSpecifier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveSpecifier.js","sourceRoot":"","sources":["../../../src/domain/usecase/resolveSpecifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EACL,OAAO,EACP,OAAO,EACP,IAAI,GACL,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAKhC,EAAsB,EAAE;IACvB,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,YAAY,CACjB,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EACtB,IAAI,CAAC,SAAS,CACf,CACF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,SAAiB,EACR,EAAE,CACX,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;IAC1B,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,WAAW,GAAG,CAAC,IAIpB,EAAsB,EAAE,CACvB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW;IACjC,CAAC,CAAC,IAAI,CAAC,YAAY;IACnB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CACrB,GAAG,IAAI,CAAC,WAAW,GAAG,CACvB;QACH,CAAC,CAAC,IAAI,CACF,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAClB,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAC5B,CACF;QACH,CAAC,CAAC,SAAS,CAAC;AAElB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EACQ,EAAE,CACtB,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,MAAM,GAAG,CAAC,CAAS,EAAW,EAAE,CACpC,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAExC;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CACjB,IAAY,EACW,EAAE,CAAC;IAC1B,GAAG,OAAO,CAAC,IAAI,CAAC;IAChB,IAAI;IACJ,GAAG,IAAI,KAAK;IACZ,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,GAAG,CACd,IAAY,EACW,EAAE,CACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveSpecifier.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/resolveSpecifier.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { test, check, all, toBe, } from "plgg-test";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { resolveSpecifier } from "plgg-bundle/domain/usecase/resolveSpecifier";
|
|
4
|
-
// Resolve against this package's own src tree on disk.
|
|
5
|
-
const srcRoot = join(import.meta.dirname, "..", "..");
|
|
6
|
-
const aliasArgs = {
|
|
7
|
-
aliasPrefix: "plgg-bundle",
|
|
8
|
-
aliasSrcRoot: srcRoot,
|
|
9
|
-
};
|
|
10
|
-
test("resolveSpecifier resolves an alias to a file", () => check(resolveSpecifier({
|
|
11
|
-
specifier: "plgg-bundle/domain/usecase/isExternal",
|
|
12
|
-
fromFile: join(srcRoot, "index.ts"),
|
|
13
|
-
...aliasArgs,
|
|
14
|
-
}), toBe(join(srcRoot, "domain", "usecase", "isExternal.ts"))));
|
|
15
|
-
test("resolveSpecifier returns undefined for an alias dir with no index", () =>
|
|
16
|
-
// domain/model has no index.ts → unresolvable.
|
|
17
|
-
check(resolveSpecifier({
|
|
18
|
-
specifier: "plgg-bundle/domain/model",
|
|
19
|
-
fromFile: join(srcRoot, "index.ts"),
|
|
20
|
-
...aliasArgs,
|
|
21
|
-
}), toBe(undefined)));
|
|
22
|
-
test("resolveSpecifier resolves a relative path", () => check(resolveSpecifier({
|
|
23
|
-
specifier: "./isExternal",
|
|
24
|
-
fromFile: join(srcRoot, "domain", "usecase", "collectModules.ts"),
|
|
25
|
-
...aliasArgs,
|
|
26
|
-
}), toBe(join(srcRoot, "domain", "usecase", "isExternal.ts"))));
|
|
27
|
-
test("resolveSpecifier maps a .js specifier to its .ts source (NodeNext)", () => check(resolveSpecifier({
|
|
28
|
-
specifier: "./isExternal.js",
|
|
29
|
-
fromFile: join(srcRoot, "domain", "usecase", "collectModules.ts"),
|
|
30
|
-
...aliasArgs,
|
|
31
|
-
}), toBe(join(srcRoot, "domain", "usecase", "isExternal.ts"))));
|
|
32
|
-
test("resolveSpecifier returns undefined for an external specifier", () => all([
|
|
33
|
-
check(resolveSpecifier({
|
|
34
|
-
specifier: "plgg",
|
|
35
|
-
fromFile: join(srcRoot, "index.ts"),
|
|
36
|
-
...aliasArgs,
|
|
37
|
-
}), toBe(undefined)),
|
|
38
|
-
check(resolveSpecifier({
|
|
39
|
-
specifier: "node:fs",
|
|
40
|
-
fromFile: join(srcRoot, "index.ts"),
|
|
41
|
-
...aliasArgs,
|
|
42
|
-
}), toBe(undefined)),
|
|
43
|
-
]));
|
|
44
|
-
//# sourceMappingURL=resolveSpecifier.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveSpecifier.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/resolveSpecifier.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,GACL,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE/E,uDAAuD;AACvD,MAAM,OAAO,GAAG,IAAI,CAClB,MAAM,CAAC,IAAI,CAAC,OAAO,EACnB,IAAI,EACJ,IAAI,CACL,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,OAAO;CACtB,CAAC;AAEF,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE,CACxD,KAAK,CACH,gBAAgB,CAAC;IACf,SAAS,EACP,uCAAuC;IACzC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;IACnC,GAAG,SAAS;CACb,CAAC,EACF,IAAI,CACF,IAAI,CACF,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,CAChB,CACF,CACF,CAAC,CAAC;AAEL,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;AAC7E,+CAA+C;AAC/C,KAAK,CACH,gBAAgB,CAAC;IACf,SAAS,EAAE,0BAA0B;IACrC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;IACnC,GAAG,SAAS;CACb,CAAC,EACF,IAAI,CAAC,SAAS,CAAC,CAChB,CAAC,CAAC;AAEL,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE,CACrD,KAAK,CACH,gBAAgB,CAAC;IACf,SAAS,EAAE,cAAc;IACzB,QAAQ,EAAE,IAAI,CACZ,OAAO,EACP,QAAQ,EACR,SAAS,EACT,mBAAmB,CACpB;IACD,GAAG,SAAS;CACb,CAAC,EACF,IAAI,CACF,IAAI,CACF,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,CAChB,CACF,CACF,CAAC,CAAC;AAEL,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE,CAC9E,KAAK,CACH,gBAAgB,CAAC;IACf,SAAS,EAAE,iBAAiB;IAC5B,QAAQ,EAAE,IAAI,CACZ,OAAO,EACP,QAAQ,EACR,SAAS,EACT,mBAAmB,CACpB;IACD,GAAG,SAAS;CACb,CAAC,EACF,IAAI,CACF,IAAI,CACF,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAe,CAChB,CACF,CACF,CAAC,CAAC;AAEL,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE,CACxE,GAAG,CAAC;IACF,KAAK,CACH,gBAAgB,CAAC;QACf,SAAS,EAAE,MAAM;QACjB,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QACnC,GAAG,SAAS;KACb,CAAC,EACF,IAAI,CAAC,SAAS,CAAC,CAChB;IACD,KAAK,CACH,gBAAgB,CAAC;QACf,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;QACnC,GAAG,SAAS;KACb,CAAC,EACF,IAAI,CAAC,SAAS,CAAC,CAChB;CACF,CAAC,CAAC,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { type WorkspacePackage } from "plgg-bundle/domain/usecase/discoverWorkspace";
|
|
2
|
-
/**
|
|
3
|
-
* App-mode resolver: resolve an import specifier to an
|
|
4
|
-
* absolute SOURCE file, inlining workspace siblings
|
|
5
|
-
* (`plgg`, `plgg-view/client`, …) by walking their `src`
|
|
6
|
-
* instead of leaving them external. This is the mirror of
|
|
7
|
-
* the library externalization — the leaf app is where
|
|
8
|
-
* bundling deps is correct.
|
|
9
|
-
*
|
|
10
|
-
* Order:
|
|
11
|
-
* 1. relative (`./x`) → resolve against the importer,
|
|
12
|
-
* 2. a workspace package's PUBLIC export subpath
|
|
13
|
-
* (`plgg-view/style`) → reverse its declared
|
|
14
|
-
* `exports` dist path to the entry source (honours the
|
|
15
|
-
* `styleEntry` rename),
|
|
16
|
-
* 3. a workspace package's INTERNAL self-alias path
|
|
17
|
-
* (`plgg-view/Html/x`, and `plgg` → its `src/index`)
|
|
18
|
-
* → `src/<path>`.
|
|
19
|
-
*
|
|
20
|
-
* Returns `undefined` when the specifier is neither
|
|
21
|
-
* relative nor a known workspace package (the caller
|
|
22
|
-
* treats that as external or a hard error).
|
|
23
|
-
*/
|
|
24
|
-
export declare const resolveWorkspaceSpecifier: (args: {
|
|
25
|
-
specifier: string;
|
|
26
|
-
fromFile: string;
|
|
27
|
-
packages: ReadonlyArray<WorkspacePackage>;
|
|
28
|
-
}) => string | undefined;
|
|
29
|
-
//# sourceMappingURL=resolveWorkspaceSpecifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveWorkspaceSpecifier.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/resolveWorkspaceSpecifier.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;CAC3C,KAAG,MAAM,GAAG,SAgBZ,CAAC"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { basename, join } from "node:path";
|
|
2
|
-
import { resolveSpecifier, isRelative, pickExisting, } from "plgg-bundle/domain/usecase/resolveSpecifier";
|
|
3
|
-
import {} from "plgg-bundle/domain/usecase/discoverWorkspace";
|
|
4
|
-
/**
|
|
5
|
-
* App-mode resolver: resolve an import specifier to an
|
|
6
|
-
* absolute SOURCE file, inlining workspace siblings
|
|
7
|
-
* (`plgg`, `plgg-view/client`, …) by walking their `src`
|
|
8
|
-
* instead of leaving them external. This is the mirror of
|
|
9
|
-
* the library externalization — the leaf app is where
|
|
10
|
-
* bundling deps is correct.
|
|
11
|
-
*
|
|
12
|
-
* Order:
|
|
13
|
-
* 1. relative (`./x`) → resolve against the importer,
|
|
14
|
-
* 2. a workspace package's PUBLIC export subpath
|
|
15
|
-
* (`plgg-view/style`) → reverse its declared
|
|
16
|
-
* `exports` dist path to the entry source (honours the
|
|
17
|
-
* `styleEntry` rename),
|
|
18
|
-
* 3. a workspace package's INTERNAL self-alias path
|
|
19
|
-
* (`plgg-view/Html/x`, and `plgg` → its `src/index`)
|
|
20
|
-
* → `src/<path>`.
|
|
21
|
-
*
|
|
22
|
-
* Returns `undefined` when the specifier is neither
|
|
23
|
-
* relative nor a known workspace package (the caller
|
|
24
|
-
* treats that as external or a hard error).
|
|
25
|
-
*/
|
|
26
|
-
export const resolveWorkspaceSpecifier = (args) => {
|
|
27
|
-
if (isRelative(args.specifier)) {
|
|
28
|
-
return resolveSpecifier({
|
|
29
|
-
specifier: args.specifier,
|
|
30
|
-
fromFile: args.fromFile,
|
|
31
|
-
aliasPrefix: NO_ALIAS,
|
|
32
|
-
aliasSrcRoot: "",
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
const pkg = matchPackage(args.packages, args.specifier);
|
|
36
|
-
return pkg === undefined
|
|
37
|
-
? undefined
|
|
38
|
-
: resolveInPackage(pkg, args.specifier);
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* A sentinel alias prefix no specifier equals, so the
|
|
42
|
-
* shared `resolveSpecifier` handles only the relative
|
|
43
|
-
* branch when reused for relative imports.
|
|
44
|
-
*/
|
|
45
|
-
const NO_ALIAS = "\0";
|
|
46
|
-
/**
|
|
47
|
-
* The workspace package whose name is the specifier or a
|
|
48
|
-
* leading `name/` segment. The package list is sorted
|
|
49
|
-
* longest-name-first, so the first match is the most
|
|
50
|
-
* specific (`plgg-view` before `plgg`).
|
|
51
|
-
*/
|
|
52
|
-
const matchPackage = (packages, specifier) => packages.find((p) => specifier === p.name ||
|
|
53
|
-
specifier.startsWith(`${p.name}/`));
|
|
54
|
-
/**
|
|
55
|
-
* Resolve a specifier already known to belong to `pkg`:
|
|
56
|
-
* a declared export subpath via the exports reversal,
|
|
57
|
-
* else the internal self-alias path.
|
|
58
|
-
*/
|
|
59
|
-
const resolveInPackage = (pkg, specifier) => {
|
|
60
|
-
const subpath = specifier === pkg.name
|
|
61
|
-
? "."
|
|
62
|
-
: `./${specifier.slice(pkg.name.length + 1)}`;
|
|
63
|
-
const dist = pkg.exports.get(subpath);
|
|
64
|
-
return dist === undefined
|
|
65
|
-
? resolveSpecifier({
|
|
66
|
-
specifier,
|
|
67
|
-
fromFile: pkg.dir,
|
|
68
|
-
aliasPrefix: pkg.name,
|
|
69
|
-
aliasSrcRoot: join(pkg.dir, "src"),
|
|
70
|
-
})
|
|
71
|
-
: pickExisting(join(pkg.dir, "src", srcStem(dist)));
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* The source stem implied by an export's dist default —
|
|
75
|
-
* `"./dist/styleEntry.es.js"` → `"styleEntry"`. The entry
|
|
76
|
-
* output basename equals the entry name, which equals the
|
|
77
|
-
* source file stem under `src/`, so stripping the dual
|
|
78
|
-
* `.es.js`/`.cjs.js` (or bare `.js`) suffix recovers it.
|
|
79
|
-
*
|
|
80
|
-
* ASSUMES top-level entry stems: `basename` drops any
|
|
81
|
-
* directory, so an export pointing at a NESTED dist path
|
|
82
|
-
* (`./dist/sub/foo.es.js`) would reverse to `src/foo` and
|
|
83
|
-
* lose `sub/`. No package nests an export entry today, so
|
|
84
|
-
* this is correct now; revisit if one ever does.
|
|
85
|
-
*/
|
|
86
|
-
const srcStem = (distDefault) => basename(distDefault)
|
|
87
|
-
.replace(/\.(es|cjs)\.js$/, "")
|
|
88
|
-
.replace(/\.js$/, "");
|
|
89
|
-
//# sourceMappingURL=resolveWorkspaceSpecifier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveWorkspaceSpecifier.js","sourceRoot":"","sources":["../../../src/domain/usecase/resolveWorkspaceSpecifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,YAAY,GACb,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAyB,MAAM,8CAA8C,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAIzC,EAAsB,EAAE;IACvB,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,gBAAgB,CAAC;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,QAAQ;YACrB,YAAY,EAAE,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,CACf,CAAC;IACF,OAAO,GAAG,KAAK,SAAS;QACtB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CACnB,QAAyC,EACzC,SAAiB,EACa,EAAE,CAChC,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,EAAE,CACJ,SAAS,KAAK,CAAC,CAAC,IAAI;IACpB,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CACrC,CAAC;AAEJ;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CACvB,GAAqB,EACrB,SAAiB,EACG,EAAE;IACtB,MAAM,OAAO,GACX,SAAS,KAAK,GAAG,CAAC,IAAI;QACpB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,CAClB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CACpB,EAAE,CAAC;IACV,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,gBAAgB,CAAC;YACf,SAAS;YACT,QAAQ,EAAE,GAAG,CAAC,GAAG;YACjB,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;SACnC,CAAC;QACJ,CAAC,CAAC,YAAY,CACV,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CACpC,CAAC;AACR,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,GAAG,CAAC,WAAmB,EAAU,EAAE,CAC9C,QAAQ,CAAC,WAAW,CAAC;KAClB,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;KAC9B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveWorkspaceSpecifier.spec.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/resolveWorkspaceSpecifier.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { test, check, all, toBe, } from "plgg-test";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { discoverWorkspace } from "plgg-bundle/domain/usecase/discoverWorkspace";
|
|
4
|
-
import { resolveWorkspaceSpecifier } from "plgg-bundle/domain/usecase/resolveWorkspaceSpecifier";
|
|
5
|
-
const bundleRoot = join(import.meta.dirname, "..", "..", "..");
|
|
6
|
-
const packagesDir = join(bundleRoot, "..");
|
|
7
|
-
const packages = discoverWorkspace(bundleRoot);
|
|
8
|
-
// Any file standing in for the importer.
|
|
9
|
-
const fromFile = join(packagesDir, "example", "src", "app.ts");
|
|
10
|
-
const resolve = (specifier) => resolveWorkspaceSpecifier({
|
|
11
|
-
specifier,
|
|
12
|
-
fromFile,
|
|
13
|
-
packages,
|
|
14
|
-
});
|
|
15
|
-
const pkgSrc = (name, ...rest) => join(packagesDir, name, "src", ...rest);
|
|
16
|
-
test("resolves a bare workspace package to its src index", () => check(resolve("plgg"), toBe(pkgSrc("plgg", "index.ts"))));
|
|
17
|
-
test("resolves a public export subpath, honouring the styleEntry rename", () => all([
|
|
18
|
-
check(resolve("plgg-view/client"), toBe(pkgSrc("plgg-view", "client.ts"))),
|
|
19
|
-
check(resolve("plgg-view/style"), toBe(pkgSrc("plgg-view", "styleEntry.ts"))),
|
|
20
|
-
]));
|
|
21
|
-
test("resolves an internal self-alias path (not a declared export)", () => check(resolve("plgg/Atomics/Num"), toBe(pkgSrc("plgg", "Atomics", "Num.ts"))));
|
|
22
|
-
test("resolves a relative import against the importer", () => check(resolve("./Todo.ts"), toBe(join(packagesDir, "example", "src", "Todo.ts"))));
|
|
23
|
-
test("returns undefined for a non-workspace specifier", () => all([
|
|
24
|
-
check(resolve("react"), toBe(undefined)),
|
|
25
|
-
check(resolve("node:fs"), toBe(undefined)),
|
|
26
|
-
]));
|
|
27
|
-
//# sourceMappingURL=resolveWorkspaceSpecifier.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveWorkspaceSpecifier.spec.js","sourceRoot":"","sources":["../../../src/domain/usecase/resolveWorkspaceSpecifier.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,GACL,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AAEjG,MAAM,UAAU,GAAG,IAAI,CACrB,MAAM,CAAC,IAAI,CAAC,OAAO,EACnB,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;AACF,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAE/C,yCAAyC;AACzC,MAAM,QAAQ,GAAG,IAAI,CACnB,WAAW,EACX,SAAS,EACT,KAAK,EACL,QAAQ,CACT,CAAC;AACF,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,EAAE,CACpC,yBAAyB,CAAC;IACxB,SAAS;IACT,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AACL,MAAM,MAAM,GAAG,CACb,IAAY,EACZ,GAAG,IAA2B,EAC9B,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AAE7C,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE,CAC9D,KAAK,CACH,OAAO,CAAC,MAAM,CAAC,EACf,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CACjC,CAAC,CAAC;AAEL,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE,CAC7E,GAAG,CAAC;IACF,KAAK,CACH,OAAO,CAAC,kBAAkB,CAAC,EAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACvC;IACD,KAAK,CACH,OAAO,CAAC,iBAAiB,CAAC,EAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAC3C;CACF,CAAC,CAAC,CAAC;AAEN,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE,CACxE,KAAK,CACH,OAAO,CAAC,kBAAkB,CAAC,EAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAC1C,CAAC,CAAC;AAEL,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE,CAC3D,KAAK,CACH,OAAO,CAAC,WAAW,CAAC,EACpB,IAAI,CACF,IAAI,CACF,WAAW,EACX,SAAS,EACT,KAAK,EACL,SAAS,CACV,CACF,CACF,CAAC,CAAC;AAEL,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE,CAC3D,GAAG,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC,CAAC,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Rewrite the package self-alias (`<prefix>/<sub>`) in
|
|
3
|
-
* every emitted `.d.ts` under `distDir` to a path
|
|
4
|
-
* relative to the importing declaration file — the same
|
|
5
|
-
* transform vite-plugin-dts applied. `tsc` leaves
|
|
6
|
-
* `tsconfig` `paths` aliases verbatim in declaration
|
|
7
|
-
* output, so without this pass a consumer (who has no
|
|
8
|
-
* `plgg/*` alias) cannot resolve `from "plgg/Atomics"`.
|
|
9
|
-
*
|
|
10
|
-
* Because `dist` mirrors `src` and the alias maps
|
|
11
|
-
* `<prefix>/*` → `src/*`, `<prefix>/<sub>` from
|
|
12
|
-
* `dist/A/B.d.ts` resolves to `dist/<sub>`, i.e. the
|
|
13
|
-
* relative path from `dist/A` to `dist/<sub>`.
|
|
14
|
-
*/
|
|
15
|
-
export declare const rewriteDtsAliases: (distDir: string, aliasPrefix: string) => void;
|
|
16
|
-
/**
|
|
17
|
-
* Rewrite a single declaration file's alias specifiers
|
|
18
|
-
* (pure string transform, exposed for unit testing). The
|
|
19
|
-
* match is ANCHORED to import/export specifier positions
|
|
20
|
-
* — preceded by `from ` or `import(` — so a literal
|
|
21
|
-
* string-type value like `type T = "plgg/x"` in a
|
|
22
|
-
* `.d.ts` is left untouched (gap #7).
|
|
23
|
-
*/
|
|
24
|
-
export declare const rewriteDtsContent: (file: string, content: string, distDir: string, aliasPrefix: string) => string;
|
|
25
|
-
//# sourceMappingURL=rewriteDtsAliases.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rewriteDtsAliases.d.ts","sourceRoot":"","sources":["../../../src/domain/usecase/rewriteDtsAliases.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EACf,aAAa,MAAM,KAClB,IAYF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,SAAS,MAAM,EACf,aAAa,MAAM,KAClB,MAcA,CAAC"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { readdirSync, statSync, readFileSync, writeFileSync, } from "node:fs";
|
|
2
|
-
import { join, dirname, relative, } from "node:path";
|
|
3
|
-
/**
|
|
4
|
-
* Rewrite the package self-alias (`<prefix>/<sub>`) in
|
|
5
|
-
* every emitted `.d.ts` under `distDir` to a path
|
|
6
|
-
* relative to the importing declaration file — the same
|
|
7
|
-
* transform vite-plugin-dts applied. `tsc` leaves
|
|
8
|
-
* `tsconfig` `paths` aliases verbatim in declaration
|
|
9
|
-
* output, so without this pass a consumer (who has no
|
|
10
|
-
* `plgg/*` alias) cannot resolve `from "plgg/Atomics"`.
|
|
11
|
-
*
|
|
12
|
-
* Because `dist` mirrors `src` and the alias maps
|
|
13
|
-
* `<prefix>/*` → `src/*`, `<prefix>/<sub>` from
|
|
14
|
-
* `dist/A/B.d.ts` resolves to `dist/<sub>`, i.e. the
|
|
15
|
-
* relative path from `dist/A` to `dist/<sub>`.
|
|
16
|
-
*/
|
|
17
|
-
export const rewriteDtsAliases = (distDir, aliasPrefix) => {
|
|
18
|
-
// fs walk seam: visit every emitted declaration and
|
|
19
|
-
// relativize its alias imports in place.
|
|
20
|
-
for (const file of dtsFiles(distDir)) {
|
|
21
|
-
const rewritten = rewriteDtsContent(file, readFileSync(file, "utf8"), distDir, aliasPrefix);
|
|
22
|
-
writeFileSync(file, rewritten, "utf8");
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Rewrite a single declaration file's alias specifiers
|
|
27
|
-
* (pure string transform, exposed for unit testing). The
|
|
28
|
-
* match is ANCHORED to import/export specifier positions
|
|
29
|
-
* — preceded by `from ` or `import(` — so a literal
|
|
30
|
-
* string-type value like `type T = "plgg/x"` in a
|
|
31
|
-
* `.d.ts` is left untouched (gap #7).
|
|
32
|
-
*/
|
|
33
|
-
export const rewriteDtsContent = (file, content, distDir, aliasPrefix) => content.replace(aliasPattern(aliasPrefix), (_match, lead, quote, sub) => `${lead}${quote}${toRelative(file, distDir, sub)}${quote}`);
|
|
34
|
-
/**
|
|
35
|
-
* A specifier-matching regex for `<prefix>/<sub>` only
|
|
36
|
-
* in an import/export specifier position: immediately
|
|
37
|
-
* after `from ` or `import(`. Captures the lead, the
|
|
38
|
-
* quote, and the sub-path. The prefix is escaped so a
|
|
39
|
-
* regex-special character in a package name is literal.
|
|
40
|
-
*/
|
|
41
|
-
const aliasPattern = (aliasPrefix) => new RegExp(`(from\\s+|import\\s*\\()(["'])${escapeRegExp(aliasPrefix)}\\/([^"']+)\\2`, "g");
|
|
42
|
-
/**
|
|
43
|
-
* The relative specifier from a declaration file to the
|
|
44
|
-
* aliased sub-module's location in `dist`, POSIX-style
|
|
45
|
-
* and `./`-prefixed when in the same/!-parent dir.
|
|
46
|
-
*/
|
|
47
|
-
const toRelative = (file, distDir, sub) => dotted(relative(dirname(file), join(distDir, sub))
|
|
48
|
-
.split("\\")
|
|
49
|
-
.join("/"));
|
|
50
|
-
/**
|
|
51
|
-
* Ensure a relative path is import-specifier shaped:
|
|
52
|
-
* a same-or-child path gets a leading `./`; a `../`
|
|
53
|
-
* path already is.
|
|
54
|
-
*/
|
|
55
|
-
const dotted = (rel) => rel.startsWith(".") ? rel : `./${rel}`;
|
|
56
|
-
/**
|
|
57
|
-
* Escape regex metacharacters in a literal string.
|
|
58
|
-
*/
|
|
59
|
-
const escapeRegExp = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
60
|
-
/**
|
|
61
|
-
* All `.d.ts` files under a directory, recursively.
|
|
62
|
-
*/
|
|
63
|
-
const dtsFiles = (dir) => readdirSync(dir).flatMap((name) => {
|
|
64
|
-
const p = join(dir, name);
|
|
65
|
-
return statSync(p).isDirectory()
|
|
66
|
-
? dtsFiles(p)
|
|
67
|
-
: p.endsWith(".d.ts")
|
|
68
|
-
? [p]
|
|
69
|
-
: [];
|
|
70
|
-
});
|
|
71
|
-
//# sourceMappingURL=rewriteDtsAliases.js.map
|