vis-dev-utils 3.0.4 → 3.0.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.
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Development utilities for the Vis family projects.
8
8
  *
9
- * @version 3.0.4
10
- * @date 2022-03-10T21:24:40.299Z
9
+ * @version 3.0.5
10
+ * @date 2022-03-12T16:41:01.018Z
11
11
  *
12
12
  * @copyright (c) 2011-2017 Almende B.V, http://almende.com
13
13
  * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
package/bin/ci-utils.js CHANGED
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Development utilities for the Vis family projects.
8
8
  *
9
- * @version 3.0.4
10
- * @date 2022-03-10T21:24:40.299Z
9
+ * @version 3.0.5
10
+ * @date 2022-03-12T16:41:01.018Z
11
11
  *
12
12
  * @copyright (c) 2011-2017 Almende B.V, http://almende.com
13
13
  * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Development utilities for the Vis family projects.
8
8
  *
9
- * @version 3.0.4
10
- * @date 2022-03-10T21:24:40.299Z
9
+ * @version 3.0.5
10
+ * @date 2022-03-12T16:41:01.018Z
11
11
  *
12
12
  * @copyright (c) 2011-2017 Almende B.V, http://almende.com
13
13
  * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
@@ -57,9 +57,9 @@ var _Array$from = require('@babel/runtime-corejs3/core-js-stable/array/from');
57
57
  var _Symbol = require('@babel/runtime-corejs3/core-js-stable/symbol');
58
58
  var _getIteratorMethod = require('@babel/runtime-corejs3/core-js/get-iterator-method');
59
59
  var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
60
- var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
61
60
  var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
62
61
  var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
62
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
63
63
  var _flatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/flat');
64
64
  var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
65
65
  var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
@@ -111,9 +111,9 @@ var _Array$from__default = /*#__PURE__*/_interopDefaultLegacy(_Array$from);
111
111
  var _Symbol__default = /*#__PURE__*/_interopDefaultLegacy(_Symbol);
112
112
  var _getIteratorMethod__default = /*#__PURE__*/_interopDefaultLegacy(_getIteratorMethod);
113
113
  var _Array$isArray__default = /*#__PURE__*/_interopDefaultLegacy(_Array$isArray);
114
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
115
114
  var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
116
115
  var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
116
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
117
117
  var _flatInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_flatInstanceProperty);
118
118
  var _everyInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_everyInstanceProperty);
119
119
  var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_sliceInstanceProperty);
