livemark 0.10.4 → 0.10.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livemark",
3
- "version": "0.10.4",
3
+ "version": "0.10.5",
4
4
  "description": "Livemark description",
5
5
  "license": "MIT",
6
6
  "author": "Evgeny Karev",
@@ -64,9 +64,7 @@
64
64
  "mermaid": "^11.14.0",
65
65
  "npm-to-yarn": "^3.0.1",
66
66
  "picocolors": "1.1.1",
67
- "react": "19.2.4",
68
67
  "react-day-picker": "9.14.0",
69
- "react-dom": "19.2.4",
70
68
  "react-medium-image-zoom": "^5.4.2",
71
69
  "react-resizable-panels": "4.9.0",
72
70
  "recharts": "3.8.1",
@@ -103,12 +101,18 @@
103
101
  "is-ci": "4.1.0",
104
102
  "lefthook": "2.1.1",
105
103
  "npm-check-updates": "18.0.1",
104
+ "react": "19.2.4",
105
+ "react-dom": "19.2.4",
106
106
  "semantic-release": "24.2.9",
107
107
  "tempy": "3.2.0",
108
108
  "vite-plus": "0.1.19",
109
109
  "vitest-polly": "2.1.0",
110
110
  "wrangler": "4.85.0"
111
111
  },
