livemark 0.28.4 → 0.28.5
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 +2 -2
- package/build/actions/changelog/build.d.ts +1 -1
- package/build/actions/changelog/build.js +5 -5
- package/build/actions/changelog/build.unit.js +6 -6
- package/build/actions/target/build.d.ts +9 -5
- package/build/actions/target/build.js +14 -9
- package/build/actions/target/build.unit.js +17 -2
- package/build/actions/target/clear.d.ts +2 -2
- package/build/actions/target/clear.js +11 -9
- package/build/actions/target/clear.unit.js +10 -3
- package/build/commands/clear.d.ts +1 -1
- package/build/commands/clear.js +6 -5
- package/build/helpers/tailwind-sources.unit.js +4 -4
- package/build/helpers/target-dir.d.ts +2 -0
- package/build/helpers/target-dir.js +11 -0
- package/build/helpers/target-export.unit.js +2 -2
- package/build/plugins/vite-livemark.d.ts +2 -1
- package/build/plugins/vite-livemark.js +20 -9
- package/package.json +1 -1
- package/skills/livemark-configuration/SKILL.md +1 -1
- package/skills/livemark-customization/SKILL.md +1 -1
- package/skills/livemark-deployment/SKILL.md +1 -1
- package/source/actions/changelog/build.ts +4 -5
- package/source/actions/changelog/build.unit.ts +5 -5
- package/source/actions/target/build.ts +29 -9
- package/source/actions/target/build.unit.ts +24 -1
- package/source/actions/target/clear.ts +9 -8
- package/source/actions/target/clear.unit.ts +9 -2
- package/source/commands/clear.ts +5 -4
- package/source/helpers/tailwind-sources.unit.ts +3 -3
- package/source/helpers/target-dir.ts +12 -0
- package/source/helpers/target-export.unit.ts +1 -1
- package/source/plugins/vite-livemark.ts +19 -9
package/README.md
CHANGED
|
@@ -66,10 +66,10 @@ Welcome!
|
|
|
66
66
|
npx livemark start # dev server with HMR at http://localhost:8000
|
|
67
67
|
npx livemark build # production build to .livemark/build/
|
|
68
68
|
npx livemark preview # serve the production build locally
|
|
69
|
-
npx livemark clear # wipe the generated .livemark/.
|
|
69
|
+
npx livemark clear # wipe the generated .livemark/.serve/, .build/ and .cache/ (stop the dev server first)
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
That's the whole loop. Add `.livemark/build/`
|
|
72
|
+
That's the whole loop. Add `.livemark/build/` to your `.gitignore`.
|
|
73
73
|
|
|
74
74
|
## Project structure
|
|
75
75
|
|
|
@@ -13,7 +13,7 @@ interface ChangelogEntry {
|
|
|
13
13
|
export declare function cacheIncludeGlob(section: ChangelogSection, config: Config): string;
|
|
14
14
|
/** Directory holding one changelog section's cache state: the rendered
|
|
15
15
|
* `.md` entries plus a `meta.json` holding the etag for conditional
|
|
16
|
-
* GETs. Each section gets its own subdirectory of
|
|
16
|
+
* GETs. Each section gets its own subdirectory of `.livemark/.cache/changelog/`,
|
|
17
17
|
* keyed by its prefix's slug plus a hash of the raw prefix
|
|
18
18
|
* (`/python/changelog/` → `python-changelog-<hash>`), so several
|
|
19
19
|
* changelogs never overwrite each other's entries even when their
|
|
@@ -8,8 +8,7 @@ import remarkStringify from "remark-stringify";
|
|
|
8
8
|
import { unified } from "unified";
|
|
9
9
|
import { visit } from "unist-util-visit";
|
|
10
10
|
import { isGitHubUrl, parseGitHubRepo } from "../../helpers/changelog-source.js";
|
|
11
|
-
import {
|
|
12
|
-
const CACHE_SUBDIR = "cache/changelog";
|
|
11
|
+
import { cacheDirFor } from "../../helpers/target-dir.js";
|
|
13
12
|
const parser = unified().use(remarkParse);
|
|
14
13
|
const stringifier = unified().use(remarkStringify, {
|
|
15
14
|
bullet: "-",
|
|
@@ -24,7 +23,7 @@ export function cacheIncludeGlob(section, config) {
|
|
|
24
23
|
}
|
|
25
24
|
/** Directory holding one changelog section's cache state: the rendered
|
|
26
25
|
* `.md` entries plus a `meta.json` holding the etag for conditional
|
|
27
|
-
* GETs. Each section gets its own subdirectory of
|
|
26
|
+
* GETs. Each section gets its own subdirectory of `.livemark/.cache/changelog/`,
|
|
28
27
|
* keyed by its prefix's slug plus a hash of the raw prefix
|
|
29
28
|
* (`/python/changelog/` → `python-changelog-<hash>`), so several
|
|
30
29
|
* changelogs never overwrite each other's entries even when their
|
|
@@ -32,7 +31,7 @@ export function cacheIncludeGlob(section, config) {
|
|
|
32
31
|
export function changelogCacheDir(section, config) {
|
|
33
32
|
const slug = slugify(section.prefix) || "index";
|
|
34
33
|
const hash = createHash("sha256").update(section.prefix).digest("hex").slice(0, 8);
|
|
35
|
-
return join(
|
|
34
|
+
return join(cacheDirFor(config.configPath), "changelog", `${slug}-${hash}`);
|
|
36
35
|
}
|
|
37
36
|
/** Build the per-version changelog cache files of one changelog section
|
|
38
37
|
* into its own cache directory. On refresh we wipe only that
|
|
@@ -46,6 +45,7 @@ export async function buildChangelog(section, config) {
|
|
|
46
45
|
if (entries === undefined)
|
|
47
46
|
return;
|
|
48
47
|
await mkdir(cacheDir, { recursive: true });
|
|
48
|
+
await writeFile(join(cacheDirFor(config.configPath), ".gitignore"), "*\n");
|
|
49
49
|
for (const f of await readdir(cacheDir).catch(() => [])) {
|
|
50
50
|
if (f.endsWith(".md"))
|
|
51
51
|
await rm(join(cacheDir, f), { force: true });
|
|
@@ -203,4 +203,4 @@ async function exists(path) {
|
|
|
203
203
|
return false;
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEQsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRSxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUF1QmpELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFBO0FBRXRDLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUN6QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFO0lBQ2pELE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixRQUFRLEVBQUUsR0FBRztDQUNkLENBQUMsQ0FBQTtBQUVGOzt3QkFFd0I7QUFDeEIsTUFB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QyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsS0FBSyxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN0QyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxNQUFNLENBQUMsSUFBWTtJQUNoQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5pbXBvcnQgeyBhY2Nlc3MsIG1rZGlyLCByZWFkRmlsZSwgcmVhZGRpciwgcm0sIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCBzbHVnaWZ5IGZyb20gXCJAc2luZHJlc29yaHVzL3NsdWdpZnlcIlxuaW1wb3J0IHR5cGUgeyBSb290LCBSb290Q29udGVudCB9IGZyb20gXCJtZGFzdFwiXG5pbXBvcnQgeyB0b1N0cmluZyBhcyBtZGFzdFRvU3RyaW5nIH0gZnJvbSBcIm1kYXN0LXV0aWwtdG8tc3RyaW5nXCJcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tIFwicmVtYXJrLXBhcnNlXCJcbmltcG9ydCByZW1hcmtTdHJpbmdpZnkgZnJvbSBcInJlbWFyay1zdHJpbmdpZnlcIlxuaW1wb3J0IHsgdW5pZmllZCB9IGZyb20gXCJ1bmlmaWVkXCJcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ1NlY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHsgaXNHaXRIdWJVcmwsIHBhcnNlR2l0SHViUmVwbyB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2NoYW5nZWxvZy1zb3VyY2UudHNcIlxuaW1wb3J0IHsgdGFyZ2V0RGlyRm9yIH0gZnJvbSBcIi4uL3RhcmdldC9idWlsZC50c1wiXG5cbmludGVyZmFjZSBSZWxlYXNlIHtcbiAgdGFnX25hbWU6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwdWJsaXNoZWRfYXQ/OiBzdHJpbmcgfCBudWxsXG4gIGJvZHk/OiBzdHJpbmcgfCBudWxsXG4gIGh0bWxfdXJsPzogc3RyaW5nIHwgbnVsbFxufVxuXG5pbnRlcmZhY2UgQ2FjaGVNZXRhIHtcbiAgZXRhZzogc3RyaW5nXG4gIGZldGNoZWRBdDogc3RyaW5nXG59XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dFbnRyeSB7XG4gIHNsdWc6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIGRhdGU/OiBzdHJpbmdcbiAgYm9keTogc3RyaW5nXG4gIHNvdXJjZVVybD86IHN0cmluZ1xufVxuXG5jb25zdCBDQUNIRV9TVUJESVIgPSBcImNhY2hlL2NoYW5nZWxvZ1wiXG5cbmNvbnN0IHBhcnNlciA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpXG5jb25zdCBzdHJpbmdpZmllciA9IHVuaWZpZWQoKS51c2UocmVtYXJrU3RyaW5naWZ5LCB7XG4gIGJ1bGxldDogXCItXCIsXG4gIGZlbmNlczogdHJ1ZSxcbiAgZW1waGFzaXM6IFwiX1wiLFxufSlcblxuLyoqIEdsb2IgKGFic29sdXRlIHBhdGgpIGNvdmVyaW5nIHRoZSBjYWNoZWQgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGVzIG9mXG4gKiAgb25lIGNoYW5nZWxvZyBzZWN0aW9uLiBVc2VkIGJ5IGNvbnRlbnQtY29sbGVjdGlvbnMgdG8gaW5jbHVkZSB0aGVtIGluXG4gKiAgdGhlIGFydGljbGUgc2Nhbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUluY2x1ZGVHbG9iKHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24sIGNvbmZpZzogQ29uZmlnKSB7XG4gIHJldHVybiBqb2luKGNoYW5nZWxvZ0NhY2hlRGlyKHNlY3Rpb24sIGNvbmZpZyksIFwiKi5tZFwiKVxufVxuXG4vKiogRGlyZWN0b3J5IGhvbGRpbmcgb25lIGNoYW5nZWxvZyBzZWN0aW9uJ3MgY2FjaGUgc3RhdGU6IHRoZSByZW5kZXJlZFxuICogIGAubWRgIGVudHJpZXMgcGx1cyBhIGBtZXRhLmpzb25gIGhvbGRpbmcgdGhlIGV0YWcgZm9yIGNvbmRpdGlvbmFsXG4gKiAgR0VUcy4gRWFjaCBzZWN0aW9uIGdldHMgaXRzIG93biBzdWJkaXJlY3Rvcnkgb2YgYGNhY2hlL2NoYW5nZWxvZy9gLFxuICogIGtleWVkIGJ5IGl0cyBwcmVmaXgncyBzbHVnIHBsdXMgYSBoYXNoIG9mIHRoZSByYXcgcHJlZml4XG4gKiAgKGAvcHl0aG9uL2NoYW5nZWxvZy9gIOKGkiBgcHl0aG9uLWNoYW5nZWxvZy08aGFzaD5gKSwgc28gc2V2ZXJhbFxuICogIGNoYW5nZWxvZ3MgbmV2ZXIgb3ZlcndyaXRlIGVhY2ggb3RoZXIncyBlbnRyaWVzIGV2ZW4gd2hlbiB0aGVpclxuICogIHByZWZpeGVzIHNsdWdpZnkgYWxpa2UuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlbG9nQ2FjaGVEaXIoc2VjdGlvbjogQ2hhbmdlbG9nU2VjdGlvbiwgY29uZmlnOiBDb25maWcpIHtcbiAgY29uc3Qgc2x1ZyA9IHNsdWdpZnkoc2VjdGlvbi5wcmVmaXgpIHx8IFwiaW5kZXhcIlxuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoc2VjdGlvbi5wcmVmaXgpLmRpZ2VzdChcImhleFwiKS5zbGljZSgwLCA4KVxuICByZXR1cm4gam9pbih0YXJnZXREaXJGb3IoY29uZmlnLmNvbmZpZ1BhdGgpLCBDQUNIRV9TVUJESVIsIGAke3NsdWd9LSR7aGFzaH1gKVxufVxuXG4vKiogQnVpbGQgdGhlIHBlci12ZXJzaW9uIGNoYW5nZWxvZyBjYWNoZSBmaWxlcyBvZiBvbmUgY2hhbmdlbG9nIHNlY3Rpb25cbiAqICBpbnRvIGl0cyBvd24gY2FjaGUgZGlyZWN0b3J5LiBPbiByZWZyZXNoIHdlIHdpcGUgb25seSB0aGF0XG4gKiAgZGlyZWN0b3J5J3MgYC5tZGAgZmlsZXMsIGxlYXZpbmcgbWV0YSBpbnRhY3QuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRDaGFuZ2Vsb2coc2VjdGlvbjogQ2hhbmdlbG9nU2VjdGlvbiwgY29uZmlnOiBDb25maWcpIHtcbiAgY29uc3QgY2FjaGVEaXIgPSBjaGFuZ2Vsb2dDYWNoZURpcihzZWN0aW9uLCBjb25maWcpXG4gIGNvbnN0IG1ldGFQYXRoID0gam9pbihjYWNoZURpciwgXCJtZXRhLmpzb25cIilcblxuICBjb25zdCBlbnRyaWVzID0gaXNHaXRIdWJVcmwoc2VjdGlvbi5zb3VyY2UpXG4gICAgPyBhd2FpdCBidWlsZEZyb21HaXRIdWIoc2VjdGlvbi5zb3VyY2UsIG1ldGFQYXRoLCBjYWNoZURpcilcbiAgICA6IGF3YWl0IGJ1aWxkRnJvbUxvY2FsKHNlY3Rpb24uc291cmNlLCBjb25maWcucm9vdClcblxuICBpZiAoZW50cmllcyA9PT0gdW5kZWZpbmVkKSByZXR1cm5cblxuICBhd2FpdCBta2RpcihjYWNoZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgZm9yIChjb25zdCBmIG9mIGF3YWl0IHJlYWRkaXIoY2FjaGVEaXIpLmNhdGNoKCgpID0+IFtdKSkge1xuICAgIGlmIChmLmVuZHNXaXRoKFwiLm1kXCIpKSBhd2FpdCBybShqb2luKGNhY2hlRGlyLCBmKSwgeyBmb3JjZTogdHJ1ZSB9KVxuICB9XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgbWFya2Rvd24gPSB3cmFwRnJvbnRtYXR0ZXIoZW50cnksIHNlY3Rpb24pXG4gICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oY2FjaGVEaXIsIGAke2VudHJ5LnNsdWd9Lm1kYCksIG1hcmtkb3duLCBcInV0Zi04XCIpXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRGcm9tTG9jYWwoc291cmNlOiBzdHJpbmcsIHJvb3Q6IHN0cmluZykge1xuICBjb25zdCBmaWxlUGF0aCA9IHJlc29sdmUocm9vdCwgc291cmNlKVxuICBjb25zdCBib2R5ID0gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgsIFwidXRmLThcIilcbiAgcmV0dXJuIHNwbGl0TG9jYWxDaGFuZ2Vsb2coYm9keSlcbn1cblxuLyoqIFBhcnNlIENIQU5HRUxPRy5tZCBpbnRvIHBlci12ZXJzaW9uIGVudHJpZXMgdXNpbmcgbWRhc3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdExvY2FsQ2hhbmdlbG9nKGJvZHk6IHN0cmluZyk6IENoYW5nZWxvZ0VudHJ5W10ge1xuICBjb25zdCB0cmVlID0gcGFyc2VyLnBhcnNlKGJvZHkpIGFzIFJvb3RcbiAgY29uc3QgZW50cmllczogQ2hhbmdlbG9nRW50cnlbXSA9IFtdXG4gIGxldCBjdXJyZW50OiB7IGhlYWRpbmc6IHN0cmluZzsgY2hpbGRyZW46IFJvb3RDb250ZW50W10gfSB8IHVuZGVmaW5lZFxuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgdHJlZS5jaGlsZHJlbikge1xuICAgIGlmIChjaGlsZC50eXBlID09PSBcImhlYWRpbmdcIiAmJiBjaGlsZC5kZXB0aCA9PT0gMikge1xuICAgICAgaWYgKGN1cnJlbnQpIGVudHJpZXMucHVzaChmaW5hbGl6ZUVudHJ5KGN1cnJlbnQpKVxuICAgICAgY3VycmVudCA9IHsgaGVhZGluZzogbWRhc3RUb1N0cmluZyhjaGlsZCksIGNoaWxkcmVuOiBbXSB9XG4gICAgfSBlbHNlIGlmIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50LmNoaWxkcmVuLnB1c2goY2hpbGQpXG4gICAgfVxuICB9XG4gIGlmIChjdXJyZW50KSBlbnRyaWVzLnB1c2goZmluYWxpemVFbnRyeShjdXJyZW50KSlcbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuZnVuY3Rpb24gZmluYWxpemVFbnRyeShpbnB1dDoge1xuICBoZWFkaW5nOiBzdHJpbmdcbiAgY2hpbGRyZW46IFJvb3RDb250ZW50W11cbn0pOiBDaGFuZ2Vsb2dFbnRyeSB7XG4gIGNvbnN0IHZlcnNpb25NYXRjaCA9IGlucHV0LmhlYWRpbmcubWF0Y2goL15cXFs/KFteXFxdXFxzXSspXFxdPy8pXG4gIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uTWF0Y2g/LlsxXSA/PyBpbnB1dC5oZWFkaW5nXG4gIGNvbnN0IGRhdGVNYXRjaCA9IGlucHV0LmhlYWRpbmcubWF0Y2goL1xcZHs0fS1cXGR7Mn0tXFxkezJ9LylcbiAgY29uc3QgYm9keSA9IHJlbmRlckVudHJ5Qm9keShpbnB1dC5jaGlsZHJlbilcbiAgcmV0dXJuIHtcbiAgICBzbHVnOiBzbHVnaWZ5KHZlcnNpb24pLFxuICAgIHRpdGxlOiB2ZXJzaW9uLFxuICAgIGRhdGU6IGRhdGVNYXRjaD8uWzBdLFxuICAgIGJvZHksXG4gIH1cbn1cblxuLyoqIFNlcmlhbGl6ZSBhbiBlbnRyeSdzIG1kYXN0IGNoaWxkcmVuIGJhY2sgdG8gbWFya2Rvd24gKi9cbmZ1bmN0aW9uIHJlbmRlckVudHJ5Qm9keShjaGlsZHJlbjogUm9vdENvbnRlbnRbXSkge1xuICBjb25zdCByb290OiBSb290ID0geyB0eXBlOiBcInJvb3RcIiwgY2hpbGRyZW4gfVxuICByZXR1cm4gc3RyaW5naWZpZXIuc3RyaW5naWZ5KHJvb3QpLnRyaW1FbmQoKVxufVxuXG4vKiogRHJvcCB0aGUgYm9keSdzIGxlYWRpbmcgaDEgKHR5cGljYWxseSB0aGUgY29udmVudGlvbmFsLWNoYW5nZWxvZ1xuICogYCMgMC43LjIgKDIwMjYtMDQtMjUpYCBib2lsZXJwbGF0ZSB0aGF0IGR1cGxpY2F0ZXMgdGhlIGFydGljbGUncyB0aXRsZSksXG4gKiBzaGlmdCBoMuKAk2g2IHVwIGJ5IG9uZSBzbyBzdWJzZWN0aW9uIGhlYWRpbmdzIGJlY29tZSBoMSAvIGgyIC8g4oCmLCBhbmRcbiAqIGVzY2FwZSBzdHJheSBgPGAgb3V0c2lkZSBjb2RlIHNvIE1EWCBkb2Vzbid0IG1pc3Rha2UgdGhlbSBmb3IgSlNYLiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0JvZHkoYm9keTogc3RyaW5nKSB7XG4gIGNvbnN0IHRyZWUgPSBwYXJzZXIucGFyc2UoYm9keSkgYXMgUm9vdFxuICB2aXNpdCh0cmVlLCBcImhlYWRpbmdcIiwgbm9kZSA9PiB7XG4gICAgaWYgKG5vZGUuZGVwdGggPiAxKSBub2RlLmRlcHRoID0gKG5vZGUuZGVwdGggLSAxKSBhcyAxIHwgMiB8IDMgfCA0IHwgNVxuICB9KVxuICBpZiAodHJlZS5jaGlsZHJlblswXT8udHlwZSA9PT0gXCJoZWFkaW5nXCIgJiYgdHJlZS5jaGlsZHJlblswXS5kZXB0aCA9PT0gMSkge1xuICAgIHRyZWUuY2hpbGRyZW4uc2hpZnQoKVxuICB9XG4gIHJldHVybiBlc2NhcGVNZHhBbmdsZXMoc3RyaW5naWZpZXIuc3RyaW5naWZ5KHRyZWUpLnRyaW1FbmQoKSlcbn1cblxuLyoqIEVzY2FwZSBgPGAgdG8gYCZsdDtgIG91dHNpZGUgZmVuY2VkIGNvZGUgYmxvY2tzIGFuZCBpbmxpbmUgYmFja3RpY2sgc3BhbnNcbiAqIHNvIGNvbW1pdCBtZXNzYWdlcyB3aXRoIHBsYWNlaG9sZGVycyBsaWtlIGA8c3ViZGlyPmAgZG9uJ3QgZ2V0IHBhcnNlZCBhc1xuICogSlNYIGJ5IE1EWC4gVGhlIGVudGl0eSBpcyB1c2VkIHJhdGhlciB0aGFuIGEgYFxcPGAgYmFja3NsYXNoIGVzY2FwZSBiZWNhdXNlXG4gKiBNRFgncyBKU1gtYXdhcmUgcGFyc2VyIGRvZXMgbm90IGhvbm91ciB0aGUgYmFja3NsYXNoIGFuZCBzdGlsbCByZWFkc1xuICogYFxcPG5hbWU+YCBhcyBhbiB1bmNsb3NlZCB0YWcuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlTWR4QW5nbGVzKG1hcmtkb3duOiBzdHJpbmcpIHtcbiAgbGV0IGluRmVuY2UgPSBmYWxzZVxuICByZXR1cm4gbWFya2Rvd25cbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAubWFwKGxpbmUgPT4ge1xuICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImBgYFwiKSkge1xuICAgICAgICBpbkZlbmNlID0gIWluRmVuY2VcbiAgICAgICAgcmV0dXJuIGxpbmVcbiAgICAgIH1cbiAgICAgIGlmIChpbkZlbmNlKSByZXR1cm4gbGluZVxuICAgICAgcmV0dXJuIGxpbmUucmVwbGFjZSgvYFteYF0qYHw8L2csIG1hdGNoID0+IChtYXRjaCA9PT0gXCI8XCIgPyBcIiZsdDtcIiA6IG1hdGNoKSlcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRnJvbUdpdEh1YihcbiAgc291cmNlOiBzdHJpbmcsXG4gIG1ldGFQYXRoOiBzdHJpbmcsXG4gIGNhY2hlRGlyOiBzdHJpbmcsXG4pOiBQcm9taXNlPENoYW5nZWxvZ0VudHJ5W10gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VHaXRIdWJSZXBvKHNvdXJjZSlcbiAgaWYgKCFwYXJzZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBwYXJzZSBHaXRIdWIgcmVwbyBmcm9tIHNvdXJjZTogJHtzb3VyY2V9YClcbiAgfVxuXG4gIGNvbnN0IHVybCA9IGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7cGFyc2VkLm93bmVyfS8ke3BhcnNlZC5yZXBvfS9yZWxlYXNlcz9wZXJfcGFnZT0xMDBgXG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL3ZuZC5naXRodWIranNvblwiLFxuICAgIFwiWC1HaXRIdWItQXBpLVZlcnNpb25cIjogXCIyMDIyLTExLTI4XCIsXG4gIH1cblxuICBjb25zdCB0b2tlbiA9IHByb2Nlc3MuZW52LkdJVEhVQl9UT0tFTlxuICBpZiAodG9rZW4pIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gXG5cbiAgY29uc3QgbWV0YSA9IGF3YWl0IHJlYWRNZXRhKG1ldGFQYXRoKVxuICBjb25zdCBoYXNDYWNoZSA9IGF3YWl0IGV4aXN0cyhjYWNoZURpcilcbiAgaWYgKG1ldGEgJiYgaGFzQ2FjaGUpIGhlYWRlcnNbXCJJZi1Ob25lLU1hdGNoXCJdID0gbWV0YS5ldGFnXG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2godXJsLCB7IGhlYWRlcnMgfSlcblxuICBpZiAocmVzLnN0YXR1cyA9PT0gMzA0KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSByZXMuaGVhZGVycy5nZXQoXCJ4LXJhdGVsaW1pdC1yZW1haW5pbmdcIilcbiAgICBjb25zdCByZXNldCA9IHJlcy5oZWFkZXJzLmdldChcIngtcmF0ZWxpbWl0LXJlc2V0XCIpXG4gICAgY29uc3QgbXNnID0gYEdpdEh1YiBBUEkgJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fSAocmF0ZS1saW1pdCByZW1haW5pbmc6ICR7cmVtYWluaW5nID8/IFwiP1wifSwgcmVzZXQ6ICR7cmVzZXQgPz8gXCI/XCJ9KWBcbiAgICBpZiAoaGFzQ2FjaGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHttc2d9IOKAlCBmYWxsaW5nIGJhY2sgdG8gY2FjaGVkIGNoYW5nZWxvZ2ApXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpXG4gIH1cblxuICBjb25zdCByZWxlYXNlcyA9IChhd2FpdCByZXMuanNvbigpKSBhcyBSZWxlYXNlW11cbiAgY29uc3QgZXRhZyA9IHJlcy5oZWFkZXJzLmdldChcImV0YWdcIilcbiAgaWYgKGV0YWcpIHtcbiAgICBhd2FpdCBta2RpcihkaXJuYW1lKG1ldGFQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICBtZXRhUGF0aCxcbiAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7IGV0YWcsIGZldGNoZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0gc2F0aXNmaWVzIENhY2hlTWV0YSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMixcbiAgICAgICksXG4gICAgICBcInV0Zi04XCIsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VzLm1hcChyZWxlYXNlID0+ICh7XG4gICAgc2x1Zzogc2x1Z2lmeShyZWxlYXNlLnRhZ19uYW1lKSxcbiAgICB0aXRsZTogcmVsZWFzZS50YWdfbmFtZSxcbiAgICBkYXRlOiByZWxlYXNlLnB1Ymxpc2hlZF9hdCA/PyB1bmRlZmluZWQsXG4gICAgYm9keTogKHJlbGVhc2UuYm9keSA/PyBcIlwiKS50cmltKCksXG4gICAgc291cmNlVXJsOiByZWxlYXNlLmh0bWxfdXJsID8/IHVuZGVmaW5lZCxcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIHdyYXBGcm9udG1hdHRlcihlbnRyeTogQ2hhbmdlbG9nRW50cnksIHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24pIHtcbiAgY29uc3QgbGluZXMgPSBbXCItLS1cIiwgYHRpdGxlOiAke2VudHJ5LnRpdGxlfWAsIGBwYXRoOiAke3NlY3Rpb24ucHJlZml4fSR7ZW50cnkuc2x1Z30vYF1cbiAgaWYgKGVudHJ5LmRhdGUpIGxpbmVzLnB1c2goYGRhdGU6ICR7ZW50cnkuZGF0ZX1gKVxuICBpZiAoZW50cnkuc291cmNlVXJsKSB7XG4gICAgbGluZXMucHVzaChgc291cmNlVXJsOiAke2VudHJ5LnNvdXJjZVVybH1gLCBcInNvdXJjZUFjdGlvbjogdmlld1wiKVxuICB9XG4gIGxpbmVzLnB1c2goXCItLS1cIiwgXCJcIiwgYCMgJHtlbnRyeS50aXRsZX1gLCBcIlwiLCBwcm9jZXNzQm9keShlbnRyeS5ib2R5KSlcbiAgcmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIilcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZE1ldGEobWV0YVBhdGg6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVNZXRhIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcmF3ID0gYXdhaXQgcmVhZEZpbGUobWV0YVBhdGgsIFwidXRmLThcIilcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIENhY2hlTWV0YVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhpc3RzKHBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIGF3YWl0IGFjY2VzcyhwYXRoKVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG4iXX0=
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy9jaGFuZ2Vsb2cvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEQsT0FBTyxPQUFPLE1BQU0sdUJBQXVCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFFBQVEsSUFBSSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRSxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUF1QnpELE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUN6QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFO0lBQ2pELE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFLElBQUk7SUFDWixRQUFRLEVBQUUsR0FBRztDQUNkLENBQUMsQ0FBQTtBQUVGOzt3QkFFd0I7QUFDeEIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQXlCLEVBQUUsTUFB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RUFBRSxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsS0FBSyxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN0QyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBYyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxNQUFNLENBQUMsSUFBWTtJQUNoQyxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5pbXBvcnQgeyBhY2Nlc3MsIG1rZGlyLCByZWFkRmlsZSwgcmVhZGRpciwgcm0sIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCBzbHVnaWZ5IGZyb20gXCJAc2luZHJlc29yaHVzL3NsdWdpZnlcIlxuaW1wb3J0IHR5cGUgeyBSb290LCBSb290Q29udGVudCB9IGZyb20gXCJtZGFzdFwiXG5pbXBvcnQgeyB0b1N0cmluZyBhcyBtZGFzdFRvU3RyaW5nIH0gZnJvbSBcIm1kYXN0LXV0aWwtdG8tc3RyaW5nXCJcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tIFwicmVtYXJrLXBhcnNlXCJcbmltcG9ydCByZW1hcmtTdHJpbmdpZnkgZnJvbSBcInJlbWFyay1zdHJpbmdpZnlcIlxuaW1wb3J0IHsgdW5pZmllZCB9IGZyb20gXCJ1bmlmaWVkXCJcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIlxuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ1NlY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHsgaXNHaXRIdWJVcmwsIHBhcnNlR2l0SHViUmVwbyB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2NoYW5nZWxvZy1zb3VyY2UudHNcIlxuaW1wb3J0IHsgY2FjaGVEaXJGb3IgfSBmcm9tIFwiLi4vLi4vaGVscGVycy90YXJnZXQtZGlyLnRzXCJcblxuaW50ZXJmYWNlIFJlbGVhc2Uge1xuICB0YWdfbmFtZTogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIHB1Ymxpc2hlZF9hdD86IHN0cmluZyB8IG51bGxcbiAgYm9keT86IHN0cmluZyB8IG51bGxcbiAgaHRtbF91cmw/OiBzdHJpbmcgfCBudWxsXG59XG5cbmludGVyZmFjZSBDYWNoZU1ldGEge1xuICBldGFnOiBzdHJpbmdcbiAgZmV0Y2hlZEF0OiBzdHJpbmdcbn1cblxuaW50ZXJmYWNlIENoYW5nZWxvZ0VudHJ5IHtcbiAgc2x1Zzogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgZGF0ZT86IHN0cmluZ1xuICBib2R5OiBzdHJpbmdcbiAgc291cmNlVXJsPzogc3RyaW5nXG59XG5cbmNvbnN0IHBhcnNlciA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpXG5jb25zdCBzdHJpbmdpZmllciA9IHVuaWZpZWQoKS51c2UocmVtYXJrU3RyaW5naWZ5LCB7XG4gIGJ1bGxldDogXCItXCIsXG4gIGZlbmNlczogdHJ1ZSxcbiAgZW1waGFzaXM6IFwiX1wiLFxufSlcblxuLyoqIEdsb2IgKGFic29sdXRlIHBhdGgpIGNvdmVyaW5nIHRoZSBjYWNoZWQgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGVzIG9mXG4gKiAgb25lIGNoYW5nZWxvZyBzZWN0aW9uLiBVc2VkIGJ5IGNvbnRlbnQtY29sbGVjdGlvbnMgdG8gaW5jbHVkZSB0aGVtIGluXG4gKiAgdGhlIGFydGljbGUgc2Nhbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUluY2x1ZGVHbG9iKHNlY3Rpb246IENoYW5nZWxvZ1NlY3Rpb24sIGNvbmZpZzogQ29uZmlnKSB7XG4gIHJldHVybiBqb2luKGNoYW5nZWxvZ0NhY2hlRGlyKHNlY3Rpb24sIGNvbmZpZyksIFwiKi5tZFwiKVxufVxuXG4vKiogRGlyZWN0b3J5IGhvbGRpbmcgb25lIGNoYW5nZWxvZyBzZWN0aW9uJ3MgY2FjaGUgc3RhdGU6IHRoZSByZW5kZXJlZFxuICogIGAubWRgIGVudHJpZXMgcGx1cyBhIGBtZXRhLmpzb25gIGhvbGRpbmcgdGhlIGV0YWcgZm9yIGNvbmRpdGlvbmFsXG4gKiAgR0VUcy4gRWFjaCBzZWN0aW9uIGdldHMgaXRzIG93biBzdWJkaXJlY3Rvcnkgb2YgYC5saXZlbWFyay8uY2FjaGUvY2hhbmdlbG9nL2AsXG4gKiAga2V5ZWQgYnkgaXRzIHByZWZpeCdzIHNsdWcgcGx1cyBhIGhhc2ggb2YgdGhlIHJhdyBwcmVmaXhcbiAqICAoYC9weXRob24vY2hhbmdlbG9nL2Ag4oaSIGBweXRob24tY2hhbmdlbG9nLTxoYXNoPmApLCBzbyBzZXZlcmFsXG4gKiAgY2hhbmdlbG9ncyBuZXZlciBvdmVyd3JpdGUgZWFjaCBvdGhlcidzIGVudHJpZXMgZXZlbiB3aGVuIHRoZWlyXG4gKiAgcHJlZml4ZXMgc2x1Z2lmeSBhbGlrZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2Vsb2dDYWNoZURpcihzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uLCBjb25maWc6IENvbmZpZykge1xuICBjb25zdCBzbHVnID0gc2x1Z2lmeShzZWN0aW9uLnByZWZpeCkgfHwgXCJpbmRleFwiXG4gIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShzZWN0aW9uLnByZWZpeCkuZGlnZXN0KFwiaGV4XCIpLnNsaWNlKDAsIDgpXG4gIHJldHVybiBqb2luKGNhY2hlRGlyRm9yKGNvbmZpZy5jb25maWdQYXRoKSwgXCJjaGFuZ2Vsb2dcIiwgYCR7c2x1Z30tJHtoYXNofWApXG59XG5cbi8qKiBCdWlsZCB0aGUgcGVyLXZlcnNpb24gY2hhbmdlbG9nIGNhY2hlIGZpbGVzIG9mIG9uZSBjaGFuZ2Vsb2cgc2VjdGlvblxuICogIGludG8gaXRzIG93biBjYWNoZSBkaXJlY3RvcnkuIE9uIHJlZnJlc2ggd2Ugd2lwZSBvbmx5IHRoYXRcbiAqICBkaXJlY3RvcnkncyBgLm1kYCBmaWxlcywgbGVhdmluZyBtZXRhIGludGFjdC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENoYW5nZWxvZyhzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uLCBjb25maWc6IENvbmZpZykge1xuICBjb25zdCBjYWNoZURpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHNlY3Rpb24sIGNvbmZpZylcbiAgY29uc3QgbWV0YVBhdGggPSBqb2luKGNhY2hlRGlyLCBcIm1ldGEuanNvblwiKVxuXG4gIGNvbnN0IGVudHJpZXMgPSBpc0dpdEh1YlVybChzZWN0aW9uLnNvdXJjZSlcbiAgICA/IGF3YWl0IGJ1aWxkRnJvbUdpdEh1YihzZWN0aW9uLnNvdXJjZSwgbWV0YVBhdGgsIGNhY2hlRGlyKVxuICAgIDogYXdhaXQgYnVpbGRGcm9tTG9jYWwoc2VjdGlvbi5zb3VyY2UsIGNvbmZpZy5yb290KVxuXG4gIGlmIChlbnRyaWVzID09PSB1bmRlZmluZWQpIHJldHVyblxuXG4gIGF3YWl0IG1rZGlyKGNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICBhd2FpdCB3cml0ZUZpbGUoam9pbihjYWNoZURpckZvcihjb25maWcuY29uZmlnUGF0aCksIFwiLmdpdGlnbm9yZVwiKSwgXCIqXFxuXCIpXG4gIGZvciAoY29uc3QgZiBvZiBhd2FpdCByZWFkZGlyKGNhY2hlRGlyKS5jYXRjaCgoKSA9PiBbXSkpIHtcbiAgICBpZiAoZi5lbmRzV2l0aChcIi5tZFwiKSkgYXdhaXQgcm0oam9pbihjYWNoZURpciwgZiksIHsgZm9yY2U6IHRydWUgfSlcbiAgfVxuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGNvbnN0IG1hcmtkb3duID0gd3JhcEZyb250bWF0dGVyKGVudHJ5LCBzZWN0aW9uKVxuICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKGNhY2hlRGlyLCBgJHtlbnRyeS5zbHVnfS5tZGApLCBtYXJrZG93biwgXCJ1dGYtOFwiKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRnJvbUxvY2FsKHNvdXJjZTogc3RyaW5nLCByb290OiBzdHJpbmcpIHtcbiAgY29uc3QgZmlsZVBhdGggPSByZXNvbHZlKHJvb3QsIHNvdXJjZSlcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0Zi04XCIpXG4gIHJldHVybiBzcGxpdExvY2FsQ2hhbmdlbG9nKGJvZHkpXG59XG5cbi8qKiBQYXJzZSBDSEFOR0VMT0cubWQgaW50byBwZXItdmVyc2lvbiBlbnRyaWVzIHVzaW5nIG1kYXN0ICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRMb2NhbENoYW5nZWxvZyhib2R5OiBzdHJpbmcpOiBDaGFuZ2Vsb2dFbnRyeVtdIHtcbiAgY29uc3QgdHJlZSA9IHBhcnNlci5wYXJzZShib2R5KSBhcyBSb290XG4gIGNvbnN0IGVudHJpZXM6IENoYW5nZWxvZ0VudHJ5W10gPSBbXVxuICBsZXQgY3VycmVudDogeyBoZWFkaW5nOiBzdHJpbmc7IGNoaWxkcmVuOiBSb290Q29udGVudFtdIH0gfCB1bmRlZmluZWRcblxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRyZWUuY2hpbGRyZW4pIHtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gXCJoZWFkaW5nXCIgJiYgY2hpbGQuZGVwdGggPT09IDIpIHtcbiAgICAgIGlmIChjdXJyZW50KSBlbnRyaWVzLnB1c2goZmluYWxpemVFbnRyeShjdXJyZW50KSlcbiAgICAgIGN1cnJlbnQgPSB7IGhlYWRpbmc6IG1kYXN0VG9TdHJpbmcoY2hpbGQpLCBjaGlsZHJlbjogW10gfVxuICAgIH0gZWxzZSBpZiAoY3VycmVudCkge1xuICAgICAgY3VycmVudC5jaGlsZHJlbi5wdXNoKGNoaWxkKVxuICAgIH1cbiAgfVxuICBpZiAoY3VycmVudCkgZW50cmllcy5wdXNoKGZpbmFsaXplRW50cnkoY3VycmVudCkpXG4gIHJldHVybiBlbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGZpbmFsaXplRW50cnkoaW5wdXQ6IHtcbiAgaGVhZGluZzogc3RyaW5nXG4gIGNoaWxkcmVuOiBSb290Q29udGVudFtdXG59KTogQ2hhbmdlbG9nRW50cnkge1xuICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSBpbnB1dC5oZWFkaW5nLm1hdGNoKC9eXFxbPyhbXlxcXVxcc10rKVxcXT8vKVxuICBjb25zdCB2ZXJzaW9uID0gdmVyc2lvbk1hdGNoPy5bMV0gPz8gaW5wdXQuaGVhZGluZ1xuICBjb25zdCBkYXRlTWF0Y2ggPSBpbnB1dC5oZWFkaW5nLm1hdGNoKC9cXGR7NH0tXFxkezJ9LVxcZHsyfS8pXG4gIGNvbnN0IGJvZHkgPSByZW5kZXJFbnRyeUJvZHkoaW5wdXQuY2hpbGRyZW4pXG4gIHJldHVybiB7XG4gICAgc2x1Zzogc2x1Z2lmeSh2ZXJzaW9uKSxcbiAgICB0aXRsZTogdmVyc2lvbixcbiAgICBkYXRlOiBkYXRlTWF0Y2g/LlswXSxcbiAgICBib2R5LFxuICB9XG59XG5cbi8qKiBTZXJpYWxpemUgYW4gZW50cnkncyBtZGFzdCBjaGlsZHJlbiBiYWNrIHRvIG1hcmtkb3duICovXG5mdW5jdGlvbiByZW5kZXJFbnRyeUJvZHkoY2hpbGRyZW46IFJvb3RDb250ZW50W10pIHtcbiAgY29uc3Qgcm9vdDogUm9vdCA9IHsgdHlwZTogXCJyb290XCIsIGNoaWxkcmVuIH1cbiAgcmV0dXJuIHN0cmluZ2lmaWVyLnN0cmluZ2lmeShyb290KS50cmltRW5kKClcbn1cblxuLyoqIERyb3AgdGhlIGJvZHkncyBsZWFkaW5nIGgxICh0eXBpY2FsbHkgdGhlIGNvbnZlbnRpb25hbC1jaGFuZ2Vsb2dcbiAqIGAjIDAuNy4yICgyMDI2LTA0LTI1KWAgYm9pbGVycGxhdGUgdGhhdCBkdXBsaWNhdGVzIHRoZSBhcnRpY2xlJ3MgdGl0bGUpLFxuICogc2hpZnQgaDLigJNoNiB1cCBieSBvbmUgc28gc3Vic2VjdGlvbiBoZWFkaW5ncyBiZWNvbWUgaDEgLyBoMiAvIOKApiwgYW5kXG4gKiBlc2NhcGUgc3RyYXkgYDxgIG91dHNpZGUgY29kZSBzbyBNRFggZG9lc24ndCBtaXN0YWtlIHRoZW0gZm9yIEpTWC4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NCb2R5KGJvZHk6IHN0cmluZykge1xuICBjb25zdCB0cmVlID0gcGFyc2VyLnBhcnNlKGJvZHkpIGFzIFJvb3RcbiAgdmlzaXQodHJlZSwgXCJoZWFkaW5nXCIsIG5vZGUgPT4ge1xuICAgIGlmIChub2RlLmRlcHRoID4gMSkgbm9kZS5kZXB0aCA9IChub2RlLmRlcHRoIC0gMSkgYXMgMSB8IDIgfCAzIHwgNCB8IDVcbiAgfSlcbiAgaWYgKHRyZWUuY2hpbGRyZW5bMF0/LnR5cGUgPT09IFwiaGVhZGluZ1wiICYmIHRyZWUuY2hpbGRyZW5bMF0uZGVwdGggPT09IDEpIHtcbiAgICB0cmVlLmNoaWxkcmVuLnNoaWZ0KClcbiAgfVxuICByZXR1cm4gZXNjYXBlTWR4QW5nbGVzKHN0cmluZ2lmaWVyLnN0cmluZ2lmeSh0cmVlKS50cmltRW5kKCkpXG59XG5cbi8qKiBFc2NhcGUgYDxgIHRvIGAmbHQ7YCBvdXRzaWRlIGZlbmNlZCBjb2RlIGJsb2NrcyBhbmQgaW5saW5lIGJhY2t0aWNrIHNwYW5zXG4gKiBzbyBjb21taXQgbWVzc2FnZXMgd2l0aCBwbGFjZWhvbGRlcnMgbGlrZSBgPHN1YmRpcj5gIGRvbid0IGdldCBwYXJzZWQgYXNcbiAqIEpTWCBieSBNRFguIFRoZSBlbnRpdHkgaXMgdXNlZCByYXRoZXIgdGhhbiBhIGBcXDxgIGJhY2tzbGFzaCBlc2NhcGUgYmVjYXVzZVxuICogTURYJ3MgSlNYLWF3YXJlIHBhcnNlciBkb2VzIG5vdCBob25vdXIgdGhlIGJhY2tzbGFzaCBhbmQgc3RpbGwgcmVhZHNcbiAqIGBcXDxuYW1lPmAgYXMgYW4gdW5jbG9zZWQgdGFnLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZU1keEFuZ2xlcyhtYXJrZG93bjogc3RyaW5nKSB7XG4gIGxldCBpbkZlbmNlID0gZmFsc2VcbiAgcmV0dXJuIG1hcmtkb3duXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcChsaW5lID0+IHtcbiAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJgYGBcIikpIHtcbiAgICAgICAgaW5GZW5jZSA9ICFpbkZlbmNlXG4gICAgICAgIHJldHVybiBsaW5lXG4gICAgICB9XG4gICAgICBpZiAoaW5GZW5jZSkgcmV0dXJuIGxpbmVcbiAgICAgIHJldHVybiBsaW5lLnJlcGxhY2UoL2BbXmBdKmB8PC9nLCBtYXRjaCA9PiAobWF0Y2ggPT09IFwiPFwiID8gXCImbHQ7XCIgOiBtYXRjaCkpXG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKVxufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZEZyb21HaXRIdWIoXG4gIHNvdXJjZTogc3RyaW5nLFxuICBtZXRhUGF0aDogc3RyaW5nLFxuICBjYWNoZURpcjogc3RyaW5nLFxuKTogUHJvbWlzZTxDaGFuZ2Vsb2dFbnRyeVtdIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlR2l0SHViUmVwbyhzb3VyY2UpXG4gIGlmICghcGFyc2VkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgcGFyc2UgR2l0SHViIHJlcG8gZnJvbSBzb3VyY2U6ICR7c291cmNlfWApXG4gIH1cblxuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke3BhcnNlZC5vd25lcn0vJHtwYXJzZWQucmVwb30vcmVsZWFzZXM/cGVyX3BhZ2U9MTAwYFxuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi92bmQuZ2l0aHViK2pzb25cIixcbiAgICBcIlgtR2l0SHViLUFwaS1WZXJzaW9uXCI6IFwiMjAyMi0xMS0yOFwiLFxuICB9XG5cbiAgY29uc3QgdG9rZW4gPSBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU5cbiAgaWYgKHRva2VuKSBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YFxuXG4gIGNvbnN0IG1ldGEgPSBhd2FpdCByZWFkTWV0YShtZXRhUGF0aClcbiAgY29uc3QgaGFzQ2FjaGUgPSBhd2FpdCBleGlzdHMoY2FjaGVEaXIpXG4gIGlmIChtZXRhICYmIGhhc0NhY2hlKSBoZWFkZXJzW1wiSWYtTm9uZS1NYXRjaFwiXSA9IG1ldGEuZXRhZ1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCwgeyBoZWFkZXJzIH0pXG5cbiAgaWYgKHJlcy5zdGF0dXMgPT09IDMwNCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGlmICghcmVzLm9rKSB7XG4gICAgY29uc3QgcmVtYWluaW5nID0gcmVzLmhlYWRlcnMuZ2V0KFwieC1yYXRlbGltaXQtcmVtYWluaW5nXCIpXG4gICAgY29uc3QgcmVzZXQgPSByZXMuaGVhZGVycy5nZXQoXCJ4LXJhdGVsaW1pdC1yZXNldFwiKVxuICAgIGNvbnN0IG1zZyA9IGBHaXRIdWIgQVBJICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH0gKHJhdGUtbGltaXQgcmVtYWluaW5nOiAke3JlbWFpbmluZyA/PyBcIj9cIn0sIHJlc2V0OiAke3Jlc2V0ID8/IFwiP1wifSlgXG4gICAgaWYgKGhhc0NhY2hlKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7bXNnfSDigJQgZmFsbGluZyBiYWNrIHRvIGNhY2hlZCBjaGFuZ2Vsb2dgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKVxuICB9XG5cbiAgY29uc3QgcmVsZWFzZXMgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMgUmVsZWFzZVtdXG4gIGNvbnN0IGV0YWcgPSByZXMuaGVhZGVycy5nZXQoXCJldGFnXCIpXG4gIGlmIChldGFnKSB7XG4gICAgYXdhaXQgbWtkaXIoZGlybmFtZShtZXRhUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgYXdhaXQgd3JpdGVGaWxlKFxuICAgICAgbWV0YVBhdGgsXG4gICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgeyBldGFnLCBmZXRjaGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9IHNhdGlzZmllcyBDYWNoZU1ldGEsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDIsXG4gICAgICApLFxuICAgICAgXCJ1dGYtOFwiLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlcy5tYXAocmVsZWFzZSA9PiAoe1xuICAgIHNsdWc6IHNsdWdpZnkocmVsZWFzZS50YWdfbmFtZSksXG4gICAgdGl0bGU6IHJlbGVhc2UudGFnX25hbWUsXG4gICAgZGF0ZTogcmVsZWFzZS5wdWJsaXNoZWRfYXQgPz8gdW5kZWZpbmVkLFxuICAgIGJvZHk6IChyZWxlYXNlLmJvZHkgPz8gXCJcIikudHJpbSgpLFxuICAgIHNvdXJjZVVybDogcmVsZWFzZS5odG1sX3VybCA/PyB1bmRlZmluZWQsXG4gIH0pKVxufVxuXG5mdW5jdGlvbiB3cmFwRnJvbnRtYXR0ZXIoZW50cnk6IENoYW5nZWxvZ0VudHJ5LCBzZWN0aW9uOiBDaGFuZ2Vsb2dTZWN0aW9uKSB7XG4gIGNvbnN0IGxpbmVzID0gW1wiLS0tXCIsIGB0aXRsZTogJHtlbnRyeS50aXRsZX1gLCBgcGF0aDogJHtzZWN0aW9uLnByZWZpeH0ke2VudHJ5LnNsdWd9L2BdXG4gIGlmIChlbnRyeS5kYXRlKSBsaW5lcy5wdXNoKGBkYXRlOiAke2VudHJ5LmRhdGV9YClcbiAgaWYgKGVudHJ5LnNvdXJjZVVybCkge1xuICAgIGxpbmVzLnB1c2goYHNvdXJjZVVybDogJHtlbnRyeS5zb3VyY2VVcmx9YCwgXCJzb3VyY2VBY3Rpb246IHZpZXdcIilcbiAgfVxuICBsaW5lcy5wdXNoKFwiLS0tXCIsIFwiXCIsIGAjICR7ZW50cnkudGl0bGV9YCwgXCJcIiwgcHJvY2Vzc0JvZHkoZW50cnkuYm9keSkpXG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRNZXRhKG1ldGFQYXRoOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlTWV0YSB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJhdyA9IGF3YWl0IHJlYWRGaWxlKG1ldGFQYXRoLCBcInV0Zi04XCIpXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KSBhcyBDYWNoZU1ldGFcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4aXN0cyhwYXRoOiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhY2Nlc3MocGF0aClcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl19
|
|
@@ -4,7 +4,7 @@ import { temporaryDirectoryTask } from "tempy";
|
|
|
4
4
|
import { describe, expect, it } from "vite-plus/test";
|
|
5
5
|
import { partitionBySection } from "../../helpers/section.js";
|
|
6
6
|
import { Config } from "../../models/config.js";
|
|
7
|
-
import {
|
|
7
|
+
import { cacheDirFor } from "../../helpers/target-dir.js";
|
|
8
8
|
import { buildChangelog, cacheIncludeGlob, changelogCacheDir, escapeMdxAngles, splitLocalChangelog, } from "./build.js";
|
|
9
9
|
describe("buildChangelog", () => {
|
|
10
10
|
it("keeps several changelog sections apart when they share a version", () => temporaryDirectoryTask(async (root) => {
|
|
@@ -33,7 +33,7 @@ describe("buildChangelog", () => {
|
|
|
33
33
|
await buildChangelog(python, config);
|
|
34
34
|
const standardDir = changelogCacheDir(standard, config);
|
|
35
35
|
const pythonDir = changelogCacheDir(python, config);
|
|
36
|
-
const cacheRoot = join(
|
|
36
|
+
const cacheRoot = join(cacheDirFor(configPath), "changelog");
|
|
37
37
|
expect(dirname(standardDir)).toBe(cacheRoot);
|
|
38
38
|
expect(dirname(pythonDir)).toBe(cacheRoot);
|
|
39
39
|
expect(basename(standardDir)).toMatch(/^changelog-[0-9a-f]{8}$/);
|
|
@@ -61,7 +61,7 @@ describe("buildChangelog", () => {
|
|
|
61
61
|
]);
|
|
62
62
|
}
|
|
63
63
|
finally {
|
|
64
|
-
await rm(
|
|
64
|
+
await rm(cacheDirFor(configPath), { recursive: true, force: true });
|
|
65
65
|
}
|
|
66
66
|
}));
|
|
67
67
|
it("cleans only its own cache directory on rebuild", () => temporaryDirectoryTask(async (root) => {
|
|
@@ -92,7 +92,7 @@ describe("buildChangelog", () => {
|
|
|
92
92
|
expect(await readdir(changelogCacheDir(python, config))).toEqual(["0-3-0.md"]);
|
|
93
93
|
}
|
|
94
94
|
finally {
|
|
95
|
-
await rm(
|
|
95
|
+
await rm(cacheDirFor(configPath), { recursive: true, force: true });
|
|
96
96
|
}
|
|
97
97
|
}));
|
|
98
98
|
it("keeps sections apart when their prefixes slugify to the same key", () => temporaryDirectoryTask(async (root) => {
|
|
@@ -124,7 +124,7 @@ describe("buildChangelog", () => {
|
|
|
124
124
|
expect(await readdir(flatDir)).toEqual(["0-2-0.md"]);
|
|
125
125
|
}
|
|
126
126
|
finally {
|
|
127
|
-
await rm(
|
|
127
|
+
await rm(cacheDirFor(configPath), { recursive: true, force: true });
|
|
128
128
|
}
|
|
129
129
|
}));
|
|
130
130
|
});
|
|
@@ -217,4 +217,4 @@ async function writeChangelog(root, dir, body) {
|
|
|
217
217
|
await mkdir(join(root, dir), { recursive: true });
|
|
218
218
|
await writeFile(join(root, dir, "CHANGELOG.md"), body, "utf-8");
|
|
219
219
|
}
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL2NoYW5nZWxvZy9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2pELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0sWUFBWSxDQUFBO0FBRW5CLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRSxDQUMxRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7UUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sUUFBUSxHQUFxQjtZQUNqQyxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLE9B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Q0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxRCw4QkFBOEIsQ0FDL0IsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQTtRQUNyQyxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUE7QUFFRixTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsUUFBNEI7SUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQ25ELE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFBO0FBQzdFLENBQUM7QUFFRCxLQUFLLFVBQVUsY0FBYyxDQUFDLElBQVksRUFBRSxHQUFXLEVBQUUsSUFBWTtJQUNuRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDakQsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2RpciwgcmVhZEZpbGUsIHJlYWRkaXIsIHJtLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayB9IGZyb20gXCJ0ZW1weVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyBwYXJ0aXRpb25CeVNlY3Rpb24gfSBmcm9tIFwiLi4vLi4vaGVscGVycy9zZWN0aW9uLnRzXCJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB0eXBlIHsgQ2hhbmdlbG9nU2VjdGlvbiB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc2VjdGlvbi50c1wiXG5pbXBvcnQgeyB0YXJnZXREaXJGb3IgfSBmcm9tIFwiLi4vdGFyZ2V0L2J1aWxkLnRzXCJcbmltcG9ydCB7XG4gIGJ1aWxkQ2hhbmdlbG9nLFxuICBjYWNoZUluY2x1ZGVHbG9iLFxuICBjaGFuZ2Vsb2dDYWNoZURpcixcbiAgZXNjYXBlTWR4QW5nbGVzLFxuICBzcGxpdExvY2FsQ2hhbmdlbG9nLFxufSBmcm9tIFwiLi9idWlsZC50c1wiXG5cbmRlc2NyaWJlKFwiYnVpbGRDaGFuZ2Vsb2dcIiwgKCkgPT4ge1xuICBpdChcImtlZXBzIHNldmVyYWwgY2hhbmdlbG9nIHNlY3Rpb25zIGFwYXJ0IHdoZW4gdGhleSBzaGFyZSBhIHZlcnNpb25cIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgICAgIGNvbnN0IHN0YW5kYXJkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJzdGFuZGFyZC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgdmVyc2lvbjogdHJ1ZSxcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgcHl0aG9uOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwicHl0aG9uL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICB2ZXJzaW9uOiB0cnVlLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSBtYWtlQ29uZmlnKHJvb3QsIFtzdGFuZGFyZCwgcHl0aG9uXSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2coXG4gICAgICAgIHJvb3QsXG4gICAgICAgIFwic3RhbmRhcmRcIixcbiAgICAgICAgXCIjIyAwLjIuMFxcblxcblN0YW5kYXJkIHR3by5cXG5cXG4jIyAwLjEuMFxcblxcblN0YW5kYXJkIG9uZS5cXG5cIixcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlQ2hhbmdlbG9nKHJvb3QsIFwicHl0aG9uXCIsIFwiIyMgMC4yLjBcXG5cXG5QeXRob24gdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhzdGFuZGFyZCwgY29uZmlnKVxuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhweXRob24sIGNvbmZpZylcblxuICAgICAgICBjb25zdCBzdGFuZGFyZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHN0YW5kYXJkLCBjb25maWcpXG4gICAgICAgIGNvbnN0IHB5dGhvbkRpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHB5dGhvbiwgY29uZmlnKVxuICAgICAgICBjb25zdCBjYWNoZVJvb3QgPSBqb2luKHRhcmdldERpckZvcihjb25maWdQYXRoKSwgXCJjYWNoZS9jaGFuZ2Vsb2dcIilcbiAgICAgICAgZXhwZWN0KGRpcm5hbWUoc3RhbmRhcmREaXIpKS50b0JlKGNhY2hlUm9vdClcbiAgICAgICAgZXhwZWN0KGRpcm5hbWUocHl0aG9uRGlyKSkudG9CZShjYWNoZVJvb3QpXG4gICAgICAgIGV4cGVjdChiYXNlbmFtZShzdGFuZGFyZERpcikpLnRvTWF0Y2goL15jaGFuZ2Vsb2ctWzAtOWEtZl17OH0kLylcbiAgICAgICAgZXhwZWN0KGJhc2VuYW1lKHB5dGhvbkRpcikpLnRvTWF0Y2goL15weXRob24tY2hhbmdlbG9nLVswLTlhLWZdezh9JC8pXG4gICAgICAgIGV4cGVjdChjYWNoZUluY2x1ZGVHbG9iKHB5dGhvbiwgY29uZmlnKSkudG9CZShqb2luKHB5dGhvbkRpciwgXCIqLm1kXCIpKVxuXG4gICAgICAgIGV4cGVjdCgoYXdhaXQgcmVhZGRpcihzdGFuZGFyZERpcikpLnNvcnQoKSkudG9FcXVhbChbXCIwLTEtMC5tZFwiLCBcIjAtMi0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihweXRob25EaXIpKS50b0VxdWFsKFtcIjAtMi0wLm1kXCJdKVxuXG4gICAgICAgIGNvbnN0IHN0YW5kYXJkRW50cnkgPSBhd2FpdCByZWFkRmlsZShqb2luKHN0YW5kYXJkRGlyLCBcIjAtMi0wLm1kXCIpLCBcInV0Zi04XCIpXG4gICAgICAgIGNvbnN0IHB5dGhvbkVudHJ5ID0gYXdhaXQgcmVhZEZpbGUoam9pbihweXRob25EaXIsIFwiMC0yLTAubWRcIiksIFwidXRmLThcIilcbiAgICAgICAgZXhwZWN0KHN0YW5kYXJkRW50cnkpLnRvQ29udGFpbihcInBhdGg6IC9jaGFuZ2Vsb2cvMC0yLTAvXCIpXG4gICAgICAgIGV4cGVjdChzdGFuZGFyZEVudHJ5KS50b0NvbnRhaW4oXCJTdGFuZGFyZCB0d28uXCIpXG4gICAgICAgIGV4cGVjdChweXRob25FbnRyeSkudG9Db250YWluKFwicGF0aDogL3B5dGhvbi9jaGFuZ2Vsb2cvMC0yLTAvXCIpXG4gICAgICAgIGV4cGVjdChweXRob25FbnRyeSkudG9Db250YWluKFwiUHl0aG9uIHR3by5cIilcblxuICAgICAgICBjb25zdCBvbGRlckVudHJ5ID0gYXdhaXQgcmVhZEZpbGUoam9pbihzdGFuZGFyZERpciwgXCIwLTEtMC5tZFwiKSwgXCJ1dGYtOFwiKVxuICAgICAgICBjb25zdCBhcnRpY2xlcyA9IFtzdGFuZGFyZEVudHJ5LCBvbGRlckVudHJ5LCBweXRob25FbnRyeV0ubWFwKG1hcmtkb3duID0+ICh7XG4gICAgICAgICAgcGF0aDogbWFya2Rvd24ubWF0Y2goL15wYXRoOiAoLispJC9tKT8uWzFdID8/IFwiXCIsXG4gICAgICAgIH0pKVxuICAgICAgICBjb25zdCBidWNrZXRzID0gcGFydGl0aW9uQnlTZWN0aW9uKGFydGljbGVzLCBbc3RhbmRhcmQsIHB5dGhvbl0pXG4gICAgICAgIGV4cGVjdChidWNrZXRzLmdldChcIi9jaGFuZ2Vsb2cvXCIpPy5tYXAoYSA9PiBhLnBhdGgpKS50b0VxdWFsKFtcbiAgICAgICAgICBcIi9jaGFuZ2Vsb2cvMC0yLTAvXCIsXG4gICAgICAgICAgXCIvY2hhbmdlbG9nLzAtMS0wL1wiLFxuICAgICAgICBdKVxuICAgICAgICBleHBlY3QoYnVja2V0cy5nZXQoXCIvcHl0aG9uL2NoYW5nZWxvZy9cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgICAgIFwiL3B5dGhvbi9jaGFuZ2Vsb2cvMC0yLTAvXCIsXG4gICAgICAgIF0pXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBybSh0YXJnZXREaXJGb3IoY29uZmlnUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pKVxuXG4gIGl0KFwiY2xlYW5zIG9ubHkgaXRzIG93biBjYWNoZSBkaXJlY3Rvcnkgb24gcmVidWlsZFwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgY29uc3Qgc3RhbmRhcmQ6IENoYW5nZWxvZ1NlY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IFwiY2hhbmdlbG9nXCIsXG4gICAgICAgIHRpdGxlOiBcIkNoYW5nZWxvZ1wiLFxuICAgICAgICBwcmVmaXg6IFwiL2NoYW5nZWxvZy9cIixcbiAgICAgICAgc291cmNlOiBcInN0YW5kYXJkL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBweXRob246IENoYW5nZWxvZ1NlY3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IFwiY2hhbmdlbG9nXCIsXG4gICAgICAgIHRpdGxlOiBcIkNoYW5nZWxvZ1wiLFxuICAgICAgICBwcmVmaXg6IFwiL3B5dGhvbi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJweXRob24vQ0hBTkdFTE9HLm1kXCIsXG4gICAgICAgIHBvc2l0aW9uOiBcInNpZGViYXJcIixcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG1ha2VDb25maWcocm9vdCwgW3N0YW5kYXJkLCBweXRob25dKVxuXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcInN0YW5kYXJkXCIsIFwiIyMgMC4yLjBcXG5cXG5TdGFuZGFyZCB0d28uXFxuXCIpXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcInB5dGhvblwiLCBcIiMjIDAuMy4wXFxuXFxuUHl0aG9uIHRocmVlLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhzdGFuZGFyZCwgY29uZmlnKVxuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhweXRob24sIGNvbmZpZylcbiAgICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJzdGFuZGFyZFwiLCBcIiMjIDAuNC4wXFxuXFxuU3RhbmRhcmQgZm91ci5cXG5cIilcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coc3RhbmRhcmQsIGNvbmZpZylcblxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihjaGFuZ2Vsb2dDYWNoZURpcihzdGFuZGFyZCwgY29uZmlnKSkpLnRvRXF1YWwoW1wiMC00LTAubWRcIl0pXG4gICAgICAgIGV4cGVjdChhd2FpdCByZWFkZGlyKGNoYW5nZWxvZ0NhY2hlRGlyKHB5dGhvbiwgY29uZmlnKSkpLnRvRXF1YWwoW1wiMC0zLTAubWRcIl0pXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCBybSh0YXJnZXREaXJGb3IoY29uZmlnUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pKVxuXG4gIGl0KFwia2VlcHMgc2VjdGlvbnMgYXBhcnQgd2hlbiB0aGVpciBwcmVmaXhlcyBzbHVnaWZ5IHRvIHRoZSBzYW1lIGtleVwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgY29uc3QgbmVzdGVkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwibmVzdGVkL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBmbGF0OiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24tY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwiZmxhdC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgY29uZmlnID0gbWFrZUNvbmZpZyhyb290LCBbbmVzdGVkLCBmbGF0XSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJuZXN0ZWRcIiwgXCIjIyAwLjEuMFxcblxcbk5lc3RlZCBvbmUuXFxuXCIpXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcImZsYXRcIiwgXCIjIyAwLjIuMFxcblxcbkZsYXQgdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhuZXN0ZWQsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coZmxhdCwgY29uZmlnKVxuXG4gICAgICAgIGNvbnN0IG5lc3RlZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKG5lc3RlZCwgY29uZmlnKVxuICAgICAgICBjb25zdCBmbGF0RGlyID0gY2hhbmdlbG9nQ2FjaGVEaXIoZmxhdCwgY29uZmlnKVxuICAgICAgICBleHBlY3QobmVzdGVkRGlyKS5ub3QudG9CZShmbGF0RGlyKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihuZXN0ZWREaXIpKS50b0VxdWFsKFtcIjAtMS0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihmbGF0RGlyKSkudG9FcXVhbChbXCIwLTItMC5tZFwiXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHJtKHRhcmdldERpckZvcihjb25maWdQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG4gICAgICB9XG4gICAgfSkpXG59KVxuXG5kZXNjcmliZShcInNwbGl0TG9jYWxDaGFuZ2Vsb2dcIiwgKCkgPT4ge1xuICBpdChcInNwbGl0cyBieSBoMiBoZWFkaW5nc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBgIyBDaGFuZ2Vsb2dcblxuIyMgWzAuMi4wXSAtIDIwMjYtMDQtMTVcblxuIyMjIEFkZGVkXG5cbi0gRm9vXG5cbiMjIFswLjEuMF0gLSAyMDI2LTA0LTEwXG5cbkluaXRpYWwgcmVsZWFzZS5cbmBcbiAgICBjb25zdCBlbnRyaWVzID0gc3BsaXRMb2NhbENoYW5nZWxvZyhpbnB1dClcbiAgICBleHBlY3QoZW50cmllcykudG9IYXZlTGVuZ3RoKDIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LnRpdGxlKS50b0JlKFwiMC4yLjBcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uZGF0ZSkudG9CZShcIjIwMjYtMDQtMTVcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uc2x1ZykudG9CZShcIjAtMi0wXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMV0/LnRpdGxlKS50b0JlKFwiMC4xLjBcIilcbiAgICBleHBlY3QoZW50cmllc1sxXT8uZGF0ZSkudG9CZShcIjIwMjYtMDQtMTBcIilcbiAgfSlcblxuICBpdChcInByZXNlcnZlcyBoMyBoZWFkaW5nIHN0cnVjdHVyZSBpbiBib2R5XCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IGAjIyAxLjAuMFxuXG4jIyMgQWRkZWRcblxuLSBUaGluZyBvbmVcbmBcbiAgICBjb25zdCBlbnRyaWVzID0gc3BsaXRMb2NhbENoYW5nZWxvZyhpbnB1dClcbiAgICBleHBlY3QoZW50cmllc1swXT8uYm9keSkudG9Db250YWluKFwiIyMjIEFkZGVkXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmJvZHkpLnRvQ29udGFpbihcIi0gVGhpbmcgb25lXCIpXG4gIH0pXG5cbiAgaXQoXCJpZ25vcmVzICMjIGluc2lkZSBmZW5jZWQgY29kZSBibG9ja3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIDEuMC4wXG5cblNvbWUgcHJvc2UuXG5cblxcYFxcYFxcYG1kXG4jIyBOb3QgYSByZWFsIHZlcnNpb24gaGVhZGluZ1xuXFxgXFxgXFxgXG5cbiMjIDAuOS4wXG5cbk9sZGVyLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzKS50b0hhdmVMZW5ndGgoMilcbiAgICBleHBlY3QoZW50cmllc1swXT8udGl0bGUpLnRvQmUoXCIxLjAuMFwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5ib2R5KS50b0NvbnRhaW4oXCJOb3QgYSByZWFsIHZlcnNpb24gaGVhZGluZ1wiKVxuICAgIGV4cGVjdChlbnRyaWVzWzFdPy50aXRsZSkudG9CZShcIjAuOS4wXCIpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIGJhcmUgdmVyc2lvbiBoZWFkaW5ncyB3aXRob3V0IGJyYWNrZXRzIG9yIGRhdGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIHYxLjIuM1xuXG5SZWxlYXNlIG5vdGVzLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy50aXRsZSkudG9CZShcInYxLjIuM1wiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5zbHVnKS50b0JlKFwidjEtMi0zXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmRhdGUpLnRvQmVVbmRlZmluZWQoKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJlc2NhcGVNZHhBbmdsZXNcIiwgKCkgPT4ge1xuICBpdChcImVzY2FwZXMgYSBiYXJlIGFuZ2xlIHBsYWNlaG9sZGVyIGFzIGFuIEhUTUwgZW50aXR5XCIsICgpID0+IHtcbiAgICAvLyBgXFw8YCBpcyBob25vdXJlZCBieSByZW1hcmsgYnV0IE5PVCBieSBNRFgncyBKU1gtYXdhcmUgcGFyc2VyLCB3aGljaCBzdGlsbFxuICAgIC8vIHJlYWRzIGBcXDxuYW1lPmAgYXMgYW4gdW5jbG9zZWQgdGFnLiBPbmx5IHRoZSBlbnRpdHkgc3Vydml2ZXMgYm90aC5cbiAgICBleHBlY3QoZXNjYXBlTWR4QW5nbGVzKFwiYSA8bmFtZT4gYlwiKSkudG9CZShcImEgJmx0O25hbWU+IGJcIilcbiAgfSlcblxuICBpdChcImVzY2FwZXMgYSBwbGFjZWhvbGRlciB0aGF0IGZvbGxvd3MgYSBiYXJlIFVSTFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBcIlNlZSBodHRwczovL2ZhaXJzcGVjLm9yZy9wcm9maWxlcy9sYXRlc3QvPG5hbWU+Lmpzb24sIG9rLlwiXG4gICAgZXhwZWN0KGVzY2FwZU1keEFuZ2xlcyhpbnB1dCkpLnRvQmUoXG4gICAgICBcIlNlZSBodHRwczovL2ZhaXJzcGVjLm9yZy9wcm9maWxlcy9sYXRlc3QvJmx0O25hbWU+Lmpzb24sIG9rLlwiLFxuICAgIClcbiAgfSlcblxuICBpdChcImxlYXZlcyBpbmxpbmUgY29kZSBzcGFucyBhbG9uZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGVzY2FwZU1keEFuZ2xlcyhcInVzZSBgLS1yZXNvdXJjZSA8bmFtZT5gIGhlcmVcIikpLnRvQmUoXG4gICAgICBcInVzZSBgLS1yZXNvdXJjZSA8bmFtZT5gIGhlcmVcIixcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJsZWF2ZXMgZmVuY2VkIGNvZGUgYmxvY2tzIGFsb25lXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiYGBgc2hcXG5mb28gPGJhcj5cXG5gYGBcIlxuICAgIGV4cGVjdChlc2NhcGVNZHhBbmdsZXMoaW5wdXQpKS50b0JlKGlucHV0KVxuICB9KVxufSlcblxuZnVuY3Rpb24gbWFrZUNvbmZpZyhyb290OiBzdHJpbmcsIHNlY3Rpb25zOiBDaGFuZ2Vsb2dTZWN0aW9uW10pIHtcbiAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgcmV0dXJuIHsgLi4uQ29uZmlnLnBhcnNlKHsgcm9vdCwgY29uZmlnUGF0aCwgc2VjdGlvbnMgfSksIGJhc2U6IHVuZGVmaW5lZCB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ2hhbmdlbG9nKHJvb3Q6IHN0cmluZywgZGlyOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICBhd2FpdCBta2Rpcihqb2luKHJvb3QsIGRpciksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKHJvb3QsIGRpciwgXCJDSEFOR0VMT0cubWRcIiksIGJvZHksIFwidXRmLThcIilcbn1cbiJdfQ==
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL2NoYW5nZWxvZy9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0sWUFBWSxDQUFBO0FBRW5CLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRSxDQUMxRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7UUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sUUFBUSxHQUFxQjtZQUNqQyxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVztZQUNsQixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUUsdUJBQXVCO1lBQy9CLE9B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QUMsQ0FBQyxDQUFDLElBQUksQ0FDMUQsOEJBQThCLENBQy9CLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUU7UUFDekMsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLENBQUE7UUFDckMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLFFBQTRCO0lBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUNuRCxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLElBQVk7SUFDbkUsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXIsIHJlYWRGaWxlLCByZWFkZGlyLCBybSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHRlbXBvcmFyeURpcmVjdG9yeVRhc2sgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgcGFydGl0aW9uQnlTZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbmZpZy50c1wiXG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ1NlY3Rpb24gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NlY3Rpb24udHNcIlxuaW1wb3J0IHsgY2FjaGVEaXJGb3IgfSBmcm9tIFwiLi4vLi4vaGVscGVycy90YXJnZXQtZGlyLnRzXCJcbmltcG9ydCB7XG4gIGJ1aWxkQ2hhbmdlbG9nLFxuICBjYWNoZUluY2x1ZGVHbG9iLFxuICBjaGFuZ2Vsb2dDYWNoZURpcixcbiAgZXNjYXBlTWR4QW5nbGVzLFxuICBzcGxpdExvY2FsQ2hhbmdlbG9nLFxufSBmcm9tIFwiLi9idWlsZC50c1wiXG5cbmRlc2NyaWJlKFwiYnVpbGRDaGFuZ2Vsb2dcIiwgKCkgPT4ge1xuICBpdChcImtlZXBzIHNldmVyYWwgY2hhbmdlbG9nIHNlY3Rpb25zIGFwYXJ0IHdoZW4gdGhleSBzaGFyZSBhIHZlcnNpb25cIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgICAgIGNvbnN0IHN0YW5kYXJkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJzdGFuZGFyZC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgdmVyc2lvbjogdHJ1ZSxcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgcHl0aG9uOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwicHl0aG9uL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICB2ZXJzaW9uOiB0cnVlLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSBtYWtlQ29uZmlnKHJvb3QsIFtzdGFuZGFyZCwgcHl0aG9uXSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2coXG4gICAgICAgIHJvb3QsXG4gICAgICAgIFwic3RhbmRhcmRcIixcbiAgICAgICAgXCIjIyAwLjIuMFxcblxcblN0YW5kYXJkIHR3by5cXG5cXG4jIyAwLjEuMFxcblxcblN0YW5kYXJkIG9uZS5cXG5cIixcbiAgICAgIClcbiAgICAgIGF3YWl0IHdyaXRlQ2hhbmdlbG9nKHJvb3QsIFwicHl0aG9uXCIsIFwiIyMgMC4yLjBcXG5cXG5QeXRob24gdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhzdGFuZGFyZCwgY29uZmlnKVxuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhweXRob24sIGNvbmZpZylcblxuICAgICAgICBjb25zdCBzdGFuZGFyZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHN0YW5kYXJkLCBjb25maWcpXG4gICAgICAgIGNvbnN0IHB5dGhvbkRpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKHB5dGhvbiwgY29uZmlnKVxuICAgICAgICBjb25zdCBjYWNoZVJvb3QgPSBqb2luKGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLCBcImNoYW5nZWxvZ1wiKVxuICAgICAgICBleHBlY3QoZGlybmFtZShzdGFuZGFyZERpcikpLnRvQmUoY2FjaGVSb290KVxuICAgICAgICBleHBlY3QoZGlybmFtZShweXRob25EaXIpKS50b0JlKGNhY2hlUm9vdClcbiAgICAgICAgZXhwZWN0KGJhc2VuYW1lKHN0YW5kYXJkRGlyKSkudG9NYXRjaCgvXmNoYW5nZWxvZy1bMC05YS1mXXs4fSQvKVxuICAgICAgICBleHBlY3QoYmFzZW5hbWUocHl0aG9uRGlyKSkudG9NYXRjaCgvXnB5dGhvbi1jaGFuZ2Vsb2ctWzAtOWEtZl17OH0kLylcbiAgICAgICAgZXhwZWN0KGNhY2hlSW5jbHVkZUdsb2IocHl0aG9uLCBjb25maWcpKS50b0JlKGpvaW4ocHl0aG9uRGlyLCBcIioubWRcIikpXG5cbiAgICAgICAgZXhwZWN0KChhd2FpdCByZWFkZGlyKHN0YW5kYXJkRGlyKSkuc29ydCgpKS50b0VxdWFsKFtcIjAtMS0wLm1kXCIsIFwiMC0yLTAubWRcIl0pXG4gICAgICAgIGV4cGVjdChhd2FpdCByZWFkZGlyKHB5dGhvbkRpcikpLnRvRXF1YWwoW1wiMC0yLTAubWRcIl0pXG5cbiAgICAgICAgY29uc3Qgc3RhbmRhcmRFbnRyeSA9IGF3YWl0IHJlYWRGaWxlKGpvaW4oc3RhbmRhcmREaXIsIFwiMC0yLTAubWRcIiksIFwidXRmLThcIilcbiAgICAgICAgY29uc3QgcHl0aG9uRW50cnkgPSBhd2FpdCByZWFkRmlsZShqb2luKHB5dGhvbkRpciwgXCIwLTItMC5tZFwiKSwgXCJ1dGYtOFwiKVxuICAgICAgICBleHBlY3Qoc3RhbmRhcmRFbnRyeSkudG9Db250YWluKFwicGF0aDogL2NoYW5nZWxvZy8wLTItMC9cIilcbiAgICAgICAgZXhwZWN0KHN0YW5kYXJkRW50cnkpLnRvQ29udGFpbihcIlN0YW5kYXJkIHR3by5cIilcbiAgICAgICAgZXhwZWN0KHB5dGhvbkVudHJ5KS50b0NvbnRhaW4oXCJwYXRoOiAvcHl0aG9uL2NoYW5nZWxvZy8wLTItMC9cIilcbiAgICAgICAgZXhwZWN0KHB5dGhvbkVudHJ5KS50b0NvbnRhaW4oXCJQeXRob24gdHdvLlwiKVxuXG4gICAgICAgIGNvbnN0IG9sZGVyRW50cnkgPSBhd2FpdCByZWFkRmlsZShqb2luKHN0YW5kYXJkRGlyLCBcIjAtMS0wLm1kXCIpLCBcInV0Zi04XCIpXG4gICAgICAgIGNvbnN0IGFydGljbGVzID0gW3N0YW5kYXJkRW50cnksIG9sZGVyRW50cnksIHB5dGhvbkVudHJ5XS5tYXAobWFya2Rvd24gPT4gKHtcbiAgICAgICAgICBwYXRoOiBtYXJrZG93bi5tYXRjaCgvXnBhdGg6ICguKykkL20pPy5bMV0gPz8gXCJcIixcbiAgICAgICAgfSkpXG4gICAgICAgIGNvbnN0IGJ1Y2tldHMgPSBwYXJ0aXRpb25CeVNlY3Rpb24oYXJ0aWNsZXMsIFtzdGFuZGFyZCwgcHl0aG9uXSlcbiAgICAgICAgZXhwZWN0KGJ1Y2tldHMuZ2V0KFwiL2NoYW5nZWxvZy9cIik/Lm1hcChhID0+IGEucGF0aCkpLnRvRXF1YWwoW1xuICAgICAgICAgIFwiL2NoYW5nZWxvZy8wLTItMC9cIixcbiAgICAgICAgICBcIi9jaGFuZ2Vsb2cvMC0xLTAvXCIsXG4gICAgICAgIF0pXG4gICAgICAgIGV4cGVjdChidWNrZXRzLmdldChcIi9weXRob24vY2hhbmdlbG9nL1wiKT8ubWFwKGEgPT4gYS5wYXRoKSkudG9FcXVhbChbXG4gICAgICAgICAgXCIvcHl0aG9uL2NoYW5nZWxvZy8wLTItMC9cIixcbiAgICAgICAgXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHJtKGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KSlcblxuICBpdChcImNsZWFucyBvbmx5IGl0cyBvd24gY2FjaGUgZGlyZWN0b3J5IG9uIHJlYnVpbGRcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJsaXZlbWFyay5jb25maWcudHNcIilcbiAgICAgIGNvbnN0IHN0YW5kYXJkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9jaGFuZ2Vsb2cvXCIsXG4gICAgICAgIHNvdXJjZTogXCJzdGFuZGFyZC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgcHl0aG9uOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwicHl0aG9uL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSBtYWtlQ29uZmlnKHJvb3QsIFtzdGFuZGFyZCwgcHl0aG9uXSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJzdGFuZGFyZFwiLCBcIiMjIDAuMi4wXFxuXFxuU3RhbmRhcmQgdHdvLlxcblwiKVxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJweXRob25cIiwgXCIjIyAwLjMuMFxcblxcblB5dGhvbiB0aHJlZS5cXG5cIilcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coc3RhbmRhcmQsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2cocHl0aG9uLCBjb25maWcpXG4gICAgICAgIGF3YWl0IHdyaXRlQ2hhbmdlbG9nKHJvb3QsIFwic3RhbmRhcmRcIiwgXCIjIyAwLjQuMFxcblxcblN0YW5kYXJkIGZvdXIuXFxuXCIpXG4gICAgICAgIGF3YWl0IGJ1aWxkQ2hhbmdlbG9nKHN0YW5kYXJkLCBjb25maWcpXG5cbiAgICAgICAgZXhwZWN0KGF3YWl0IHJlYWRkaXIoY2hhbmdlbG9nQ2FjaGVEaXIoc3RhbmRhcmQsIGNvbmZpZykpKS50b0VxdWFsKFtcIjAtNC0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihjaGFuZ2Vsb2dDYWNoZURpcihweXRob24sIGNvbmZpZykpKS50b0VxdWFsKFtcIjAtMy0wLm1kXCJdKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgcm0oY2FjaGVEaXJGb3IoY29uZmlnUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH0pKVxuXG4gIGl0KFwia2VlcHMgc2VjdGlvbnMgYXBhcnQgd2hlbiB0aGVpciBwcmVmaXhlcyBzbHVnaWZ5IHRvIHRoZSBzYW1lIGtleVwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICAgICAgY29uc3QgbmVzdGVkOiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24vY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwibmVzdGVkL0NIQU5HRUxPRy5tZFwiLFxuICAgICAgICBwb3NpdGlvbjogXCJzaWRlYmFyXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBmbGF0OiBDaGFuZ2Vsb2dTZWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBcImNoYW5nZWxvZ1wiLFxuICAgICAgICB0aXRsZTogXCJDaGFuZ2Vsb2dcIixcbiAgICAgICAgcHJlZml4OiBcIi9weXRob24tY2hhbmdlbG9nL1wiLFxuICAgICAgICBzb3VyY2U6IFwiZmxhdC9DSEFOR0VMT0cubWRcIixcbiAgICAgICAgcG9zaXRpb246IFwic2lkZWJhclwiLFxuICAgICAgfVxuICAgICAgY29uc3QgY29uZmlnID0gbWFrZUNvbmZpZyhyb290LCBbbmVzdGVkLCBmbGF0XSlcblxuICAgICAgYXdhaXQgd3JpdGVDaGFuZ2Vsb2cocm9vdCwgXCJuZXN0ZWRcIiwgXCIjIyAwLjEuMFxcblxcbk5lc3RlZCBvbmUuXFxuXCIpXG4gICAgICBhd2FpdCB3cml0ZUNoYW5nZWxvZyhyb290LCBcImZsYXRcIiwgXCIjIyAwLjIuMFxcblxcbkZsYXQgdHdvLlxcblwiKVxuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBidWlsZENoYW5nZWxvZyhuZXN0ZWQsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgYnVpbGRDaGFuZ2Vsb2coZmxhdCwgY29uZmlnKVxuXG4gICAgICAgIGNvbnN0IG5lc3RlZERpciA9IGNoYW5nZWxvZ0NhY2hlRGlyKG5lc3RlZCwgY29uZmlnKVxuICAgICAgICBjb25zdCBmbGF0RGlyID0gY2hhbmdlbG9nQ2FjaGVEaXIoZmxhdCwgY29uZmlnKVxuICAgICAgICBleHBlY3QobmVzdGVkRGlyKS5ub3QudG9CZShmbGF0RGlyKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihuZXN0ZWREaXIpKS50b0VxdWFsKFtcIjAtMS0wLm1kXCJdKVxuICAgICAgICBleHBlY3QoYXdhaXQgcmVhZGRpcihmbGF0RGlyKSkudG9FcXVhbChbXCIwLTItMC5tZFwiXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IHJtKGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KSlcbn0pXG5cbmRlc2NyaWJlKFwic3BsaXRMb2NhbENoYW5nZWxvZ1wiLCAoKSA9PiB7XG4gIGl0KFwic3BsaXRzIGJ5IGgyIGhlYWRpbmdzXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IGAjIENoYW5nZWxvZ1xuXG4jIyBbMC4yLjBdIC0gMjAyNi0wNC0xNVxuXG4jIyMgQWRkZWRcblxuLSBGb29cblxuIyMgWzAuMS4wXSAtIDIwMjYtMDQtMTBcblxuSW5pdGlhbCByZWxlYXNlLlxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzKS50b0hhdmVMZW5ndGgoMilcbiAgICBleHBlY3QoZW50cmllc1swXT8udGl0bGUpLnRvQmUoXCIwLjIuMFwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5kYXRlKS50b0JlKFwiMjAyNi0wNC0xNVwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5zbHVnKS50b0JlKFwiMC0yLTBcIilcbiAgICBleHBlY3QoZW50cmllc1sxXT8udGl0bGUpLnRvQmUoXCIwLjEuMFwiKVxuICAgIGV4cGVjdChlbnRyaWVzWzFdPy5kYXRlKS50b0JlKFwiMjAyNi0wNC0xMFwiKVxuICB9KVxuXG4gIGl0KFwicHJlc2VydmVzIGgzIGhlYWRpbmcgc3RydWN0dXJlIGluIGJvZHlcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gYCMjIDEuMC4wXG5cbiMjIyBBZGRlZFxuXG4tIFRoaW5nIG9uZVxuYFxuICAgIGNvbnN0IGVudHJpZXMgPSBzcGxpdExvY2FsQ2hhbmdlbG9nKGlucHV0KVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy5ib2R5KS50b0NvbnRhaW4oXCIjIyMgQWRkZWRcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uYm9keSkudG9Db250YWluKFwiLSBUaGluZyBvbmVcIilcbiAgfSlcblxuICBpdChcImlnbm9yZXMgIyMgaW5zaWRlIGZlbmNlZCBjb2RlIGJsb2Nrc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBgIyMgMS4wLjBcblxuU29tZSBwcm9zZS5cblxuXFxgXFxgXFxgbWRcbiMjIE5vdCBhIHJlYWwgdmVyc2lvbiBoZWFkaW5nXG5cXGBcXGBcXGBcblxuIyMgMC45LjBcblxuT2xkZXIuXG5gXG4gICAgY29uc3QgZW50cmllcyA9IHNwbGl0TG9jYWxDaGFuZ2Vsb2coaW5wdXQpXG4gICAgZXhwZWN0KGVudHJpZXMpLnRvSGF2ZUxlbmd0aCgyKVxuICAgIGV4cGVjdChlbnRyaWVzWzBdPy50aXRsZSkudG9CZShcIjEuMC4wXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LmJvZHkpLnRvQ29udGFpbihcIk5vdCBhIHJlYWwgdmVyc2lvbiBoZWFkaW5nXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMV0/LnRpdGxlKS50b0JlKFwiMC45LjBcIilcbiAgfSlcblxuICBpdChcImhhbmRsZXMgYmFyZSB2ZXJzaW9uIGhlYWRpbmdzIHdpdGhvdXQgYnJhY2tldHMgb3IgZGF0ZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBgIyMgdjEuMi4zXG5cblJlbGVhc2Ugbm90ZXMuXG5gXG4gICAgY29uc3QgZW50cmllcyA9IHNwbGl0TG9jYWxDaGFuZ2Vsb2coaW5wdXQpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LnRpdGxlKS50b0JlKFwidjEuMi4zXCIpXG4gICAgZXhwZWN0KGVudHJpZXNbMF0/LnNsdWcpLnRvQmUoXCJ2MS0yLTNcIilcbiAgICBleHBlY3QoZW50cmllc1swXT8uZGF0ZSkudG9CZVVuZGVmaW5lZCgpXG4gIH0pXG59KVxuXG5kZXNjcmliZShcImVzY2FwZU1keEFuZ2xlc1wiLCAoKSA9PiB7XG4gIGl0KFwiZXNjYXBlcyBhIGJhcmUgYW5nbGUgcGxhY2Vob2xkZXIgYXMgYW4gSFRNTCBlbnRpdHlcIiwgKCkgPT4ge1xuICAgIC8vIGBcXDxgIGlzIGhvbm91cmVkIGJ5IHJlbWFyayBidXQgTk9UIGJ5IE1EWCdzIEpTWC1hd2FyZSBwYXJzZXIsIHdoaWNoIHN0aWxsXG4gICAgLy8gcmVhZHMgYFxcPG5hbWU+YCBhcyBhbiB1bmNsb3NlZCB0YWcuIE9ubHkgdGhlIGVudGl0eSBzdXJ2aXZlcyBib3RoLlxuICAgIGV4cGVjdChlc2NhcGVNZHhBbmdsZXMoXCJhIDxuYW1lPiBiXCIpKS50b0JlKFwiYSAmbHQ7bmFtZT4gYlwiKVxuICB9KVxuXG4gIGl0KFwiZXNjYXBlcyBhIHBsYWNlaG9sZGVyIHRoYXQgZm9sbG93cyBhIGJhcmUgVVJMXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IFwiU2VlIGh0dHBzOi8vZmFpcnNwZWMub3JnL3Byb2ZpbGVzL2xhdGVzdC88bmFtZT4uanNvbiwgb2suXCJcbiAgICBleHBlY3QoZXNjYXBlTWR4QW5nbGVzKGlucHV0KSkudG9CZShcbiAgICAgIFwiU2VlIGh0dHBzOi8vZmFpcnNwZWMub3JnL3Byb2ZpbGVzL2xhdGVzdC8mbHQ7bmFtZT4uanNvbiwgb2suXCIsXG4gICAgKVxuICB9KVxuXG4gIGl0KFwibGVhdmVzIGlubGluZSBjb2RlIHNwYW5zIGFsb25lXCIsICgpID0+IHtcbiAgICBleHBlY3QoZXNjYXBlTWR4QW5nbGVzKFwidXNlIGAtLXJlc291cmNlIDxuYW1lPmAgaGVyZVwiKSkudG9CZShcbiAgICAgIFwidXNlIGAtLXJlc291cmNlIDxuYW1lPmAgaGVyZVwiLFxuICAgIClcbiAgfSlcblxuICBpdChcImxlYXZlcyBmZW5jZWQgY29kZSBibG9ja3MgYWxvbmVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gXCJgYGBzaFxcbmZvbyA8YmFyPlxcbmBgYFwiXG4gICAgZXhwZWN0KGVzY2FwZU1keEFuZ2xlcyhpbnB1dCkpLnRvQmUoaW5wdXQpXG4gIH0pXG59KVxuXG5mdW5jdGlvbiBtYWtlQ29uZmlnKHJvb3Q6IHN0cmluZywgc2VjdGlvbnM6IENoYW5nZWxvZ1NlY3Rpb25bXSkge1xuICBjb25zdCBjb25maWdQYXRoID0gam9pbihyb290LCBcImxpdmVtYXJrLmNvbmZpZy50c1wiKVxuICByZXR1cm4geyAuLi5Db25maWcucGFyc2UoeyByb290LCBjb25maWdQYXRoLCBzZWN0aW9ucyB9KSwgYmFzZTogdW5kZWZpbmVkIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVDaGFuZ2Vsb2cocm9vdDogc3RyaW5nLCBkaXI6IHN0cmluZywgYm9keTogc3RyaW5nKSB7XG4gIGF3YWl0IG1rZGlyKGpvaW4ocm9vdCwgZGlyKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgYXdhaXQgd3JpdGVGaWxlKGpvaW4ocm9vdCwgZGlyLCBcIkNIQU5HRUxPRy5tZFwiKSwgYm9keSwgXCJ1dGYtOFwiKVxufVxuIl19
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Synthesize the project's Vite mount
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Synthesize the project's Vite mount — `.livemark/.serve/` for the dev server,
|
|
3
|
+
* `.livemark/.build/` for a production build or preview: livemark's `source/` with the
|
|
4
|
+
* project's `.livemark/` escapes copied over it, plus a `node_modules` link to livemark's
|
|
5
|
+
* dependencies. Escapable folders are rebuilt on every run, so a removed escape never
|
|
6
|
+
* keeps rendering. Returns the target dir.
|
|
6
7
|
*/
|
|
7
8
|
export declare function buildTarget(props: {
|
|
8
9
|
configPath: string;
|
|
9
10
|
sourceDir: string;
|
|
11
|
+
command?: TargetCommand;
|
|
10
12
|
}): string;
|
|
13
|
+
/** Which mount a run uses: the dev server's, or the production build's. */
|
|
14
|
+
export type TargetCommand = "serve" | "build";
|
|
11
15
|
/** Locate the project's target dir without building it. */
|
|
12
|
-
export declare function targetDirFor(configPath: string): string;
|
|
16
|
+
export declare function targetDirFor(configPath: string, command?: TargetCommand): string;
|
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import { cpSync, existsSync, mkdirSync, readlinkSync, rmSync, symlinkSync } from "node:fs";
|
|
1
|
+
import { cpSync, existsSync, mkdirSync, readlinkSync, rmSync, symlinkSync, writeFileSync, } from "node:fs";
|
|
2
2
|
import { basename, dirname, join, relative, resolve } from "node:path";
|
|
3
3
|
import { resolveDependencyDir } from "../../helpers/dependency-dir.js";
|
|
4
|
+
import { removeTargetDir } from "../../helpers/target-dir.js";
|
|
4
5
|
import { ESCAPABLE_FILES, ESCAPABLE_FOLDERS } from "../../settings.js";
|
|
5
6
|
/**
|
|
6
|
-
* Synthesize the project's Vite mount
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Synthesize the project's Vite mount — `.livemark/.serve/` for the dev server,
|
|
8
|
+
* `.livemark/.build/` for a production build or preview: livemark's `source/` with the
|
|
9
|
+
* project's `.livemark/` escapes copied over it, plus a `node_modules` link to livemark's
|
|
10
|
+
* dependencies. Escapable folders are rebuilt on every run, so a removed escape never
|
|
11
|
+
* keeps rendering. Returns the target dir.
|
|
10
12
|
*/
|
|
11
13
|
export function buildTarget(props) {
|
|
12
|
-
const targetDir = targetDirFor(props.configPath);
|
|
14
|
+
const targetDir = targetDirFor(props.configPath, props.command);
|
|
13
15
|
const overridesRoot = dirname(targetDir);
|
|
16
|
+
// `.target/` was the mount before `.serve/` and `.build/`; an upgrade must not keep it.
|
|
17
|
+
removeTargetDir(join(overridesRoot, ".target"));
|
|
14
18
|
mkdirSync(targetDir, { recursive: true });
|
|
19
|
+
writeFileSync(join(targetDir, ".gitignore"), "*\n");
|
|
15
20
|
cpSync(props.sourceDir, targetDir, {
|
|
16
21
|
recursive: true,
|
|
17
22
|
filter: src => isPackageFile(src) && !isEscapableFolder(src, props.sourceDir),
|
|
@@ -35,8 +40,8 @@ export function buildTarget(props) {
|
|
|
35
40
|
return targetDir;
|
|
36
41
|
}
|
|
37
42
|
/** Locate the project's target dir without building it. */
|
|
38
|
-
export function targetDirFor(configPath) {
|
|
39
|
-
return join(dirname(configPath), ".livemark",
|
|
43
|
+
export function targetDirFor(configPath, command = "serve") {
|
|
44
|
+
return join(dirname(configPath), ".livemark", `.${command}`);
|
|
40
45
|
}
|
|
41
46
|
function isPackageFile(src) {
|
|
42
47
|
return !/\.unit\.tsx?$/.test(src) && basename(src) !== "fixtures";
|
|
@@ -60,4 +65,4 @@ function readLink(path) {
|
|
|
60
65
|
return undefined;
|
|
61
66
|
}
|
|
62
67
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy90YXJnZXQvYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNYLGFBQWEsR0FDZCxNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRFOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsS0FJM0I7SUFDQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDL0QsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3hDLHdGQUF3RjtJQUN4RixlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQy9DLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUN6QyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUVuRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUU7UUFDakMsU0FBUyxFQUFFLElBQUk7UUFDZixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztLQUM5RSxDQUFDLENBQUE7SUFDRixLQUFLLE1BQU0sTUFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNwQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUM1QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDcEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDM0MsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNyRSxDQUFDO0lBQ0QsS0FBSyxNQUFNLElBQUksSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3pDLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDbEUsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUtELDJEQUEyRDtBQUMzRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWtCLEVBQUUsT0FBTyxHQUFrQixPQUFPO0lBQy9FLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0FBQzlELENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxHQUFXO0lBQ2hDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxVQUFVLENBQUE7QUFDbkUsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsR0FBVyxFQUFFLFNBQWlCO0lBQ3ZELE9BQU8saUJBQWlCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUM3RCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLGFBQXFCO0lBQ2hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDNUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUFFLE9BQU07SUFDckQsaUZBQWlGO0lBQ2pGLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM3QixXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUM5QyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUM1QixJQUFJLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3BTeW5jLFxuICBleGlzdHNTeW5jLFxuICBta2RpclN5bmMsXG4gIHJlYWRsaW5rU3luYyxcbiAgcm1TeW5jLFxuICBzeW1saW5rU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSBcIm5vZGU6ZnNcIlxuaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGpvaW4sIHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyByZXNvbHZlRGVwZW5kZW5jeURpciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2RlcGVuZGVuY3ktZGlyLnRzXCJcbmltcG9ydCB7IHJlbW92ZVRhcmdldERpciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3RhcmdldC1kaXIudHNcIlxuaW1wb3J0IHsgRVNDQVBBQkxFX0ZJTEVTLCBFU0NBUEFCTEVfRk9MREVSUyB9IGZyb20gXCIuLi8uLi9zZXR0aW5ncy50c1wiXG5cbi8qKlxuICogU3ludGhlc2l6ZSB0aGUgcHJvamVjdCdzIFZpdGUgbW91bnQg4oCUIGAubGl2ZW1hcmsvLnNlcnZlL2AgZm9yIHRoZSBkZXYgc2VydmVyLFxuICogYC5saXZlbWFyay8uYnVpbGQvYCBmb3IgYSBwcm9kdWN0aW9uIGJ1aWxkIG9yIHByZXZpZXc6IGxpdmVtYXJrJ3MgYHNvdXJjZS9gIHdpdGggdGhlXG4gKiBwcm9qZWN0J3MgYC5saXZlbWFyay9gIGVzY2FwZXMgY29waWVkIG92ZXIgaXQsIHBsdXMgYSBgbm9kZV9tb2R1bGVzYCBsaW5rIHRvIGxpdmVtYXJrJ3NcbiAqIGRlcGVuZGVuY2llcy4gRXNjYXBhYmxlIGZvbGRlcnMgYXJlIHJlYnVpbHQgb24gZXZlcnkgcnVuLCBzbyBhIHJlbW92ZWQgZXNjYXBlIG5ldmVyXG4gKiBrZWVwcyByZW5kZXJpbmcuIFJldHVybnMgdGhlIHRhcmdldCBkaXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRhcmdldChwcm9wczoge1xuICBjb25maWdQYXRoOiBzdHJpbmdcbiAgc291cmNlRGlyOiBzdHJpbmdcbiAgY29tbWFuZD86IFRhcmdldENvbW1hbmRcbn0pIHtcbiAgY29uc3QgdGFyZ2V0RGlyID0gdGFyZ2V0RGlyRm9yKHByb3BzLmNvbmZpZ1BhdGgsIHByb3BzLmNvbW1hbmQpXG4gIGNvbnN0IG92ZXJyaWRlc1Jvb3QgPSBkaXJuYW1lKHRhcmdldERpcilcbiAgLy8gYC50YXJnZXQvYCB3YXMgdGhlIG1vdW50IGJlZm9yZSBgLnNlcnZlL2AgYW5kIGAuYnVpbGQvYDsgYW4gdXBncmFkZSBtdXN0IG5vdCBrZWVwIGl0LlxuICByZW1vdmVUYXJnZXREaXIoam9pbihvdmVycmlkZXNSb290LCBcIi50YXJnZXRcIikpXG4gIG1rZGlyU3luYyh0YXJnZXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHdyaXRlRmlsZVN5bmMoam9pbih0YXJnZXREaXIsIFwiLmdpdGlnbm9yZVwiKSwgXCIqXFxuXCIpXG5cbiAgY3BTeW5jKHByb3BzLnNvdXJjZURpciwgdGFyZ2V0RGlyLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgIGZpbHRlcjogc3JjID0+IGlzUGFja2FnZUZpbGUoc3JjKSAmJiAhaXNFc2NhcGFibGVGb2xkZXIoc3JjLCBwcm9wcy5zb3VyY2VEaXIpLFxuICB9KVxuICBmb3IgKGNvbnN0IGZvbGRlciBvZiBFU0NBUEFCTEVfRk9MREVSUykge1xuICAgIGNvbnN0IGRlc3QgPSBqb2luKHRhcmdldERpciwgZm9sZGVyKVxuICAgIHJtU3luYyhkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSlcbiAgICBjb25zdCBzb3VyY2UgPSBqb2luKHByb3BzLnNvdXJjZURpciwgZm9sZGVyKVxuICAgIGlmIChleGlzdHNTeW5jKHNvdXJjZSkpXG4gICAgICBjcFN5bmMoc291cmNlLCBkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZmlsdGVyOiBpc1BhY2thZ2VGaWxlIH0pXG4gICAgY29uc3Qgb3ZlcmxheSA9IGpvaW4ob3ZlcnJpZGVzUm9vdCwgZm9sZGVyKVxuICAgIGlmIChleGlzdHNTeW5jKG92ZXJsYXkpKSBjcFN5bmMob3ZlcmxheSwgZGVzdCwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgfVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgRVNDQVBBQkxFX0ZJTEVTKSB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IGpvaW4ob3ZlcnJpZGVzUm9vdCwgZmlsZSlcbiAgICBpZiAoZXhpc3RzU3luYyhvdmVybGF5KSkgY3BTeW5jKG92ZXJsYXksIGpvaW4odGFyZ2V0RGlyLCBmaWxlKSlcbiAgfVxuXG4gIGxpbmtEZXBlbmRlbmNpZXModGFyZ2V0RGlyLCByZXNvbHZlRGVwZW5kZW5jeURpcihwcm9wcy5zb3VyY2VEaXIpKVxuICByZXR1cm4gdGFyZ2V0RGlyXG59XG5cbi8qKiBXaGljaCBtb3VudCBhIHJ1biB1c2VzOiB0aGUgZGV2IHNlcnZlcidzLCBvciB0aGUgcHJvZHVjdGlvbiBidWlsZCdzLiAqL1xuZXhwb3J0IHR5cGUgVGFyZ2V0Q29tbWFuZCA9IFwic2VydmVcIiB8IFwiYnVpbGRcIlxuXG4vKiogTG9jYXRlIHRoZSBwcm9qZWN0J3MgdGFyZ2V0IGRpciB3aXRob3V0IGJ1aWxkaW5nIGl0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldERpckZvcihjb25maWdQYXRoOiBzdHJpbmcsIGNvbW1hbmQ6IFRhcmdldENvbW1hbmQgPSBcInNlcnZlXCIpIHtcbiAgcmV0dXJuIGpvaW4oZGlybmFtZShjb25maWdQYXRoKSwgXCIubGl2ZW1hcmtcIiwgYC4ke2NvbW1hbmR9YClcbn1cblxuZnVuY3Rpb24gaXNQYWNrYWdlRmlsZShzcmM6IHN0cmluZykge1xuICByZXR1cm4gIS9cXC51bml0XFwudHN4PyQvLnRlc3Qoc3JjKSAmJiBiYXNlbmFtZShzcmMpICE9PSBcImZpeHR1cmVzXCJcbn1cblxuZnVuY3Rpb24gaXNFc2NhcGFibGVGb2xkZXIoc3JjOiBzdHJpbmcsIHNvdXJjZURpcjogc3RyaW5nKSB7XG4gIHJldHVybiBFU0NBUEFCTEVfRk9MREVSUy5pbmNsdWRlcyhyZWxhdGl2ZShzb3VyY2VEaXIsIHNyYykpXG59XG5cbmZ1bmN0aW9uIGxpbmtEZXBlbmRlbmNpZXModGFyZ2V0RGlyOiBzdHJpbmcsIGRlcGVuZGVuY3lEaXI6IHN0cmluZykge1xuICBjb25zdCBsaW5rID0gam9pbih0YXJnZXREaXIsIFwibm9kZV9tb2R1bGVzXCIpXG4gIGlmIChyZWFkTGluayhsaW5rKSA9PT0gcmVzb2x2ZShkZXBlbmRlbmN5RGlyKSkgcmV0dXJuXG4gIC8vIE5vdCByZWN1cnNpdmU6IGEgc3RhbGUgbGluayBtdXN0IGdvIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHN0b3JlIGl0IHBvaW50cyBpbnRvLlxuICBybVN5bmMobGluaywgeyBmb3JjZTogdHJ1ZSB9KVxuICBzeW1saW5rU3luYyhkZXBlbmRlbmN5RGlyLCBsaW5rLCBcImp1bmN0aW9uXCIpXG59XG5cbmZ1bmN0aW9uIHJlYWRMaW5rKHBhdGg6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiByZXNvbHZlKGRpcm5hbWUocGF0aCksIHJlYWRsaW5rU3luYyhwYXRoKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG4iXX0=
|
|
@@ -10,13 +10,28 @@ describe("buildTarget", () => {
|
|
|
10
10
|
await put(join(root, "project/.livemark/components/Footer.tsx"), "escaped");
|
|
11
11
|
await put(join(root, "project/.livemark/head.ts"), "escaped head");
|
|
12
12
|
const targetDir = buildTarget({ configPath, sourceDir });
|
|
13
|
-
expect(targetDir).toBe(join(root, "project/.livemark/.
|
|
13
|
+
expect(targetDir).toBe(join(root, "project/.livemark/.serve"));
|
|
14
14
|
expect(read(targetDir, "components/Footer.tsx")).toBe("escaped");
|
|
15
15
|
expect(read(targetDir, "components/Header.tsx")).toBe("default");
|
|
16
16
|
expect(read(targetDir, "head.ts")).toBe("escaped head");
|
|
17
17
|
expect(read(targetDir, "helpers/util.ts")).toBe("util");
|
|
18
18
|
expect(existsSync(join(targetDir, "helpers/util.unit.ts"))).toBe(false);
|
|
19
19
|
}));
|
|
20
|
+
it("mounts a production build apart from the dev server's target", () => temporaryDirectoryTask(async (root) => {
|
|
21
|
+
const { configPath, sourceDir } = await createFixture(root);
|
|
22
|
+
const targetDir = buildTarget({ configPath, sourceDir, command: "build" });
|
|
23
|
+
expect(targetDir).toBe(join(root, "project/.livemark/.build"));
|
|
24
|
+
expect(read(targetDir, "routes/index.tsx")).toBe("index");
|
|
25
|
+
expect(existsSync(targetDirFor(configPath))).toBe(false);
|
|
26
|
+
}));
|
|
27
|
+
it("ignores itself in git and removes the legacy .target mount", () => temporaryDirectoryTask(async (root) => {
|
|
28
|
+
const { configPath, sourceDir } = await createFixture(root);
|
|
29
|
+
const legacyDir = join(root, "project/.livemark/.target");
|
|
30
|
+
await put(join(legacyDir, "routes/index.tsx"), "stale");
|
|
31
|
+
const targetDir = buildTarget({ configPath, sourceDir });
|
|
32
|
+
expect(read(targetDir, ".gitignore")).toBe("*\n");
|
|
33
|
+
expect(existsSync(legacyDir)).toBe(false);
|
|
34
|
+
}));
|
|
20
35
|
it("drops escapes removed since the last run", () => temporaryDirectoryTask(async (root) => {
|
|
21
36
|
const { configPath, sourceDir } = await createFixture(root);
|
|
22
37
|
const overrides = join(root, "project/.livemark");
|
|
@@ -73,4 +88,4 @@ async function put(path, content) {
|
|
|
73
88
|
function read(dir, path) {
|
|
74
89
|
return readFileSync(join(dir, path), "utf-8");
|
|
75
90
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL3RhcmdldC9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV0RCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixFQUFFLENBQUMsMERBQTBELEVBQUUsR0FBRyxFQUFFLENBQ2xFLHNCQUFzQixDQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNsQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNELE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUseUNBQXlDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUMzRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFFbEUsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFeEQsTUFBTSxDQUFD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MUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUM5QyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMvQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDaEMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEdBQVcsRUFBRSxJQUFZO0lBQ3JDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVhZGxpbmtTeW5jLCByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBta2Rpciwgcm0sIHN5bWxpbmssIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHRlbXBvcmFyeURpcmVjdG9yeVRhc2sgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgYnVpbGRUYXJnZXQsIHRhcmdldERpckZvciB9IGZyb20gXCIuL2J1aWxkLnRzXCJcblxuZGVzY3JpYmUoXCJidWlsZFRhcmdldFwiLCAoKSA9PiB7XG4gIGl0KFwiY29waWVzIHRoZSBzb3VyY2UsIG92ZXJsYXlzIGVzY2FwZXMgYW5kIHNraXBzIHVuaXQgdGVzdHNcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImVzY2FwZWRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvaGVhZC50c1wiKSwgXCJlc2NhcGVkIGhlYWRcIilcblxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHRhcmdldERpcikudG9CZShqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvLnRhcmdldFwiKSlcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJjb21wb25lbnRzL0Zvb3Rlci50c3hcIikpLnRvQmUoXCJlc2NhcGVkXCIpXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiY29tcG9uZW50cy9IZWFkZXIudHN4XCIpKS50b0JlKFwiZGVmYXVsdFwiKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImhlYWQudHNcIikpLnRvQmUoXCJlc2NhcGVkIGhlYWRcIilcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJoZWxwZXJzL3V0aWwudHNcIikpLnRvQmUoXCJ1dGlsXCIpXG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHRhcmdldERpciwgXCJoZWxwZXJzL3V0aWwudW5pdC50c1wiKSkpLnRvQmUoZmFsc2UpXG4gICAgfSkpXG5cbiAgaXQoXCJkcm9wcyBlc2NhcGVzIHJlbW92ZWQgc2luY2UgdGhlIGxhc3QgcnVuXCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyByb290ID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0gPSBhd2FpdCBjcmVhdGVGaXh0dXJlKHJvb3QpXG4gICAgICBjb25zdCBvdmVycmlkZXMgPSBqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmtcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKG92ZXJyaWRlcywgXCJjb21wb25lbnRzL0Zvb3Rlci50c3hcIiksIFwiZXNjYXBlZFwiKVxuICAgICAgYXdhaXQgcHV0KGpvaW4ob3ZlcnJpZGVzLCBcInJvdXRlcy9hYm91dC50c3hcIiksIFwiYWJvdXRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKG92ZXJyaWRlcywgXCJoZWFkLnRzXCIpLCBcImVzY2FwZWQgaGVhZFwiKVxuICAgICAgYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgYXdhaXQgcm0oam9pbihvdmVycmlkZXMsIFwiY29tcG9uZW50c1wiKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICAgIGF3YWl0IHJtKGpvaW4ob3ZlcnJpZGVzLCBcInJvdXRlc1wiKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICAgIGF3YWl0IHJtKGpvaW4ob3ZlcnJpZGVzLCBcImhlYWQudHNcIikpXG4gICAgICBjb25zdCB0YXJnZXREaXIgPSBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9KVxuXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiY29tcG9uZW50cy9Gb290ZXIudHN4XCIpKS50b0JlKFwiZGVmYXVsdFwiKVxuICAgICAgZXhwZWN0KGV4aXN0c1N5bmMoam9pbih0YXJnZXREaXIsIFwicm91dGVzL2Fib3V0LnRzeFwiKSkpLnRvQmUoZmFsc2UpXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiaGVhZC50c1wiKSkudG9CZShcImhlYWRcIilcbiAgICB9KSlcblxuICBpdChcImtlZXBzIGdlbmVyYXRlZCBlbnRyaWVzIGJldHdlZW4gcnVuc1wiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9ID0gYXdhaXQgY3JlYXRlRml4dHVyZShyb290KVxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcbiAgICAgIGF3YWl0IHB1dChqb2luKHRhcmdldERpciwgXCJjYWNoZS9jaGFuZ2Vsb2cvZW50cnkubWRcIiksIFwiY2FjaGVkXCIpXG5cbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG5cbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJjYWNoZS9jaGFuZ2Vsb2cvZW50cnkubWRcIikpLnRvQmUoXCJjYWNoZWRcIilcbiAgICB9KSlcblxuICBpdChcImxpbmtzIG5vZGVfbW9kdWxlcyB0byBsaXZlbWFyaydzIGRlcGVuZGVuY2llcyBhbmQgcmVwYWlycyBhIHN0YWxlIGxpbmtcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGNvbnN0IGxpbmsgPSBqb2luKHRhcmdldERpckZvcihjb25maWdQYXRoKSwgXCJub2RlX21vZHVsZXNcIilcbiAgICAgIGNvbnN0IGRlcGVuZGVuY3lEaXIgPSByZWFscGF0aFN5bmMoam9pbihyb290LCBcImxpdmVtYXJrL25vZGVfbW9kdWxlc1wiKSlcblxuICAgICAgYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcbiAgICAgIGV4cGVjdChyZWFkbGlua1N5bmMobGluaykpLnRvQmUoZGVwZW5kZW5jeURpcilcblxuICAgICAgYXdhaXQgcm0obGluaylcbiAgICAgIGF3YWl0IG1rZGlyKGpvaW4ocm9vdCwgXCJlbHNld2hlcmVcIikpXG4gICAgICBhd2FpdCBzeW1saW5rKGpvaW4ocm9vdCwgXCJlbHNld2hlcmVcIiksIGxpbmssIFwianVuY3Rpb25cIilcbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG5cbiAgICAgIGV4cGVjdChyZWFkbGlua1N5bmMobGluaykpLnRvQmUoZGVwZW5kZW5jeURpcilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4ocm9vdCwgXCJlbHNld2hlcmVcIikpKS50b0JlKHRydWUpXG4gICAgfSkpXG59KVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVGaXh0dXJlKHJvb3Q6IHN0cmluZykge1xuICBjb25zdCBzb3VyY2VEaXIgPSBqb2luKHJvb3QsIFwibGl2ZW1hcmsvc291cmNlXCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJjb21wb25lbnRzL0Zvb3Rlci50c3hcIiksIFwiZGVmYXVsdFwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiY29tcG9uZW50cy9IZWFkZXIudHN4XCIpLCBcImRlZmF1bHRcIilcbiAgYXdhaXQgcHV0KGpvaW4oc291cmNlRGlyLCBcInJvdXRlcy9pbmRleC50c3hcIiksIFwiaW5kZXhcIilcbiAgYXdhaXQgcHV0KGpvaW4oc291cmNlRGlyLCBcImhlbHBlcnMvdXRpbC50c1wiKSwgXCJ1dGlsXCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJoZWxwZXJzL3V0aWwudW5pdC50c1wiKSwgXCJ0ZXN0XCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJoZWFkLnRzXCIpLCBcImhlYWRcIilcbiAgYXdhaXQgbWtkaXIoam9pbihyb290LCBcImxpdmVtYXJrL25vZGVfbW9kdWxlc1wiKSlcbiAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocm9vdCwgXCJwcm9qZWN0L2xpdmVtYXJrLmNvbmZpZy50c1wiKVxuICBhd2FpdCBwdXQoY29uZmlnUGF0aCwgXCJleHBvcnQgZGVmYXVsdCB7fVwiKVxuICByZXR1cm4geyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwdXQocGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcbiAgYXdhaXQgbWtkaXIoZGlybmFtZShwYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGNvbnRlbnQpXG59XG5cbmZ1bmN0aW9uIHJlYWQoZGlyOiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gcmVhZEZpbGVTeW5jKGpvaW4oZGlyLCBwYXRoKSwgXCJ1dGYtOFwiKVxufVxuIl19
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQudW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hY3Rpb25zL3RhcmdldC9idWlsZC51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV0RCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixFQUFFLENBQUMsMERBQTBELEVBQUUsR0FBRyxFQUFFLENBQ2xFLHNCQUFzQixDQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNsQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNELE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUseUNBQXlDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUMzRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLDJCQUEyQixDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUE7UUFFbEUsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFeEQsTUFBTSxDQUFD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SUFBSSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQTtJQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLDRCQUE0QixDQUFDLENBQUE7SUFDM0QsTUFBTSxHQUFHLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUE7SUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUM5QyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMvQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDaEMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEdBQVcsRUFBRSxJQUFZO0lBQ3JDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVhZGxpbmtTeW5jLCByZWFscGF0aFN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBta2Rpciwgcm0sIHN5bWxpbmssIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCJcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IHRlbXBvcmFyeURpcmVjdG9yeVRhc2sgfSBmcm9tIFwidGVtcHlcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZS1wbHVzL3Rlc3RcIlxuaW1wb3J0IHsgYnVpbGRUYXJnZXQsIHRhcmdldERpckZvciB9IGZyb20gXCIuL2J1aWxkLnRzXCJcblxuZGVzY3JpYmUoXCJidWlsZFRhcmdldFwiLCAoKSA9PiB7XG4gIGl0KFwiY29waWVzIHRoZSBzb3VyY2UsIG92ZXJsYXlzIGVzY2FwZXMgYW5kIHNraXBzIHVuaXQgdGVzdHNcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImVzY2FwZWRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvaGVhZC50c1wiKSwgXCJlc2NhcGVkIGhlYWRcIilcblxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHRhcmdldERpcikudG9CZShqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvLnNlcnZlXCIpKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImNvbXBvbmVudHMvRm9vdGVyLnRzeFwiKSkudG9CZShcImVzY2FwZWRcIilcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJjb21wb25lbnRzL0hlYWRlci50c3hcIikpLnRvQmUoXCJkZWZhdWx0XCIpXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiaGVhZC50c1wiKSkudG9CZShcImVzY2FwZWQgaGVhZFwiKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImhlbHBlcnMvdXRpbC50c1wiKSkudG9CZShcInV0aWxcIilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcImhlbHBlcnMvdXRpbC51bml0LnRzXCIpKSkudG9CZShmYWxzZSlcbiAgICB9KSlcblxuICBpdChcIm1vdW50cyBhIHByb2R1Y3Rpb24gYnVpbGQgYXBhcnQgZnJvbSB0aGUgZGV2IHNlcnZlcidzIHRhcmdldFwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9ID0gYXdhaXQgY3JlYXRlRml4dHVyZShyb290KVxuXG4gICAgICBjb25zdCB0YXJnZXREaXIgPSBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciwgY29tbWFuZDogXCJidWlsZFwiIH0pXG5cbiAgICAgIGV4cGVjdCh0YXJnZXREaXIpLnRvQmUoam9pbihyb290LCBcInByb2plY3QvLmxpdmVtYXJrLy5idWlsZFwiKSlcbiAgICAgIGV4cGVjdChyZWFkKHRhcmdldERpciwgXCJyb3V0ZXMvaW5kZXgudHN4XCIpKS50b0JlKFwiaW5kZXhcIilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKHRhcmdldERpckZvcihjb25maWdQYXRoKSkpLnRvQmUoZmFsc2UpXG4gICAgfSkpXG5cbiAgaXQoXCJpZ25vcmVzIGl0c2VsZiBpbiBnaXQgYW5kIHJlbW92ZXMgdGhlIGxlZ2FjeSAudGFyZ2V0IG1vdW50XCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyByb290ID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0gPSBhd2FpdCBjcmVhdGVGaXh0dXJlKHJvb3QpXG4gICAgICBjb25zdCBsZWdhY3lEaXIgPSBqb2luKHJvb3QsIFwicHJvamVjdC8ubGl2ZW1hcmsvLnRhcmdldFwiKVxuICAgICAgYXdhaXQgcHV0KGpvaW4obGVnYWN5RGlyLCBcInJvdXRlcy9pbmRleC50c3hcIiksIFwic3RhbGVcIilcblxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcIi5naXRpZ25vcmVcIikpLnRvQmUoXCIqXFxuXCIpXG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhsZWdhY3lEaXIpKS50b0JlKGZhbHNlKVxuICAgIH0pKVxuXG4gIGl0KFwiZHJvcHMgZXNjYXBlcyByZW1vdmVkIHNpbmNlIHRoZSBsYXN0IHJ1blwiLCAoKSA9PlxuICAgIHRlbXBvcmFyeURpcmVjdG9yeVRhc2soYXN5bmMgcm9vdCA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9ID0gYXdhaXQgY3JlYXRlRml4dHVyZShyb290KVxuICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gam9pbihyb290LCBcInByb2plY3QvLmxpdmVtYXJrXCIpXG4gICAgICBhd2FpdCBwdXQoam9pbihvdmVycmlkZXMsIFwiY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImVzY2FwZWRcIilcbiAgICAgIGF3YWl0IHB1dChqb2luKG92ZXJyaWRlcywgXCJyb3V0ZXMvYWJvdXQudHN4XCIpLCBcImFib3V0XCIpXG4gICAgICBhd2FpdCBwdXQoam9pbihvdmVycmlkZXMsIFwiaGVhZC50c1wiKSwgXCJlc2NhcGVkIGhlYWRcIilcbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG5cbiAgICAgIGF3YWl0IHJtKGpvaW4ob3ZlcnJpZGVzLCBcImNvbXBvbmVudHNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBhd2FpdCBybShqb2luKG92ZXJyaWRlcywgXCJyb3V0ZXNcIiksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBhd2FpdCBybShqb2luKG92ZXJyaWRlcywgXCJoZWFkLnRzXCIpKVxuICAgICAgY29uc3QgdGFyZ2V0RGlyID0gYnVpbGRUYXJnZXQoeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSlcblxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImNvbXBvbmVudHMvRm9vdGVyLnRzeFwiKSkudG9CZShcImRlZmF1bHRcIilcbiAgICAgIGV4cGVjdChleGlzdHNTeW5jKGpvaW4odGFyZ2V0RGlyLCBcInJvdXRlcy9hYm91dC50c3hcIikpKS50b0JlKGZhbHNlKVxuICAgICAgZXhwZWN0KHJlYWQodGFyZ2V0RGlyLCBcImhlYWQudHNcIikpLnRvQmUoXCJoZWFkXCIpXG4gICAgfSkpXG5cbiAgaXQoXCJrZWVwcyBnZW5lcmF0ZWQgZW50cmllcyBiZXR3ZWVuIHJ1bnNcIiwgKCkgPT5cbiAgICB0ZW1wb3JhcnlEaXJlY3RvcnlUYXNrKGFzeW5jIHJvb3QgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWdQYXRoLCBzb3VyY2VEaXIgfSA9IGF3YWl0IGNyZWF0ZUZpeHR1cmUocm9vdClcbiAgICAgIGNvbnN0IHRhcmdldERpciA9IGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG4gICAgICBhd2FpdCBwdXQoam9pbih0YXJnZXREaXIsIFwiY2FjaGUvY2hhbmdlbG9nL2VudHJ5Lm1kXCIpLCBcImNhY2hlZFwiKVxuXG4gICAgICBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9KVxuXG4gICAgICBleHBlY3QocmVhZCh0YXJnZXREaXIsIFwiY2FjaGUvY2hhbmdlbG9nL2VudHJ5Lm1kXCIpKS50b0JlKFwiY2FjaGVkXCIpXG4gICAgfSkpXG5cbiAgaXQoXCJsaW5rcyBub2RlX21vZHVsZXMgdG8gbGl2ZW1hcmsncyBkZXBlbmRlbmNpZXMgYW5kIHJlcGFpcnMgYSBzdGFsZSBsaW5rXCIsICgpID0+XG4gICAgdGVtcG9yYXJ5RGlyZWN0b3J5VGFzayhhc3luYyByb290ID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0gPSBhd2FpdCBjcmVhdGVGaXh0dXJlKHJvb3QpXG4gICAgICBjb25zdCBsaW5rID0gam9pbih0YXJnZXREaXJGb3IoY29uZmlnUGF0aCksIFwibm9kZV9tb2R1bGVzXCIpXG4gICAgICBjb25zdCBkZXBlbmRlbmN5RGlyID0gcmVhbHBhdGhTeW5jKGpvaW4ocm9vdCwgXCJsaXZlbWFyay9ub2RlX21vZHVsZXNcIikpXG5cbiAgICAgIGJ1aWxkVGFyZ2V0KHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH0pXG4gICAgICBleHBlY3QocmVhZGxpbmtTeW5jKGxpbmspKS50b0JlKGRlcGVuZGVuY3lEaXIpXG5cbiAgICAgIGF3YWl0IHJtKGxpbmspXG4gICAgICBhd2FpdCBta2Rpcihqb2luKHJvb3QsIFwiZWxzZXdoZXJlXCIpKVxuICAgICAgYXdhaXQgc3ltbGluayhqb2luKHJvb3QsIFwiZWxzZXdoZXJlXCIpLCBsaW5rLCBcImp1bmN0aW9uXCIpXG4gICAgICBidWlsZFRhcmdldCh7IGNvbmZpZ1BhdGgsIHNvdXJjZURpciB9KVxuXG4gICAgICBleHBlY3QocmVhZGxpbmtTeW5jKGxpbmspKS50b0JlKGRlcGVuZGVuY3lEaXIpXG4gICAgICBleHBlY3QoZXhpc3RzU3luYyhqb2luKHJvb3QsIFwiZWxzZXdoZXJlXCIpKSkudG9CZSh0cnVlKVxuICAgIH0pKVxufSlcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRml4dHVyZShyb290OiBzdHJpbmcpIHtcbiAgY29uc3Qgc291cmNlRGlyID0gam9pbihyb290LCBcImxpdmVtYXJrL3NvdXJjZVwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiY29tcG9uZW50cy9Gb290ZXIudHN4XCIpLCBcImRlZmF1bHRcIilcbiAgYXdhaXQgcHV0KGpvaW4oc291cmNlRGlyLCBcImNvbXBvbmVudHMvSGVhZGVyLnRzeFwiKSwgXCJkZWZhdWx0XCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJyb3V0ZXMvaW5kZXgudHN4XCIpLCBcImluZGV4XCIpXG4gIGF3YWl0IHB1dChqb2luKHNvdXJjZURpciwgXCJoZWxwZXJzL3V0aWwudHNcIiksIFwidXRpbFwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiaGVscGVycy91dGlsLnVuaXQudHNcIiksIFwidGVzdFwiKVxuICBhd2FpdCBwdXQoam9pbihzb3VyY2VEaXIsIFwiaGVhZC50c1wiKSwgXCJoZWFkXCIpXG4gIGF3YWl0IG1rZGlyKGpvaW4ocm9vdCwgXCJsaXZlbWFyay9ub2RlX21vZHVsZXNcIikpXG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKHJvb3QsIFwicHJvamVjdC9saXZlbWFyay5jb25maWcudHNcIilcbiAgYXdhaXQgcHV0KGNvbmZpZ1BhdGgsIFwiZXhwb3J0IGRlZmF1bHQge31cIilcbiAgcmV0dXJuIHsgY29uZmlnUGF0aCwgc291cmNlRGlyIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcHV0KHBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XG4gIGF3YWl0IG1rZGlyKGRpcm5hbWUocGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBjb250ZW50KVxufVxuXG5mdW5jdGlvbiByZWFkKGRpcjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHJlYWRGaWxlU3luYyhqb2luKGRpciwgcGF0aCksIFwidXRmLThcIilcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Wipe the project's target
|
|
2
|
+
* Wipe the project's target dirs and cache so the next run rebuilds them from scratch.
|
|
3
3
|
*/
|
|
4
|
-
export declare function clearTarget(configPath: string): string;
|
|
4
|
+
export declare function clearTarget(configPath: string): string[];
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { join } from "node:path";
|
|
1
|
+
import { cacheDirFor, removeTargetDir } from "../../helpers/target-dir.js";
|
|
3
2
|
import { targetDirFor } from "./build.js";
|
|
4
3
|
/**
|
|
5
|
-
* Wipe the project's target
|
|
4
|
+
* Wipe the project's target dirs and cache so the next run rebuilds them from scratch.
|
|
6
5
|
*/
|
|
7
6
|
export function clearTarget(configPath) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
const targetDirs = [
|
|
8
|
+
targetDirFor(configPath, "serve"),
|
|
9
|
+
targetDirFor(configPath, "build"),
|
|
10
|
+
cacheDirFor(configPath),
|
|
11
|
+
];
|
|
12
|
+
for (const targetDir of targetDirs)
|
|
13
|
+
removeTargetDir(targetDir);
|
|
14
|
+
return targetDirs;
|
|
13
15
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYWN0aW9ucy90YXJnZXQvY2xlYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxVQUFrQjtJQUM1QyxNQUFNLFVBQVUsR0FBRztRQUNqQixZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUNqQyxZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUNqQyxXQUFXLENBQUMsVUFBVSxDQUFDO0tBQ3hCLENBQUE7SUFDRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVU7UUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDOUQsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhY2hlRGlyRm9yLCByZW1vdmVUYXJnZXREaXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy90YXJnZXQtZGlyLnRzXCJcbmltcG9ydCB7IHRhcmdldERpckZvciB9IGZyb20gXCIuL2J1aWxkLnRzXCJcblxuLyoqXG4gKiBXaXBlIHRoZSBwcm9qZWN0J3MgdGFyZ2V0IGRpcnMgYW5kIGNhY2hlIHNvIHRoZSBuZXh0IHJ1biByZWJ1aWxkcyB0aGVtIGZyb20gc2NyYXRjaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyVGFyZ2V0KGNvbmZpZ1BhdGg6IHN0cmluZykge1xuICBjb25zdCB0YXJnZXREaXJzID0gW1xuICAgIHRhcmdldERpckZvcihjb25maWdQYXRoLCBcInNlcnZlXCIpLFxuICAgIHRhcmdldERpckZvcihjb25maWdQYXRoLCBcImJ1aWxkXCIpLFxuICAgIGNhY2hlRGlyRm9yKGNvbmZpZ1BhdGgpLFxuICBdXG4gIGZvciAoY29uc3QgdGFyZ2V0RGlyIG9mIHRhcmdldERpcnMpIHJlbW92ZVRhcmdldERpcih0YXJnZXREaXIpXG4gIHJldHVybiB0YXJnZXREaXJzXG59XG4iXX0=
|