@@ -662,6 +662,8 @@ var ContentBuilder = /*#__PURE__*/function () {
662
662
  function ContentBuilder(_config) {
663
663
  _classCallCheck__default["default"](this, ContentBuilder);
664
664
 
665
+ _defineProperty__default["default"](this, "_config", void 0);
666
+
665
667
  this._config = _config;
666
668
  }
667
669
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"generate-examples-index.js","sources":["../src/generate-examples-index/content-builder/common.ts","../src/generate-examples-index/content-builder/format.ts","../src/generate-examples-index/content-builder/playground/codepen.ts","../src/generate-examples-index/content-builder/playground/data.ts","../src/generate-examples-index/content-builder/playground/jsfiddle.ts","../src/generate-examples-index/content-builder/screenshots/index.ts","../src/generate-examples-index/content-builder/builder.ts","../src/generate-examples-index/content-builder/html/index.ts","../src/generate-examples-index/content-builder/md/index.ts","../src/generate-examples-index/cli.ts","../src/generate-examples-index/paths.ts","../src/generate-examples-index/index.ts"],"sourcesContent":["import { Example, Examples, ExamplesRoot } from \"../types\";\n\nexport interface ContentPart {\n content: string;\n filename: string;\n title: string;\n}\n\nexport interface Renderer {\n render(\n examples: ExamplesRoot,\n output: string,\n title: string,\n collator: Intl.Collator\n ): ContentPart[];\n screenshot: {\n width: number;\n height: number;\n };\n}\n\n/**\n * @param value\n */\nexport function isExample(\n value: Example | Examples | ExamplesRoot\n): value is Example {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof value.path === \"string\"\n );\n}\n\nexport interface StartStopMs {\n start: number;\n stop: number;\n}\n/**\n *\n */\nexport function measureStartStopMs(): () => StartStopMs {\n const start = Date.now();\n return (): StartStopMs => {\n const stop = Date.now();\n\n return { start, stop };\n };\n}\n\nexport interface Report {\n count: number;\n result: \"fulfilled\" | \"rejected\";\n start: number;\n stop: number;\n}\n/**\n * @param reports\n * @param fallback\n */\nexport function reduceReports(\n reports: readonly Report[],\n fallback: Report = {\n count: 0,\n result: \"fulfilled\",\n start: -1,\n stop: -1,\n }\n): Report {\n return (\n reports.reduce<Report | null>((acc, val): Report | null => {\n return {\n count: (acc?.count ?? 0) + (val?.count ?? 0),\n result: [acc?.result ?? \"fulfilled\", val.result].every(\n (result): boolean => result === \"fulfilled\"\n )\n ? \"fulfilled\"\n : \"rejected\",\n start: Math.min(acc?.start ?? Number.POSITIVE_INFINITY, val.start),\n stop: Math.max(acc?.stop ?? Number.NEGATIVE_INFINITY, val.stop),\n };\n }, null) ?? fallback\n );\n}\n\n/**\n * @param ms\n */\nexport function formatMs(ms: number): string {\n return `${(Math.round(ms / 100) / 10).toFixed(1)}s`;\n}\n/**\n * @param root0\n * @param root0.start\n * @param root0.stop\n */\nexport function formatStartStopMs({ start, stop }: StartStopMs): string {\n return `${(Math.round((stop - start) / 100) / 10).toFixed(1)}s`;\n}\n","import prettier from \"prettier\";\n\nexport const formatCSS = (css: string | null | undefined): string =>\n prettier.format(css || \"\", { filepath: \"style.css\" });\nexport const formatHTML = (html: string | null | undefined): string =>\n prettier.format(html || \"\", { filepath: \"index.html\" });\nexport const formatJS = (js: string | null | undefined): string =>\n prettier.format(js || \"\", { filepath: \"script.js\" });\nexport const formatMD = (md: string | null | undefined): string =>\n prettier.format(md || \"\", { filepath: \"README.md\" });\n","import $ from \"cheerio\";\n\nimport template from \"./codepen.template.html\";\nimport { Example } from \"../../types\";\n\n/**\n * @param example\n */\nexport function generateCodePenPage(example: Example): string {\n const data = example.playground;\n const title = example.titles.join(\" | \");\n\n const page = $.load(template);\n page(\"title\").text(title);\n const form = page(\"#form\");\n\n form.find('input[name=\"data\"]').attr(\n \"value\",\n JSON.stringify({\n css: data.code.css,\n css_external: data.resources.css.join(\";\"),\n html: data.code.html,\n js: data.code.js,\n js_external: data.resources.js.join(\";\"),\n title: example.titles.join(\" | \"),\n })\n );\n\n return page.html();\n}\n","import $ from \"cheerio\";\nimport { dirname, relative, resolve } from \"path\";\n\nimport { Example, PlaygroundData } from \"../../types\";\nimport { formatCSS, formatHTML, formatJS } from \"../format\";\n\n/**\n * @param baseURL\n * @param example$\n * @param examplePath\n */\nexport function generatePlaygroundData(\n baseURL: string,\n example$: Example[\"$\"],\n examplePath: Example[\"path\"]\n): PlaygroundData {\n // JavaScript\n const eventListeners = Object.entries(example$(\"body\").get(0).attribs)\n .filter(([name]): boolean => /^on/.test(name))\n .map(([name, value]): [string, string] => [name.slice(2), `${value}`])\n .map(\n ([name, value]): string =>\n `window.addEventListener(\"${name}\", () => { ${value} });`\n )\n .join(\"\\n\");\n const js = formatJS(\n example$(\"script\")\n .map((_i, elem) => (elem as cheerio.TagElement).children[0])\n .get()\n .map((elem): string => elem.data)\n .join(\"\") +\n \"\\n\\n;\" +\n eventListeners\n );\n\n // Cascading Style Sheets\n const css = formatCSS(\n example$(\"style\")\n .map((_i, elem) => (elem as cheerio.TagElement).children[0])\n .get()\n .map((elem): string => elem.data)\n .join(\"\")\n );\n\n // Hypertext Markup Language\n const $html = $.load(example$(\"body\").html() || \"\");\n $html(\"script\").remove();\n\n const html = formatHTML($html(\"body\").html());\n\n // Resources\n const fixPath = (rawPath: string): string =>\n /^https?:\\/\\//.test(rawPath)\n ? // World wide web absolute.\n rawPath\n : /^\\//.test(rawPath)\n ? // Domain absolute.\n baseURL + rawPath.slice(1)\n : //Relative.\n baseURL +\n relative(process.cwd(), resolve(dirname(examplePath), rawPath));\n\n const resources = {\n js: example$(\"script\")\n .map((_i, elem): undefined | string => $(elem).attr(\"src\"))\n .get()\n .filter((src): src is string => typeof src === \"string\")\n .map(fixPath),\n css: example$(\"link[rel='stylesheet']\")\n .map((_i, elem): undefined | string => $(elem).attr(\"href\"))\n .get()\n .filter((href): href is string => typeof href === \"string\")\n .map(fixPath),\n };\n\n return {\n code: {\n css,\n html,\n js,\n },\n resources,\n };\n}\n","import $ from \"cheerio\";\n\nimport template from \"./jsfiddle.template.html\";\nimport { Example } from \"../../types\";\n\n/**\n * @param example\n */\nexport function generateJSFiddlePage(example: Example): string {\n const data = example.playground;\n const title = example.titles.join(\" | \");\n const resources = [...data.resources.css, ...data.resources.js].join(\",\");\n\n const page = $.load(template);\n page(\"title\").text(title);\n const form = page(\"#form\");\n\n // Playground data.\n form.find('input[name=\"css\"]').attr(\"value\", data.code.css);\n form.find('input[name=\"html\"]').attr(\"value\", data.code.html);\n form.find('input[name=\"js\"]').attr(\"value\", data.code.js);\n form.find('input[name=\"resources\"]').attr(\"value\", resources);\n form.find('input[name=\"title\"]').attr(\"value\", title);\n\n // Don't run JS before the DOM is ready.\n form.find('input[name=\"wrap\"]').attr(\"value\", \"b\");\n\n return page.html();\n}\n","import $ from \"cheerio\";\nimport Jimp from \"jimp\";\nimport { Browser } from \"puppeteer\";\nimport commonScreenshotScript from \"./screenshot-script.js.txt\";\nimport fs from \"fs\";\nimport { basename, dirname, posix, resolve, sep } from \"path\";\nimport { promisify } from \"util\";\n\nimport { Example } from \"../../types\";\nimport { formatHTML } from \"../format\";\n\nconst unlink = promisify(fs.unlink);\nconst writeFile = promisify(fs.writeFile);\n\n/**\n * Check if the screenshot is valid. At the moment this simply considers\n * everything except for solid color images as valid. This works pretty well\n * though may yield some false positives.\n *\n * @param screenshot - The binary data of the screenshot.\n * @returns True for valid and false for invalid.\n */\nasync function isScreenshotValid(screenshot: Buffer): Promise<boolean> {\n const image = await Jimp.read(screenshot);\n const firstPixel = image.getPixelColor(0, 0);\n\n for (let x = 0; x < image.getWidth(); ++x) {\n for (let y = 0; y < image.getHeight(); ++y) {\n if (firstPixel !== image.getPixelColor(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport interface GenerateScreenshotConfig {\n /**\n * Leave the contexts and tabs open for inspection, also don't delete the\n * temporary pages.\n */\n debug: boolean;\n /** The example for which the screenshot will be generated. */\n example: Example;\n /** Height of the captured screenshot. */\n height: number;\n /** A script to be executed as the first thing on the page. */\n screenshotScript: string;\n /** Width of the captured screenshot. */\n width: number;\n}\n\n/**\n * Capture an element on the example's page and save the screenshot to the\n * disk as a PNG file.\n *\n * @param browser - Puppeteer's browser instance.\n * @param config - See the type's docs for detail.\n * @returns Whether or not the screenshot passed validation check.\n */\nexport async function generateScreenshot(\n browser: Browser,\n config: GenerateScreenshotConfig\n): Promise<boolean> {\n const { debug, example, height, screenshotScript, width } = config;\n\n const cleanup: (() => void | Promise<void>)[] = [];\n\n try {\n // Prepare the page. It has to be written to the disk so that files with\n // relative URLs can be loaded.\n const tmpPath = resolve(\n dirname(example.paths.page.local),\n \".tmp.example.screenshot.\" + basename(example.paths.page.local)\n );\n const screenshotPage = $.load(example.html);\n screenshotPage(\"head\").prepend(\n $(\"<script>\")\n .attr(\"type\", \"text/javascript\")\n .text(`window.DEBUG = ${true};`),\n $(\"<script>\")\n .attr(\"type\", \"text/javascript\")\n .text(commonScreenshotScript),\n $(\"<script>\").attr(\"type\", \"text/javascript\").text(screenshotScript),\n $(\"<style>\")\n .attr(\"type\", \"text/css\")\n .text(\n [\n `${example.selector} {`,\n \" border: none !important;\",\n \"\",\n ` min-width: ${width}px !important;`,\n ` min-height: ${height}px !important;`,\n ` width: ${width}px !important;`,\n ` height: ${height}px !important;`,\n ` max-width: ${width}px !important;`,\n ` max-height: ${height}px !important;`,\n \"}\",\n ].join(\"\\n\")\n )\n );\n await writeFile(tmpPath, formatHTML(screenshotPage.html()));\n if (!debug) {\n cleanup.push((): Promise<void> => unlink(tmpPath));\n }\n\n const context = await browser.createIncognitoBrowserContext();\n if (!debug) {\n cleanup.push((): Promise<void> => context.close());\n }\n\n const page = await context.newPage();\n if (!debug) {\n cleanup.push((): Promise<void> => page.close());\n }\n\n await page.setViewport({ width: width + 50, height: height + 50 });\n await page.goto(\"file://\" + tmpPath.split(sep).join(posix.sep));\n\n await page.waitForSelector(example.selector, {\n visible: true,\n timeout: example.timeout * 1000,\n });\n\n if (example.delay === \"call\") {\n await page.evaluate(\n \"function fn() { return window.readyToTakeAScreenshot; }\"\n );\n } else {\n await page.waitForTimeout(example.delay * 1000);\n }\n\n const $element = await page.$(example.selector);\n if ($element == null) {\n throw new Error(\n `Element \"${example.selector}\" not found in ${example.path}.`\n );\n }\n\n await $element.evaluate((element: Element): void => {\n element.scrollIntoView();\n });\n\n const screenshot = await $element.screenshot({\n encoding: \"binary\",\n });\n\n if (screenshot == null) {\n throw new Error(`Failed to take screenshot of “${example.paths.page}”`);\n } else if (typeof screenshot === \"string\") {\n // AFAIK this should never happen, it's just a problem with the types\n // always returning Buffer | string even when encoding is set to binary\n // (i.e. buffer).\n throw new Error(\n `Failed to get the binary data of the screenshot of “${example.paths.page}”`\n );\n }\n\n await writeFile(example.paths.screenshot.local, screenshot);\n\n // Return the validity of the generated screenshot.\n return isScreenshotValid(screenshot);\n } catch (error) {\n console.error(error);\n return false;\n } finally {\n for (const callback of cleanup.splice(0).reverse()) {\n try {\n await callback();\n } catch (error) {\n console.error(error);\n }\n }\n }\n}\n","import fs from \"fs\";\nimport { join } from \"path\";\nimport { promisify } from \"util\";\nimport puppeteer from \"puppeteer\";\n\nimport { Example, Examples, ExamplesRoot } from \"../types\";\nimport {\n Renderer,\n Report,\n formatStartStopMs,\n isExample,\n measureStartStopMs,\n} from \"./common\";\nimport { formatHTML } from \"./format\";\nimport { generateJSFiddlePage, generateCodePenPage } from \"./playground\";\nimport { generateScreenshot } from \"./screenshots\";\n\nconst collator = new Intl.Collator(\"US\");\nconst writeFile = promisify(fs.writeFile);\n\nexport type IndexReport = Report;\nexport interface ExampleReport extends Report {\n example: Example;\n}\n\nexport interface Checks {\n fail: number;\n failPaths: string[];\n okay: number;\n okayPaths: string[];\n percentage: number;\n total: number;\n}\n\nexport interface ContentBuilderConfig {\n /** The tree structure with examples in it's leaves. */\n examples: ExamplesRoot;\n /** The directory where built files will be saved. */\n output: string;\n /** How many screenshots to generate at the same time. */\n parallel: number;\n /** The renderer used to generate index files. */\n renderer: Renderer;\n /** A script that will be executed on each page as first. */\n screenshotScript: string;\n /** A title that will be passed to the renderer. */\n title: string;\n}\n\nexport interface ContentBuilderRet {\n checks: Promise<Checks>;\n index: Promise<IndexReport[]>;\n playgrounds: Promise<ExampleReport[]>;\n screenshots: Promise<ExampleReport[]>;\n}\n\nexport class ContentBuilder {\n public constructor(private readonly _config: ContentBuilderConfig) {}\n\n /**\n * Build the files and write them to the disk.\n *\n * @param emit - Which types of files to emit.\n * @param emit.index\n * @param emit.playgrounds\n * @param emit.screenshots\n * @returns A report with check results and the number of written files.\n */\n public build(\n emit: {\n index?: boolean;\n playgrounds?: boolean;\n screenshots?: boolean;\n } = {}\n ): ContentBuilderRet {\n const allExamples = this._processGroup(this._config.examples);\n\n const okay: string[] = [];\n const fail: string[] = [];\n\n console.info(\n `Going to generate ${[\n emit.index ? [\"index files\"] : [],\n emit.playgrounds ? [\"playground openers\"] : [],\n emit.screenshots ? [\"screenshots\"] : [],\n ]\n .flat()\n .join(\", \")} for ${allExamples.length} examples.`\n );\n process.stdout.write(\"\\n\");\n\n const index: ContentBuilderRet[\"index\"] = emit.index\n ? // Generate indexes.\n (async (): ContentBuilderRet[\"index\"] => {\n const getStartStopMs = measureStartStopMs();\n\n const results = await Promise.allSettled(\n this._config.renderer\n .render(\n this._config.examples,\n this._config.output,\n this._config.title,\n collator\n )\n .map(\n async ({ content, filename }): Promise<void> =>\n writeFile(join(this._config.output, filename), content)\n )\n );\n\n return [\n {\n ...getStartStopMs(),\n count: results.length,\n result: results.every(\n ({ status }): boolean => status === \"fulfilled\"\n )\n ? \"fulfilled\"\n : \"rejected\",\n },\n ];\n })()\n : // Skip indexes.\n Promise.resolve([]);\n\n const playgrounds: ContentBuilderRet[\"playgrounds\"] = emit.playgrounds\n ? // Generate playground pages.\n (async (): ContentBuilderRet[\"playgrounds\"] =>\n await Promise.all(\n allExamples.map(async (example): Promise<ExampleReport> => {\n const getStartStopMs = measureStartStopMs();\n\n const results = await Promise.allSettled(\n [\n {\n html: generateJSFiddlePage(example),\n path: example.paths.jsfiddle.local,\n },\n {\n html: generateCodePenPage(example),\n path: example.paths.codepen.local,\n },\n ].map(\n ({ html, path }): Promise<void> =>\n writeFile(path, formatHTML(html))\n )\n );\n\n return {\n ...getStartStopMs(),\n count: results.length,\n example: example,\n result: results.every(\n ({ status }): boolean => status === \"fulfilled\"\n )\n ? \"fulfilled\"\n : \"rejected\",\n };\n })\n ))()\n : // Skip playground pages.\n Promise.resolve([]);\n\n const screenshots: ContentBuilderRet[\"screenshots\"] = emit.screenshots\n ? // Generate screenshots.\n (async (): ContentBuilderRet[\"screenshots\"] => {\n const cleanup: (() => void | Promise<void>)[] = [];\n\n try {\n const debug = /^1|y|yes|true$/i.test(process.env.DEBUG ?? \"\");\n const browser = await puppeteer.launch({\n headless: !debug,\n slowMo: debug ? 100 : undefined,\n });\n if (debug) {\n cleanup.push(async (): Promise<void> => browser.disconnect());\n } else {\n cleanup.push((): Promise<void> => browser.close());\n }\n\n // Generate screenshots.\n // There is quite long delay to ensure the chart is rendered properly\n // so it's much faster to run a lot of them at the same time.\n const todo = allExamples.slice();\n const total = todo.length;\n const reports: ExampleReport[] = [];\n await Promise.allSettled(\n new Array(this._config.parallel)\n .fill(null)\n .map(async (): Promise<void> => {\n let example: Example | undefined;\n while ((example = todo.pop())) {\n const getStartStopMs = measureStartStopMs();\n\n const valid = await generateScreenshot(browser, {\n debug,\n example,\n height: this._config.renderer.screenshot.height,\n screenshotScript: this._config.screenshotScript,\n width: this._config.renderer.screenshot.width,\n });\n\n const report: ExampleReport = {\n ...getStartStopMs(),\n count: 1,\n example,\n result: valid ? \"fulfilled\" : \"rejected\",\n };\n reports.push(report);\n\n if (valid) {\n okay.push(example.path);\n } else {\n fail.push(example.path);\n }\n\n const percentage = (\n Math.floor((reports.length / total) * 100) + \"%\"\n ).padStart(4, \" \");\n const validText = valid ? \"okay\" : \"fail\";\n const msText = formatStartStopMs(report);\n console.info(\n `${percentage} ${validText} ${msText} - ${example.path}`\n );\n }\n })\n );\n\n return reports;\n } finally {\n for (const callback of cleanup.splice(0).reverse()) {\n try {\n await callback();\n } catch (error) {\n console.error(error);\n }\n }\n }\n })()\n : // Skip screenshots.\n Promise.resolve([]);\n\n const checks = (async (): Promise<Checks> => {\n await index;\n await playgrounds;\n await screenshots;\n\n const total = okay.length + fail.length;\n return {\n fail: fail.length,\n failPaths: fail,\n okay: okay.length,\n okayPaths: okay,\n percentage: total === 0 ? 100 : (100 * okay.length) / total,\n total,\n };\n })();\n\n return { checks, index, playgrounds, screenshots };\n }\n\n private _processGroup(examples: Examples): Example[] {\n return Object.keys(examples)\n .sort(collator.compare)\n .flatMap((key): Example[] => {\n const example = examples[key];\n\n if (isExample(example)) {\n return [example];\n } else {\n return this._processGroup(example);\n }\n });\n }\n}\n","import $ from \"cheerio\";\n\nimport indexTemplate from \"./index.template.html\";\nimport styleTemplate from \"./index.template.css\";\nimport { ContentPart, Renderer, isExample } from \"../common\";\nimport { Example, Examples, ExamplesRoot } from \"../../types\";\nimport { formatHTML } from \"../format\";\n\n/**\n * @param example\n */\nfunction generateJSFiddle(example: Example): cheerio.Cheerio {\n return $(\"<a>\")\n .addClass(\"icon jsfiddle\")\n .attr(\"href\", example.paths.jsfiddle.web)\n .attr(\"title\", \"JSFiddle\");\n}\n\n/**\n * @param example\n */\nfunction generateCodePen(example: Example): cheerio.Cheerio {\n return $(\"<a>\")\n .addClass(\"icon codepen\")\n .attr(\"href\", example.paths.codepen.web)\n .attr(\"title\", \"CodePen\");\n}\n\n/**\n * @param examples\n * @param title\n * @param level\n * @param collator\n */\nfunction processGroup(\n examples: Examples,\n title: string,\n level: number,\n collator: Intl.Collator\n): cheerio.Cheerio {\n const heading = $(`<h${Math.max(1, Math.min(6, level))}>`);\n heading.text(title);\n\n const list = $(\"<div>\");\n\n const section = $(\"<div>\");\n section.append(heading, list);\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n const example = examples[key];\n\n if (isExample(example)) {\n const header = $(\"<div>\").addClass(\"example-header\").append(\n // Playgrounds\n generateJSFiddle(example),\n generateCodePen(example),\n // Title\n $(\"<a>\").attr(\"href\", example.paths.page.web).text(key)\n );\n\n const image = $(\"<a>\")\n .addClass(\"example-image\")\n .attr(\"href\", example.paths.page.web)\n .append(\n $(\"<img>\").attr(\"src\", example.paths.screenshot.web).attr(\"alt\", key)\n );\n\n const item = $(\"<span>\").addClass(\"example-link\").append(header, image);\n\n list.append(item);\n } else {\n section.append(processGroup(example, key, level + 1, collator));\n }\n }\n\n return section;\n}\n\nexport const htmlRenderer: Renderer = {\n render(\n examples: ExamplesRoot,\n _output: string,\n title: string,\n collator: Intl.Collator\n ): ContentPart[] {\n const filename = \"index.html\";\n\n const root = $(\"<div>\");\n root.addClass(\"examples-root\");\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n root.append(processGroup(examples[key], key, 1, collator));\n }\n\n const page = $.load(indexTemplate);\n page(\"title\").text(title);\n page(\"body\").append(root);\n const content = formatHTML(page.html());\n\n return [\n { content, filename, title },\n {\n content: styleTemplate,\n filename: \"examples.css\",\n title: \"examples.css\",\n },\n ];\n },\n screenshot: {\n width: 400,\n height: 400,\n },\n};\n","import { ContentPart, Renderer, isExample } from \"../common\";\nimport { Examples, ExamplesRoot } from \"../../types\";\nimport { formatMD } from \"../format\";\nimport { relative } from \"path\";\n\n/**\n * @param lines\n */\nfunction linesToContent(lines: string[]): string {\n return formatMD(lines.join(\"\\n\"));\n}\n\n/**\n * @param title\n * @param src\n * @param href\n */\nfunction image(title: string, src: string, href?: string): string {\n return href == null\n ? `![${title}](${src})`\n : link(href, `![${title}](${src})`);\n}\n\n/**\n * @param href\n * @param text\n */\nfunction link(href: string, text: string = href): string {\n return `[${text}](${href})`;\n}\n\n/**\n * @param level\n * @param text\n */\nfunction header(level: number, text: string): string {\n return `${\"#\".repeat(level)} ${text}`;\n}\n\n/**\n * @param examples\n * @param output\n * @param title\n * @param collator\n */\nfunction processGroup(\n examples: Examples,\n output: string,\n title: string,\n collator: Intl.Collator\n): ContentPart[] {\n const items: string[] = [];\n const sections: ContentPart[] = [];\n const filenamePart = title.replace(/[^a-zA-Z0-9]/g, \"-\").toLowerCase();\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n const example = examples[key];\n\n if (isExample(example)) {\n // An example in this group.\n items.push(\n header(2, key),\n \"\",\n image(\n key,\n \"./\" + relative(output, example.paths.screenshot.local),\n example.paths.page.web\n ),\n \"\",\n [\n link(example.paths.page.web, \"Open\"),\n link(example.paths.jsfiddle.web, \"JSFiddle\"),\n link(example.paths.codepen.web, \"CodePen\"),\n ].join(\" | \"),\n \"\"\n );\n } else {\n // A subgroup of examples.\n sections.push(\n ...processGroup(example, output, key, collator).map(\n (contentPart): ContentPart => ({\n ...contentPart,\n filename: filenamePart + \".\" + contentPart.filename,\n })\n )\n );\n }\n }\n\n return [\n {\n content: linesToContent([header(1, title), \"\", ...items]),\n filename: filenamePart + \".md\",\n title,\n },\n ...sections,\n ];\n}\n\nexport const mdRenderer: Renderer = {\n render(\n examples: ExamplesRoot,\n output: string,\n _title: string,\n collator: Intl.Collator\n ): ContentPart[] {\n const sections: ContentPart[] = [];\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n sections.push(...processGroup(examples[key], output, key, collator));\n }\n\n return [\n {\n content: linesToContent([\n header(1, \"Examples\"),\n \"\",\n ...sections.map(\n ({ filename, title }): string => \"- \" + link(\"./\" + filename, title)\n ),\n ]),\n filename: \"README.md\",\n title: \"Examples\",\n },\n ...sections,\n ];\n },\n screenshot: {\n width: 740,\n height: 250,\n },\n};\n","import yargs from \"yargs\";\n\nconst y = yargs\n .strict(true)\n .usage(\"generate-example-index [options]\")\n .hide(\"version\")\n .config()\n .help()\n\n .option(\"assets-local-directory\", {\n default: \"./examples/thumbnails\",\n describe: \"The directory where assets will be written to.\",\n type: \"string\",\n })\n .option(\"assets-web-directory\", {\n default: \"./thumbnails\",\n describe: \"The directory where assets will be loaded from on the web.\",\n type: \"string\",\n })\n .option(\"base-url\", {\n demand: true,\n describe:\n \"The base URL for relative imports. Web URLs starting with slash will be relative to this URL.\",\n type: \"string\",\n })\n .option(\"examples-local-directory\", {\n default: \"./examples/thumbnails\",\n describe: \"The directory where examples will be loaded from locally.\",\n type: \"string\",\n })\n .option(\"examples-web-directory\", {\n default: \"./thumbnails\",\n describe: \"The directory where examples will be loaded from on the web.\",\n type: \"string\",\n })\n .option(\"output-directory\", {\n default: \"./examples\",\n describe: \"The directory where generated files will be emitted.\",\n type: \"string\",\n })\n .option(\"pages-local-directory\", {\n default: \"./examples/pages\",\n describe: \"The directory where pages will be written to.\",\n type: \"string\",\n })\n .option(\"pages-web-directory\", {\n default: \"./pages\",\n describe: \"The directory where pages will be loaded from on the web.\",\n type: \"string\",\n })\n\n .option(\"index\", {\n default: false,\n describe: \"Generate index files.\",\n type: \"boolean\",\n })\n .option(\"lint\", {\n default: false,\n describe: \"Lint examples.\",\n type: \"boolean\",\n })\n .option(\"playgrounds\", {\n default: false,\n describe: \"Generate playground pages.\",\n type: \"boolean\",\n })\n .option(\"screenshots\", {\n default: false,\n describe: \"Render screenshot thumbnails.\",\n type: \"boolean\",\n })\n\n .option(\"container-id\", {\n default: \"vis-container\",\n describe: \"The id of the elements where Vis will put canvas.\",\n type: \"string\",\n })\n .option(\"format\", {\n default: \"html\",\n describe: \"Whether HTML or Markdown should be generated.\",\n type: \"string\",\n })\n .option(\"parallel\", {\n default: 6,\n describe:\n \"Generate n screenshots at the same time (there is quite high delay to make sure the graph is rendered before the screenshot is taken so the CPU utilization is generally quite low).\",\n type: \"number\",\n })\n .option(\"screenshot-script\", {\n describe:\n \"The path of JavaScript file that will be executed before taking a screenshot (and before any other JavaScript in the page).\",\n type: \"string\",\n })\n .option(\"title\", {\n default: \"Examples\",\n describe: \"The title of the examples index.\",\n type: \"string\",\n })\n .option(\"verify\", {\n default: 100,\n describe:\n \"Attempt to verify that the examples were generated correctly. The value is a percentage of checks that have to pass for the run to be considered success.\",\n type: \"number\",\n });\n\n/**\n *\n */\nexport function parseArguments(): ReturnType<typeof y[\"parseSync\"]> {\n return y.parserConfiguration({ \"camel-case-expansion\": false }).parseSync();\n}\n","import { Example, ExamplePath, ExamplePaths } from \"./types\";\nimport { createHash } from \"crypto\";\nimport { relative, resolve } from \"path\";\n\n/**\n * @param urls\n */\nexport function joinURLs(...urls: string[]): string {\n return urls\n .map((url): string =>\n // Strip the parts of leading and trailing slashes if they have them.\n url.replace(/^\\/?(.*?)\\/?$/, \"$1\")\n )\n .join(\"/\");\n}\n\n/**\n * @param baseURL\n * @param url\n */\nexport function fixAbsoluteInputURL(baseURL: string, url: string): string {\n return url.startsWith(\"/\")\n ? // Relative to the base URL. Base URL starts and URL ends with a slash.\n baseURL + url.slice(1)\n : // Relative to some other point or absolute already.\n url;\n}\n\n/**\n * @param config\n * @param exampleAbsolutePath\n */\nexport function generatePaths(\n config: ExamplePaths,\n exampleAbsolutePath: Example[\"path\"]\n): ExamplePaths {\n const exampleRelativePath = relative(config.page.local, exampleAbsolutePath);\n\n // It's important that the hash is created from the relative path so that it\n // is the same on all computers.\n const hash = createHash(\"sha256\").update(exampleRelativePath).digest(\"hex\");\n\n return {\n codepen: generateLocalWebPair(\n config.codepen.local,\n config.codepen.web,\n hash,\n \"codepen\",\n \"html\"\n ),\n jsfiddle: generateLocalWebPair(\n config.jsfiddle.local,\n config.jsfiddle.web,\n hash,\n \"jsfiddle\",\n \"html\"\n ),\n page: {\n local: exampleAbsolutePath,\n web: joinURLs(config.page.web, exampleRelativePath),\n },\n screenshot: generateLocalWebPair(\n config.screenshot.local,\n config.screenshot.web,\n hash,\n \"screenshot\",\n \"png\"\n ),\n };\n}\n\n/**\n * @param localRoot\n * @param webRoot\n * @param hash\n * @param prefix\n * @param extension\n */\nfunction generateLocalWebPair(\n localRoot: string,\n webRoot: string,\n hash: string,\n prefix: string,\n extension: string\n): ExamplePath {\n const filename = `${prefix}.${hash}.${extension}`;\n\n return {\n local: resolve(localRoot, filename),\n web: joinURLs(webRoot, filename),\n };\n}\n","import $ from \"cheerio\";\nimport fs from \"fs\";\nimport globby from \"globby\";\nimport util from \"util\";\nimport yargs from \"yargs\";\nimport { join } from \"path\";\nimport { resolve } from \"path\";\n\nimport {\n ContentBuilder,\n generatePlaygroundData,\n htmlRenderer,\n mdRenderer,\n reduceReports,\n formatStartStopMs,\n} from \"./content-builder\";\nimport { Example, ExamplesRoot, ExamplePaths } from \"./types\";\nimport { parseArguments } from \"./cli\";\nimport { generatePaths, fixAbsoluteInputURL } from \"./paths\";\n\nconst argv = parseArguments();\n\n// Log the parsed configuration for debugging purposes.\nconsole.info(\"Configuration: \", JSON.stringify(argv, null, 2));\nprocess.stdout.write(\"\\n\");\n\n// Pageres uses quite a lot of listeners when invoked multiple times in\n// parallel. This ensures there are no warnings about it.\nprocess.setMaxListeners(40);\n\n// Resolve paths relative to PWD.\nconst screenshotScriptPath =\n typeof argv[\"screenshot-script\"] === \"string\"\n ? resolve(argv[\"screenshot-script\"])\n : undefined;\n\nconst mkdir = util.promisify(fs.mkdir);\nconst readFile = util.promisify(fs.readFile);\n\nfunction getMeta<T>(page: cheerio.Root, name: string, fallback: T): T;\n/**\n * Extract and coerce a value from meta tag.\n *\n * @param page - The page to be queried.\n * @param name - The name of the meta tag.\n * @param fallback - The value to be used if the meta tag is not present.\n * @returns The value “smartly” coerced or the fallback if conversion isn't\n * possible or the value is not present in the page.\n */\nfunction getMeta(\n page: cheerio.Root,\n name: string,\n fallback: number | string\n): number | string {\n const content = page(`meta[name=\"${name}\"]`).attr(\"content\");\n\n if (content == null) {\n // No meta of this name exists in the page, use the fallback.\n return fallback;\n } else if (!Number.isNaN(+content)) {\n // Number.\n return +content;\n } else if (typeof content === \"string\") {\n // String.\n return content;\n } else {\n // Something doesn't match, use the fallback.\n return fallback;\n }\n}\n\n/**\n * Test if the example conforms to the conventions.\n *\n * @param path - The path to the example (used for identification in logs).\n * @param page - The HTML to be linted.\n * @returns True if everything's okay, false otherwise.\n */\nfunction lintExample(path: string, page: cheerio.Root): boolean {\n let valid = true;\n const msgs = [`${path}:`];\n\n if (page(\"#title\").length !== 1) {\n msgs.push(\"Missing #title element in the body.\");\n valid = false;\n }\n\n if (page(\"#title > *\").length < 2) {\n msgs.push(\n \"There have to be at least two headings (group and example name).\"\n );\n valid = false;\n }\n\n const headTitle = page(\"head > title\").text().trim();\n const bodyTitle = page(\"#title > *\")\n .map((_i, elem): string => $(elem).text())\n .get()\n .join(\" | \")\n .trim();\n if (headTitle !== bodyTitle) {\n msgs.push(\n \"The title in the head doesn't match the title in the body.\",\n ` head: ${headTitle}`,\n ` body: ${bodyTitle}`\n );\n valid = false;\n }\n\n if (msgs.length > 1) {\n console.warn(\"\\n\" + msgs.join(\"\\n \"));\n }\n\n return valid;\n}\n\n(async (): Promise<void> => {\n let code = 0;\n\n if (!argv.index && !argv.screenshots && !argv.lint) {\n yargs.parse(\"--help\");\n return;\n }\n\n // Ensure that all paths exist.\n await Promise.all(\n [\n argv[\"assets-local-directory\"],\n argv[\"examples-local-directory\"],\n argv[\"output-directory\"],\n argv[\"pages-local-directory\"],\n ].map(async (path): Promise<void> => {\n await mkdir(path, { recursive: true });\n })\n );\n\n const baseURL = argv[\"base-url\"];\n if (!baseURL.endsWith(\"/\")) {\n throw new Error(\"Base URL (`base-url`) has to end with a slash (`/`).\");\n }\n\n // Paths.\n const pathsConfig: ExamplePaths = {\n codepen: {\n local: argv[\"pages-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"pages-web-directory\"]),\n },\n jsfiddle: {\n local: argv[\"pages-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"pages-web-directory\"]),\n },\n page: {\n local: argv[\"examples-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"examples-web-directory\"]),\n },\n screenshot: {\n local: argv[\"assets-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"assets-web-directory\"]),\n },\n };\n\n const examples: ExamplesRoot = {};\n const selector = \"#\" + argv[\"container-id\"];\n const stats = { examples: 0 };\n const skipped: string[] = [];\n\n await Promise.all(\n (\n await globby(join(pathsConfig.page.local, \"**/*.html\"))\n ).map(async (pagePath): Promise<any> => {\n const html = await readFile(pagePath, \"utf-8\");\n const $page = $.load(html);\n const pageDelay = getMeta<number | \"call\">(\n $page,\n \"example-screenshot-delay\",\n 6\n );\n const pageTimeout = getMeta<number>(\n $page,\n \"example-screenshot-timeout\",\n 60\n );\n const pageSelector = getMeta<string>(\n $page,\n \"example-screenshot-selector\",\n selector\n );\n\n // Is this an examples?\n if ($page(pageSelector).length === 0) {\n skipped.push(pagePath);\n return;\n }\n\n // Lint if requested.\n if (argv.lint) {\n lintExample(pagePath, $page);\n }\n\n // Body titles.\n let titles = $page(\"#title > *\")\n .get()\n .map((elem): string => $page(elem).text().trim());\n\n // Head title fallback.\n if (titles.length < 2) {\n titles = $page(\"head > title\")\n .text()\n .split(\"|\")\n .map((title): string => title.trim());\n }\n\n // File path fallback.\n if (titles.length < 2) {\n titles = pagePath.split(\"/\");\n }\n\n // Just ignore it.\n if (titles.length < 2) {\n console.error(\"Title resolution failed. Skipping.\");\n return;\n }\n\n // Put this example into the structure while creating any missing groups in the process.\n titles.reduce((acc, title, i, arr): any => {\n while (acc[title] != null && acc[title].path != null) {\n console.error(\"The following group already exists: \", titles);\n title += \"!\";\n }\n\n if (i === arr.length - 1) {\n if (acc[title] != null) {\n console.error(\n \"The following example has the same name as an already existing group: \",\n titles\n );\n return null;\n } else {\n const example: Example = {\n $: $page,\n delay: pageDelay,\n html: html,\n path: pagePath,\n paths: generatePaths(pathsConfig, pagePath),\n playground: generatePlaygroundData(baseURL, $page, pagePath),\n selector: pageSelector,\n timeout: pageTimeout,\n titles: titles,\n };\n\n acc[title] = example;\n\n ++stats.examples;\n }\n } else {\n return (acc[title] = acc[title] || {});\n }\n }, examples as any);\n })\n );\n\n if (skipped.length) {\n process.stdout.write(\"\\n\");\n console.info(\n [\n \"The following files don't look like examples (there is nothing to take a screenshot of):\",\n ...skipped.sort(),\n ].join(\"\\n \")\n );\n }\n\n if (stats.examples === 0) {\n console.info(\"No usable example files were found.\");\n } else if (argv.index || argv.playgrounds || argv.screenshots) {\n process.stdout.write(\"\\n\");\n\n const screenshotScript =\n screenshotScriptPath != null\n ? (await readFile(screenshotScriptPath, \"utf-8\")) || \"\"\n : \"\";\n\n const builtData = new ContentBuilder({\n examples,\n output: resolve(argv[\"output-directory\"]),\n parallel: argv.parallel,\n renderer: argv.format === \"md\" ? mdRenderer : htmlRenderer,\n screenshotScript,\n title: argv.title,\n }).build({\n index: argv.index,\n playgrounds: argv.playgrounds,\n screenshots: argv.screenshots,\n });\n\n // Create and write the page.\n if (argv.index) {\n const cummulativeReport = reduceReports(await builtData.index);\n console.info(\n `Index with ${stats.examples} examples written (${\n cummulativeReport.count\n } files in ${formatStartStopMs(cummulativeReport)}).`\n );\n }\n\n // Create and write the playgrounds.\n if (argv.index) {\n const cummulativeReport = reduceReports(await builtData.playgrounds);\n console.info(\n `Playground opener files for ${stats.examples} examples written (${\n cummulativeReport.count\n } files in ${formatStartStopMs(cummulativeReport)}).`\n );\n }\n\n // Create and write the screenshots.\n if (argv.screenshots) {\n const cummulativeReport = reduceReports(await builtData.screenshots);\n console.info(\n `Screenshot files for ${stats.examples} written (${\n cummulativeReport.count\n } files in ${formatStartStopMs(cummulativeReport)}).`\n );\n }\n\n // Verify the result.\n const checks = await builtData.checks;\n process.stdout.write(\"\\n\");\n if (checks.fail === 0) {\n console.info(\n `Verification: ${checks.okay} passed (${Math.round(\n checks.percentage\n )} %) passed.`\n );\n } else {\n if (checks.percentage >= argv.verify) {\n console.info(\n `Verification: ${checks.okay} passed (${Math.round(\n checks.percentage\n )} %), ${checks.fail} failed.\\n` +\n \"This is within the threshold set by --verify.\"\n );\n } else {\n console.error(\n `Verification: Only ${checks.okay} passed (${Math.round(\n checks.percentage\n )} %), ${checks.fail} failed.\\n` +\n \"This is not within the threshold set by --verify. Exiting with an error.\"\n );\n code = 3;\n }\n\n checks.failPaths.forEach((path): void => {\n console.error(path);\n });\n }\n }\n\n process.exitCode = code;\n})().catch((error): void => {\n process.exitCode = 1;\n console.error(error);\n});\n"],"names":["isExample","value","_typeof","path","measureStartStopMs","start","_Date$now","stop","reduceReports","reports","fallback","count","result","_reduceInstanceProperty","acc","val","_everyInstanceProperty","Math","min","Number","POSITIVE_INFINITY","max","NEGATIVE_INFINITY","formatStartStopMs","round","toFixed","formatCSS","css","prettier","format","filepath","formatHTML","html","formatJS","js","formatMD","md","generateCodePenPage","example","data","playground","title","titles","join","page","$","load","template","text","form","attr","_JSON$stringify","code","css_external","resources","js_external","generatePlaygroundData","baseURL","example$","examplePath","eventListeners","_mapInstanceProperty","get","attribs","name","test","_sliceInstanceProperty","_i","elem","children","$html","remove","fixPath","rawPath","relative","process","cwd","resolve","dirname","src","href","generateJSFiddlePage","_concatInstanceProperty","unlink","promisify","fs","writeFile","isScreenshotValid","screenshot","Jimp","read","image","firstPixel","getPixelColor","x","getWidth","y","getHeight","generateScreenshot","browser","config","debug","height","screenshotScript","width","cleanup","tmpPath","paths","local","basename","screenshotPage","prepend","commonScreenshotScript","selector","push","createIncognitoBrowserContext","context","close","newPage","setViewport","goto","split","sep","posix","waitForSelector","visible","timeout","delay","evaluate","waitForTimeout","$element","Error","element","scrollIntoView","encoding","console","error","_reverseInstanceProperty","callback","collator","Intl","Collator","ContentBuilder","_config","emit","allExamples","_processGroup","examples","okay","fail","info","_flatInstanceProperty","index","playgrounds","screenshots","length","stdout","write","getStartStopMs","_Promise","allSettled","renderer","render","output","content","filename","results","status","all","jsfiddle","codepen","env","DEBUG","puppeteer","launch","headless","slowMo","undefined","disconnect","todo","total","Array","parallel","pop","valid","report","percentage","_padStartInstanceProperty","floor","validText","msText","checks","_asyncToGenerator","failPaths","okayPaths","_flatMapInstanceProperty","compare","key","generateJSFiddle","addClass","web","generateCodePen","processGroup","level","heading","list","section","append","_sortInstanceProperty","header","item","htmlRenderer","_output","root","indexTemplate","styleTemplate","linesToContent","lines","link","_repeatInstanceProperty","items","sections","filenamePart","replace","toLowerCase","contentPart","mdRenderer","_title","yargs","strict","usage","hide","help","option","default","describe","type","demand","parseArguments","parserConfiguration","parseSync","joinURLs","urls","url","fixAbsoluteInputURL","_startsWithInstanceProperty","generatePaths","exampleAbsolutePath","exampleRelativePath","hash","createHash","update","digest","generateLocalWebPair","localRoot","webRoot","prefix","extension","argv","setMaxListeners","screenshotScriptPath","mkdir","util","readFile","getMeta","_Number$isNaN","lintExample","msgs","headTitle","_trimInstanceProperty","bodyTitle","warn","lint","parse","recursive","_endsWithInstanceProperty","pathsConfig","stats","skipped","globby","pagePath","$page","pageDelay","pageTimeout","pageSelector","i","arr","builtData","build","cummulativeReport","verify","exitCode","catch"],"mappings":"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"}
1
+ {"version":3,"file":"generate-examples-index.js","sources":["../src/generate-examples-index/content-builder/common.ts","../src/generate-examples-index/content-builder/format.ts","../src/generate-examples-index/content-builder/playground/codepen.ts","../src/generate-examples-index/content-builder/playground/data.ts","../src/generate-examples-index/content-builder/playground/jsfiddle.ts","../src/generate-examples-index/content-builder/screenshots/index.ts","../src/generate-examples-index/content-builder/builder.ts","../src/generate-examples-index/content-builder/html/index.ts","../src/generate-examples-index/content-builder/md/index.ts","../src/generate-examples-index/cli.ts","../src/generate-examples-index/paths.ts","../src/generate-examples-index/index.ts"],"sourcesContent":["import { Example, Examples, ExamplesRoot } from \"../types\";\n\nexport interface ContentPart {\n content: string;\n filename: string;\n title: string;\n}\n\nexport interface Renderer {\n render(\n examples: ExamplesRoot,\n output: string,\n title: string,\n collator: Intl.Collator\n ): ContentPart[];\n screenshot: {\n width: number;\n height: number;\n };\n}\n\n/**\n * @param value\n */\nexport function isExample(\n value: Example | Examples | ExamplesRoot\n): value is Example {\n return (\n typeof value === \"object\" &&\n value !== null &&\n typeof value.path === \"string\"\n );\n}\n\nexport interface StartStopMs {\n start: number;\n stop: number;\n}\n/**\n *\n */\nexport function measureStartStopMs(): () => StartStopMs {\n const start = Date.now();\n return (): StartStopMs => {\n const stop = Date.now();\n\n return { start, stop };\n };\n}\n\nexport interface Report {\n count: number;\n result: \"fulfilled\" | \"rejected\";\n start: number;\n stop: number;\n}\n/**\n * @param reports\n * @param fallback\n */\nexport function reduceReports(\n reports: readonly Report[],\n fallback: Report = {\n count: 0,\n result: \"fulfilled\",\n start: -1,\n stop: -1,\n }\n): Report {\n return (\n reports.reduce<Report | null>((acc, val): Report | null => {\n return {\n count: (acc?.count ?? 0) + (val?.count ?? 0),\n result: [acc?.result ?? \"fulfilled\", val.result].every(\n (result): boolean => result === \"fulfilled\"\n )\n ? \"fulfilled\"\n : \"rejected\",\n start: Math.min(acc?.start ?? Number.POSITIVE_INFINITY, val.start),\n stop: Math.max(acc?.stop ?? Number.NEGATIVE_INFINITY, val.stop),\n };\n }, null) ?? fallback\n );\n}\n\n/**\n * @param ms\n */\nexport function formatMs(ms: number): string {\n return `${(Math.round(ms / 100) / 10).toFixed(1)}s`;\n}\n/**\n * @param root0\n * @param root0.start\n * @param root0.stop\n */\nexport function formatStartStopMs({ start, stop }: StartStopMs): string {\n return `${(Math.round((stop - start) / 100) / 10).toFixed(1)}s`;\n}\n","import prettier from \"prettier\";\n\nexport const formatCSS = (css: string | null | undefined): string =>\n prettier.format(css || \"\", { filepath: \"style.css\" });\nexport const formatHTML = (html: string | null | undefined): string =>\n prettier.format(html || \"\", { filepath: \"index.html\" });\nexport const formatJS = (js: string | null | undefined): string =>\n prettier.format(js || \"\", { filepath: \"script.js\" });\nexport const formatMD = (md: string | null | undefined): string =>\n prettier.format(md || \"\", { filepath: \"README.md\" });\n","import $ from \"cheerio\";\n\nimport template from \"./codepen.template.html\";\nimport { Example } from \"../../types\";\n\n/**\n * @param example\n */\nexport function generateCodePenPage(example: Example): string {\n const data = example.playground;\n const title = example.titles.join(\" | \");\n\n const page = $.load(template);\n page(\"title\").text(title);\n const form = page(\"#form\");\n\n form.find('input[name=\"data\"]').attr(\n \"value\",\n JSON.stringify({\n css: data.code.css,\n css_external: data.resources.css.join(\";\"),\n html: data.code.html,\n js: data.code.js,\n js_external: data.resources.js.join(\";\"),\n title: example.titles.join(\" | \"),\n })\n );\n\n return page.html();\n}\n","import $ from \"cheerio\";\nimport { dirname, relative, resolve } from \"path\";\n\nimport { Example, PlaygroundData } from \"../../types\";\nimport { formatCSS, formatHTML, formatJS } from \"../format\";\n\n/**\n * @param baseURL\n * @param example$\n * @param examplePath\n */\nexport function generatePlaygroundData(\n baseURL: string,\n example$: Example[\"$\"],\n examplePath: Example[\"path\"]\n): PlaygroundData {\n // JavaScript\n const eventListeners = Object.entries(example$(\"body\").get(0).attribs)\n .filter(([name]): boolean => /^on/.test(name))\n .map(([name, value]): [string, string] => [name.slice(2), `${value}`])\n .map(\n ([name, value]): string =>\n `window.addEventListener(\"${name}\", () => { ${value} });`\n )\n .join(\"\\n\");\n const js = formatJS(\n example$(\"script\")\n .map((_i, elem) => (elem as cheerio.TagElement).children[0])\n .get()\n .map((elem): string => elem.data)\n .join(\"\") +\n \"\\n\\n;\" +\n eventListeners\n );\n\n // Cascading Style Sheets\n const css = formatCSS(\n example$(\"style\")\n .map((_i, elem) => (elem as cheerio.TagElement).children[0])\n .get()\n .map((elem): string => elem.data)\n .join(\"\")\n );\n\n // Hypertext Markup Language\n const $html = $.load(example$(\"body\").html() || \"\");\n $html(\"script\").remove();\n\n const html = formatHTML($html(\"body\").html());\n\n // Resources\n const fixPath = (rawPath: string): string =>\n /^https?:\\/\\//.test(rawPath)\n ? // World wide web absolute.\n rawPath\n : /^\\//.test(rawPath)\n ? // Domain absolute.\n baseURL + rawPath.slice(1)\n : //Relative.\n baseURL +\n relative(process.cwd(), resolve(dirname(examplePath), rawPath));\n\n const resources = {\n js: example$(\"script\")\n .map((_i, elem): undefined | string => $(elem).attr(\"src\"))\n .get()\n .filter((src): src is string => typeof src === \"string\")\n .map(fixPath),\n css: example$(\"link[rel='stylesheet']\")\n .map((_i, elem): undefined | string => $(elem).attr(\"href\"))\n .get()\n .filter((href): href is string => typeof href === \"string\")\n .map(fixPath),\n };\n\n return {\n code: {\n css,\n html,\n js,\n },\n resources,\n };\n}\n","import $ from \"cheerio\";\n\nimport template from \"./jsfiddle.template.html\";\nimport { Example } from \"../../types\";\n\n/**\n * @param example\n */\nexport function generateJSFiddlePage(example: Example): string {\n const data = example.playground;\n const title = example.titles.join(\" | \");\n const resources = [...data.resources.css, ...data.resources.js].join(\",\");\n\n const page = $.load(template);\n page(\"title\").text(title);\n const form = page(\"#form\");\n\n // Playground data.\n form.find('input[name=\"css\"]').attr(\"value\", data.code.css);\n form.find('input[name=\"html\"]').attr(\"value\", data.code.html);\n form.find('input[name=\"js\"]').attr(\"value\", data.code.js);\n form.find('input[name=\"resources\"]').attr(\"value\", resources);\n form.find('input[name=\"title\"]').attr(\"value\", title);\n\n // Don't run JS before the DOM is ready.\n form.find('input[name=\"wrap\"]').attr(\"value\", \"b\");\n\n return page.html();\n}\n","import $ from \"cheerio\";\nimport Jimp from \"jimp\";\nimport { Browser } from \"puppeteer\";\nimport commonScreenshotScript from \"./screenshot-script.js.txt\";\nimport fs from \"fs\";\nimport { basename, dirname, posix, resolve, sep } from \"path\";\nimport { promisify } from \"util\";\n\nimport { Example } from \"../../types\";\nimport { formatHTML } from \"../format\";\n\nconst unlink = promisify(fs.unlink);\nconst writeFile = promisify(fs.writeFile);\n\n/**\n * Check if the screenshot is valid. At the moment this simply considers\n * everything except for solid color images as valid. This works pretty well\n * though may yield some false positives.\n *\n * @param screenshot - The binary data of the screenshot.\n * @returns True for valid and false for invalid.\n */\nasync function isScreenshotValid(screenshot: Buffer): Promise<boolean> {\n const image = await Jimp.read(screenshot);\n const firstPixel = image.getPixelColor(0, 0);\n\n for (let x = 0; x < image.getWidth(); ++x) {\n for (let y = 0; y < image.getHeight(); ++y) {\n if (firstPixel !== image.getPixelColor(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport interface GenerateScreenshotConfig {\n /**\n * Leave the contexts and tabs open for inspection, also don't delete the\n * temporary pages.\n */\n debug: boolean;\n /** The example for which the screenshot will be generated. */\n example: Example;\n /** Height of the captured screenshot. */\n height: number;\n /** A script to be executed as the first thing on the page. */\n screenshotScript: string;\n /** Width of the captured screenshot. */\n width: number;\n}\n\n/**\n * Capture an element on the example's page and save the screenshot to the\n * disk as a PNG file.\n *\n * @param browser - Puppeteer's browser instance.\n * @param config - See the type's docs for detail.\n * @returns Whether or not the screenshot passed validation check.\n */\nexport async function generateScreenshot(\n browser: Browser,\n config: GenerateScreenshotConfig\n): Promise<boolean> {\n const { debug, example, height, screenshotScript, width } = config;\n\n const cleanup: (() => void | Promise<void>)[] = [];\n\n try {\n // Prepare the page. It has to be written to the disk so that files with\n // relative URLs can be loaded.\n const tmpPath = resolve(\n dirname(example.paths.page.local),\n \".tmp.example.screenshot.\" + basename(example.paths.page.local)\n );\n const screenshotPage = $.load(example.html);\n screenshotPage(\"head\").prepend(\n $(\"<script>\")\n .attr(\"type\", \"text/javascript\")\n .text(`window.DEBUG = ${true};`),\n $(\"<script>\")\n .attr(\"type\", \"text/javascript\")\n .text(commonScreenshotScript),\n $(\"<script>\").attr(\"type\", \"text/javascript\").text(screenshotScript),\n $(\"<style>\")\n .attr(\"type\", \"text/css\")\n .text(\n [\n `${example.selector} {`,\n \" border: none !important;\",\n \"\",\n ` min-width: ${width}px !important;`,\n ` min-height: ${height}px !important;`,\n ` width: ${width}px !important;`,\n ` height: ${height}px !important;`,\n ` max-width: ${width}px !important;`,\n ` max-height: ${height}px !important;`,\n \"}\",\n ].join(\"\\n\")\n )\n );\n await writeFile(tmpPath, formatHTML(screenshotPage.html()));\n if (!debug) {\n cleanup.push((): Promise<void> => unlink(tmpPath));\n }\n\n const context = await browser.createIncognitoBrowserContext();\n if (!debug) {\n cleanup.push((): Promise<void> => context.close());\n }\n\n const page = await context.newPage();\n if (!debug) {\n cleanup.push((): Promise<void> => page.close());\n }\n\n await page.setViewport({ width: width + 50, height: height + 50 });\n await page.goto(\"file://\" + tmpPath.split(sep).join(posix.sep));\n\n await page.waitForSelector(example.selector, {\n visible: true,\n timeout: example.timeout * 1000,\n });\n\n if (example.delay === \"call\") {\n await page.evaluate(\n \"function fn() { return window.readyToTakeAScreenshot; }\"\n );\n } else {\n await page.waitForTimeout(example.delay * 1000);\n }\n\n const $element = await page.$(example.selector);\n if ($element == null) {\n throw new Error(\n `Element \"${example.selector}\" not found in ${example.path}.`\n );\n }\n\n await $element.evaluate((element: Element): void => {\n element.scrollIntoView();\n });\n\n const screenshot = await $element.screenshot({\n encoding: \"binary\",\n });\n\n if (screenshot == null) {\n throw new Error(`Failed to take screenshot of “${example.paths.page}”`);\n } else if (typeof screenshot === \"string\") {\n // AFAIK this should never happen, it's just a problem with the types\n // always returning Buffer | string even when encoding is set to binary\n // (i.e. buffer).\n throw new Error(\n `Failed to get the binary data of the screenshot of “${example.paths.page}”`\n );\n }\n\n await writeFile(example.paths.screenshot.local, screenshot);\n\n // Return the validity of the generated screenshot.\n return isScreenshotValid(screenshot);\n } catch (error) {\n console.error(error);\n return false;\n } finally {\n for (const callback of cleanup.splice(0).reverse()) {\n try {\n await callback();\n } catch (error) {\n console.error(error);\n }\n }\n }\n}\n","import fs from \"fs\";\nimport { join } from \"path\";\nimport { promisify } from \"util\";\nimport puppeteer from \"puppeteer\";\n\nimport { Example, Examples, ExamplesRoot } from \"../types\";\nimport {\n Renderer,\n Report,\n formatStartStopMs,\n isExample,\n measureStartStopMs,\n} from \"./common\";\nimport { formatHTML } from \"./format\";\nimport { generateJSFiddlePage, generateCodePenPage } from \"./playground\";\nimport { generateScreenshot } from \"./screenshots\";\n\nconst collator = new Intl.Collator(\"US\");\nconst writeFile = promisify(fs.writeFile);\n\nexport type IndexReport = Report;\nexport interface ExampleReport extends Report {\n example: Example;\n}\n\nexport interface Checks {\n fail: number;\n failPaths: string[];\n okay: number;\n okayPaths: string[];\n percentage: number;\n total: number;\n}\n\nexport interface ContentBuilderConfig {\n /** The tree structure with examples in it's leaves. */\n examples: ExamplesRoot;\n /** The directory where built files will be saved. */\n output: string;\n /** How many screenshots to generate at the same time. */\n parallel: number;\n /** The renderer used to generate index files. */\n renderer: Renderer;\n /** A script that will be executed on each page as first. */\n screenshotScript: string;\n /** A title that will be passed to the renderer. */\n title: string;\n}\n\nexport interface ContentBuilderRet {\n checks: Promise<Checks>;\n index: Promise<IndexReport[]>;\n playgrounds: Promise<ExampleReport[]>;\n screenshots: Promise<ExampleReport[]>;\n}\n\nexport class ContentBuilder {\n public constructor(private readonly _config: ContentBuilderConfig) {}\n\n /**\n * Build the files and write them to the disk.\n *\n * @param emit - Which types of files to emit.\n * @param emit.index\n * @param emit.playgrounds\n * @param emit.screenshots\n * @returns A report with check results and the number of written files.\n */\n public build(\n emit: {\n index?: boolean;\n playgrounds?: boolean;\n screenshots?: boolean;\n } = {}\n ): ContentBuilderRet {\n const allExamples = this._processGroup(this._config.examples);\n\n const okay: string[] = [];\n const fail: string[] = [];\n\n console.info(\n `Going to generate ${[\n emit.index ? [\"index files\"] : [],\n emit.playgrounds ? [\"playground openers\"] : [],\n emit.screenshots ? [\"screenshots\"] : [],\n ]\n .flat()\n .join(\", \")} for ${allExamples.length} examples.`\n );\n process.stdout.write(\"\\n\");\n\n const index: ContentBuilderRet[\"index\"] = emit.index\n ? // Generate indexes.\n (async (): ContentBuilderRet[\"index\"] => {\n const getStartStopMs = measureStartStopMs();\n\n const results = await Promise.allSettled(\n this._config.renderer\n .render(\n this._config.examples,\n this._config.output,\n this._config.title,\n collator\n )\n .map(\n async ({ content, filename }): Promise<void> =>\n writeFile(join(this._config.output, filename), content)\n )\n );\n\n return [\n {\n ...getStartStopMs(),\n count: results.length,\n result: results.every(\n ({ status }): boolean => status === \"fulfilled\"\n )\n ? \"fulfilled\"\n : \"rejected\",\n },\n ];\n })()\n : // Skip indexes.\n Promise.resolve([]);\n\n const playgrounds: ContentBuilderRet[\"playgrounds\"] = emit.playgrounds\n ? // Generate playground pages.\n (async (): ContentBuilderRet[\"playgrounds\"] =>\n await Promise.all(\n allExamples.map(async (example): Promise<ExampleReport> => {\n const getStartStopMs = measureStartStopMs();\n\n const results = await Promise.allSettled(\n [\n {\n html: generateJSFiddlePage(example),\n path: example.paths.jsfiddle.local,\n },\n {\n html: generateCodePenPage(example),\n path: example.paths.codepen.local,\n },\n ].map(\n ({ html, path }): Promise<void> =>\n writeFile(path, formatHTML(html))\n )\n );\n\n return {\n ...getStartStopMs(),\n count: results.length,\n example: example,\n result: results.every(\n ({ status }): boolean => status === \"fulfilled\"\n )\n ? \"fulfilled\"\n : \"rejected\",\n };\n })\n ))()\n : // Skip playground pages.\n Promise.resolve([]);\n\n const screenshots: ContentBuilderRet[\"screenshots\"] = emit.screenshots\n ? // Generate screenshots.\n (async (): ContentBuilderRet[\"screenshots\"] => {\n const cleanup: (() => void | Promise<void>)[] = [];\n\n try {\n const debug = /^1|y|yes|true$/i.test(process.env.DEBUG ?? \"\");\n const browser = await puppeteer.launch({\n headless: !debug,\n slowMo: debug ? 100 : undefined,\n });\n if (debug) {\n cleanup.push(async (): Promise<void> => browser.disconnect());\n } else {\n cleanup.push((): Promise<void> => browser.close());\n }\n\n // Generate screenshots.\n // There is quite long delay to ensure the chart is rendered properly\n // so it's much faster to run a lot of them at the same time.\n const todo = allExamples.slice();\n const total = todo.length;\n const reports: ExampleReport[] = [];\n await Promise.allSettled(\n new Array(this._config.parallel)\n .fill(null)\n .map(async (): Promise<void> => {\n let example: Example | undefined;\n while ((example = todo.pop())) {\n const getStartStopMs = measureStartStopMs();\n\n const valid = await generateScreenshot(browser, {\n debug,\n example,\n height: this._config.renderer.screenshot.height,\n screenshotScript: this._config.screenshotScript,\n width: this._config.renderer.screenshot.width,\n });\n\n const report: ExampleReport = {\n ...getStartStopMs(),\n count: 1,\n example,\n result: valid ? \"fulfilled\" : \"rejected\",\n };\n reports.push(report);\n\n if (valid) {\n okay.push(example.path);\n } else {\n fail.push(example.path);\n }\n\n const percentage = (\n Math.floor((reports.length / total) * 100) + \"%\"\n ).padStart(4, \" \");\n const validText = valid ? \"okay\" : \"fail\";\n const msText = formatStartStopMs(report);\n console.info(\n `${percentage} ${validText} ${msText} - ${example.path}`\n );\n }\n })\n );\n\n return reports;\n } finally {\n for (const callback of cleanup.splice(0).reverse()) {\n try {\n await callback();\n } catch (error) {\n console.error(error);\n }\n }\n }\n })()\n : // Skip screenshots.\n Promise.resolve([]);\n\n const checks = (async (): Promise<Checks> => {\n await index;\n await playgrounds;\n await screenshots;\n\n const total = okay.length + fail.length;\n return {\n fail: fail.length,\n failPaths: fail,\n okay: okay.length,\n okayPaths: okay,\n percentage: total === 0 ? 100 : (100 * okay.length) / total,\n total,\n };\n })();\n\n return { checks, index, playgrounds, screenshots };\n }\n\n private _processGroup(examples: Examples): Example[] {\n return Object.keys(examples)\n .sort(collator.compare)\n .flatMap((key): Example[] => {\n const example = examples[key];\n\n if (isExample(example)) {\n return [example];\n } else {\n return this._processGroup(example);\n }\n });\n }\n}\n","import $ from \"cheerio\";\n\nimport indexTemplate from \"./index.template.html\";\nimport styleTemplate from \"./index.template.css\";\nimport { ContentPart, Renderer, isExample } from \"../common\";\nimport { Example, Examples, ExamplesRoot } from \"../../types\";\nimport { formatHTML } from \"../format\";\n\n/**\n * @param example\n */\nfunction generateJSFiddle(example: Example): cheerio.Cheerio {\n return $(\"<a>\")\n .addClass(\"icon jsfiddle\")\n .attr(\"href\", example.paths.jsfiddle.web)\n .attr(\"title\", \"JSFiddle\");\n}\n\n/**\n * @param example\n */\nfunction generateCodePen(example: Example): cheerio.Cheerio {\n return $(\"<a>\")\n .addClass(\"icon codepen\")\n .attr(\"href\", example.paths.codepen.web)\n .attr(\"title\", \"CodePen\");\n}\n\n/**\n * @param examples\n * @param title\n * @param level\n * @param collator\n */\nfunction processGroup(\n examples: Examples,\n title: string,\n level: number,\n collator: Intl.Collator\n): cheerio.Cheerio {\n const heading = $(`<h${Math.max(1, Math.min(6, level))}>`);\n heading.text(title);\n\n const list = $(\"<div>\");\n\n const section = $(\"<div>\");\n section.append(heading, list);\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n const example = examples[key];\n\n if (isExample(example)) {\n const header = $(\"<div>\").addClass(\"example-header\").append(\n // Playgrounds\n generateJSFiddle(example),\n generateCodePen(example),\n // Title\n $(\"<a>\").attr(\"href\", example.paths.page.web).text(key)\n );\n\n const image = $(\"<a>\")\n .addClass(\"example-image\")\n .attr(\"href\", example.paths.page.web)\n .append(\n $(\"<img>\").attr(\"src\", example.paths.screenshot.web).attr(\"alt\", key)\n );\n\n const item = $(\"<span>\").addClass(\"example-link\").append(header, image);\n\n list.append(item);\n } else {\n section.append(processGroup(example, key, level + 1, collator));\n }\n }\n\n return section;\n}\n\nexport const htmlRenderer: Renderer = {\n render(\n examples: ExamplesRoot,\n _output: string,\n title: string,\n collator: Intl.Collator\n ): ContentPart[] {\n const filename = \"index.html\";\n\n const root = $(\"<div>\");\n root.addClass(\"examples-root\");\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n root.append(processGroup(examples[key], key, 1, collator));\n }\n\n const page = $.load(indexTemplate);\n page(\"title\").text(title);\n page(\"body\").append(root);\n const content = formatHTML(page.html());\n\n return [\n { content, filename, title },\n {\n content: styleTemplate,\n filename: \"examples.css\",\n title: \"examples.css\",\n },\n ];\n },\n screenshot: {\n width: 400,\n height: 400,\n },\n};\n","import { ContentPart, Renderer, isExample } from \"../common\";\nimport { Examples, ExamplesRoot } from \"../../types\";\nimport { formatMD } from \"../format\";\nimport { relative } from \"path\";\n\n/**\n * @param lines\n */\nfunction linesToContent(lines: string[]): string {\n return formatMD(lines.join(\"\\n\"));\n}\n\n/**\n * @param title\n * @param src\n * @param href\n */\nfunction image(title: string, src: string, href?: string): string {\n return href == null\n ? `![${title}](${src})`\n : link(href, `![${title}](${src})`);\n}\n\n/**\n * @param href\n * @param text\n */\nfunction link(href: string, text: string = href): string {\n return `[${text}](${href})`;\n}\n\n/**\n * @param level\n * @param text\n */\nfunction header(level: number, text: string): string {\n return `${\"#\".repeat(level)} ${text}`;\n}\n\n/**\n * @param examples\n * @param output\n * @param title\n * @param collator\n */\nfunction processGroup(\n examples: Examples,\n output: string,\n title: string,\n collator: Intl.Collator\n): ContentPart[] {\n const items: string[] = [];\n const sections: ContentPart[] = [];\n const filenamePart = title.replace(/[^a-zA-Z0-9]/g, \"-\").toLowerCase();\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n const example = examples[key];\n\n if (isExample(example)) {\n // An example in this group.\n items.push(\n header(2, key),\n \"\",\n image(\n key,\n \"./\" + relative(output, example.paths.screenshot.local),\n example.paths.page.web\n ),\n \"\",\n [\n link(example.paths.page.web, \"Open\"),\n link(example.paths.jsfiddle.web, \"JSFiddle\"),\n link(example.paths.codepen.web, \"CodePen\"),\n ].join(\" | \"),\n \"\"\n );\n } else {\n // A subgroup of examples.\n sections.push(\n ...processGroup(example, output, key, collator).map(\n (contentPart): ContentPart => ({\n ...contentPart,\n filename: filenamePart + \".\" + contentPart.filename,\n })\n )\n );\n }\n }\n\n return [\n {\n content: linesToContent([header(1, title), \"\", ...items]),\n filename: filenamePart + \".md\",\n title,\n },\n ...sections,\n ];\n}\n\nexport const mdRenderer: Renderer = {\n render(\n examples: ExamplesRoot,\n output: string,\n _title: string,\n collator: Intl.Collator\n ): ContentPart[] {\n const sections: ContentPart[] = [];\n\n for (const key of Object.keys(examples).sort(collator.compare)) {\n sections.push(...processGroup(examples[key], output, key, collator));\n }\n\n return [\n {\n content: linesToContent([\n header(1, \"Examples\"),\n \"\",\n ...sections.map(\n ({ filename, title }): string => \"- \" + link(\"./\" + filename, title)\n ),\n ]),\n filename: \"README.md\",\n title: \"Examples\",\n },\n ...sections,\n ];\n },\n screenshot: {\n width: 740,\n height: 250,\n },\n};\n","import yargs from \"yargs\";\n\nconst y = yargs\n .strict(true)\n .usage(\"generate-example-index [options]\")\n .hide(\"version\")\n .config()\n .help()\n\n .option(\"assets-local-directory\", {\n default: \"./examples/thumbnails\",\n describe: \"The directory where assets will be written to.\",\n type: \"string\",\n })\n .option(\"assets-web-directory\", {\n default: \"./thumbnails\",\n describe: \"The directory where assets will be loaded from on the web.\",\n type: \"string\",\n })\n .option(\"base-url\", {\n demand: true,\n describe:\n \"The base URL for relative imports. Web URLs starting with slash will be relative to this URL.\",\n type: \"string\",\n })\n .option(\"examples-local-directory\", {\n default: \"./examples/thumbnails\",\n describe: \"The directory where examples will be loaded from locally.\",\n type: \"string\",\n })\n .option(\"examples-web-directory\", {\n default: \"./thumbnails\",\n describe: \"The directory where examples will be loaded from on the web.\",\n type: \"string\",\n })\n .option(\"output-directory\", {\n default: \"./examples\",\n describe: \"The directory where generated files will be emitted.\",\n type: \"string\",\n })\n .option(\"pages-local-directory\", {\n default: \"./examples/pages\",\n describe: \"The directory where pages will be written to.\",\n type: \"string\",\n })\n .option(\"pages-web-directory\", {\n default: \"./pages\",\n describe: \"The directory where pages will be loaded from on the web.\",\n type: \"string\",\n })\n\n .option(\"index\", {\n default: false,\n describe: \"Generate index files.\",\n type: \"boolean\",\n })\n .option(\"lint\", {\n default: false,\n describe: \"Lint examples.\",\n type: \"boolean\",\n })\n .option(\"playgrounds\", {\n default: false,\n describe: \"Generate playground pages.\",\n type: \"boolean\",\n })\n .option(\"screenshots\", {\n default: false,\n describe: \"Render screenshot thumbnails.\",\n type: \"boolean\",\n })\n\n .option(\"container-id\", {\n default: \"vis-container\",\n describe: \"The id of the elements where Vis will put canvas.\",\n type: \"string\",\n })\n .option(\"format\", {\n default: \"html\",\n describe: \"Whether HTML or Markdown should be generated.\",\n type: \"string\",\n })\n .option(\"parallel\", {\n default: 6,\n describe:\n \"Generate n screenshots at the same time (there is quite high delay to make sure the graph is rendered before the screenshot is taken so the CPU utilization is generally quite low).\",\n type: \"number\",\n })\n .option(\"screenshot-script\", {\n describe:\n \"The path of JavaScript file that will be executed before taking a screenshot (and before any other JavaScript in the page).\",\n type: \"string\",\n })\n .option(\"title\", {\n default: \"Examples\",\n describe: \"The title of the examples index.\",\n type: \"string\",\n })\n .option(\"verify\", {\n default: 100,\n describe:\n \"Attempt to verify that the examples were generated correctly. The value is a percentage of checks that have to pass for the run to be considered success.\",\n type: \"number\",\n });\n\n/**\n *\n */\nexport function parseArguments(): ReturnType<typeof y[\"parseSync\"]> {\n return y.parserConfiguration({ \"camel-case-expansion\": false }).parseSync();\n}\n","import { Example, ExamplePath, ExamplePaths } from \"./types\";\nimport { createHash } from \"crypto\";\nimport { relative, resolve } from \"path\";\n\n/**\n * @param urls\n */\nexport function joinURLs(...urls: string[]): string {\n return urls\n .map((url): string =>\n // Strip the parts of leading and trailing slashes if they have them.\n url.replace(/^\\/?(.*?)\\/?$/, \"$1\")\n )\n .join(\"/\");\n}\n\n/**\n * @param baseURL\n * @param url\n */\nexport function fixAbsoluteInputURL(baseURL: string, url: string): string {\n return url.startsWith(\"/\")\n ? // Relative to the base URL. Base URL starts and URL ends with a slash.\n baseURL + url.slice(1)\n : // Relative to some other point or absolute already.\n url;\n}\n\n/**\n * @param config\n * @param exampleAbsolutePath\n */\nexport function generatePaths(\n config: ExamplePaths,\n exampleAbsolutePath: Example[\"path\"]\n): ExamplePaths {\n const exampleRelativePath = relative(config.page.local, exampleAbsolutePath);\n\n // It's important that the hash is created from the relative path so that it\n // is the same on all computers.\n const hash = createHash(\"sha256\").update(exampleRelativePath).digest(\"hex\");\n\n return {\n codepen: generateLocalWebPair(\n config.codepen.local,\n config.codepen.web,\n hash,\n \"codepen\",\n \"html\"\n ),\n jsfiddle: generateLocalWebPair(\n config.jsfiddle.local,\n config.jsfiddle.web,\n hash,\n \"jsfiddle\",\n \"html\"\n ),\n page: {\n local: exampleAbsolutePath,\n web: joinURLs(config.page.web, exampleRelativePath),\n },\n screenshot: generateLocalWebPair(\n config.screenshot.local,\n config.screenshot.web,\n hash,\n \"screenshot\",\n \"png\"\n ),\n };\n}\n\n/**\n * @param localRoot\n * @param webRoot\n * @param hash\n * @param prefix\n * @param extension\n */\nfunction generateLocalWebPair(\n localRoot: string,\n webRoot: string,\n hash: string,\n prefix: string,\n extension: string\n): ExamplePath {\n const filename = `${prefix}.${hash}.${extension}`;\n\n return {\n local: resolve(localRoot, filename),\n web: joinURLs(webRoot, filename),\n };\n}\n","import $ from \"cheerio\";\nimport fs from \"fs\";\nimport globby from \"globby\";\nimport util from \"util\";\nimport yargs from \"yargs\";\nimport { join } from \"path\";\nimport { resolve } from \"path\";\n\nimport {\n ContentBuilder,\n generatePlaygroundData,\n htmlRenderer,\n mdRenderer,\n reduceReports,\n formatStartStopMs,\n} from \"./content-builder\";\nimport { Example, ExamplesRoot, ExamplePaths } from \"./types\";\nimport { parseArguments } from \"./cli\";\nimport { generatePaths, fixAbsoluteInputURL } from \"./paths\";\n\nconst argv = parseArguments();\n\n// Log the parsed configuration for debugging purposes.\nconsole.info(\"Configuration: \", JSON.stringify(argv, null, 2));\nprocess.stdout.write(\"\\n\");\n\n// Pageres uses quite a lot of listeners when invoked multiple times in\n// parallel. This ensures there are no warnings about it.\nprocess.setMaxListeners(40);\n\n// Resolve paths relative to PWD.\nconst screenshotScriptPath =\n typeof argv[\"screenshot-script\"] === \"string\"\n ? resolve(argv[\"screenshot-script\"])\n : undefined;\n\nconst mkdir = util.promisify(fs.mkdir);\nconst readFile = util.promisify(fs.readFile);\n\nfunction getMeta<T>(page: cheerio.Root, name: string, fallback: T): T;\n/**\n * Extract and coerce a value from meta tag.\n *\n * @param page - The page to be queried.\n * @param name - The name of the meta tag.\n * @param fallback - The value to be used if the meta tag is not present.\n * @returns The value “smartly” coerced or the fallback if conversion isn't\n * possible or the value is not present in the page.\n */\nfunction getMeta(\n page: cheerio.Root,\n name: string,\n fallback: number | string\n): number | string {\n const content = page(`meta[name=\"${name}\"]`).attr(\"content\");\n\n if (content == null) {\n // No meta of this name exists in the page, use the fallback.\n return fallback;\n } else if (!Number.isNaN(+content)) {\n // Number.\n return +content;\n } else if (typeof content === \"string\") {\n // String.\n return content;\n } else {\n // Something doesn't match, use the fallback.\n return fallback;\n }\n}\n\n/**\n * Test if the example conforms to the conventions.\n *\n * @param path - The path to the example (used for identification in logs).\n * @param page - The HTML to be linted.\n * @returns True if everything's okay, false otherwise.\n */\nfunction lintExample(path: string, page: cheerio.Root): boolean {\n let valid = true;\n const msgs = [`${path}:`];\n\n if (page(\"#title\").length !== 1) {\n msgs.push(\"Missing #title element in the body.\");\n valid = false;\n }\n\n if (page(\"#title > *\").length < 2) {\n msgs.push(\n \"There have to be at least two headings (group and example name).\"\n );\n valid = false;\n }\n\n const headTitle = page(\"head > title\").text().trim();\n const bodyTitle = page(\"#title > *\")\n .map((_i, elem): string => $(elem).text())\n .get()\n .join(\" | \")\n .trim();\n if (headTitle !== bodyTitle) {\n msgs.push(\n \"The title in the head doesn't match the title in the body.\",\n ` head: ${headTitle}`,\n ` body: ${bodyTitle}`\n );\n valid = false;\n }\n\n if (msgs.length > 1) {\n console.warn(\"\\n\" + msgs.join(\"\\n \"));\n }\n\n return valid;\n}\n\n(async (): Promise<void> => {\n let code = 0;\n\n if (!argv.index && !argv.screenshots && !argv.lint) {\n yargs.parse(\"--help\");\n return;\n }\n\n // Ensure that all paths exist.\n await Promise.all(\n [\n argv[\"assets-local-directory\"],\n argv[\"examples-local-directory\"],\n argv[\"output-directory\"],\n argv[\"pages-local-directory\"],\n ].map(async (path): Promise<void> => {\n await mkdir(path, { recursive: true });\n })\n );\n\n const baseURL = argv[\"base-url\"];\n if (!baseURL.endsWith(\"/\")) {\n throw new Error(\"Base URL (`base-url`) has to end with a slash (`/`).\");\n }\n\n // Paths.\n const pathsConfig: ExamplePaths = {\n codepen: {\n local: argv[\"pages-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"pages-web-directory\"]),\n },\n jsfiddle: {\n local: argv[\"pages-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"pages-web-directory\"]),\n },\n page: {\n local: argv[\"examples-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"examples-web-directory\"]),\n },\n screenshot: {\n local: argv[\"assets-local-directory\"],\n web: fixAbsoluteInputURL(baseURL, argv[\"assets-web-directory\"]),\n },\n };\n\n const examples: ExamplesRoot = {};\n const selector = \"#\" + argv[\"container-id\"];\n const stats = { examples: 0 };\n const skipped: string[] = [];\n\n await Promise.all(\n (\n await globby(join(pathsConfig.page.local, \"**/*.html\"))\n ).map(async (pagePath): Promise<any> => {\n const html = await readFile(pagePath, \"utf-8\");\n const $page = $.load(html);\n const pageDelay = getMeta<number | \"call\">(\n $page,\n \"example-screenshot-delay\",\n 6\n );\n const pageTimeout = getMeta<number>(\n $page,\n \"example-screenshot-timeout\",\n 60\n );\n const pageSelector = getMeta<string>(\n $page,\n \"example-screenshot-selector\",\n selector\n );\n\n // Is this an examples?\n if ($page(pageSelector).length === 0) {\n skipped.push(pagePath);\n return;\n }\n\n // Lint if requested.\n if (argv.lint) {\n lintExample(pagePath, $page);\n }\n\n // Body titles.\n let titles = $page(\"#title > *\")\n .get()\n .map((elem): string => $page(elem).text().trim());\n\n // Head title fallback.\n if (titles.length < 2) {\n titles = $page(\"head > title\")\n .text()\n .split(\"|\")\n .map((title): string => title.trim());\n }\n\n // File path fallback.\n if (titles.length < 2) {\n titles = pagePath.split(\"/\");\n }\n\n // Just ignore it.\n if (titles.length < 2) {\n console.error(\"Title resolution failed. Skipping.\");\n return;\n }\n\n // Put this example into the structure while creating any missing groups in the process.\n titles.reduce((acc, title, i, arr): any => {\n while (acc[title] != null && acc[title].path != null) {\n console.error(\"The following group already exists: \", titles);\n title += \"!\";\n }\n\n if (i === arr.length - 1) {\n if (acc[title] != null) {\n console.error(\n \"The following example has the same name as an already existing group: \",\n titles\n );\n return null;\n } else {\n const example: Example = {\n $: $page,\n delay: pageDelay,\n html: html,\n path: pagePath,\n paths: generatePaths(pathsConfig, pagePath),\n playground: generatePlaygroundData(baseURL, $page, pagePath),\n selector: pageSelector,\n timeout: pageTimeout,\n titles: titles,\n };\n\n acc[title] = example;\n\n ++stats.examples;\n }\n } else {\n return (acc[title] = acc[title] || {});\n }\n }, examples as any);\n })\n );\n\n if (skipped.length) {\n process.stdout.write(\"\\n\");\n console.info(\n [\n \"The following files don't look like examples (there is nothing to take a screenshot of):\",\n ...skipped.sort(),\n ].join(\"\\n \")\n );\n }\n\n if (stats.examples === 0) {\n console.info(\"No usable example files were found.\");\n } else if (argv.index || argv.playgrounds || argv.screenshots) {\n process.stdout.write(\"\\n\");\n\n const screenshotScript =\n screenshotScriptPath != null\n ? (await readFile(screenshotScriptPath, \"utf-8\")) || \"\"\n : \"\";\n\n const builtData = new ContentBuilder({\n examples,\n output: resolve(argv[\"output-directory\"]),\n parallel: argv.parallel,\n renderer: argv.format === \"md\" ? mdRenderer : htmlRenderer,\n screenshotScript,\n title: argv.title,\n }).build({\n index: argv.index,\n playgrounds: argv.playgrounds,\n screenshots: argv.screenshots,\n });\n\n // Create and write the page.\n if (argv.index) {\n const cummulativeReport = reduceReports(await builtData.index);\n console.info(\n `Index with ${stats.examples} examples written (${\n cummulativeReport.count\n } files in ${formatStartStopMs(cummulativeReport)}).`\n );\n }\n\n // Create and write the playgrounds.\n if (argv.index) {\n const cummulativeReport = reduceReports(await builtData.playgrounds);\n console.info(\n `Playground opener files for ${stats.examples} examples written (${\n cummulativeReport.count\n } files in ${formatStartStopMs(cummulativeReport)}).`\n );\n }\n\n // Create and write the screenshots.\n if (argv.screenshots) {\n const cummulativeReport = reduceReports(await builtData.screenshots);\n console.info(\n `Screenshot files for ${stats.examples} written (${\n cummulativeReport.count\n } files in ${formatStartStopMs(cummulativeReport)}).`\n );\n }\n\n // Verify the result.\n const checks = await builtData.checks;\n process.stdout.write(\"\\n\");\n if (checks.fail === 0) {\n console.info(\n `Verification: ${checks.okay} passed (${Math.round(\n checks.percentage\n )} %) passed.`\n );\n } else {\n if (checks.percentage >= argv.verify) {\n console.info(\n `Verification: ${checks.okay} passed (${Math.round(\n checks.percentage\n )} %), ${checks.fail} failed.\\n` +\n \"This is within the threshold set by --verify.\"\n );\n } else {\n console.error(\n `Verification: Only ${checks.okay} passed (${Math.round(\n checks.percentage\n )} %), ${checks.fail} failed.\\n` +\n \"This is not within the threshold set by --verify. Exiting with an error.\"\n );\n code = 3;\n }\n\n checks.failPaths.forEach((path): void => {\n console.error(path);\n });\n }\n }\n\n process.exitCode = code;\n})().catch((error): void => {\n process.exitCode = 1;\n console.error(error);\n});\n"],"names":["isExample","value","_typeof","path","measureStartStopMs","start","_Date$now","stop","reduceReports","reports","fallback","count","result","_reduceInstanceProperty","acc","val","_everyInstanceProperty","Math","min","Number","POSITIVE_INFINITY","max","NEGATIVE_INFINITY","formatStartStopMs","round","toFixed","formatCSS","css","prettier","format","filepath","formatHTML","html","formatJS","js","formatMD","md","generateCodePenPage","example","data","playground","title","titles","join","page","$","load","template","text","form","attr","_JSON$stringify","code","css_external","resources","js_external","generatePlaygroundData","baseURL","example$","examplePath","eventListeners","_mapInstanceProperty","get","attribs","name","test","_sliceInstanceProperty","_i","elem","children","$html","remove","fixPath","rawPath","relative","process","cwd","resolve","dirname","src","href","generateJSFiddlePage","_concatInstanceProperty","unlink","promisify","fs","writeFile","isScreenshotValid","screenshot","Jimp","read","image","firstPixel","getPixelColor","x","getWidth","y","getHeight","generateScreenshot","browser","config","debug","height","screenshotScript","width","cleanup","tmpPath","paths","local","basename","screenshotPage","prepend","commonScreenshotScript","selector","push","createIncognitoBrowserContext","context","close","newPage","setViewport","goto","split","sep","posix","waitForSelector","visible","timeout","delay","evaluate","waitForTimeout","$element","Error","element","scrollIntoView","encoding","console","error","_reverseInstanceProperty","callback","collator","Intl","Collator","ContentBuilder","_config","emit","allExamples","_processGroup","examples","okay","fail","info","_flatInstanceProperty","index","playgrounds","screenshots","length","stdout","write","getStartStopMs","_Promise","allSettled","renderer","render","output","content","filename","results","status","all","jsfiddle","codepen","env","DEBUG","puppeteer","launch","headless","slowMo","undefined","disconnect","todo","total","Array","parallel","pop","valid","report","percentage","_padStartInstanceProperty","floor","validText","msText","checks","_asyncToGenerator","failPaths","okayPaths","_flatMapInstanceProperty","compare","key","generateJSFiddle","addClass","web","generateCodePen","processGroup","level","heading","list","section","append","_sortInstanceProperty","header","item","htmlRenderer","_output","root","indexTemplate","styleTemplate","linesToContent","lines","link","_repeatInstanceProperty","items","sections","filenamePart","replace","toLowerCase","contentPart","mdRenderer","_title","yargs","strict","usage","hide","help","option","default","describe","type","demand","parseArguments","parserConfiguration","parseSync","joinURLs","urls","url","fixAbsoluteInputURL","_startsWithInstanceProperty","generatePaths","exampleAbsolutePath","exampleRelativePath","hash","createHash","update","digest","generateLocalWebPair","localRoot","webRoot","prefix","extension","argv","setMaxListeners","screenshotScriptPath","mkdir","util","readFile","getMeta","_Number$isNaN","lintExample","msgs","headTitle","_trimInstanceProperty","bodyTitle","warn","lint","parse","recursive","_endsWithInstanceProperty","pathsConfig","stats","skipped","globby","pagePath","$page","pageDelay","pageTimeout","pageSelector","i","arr","builtData","build","cummulativeReport","verify","exitCode","catch"],"mappings":"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"}
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Development utilities for the Vis family projects.
8
8
  *