112
+ "peerDependencies": {
113
+ "react": "^19.0.0",
114
+ "react-dom": "^19.0.0"
115
+ },
112
116
  "engines": {
113
117
  "node": "^24.0.0",
114
118
  "pnpm": "^10.0.0"
@@ -23,12 +23,32 @@ const sourceDir = import.meta.dirname
23
23
  const sourceRelative = relative(config.root, sourceDir)
24
24
  const overridesRoot = join(config.root, ".livemark")
25
25
 
26
- // Seed `.livemark/.gitignore` on first run so Vite's build/cache artifacts
27
- // never get committed by accident.
26
+ // Seed `.livemark/.gitignore` on first run so Vite's build/cache
27
+ // artifacts never get committed by accident. On the same first-run
28
+ // trigger, also seed an `.npmrc` when pnpm is in use: pnpm's strict
29
+ // isolation hides livemark's transitive deps (react, @tanstack/*) from
30
+ // Vite's optimizer, which walks from config.root rather than livemark's
31
+ // subtree. The public-hoist-pattern entries make those deps reachable
32
+ // from the consumer's top-level node_modules. Skip when the consumer
33
+ // already authored their own `.npmrc` — never overwrite user config.
28
34
  const gitignorePath = join(overridesRoot, ".gitignore")
29
35
  if (!existsSync(gitignorePath)) {
30
36
  mkdirSync(overridesRoot, { recursive: true })
31
37
  writeFileSync(gitignorePath, "/build\n/cache\n")
38
+
39
+ const npmrcPath = join(config.root, ".npmrc")
40
+ const usingPnpm = existsSync(join(config.root, "pnpm-lock.yaml"))
41
+ if (usingPnpm && !existsSync(npmrcPath)) {
42
+ writeFileSync(
43
+ npmrcPath,
44
+ "public-hoist-pattern[]=react\n" +
45
+ "public-hoist-pattern[]=react-*\n" +
46
+ "public-hoist-pattern[]=@tanstack/*\n",
47
+ )
48
+ console.log(
49
+ "Created .npmrc with hoist patterns for pnpm. Run `pnpm install` to apply.",
50
+ )
51
+ }
32
52
  }
33
53
 
34
54
  const routeChildren: VirtualRouteNode[] = [route("/$", "$.tsx")]
@@ -51,26 +71,11 @@ export default defineConfig({
51
71
  define: {
52
72
  "import.meta.env.CONFIG": JSON.stringify(WebsiteConfig.parse(config)),
53
73
  },
54
- // dedupe: collapse multiple resolutions of the same React-family package
55
- // to a single physical module, so livemark's source, the consumer's
56
- // .livemark/ overrides, and any transitive package that re-resolves React
57
- // through its own peer-dep chain all share one instance. Without this,
58
- // pnpm's isolated layout can land different importers on different copies
59
- // of React, breaking single-instance invariants (useSyncExternalStore
60
- // returns null, hooks see wrong stores).
74
+ // peerDependencies guarantee one canonical react/react-dom in the pnpm
75
+ // store. dedupe collapses any transitive resolutions to that copy.
61
76
  resolve: {
62
77
  dedupe: ["react", "react-dom"],
63
78
  },
64
- // Force React + ReactDOM external in SSR so they're resolved at Node
65
- // runtime — paired with `dedupe` at build time, both bundle environments
66
- // (server + client) collapse onto the same physical module rather than
67
- // splitting React across multiple inlined chunks. Without this pair,
68
- // pnpm's isolated layout can land react and react-dom on opposite sides
69
- // of the bundle/external boundary and produce React 19's
70
- // ReactSharedInternals.H-is-null failure (useSyncExternalStore throws).
71
- ssr: {
72
- external: ["react", "react-dom"],
73
- },
74
79
  plugins: [
75
80
  livemark({
76
81
  defaultsRoot: sourceDir,
@@ -25,19 +25,19 @@ export declare function currentSection(path: string): {
25
25
  title: string;
26
26
  prefix: string;
27
27
  position: "header" | "sidebar";
28
- type: "article";
28
+ type: "changelog";
29
+ source: string;
30
+ version?: boolean | undefined;
29
31
  } | {
30
32
  icon?: string | undefined;
31
33
  title: string;
32
34
  prefix: string;
33
35
  position: "header" | "sidebar";
34
- type: "blog";
36
+ type: "article";
35
37
  } | {
36
38
  icon?: string | undefined;
37
39
  title: string;
38
40
  prefix: string;
39
41
  position: "header" | "sidebar";
40
- type: "changelog";
41
- source: string;
42
- version?: boolean | undefined;
42
+ type: "blog";
43
43
  } | undefined;
@@ -16,12 +16,26 @@ const config = await loadConfig();
16
16
  const sourceDir = import.meta.dirname;
17
17
  const sourceRelative = relative(config.root, sourceDir);
18
18
  const overridesRoot = join(config.root, ".livemark");
19
- // Seed `.livemark/.gitignore` on first run so Vite's build/cache artifacts
20
- // never get committed by accident.
19
+ // Seed `.livemark/.gitignore` on first run so Vite's build/cache
20
+ // artifacts never get committed by accident. On the same first-run
21
+ // trigger, also seed an `.npmrc` when pnpm is in use: pnpm's strict
22
+ // isolation hides livemark's transitive deps (react, @tanstack/*) from
23
+ // Vite's optimizer, which walks from config.root rather than livemark's
24
+ // subtree. The public-hoist-pattern entries make those deps reachable
25
+ // from the consumer's top-level node_modules. Skip when the consumer
26
+ // already authored their own `.npmrc` — never overwrite user config.
21
27
  const gitignorePath = join(overridesRoot, ".gitignore");
22
28
  if (!existsSync(gitignorePath)) {
23
29
  mkdirSync(overridesRoot, { recursive: true });
24
30
  writeFileSync(gitignorePath, "/build\n/cache\n");
31
+ const npmrcPath = join(config.root, ".npmrc");
32
+ const usingPnpm = existsSync(join(config.root, "pnpm-lock.yaml"));
33
+ if (usingPnpm && !existsSync(npmrcPath)) {
34
+ writeFileSync(npmrcPath, "public-hoist-pattern[]=react\n" +
35
+ "public-hoist-pattern[]=react-*\n" +
36
+ "public-hoist-pattern[]=@tanstack/*\n");
37
+ console.log("Created .npmrc with hoist patterns for pnpm. Run `pnpm install` to apply.");
38
+ }
25
39
  }
26
40
  const routeChildren = [route("/$", "$.tsx")];
27
41
  if (existsSync(join(overridesRoot, "routes"))) {
@@ -40,26 +54,11 @@ export default defineConfig({
40
54
  define: {
41
55
  "import.meta.env.CONFIG": JSON.stringify(WebsiteConfig.parse(config)),
42
56
  },
43
- // dedupe: collapse multiple resolutions of the same React-family package
44
- // to a single physical module, so livemark's source, the consumer's
45
- // .livemark/ overrides, and any transitive package that re-resolves React
46
- // through its own peer-dep chain all share one instance. Without this,
47
- // pnpm's isolated layout can land different importers on different copies
48
- // of React, breaking single-instance invariants (useSyncExternalStore
49
- // returns null, hooks see wrong stores).
57
+ // peerDependencies guarantee one canonical react/react-dom in the pnpm
58
+ // store. dedupe collapses any transitive resolutions to that copy.
50
59
  resolve: {
51
60
  dedupe: ["react", "react-dom"],
52
61
  },
53
- // Force React + ReactDOM external in SSR so they're resolved at Node
54
- // runtime — paired with `dedupe` at build time, both bundle environments
55
- // (server + client) collapse onto the same physical module rather than
56
- // splitting React across multiple inlined chunks. Without this pair,
57
- // pnpm's isolated layout can land react and react-dom on opposite sides
58
- // of the bundle/external boundary and produce React 19's
59
- // ReactSharedInternals.H-is-null failure (useSyncExternalStore throws).
60
- ssr: {
61
- external: ["react", "react-dom"],
62
- },
63
62
  plugins: [
64
63
  livemark({
65
64
  defaultsRoot: sourceDir,
@@ -87,4 +86,4 @@ export default defineConfig({
87
86
  svgr(),
88
87
  ],
89
88
  });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2Uvdml0ZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sa0JBQWtCLE1BQU0sMkJBQTJCLENBQUE7QUFDMUQsT0FBTyxRQUFRLE1BQU0sbUJBQW1CLENBQUE7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxLQUFLLEdBRU4sTUFBTSwrQkFBK0IsQ0FBQTtBQUN0QyxPQUFPLEtBQUssTUFBTSxzQkFBc0IsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25DLE9BQU8sSUFBSSxNQUFNLGtCQUFrQixDQUFBO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUVyRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFBO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUNyQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJ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RUFBRSxhQUFhLENBQUM7YUFDM0Q7U0FDRixDQUFDO1FBQ0YsS0FBSyxFQUFFO1FBQ1AsSUFBSSxFQUFFO0tBQ1A7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiXG5pbXBvcnQgeyBqb2luLCByZWxhdGl2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IGNvbnRlbnRDb2xsZWN0aW9ucyBmcm9tIFwiQGNvbnRlbnQtY29sbGVjdGlvbnMvdml0ZVwiXG5pbXBvcnQgdGFpbHdpbmQgZnJvbSBcIkB0YWlsd2luZGNzcy92aXRlXCJcbmltcG9ydCB7IGRldnRvb2xzIH0gZnJvbSBcIkB0YW5zdGFjay9kZXZ0b29scy12aXRlXCJcbmltcG9ydCB7IHRhbnN0YWNrU3RhcnQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXN0YXJ0L3BsdWdpbi92aXRlXCJcbmltcG9ydCB7XG4gIHBoeXNpY2FsLFxuICByb290Um91dGUsXG4gIHJvdXRlLFxuICB0eXBlIFZpcnR1YWxSb3V0ZU5vZGUsXG59IGZyb20gXCJAdGFuc3RhY2svdmlydHVhbC1maWxlLXJvdXRlc1wiXG5pbXBvcnQgcmVhY3QgZnJvbSBcIkB2aXRlanMvcGx1Z2luLXJlYWN0XCJcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBzdmdyIGZyb20gXCJ2aXRlLXBsdWdpbi1zdmdyXCJcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tIFwiLi9hY3Rpb25zL2NvbmZpZy9sb2FkLnRzXCJcbmltcG9ydCB7IFdlYnNpdGVDb25maWcgfSBmcm9tIFwiLi9tb2RlbHMvY29uZmlnLnRzXCJcbmltcG9ydCB7IE9WRVJSSURFX1NVQkRJUlMgfSBmcm9tIFwiLi9zZXR0aW5ncy50c1wiXG5pbXBvcnQgeyBsaXZlbWFyayB9IGZyb20gXCIuL3BsdWdpbnMvdml0ZS1saXZlbWFyay50c1wiXG5cbmNvbnN0IGNvbmZpZyA9IGF3YWl0IGxvYWRDb25maWcoKVxuY29uc3Qgc291cmNlRGlyID0gaW1wb3J0Lm1ldGEuZGlybmFtZVxuY29uc3Qgc291cmNlUmVsYXRpdmUgPSByZWxhdGl2ZShjb25maWcucm9vdCwgc291cmNlRGlyKVxuY29uc3Qgb3ZlcnJpZGVzUm9vdCA9IGpvaW4oY29uZmlnLnJvb3QsIFwiLmxpdmVtYXJrXCIpXG5cbi8vIFNlZWQgYC5saXZlbWFyay8uZ2l0aWdub3JlYCBvbiBmaXJzdCBydW4gc28gVml0ZSdzIGJ1aWxkL2NhY2hlIGFydGlmYWN0c1xuLy8gbmV2ZXIgZ2V0IGNvbW1pdHRlZCBieSBhY2NpZGVudC5cbmNvbnN0IGdpdGlnbm9yZVBhdGggPSBqb2luKG92ZXJyaWRlc1Jvb3QsIFwiLmdpdGlnbm9yZVwiKVxuaWYgKCFleGlzdHNTeW5jKGdpdGlnbm9yZVBhdGgpKSB7XG4gIG1rZGlyU3luYyhvdmVycmlkZXNSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICB3cml0ZUZpbGVTeW5jKGdpdGlnbm9yZVBhdGgsIFwiL2J1aWxkXFxuL2NhY2hlXFxuXCIpXG59XG5cbmNvbnN0IHJvdXRlQ2hpbGRyZW46IFZpcnR1YWxSb3V0ZU5vZGVbXSA9IFtyb3V0ZShcIi8kXCIsIFwiJC50c3hcIildXG5pZiAoZXhpc3RzU3luYyhqb2luKG92ZXJyaWRlc1Jvb3QsIFwicm91dGVzXCIpKSkge1xuICAvLyBwaHlzaWNhbChkaXIpIHJlc29sdmVzIGBkaXJgIHJlbGF0aXZlIHRvIHRoZSByb3V0ZXMgZGlyZWN0b3J5XG4gIC8vIChgc3JjRGlyZWN0b3J5L3JvdXRlc2ApLiBBIGhhcmRjb2RlZCBcIi4uLy4uLy5saXZlbWFyay9yb3V0ZXNcIiBvbmx5XG4gIC8vIHdvcmtzIHdoZW4gc291cmNlLyBzaXRzIG9uZSBsZXZlbCB1bmRlciBjb25maWcucm9vdCDigJQgaXQgbGFuZHMgYXRcbiAgLy8gbm9kZV9tb2R1bGVzLy5saXZlbWFyay9yb3V0ZXMgb25jZSBsaXZlbWFyayBpcyBpbnN0YWxsZWQuIENvbXB1dGVcbiAgLy8gdGhlIHBhdGggZHluYW1pY2FsbHkgZnJvbSB0aGUgY29uc3VtZXIncyBhY3R1YWwgbGF5b3V0LlxuICBjb25zdCByb3V0ZXNEaXIgPSBqb2luKHNvdXJjZURpciwgXCJyb3V0ZXNcIilcbiAgcm91dGVDaGlsZHJlbi5wdXNoKFxuICAgIHBoeXNpY2FsKHJlbGF0aXZlKHJvdXRlc0Rpciwgam9pbihvdmVycmlkZXNSb290LCBcInJvdXRlc1wiKSkpLFxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG4gIHJvb3Q6IGNvbmZpZy5yb290LFxuICBwdWJsaWNEaXI6IGpvaW4oY29uZmlnLnJvb3QsIFwiLmxpdmVtYXJrXCIsIFwicHVibGljXCIpLFxuICBidWlsZDogeyBvdXREaXI6IFwiLmxpdmVtYXJrL2J1aWxkXCIgfSxcbiAgZGVmaW5lOiB7XG4gICAgXCJpbXBvcnQubWV0YS5lbnYuQ09ORklHXCI6IEpTT04uc3RyaW5naWZ5KFdlYnNpdGVDb25maWcucGFyc2UoY29uZmlnKSksXG4gIH0sXG4gIC8vIGRlZHVwZTogY29sbGFwc2UgbXVsdGlwbGUgcmVzb2x1dGlvbnMgb2YgdGhlIHNhbWUgUmVhY3QtZmFtaWx5IHBhY2thZ2VcbiAgLy8gdG8gYSBzaW5nbGUgcGh5c2ljYWwgbW9kdWxlLCBzbyBsaXZlbWFyaydzIHNvdXJjZSwgdGhlIGNvbnN1bWVyJ3NcbiAgLy8gLmxpdmVtYXJrLyBvdmVycmlkZXMsIGFuZCBhbnkgdHJhbnNpdGl2ZSBwYWNrYWdlIHRoYXQgcmUtcmVzb2x2ZXMgUmVhY3RcbiAgLy8gdGhyb3VnaCBpdHMgb3duIHBlZXItZGVwIGNoYWluIGFsbCBzaGFyZSBvbmUgaW5zdGFuY2UuIFdpdGhvdXQgdGhpcyxcbiAgLy8gcG5wbSdzIGlzb2xhdGVkIGxheW91dCBjYW4gbGFuZCBkaWZmZXJlbnQgaW1wb3J0ZXJzIG9uIGRpZmZlcmVudCBjb3BpZXNcbiAgLy8gb2YgUmVhY3QsIGJyZWFraW5nIHNpbmdsZS1pbnN0YW5jZSBpbnZhcmlhbnRzICh1c2VTeW5jRXh0ZXJuYWxTdG9yZVxuICAvLyByZXR1cm5zIG51bGwsIGhvb2tzIHNlZSB3cm9uZyBzdG9yZXMpLlxuICByZXNvbHZlOiB7XG4gICAgZGVkdXBlOiBbXCJyZWFjdFwiLCBcInJlYWN0LWRvbVwiXSxcbiAgfSxcbiAgLy8gRm9yY2UgUmVhY3QgKyBSZWFjdERPTSBleHRlcm5hbCBpbiBTU1Igc28gdGhleSdyZSByZXNvbHZlZCBhdCBOb2RlXG4gIC8vIHJ1bnRpbWUg4oCUIHBhaXJlZCB3aXRoIGBkZWR1cGVgIGF0IGJ1aWxkIHRpbWUsIGJvdGggYnVuZGxlIGVudmlyb25tZW50c1xuICAvLyAoc2VydmVyICsgY2xpZW50KSBjb2xsYXBzZSBvbnRvIHRoZSBzYW1lIHBoeXNpY2FsIG1vZHVsZSByYXRoZXIgdGhhblxuICAvLyBzcGxpdHRpbmcgUmVhY3QgYWNyb3NzIG11bHRpcGxlIGlubGluZWQgY2h1bmtzLiBXaXRob3V0IHRoaXMgcGFpcixcbiAgLy8gcG5wbSdzIGlzb2xhdGVkIGxheW91dCBjYW4gbGFuZCByZWFjdCBhbmQgcmVhY3QtZG9tIG9uIG9wcG9zaXRlIHNpZGVzXG4gIC8vIG9mIHRoZSBidW5kbGUvZXh0ZXJuYWwgYm91bmRhcnkgYW5kIHByb2R1Y2UgUmVhY3QgMTknc1xuICAvLyBSZWFjdFNoYXJlZEludGVybmFscy5ILWlzLW51bGwgZmFpbHVyZSAodXNlU3luY0V4dGVybmFsU3RvcmUgdGhyb3dzKS5cbiAgc3NyOiB7XG4gICAgZXh0ZXJuYWw6IFtcInJlYWN0XCIsIFwicmVhY3QtZG9tXCJdLFxuICB9LFxuICBwbHVnaW5zOiBbXG4gICAgbGl2ZW1hcmsoe1xuICAgICAgZGVmYXVsdHNSb290OiBzb3VyY2VEaXIsXG4gICAgICBvdmVycmlkZXNSb290LFxuICAgICAgc3ViZGlyczogWy4uLk9WRVJSSURFX1NVQkRJUlNdLFxuICAgICAgY29uZmlnUGF0aDogY29uZmlnLmNvbmZpZ1BhdGgsXG4gICAgfSksXG4gICAgZGV2dG9vbHMoKSxcbiAgICB0YWlsd2luZCgpLFxuICAgIGNvbnRlbnRDb2xsZWN0aW9ucyh7XG4gICAgICBjb25maWdQYXRoOiBqb2luKHNvdXJjZVJlbGF0aXZlLCBcImNvbnRlbnQtY29sbGVjdGlvbnMudHNcIiksXG4gICAgfSksXG4gICAgdGFuc3RhY2tTdGFydCh7XG4gICAgICBzcmNEaXJlY3Rvcnk6IHNvdXJjZVJlbGF0aXZlLFxuICAgICAgcGFnZXM6IFt7IHBhdGg6IFwiL1wiIH1dLFxuICAgICAgcHJlcmVuZGVyOiB7IGVuYWJsZWQ6IHRydWUsIGNyYXdsTGlua3M6IHRydWUgfSxcbiAgICAgIHNpdGVtYXA6IGNvbmZpZy5zaXRlXG4gICAgICAgID8geyBlbmFibGVkOiB0cnVlLCBob3N0OiBjb25maWcuc2l0ZSB9XG4gICAgICAgIDogeyBlbmFibGVkOiBmYWxzZSB9LFxuICAgICAgcm91dGVyOiB7XG4gICAgICAgIHZpcnR1YWxSb3V0ZUNvbmZpZzogcm9vdFJvdXRlKFwiX19yb290LnRzeFwiLCByb3V0ZUNoaWxkcmVuKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVhY3QoKSxcbiAgICBzdmdyKCksXG4gIF0sXG59KVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2Uvdml0ZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sa0JBQWtCLE1BQU0sMkJBQTJCLENBQUE7QUFDMUQsT0FBTyxRQUFRLE1BQU0sbUJBQW1CLENBQUE7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNqRSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxLQUFLLEdBRU4sTUFBTSwrQkFBK0IsQ0FBQTtBQUN0QyxPQUFPLEtBQUssTUFBTSxzQkFBc0IsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25DLE9BQU8sSUFBSSxNQUFNLGtCQUFrQixDQUFBO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUVyRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsRUFBRSxDQUFBO0FBQ2pDLE1BQU0sU0FBUyxHQUFHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUNyQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQTtBQUVwRCxpRUFBaUU7QUFDakUsbUVBQW1FO0FBQ25FLG9FQUFvRTtBQUNwRSx1RUFBdUU7QUFDdkUsd0VBQXdFO0FBQ3hFLHNFQUFzRTtBQUN0RSxxRUFBcUU7QUFDckUscUVBQXFFO0FBQ3JFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUE7QUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO0lBQy9CLFNBQVMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM3QyxhQUFhLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFFaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDN0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtJQUNqRSxJQUFJLFNBQVMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3hDLGFBQWEsQ0FDWCxTQUFTLEVBQ1QsZ0NBQWdDO1lBQzlCLGtDQUFrQztZQUNsQyxzQ0FBc0MsQ0FDekMsQ0FBQTtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQ1QsMkVBQTJFLENBQzVFLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUNoRSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5QyxnRUFBZ0U7SUFDaEUscUVBQXFFO0lBQ3JFLG9FQUFvRTtJQUNwRSxvRUFBb0U7SUFDcEUsMERBQTBEO0lBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDM0MsYUFBYSxDQUFDLElBQUksQ0FDaEIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQzdELENBQUE7QUFDSCxDQUFDO0FBRUQsZUFBZSxZQUFZLENBQUM7SUFDMUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO0lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDO0lBQ25ELEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtJQUNwQyxNQUFNLEVBQUU7UUFDTix3QkFBd0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDdEU7SUFDRCx1RUFBdUU7SUFDdkUsbUVBQW1FO0lBQ25FLE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7S0FDL0I7SUFDRCxPQUFPLEVBQUU7UUFDUCxRQUFRLENBQUM7WUFDUCxZQUFZLEVBQUUsU0FBUztZQUN2QixhQUFhO1lBQ2IsT0FBTyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztZQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7U0FDOUIsQ0FBQztRQUNGLFFBQVEsRUFBRTtRQUNWLFFBQVEsRUFBRTtRQUNWLGtCQUFrQixDQUFDO1lBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLHdCQUF3QixDQUFDO1NBQzNELENBQUM7UUFDRixhQUFhLENBQUM7WUFDWixZQUFZLEVBQUUsY0FBYztZQUM1QixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUN0QixTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7WUFDOUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNsQixDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUN0QyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQ3RCLE1BQU0sRUFBRTtnQkFDTixrQkFBa0IsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQzthQUMzRDtTQUNGLENBQUM7UUFDRixLQUFLLEVBQUU7UUFDUCxJQUFJLEVBQUU7S0FDUDtDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCJcbmltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgY29udGVudENvbGxlY3Rpb25zIGZyb20gXCJAY29udGVudC1jb2xsZWN0aW9ucy92aXRlXCJcbmltcG9ydCB0YWlsd2luZCBmcm9tIFwiQHRhaWx3aW5kY3NzL3ZpdGVcIlxuaW1wb3J0IHsgZGV2dG9vbHMgfSBmcm9tIFwiQHRhbnN0YWNrL2RldnRvb2xzLXZpdGVcIlxuaW1wb3J0IHsgdGFuc3RhY2tTdGFydCB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3Qtc3RhcnQvcGx1Z2luL3ZpdGVcIlxuaW1wb3J0IHtcbiAgcGh5c2ljYWwsXG4gIHJvb3RSb3V0ZSxcbiAgcm91dGUsXG4gIHR5cGUgVmlydHVhbFJvdXRlTm9kZSxcbn0gZnJvbSBcIkB0YW5zdGFjay92aXJ0dWFsLWZpbGUtcm91dGVzXCJcbmltcG9ydCByZWFjdCBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tcmVhY3RcIlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVcIlxuaW1wb3J0IHN2Z3IgZnJvbSBcInZpdGUtcGx1Z2luLXN2Z3JcIlxuaW1wb3J0IHsgbG9hZENvbmZpZyB9IGZyb20gXCIuL2FjdGlvbnMvY29uZmlnL2xvYWQudHNcIlxuaW1wb3J0IHsgV2Vic2l0ZUNvbmZpZyB9IGZyb20gXCIuL21vZGVscy9jb25maWcudHNcIlxuaW1wb3J0IHsgT1ZFUlJJREVfU1VCRElSUyB9IGZyb20gXCIuL3NldHRpbmdzLnRzXCJcbmltcG9ydCB7IGxpdmVtYXJrIH0gZnJvbSBcIi4vcGx1Z2lucy92aXRlLWxpdmVtYXJrLnRzXCJcblxuY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZygpXG5jb25zdCBzb3VyY2VEaXIgPSBpbXBvcnQubWV0YS5kaXJuYW1lXG5jb25zdCBzb3VyY2VSZWxhdGl2ZSA9IHJlbGF0aXZlKGNvbmZpZy5yb290LCBzb3VyY2VEaXIpXG5jb25zdCBvdmVycmlkZXNSb290ID0gam9pbihjb25maWcucm9vdCwgXCIubGl2ZW1hcmtcIilcblxuLy8gU2VlZCBgLmxpdmVtYXJrLy5naXRpZ25vcmVgIG9uIGZpcnN0IHJ1biBzbyBWaXRlJ3MgYnVpbGQvY2FjaGVcbi8vIGFydGlmYWN0cyBuZXZlciBnZXQgY29tbWl0dGVkIGJ5IGFjY2lkZW50LiBPbiB0aGUgc2FtZSBmaXJzdC1ydW5cbi8vIHRyaWdnZXIsIGFsc28gc2VlZCBhbiBgLm5wbXJjYCB3aGVuIHBucG0gaXMgaW4gdXNlOiBwbnBtJ3Mgc3RyaWN0XG4vLyBpc29sYXRpb24gaGlkZXMgbGl2ZW1hcmsncyB0cmFuc2l0aXZlIGRlcHMgKHJlYWN0LCBAdGFuc3RhY2svKikgZnJvbVxuLy8gVml0ZSdzIG9wdGltaXplciwgd2hpY2ggd2Fsa3MgZnJvbSBjb25maWcucm9vdCByYXRoZXIgdGhhbiBsaXZlbWFyaydzXG4vLyBzdWJ0cmVlLiBUaGUgcHVibGljLWhvaXN0LXBhdHRlcm4gZW50cmllcyBtYWtlIHRob3NlIGRlcHMgcmVhY2hhYmxlXG4vLyBmcm9tIHRoZSBjb25zdW1lcidzIHRvcC1sZXZlbCBub2RlX21vZHVsZXMuIFNraXAgd2hlbiB0aGUgY29uc3VtZXJcbi8vIGFscmVhZHkgYXV0aG9yZWQgdGhlaXIgb3duIGAubnBtcmNgIOKAlCBuZXZlciBvdmVyd3JpdGUgdXNlciBjb25maWcuXG5jb25zdCBnaXRpZ25vcmVQYXRoID0gam9pbihvdmVycmlkZXNSb290LCBcIi5naXRpZ25vcmVcIilcbmlmICghZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICBta2RpclN5bmMob3ZlcnJpZGVzUm9vdCwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgd3JpdGVGaWxlU3luYyhnaXRpZ25vcmVQYXRoLCBcIi9idWlsZFxcbi9jYWNoZVxcblwiKVxuXG4gIGNvbnN0IG5wbXJjUGF0aCA9IGpvaW4oY29uZmlnLnJvb3QsIFwiLm5wbXJjXCIpXG4gIGNvbnN0IHVzaW5nUG5wbSA9IGV4aXN0c1N5bmMoam9pbihjb25maWcucm9vdCwgXCJwbnBtLWxvY2sueWFtbFwiKSlcbiAgaWYgKHVzaW5nUG5wbSAmJiAhZXhpc3RzU3luYyhucG1yY1BhdGgpKSB7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIG5wbXJjUGF0aCxcbiAgICAgIFwicHVibGljLWhvaXN0LXBhdHRlcm5bXT1yZWFjdFxcblwiICtcbiAgICAgICAgXCJwdWJsaWMtaG9pc3QtcGF0dGVybltdPXJlYWN0LSpcXG5cIiArXG4gICAgICAgIFwicHVibGljLWhvaXN0LXBhdHRlcm5bXT1AdGFuc3RhY2svKlxcblwiLFxuICAgIClcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIFwiQ3JlYXRlZCAubnBtcmMgd2l0aCBob2lzdCBwYXR0ZXJucyBmb3IgcG5wbS4gUnVuIGBwbnBtIGluc3RhbGxgIHRvIGFwcGx5LlwiLFxuICAgIClcbiAgfVxufVxuXG5jb25zdCByb3V0ZUNoaWxkcmVuOiBWaXJ0dWFsUm91dGVOb2RlW10gPSBbcm91dGUoXCIvJFwiLCBcIiQudHN4XCIpXVxuaWYgKGV4aXN0c1N5bmMoam9pbihvdmVycmlkZXNSb290LCBcInJvdXRlc1wiKSkpIHtcbiAgLy8gcGh5c2ljYWwoZGlyKSByZXNvbHZlcyBgZGlyYCByZWxhdGl2ZSB0byB0aGUgcm91dGVzIGRpcmVjdG9yeVxuICAvLyAoYHNyY0RpcmVjdG9yeS9yb3V0ZXNgKS4gQSBoYXJkY29kZWQgXCIuLi8uLi8ubGl2ZW1hcmsvcm91dGVzXCIgb25seVxuICAvLyB3b3JrcyB3aGVuIHNvdXJjZS8gc2l0cyBvbmUgbGV2ZWwgdW5kZXIgY29uZmlnLnJvb3Qg4oCUIGl0IGxhbmRzIGF0XG4gIC8vIG5vZGVfbW9kdWxlcy8ubGl2ZW1hcmsvcm91dGVzIG9uY2UgbGl2ZW1hcmsgaXMgaW5zdGFsbGVkLiBDb21wdXRlXG4gIC8vIHRoZSBwYXRoIGR5bmFtaWNhbGx5IGZyb20gdGhlIGNvbnN1bWVyJ3MgYWN0dWFsIGxheW91dC5cbiAgY29uc3Qgcm91dGVzRGlyID0gam9pbihzb3VyY2VEaXIsIFwicm91dGVzXCIpXG4gIHJvdXRlQ2hpbGRyZW4ucHVzaChcbiAgICBwaHlzaWNhbChyZWxhdGl2ZShyb3V0ZXNEaXIsIGpvaW4ob3ZlcnJpZGVzUm9vdCwgXCJyb3V0ZXNcIikpKSxcbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICByb290OiBjb25maWcucm9vdCxcbiAgcHVibGljRGlyOiBqb2luKGNvbmZpZy5yb290LCBcIi5saXZlbWFya1wiLCBcInB1YmxpY1wiKSxcbiAgYnVpbGQ6IHsgb3V0RGlyOiBcIi5saXZlbWFyay9idWlsZFwiIH0sXG4gIGRlZmluZToge1xuICAgIFwiaW1wb3J0Lm1ldGEuZW52LkNPTkZJR1wiOiBKU09OLnN0cmluZ2lmeShXZWJzaXRlQ29uZmlnLnBhcnNlKGNvbmZpZykpLFxuICB9LFxuICAvLyBwZWVyRGVwZW5kZW5jaWVzIGd1YXJhbnRlZSBvbmUgY2Fub25pY2FsIHJlYWN0L3JlYWN0LWRvbSBpbiB0aGUgcG5wbVxuICAvLyBzdG9yZS4gZGVkdXBlIGNvbGxhcHNlcyBhbnkgdHJhbnNpdGl2ZSByZXNvbHV0aW9ucyB0byB0aGF0IGNvcHkuXG4gIHJlc29sdmU6IHtcbiAgICBkZWR1cGU6IFtcInJlYWN0XCIsIFwicmVhY3QtZG9tXCJdLFxuICB9LFxuICBwbHVnaW5zOiBbXG4gICAgbGl2ZW1hcmsoe1xuICAgICAgZGVmYXVsdHNSb290OiBzb3VyY2VEaXIsXG4gICAgICBvdmVycmlkZXNSb290LFxuICAgICAgc3ViZGlyczogWy4uLk9WRVJSSURFX1NVQkRJUlNdLFxuICAgICAgY29uZmlnUGF0aDogY29uZmlnLmNvbmZpZ1BhdGgsXG4gICAgfSksXG4gICAgZGV2dG9vbHMoKSxcbiAgICB0YWlsd2luZCgpLFxuICAgIGNvbnRlbnRDb2xsZWN0aW9ucyh7XG4gICAgICBjb25maWdQYXRoOiBqb2luKHNvdXJjZVJlbGF0aXZlLCBcImNvbnRlbnQtY29sbGVjdGlvbnMudHNcIiksXG4gICAgfSksXG4gICAgdGFuc3RhY2tTdGFydCh7XG4gICAgICBzcmNEaXJlY3Rvcnk6IHNvdXJjZVJlbGF0aXZlLFxuICAgICAgcGFnZXM6IFt7IHBhdGg6IFwiL1wiIH1dLFxuICAgICAgcHJlcmVuZGVyOiB7IGVuYWJsZWQ6IHRydWUsIGNyYXdsTGlua3M6IHRydWUgfSxcbiAgICAgIHNpdGVtYXA6IGNvbmZpZy5zaXRlXG4gICAgICAgID8geyBlbmFibGVkOiB0cnVlLCBob3N0OiBjb25maWcuc2l0ZSB9XG4gICAgICAgIDogeyBlbmFibGVkOiBmYWxzZSB9LFxuICAgICAgcm91dGVyOiB7XG4gICAgICAgIHZpcnR1YWxSb3V0ZUNvbmZpZzogcm9vdFJvdXRlKFwiX19yb290LnRzeFwiLCByb3V0ZUNoaWxkcmVuKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVhY3QoKSxcbiAgICBzdmdyKCksXG4gIF0sXG59KVxuIl19