9
- * @version 3.0.4
10
- * @date 2022-03-10T21:24:40.299Z
9
+ * @version 3.0.5
10
+ * @date 2022-03-12T16:41:01.018Z
11
11
  *
12
12
  * @copyright (c) 2011-2017 Almende B.V, http://almende.com
13
13
  * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
@@ -63,9 +63,9 @@ var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-s
63
63
  var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
64
64
  var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
65
65
  var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
66
- var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
67
66
  var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
68
67
  var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
68
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
69
69
  var _padStartInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/pad-start');
70
70
  var child_process = require('child_process');
71
71
 
@@ -103,9 +103,9 @@ var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefaultLega
103
103
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefaultLegacy(_Object$getOwnPropertyDescriptors);
104
104
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefaultLegacy(_Object$defineProperties);
105
105
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_Object$defineProperty);
106
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
107
106
  var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
108
107
  var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
108
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
109
109
  var _padStartInstanceProperty__default = /*#__PURE__*/_interopDefaultLegacy(_padStartInstanceProperty);
110
110
 
111
111
  var y = yargs__default["default"].strict(true).usage("test-e2e-interop [options]").hide("version").config().help().option("fail-command", {
@@ -142,23 +142,46 @@ function parseArguments() {
142
142
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
143
143
 
144
144
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context8, _context9; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context8 = ownKeys(Object(source), !0)).call(_context8, function (key) { _defineProperty__default["default"](target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context9 = ownKeys(Object(source))).call(_context9, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
145
- var ProjectState = /*#__PURE__*/_createClass__default["default"](function ProjectState() {
145
+ var ProjectState = /*#__PURE__*/_createClass__default["default"](
146
+ /**
147
+ * This will be resolved or rejected once all the tasks associated with this
148
+ * project finish.
149
+ */
150
+
151
+ /**
152
+ * Run this to mark the project as successfully finished.
153
+ */
154
+
155
+ /**
156
+ * Run this to mark the project as failed.
157
+ */
158
+
159
+ /**
160
+ * Provide information about current state of the project.
161
+ */
162
+ function ProjectState() {
146
163
  var _this = this;
147
164
 
148
165
  _classCallCheck__default["default"](this, ProjectState);
149
166
 
150
- /**
151
- * Provide information about current state of the project.
152
- */
153
- this.stage = "pending";
167
+ _defineProperty__default["default"](this, "promise", void 0);
168
+
169
+ _defineProperty__default["default"](this, "resolve", void 0);
170
+
171
+ _defineProperty__default["default"](this, "reject", void 0);
172
+
173
+ _defineProperty__default["default"](this, "stage", "pending");
174
+
154
175
  this.promise = new _Promise__default["default"](function (resolve, reject) {
155
176
  _this.resolve = resolve;
156
177
  _this.reject = reject;
157
178
  });
158
179
  });
159
180
  /**
160
- * @param title
161
- * @param details
181
+ * Output formatted error message to stderr.
182
+ *
183
+ * @param title - Some explanatory text as to what's going on.
184
+ * @param details - The error or some other message as to what went wrong.
162
185
  */
163
186
 
164
187
  function logError(title, details) {
@@ -238,7 +261,7 @@ function createSpawner(logDir, getState) {
238
261
  return new _Promise__default["default"](function (resolve, reject) {
239
262
  var _context5;
240
263
 
241
- var commandLogPath = path.join(logDir, _padStartInstanceProperty__default["default"](_context5 = "" + id).call(_context5, 3, "0") + ".log");
264
+ var commandLogPath = path.join(logDir, [path.basename(cwd).replace(/[^a-zA-Z0-9]+/g, "-"), cmd.join("-").replace(/[^a-zA-Z0-9]+/g, "-"), "id-" + _padStartInstanceProperty__default["default"](_context5 = "" + id).call(_context5, 3, "0"), "log"].join("."));
242
265
  var logStream = fsExtra.createWriteStream(commandLogPath, {
243
266
  flags: "a"
244
267
  });
@@ -252,6 +275,20 @@ function createSpawner(logDir, getState) {
252
275
  });
253
276
  child.stdout.pipe(logStream);
254
277
  child.stderr.pipe(logStream);
278
+ /**
279
+ * Add status to the file name just before the .log extension on a best
280
+ * effort basis (no errors reported)..
281
+ *
282
+ * @param code - The code or other kind of status to append.
283
+ */
284
+
285
+ function addStatusCodeToFilename(code) {
286
+ var newPath = _sliceInstanceProperty__default["default"](commandLogPath).call(commandLogPath, 0, -4) + ".status-" + code + ".log";
287
+ fsExtra.rename(commandLogPath, newPath).catch(function (error) {
288
+ console.error("Failed to rename log file to ".concat(newPath, "."), error);
289
+ });
290
+ }
291
+
255
292
  var failed = false;
256
293
  child.on("close", function (code) {
257
294
  if (failed) ; else if (code !== 0) {
@@ -297,9 +334,11 @@ function createSpawner(logDir, getState) {
297
334
  }, _callee, null, [[1, 8]]);
298
335
  }))();
299
336
  });
337
+ addStatusCodeToFilename(code !== null && code !== void 0 ? code : "null");
300
338
  reject(new Error(errorMessage));
301
339
  } else {
302
340
  logInfo("Okay", getLogMessage());
341
+ addStatusCodeToFilename(code);
303
342
  resolve();
304
343
  }
305
344
  });
@@ -307,6 +346,7 @@ function createSpawner(logDir, getState) {
307
346
  failed = true;
308
347
  logError("Fail", getLogMessage());
309
348
  execFail(cwd, failCommand, error);
349
+ addStatusCodeToFilename("error");
310
350
  reject(error);
311
351
  });
312
352
  });
@@ -1096,7 +1136,7 @@ function _test() {
1096
1136
  _context25.prev = 60;
1097
1137
  _context25.t2 = _context25["catch"](1);
1098
1138
  logError(_concatInstanceProperty__default["default"](_context24 = "Fail ".concat(projectName, " (")).call(_context24, state.stage, "):"), getStages().join("\n"));
1099
- state.reject(_context25.t2);
1139
+ state.reject(_context25.t2 instanceof Error ? _context25.t2 : new Error("" + _context25.t2));
1100
1140
 
1101
1141
  case 64:
1102
1142
  case "end":
@@ -1 +1 @@
1
- {"version":3,"file":"test-e2e-interop.js","sources":["../src/test-e2e-interop/cli.ts","../src/test-e2e-interop/util.ts","../src/test-e2e-interop/test.ts","../src/test-e2e-interop/index.ts"],"sourcesContent":["import yargs from \"yargs\";\n\nconst y = yargs\n .strict(true)\n .usage(\"test-e2e-interop [options]\")\n .hide(\"version\")\n .config()\n .help()\n\n .option(\"fail-command\", {\n demandOption: false,\n describe:\n 'This command will be run in a shell (therefore commands like \"$SHELL\" will work) after failure to inspect the state.',\n type: \"string\",\n })\n .option(\"package-script\", {\n array: true,\n default: [\"clean?\", \"build!\", \"test!\", \"generate-examples-index?\"],\n demandOption: false,\n describe:\n 'The package scripts to run with each package, either \"script-name!\" to fail or \"script-name?\" to skip if the script doesn\\'t exist in given package. By default the script is used for all packages, if you want to use it only for one add package name: \"package-name script-name!\". Scripts are invoked sequentially and command line order is preserved.',\n type: \"string\",\n })\n .option(\"project\", {\n array: true,\n default: [] as string[],\n demandOption: false,\n describe:\n 'Projects to clone using Git, copy from directory or install from tarball. The format is \"package-name URL/path\".',\n type: \"string\",\n })\n .option(\"tmp-dir\", {\n demandOption: false,\n describe:\n \"The working directory for E2E testing. If omitted a new tmp dir will be created and then disposed of.\",\n type: \"string\",\n });\n\n/**\n *\n */\nexport function parseArguments(): ReturnType<typeof y[\"parseSync\"]> {\n return y.parserConfiguration({ \"camel-case-expansion\": false }).parseSync();\n}\n","import { execSync, spawn } from \"child_process\";\nimport { join } from \"path\";\nimport { createWriteStream, readFile } from \"fs-extra\";\n\nexport class ProjectState {\n /**\n * This will be resolved or rejected once all the tasks associated with this\n * project finish.\n */\n public promise: Promise<void>;\n /**\n * Run this to mark the project as successfully finished.\n */\n public resolve!: () => void;\n /**\n * Run this to mark the project as failed.\n */\n public reject!: (reason: Error) => void;\n /**\n * Provide information about current state of the project.\n */\n public stage = \"pending\";\n\n public constructor() {\n this.promise = new Promise<void>((resolve, reject): void => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n\n/**\n * @param title\n * @param details\n */\nexport function logError(title: string, details?: string | Error): void {\n const wrappedDetails =\n details != null\n ? `\\n${details instanceof Error ? details.message : details}`\n : \"\";\n process.stderr.write(`\\n==> ${title}${wrappedDetails}\\n`);\n}\n/**\n * @param title\n * @param details\n */\nexport function logInfo(title: string, details?: string): void {\n const wrappedDetails = details ? `:\\n${details}` : \"\";\n process.stdout.write(`\\n==> ${title}${wrappedDetails}\\n`);\n}\n\n/**\n * @param cwd\n * @param failCommand\n * @param error\n */\nexport function execFail(\n cwd: string,\n failCommand: string | null | undefined,\n error: Error | string\n): void {\n if (failCommand) {\n console.error(\"\\n\\nReason for debugging:\");\n console.error(error);\n console.error(\"\\n\\nDebuging:\");\n try {\n execSync(failCommand, {\n cwd,\n encoding: \"utf8\",\n env: { ...process.env, VIS_INTEROP: \"1\" },\n stdio: \"inherit\",\n });\n } catch (error) {\n console.error(error);\n console.error(\n \"The error above is the fail command exitting with non-zero status, not an actual failure in the interop test.\"\n );\n }\n }\n}\n\nexport type Spawn = (options: SpawnOrTrhowArgs) => Promise<void>;\n\nexport interface SpawnOrTrhowArgs {\n cmd: readonly string[];\n cwd: string;\n failCommand?: string;\n}\n/**\n * @param logDir\n * @param getState\n */\nexport function createSpawner(logDir: string, getState: () => string[]): Spawn {\n let nextId = 1;\n\n return function spawnThrow({ cmd, cwd, failCommand }): ReturnType<Spawn> {\n const id = nextId++;\n const getHeaderLines = (): string[] => [\n \"time: \" + new Date().toISOString(),\n \"id: \" + id,\n \"cwd: \" + cwd,\n \"cmd: \" + cmd.map((word): string => JSON.stringify(word)).join(\" \"),\n \"states:\",\n ...getState(),\n ];\n const getLogMessage = (): string =>\n getHeaderLines()\n .map((line): string => \" \" + line)\n .join(\"\\n\");\n\n logInfo(\"Start\", getLogMessage());\n\n return new Promise((resolve, reject): void => {\n const commandLogPath = join(logDir, (\"\" + id).padStart(3, \"0\") + \".log\");\n const logStream = createWriteStream(commandLogPath, {\n flags: \"a\",\n });\n\n logStream.write(getHeaderLines().join(\"\\n\") + \"\\n\\n\");\n\n const child = spawn(cmd[0], cmd.slice(1), {\n cwd,\n env: { ...process.env, VIS_INTEROP: \"1\" },\n stdio: \"pipe\",\n });\n\n child.stdout.pipe(logStream);\n child.stderr.pipe(logStream);\n\n let failed = false;\n child.on(\"close\", (code): void => {\n if (failed) {\n // noop\n } else if (code !== 0) {\n logError(\"Fail\", getLogMessage());\n\n const errorMessage = `${cmd\n .map((word): string => `\"${word}\"`)\n .join(\" \")}: exited with ${code}.`;\n\n logStream.end((): void => {\n (async (): Promise<void> => {\n let commandOutput = \"\";\n try {\n commandOutput += await readFile(commandLogPath, \"utf-8\");\n } catch (error) {\n commandOutput += \"Failed to log command output.\";\n }\n execFail(cwd, failCommand, commandOutput + \"\\n\\n\" + errorMessage);\n })();\n });\n\n reject(new Error(errorMessage));\n } else {\n logInfo(\"Okay\", getLogMessage());\n resolve();\n }\n });\n child.on(\"error\", (error): void => {\n failed = true;\n\n logError(\"Fail\", getLogMessage());\n\n execFail(cwd, failCommand, error);\n\n reject(error);\n });\n });\n };\n}\n","import { DirResult, dirSync, setGracefulCleanup } from \"tmp\";\nimport { resolve as resolvePath } from \"path\";\nimport findUp from \"find-up\";\nimport {\n Stats,\n copy,\n copyFile,\n lstat,\n mkdir,\n mkdirp,\n readFile,\n readdir,\n writeFile,\n unlink,\n} from \"fs-extra\";\n\nimport {\n ProjectState,\n Spawn,\n createSpawner,\n execFail,\n logError,\n logInfo,\n} from \"./util\";\n\n// Remove all temporary files on process exit.\nsetGracefulCleanup();\n\ninterface TestData {\n failCommand?: string;\n packageScripts: readonly PackageScript[];\n projectPaths: ProjectPaths;\n tmpDir: DirResult;\n tmpLogsResolve(...paths: string[]): string;\n tmpReposResolve(...paths: string[]): string;\n tmpRootResolve(...paths: string[]): string;\n visDevUtilsPath: string;\n}\n\nexport interface PackageScript {\n packageName: string | null;\n scriptName: string;\n skipIfMissing: boolean;\n}\n\nexport type ProjectPaths = Record<string, string>;\n\n/**\n * @param tmpPath\n */\nasync function prepareTmpDir(tmpPath?: string): Promise<DirResult> {\n if (tmpPath) {\n await mkdirp(tmpPath);\n\n return {\n name: tmpPath,\n removeCallback: (): void => {},\n };\n } else {\n return dirSync({ unsafeCleanup: true });\n }\n}\n\n/**\n * @param projectName\n */\nfunction getTarballName(projectName: string): string {\n return `${projectName}-0.0.0-no-version.tgz`;\n}\n\n/**\n * @param root0\n * @param root0.tmpRootResolve\n * @param projectName\n */\nfunction getTarballPath(\n { tmpRootResolve }: TestData,\n projectName: string\n): string {\n return tmpRootResolve(`${projectName}.tgz`);\n}\n\n/**\n * @param data\n * @param projectName\n */\nasync function copyTarball(data: TestData, projectName: string): Promise<void> {\n await copyFile(\n data.tmpReposResolve(projectName, getTarballName(projectName)),\n getTarballPath(data, projectName)\n );\n}\n\n/**\n * @param cwd\n */\nasync function getPackageDeps(cwd: string): Promise<string[]> {\n const packageJSONPath = await findUp(\"package.json\", { cwd });\n if (packageJSONPath == null) {\n throw new Error(\"Project's package.json file not found.\");\n }\n const packageJSON = JSON.parse(await readFile(packageJSONPath, \"utf8\"));\n\n return [\n ...new Set([\n ...Object.keys(packageJSON.dependencies || {}),\n ...Object.keys(packageJSON.devDependencies || {}),\n ...Object.keys(packageJSON.peerDependencies || {}),\n ]),\n ];\n}\n\n/**\n * @param data\n * @param projectName\n */\nasync function getPackageLocalDeps(\n data: TestData,\n projectName: string\n): Promise<string[]> {\n const { projectPaths, tmpReposResolve } = data;\n const cwd = tmpReposResolve(projectName);\n return (await getPackageDeps(cwd)).filter(\n (depName): boolean => projectPaths[depName] != null\n );\n}\n\n/**\n * @param spawn\n * @param data\n * @param projectName\n */\nasync function clone(\n spawn: Spawn,\n data: TestData,\n projectName: string\n): Promise<void> {\n const { failCommand, projectPaths, tmpReposResolve } = data;\n\n const cwd = tmpReposResolve();\n const projectPath = projectPaths[projectName];\n\n if (/\\.git$/.test(projectPath)) {\n await spawn({\n cmd: [\n \"git\",\n \"clone\",\n projectPath,\n \"--single-branch\",\n \"--branch\",\n \"master\",\n \"--depth\",\n \"1\",\n ],\n cwd,\n failCommand,\n });\n } else {\n await copy(projectPath, tmpReposResolve(projectName), {\n filter(_src, dest): boolean {\n return (\n !/[\\\\/].git[\\\\/]/.test(dest) && !/[\\\\/]node_modules[\\\\/]/.test(dest)\n );\n },\n });\n }\n}\n\n/**\n * @param cwd\n * @param deps\n */\nasync function updatePackageDepVersions(\n cwd: string,\n deps: Record<string, string>\n): Promise<void> {\n const packageJSONPath = await findUp(\"package.json\", { cwd });\n if (packageJSONPath == null) {\n throw new Error(\"Project's package.json file not found.\");\n }\n const packageJSON = JSON.parse(await readFile(packageJSONPath, \"utf8\"));\n\n Object.keys(packageJSON.dependencies ?? {}).forEach((key): void => {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n packageJSON.dependencies[key] = \"file:\" + deps[key];\n }\n });\n Object.keys(packageJSON.devDependencies ?? {}).forEach((key): void => {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n packageJSON.devDependencies[key] = \"file:\" + deps[key];\n }\n });\n Object.keys(packageJSON.peerDependencies ?? {}).forEach((key): void => {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n packageJSON.peerDependencies[key] = \"file:\" + deps[key];\n }\n });\n\n await writeFile(packageJSONPath, JSON.stringify(packageJSON, undefined, 4));\n}\n\n/**\n * @param spawn\n * @param data\n * @param projectName\n */\nasync function buildTestPack(\n spawn: Spawn,\n data: TestData,\n projectName: string\n): Promise<void> {\n const { failCommand, packageScripts, tmpReposResolve } = data;\n const cwd = tmpReposResolve(projectName);\n\n await updatePackageDepVersions(\n cwd,\n (\n await getPackageLocalDeps(data, projectName)\n ).reduce<Record<string, string>>((acc, key): Record<string, string> => {\n acc[key] = getTarballPath(data, key);\n return acc;\n }, Object.create(null))\n );\n const packageLockPath = await findUp(\"package-lock.json\", { cwd });\n if (packageLockPath != null) {\n await unlink(packageLockPath);\n }\n await spawn({\n cmd: [\"npm\", \"install\"],\n cwd,\n failCommand,\n });\n\n for (const { packageName, scriptName, skipIfMissing } of packageScripts) {\n if (packageName != null && packageName !== projectName) {\n continue;\n } else if (skipIfMissing) {\n await spawn({\n cmd: [\"npm\", \"run\", scriptName, \"--if-present\"],\n cwd,\n failCommand,\n });\n } else {\n await spawn({\n cmd: [\"npm\", \"run\", scriptName],\n cwd,\n failCommand,\n });\n }\n }\n\n await spawn({ cmd: [\"npm\", \"pack\"], cwd, failCommand });\n\n await copyTarball(data, projectName);\n}\n\n/**\n * @param data\n */\nasync function checkTmpPath(data: TestData): Promise<void> {\n const tmpDir = data.tmpRootResolve();\n if ((await readdir(tmpDir)).length !== 0) {\n throw new Error(`The tmp dir (\"${tmpDir}\") is not empty.`);\n }\n}\n\nexport interface TestArgs {\n failCommand?: string;\n projectPaths: ProjectPaths;\n packageScripts: readonly PackageScript[];\n tmpPath?: string;\n}\n/**\n * @param root0\n * @param root0.failCommand\n * @param root0.packageScripts\n * @param root0.projectPaths\n * @param root0.tmpPath\n */\nexport async function test({\n failCommand,\n packageScripts,\n projectPaths,\n tmpPath,\n}: TestArgs): Promise<boolean> {\n if (process.env.VIS_INTEROP === \"1\") {\n // This would result in infinite loop otherwise.\n logInfo(\"Skipping interop test.\");\n return true;\n }\n\n const data = Object.freeze<TestData>({\n failCommand,\n packageScripts,\n projectPaths,\n tmpDir: await prepareTmpDir(\n tmpPath ? resolvePath(tmpPath, \"repos\") : undefined\n ),\n tmpLogsResolve: (...paths: string[]): string =>\n resolvePath(data.tmpDir.name, \"logs\", ...paths),\n tmpReposResolve: (...paths: string[]): string =>\n resolvePath(data.tmpDir.name, \"repos\", ...paths),\n tmpRootResolve: (...paths: string[]): string =>\n resolvePath(data.tmpDir.name, ...paths),\n visDevUtilsPath: process.cwd(),\n });\n\n const projectStatuses = new Map<string, ProjectState>(\n Object.keys(data.projectPaths).map((project): [string, ProjectState] => [\n project,\n new ProjectState(),\n ])\n );\n /**\n *\n */\n function getStages(): string[] {\n return [...projectStatuses].map(\n ([key, { stage }]): string => ` ${key}: ${stage}`\n );\n }\n\n try {\n const spawn = createSpawner(data.tmpLogsResolve(), getStages);\n\n await checkTmpPath(data);\n\n // Prepare subdirectories under the root tmp directory.\n await Promise.all(\n [\"repos\", \"logs\"].map(\n (dir): Promise<void> => mkdir(resolvePath(data.tmpDir.name, dir))\n )\n );\n\n logInfo(\"Begin\", getStages().join(\"\\n\"));\n await Promise.all(\n [...projectStatuses].map(async ([projectName, state]): Promise<void> => {\n try {\n state.stage = \"preparing\";\n const projectPath = data.projectPaths[projectName];\n const stats = await (async (): Promise<Stats | null> => {\n try {\n return await lstat(projectPath);\n } catch {\n return null;\n }\n })();\n if (stats?.isFile()) {\n // The path points to a ready to install tarball.\n state.stage = \"copying tarball\";\n await copyFile(projectPath, getTarballPath(data, projectName));\n state.stage = \"tarball copied\";\n } else {\n // The path points to a repo (maybe remote) that has to be built,\n // tested and packed first.\n state.stage = \"cloning\";\n await clone(spawn, data, projectName);\n\n state.stage = \"gathering dependencies\";\n const failedDeps: string[] = [];\n const localDeps = await getPackageLocalDeps(data, projectName);\n state.stage = `waiting for dependencies (${localDeps.join(\", \")})`;\n for (const localDep of localDeps) {\n const depStatus = projectStatuses.get(localDep);\n if (depStatus == null) {\n throw new Error(`Dependency ${localDep} not found.`);\n }\n\n try {\n await depStatus.promise;\n } catch {\n failedDeps.push(localDep);\n }\n }\n if (failedDeps.length > 0) {\n state.stage = `dependencies failed: ${failedDeps.join(\", \")}`;\n throw new Error(state.stage);\n }\n\n state.stage = \"running CI tasks\";\n await buildTestPack(spawn, data, projectName);\n state.stage = \"cloned, built, tested and packed\";\n }\n\n logInfo(`Okay ${projectName}`, getStages().join(\"\\n\"));\n state.resolve();\n } catch (error) {\n logError(\n `Fail ${projectName} (${state.stage}):`,\n getStages().join(\"\\n\")\n );\n state.reject(error);\n }\n })\n );\n\n const allSucceeded = (\n await Promise.allSettled(\n [...projectStatuses.values()].map(\n (status): Promise<void> => status.promise\n )\n )\n ).every(({ status }): boolean => status === \"fulfilled\");\n\n if (allSucceeded) {\n return true;\n } else {\n return false;\n }\n } finally {\n // Wait for all the projects to finish and log the state summary and any\n // errors encountered.\n logInfo(\"End\", getStages().join(\"\\n\"));\n for (const [projectName, { promise }] of projectStatuses) {\n try {\n await promise;\n } catch (error) {\n logError(`${projectName} failed with`, error);\n }\n }\n\n // Print the detailed logs for inspection (especially in CI).\n logInfo(\"Outputs\");\n process.stdout.write(\n [\n \"\",\n ...(await Promise.all(\n (\n await readdir(data.tmpLogsResolve())\n ).map(\n (filename): Promise<string> =>\n readFile(data.tmpLogsResolve(filename), \"UTF-8\")\n )\n )),\n \"\",\n ].join(\"\\n\\n\" + (\"-\".repeat(80) + \"\\n\").repeat(2) + \"\\n\")\n );\n\n execFail(\n data.tmpDir.name,\n failCommand,\n \"Allow the state to be inspected in debug mode before the data is lost.\"\n );\n }\n}\n","import { parseArguments } from \"./cli\";\nimport { resolve } from \"path\";\nimport { ProjectPaths, PackageScript, test } from \"./test\";\n\nconst argv = parseArguments();\n\nconst projectPaths: ProjectPaths = argv[\"project\"]\n .map((raw): [string, string] => {\n const [name, path] = raw.split(\" \", 2);\n\n if (typeof name === \"string\" && typeof path === \"string\") {\n if (/^[a-zA-Z0-9]+:\\/\\//.test(path)) {\n // Remote URL, use as is.\n return [name, path];\n } else {\n // Local path, resolve to prevent CWD issues.\n return [name, resolve(path)];\n }\n } else {\n console.error(\n `--project-path should be in 'project-name ./path' format, got '${raw}'.`\n );\n process.exit(1);\n }\n })\n .reduce<ProjectPaths>((acc, [name, path]): ProjectPaths => {\n acc[name] = path;\n return acc;\n }, {});\n\nconst rawPackageScriptArg = argv[\"package-script\"];\nconst packageScripts: PackageScript[] = rawPackageScriptArg.flatMap(\n (raw): PackageScript[] => {\n const packageScripts: PackageScript[] = [];\n\n let packageName: string | null = null;\n for (const part of raw.split(\" \")) {\n const mode = part.slice(-1);\n\n if (mode === \"?\" || mode === \"!\") {\n packageScripts.push({\n packageName,\n scriptName: part.slice(0, -1),\n skipIfMissing: mode === \"?\",\n });\n } else {\n packageName = part;\n }\n }\n\n return packageScripts;\n }\n);\n\nconst tmpPath = argv[\"tmp-dir\"] ? resolve(argv[\"tmp-dir\"]) : undefined;\n\nconst failCommand = argv[\"fail-command\"];\n\ntest({ failCommand, packageScripts, projectPaths, tmpPath })\n .then((allSucceeded): void => {\n if (!allSucceeded) {\n process.exitCode = 1;\n }\n })\n .catch((reason): void => {\n console.error(reason);\n process.exitCode = 2;\n });\n"],"names":["y","yargs","strict","usage","hide","config","help","option","demandOption","describe","type","array","default","parseArguments","parserConfiguration","parseSync","ProjectState","promise","resolve","reject","logError","title","details","wrappedDetails","Error","message","process","stderr","write","logInfo","stdout","execFail","cwd","failCommand","error","console","execSync","encoding","env","VIS_INTEROP","stdio","createSpawner","logDir","getState","nextId","spawnThrow","cmd","id","getHeaderLines","Date","toISOString","_mapInstanceProperty","word","_JSON$stringify","join","getLogMessage","line","commandLogPath","_padStartInstanceProperty","logStream","createWriteStream","flags","child","spawn","_sliceInstanceProperty","pipe","failed","on","code","errorMessage","end","commandOutput","readFile","setGracefulCleanup","prepareTmpDir","tmpPath","mkdirp","name","removeCallback","dirSync","unsafeCleanup","getTarballName","projectName","getTarballPath","tmpRootResolve","copyTarball","data","copyFile","tmpReposResolve","getPackageDeps","findUp","packageJSONPath","JSON","packageJSON","parse","_Object$keys","dependencies","devDependencies","peerDependencies","getPackageLocalDeps","projectPaths","depName","clone","projectPath","test","copy","filter","_src","dest","updatePackageDepVersions","deps","key","Object","prototype","hasOwnProperty","call","writeFile","undefined","buildTestPack","packageScripts","acc","_Object$create","packageLockPath","unlink","packageName","scriptName","skipIfMissing","checkTmpPath","tmpDir","readdir","length","getStages","projectStatuses","stage","resolvePath","paths","tmpLogsResolve","visDevUtilsPath","project","_Promise","all","dir","mkdir","state","_asyncToGenerator","lstat","stats","isFile","failedDeps","localDeps","localDep","depStatus","get","push","allSettled","_valuesInstanceProperty","status","allSucceeded","filename","_repeatInstanceProperty","argv","_reduceInstanceProperty","raw","split","path","exit","rawPackageScriptArg","_flatMapInstanceProperty","part","mode","then","exitCode","catch","reason"],"mappings":"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"}
1
+ {"version":3,"file":"test-e2e-interop.js","sources":["../src/test-e2e-interop/cli.ts","../src/test-e2e-interop/util.ts","../src/test-e2e-interop/test.ts","../src/test-e2e-interop/index.ts"],"sourcesContent":["import yargs from \"yargs\";\n\nconst y = yargs\n .strict(true)\n .usage(\"test-e2e-interop [options]\")\n .hide(\"version\")\n .config()\n .help()\n\n .option(\"fail-command\", {\n demandOption: false,\n describe:\n 'This command will be run in a shell (therefore commands like \"$SHELL\" will work) after failure to inspect the state.',\n type: \"string\",\n })\n .option(\"package-script\", {\n array: true,\n default: [\"clean?\", \"build!\", \"test!\", \"generate-examples-index?\"],\n demandOption: false,\n describe:\n 'The package scripts to run with each package, either \"script-name!\" to fail or \"script-name?\" to skip if the script doesn\\'t exist in given package. By default the script is used for all packages, if you want to use it only for one add package name: \"package-name script-name!\". Scripts are invoked sequentially and command line order is preserved.',\n type: \"string\",\n })\n .option(\"project\", {\n array: true,\n default: [] as string[],\n demandOption: false,\n describe:\n 'Projects to clone using Git, copy from directory or install from tarball. The format is \"package-name URL/path\".',\n type: \"string\",\n })\n .option(\"tmp-dir\", {\n demandOption: false,\n describe:\n \"The working directory for E2E testing. If omitted a new tmp dir will be created and then disposed of.\",\n type: \"string\",\n });\n\n/**\n *\n */\nexport function parseArguments(): ReturnType<typeof y[\"parseSync\"]> {\n return y.parserConfiguration({ \"camel-case-expansion\": false }).parseSync();\n}\n","import { execSync, spawn } from \"child_process\";\nimport { basename, join } from \"path\";\nimport { createWriteStream, readFile, rename } from \"fs-extra\";\n\nexport class ProjectState {\n /**\n * This will be resolved or rejected once all the tasks associated with this\n * project finish.\n */\n public promise: Promise<void>;\n /**\n * Run this to mark the project as successfully finished.\n */\n public resolve!: () => void;\n /**\n * Run this to mark the project as failed.\n */\n public reject!: (reason: Error) => void;\n /**\n * Provide information about current state of the project.\n */\n public stage = \"pending\";\n\n public constructor() {\n this.promise = new Promise<void>((resolve, reject): void => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n\n/**\n * Output formatted error message to stderr.\n *\n * @param title - Some explanatory text as to what's going on.\n * @param details - The error or some other message as to what went wrong.\n */\nexport function logError(title: string, details?: unknown): void {\n const wrappedDetails =\n details != null\n ? `\\n${details instanceof Error ? details.message : details}`\n : \"\";\n process.stderr.write(`\\n==> ${title}${wrappedDetails}\\n`);\n}\n/**\n * @param title\n * @param details\n */\nexport function logInfo(title: string, details?: string): void {\n const wrappedDetails = details ? `:\\n${details}` : \"\";\n process.stdout.write(`\\n==> ${title}${wrappedDetails}\\n`);\n}\n\n/**\n * @param cwd\n * @param failCommand\n * @param error\n */\nexport function execFail(\n cwd: string,\n failCommand: string | null | undefined,\n error: Error | string\n): void {\n if (failCommand) {\n console.error(\"\\n\\nReason for debugging:\");\n console.error(error);\n console.error(\"\\n\\nDebuging:\");\n try {\n execSync(failCommand, {\n cwd,\n encoding: \"utf8\",\n env: { ...process.env, VIS_INTEROP: \"1\" },\n stdio: \"inherit\",\n });\n } catch (error) {\n console.error(error);\n console.error(\n \"The error above is the fail command exitting with non-zero status, not an actual failure in the interop test.\"\n );\n }\n }\n}\n\nexport type Spawn = (options: SpawnOrTrhowArgs) => Promise<void>;\n\nexport interface SpawnOrTrhowArgs {\n cmd: readonly string[];\n cwd: string;\n failCommand?: string;\n}\n/**\n * @param logDir\n * @param getState\n */\nexport function createSpawner(logDir: string, getState: () => string[]): Spawn {\n let nextId = 1;\n\n return function spawnThrow({ cmd, cwd, failCommand }): ReturnType<Spawn> {\n const id = nextId++;\n const getHeaderLines = (): string[] => [\n \"time: \" + new Date().toISOString(),\n \"id: \" + id,\n \"cwd: \" + cwd,\n \"cmd: \" + cmd.map((word): string => JSON.stringify(word)).join(\" \"),\n \"states:\",\n ...getState(),\n ];\n const getLogMessage = (): string =>\n getHeaderLines()\n .map((line): string => \" \" + line)\n .join(\"\\n\");\n\n logInfo(\"Start\", getLogMessage());\n\n return new Promise((resolve, reject): void => {\n const commandLogPath = join(\n logDir,\n [\n basename(cwd).replace(/[^a-zA-Z0-9]+/g, \"-\"),\n cmd.join(\"-\").replace(/[^a-zA-Z0-9]+/g, \"-\"),\n \"id-\" + (\"\" + id).padStart(3, \"0\"),\n \"log\",\n ].join(\".\")\n );\n const logStream = createWriteStream(commandLogPath, {\n flags: \"a\",\n });\n\n logStream.write(getHeaderLines().join(\"\\n\") + \"\\n\\n\");\n\n const child = spawn(cmd[0], cmd.slice(1), {\n cwd,\n env: { ...process.env, VIS_INTEROP: \"1\" },\n stdio: \"pipe\",\n });\n\n child.stdout.pipe(logStream);\n child.stderr.pipe(logStream);\n\n /**\n * Add status to the file name just before the .log extension on a best\n * effort basis (no errors reported)..\n *\n * @param code - The code or other kind of status to append.\n */\n function addStatusCodeToFilename(code: string | number): void {\n const newPath =\n commandLogPath.slice(0, -4) + \".status-\" + code + \".log\";\n rename(commandLogPath, newPath).catch((error): void => {\n console.error(`Failed to rename log file to ${newPath}.`, error);\n });\n }\n\n let failed = false;\n child.on(\"close\", (code): void => {\n if (failed) {\n // noop\n } else if (code !== 0) {\n logError(\"Fail\", getLogMessage());\n\n const errorMessage = `${cmd\n .map((word): string => `\"${word}\"`)\n .join(\" \")}: exited with ${code}.`;\n\n logStream.end((): void => {\n (async (): Promise<void> => {\n let commandOutput = \"\";\n try {\n commandOutput += await readFile(commandLogPath, \"utf-8\");\n } catch (error) {\n commandOutput += \"Failed to log command output.\";\n }\n execFail(cwd, failCommand, commandOutput + \"\\n\\n\" + errorMessage);\n })();\n });\n\n addStatusCodeToFilename(code ?? \"null\");\n reject(new Error(errorMessage));\n } else {\n logInfo(\"Okay\", getLogMessage());\n addStatusCodeToFilename(code);\n resolve();\n }\n });\n child.on(\"error\", (error): void => {\n failed = true;\n\n logError(\"Fail\", getLogMessage());\n\n execFail(cwd, failCommand, error);\n\n addStatusCodeToFilename(\"error\");\n reject(error);\n });\n });\n };\n}\n","import { DirResult, dirSync, setGracefulCleanup } from \"tmp\";\nimport { resolve as resolvePath } from \"path\";\nimport findUp from \"find-up\";\nimport {\n Stats,\n copy,\n copyFile,\n lstat,\n mkdir,\n mkdirp,\n readFile,\n readdir,\n writeFile,\n unlink,\n} from \"fs-extra\";\n\nimport {\n ProjectState,\n Spawn,\n createSpawner,\n execFail,\n logError,\n logInfo,\n} from \"./util\";\n\n// Remove all temporary files on process exit.\nsetGracefulCleanup();\n\ninterface TestData {\n failCommand?: string;\n packageScripts: readonly PackageScript[];\n projectPaths: ProjectPaths;\n tmpDir: DirResult;\n tmpLogsResolve(...paths: string[]): string;\n tmpReposResolve(...paths: string[]): string;\n tmpRootResolve(...paths: string[]): string;\n visDevUtilsPath: string;\n}\n\nexport interface PackageScript {\n packageName: string | null;\n scriptName: string;\n skipIfMissing: boolean;\n}\n\nexport type ProjectPaths = Record<string, string>;\n\n/**\n * @param tmpPath\n */\nasync function prepareTmpDir(tmpPath?: string): Promise<DirResult> {\n if (tmpPath) {\n await mkdirp(tmpPath);\n\n return {\n name: tmpPath,\n removeCallback: (): void => {},\n };\n } else {\n return dirSync({ unsafeCleanup: true });\n }\n}\n\n/**\n * @param projectName\n */\nfunction getTarballName(projectName: string): string {\n return `${projectName}-0.0.0-no-version.tgz`;\n}\n\n/**\n * @param root0\n * @param root0.tmpRootResolve\n * @param projectName\n */\nfunction getTarballPath(\n { tmpRootResolve }: TestData,\n projectName: string\n): string {\n return tmpRootResolve(`${projectName}.tgz`);\n}\n\n/**\n * @param data\n * @param projectName\n */\nasync function copyTarball(data: TestData, projectName: string): Promise<void> {\n await copyFile(\n data.tmpReposResolve(projectName, getTarballName(projectName)),\n getTarballPath(data, projectName)\n );\n}\n\n/**\n * @param cwd\n */\nasync function getPackageDeps(cwd: string): Promise<string[]> {\n const packageJSONPath = await findUp(\"package.json\", { cwd });\n if (packageJSONPath == null) {\n throw new Error(\"Project's package.json file not found.\");\n }\n const packageJSON = JSON.parse(await readFile(packageJSONPath, \"utf8\"));\n\n return [\n ...new Set([\n ...Object.keys(packageJSON.dependencies || {}),\n ...Object.keys(packageJSON.devDependencies || {}),\n ...Object.keys(packageJSON.peerDependencies || {}),\n ]),\n ];\n}\n\n/**\n * @param data\n * @param projectName\n */\nasync function getPackageLocalDeps(\n data: TestData,\n projectName: string\n): Promise<string[]> {\n const { projectPaths, tmpReposResolve } = data;\n const cwd = tmpReposResolve(projectName);\n return (await getPackageDeps(cwd)).filter(\n (depName): boolean => projectPaths[depName] != null\n );\n}\n\n/**\n * @param spawn\n * @param data\n * @param projectName\n */\nasync function clone(\n spawn: Spawn,\n data: TestData,\n projectName: string\n): Promise<void> {\n const { failCommand, projectPaths, tmpReposResolve } = data;\n\n const cwd = tmpReposResolve();\n const projectPath = projectPaths[projectName];\n\n if (/\\.git$/.test(projectPath)) {\n await spawn({\n cmd: [\n \"git\",\n \"clone\",\n projectPath,\n \"--single-branch\",\n \"--branch\",\n \"master\",\n \"--depth\",\n \"1\",\n ],\n cwd,\n failCommand,\n });\n } else {\n await copy(projectPath, tmpReposResolve(projectName), {\n filter(_src, dest): boolean {\n return (\n !/[\\\\/].git[\\\\/]/.test(dest) && !/[\\\\/]node_modules[\\\\/]/.test(dest)\n );\n },\n });\n }\n}\n\n/**\n * @param cwd\n * @param deps\n */\nasync function updatePackageDepVersions(\n cwd: string,\n deps: Record<string, string>\n): Promise<void> {\n const packageJSONPath = await findUp(\"package.json\", { cwd });\n if (packageJSONPath == null) {\n throw new Error(\"Project's package.json file not found.\");\n }\n const packageJSON = JSON.parse(await readFile(packageJSONPath, \"utf8\"));\n\n Object.keys(packageJSON.dependencies ?? {}).forEach((key): void => {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n packageJSON.dependencies[key] = \"file:\" + deps[key];\n }\n });\n Object.keys(packageJSON.devDependencies ?? {}).forEach((key): void => {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n packageJSON.devDependencies[key] = \"file:\" + deps[key];\n }\n });\n Object.keys(packageJSON.peerDependencies ?? {}).forEach((key): void => {\n if (Object.prototype.hasOwnProperty.call(deps, key)) {\n packageJSON.peerDependencies[key] = \"file:\" + deps[key];\n }\n });\n\n await writeFile(packageJSONPath, JSON.stringify(packageJSON, undefined, 4));\n}\n\n/**\n * @param spawn\n * @param data\n * @param projectName\n */\nasync function buildTestPack(\n spawn: Spawn,\n data: TestData,\n projectName: string\n): Promise<void> {\n const { failCommand, packageScripts, tmpReposResolve } = data;\n const cwd = tmpReposResolve(projectName);\n\n await updatePackageDepVersions(\n cwd,\n (\n await getPackageLocalDeps(data, projectName)\n ).reduce<Record<string, string>>((acc, key): Record<string, string> => {\n acc[key] = getTarballPath(data, key);\n return acc;\n }, Object.create(null))\n );\n const packageLockPath = await findUp(\"package-lock.json\", { cwd });\n if (packageLockPath != null) {\n await unlink(packageLockPath);\n }\n await spawn({\n cmd: [\"npm\", \"install\"],\n cwd,\n failCommand,\n });\n\n for (const { packageName, scriptName, skipIfMissing } of packageScripts) {\n if (packageName != null && packageName !== projectName) {\n continue;\n } else if (skipIfMissing) {\n await spawn({\n cmd: [\"npm\", \"run\", scriptName, \"--if-present\"],\n cwd,\n failCommand,\n });\n } else {\n await spawn({\n cmd: [\"npm\", \"run\", scriptName],\n cwd,\n failCommand,\n });\n }\n }\n\n await spawn({ cmd: [\"npm\", \"pack\"], cwd, failCommand });\n\n await copyTarball(data, projectName);\n}\n\n/**\n * @param data\n */\nasync function checkTmpPath(data: TestData): Promise<void> {\n const tmpDir = data.tmpRootResolve();\n if ((await readdir(tmpDir)).length !== 0) {\n throw new Error(`The tmp dir (\"${tmpDir}\") is not empty.`);\n }\n}\n\nexport interface TestArgs {\n failCommand?: string;\n projectPaths: ProjectPaths;\n packageScripts: readonly PackageScript[];\n tmpPath?: string;\n}\n/**\n * @param root0\n * @param root0.failCommand\n * @param root0.packageScripts\n * @param root0.projectPaths\n * @param root0.tmpPath\n */\nexport async function test({\n failCommand,\n packageScripts,\n projectPaths,\n tmpPath,\n}: TestArgs): Promise<boolean> {\n if (process.env.VIS_INTEROP === \"1\") {\n // This would result in infinite loop otherwise.\n logInfo(\"Skipping interop test.\");\n return true;\n }\n\n const data = Object.freeze<TestData>({\n failCommand,\n packageScripts,\n projectPaths,\n tmpDir: await prepareTmpDir(\n tmpPath ? resolvePath(tmpPath, \"repos\") : undefined\n ),\n tmpLogsResolve: (...paths: string[]): string =>\n resolvePath(data.tmpDir.name, \"logs\", ...paths),\n tmpReposResolve: (...paths: string[]): string =>\n resolvePath(data.tmpDir.name, \"repos\", ...paths),\n tmpRootResolve: (...paths: string[]): string =>\n resolvePath(data.tmpDir.name, ...paths),\n visDevUtilsPath: process.cwd(),\n });\n\n const projectStatuses = new Map<string, ProjectState>(\n Object.keys(data.projectPaths).map((project): [string, ProjectState] => [\n project,\n new ProjectState(),\n ])\n );\n /**\n *\n */\n function getStages(): string[] {\n return [...projectStatuses].map(\n ([key, { stage }]): string => ` ${key}: ${stage}`\n );\n }\n\n try {\n const spawn = createSpawner(data.tmpLogsResolve(), getStages);\n\n await checkTmpPath(data);\n\n // Prepare subdirectories under the root tmp directory.\n await Promise.all(\n [\"repos\", \"logs\"].map(\n (dir): Promise<void> => mkdir(resolvePath(data.tmpDir.name, dir))\n )\n );\n\n logInfo(\"Begin\", getStages().join(\"\\n\"));\n await Promise.all(\n [...projectStatuses].map(async ([projectName, state]): Promise<void> => {\n try {\n state.stage = \"preparing\";\n const projectPath = data.projectPaths[projectName];\n const stats = await (async (): Promise<Stats | null> => {\n try {\n return await lstat(projectPath);\n } catch {\n return null;\n }\n })();\n if (stats?.isFile()) {\n // The path points to a ready to install tarball.\n state.stage = \"copying tarball\";\n await copyFile(projectPath, getTarballPath(data, projectName));\n state.stage = \"tarball copied\";\n } else {\n // The path points to a repo (maybe remote) that has to be built,\n // tested and packed first.\n state.stage = \"cloning\";\n await clone(spawn, data, projectName);\n\n state.stage = \"gathering dependencies\";\n const failedDeps: string[] = [];\n const localDeps = await getPackageLocalDeps(data, projectName);\n state.stage = `waiting for dependencies (${localDeps.join(\", \")})`;\n for (const localDep of localDeps) {\n const depStatus = projectStatuses.get(localDep);\n if (depStatus == null) {\n throw new Error(`Dependency ${localDep} not found.`);\n }\n\n try {\n await depStatus.promise;\n } catch {\n failedDeps.push(localDep);\n }\n }\n if (failedDeps.length > 0) {\n state.stage = `dependencies failed: ${failedDeps.join(\", \")}`;\n throw new Error(state.stage);\n }\n\n state.stage = \"running CI tasks\";\n await buildTestPack(spawn, data, projectName);\n state.stage = \"cloned, built, tested and packed\";\n }\n\n logInfo(`Okay ${projectName}`, getStages().join(\"\\n\"));\n state.resolve();\n } catch (error) {\n logError(\n `Fail ${projectName} (${state.stage}):`,\n getStages().join(\"\\n\")\n );\n state.reject(error instanceof Error ? error : new Error(\"\" + error));\n }\n })\n );\n\n const allSucceeded = (\n await Promise.allSettled(\n [...projectStatuses.values()].map(\n (status): Promise<void> => status.promise\n )\n )\n ).every(({ status }): boolean => status === \"fulfilled\");\n\n if (allSucceeded) {\n return true;\n } else {\n return false;\n }\n } finally {\n // Wait for all the projects to finish and log the state summary and any\n // errors encountered.\n logInfo(\"End\", getStages().join(\"\\n\"));\n for (const [projectName, { promise }] of projectStatuses) {\n try {\n await promise;\n } catch (error) {\n logError(`${projectName} failed with`, error);\n }\n }\n\n // Print the detailed logs for inspection (especially in CI).\n logInfo(\"Outputs\");\n process.stdout.write(\n [\n \"\",\n ...(await Promise.all(\n (\n await readdir(data.tmpLogsResolve())\n ).map(\n (filename): Promise<string> =>\n readFile(data.tmpLogsResolve(filename), \"UTF-8\")\n )\n )),\n \"\",\n ].join(\"\\n\\n\" + (\"-\".repeat(80) + \"\\n\").repeat(2) + \"\\n\")\n );\n\n execFail(\n data.tmpDir.name,\n failCommand,\n \"Allow the state to be inspected in debug mode before the data is lost.\"\n );\n }\n}\n","import { parseArguments } from \"./cli\";\nimport { resolve } from \"path\";\nimport { ProjectPaths, PackageScript, test } from \"./test\";\n\nconst argv = parseArguments();\n\nconst projectPaths: ProjectPaths = argv[\"project\"]\n .map((raw): [string, string] => {\n const [name, path] = raw.split(\" \", 2);\n\n if (typeof name === \"string\" && typeof path === \"string\") {\n if (/^[a-zA-Z0-9]+:\\/\\//.test(path)) {\n // Remote URL, use as is.\n return [name, path];\n } else {\n // Local path, resolve to prevent CWD issues.\n return [name, resolve(path)];\n }\n } else {\n console.error(\n `--project-path should be in 'project-name ./path' format, got '${raw}'.`\n );\n process.exit(1);\n }\n })\n .reduce<ProjectPaths>((acc, [name, path]): ProjectPaths => {\n acc[name] = path;\n return acc;\n }, {});\n\nconst rawPackageScriptArg = argv[\"package-script\"];\nconst packageScripts: PackageScript[] = rawPackageScriptArg.flatMap(\n (raw): PackageScript[] => {\n const packageScripts: PackageScript[] = [];\n\n let packageName: string | null = null;\n for (const part of raw.split(\" \")) {\n const mode = part.slice(-1);\n\n if (mode === \"?\" || mode === \"!\") {\n packageScripts.push({\n packageName,\n scriptName: part.slice(0, -1),\n skipIfMissing: mode === \"?\",\n });\n } else {\n packageName = part;\n }\n }\n\n return packageScripts;\n }\n);\n\nconst tmpPath = argv[\"tmp-dir\"] ? resolve(argv[\"tmp-dir\"]) : undefined;\n\nconst failCommand = argv[\"fail-command\"];\n\ntest({ failCommand, packageScripts, projectPaths, tmpPath })\n .then((allSucceeded): void => {\n if (!allSucceeded) {\n process.exitCode = 1;\n }\n })\n .catch((reason): void => {\n console.error(reason);\n process.exitCode = 2;\n });\n"],"names":["y","yargs","strict","usage","hide","config","help","option","demandOption","describe","type","array","default","parseArguments","parserConfiguration","parseSync","ProjectState","promise","resolve","reject","logError","title","details","wrappedDetails","Error","message","process","stderr","write","logInfo","stdout","execFail","cwd","failCommand","error","console","execSync","encoding","env","VIS_INTEROP","stdio","createSpawner","logDir","getState","nextId","spawnThrow","cmd","id","getHeaderLines","Date","toISOString","_mapInstanceProperty","word","_JSON$stringify","join","getLogMessage","line","commandLogPath","basename","replace","_padStartInstanceProperty","logStream","createWriteStream","flags","child","spawn","_sliceInstanceProperty","pipe","addStatusCodeToFilename","code","newPath","rename","catch","failed","on","errorMessage","end","commandOutput","readFile","setGracefulCleanup","prepareTmpDir","tmpPath","mkdirp","name","removeCallback","dirSync","unsafeCleanup","getTarballName","projectName","getTarballPath","tmpRootResolve","copyTarball","data","copyFile","tmpReposResolve","getPackageDeps","findUp","packageJSONPath","JSON","packageJSON","parse","_Object$keys","dependencies","devDependencies","peerDependencies","getPackageLocalDeps","projectPaths","depName","clone","projectPath","test","copy","filter","_src","dest","updatePackageDepVersions","deps","key","Object","prototype","hasOwnProperty","call","writeFile","undefined","buildTestPack","packageScripts","acc","_Object$create","packageLockPath","unlink","packageName","scriptName","skipIfMissing","checkTmpPath","tmpDir","readdir","length","getStages","projectStatuses","stage","resolvePath","paths","tmpLogsResolve","visDevUtilsPath","project","_Promise","all","dir","mkdir","state","_asyncToGenerator","lstat","stats","isFile","failedDeps","localDeps","localDep","depStatus","get","push","allSettled","_valuesInstanceProperty","status","allSucceeded","filename","_repeatInstanceProperty","argv","_reduceInstanceProperty","raw","split","path","exit","rawPackageScriptArg","_flatMapInstanceProperty","part","mode","then","exitCode","reason"],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  *
5
5
  * Development utilities for the Vis family projects.
6
6
  *
7
- * @version 3.0.4
8
- * @date 2022-03-10T21:24:40.299Z
7
+ * @version 3.0.5
8
+ * @date 2022-03-12T16:41:01.018Z
9
9
  *
10
10
  * @copyright (c) 2011-2017 Almende B.V, http://almende.com
11
11
  * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
@@ -4,8 +4,8 @@
4
4
  *
5
5
  * Development utilities for the Vis family projects.
6
6
  *
7
- * @version 3.0.4
8
- * @date 2022-03-10T21:24:40.299Z
7
+ * @version 3.0.5
8
+ * @date 2022-03-12T16:41:01.018Z
9
9
  *
10
10
  * @copyright (c) 2011-2017 Almende B.V, http://almende.com
11
11
  * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vis-dev-utils",
3
- "version": "3.0.4",
3
+ "version": "3.0.5",
4
4
  "description": "Development utilities for the Vis family projects.",
5
5
  "homepage": "http://visjs.org/",
6
6
  "license": "(Apache-2.0 OR MIT)",
@@ -96,7 +96,7 @@
96
96
  "postcss-assets": "6.0.0",
97
97
  "prettier": "2.5.1",
98
98
  "puppeteer": "10.4.0",
99
- "rollup": "^2.61.0",
99
+ "rollup": "2.61.1",
100
100
  "rollup-plugin-analyzer": "4.0.0",
101
101
  "rollup-plugin-babel": "4.4.0",
102
102
  "rollup-plugin-copy": "3.4.0",
@@ -107,7 +107,7 @@
107
107
  "rollup-plugin-typescript2": "0.31.2",
108
108
  "tmp": "0.2.1",
109
109
  "tmp-promise": "3.0.2",
110
- "typescript": "^4.2.4",
110
+ "typescript": "4.4.4",
111
111
  "yargs": "17.3.1"
112
112
  },
113
113
  "devDependencies": {
@@ -125,7 +125,7 @@
125
125
  "eslint": "7.32.0",
126
126
  "fs-extra": "10.0.1",
127
127
  "husky": "7.0.4",
128
- "lint-staged": "11.2.6",
128
+ "lint-staged": "12.3.5",
129
129
  "mocha": "9.2.1",
130
130
  "npm-run-all": "4.1.5",
131
131
  "opencollective": "1.0.3",