@mnaoumov/typescript-dev-toolkit 5.2.0 → 5.3.0

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.
@@ -53,6 +53,7 @@ __export(index_exports, {
53
53
  git: () => git,
54
54
  json: () => json,
55
55
  "library-build": () => library_build,
56
+ "link-check-skip": () => link_check_skip,
56
57
  linters: () => linters,
57
58
  "nano-staged-config": () => nano_staged_config,
58
59
  npm: () => npm,
@@ -92,6 +93,7 @@ var gate = __toESM(((module) => module && module.__esModule && 'default' in modu
92
93
  var git = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./git.cjs')), 1);
93
94
  var json = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./json.cjs')), 1);
94
95
  var library_build = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./library-build.cjs')), 1);
96
+ var link_check_skip = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./link-check-skip.cjs')), 1);
95
97
  var linters = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./linters/index.cjs')), 1);
96
98
  var nano_staged_config = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./nano-staged-config.cjs')), 1);
97
99
  var npm_publish = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./npm-publish.cjs')), 1);
@@ -131,6 +133,7 @@ var version = __toESM(((module) => module && module.__esModule && 'default' in m
131
133
  git,
132
134
  json,
133
135
  "library-build": null,
136
+ "link-check-skip": null,
134
137
  linters,
135
138
  "nano-staged-config": null,
136
139
  npm,
@@ -149,4 +152,4 @@ var version = __toESM(((module) => module && module.__esModule && 'default' in m
149
152
  "validate-dependencies": null,
150
153
  version
151
154
  });
152
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1aWxkJyBmcm9tICcuL2J1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdidWxrLWNvbmN1cnJlbmN5JyBmcm9tICcuL2J1bGstY29uY3VycmVuY3kudHMnO1xuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjaGVjay1wcm9qZWN0LXR5cGVzJyBmcm9tICcuL2NoZWNrLXByb2plY3QtdHlwZXMudHMnO1xuZXhwb3J0ICogYXMgJ2NsaS11dGlscycgZnJvbSAnLi9jbGktdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtZ2VuZXJhdG9yJyBmcm9tICcuL2NvZGUtZ2VuZXJhdG9yLnRzJztcbmV4cG9ydCAqIGFzICdjb21taXRsaW50LWNvbmZpZycgZnJvbSAnLi9jb21taXRsaW50LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMnIGZyb20gJy4vY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtbGludC1tZC1oZWFkZXInIGZyb20gJy4vY29tbWl0bGludC1saW50LW1kLWhlYWRlci50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlcicgZnJvbSAnLi9jb21taXRsaW50LXNwZWxsY2hlY2staGVhZGVyLnRzJztcbmV4cG9ydCAqIGFzICdkb2NzLXNpdGUnIGZyb20gJy4vZG9jcy1zaXRlL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlbnYtdG9nZ2xlJyBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuZXhwb3J0ICogYXMgJ2V4ZWMnIGZyb20gJy4vZXhlYy50cyc7XG5leHBvcnQgKiBhcyAnZm9yYmlkZGVuLXBhdHRlcm5zJyBmcm9tICcuL2ZvcmJpZGRlbi1wYXR0ZXJucy50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdmcycgZnJvbSAnLi9mcy50cyc7XG5leHBvcnQgKiBhcyAnZ2F0ZScgZnJvbSAnLi9nYXRlLnRzJztcbmV4cG9ydCAqIGFzICdnaXQnIGZyb20gJy4vZ2l0LnRzJztcbmV4cG9ydCAqIGFzICdqc29uJyBmcm9tICcuL2pzb24udHMnO1xuZXhwb3J0ICogYXMgJ2xpYnJhcnktYnVpbGQnIGZyb20gJy4vbGlicmFyeS1idWlsZC50cyc7XG5leHBvcnQgKiBhcyAnbGludGVycycgZnJvbSAnLi9saW50ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICduYW5vLXN0YWdlZC1jb25maWcnIGZyb20gJy4vbmFuby1zdGFnZWQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICducG0tcHVibGlzaCcgZnJvbSAnLi9ucG0tcHVibGlzaC50cyc7XG5leHBvcnQgKiBhcyAnbnBtLXJ1bicgZnJvbSAnLi9ucG0tcnVuLnRzJztcbmV4cG9ydCAqIGFzICducG0nIGZyb20gJy4vbnBtLnRzJztcbmV4cG9ydCAqIGFzICdwYWNrYWdlLWxvY2staW50ZWdyaXR5JyBmcm9tICcuL3BhY2thZ2UtbG9jay1pbnRlZ3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ3BhY2thZ2UtbWFuYWdlcicgZnJvbSAnLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgJ3JlbGVhc2VkLWlzc3VlcycgZnJvbSAnLi9yZWxlYXNlZC1pc3N1ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3JlcG8tcGF0aHMnIGZyb20gJy4vcmVwby1wYXRocy50cyc7XG5leHBvcnQgKiBhcyAncm9vdCcgZnJvbSAnLi9yb290LnRzJztcbmV4cG9ydCAqIGFzICdzaGFyZWQtY29uZmlnLWZpbGVzJyBmcm9tICcuL3NoYXJlZC1jb25maWctZmlsZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Vwc3RyZWFtLXN5bmMtY2xpJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMtY2xpLnRzJztcbmV4cG9ydCAqIGFzICd1cHN0cmVhbS1zeW5jJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlY2xhcmF0aW9ucycgZnJvbSAnLi92YWxpZGF0ZS1kZWNsYXJhdGlvbnMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlcGVuZGVuY2llcycgZnJvbSAnLi92YWxpZGF0ZS1kZXBlbmRlbmNpZXMudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQSw0QkFBQUE7QUFBQSxFQUFBO0FBQUEsK0JBQUFDO0FBQUEsRUFBQSxtQkFBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSxtQkFBQUM7QUFBQSxFQUFBLG9CQUFBQztBQUFBLEVBQUE7QUFBQSw4QkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx5QkFBQUM7QUFBQSxFQUFBO0FBQUEsOEJBQUFDO0FBQUEsRUFBQTtBQUFBLHVCQUFBQztBQUFBLEVBQUEsaUJBQUFDO0FBQUEsRUFBQSxnQ0FBQUM7QUFBQSxFQUFBLHlCQUFBQztBQUFBLEVBQUEseUJBQUFDO0FBQUEsRUFBQSxvQkFBQUM7QUFBQSxFQUFBO0FBQUEsK0JBQUFDO0FBQUEsRUFBQSxzQkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSwrQkFBQUM7QUFBQSxFQUFBLCtCQUFBQztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBRUEsWUFBeUI7QUFDekIsSUFBQXhCLG1CQUFvQztBQUNwQyxlQUE0QjtBQUM1QixJQUFBQyxzQkFBdUM7QUFDdkMsSUFBQUMsWUFBNkI7QUFDN0IsSUFBQUMsaUJBQWtDO0FBQ2xDLElBQUFDLG9CQUFxQztBQUNyQyxJQUFBQyxnQ0FBaUQ7QUFDakQsSUFBQUMsNEJBQTZDO0FBQzdDLElBQUFDLCtCQUFnRDtBQUNoRCxJQUFBQyxZQUE2QjtBQUM3QixJQUFBQyxhQUE4QjtBQUM5QixXQUF3QjtBQUN4QixJQUFBQyxxQkFBc0M7QUFDdEMsaUJBQThCO0FBQzlCLFNBQXNCO0FBQ3RCLFdBQXdCO0FBQ3hCLFVBQXVCO0FBQ3ZCLFdBQXdCO0FBQ3hCLElBQUFDLGdCQUFpQztBQUNqQyxjQUEyQjtBQUMzQixJQUFBQyxxQkFBc0M7QUFDdEMsSUFBQUMsY0FBK0I7QUFDL0IsSUFBQUMsVUFBMkI7QUFDM0IsVUFBdUI7QUFDdkIsSUFBQUMseUJBQTBDO0FBQzFDLElBQUFDLGtCQUFtQztBQUNuQyxJQUFBQyxrQkFBbUM7QUFDbkMsSUFBQUMsYUFBOEI7QUFDOUIsV0FBd0I7QUFDeEIsSUFBQUMsc0JBQXVDO0FBQ3ZDLElBQUFDLGVBQWdDO0FBQ2hDLElBQUFFLG9CQUFxQztBQUNyQyxJQUFBRCxnQkFBaUM7QUFDakMsSUFBQUUsd0JBQXlDO0FBQ3pDLElBQUFDLHdCQUF5QztBQUN6QyxjQUEyQjsiLAogICJuYW1lcyI6IFsiYnVsay1jb25jdXJyZW5jeSIsICJjaGVjay1wcm9qZWN0LXR5cGVzIiwgImNsaS11dGlscyIsICJjb2RlLWdlbmVyYXRvciIsICJjb21taXRsaW50LWNvbmZpZyIsICJjb21taXRsaW50LWZvcmJpZGRlbi1wYXR0ZXJucyIsICJjb21taXRsaW50LWxpbnQtbWQtaGVhZGVyIiwgImNvbW1pdGxpbnQtc3BlbGxjaGVjay1oZWFkZXIiLCAiZG9jcy1zaXRlIiwgImVudi10b2dnbGUiLCAiZm9yYmlkZGVuLXBhdHRlcm5zIiwgImxpYnJhcnktYnVpbGQiLCAibmFuby1zdGFnZWQtY29uZmlnIiwgIm5wbS1wdWJsaXNoIiwgIm5wbS1ydW4iLCAicGFja2FnZS1sb2NrLWludGVncml0eSIsICJwYWNrYWdlLW1hbmFnZXIiLCAicmVsZWFzZWQtaXNzdWVzIiwgInJlcG8tcGF0aHMiLCAic2hhcmVkLWNvbmZpZy1maWxlcyIsICJ0ZXN0LXJ1bm5lcnMiLCAidXBzdHJlYW0tc3luYyIsICJ1cHN0cmVhbS1zeW5jLWNsaSIsICJ2YWxpZGF0ZS1kZWNsYXJhdGlvbnMiLCAidmFsaWRhdGUtZGVwZW5kZW5jaWVzIl0KfQo=
155
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1aWxkJyBmcm9tICcuL2J1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdidWxrLWNvbmN1cnJlbmN5JyBmcm9tICcuL2J1bGstY29uY3VycmVuY3kudHMnO1xuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjaGVjay1wcm9qZWN0LXR5cGVzJyBmcm9tICcuL2NoZWNrLXByb2plY3QtdHlwZXMudHMnO1xuZXhwb3J0ICogYXMgJ2NsaS11dGlscycgZnJvbSAnLi9jbGktdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtZ2VuZXJhdG9yJyBmcm9tICcuL2NvZGUtZ2VuZXJhdG9yLnRzJztcbmV4cG9ydCAqIGFzICdjb21taXRsaW50LWNvbmZpZycgZnJvbSAnLi9jb21taXRsaW50LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMnIGZyb20gJy4vY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtbGludC1tZC1oZWFkZXInIGZyb20gJy4vY29tbWl0bGludC1saW50LW1kLWhlYWRlci50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlcicgZnJvbSAnLi9jb21taXRsaW50LXNwZWxsY2hlY2staGVhZGVyLnRzJztcbmV4cG9ydCAqIGFzICdkb2NzLXNpdGUnIGZyb20gJy4vZG9jcy1zaXRlL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlbnYtdG9nZ2xlJyBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuZXhwb3J0ICogYXMgJ2V4ZWMnIGZyb20gJy4vZXhlYy50cyc7XG5leHBvcnQgKiBhcyAnZm9yYmlkZGVuLXBhdHRlcm5zJyBmcm9tICcuL2ZvcmJpZGRlbi1wYXR0ZXJucy50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdmcycgZnJvbSAnLi9mcy50cyc7XG5leHBvcnQgKiBhcyAnZ2F0ZScgZnJvbSAnLi9nYXRlLnRzJztcbmV4cG9ydCAqIGFzICdnaXQnIGZyb20gJy4vZ2l0LnRzJztcbmV4cG9ydCAqIGFzICdqc29uJyBmcm9tICcuL2pzb24udHMnO1xuZXhwb3J0ICogYXMgJ2xpYnJhcnktYnVpbGQnIGZyb20gJy4vbGlicmFyeS1idWlsZC50cyc7XG5leHBvcnQgKiBhcyAnbGluay1jaGVjay1za2lwJyBmcm9tICcuL2xpbmstY2hlY2stc2tpcC50cyc7XG5leHBvcnQgKiBhcyAnbGludGVycycgZnJvbSAnLi9saW50ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICduYW5vLXN0YWdlZC1jb25maWcnIGZyb20gJy4vbmFuby1zdGFnZWQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICducG0tcHVibGlzaCcgZnJvbSAnLi9ucG0tcHVibGlzaC50cyc7XG5leHBvcnQgKiBhcyAnbnBtLXJ1bicgZnJvbSAnLi9ucG0tcnVuLnRzJztcbmV4cG9ydCAqIGFzICducG0nIGZyb20gJy4vbnBtLnRzJztcbmV4cG9ydCAqIGFzICdwYWNrYWdlLWxvY2staW50ZWdyaXR5JyBmcm9tICcuL3BhY2thZ2UtbG9jay1pbnRlZ3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ3BhY2thZ2UtbWFuYWdlcicgZnJvbSAnLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgJ3JlbGVhc2VkLWlzc3VlcycgZnJvbSAnLi9yZWxlYXNlZC1pc3N1ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3JlcG8tcGF0aHMnIGZyb20gJy4vcmVwby1wYXRocy50cyc7XG5leHBvcnQgKiBhcyAncm9vdCcgZnJvbSAnLi9yb290LnRzJztcbmV4cG9ydCAqIGFzICdzaGFyZWQtY29uZmlnLWZpbGVzJyBmcm9tICcuL3NoYXJlZC1jb25maWctZmlsZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Vwc3RyZWFtLXN5bmMtY2xpJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMtY2xpLnRzJztcbmV4cG9ydCAqIGFzICd1cHN0cmVhbS1zeW5jJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlY2xhcmF0aW9ucycgZnJvbSAnLi92YWxpZGF0ZS1kZWNsYXJhdGlvbnMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlcGVuZGVuY2llcycgZnJvbSAnLi92YWxpZGF0ZS1kZXBlbmRlbmNpZXMudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQSw0QkFBQUE7QUFBQSxFQUFBO0FBQUEsK0JBQUFDO0FBQUEsRUFBQSxtQkFBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSxtQkFBQUM7QUFBQSxFQUFBLG9CQUFBQztBQUFBLEVBQUE7QUFBQSw4QkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx5QkFBQUM7QUFBQSxFQUFBLHlCQUFBQztBQUFBLEVBQUE7QUFBQSw4QkFBQUM7QUFBQSxFQUFBO0FBQUEsdUJBQUFDO0FBQUEsRUFBQSxpQkFBQUM7QUFBQSxFQUFBLGdDQUFBQztBQUFBLEVBQUEseUJBQUFDO0FBQUEsRUFBQSx5QkFBQUM7QUFBQSxFQUFBLG9CQUFBQztBQUFBLEVBQUE7QUFBQSwrQkFBQUM7QUFBQSxFQUFBLHNCQUFBQztBQUFBLEVBQUEsdUJBQUFDO0FBQUEsRUFBQSwyQkFBQUM7QUFBQSxFQUFBLCtCQUFBQztBQUFBLEVBQUEsK0JBQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFFQSxZQUF5QjtBQUN6QixJQUFBekIsbUJBQW9DO0FBQ3BDLGVBQTRCO0FBQzVCLElBQUFDLHNCQUF1QztBQUN2QyxJQUFBQyxZQUE2QjtBQUM3QixJQUFBQyxpQkFBa0M7QUFDbEMsSUFBQUMsb0JBQXFDO0FBQ3JDLElBQUFDLGdDQUFpRDtBQUNqRCxJQUFBQyw0QkFBNkM7QUFDN0MsSUFBQUMsK0JBQWdEO0FBQ2hELElBQUFDLFlBQTZCO0FBQzdCLElBQUFDLGFBQThCO0FBQzlCLFdBQXdCO0FBQ3hCLElBQUFDLHFCQUFzQztBQUN0QyxpQkFBOEI7QUFDOUIsU0FBc0I7QUFDdEIsV0FBd0I7QUFDeEIsVUFBdUI7QUFDdkIsV0FBd0I7QUFDeEIsSUFBQUMsZ0JBQWlDO0FBQ2pDLElBQUFDLGtCQUFtQztBQUNuQyxjQUEyQjtBQUMzQixJQUFBQyxxQkFBc0M7QUFDdEMsSUFBQUMsY0FBK0I7QUFDL0IsSUFBQUMsVUFBMkI7QUFDM0IsVUFBdUI7QUFDdkIsSUFBQUMseUJBQTBDO0FBQzFDLElBQUFDLGtCQUFtQztBQUNuQyxJQUFBQyxrQkFBbUM7QUFDbkMsSUFBQUMsYUFBOEI7QUFDOUIsV0FBd0I7QUFDeEIsSUFBQUMsc0JBQXVDO0FBQ3ZDLElBQUFDLGVBQWdDO0FBQ2hDLElBQUFFLG9CQUFxQztBQUNyQyxJQUFBRCxnQkFBaUM7QUFDakMsSUFBQUUsd0JBQXlDO0FBQ3pDLElBQUFDLHdCQUF5QztBQUN6QyxjQUEyQjsiLAogICJuYW1lcyI6IFsiYnVsay1jb25jdXJyZW5jeSIsICJjaGVjay1wcm9qZWN0LXR5cGVzIiwgImNsaS11dGlscyIsICJjb2RlLWdlbmVyYXRvciIsICJjb21taXRsaW50LWNvbmZpZyIsICJjb21taXRsaW50LWZvcmJpZGRlbi1wYXR0ZXJucyIsICJjb21taXRsaW50LWxpbnQtbWQtaGVhZGVyIiwgImNvbW1pdGxpbnQtc3BlbGxjaGVjay1oZWFkZXIiLCAiZG9jcy1zaXRlIiwgImVudi10b2dnbGUiLCAiZm9yYmlkZGVuLXBhdHRlcm5zIiwgImxpYnJhcnktYnVpbGQiLCAibGluay1jaGVjay1za2lwIiwgIm5hbm8tc3RhZ2VkLWNvbmZpZyIsICJucG0tcHVibGlzaCIsICJucG0tcnVuIiwgInBhY2thZ2UtbG9jay1pbnRlZ3JpdHkiLCAicGFja2FnZS1tYW5hZ2VyIiwgInJlbGVhc2VkLWlzc3VlcyIsICJyZXBvLXBhdGhzIiwgInNoYXJlZC1jb25maWctZmlsZXMiLCAidGVzdC1ydW5uZXJzIiwgInVwc3RyZWFtLXN5bmMiLCAidXBzdHJlYW0tc3luYy1jbGkiLCAidmFsaWRhdGUtZGVjbGFyYXRpb25zIiwgInZhbGlkYXRlLWRlcGVuZGVuY2llcyJdCn0K
@@ -23,6 +23,7 @@ export * as 'gate' from './gate.cjs';
23
23
  export * as 'git' from './git.cjs';
24
24
  export * as 'json' from './json.cjs';
25
25
  export * as 'library-build' from './library-build.cjs';
26
+ export * as 'link-check-skip' from './link-check-skip.cjs';
26
27
  export * as 'linters' from './linters/index.cjs';
27
28
  export * as 'nano-staged-config' from './nano-staged-config.cjs';
28
29
  export * as 'npm-publish' from './npm-publish.cjs';
@@ -0,0 +1,166 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return '/';
11
+ },
12
+ env: {},
13
+ platform: 'android'
14
+ };
15
+
16
+ const existingProcess = globalThis.process;
17
+
18
+ if (!existingProcess) {
19
+ globalThis.process = browserProcess;
20
+ return;
21
+ }
22
+
23
+ if (existingProcess.versions?.node) {
24
+ return;
25
+ }
26
+
27
+ const existingProcessRecord = existingProcess;
28
+
29
+ for (const [key, value] of Object.entries(browserProcess)) {
30
+ existingProcessRecord[key] ??= value;
31
+ }
32
+
33
+ existingProcessRecord['browser'] = true;
34
+ }
35
+
36
+ ensureBrowserProcess();
37
+ })();
38
+
39
+ "use strict";
40
+ var __create = Object.create;
41
+ var __defProp = Object.defineProperty;
42
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
43
+ var __getOwnPropNames = Object.getOwnPropertyNames;
44
+ var __getProtoOf = Object.getPrototypeOf;
45
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
46
+ var __export = (target, all) => {
47
+ for (var name in all)
48
+ __defProp(target, name, { get: all[name], enumerable: true });
49
+ };
50
+ var __copyProps = (to, from, except, desc) => {
51
+ if (from && typeof from === "object" || typeof from === "function") {
52
+ for (let key of __getOwnPropNames(from))
53
+ if (!__hasOwnProp.call(to, key) && key !== except)
54
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
55
+ }
56
+ return to;
57
+ };
58
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
59
+ // If the importer is in node compatibility mode or this is not an ESM
60
+ // file that has been converted to a CommonJS file using a Babel-
61
+ // compatible transform (i.e. "__esModule" has not been set), then set
62
+ // "default" to the CommonJS "module.exports" for node compatibility.
63
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
64
+ mod
65
+ ));
66
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
67
+ var link_check_skip_exports = {};
68
+ __export(link_check_skip_exports, {
69
+ LINK_CHECK_SKIP_ENV_VARIABLE: () => LINK_CHECK_SKIP_ENV_VARIABLE,
70
+ doesLinkCheckSkipEntryMatch: () => doesLinkCheckSkipEntryMatch,
71
+ extractUrls: () => extractUrls,
72
+ getLinkCheckSkipWarnings: () => getLinkCheckSkipWarnings,
73
+ mergeLinkinatorSkipConfig: () => mergeLinkinatorSkipConfig,
74
+ parseLinkCheckSkipEntries: () => parseLinkCheckSkipEntries,
75
+ readLinkCheckSkipEntries: () => readLinkCheckSkipEntries,
76
+ toLinkinatorSkipPattern: () => toLinkinatorSkipPattern
77
+ });
78
+ module.exports = __toCommonJS(link_check_skip_exports);
79
+ var import_reg_exp = require('@mnaoumov/typescript-lib/reg-exp');
80
+ var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
81
+ var import_env_toggle = require('./env-toggle.cjs');
82
+ const LINK_CHECK_SKIP_ENV_VARIABLE = "LINK_CHECK_SKIP";
83
+ const HOST_REG_EXP = /^[a-z\d-]+(?:\.[a-z\d-]+)*$/i;
84
+ const URL_REG_EXP = /\bhttps?:\/\/[^\s<>()[\]{}"'`]+/gi;
85
+ const URL_TRAILING_PUNCTUATION_REG_EXP = /[.,;:!?*_~]+$/;
86
+ function doesLinkCheckSkipEntryMatch(url, entry) {
87
+ return entry.kind === "prefix" ? url.startsWith(entry.value) : URL.parse(url)?.hostname === entry.value;
88
+ }
89
+ function extractUrls(text) {
90
+ return Array.from(text.matchAll(URL_REG_EXP), (match) => match[0].replace(URL_TRAILING_PUNCTUATION_REG_EXP, ""));
91
+ }
92
+ function getLinkCheckSkipWarnings(entries, files) {
93
+ const warnings = [];
94
+ const usedEntries = /* @__PURE__ */ new Set();
95
+ for (const file of files) {
96
+ for (const url of new Set(extractUrls(file.content))) {
97
+ const entry = entries.find((candidate) => doesLinkCheckSkipEntryMatch(url, candidate));
98
+ if (!entry) {
99
+ continue;
100
+ }
101
+ usedEntries.add(entry);
102
+ warnings.push(`WARNING: ${LINK_CHECK_SKIP_ENV_VARIABLE} skips ${url} in ${file.path} (entry ${entry.value}).`);
103
+ }
104
+ }
105
+ for (const entry of entries) {
106
+ if (!usedEntries.has(entry)) {
107
+ warnings.push(`WARNING: ${LINK_CHECK_SKIP_ENV_VARIABLE} entry ${entry.value} matched no link; remove it.`);
108
+ }
109
+ }
110
+ if (entries.length > 0) {
111
+ warnings.push(
112
+ `WARNING: ${LINK_CHECK_SKIP_ENV_VARIABLE} is set. Set it for one command only, never in .env: a lasting skip lets links go stale unnoticed.`
113
+ );
114
+ }
115
+ return warnings;
116
+ }
117
+ function mergeLinkinatorSkipConfig(projectConfig, entries) {
118
+ const config = projectConfig ?? {};
119
+ if (typeof config !== "object" || Array.isArray(config)) {
120
+ throw new TypeError("The project linkinator.config.json is not a JSON object.");
121
+ }
122
+ const record = config;
123
+ const projectSkip = record["skip"];
124
+ const existingSkip = projectSkip === void 0 ? [] : [projectSkip].flat();
125
+ return { ...record, skip: [...existingSkip, ...entries.map((entry) => toLinkinatorSkipPattern(entry))] };
126
+ }
127
+ function parseLinkCheckSkipEntries(value) {
128
+ const entries = [];
129
+ for (const rawEntry of value.split(",")) {
130
+ const entry = rawEntry.trim();
131
+ if (entry === "") {
132
+ continue;
133
+ }
134
+ if (entry.includes("://")) {
135
+ entries.push({ kind: "prefix", value: entry });
136
+ continue;
137
+ }
138
+ if (!HOST_REG_EXP.test(entry)) {
139
+ throw new Error(`${LINK_CHECK_SKIP_ENV_VARIABLE} entry ${entry} is neither a host name nor a URL prefix (one holding ://).`);
140
+ }
141
+ entries.push({ kind: "host", value: entry.toLowerCase() });
142
+ }
143
+ return entries;
144
+ }
145
+ function readLinkCheckSkipEntries() {
146
+ (0, import_env_toggle.loadEnvFileIfExists)();
147
+ return parseLinkCheckSkipEntries(import_node_process.default.env[LINK_CHECK_SKIP_ENV_VARIABLE] ?? "");
148
+ }
149
+ function toLinkinatorSkipPattern(entry) {
150
+ if (entry.kind === "prefix") {
151
+ return `^${(0, import_reg_exp.escapeRegExp)(entry.value)}`;
152
+ }
153
+ return String.raw`^https?://(?:[^/?#@]*@)?${(0, import_reg_exp.escapeRegExp)(entry.value)}(?::\d+)?(?:[/?#]|$)`;
154
+ }
155
+ // Annotate the CommonJS export names for ESM import in node:
156
+ 0 && (module.exports = {
157
+ LINK_CHECK_SKIP_ENV_VARIABLE,
158
+ doesLinkCheckSkipEntryMatch,
159
+ extractUrls,
160
+ getLinkCheckSkipWarnings,
161
+ mergeLinkinatorSkipConfig,
162
+ parseLinkCheckSkipEntries,
163
+ readLinkCheckSkipEntries,
164
+ toLinkinatorSkipPattern
165
+ });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saW5rLWNoZWNrLXNraXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbmtzIHRoZSBtYXJrZG93biBsaW5rIGNoZWNrIGxlYXZlcyB1bmNoZWNrZWQgZm9yIG9uZSBydW4sIG5hbWVkIGJ5IHRoZSB7QGxpbmsgTElOS19DSEVDS19TS0lQX0VOVl9WQVJJQUJMRX1cbiAqIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICpcbiAqIFR3byBjYXNlcyBuZWVkIGl0OiBhIGhvc3QgdGhlIGN1cnJlbnQgbmV0d29yayBjYW5ub3QgcmVhY2ggYWx0aG91Z2ggaXQgaXMgdXAgKGEgcHJvdmlkZXIgYmxvY2tpbmcgaXQpLCBhbmQgYVxuICogcmVsZWFzZSB3aG9zZSBkb2N1bWVudGF0aW9uIGxpbmtzIHRvIHNvbWV0aGluZyBvbmx5IHRoYXQgc2FtZSByZWxlYXNlIHB1c2hlcy4gQm90aCBhcmUgdGVtcG9yYXJ5LCBzbyB0aGVcbiAqIHZhcmlhYmxlIGJlbG9uZ3Mgb24gdGhlIG9uZSBjb21tYW5kIHRoYXQgbmVlZHMgaXQsIG5ldmVyIGluIGAuZW52YDogYSBza2lwIGxlZnQgaW4gcGxhY2UgbGV0cyBhIGxpbmsgZ28gc3RhbGVcbiAqIHdpdGggbm90aGluZyB0byBzYXkgc28uIEl0IGlzIHJlYWQgbGlrZSBldmVyeSBvdGhlciB2YXJpYWJsZSBoZXJlLCBgLmVudmAgaW5jbHVkZWQsIGFuZCBldmVyeSBza2lwcGVkIGxpbmssXG4gKiBsaWtlIGV2ZXJ5IGVudHJ5IHRoYXQgc2tpcHBlZCBub3RoaW5nLCBwcmludHMgYSB3YXJuaW5nLCBzbyBhIHNraXAgaXMgbmV2ZXIgc2lsZW50LlxuICpcbiAqIEVudHJpZXMgYXJlIGNvbW1hLXNlcGFyYXRlZC4gQW4gZW50cnkgaG9sZGluZyBgOi8vYCBpcyBhIFVSTCBwcmVmaXggYW5kIG1hdGNoZXMgZXZlcnkgbGluayBzdGFydGluZyB3aXRoIGl0OyBhbnlcbiAqIG90aGVyIGVudHJ5IGlzIGEgaG9zdCBhbmQgbWF0Y2hlcyB0aGUgbGlua3MgdG8gZXhhY3RseSB0aGF0IGhvc3QgKGBtYWlsLnRtYCBkb2VzIG5vdCBtYXRjaCBgZG9jcy5tYWlsLnRtYCkuXG4gKi9cblxuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3JlZy1leHAnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuaW1wb3J0IHsgbG9hZEVudkZpbGVJZkV4aXN0cyB9IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5cbi8qKlxuICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWluZyB0aGUgbGlua3MgdG8gc2tpcC5cbiAqL1xuZXhwb3J0IGNvbnN0IExJTktfQ0hFQ0tfU0tJUF9FTlZfVkFSSUFCTEUgPSAnTElOS19DSEVDS19TS0lQJztcblxuLyoqXG4gKiBPbmUgZW50cnkgb2Yge0BsaW5rIExJTktfQ0hFQ0tfU0tJUF9FTlZfVkFSSUFCTEV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtDaGVja1NraXBFbnRyeSB7XG4gIC8qKlxuICAgKiBgaG9zdGAgbWF0Y2hlcyBsaW5rcyB0byBleGFjdGx5IHRoYXQgaG9zdDsgYHByZWZpeGAgbWF0Y2hlcyBsaW5rcyBzdGFydGluZyB3aXRoIHtAbGluayB2YWx1ZX0uXG4gICAqL1xuICByZWFkb25seSBraW5kOiAnaG9zdCcgfCAncHJlZml4JztcblxuICAvKipcbiAgICogVGhlIGVudHJ5IGFzIHdyaXR0ZW4sIGEgaG9zdCBsb3dlcmNhc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgdGV4dCBvZiBvbmUgbWFya2Rvd24gZmlsZSB0aGUgbGluayBjaGVjayByZWFkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rQ2hlY2tTb3VyY2VGaWxlIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlJ3MgY29udGVudC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZpbGUncyBwYXRoLCBhcyB0aGUgd2FybmluZ3MgbmFtZSBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuY29uc3QgSE9TVF9SRUdfRVhQID0gL15bYS16XFxkLV0rKD86XFwuW2EtelxcZC1dKykqJC9pO1xuY29uc3QgVVJMX1JFR19FWFAgPSAvXFxiaHR0cHM/OlxcL1xcL1teXFxzPD4oKVtcXF17fVwiJ2BdKy9naTtcbmNvbnN0IFVSTF9UUkFJTElOR19QVU5DVFVBVElPTl9SRUdfRVhQID0gL1suLDs6IT8qX35dKyQvO1xuXG4vKipcbiAqIFRlbGxzIHdoZXRoZXIgYW4gZW50cnkgbWF0Y2hlcyBhIFVSTC5cbiAqXG4gKiBAcGFyYW0gdXJsIC0gVGhlIFVSTC5cbiAqIEBwYXJhbSBlbnRyeSAtIFRoZSBlbnRyeS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGEgYHByZWZpeGAgZW50cnkgc3RhcnRzIHRoZSBVUkwsIG9yIGEgYGhvc3RgIGVudHJ5IGlzIGV4YWN0bHkgdGhlIFVSTCdzIGhvc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb2VzTGlua0NoZWNrU2tpcEVudHJ5TWF0Y2godXJsOiBzdHJpbmcsIGVudHJ5OiBMaW5rQ2hlY2tTa2lwRW50cnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVudHJ5LmtpbmQgPT09ICdwcmVmaXgnID8gdXJsLnN0YXJ0c1dpdGgoZW50cnkudmFsdWUpIDogVVJMLnBhcnNlKHVybCk/Lmhvc3RuYW1lID09PSBlbnRyeS52YWx1ZTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgYWJzb2x1dGUgYGh0dHBgL2BodHRwc2AgVVJMcyB3cml0dGVuIGluIGEgdGV4dC5cbiAqXG4gKiBJdCBpcyBhIHRleHR1YWwgc2Nhbiwgc28gaXQgYWxzbyBmaW5kcyBhIFVSTCBpbnNpZGUgYSBjb2RlIHNwYW4sIHdoaWNoIGBsaW5raW5hdG9yYCBkb2VzIG5vdCBjaGVjay5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRvIHNjYW4uXG4gKiBAcmV0dXJucyBUaGUgVVJMcywgaW4gb3JkZXIgb2YgYXBwZWFyYW5jZSwgdHJhaWxpbmcgcHVuY3R1YXRpb24gZHJvcHBlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVcmxzKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20odGV4dC5tYXRjaEFsbChVUkxfUkVHX0VYUCksIChtYXRjaCkgPT4gbWF0Y2hbMF0ucmVwbGFjZShVUkxfVFJBSUxJTkdfUFVOQ1RVQVRJT05fUkVHX0VYUCwgJycpKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHdhcm5pbmdzIGZvciBhIHJ1biB3aXRoIHNraXAgZW50cmllczogb25lIHBlciBkaXN0aW5jdCBsaW5rIGVhY2ggZmlsZSBsb3NlcyB0byBhbiBlbnRyeSwgYW5kIG9uZSBwZXJcbiAqIGVudHJ5IHRoYXQgbWF0Y2hlZCBubyBsaW5rIGF0IGFsbC5cbiAqXG4gKiBAcGFyYW0gZW50cmllcyAtIFRoZSBlbnRyaWVzLCBhcyB7QGxpbmsgcGFyc2VMaW5rQ2hlY2tTa2lwRW50cmllc30gcmV0dXJuZWQgdGhlbS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBtYXJrZG93biBmaWxlcyB0aGUgbGluayBjaGVjayBpcyBoYW5kZWQuXG4gKiBAcmV0dXJucyBUaGUgd2FybmluZyBsaW5lcywgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rQ2hlY2tTa2lwV2FybmluZ3MoZW50cmllczogcmVhZG9ubHkgTGlua0NoZWNrU2tpcEVudHJ5W10sIGZpbGVzOiByZWFkb25seSBMaW5rQ2hlY2tTb3VyY2VGaWxlW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB1c2VkRW50cmllcyA9IG5ldyBTZXQ8TGlua0NoZWNrU2tpcEVudHJ5PigpO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGZvciAoY29uc3QgdXJsIG9mIG5ldyBTZXQoZXh0cmFjdFVybHMoZmlsZS5jb250ZW50KSkpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllcy5maW5kKChjYW5kaWRhdGUpID0+IGRvZXNMaW5rQ2hlY2tTa2lwRW50cnlNYXRjaCh1cmwsIGNhbmRpZGF0ZSkpO1xuICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdXNlZEVudHJpZXMuYWRkKGVudHJ5KTtcbiAgICAgIHdhcm5pbmdzLnB1c2goYFdBUk5JTkc6ICR7TElOS19DSEVDS19TS0lQX0VOVl9WQVJJQUJMRX0gc2tpcHMgJHt1cmx9IGluICR7ZmlsZS5wYXRofSAoZW50cnkgJHtlbnRyeS52YWx1ZX0pLmApO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmICghdXNlZEVudHJpZXMuaGFzKGVudHJ5KSkge1xuICAgICAgd2FybmluZ3MucHVzaChgV0FSTklORzogJHtMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfSBlbnRyeSAke2VudHJ5LnZhbHVlfSBtYXRjaGVkIG5vIGxpbms7IHJlbW92ZSBpdC5gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgd2FybmluZ3MucHVzaChcbiAgICAgIGBXQVJOSU5HOiAke0xJTktfQ0hFQ0tfU0tJUF9FTlZfVkFSSUFCTEV9IGlzIHNldC4gU2V0IGl0IGZvciBvbmUgY29tbWFuZCBvbmx5LCBuZXZlciBpbiAuZW52OiBhIGxhc3Rpbmcgc2tpcCBsZXRzIGxpbmtzIGdvIHN0YWxlIHVubm90aWNlZC5gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB3YXJuaW5ncztcbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBlbnRyaWVzIHRvIGEgYGxpbmtpbmF0b3JgIGNvbmZpZywga2VlcGluZyB3aGF0ZXZlciB0aGUgcHJvamVjdCdzIG93biBjb25maWcgYWxyZWFkeSBza2lwcy5cbiAqXG4gKiBUaGUgc2tpcCBsaXN0IGdvZXMgdG8gYGxpbmtpbmF0b3JgIGFzIGEgY29uZmlnIGZpbGUgYmVjYXVzZSBgLS1jb25maWdgIHJlcGxhY2VzIHRoZSBwcm9qZWN0J3NcbiAqIGBsaW5raW5hdG9yLmNvbmZpZy5qc29uYCByYXRoZXIgdGhhbiBhZGRpbmcgdG8gaXQsIHNvIHRoZSBwcm9qZWN0J3Mgc2V0dGluZ3MgaGF2ZSB0byBiZSBjYXJyaWVkIG92ZXIuXG4gKlxuICogQHBhcmFtIHByb2plY3RDb25maWcgLSBUaGUgcGFyc2VkIHByb2plY3QgYGxpbmtpbmF0b3IuY29uZmlnLmpzb25gLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZXJlIGlzIG5vbmUuXG4gKiBAcGFyYW0gZW50cmllcyAtIFRoZSBlbnRyaWVzLlxuICogQHJldHVybnMgVGhlIGNvbmZpZyB0byB3cml0ZS5cbiAqIEB0aHJvd3MgSWYgdGhlIHByb2plY3QgY29uZmlnIGlzIG5vdCBhIEpTT04gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMaW5raW5hdG9yU2tpcENvbmZpZyhwcm9qZWN0Q29uZmlnOiB1bmtub3duLCBlbnRyaWVzOiByZWFkb25seSBMaW5rQ2hlY2tTa2lwRW50cnlbXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgY29uZmlnID0gcHJvamVjdENvbmZpZyA/PyB7fTtcbiAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoY29uZmlnKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBwcm9qZWN0IGxpbmtpbmF0b3IuY29uZmlnLmpzb24gaXMgbm90IGEgSlNPTiBvYmplY3QuJyk7XG4gIH1cblxuICBjb25zdCByZWNvcmQgPSBjb25maWcgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHByb2plY3RTa2lwID0gcmVjb3JkWydza2lwJ107XG4gIGNvbnN0IGV4aXN0aW5nU2tpcCA9IHByb2plY3RTa2lwID09PSB1bmRlZmluZWQgPyBbXSA6IFtwcm9qZWN0U2tpcF0uZmxhdCgpO1xuICByZXR1cm4geyAuLi5yZWNvcmQsIHNraXA6IFsuLi5leGlzdGluZ1NraXAsIC4uLmVudHJpZXMubWFwKChlbnRyeSkgPT4gdG9MaW5raW5hdG9yU2tpcFBhdHRlcm4oZW50cnkpKV0gfTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHZhbHVlIG9mIHtAbGluayBMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgY29tbWEtc2VwYXJhdGVkIHZhbHVlOyBibGFuayBlbnRyaWVzIGFyZSBpZ25vcmVkLlxuICogQHJldHVybnMgVGhlIGVudHJpZXMuXG4gKiBAdGhyb3dzIElmIGFuIGVudHJ5IGlzIG5laXRoZXIgYSBVUkwgcHJlZml4IG5vciBhIGhvc3QgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGlua0NoZWNrU2tpcEVudHJpZXModmFsdWU6IHN0cmluZyk6IExpbmtDaGVja1NraXBFbnRyeVtdIHtcbiAgY29uc3QgZW50cmllczogTGlua0NoZWNrU2tpcEVudHJ5W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJhd0VudHJ5IG9mIHZhbHVlLnNwbGl0KCcsJykpIHtcbiAgICBjb25zdCBlbnRyeSA9IHJhd0VudHJ5LnRyaW0oKTtcbiAgICBpZiAoZW50cnkgPT09ICcnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZW50cnkuaW5jbHVkZXMoJzovLycpKSB7XG4gICAgICBlbnRyaWVzLnB1c2goeyBraW5kOiAncHJlZml4JywgdmFsdWU6IGVudHJ5IH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFIT1NUX1JFR19FWFAudGVzdChlbnRyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfSBlbnRyeSAke2VudHJ5fSBpcyBuZWl0aGVyIGEgaG9zdCBuYW1lIG5vciBhIFVSTCBwcmVmaXggKG9uZSBob2xkaW5nIDovLykuYCk7XG4gICAgfVxuXG4gICAgZW50cmllcy5wdXNoKHsga2luZDogJ2hvc3QnLCB2YWx1ZTogZW50cnkudG9Mb3dlckNhc2UoKSB9KTtcbiAgfVxuXG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBlbnRyaWVzIG9mIHtAbGluayBMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfSwgbG9hZGluZyB0aGUgb3B0aW9uYWwgYC5lbnZgIGZpcnN0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBlbnRyaWVzOyBub25lIHdoZW4gdGhlIHZhcmlhYmxlIGlzIHVuc2V0IG9yIGJsYW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZExpbmtDaGVja1NraXBFbnRyaWVzKCk6IExpbmtDaGVja1NraXBFbnRyeVtdIHtcbiAgbG9hZEVudkZpbGVJZkV4aXN0cygpO1xuICByZXR1cm4gcGFyc2VMaW5rQ2hlY2tTa2lwRW50cmllcyhwcm9jZXNzLmVudltMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFXSA/PyAnJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gZW50cnkgaW50byBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgdGhlIGBza2lwYCBsaXN0IG9mIGEgYGxpbmtpbmF0b3JgIGNvbmZpZyBmaWxlLlxuICpcbiAqIE5ldmVyIHBhc3MgaXQgYXMgYSBgLS1za2lwYCBhcmd1bWVudDogb24gV2luZG93cyB0aGUgY29tbWFuZCBsaW5lIHBhc3NlcyB0aHJvdWdoIHRoZSBgbnB4YCBhbmQgYC5iaW5gIHNoaW1zLFxuICogd2hpY2ggcmUtZXhwYW5kIGl0IHVucXVvdGVkLCBzbyB0aGUgYHxgIGluIGl0IHBpcGVzIGludG8gYSBjb21tYW5kIG5hbWVkIGJ5IHdoYXQgZm9sbG93cy5cbiAqXG4gKiBAcGFyYW0gZW50cnkgLSBUaGUgZW50cnkuXG4gKiBAcmV0dXJucyBUaGUgcmVndWxhciBleHByZXNzaW9uIHNvdXJjZTogYW4gYW5jaG9yZWQgcHJlZml4LCBvciB0aGUgc2NoZW1lLCBvcHRpb25hbCBjcmVkZW50aWFscywgdGhlIGhvc3QgYW5kIGFuXG4gKiBvcHRpb25hbCBwb3J0IGZvbGxvd2VkIGJ5IHRoZSBlbmQgb2YgdGhlIGF1dGhvcml0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTGlua2luYXRvclNraXBQYXR0ZXJuKGVudHJ5OiBMaW5rQ2hlY2tTa2lwRW50cnkpOiBzdHJpbmcge1xuICBpZiAoZW50cnkua2luZCA9PT0gJ3ByZWZpeCcpIHtcbiAgICByZXR1cm4gYF4ke2VzY2FwZVJlZ0V4cChlbnRyeS52YWx1ZSl9YDtcbiAgfVxuXG4gIC8vIGBsaW5raW5hdG9yYCBtYXRjaGVzIHRoZSBVUkwgaXQgaGFzIG5vcm1hbGl6ZWQsIHdob3NlIHNjaGVtZSBhbmQgaG9zdCBhcmUgbG93ZXJjYXNlIGFscmVhZHkuXG4gIHJldHVybiBTdHJpbmcucmF3YF5odHRwcz86Ly8oPzpbXi8/I0BdKkApPyR7ZXNjYXBlUmVnRXhwKGVudHJ5LnZhbHVlKX0oPzo6XFxkKyk/KD86Wy8/I118JClgO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkEscUJBQTZCO0FBQzdCLDBCQUFvQjtBQUVwQix3QkFBb0M7QUFLN0IsTUFBTSwrQkFBK0I7QUFnQzVDLE1BQU0sZUFBZTtBQUNyQixNQUFNLGNBQWM7QUFDcEIsTUFBTSxtQ0FBbUM7QUFTbEMsU0FBUyw0QkFBNEIsS0FBYSxPQUFvQztBQUMzRixTQUFPLE1BQU0sU0FBUyxXQUFXLElBQUksV0FBVyxNQUFNLEtBQUssSUFBSSxJ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
@@ -0,0 +1,109 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Links the markdown link check leaves unchecked for one run, named by the {@link LINK_CHECK_SKIP_ENV_VARIABLE}
6
+ * environment variable.
7
+ *
8
+ * Two cases need it: a host the current network cannot reach although it is up (a provider blocking it), and a
9
+ * release whose documentation links to something only that same release pushes. Both are temporary, so the
10
+ * variable belongs on the one command that needs it, never in `.env`: a skip left in place lets a link go stale
11
+ * with nothing to say so. It is read like every other variable here, `.env` included, and every skipped link,
12
+ * like every entry that skipped nothing, prints a warning, so a skip is never silent.
13
+ *
14
+ * Entries are comma-separated. An entry holding `://` is a URL prefix and matches every link starting with it; any
15
+ * other entry is a host and matches the links to exactly that host (`mail.tm` does not match `docs.mail.tm`).
16
+ */
17
+ /**
18
+ * The environment variable naming the links to skip.
19
+ */
20
+ export declare const LINK_CHECK_SKIP_ENV_VARIABLE = "LINK_CHECK_SKIP";
21
+ /**
22
+ * One entry of {@link LINK_CHECK_SKIP_ENV_VARIABLE}.
23
+ */
24
+ export interface LinkCheckSkipEntry {
25
+ /**
26
+ * `host` matches links to exactly that host; `prefix` matches links starting with {@link value}.
27
+ */
28
+ readonly kind: 'host' | 'prefix';
29
+ /**
30
+ * The entry as written, a host lowercased.
31
+ */
32
+ readonly value: string;
33
+ }
34
+ /**
35
+ * The text of one markdown file the link check reads.
36
+ */
37
+ export interface LinkCheckSourceFile {
38
+ /**
39
+ * The file's content.
40
+ */
41
+ readonly content: string;
42
+ /**
43
+ * The file's path, as the warnings name it.
44
+ */
45
+ readonly path: string;
46
+ }
47
+ /**
48
+ * Tells whether an entry matches a URL.
49
+ *
50
+ * @param url - The URL.
51
+ * @param entry - The entry.
52
+ * @returns `true` when a `prefix` entry starts the URL, or a `host` entry is exactly the URL's host.
53
+ */
54
+ export declare function doesLinkCheckSkipEntryMatch(url: string, entry: LinkCheckSkipEntry): boolean;
55
+ /**
56
+ * Finds the absolute `http`/`https` URLs written in a text.
57
+ *
58
+ * It is a textual scan, so it also finds a URL inside a code span, which `linkinator` does not check.
59
+ *
60
+ * @param text - The text to scan.
61
+ * @returns The URLs, in order of appearance, trailing punctuation dropped.
62
+ */
63
+ export declare function extractUrls(text: string): string[];
64
+ /**
65
+ * Builds the warnings for a run with skip entries: one per distinct link each file loses to an entry, and one per
66
+ * entry that matched no link at all.
67
+ *
68
+ * @param entries - The entries, as {@link parseLinkCheckSkipEntries} returned them.
69
+ * @param files - The markdown files the link check is handed.
70
+ * @returns The warning lines, without a trailing newline.
71
+ */
72
+ export declare function getLinkCheckSkipWarnings(entries: readonly LinkCheckSkipEntry[], files: readonly LinkCheckSourceFile[]): string[];
73
+ /**
74
+ * Adds the entries to a `linkinator` config, keeping whatever the project's own config already skips.
75
+ *
76
+ * The skip list goes to `linkinator` as a config file because `--config` replaces the project's
77
+ * `linkinator.config.json` rather than adding to it, so the project's settings have to be carried over.
78
+ *
79
+ * @param projectConfig - The parsed project `linkinator.config.json`, or `undefined` when there is none.
80
+ * @param entries - The entries.
81
+ * @returns The config to write.
82
+ * @throws If the project config is not a JSON object.
83
+ */
84
+ export declare function mergeLinkinatorSkipConfig(projectConfig: unknown, entries: readonly LinkCheckSkipEntry[]): Record<string, unknown>;
85
+ /**
86
+ * Parses the value of {@link LINK_CHECK_SKIP_ENV_VARIABLE}.
87
+ *
88
+ * @param value - The comma-separated value; blank entries are ignored.
89
+ * @returns The entries.
90
+ * @throws If an entry is neither a URL prefix nor a host name.
91
+ */
92
+ export declare function parseLinkCheckSkipEntries(value: string): LinkCheckSkipEntry[];
93
+ /**
94
+ * Reads the entries of {@link LINK_CHECK_SKIP_ENV_VARIABLE}, loading the optional `.env` first.
95
+ *
96
+ * @returns The entries; none when the variable is unset or blank.
97
+ */
98
+ export declare function readLinkCheckSkipEntries(): LinkCheckSkipEntry[];
99
+ /**
100
+ * Converts an entry into a regular expression for the `skip` list of a `linkinator` config file.
101
+ *
102
+ * Never pass it as a `--skip` argument: on Windows the command line passes through the `npx` and `.bin` shims,
103
+ * which re-expand it unquoted, so the `|` in it pipes into a command named by what follows.
104
+ *
105
+ * @param entry - The entry.
106
+ * @returns The regular expression source: an anchored prefix, or the scheme, optional credentials, the host and an
107
+ * optional port followed by the end of the authority.
108
+ */
109
+ export declare function toLinkinatorSkipPattern(entry: LinkCheckSkipEntry): string;
@@ -64,9 +64,11 @@ var import_debug = require('@mnaoumov/typescript-lib/debug');
64
64
  var import_path = require('@mnaoumov/typescript-lib/path');
65
65
  var import_node_fs = require('node:fs');
66
66
  var import_promises = require('node:fs/promises');
67
+ var import_node_os = require('node:os');
67
68
  var import_node_path = require('node:path');
68
69
  var import_bulk_concurrency = require('../bulk-concurrency.cjs');
69
70
  var import_git = require('../git.cjs');
71
+ var import_link_check_skip = require('../link-check-skip.cjs');
70
72
  var import_package_manager = require('../package-manager.cjs');
71
73
  var import_repo_paths = require('../repo-paths.cjs');
72
74
  var import_root = require('../root.cjs');
@@ -101,6 +103,31 @@ async function lint(options) {
101
103
  if (linkCheckFiles.length === 0) {
102
104
  return;
103
105
  }
106
+ const skipEntries = (0, import_link_check_skip.readLinkCheckSkipEntries)();
107
+ const skipConfigFolder = skipEntries.length > 0 ? await writeSkipConfig(skipEntries, linkCheckFiles, rootFolder) : null;
108
+ try {
109
+ await runLinkinator(linkCheckFiles, skipConfigFolder);
110
+ } finally {
111
+ if (skipConfigFolder !== null) {
112
+ await (0, import_promises.rm)(skipConfigFolder, { force: true, recursive: true });
113
+ }
114
+ }
115
+ }
116
+ const MARKDOWN_PATHSPEC = "*.md";
117
+ const LINK_CHECK_CONCURRENCY = 100;
118
+ const LINK_CHECK_TIMEOUT_IN_MILLISECONDS = 3e4;
119
+ const LINKINATOR_CONFIG_FILE_NAME = "linkinator.config.json";
120
+ async function getMarkdownFiles() {
121
+ const nonIgnoredFiles = await (0, import_git.getNonIgnoredFiles)({ patterns: [MARKDOWN_PATHSPEC] });
122
+ return nonIgnoredFiles ? nonIgnoredFiles.filter((path) => !(0, import_markdownlint_ignores.checkIsInNodeModules)(path)) : await (0, import_async.toArray)((0, import_promises.glob)(["**/*.md"], {
123
+ exclude: [
124
+ ".git/**",
125
+ "dist/**",
126
+ import_markdownlint_ignores.NODE_MODULES_IGNORE_GLOB
127
+ ]
128
+ }));
129
+ }
130
+ async function runLinkinator(linkCheckFiles, skipConfigFolder) {
104
131
  await (0, import_root.execFromRoot)([
105
132
  ...(0, import_package_manager.resolveToolCommand)({ tool: "linkinator" }),
106
133
  "--concurrency",
@@ -118,24 +145,26 @@ async function lint(options) {
118
145
  String.raw`https://www\.npmjs\.com/package/`,
119
146
  "--url-rewrite-replace",
120
147
  "https://registry.npmjs.org/",
148
+ ...skipConfigFolder === null ? [] : ["--config", (0, import_node_path.join)(skipConfigFolder, LINKINATOR_CONFIG_FILE_NAME)],
121
149
  { batchedArguments: linkCheckFiles }
122
150
  ]);
123
151
  }
124
- const MARKDOWN_PATHSPEC = "*.md";
125
- const LINK_CHECK_CONCURRENCY = 100;
126
- const LINK_CHECK_TIMEOUT_IN_MILLISECONDS = 3e4;
127
- async function getMarkdownFiles() {
128
- const nonIgnoredFiles = await (0, import_git.getNonIgnoredFiles)({ patterns: [MARKDOWN_PATHSPEC] });
129
- return nonIgnoredFiles ? nonIgnoredFiles.filter((path) => !(0, import_markdownlint_ignores.checkIsInNodeModules)(path)) : await (0, import_async.toArray)((0, import_promises.glob)(["**/*.md"], {
130
- exclude: [
131
- ".git/**",
132
- "dist/**",
133
- import_markdownlint_ignores.NODE_MODULES_IGNORE_GLOB
134
- ]
135
- }));
152
+ async function writeSkipConfig(skipEntries, linkCheckFiles, rootFolder) {
153
+ const sourceFiles = await Promise.all(linkCheckFiles.map(async (path) => ({
154
+ content: await (0, import_promises.readFile)((0, import_node_path.resolve)(rootFolder, path), "utf-8"),
155
+ path
156
+ })));
157
+ for (const warning of (0, import_link_check_skip.getLinkCheckSkipWarnings)(skipEntries, sourceFiles)) {
158
+ console.warn(warning);
159
+ }
160
+ const projectConfigPath = (0, import_node_path.resolve)(rootFolder, LINKINATOR_CONFIG_FILE_NAME);
161
+ const projectConfig = (0, import_node_fs.existsSync)(projectConfigPath) ? JSON.parse(await (0, import_promises.readFile)(projectConfigPath, "utf-8")) : void 0;
162
+ const skipConfigFolder = await (0, import_promises.mkdtemp)((0, import_node_path.join)((0, import_node_os.tmpdir)(), "link-check-skip-"));
163
+ await (0, import_promises.writeFile)((0, import_node_path.join)(skipConfigFolder, LINKINATOR_CONFIG_FILE_NAME), JSON.stringify((0, import_link_check_skip.mergeLinkinatorSkipConfig)(projectConfig, skipEntries)));
164
+ return skipConfigFolder;
136
165
  }
137
166
  // Annotate the CommonJS export names for ESM import in node:
138
167
  0 && (module.exports = {
139
168
  lint
140
169
  });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2V0QnVsa0NvbmN1cnJlbmN5IH0gZnJvbSAnLi4vYnVsay1jb25jdXJyZW5jeS50cyc7XG5pbXBvcnQgeyBnZXROb25JZ25vcmVkRmlsZXMgfSBmcm9tICcuLi9naXQudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7XG4gIGNoZWNrSXNJbk5vZGVNb2R1bGVzLFxuICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0Jcbn0gZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBsaW50fSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGNvcGllZCB0byB0aGUgcHJvamVjdCByb290IHdoZW4gdGhlIHByb2plY3QgaGFzIG5vbmUuIFdpdGhvdXQgaXQsXG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgcnVucyB3aXRoIGl0cyBvd24gZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEdsb2JzLCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIsIG9mIG1hcmtkb3duIGZpbGVzIHRvIGxlYXZlIG91dCBvZiB0aGUgYGxpbmtpbmF0b3JgIHBhc3Mgb25seTtcbiAgICogYG1hcmtkb3dubGludC1jbGkyYCBzdGlsbCBsaW50cyB0aGVtLlxuICAgKlxuICAgKiBGb3IgYSBkb2N1bWVudGF0aW9uIHNpdGUgd2hvc2UgcGFnZXMgbGluayB0byBlYWNoIG90aGVyIGJhc2UtYWJzb2x1dGVseSAoYC88c2l0ZS1iYXNlPi9ndWlkZXMvLi4uYCk6IHRob3NlXG4gICAqIGxpbmtzIHJlc29sdmUgb25seSBhZ2FpbnN0IHRoZSBCVUlMVCBzaXRlLCBzbyBgbGlua2luYXRvcmAgcmVwb3J0cyBlYWNoIG9uZSBhcyBhIDQwNCwgYW5kIHRoZSBzaXRlJ3Mgb3duXG4gICAqIGJ1aWxkIGlzIHdoYXQgY2hlY2tzIHRoZW0uXG4gICAqXG4gICAqIEBleGFtcGxlIGBbJ2RvY3MvKionXWBcbiAgICovXG4gIHJlYWRvbmx5IGxpbmtDaGVja0V4Y2x1ZGVHbG9icz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIGxpbmtDaGVja0V4Y2x1ZGVHbG9icyA9IFtdLCBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbixcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ01qc1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoZXMgYXJlIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ21hcmtkb3dubGludC1jbGkyJyB9KSwgLi4uKHNob3VsZEZpeCA/IFsnLS1maXgnXSA6IFtdKSwgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZUFsbCgnXFxcXCcsICcvJykgfHwgcClcbiAgICA6IGF3YWl0IGdldE1hcmtkb3duRmlsZXMoKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgY29uc3QgbGlua0NoZWNrRmlsZXMgPSBtZEZpbGVzLmZpbHRlcigobWRGaWxlKSA9PiBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMuZXZlcnkoKGV4Y2x1ZGVHbG9iKSA9PiAhbWF0Y2hlc0dsb2IobWRGaWxlLCBleGNsdWRlR2xvYikpKTtcbiAgLy8gYGxpbmtpbmF0b3JgIHdpdGggbm8gTE9DQVRJT04gcHJpbnRzIGl0cyB1c2FnZSBhbmQgZXhpdHMgbm9uLXplcm8sIHNvIGEgbGlzdCBlbXB0aWVkIGJ5IHRoZSBleGNsdXNpb25zIGhhcyBub3RoaW5nIHRvIGNoZWNrLlxuICBpZiAobGlua0NoZWNrRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEVycm9yIHJldHJpZXMgdXNlIG1pbGxpc2Vjb25kIGppdHRlci4gT21pdCAtLXJldHJ5OiBpdHMgc2VwYXJhdGUgUmV0cnktQWZ0ZXIgbW9kZSBjYW4gc2xlZXAgZm9yIHRob3VzYW5kc1xuICAvLyBvZiBzZWNvbmRzIG9uIGEgNDI5IHdlIGFscmVhZHkgYWNjZXB0IGFzIGEgd2FybmluZy4gUmVxdWVzdCB0aW1lb3V0cyByZW1haW4gZXJyb3JzIGFuZCBrZWVwIHRoZWlyIHJldHJpZXMuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2xpbmtpbmF0b3InIH0pLFxuICAgICctLWNvbmN1cnJlbmN5JyxcbiAgICBTdHJpbmcoZ2V0QnVsa0NvbmN1cnJlbmN5KExJTktfQ0hFQ0tfQ09OQ1VSUkVOQ1kpKSxcbiAgICAnLS10aW1lb3V0JyxcbiAgICBTdHJpbmcoTElOS19DSEVDS19USU1FT1VUX0lOX01JTExJU0VDT05EUyksXG4gICAgJy0tcmV0cnktZXJyb3JzJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtY291bnQnLFxuICAgICczJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtaml0dGVyJyxcbiAgICAnNTAwMCcsXG4gICAgJy0tc3RhdHVzLWNvZGUnLFxuICAgICc0Mjk6d2FybicsXG4gICAgJy0tdXJsLXJld3JpdGUtc2VhcmNoJyxcbiAgICBTdHJpbmcucmF3YGh0dHBzOi8vd3d3XFwubnBtanNcXC5jb20vcGFja2FnZS9gLFxuICAgICctLXVybC1yZXdyaXRlLXJlcGxhY2UnLFxuICAgICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8nLFxuICAgIHsgYmF0Y2hlZEFyZ3VtZW50czogbGlua0NoZWNrRmlsZXMgfVxuICBdKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2l0IHBhdGhzcGVjIG1hdGNoaW5nIGV2ZXJ5IG1hcmtkb3duIGZpbGUgaW4gdGhlIHJlcG9zaXRvcnksIGF0IGFueSBkZXB0aC5cbiAqL1xuY29uc3QgTUFSS0RPV05fUEFUSFNQRUMgPSAnKi5tZCc7XG5jb25zdCBMSU5LX0NIRUNLX0NPTkNVUlJFTkNZID0gMTAwO1xuY29uc3QgTElOS19DSEVDS19USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDMwXzAwMDtcblxuLyoqXG4gKiBMaXN0cyB0aGUgbWFya2Rvd24gZmlsZXMgdG8gaGFuZCB0byBgbGlua2luYXRvcmAuXG4gKlxuICogYGxpbmtpbmF0b3JgIHRha2VzIGEgZmlsZSBsaXN0IHJhdGhlciB0aGFuIGFuIGlnbm9yZSBjb25maWd1cmF0aW9uLCBzbyB0aGUgZ2l0aWdub3JlZCBmaWxlcyBoYXZlIHRvIGJlXG4gKiBkcm9wcGVkIGJlZm9yZSBpdCBpcyBpbnZva2VkLiBHaXQgaXRzZWxmIGFuc3dlcnMgdGhhdCAobmVzdGVkIGlnbm9yZSBmaWxlcywgYCFgIG5lZ2F0aW9ucyBhbmQgYWxsKTsgdGhlXG4gKiBoYW5kLW1haW50YWluZWQgZ2xvYiBleGNsdXNpb25zIGJlbG93IGFyZSBvbmx5IHRoZSBmYWxsYmFjayBmb3IgYSBjaGVja291dCB3aXRob3V0IGdpdCwgYW5kIHRoZXkgYXJlIHRoZVxuICogdmVyeSBsaXN0cyB0aGlzIGluZGlyZWN0aW9uIGV4aXN0cyB0byBzdG9wIGZyb20gZHJpZnRpbmcuXG4gKlxuICogVGhlIGBub2RlX21vZHVsZXNgIGZpbHRlciBpcyBhcHBsaWVkIHRvIHRoZSBnaXQtZGVyaXZlZCBsaXN0IHRvbywgYW5kIGRlbGliZXJhdGVseSBzbzogZ2l0IG9ubHkgc2tpcHNcbiAqIHdoYXQgdGhlIHJlcG9zaXRvcnkgYXNrZWQgaXQgdG8gc2tpcCwgYW5kIGEgcmVwb3NpdG9yeSBjYW4gZGVsaWJlcmF0ZWx5IFRSQUNLIGEgdmVuZG9yZWQgYG5vZGVfbW9kdWxlc2BcbiAqIHRyZWUuIFRoYXQgaXMgdGhlIG9uZSBleGNsdXNpb24gYC5naXRpZ25vcmVgIGNhbm5vdCBhbnN3ZXIg4oCUIHNlZSBgbWFya2Rvd25saW50LWlnbm9yZXMudHNgLiBBcHBseWluZyBpdFxuICogaGVyZSBrZWVwcyBgbGlua2luYXRvcmAgaW4gc3RlcCB3aXRoIHRoZSBtYXJrZG93bmxpbnQgaGFsZiwgd2hpY2ggaWdub3JlcyB0aGUgc2FtZSBwYXRocyBieSBnbG9iLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbWFya2Rvd24gZmlsZSBwYXRocywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgbm9uSWdub3JlZEZpbGVzID0gYXdhaXQgZ2V0Tm9uSWdub3JlZEZpbGVzKHsgcGF0dGVybnM6IFtNQVJLRE9XTl9QQVRIU1BFQ10gfSk7XG4gIHJldHVybiBub25JZ25vcmVkRmlsZXNcbiAgICA/IG5vbklnbm9yZWRGaWxlcy5maWx0ZXIoKHBhdGgpID0+ICFjaGVja0lzSW5Ob2RlTW9kdWxlcyhwYXRoKSlcbiAgICA6IChhd2FpdCB0b0FycmF5KGdsb2IoWycqKi8qLm1kJ10sIHtcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgJy5naXQvKionLFxuICAgICAgICAnZGlzdC8qKicsXG4gICAgICAgIE5PREVfTU9EVUxFU19JR05PUkVfR0xPQlxuICAgICAgXVxuICAgIH0pKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLG1CQUF3QjtBQUN4QixtQkFBK0I7QUFDL0Isa0JBQXlCO0FBQ3pCLHFCQUEyQjtBQUMzQixzQkFHTztBQUNQLHVCQUdPO0FBRVAsOEJBQW1DO0FBQ25DLGlCQUFtQztBQUNuQyw2QkFBbUM7QUFDbkMsd0JBQTBCO0FBQzFCLGtCQUlPO0FBQ1Asa0NBR087QUEwQ1AsZUFBc0IsS0FBSyxTQUFzQztBQUMvRCxRQUFNLEVBQUUsdUJBQXVCLHdCQUF3QixDQUFDLEdBQUcsT0FBTyxZQUFZLE1BQU0sSUFBSSxXQUFXLENBQUM7QUFDcEcsUUFBTSxjQUFjO0FBQUEsSUFDbEIsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxFQUNaO0FBRUEsUUFBTSxzQkFBc0IsWUFBWSxLQUFLLENBQUMsZUFBZTtBQUMzRCxVQUFNLHFCQUFpQixxQ0FBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRSxlQUFPLDJCQUFXLGNBQWM7QUFBQSxFQUNsQyxDQUFDO0FBRUQsTUFBSSxDQUFDLHVCQUF1Qix1QkFBdUI7QUFDakQscUNBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLGNBQU0sb0JBQUcsMkJBQXVCLHFDQUF3QixFQUFFLFVBQU0sc0JBQVMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDcEc7QUFHQSxRQUFNLFVBQVUsT0FBTyxTQUFTLFFBQVEsQ0FBQyw0QkFBVSxhQUFhO0FBRWhFLFlBQU0sMEJBQWEsQ0FBQyxPQUFHLDJDQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUMsR0FBRyxHQUFJLFlBQVksQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFJLEVBQUUsa0JBQWtCLFFBQVEsQ0FBQyxDQUFDO0FBR3pJLFFBQU0saUJBQWEsMkJBQWMsS0FBSyxRQUFRLElBQUk7QUFDbEQsUUFBTSxVQUFVLE9BQU8sU0FDbkIsTUFBTSxJQUFJLENBQUMsVUFBTSwyQkFBUyxZQUFZLENBQUMsRUFBRSxXQUFXLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFDbkUsTUFBTSxpQkFBaUI7QUFFM0IsUUFBTSxpQkFBaUIsUUFBUSxPQUFPLENBQUMsV0FBVyxzQkFBc0IsTUFBTSxDQUFDLGdCQUFnQixLQUFDLDhCQUFZLFFBQVEsV0FBVyxDQUFDLENBQUM7QUFFakksTUFBSSxlQUFlLFdBQVcsR0FBRztBQUMvQjtBQUFBLEVBQ0Y7QUFHQSxZQUFNLDBCQUFhO0FBQUEsSUFDakIsT0FBRywyQ0FBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUFBLElBQzVDO0FBQUEsSUFDQSxXQUFPLDRDQUFtQixzQkFBc0IsQ0FBQztBQUFBLElBQ2pEO0FBQUEsSUFDQSxPQUFPLGtDQUFrQztBQUFBLElBQ3pDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsT0FBTztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQSxFQUFFLGtCQUFrQixlQUFlO0FBQUEsRUFDckMsQ0FBQztBQUNIO0FBS0EsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSx5QkFBeUI7QUFDL0IsTUFBTSxxQ0FBcUM7QUFpQjNDLGVBQWUsbUJBQXNDO0FBQ25ELFFBQU0sa0JBQWtCLFVBQU0sK0JBQW1CLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDbEYsU0FBTyxrQkFDSCxnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsS0FBQyxrREFBcUIsSUFBSSxDQUFDLElBQzNELFVBQU0sMEJBQVEsc0JBQUssQ0FBQyxTQUFTLEdBQUc7QUFBQSxJQUNqQyxTQUFTO0FBQUEsTUFDUDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ047IiwibmFtZXMiOltdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2IsXG4gIG1rZHRlbXAsXG4gIHJlYWRGaWxlLFxuICBybSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQge1xuICBqb2luLFxuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHR5cGUgeyBMaW5rQ2hlY2tTa2lwRW50cnkgfSBmcm9tICcuLi9saW5rLWNoZWNrLXNraXAudHMnO1xuXG5pbXBvcnQgeyBnZXRCdWxrQ29uY3VycmVuY3kgfSBmcm9tICcuLi9idWxrLWNvbmN1cnJlbmN5LnRzJztcbmltcG9ydCB7IGdldE5vbklnbm9yZWRGaWxlcyB9IGZyb20gJy4uL2dpdC50cyc7XG5pbXBvcnQge1xuICBnZXRMaW5rQ2hlY2tTa2lwV2FybmluZ3MsXG4gIG1lcmdlTGlua2luYXRvclNraXBDb25maWcsXG4gIHJlYWRMaW5rQ2hlY2tTa2lwRW50cmllc1xufSBmcm9tICcuLi9saW5rLWNoZWNrLXNraXAudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7XG4gIGNoZWNrSXNJbk5vZGVNb2R1bGVzLFxuICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0Jcbn0gZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBsaW50fSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGNvcGllZCB0byB0aGUgcHJvamVjdCByb290IHdoZW4gdGhlIHByb2plY3QgaGFzIG5vbmUuIFdpdGhvdXQgaXQsXG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgcnVucyB3aXRoIGl0cyBvd24gZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEdsb2JzLCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIsIG9mIG1hcmtkb3duIGZpbGVzIHRvIGxlYXZlIG91dCBvZiB0aGUgYGxpbmtpbmF0b3JgIHBhc3Mgb25seTtcbiAgICogYG1hcmtkb3dubGludC1jbGkyYCBzdGlsbCBsaW50cyB0aGVtLlxuICAgKlxuICAgKiBGb3IgYSBkb2N1bWVudGF0aW9uIHNpdGUgd2hvc2UgcGFnZXMgbGluayB0byBlYWNoIG90aGVyIGJhc2UtYWJzb2x1dGVseSAoYC88c2l0ZS1iYXNlPi9ndWlkZXMvLi4uYCk6IHRob3NlXG4gICAqIGxpbmtzIHJlc29sdmUgb25seSBhZ2FpbnN0IHRoZSBCVUlMVCBzaXRlLCBzbyBgbGlua2luYXRvcmAgcmVwb3J0cyBlYWNoIG9uZSBhcyBhIDQwNCwgYW5kIHRoZSBzaXRlJ3Mgb3duXG4gICAqIGJ1aWxkIGlzIHdoYXQgY2hlY2tzIHRoZW0uXG4gICAqXG4gICAqIEBleGFtcGxlIGBbJ2RvY3MvKionXWBcbiAgICovXG4gIHJlYWRvbmx5IGxpbmtDaGVja0V4Y2x1ZGVHbG9icz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIGxpbmtDaGVja0V4Y2x1ZGVHbG9icyA9IFtdLCBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbixcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ01qc1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoZXMgYXJlIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ21hcmtkb3dubGludC1jbGkyJyB9KSwgLi4uKHNob3VsZEZpeCA/IFsnLS1maXgnXSA6IFtdKSwgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZUFsbCgnXFxcXCcsICcvJykgfHwgcClcbiAgICA6IGF3YWl0IGdldE1hcmtkb3duRmlsZXMoKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgY29uc3QgbGlua0NoZWNrRmlsZXMgPSBtZEZpbGVzLmZpbHRlcigobWRGaWxlKSA9PiBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMuZXZlcnkoKGV4Y2x1ZGVHbG9iKSA9PiAhbWF0Y2hlc0dsb2IobWRGaWxlLCBleGNsdWRlR2xvYikpKTtcbiAgLy8gYGxpbmtpbmF0b3JgIHdpdGggbm8gTE9DQVRJT04gcHJpbnRzIGl0cyB1c2FnZSBhbmQgZXhpdHMgbm9uLXplcm8sIHNvIGEgbGlzdCBlbXB0aWVkIGJ5IHRoZSBleGNsdXNpb25zIGhhcyBub3RoaW5nIHRvIGNoZWNrLlxuICBpZiAobGlua0NoZWNrRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHNraXBFbnRyaWVzID0gcmVhZExpbmtDaGVja1NraXBFbnRyaWVzKCk7XG4gIGNvbnN0IHNraXBDb25maWdGb2xkZXIgPSBza2lwRW50cmllcy5sZW5ndGggPiAwID8gYXdhaXQgd3JpdGVTa2lwQ29uZmlnKHNraXBFbnRyaWVzLCBsaW5rQ2hlY2tGaWxlcywgcm9vdEZvbGRlcikgOiBudWxsO1xuICB0cnkge1xuICAgIGF3YWl0IHJ1bkxpbmtpbmF0b3IobGlua0NoZWNrRmlsZXMsIHNraXBDb25maWdGb2xkZXIpO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChza2lwQ29uZmlnRm9sZGVyICE9PSBudWxsKSB7XG4gICAgICBhd2FpdCBybShza2lwQ29uZmlnRm9sZGVyLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhlIGdpdCBwYXRoc3BlYyBtYXRjaGluZyBldmVyeSBtYXJrZG93biBmaWxlIGluIHRoZSByZXBvc2l0b3J5LCBhdCBhbnkgZGVwdGguXG4gKi9cbmNvbnN0IE1BUktET1dOX1BBVEhTUEVDID0gJyoubWQnO1xuY29uc3QgTElOS19DSEVDS19DT05DVVJSRU5DWSA9IDEwMDtcbmNvbnN0IExJTktfQ0hFQ0tfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMF8wMDA7XG5jb25zdCBMSU5LSU5BVE9SX0NPTkZJR19GSUxFX05BTUUgPSAnbGlua2luYXRvci5jb25maWcuanNvbic7XG5cbi8qKlxuICogTGlzdHMgdGhlIG1hcmtkb3duIGZpbGVzIHRvIGhhbmQgdG8gYGxpbmtpbmF0b3JgLlxuICpcbiAqIGBsaW5raW5hdG9yYCB0YWtlcyBhIGZpbGUgbGlzdCByYXRoZXIgdGhhbiBhbiBpZ25vcmUgY29uZmlndXJhdGlvbiwgc28gdGhlIGdpdGlnbm9yZWQgZmlsZXMgaGF2ZSB0byBiZVxuICogZHJvcHBlZCBiZWZvcmUgaXQgaXMgaW52b2tlZC4gR2l0IGl0c2VsZiBhbnN3ZXJzIHRoYXQgKG5lc3RlZCBpZ25vcmUgZmlsZXMsIGAhYCBuZWdhdGlvbnMgYW5kIGFsbCk7IHRoZVxuICogaGFuZC1tYWludGFpbmVkIGdsb2IgZXhjbHVzaW9ucyBiZWxvdyBhcmUgb25seSB0aGUgZmFsbGJhY2sgZm9yIGEgY2hlY2tvdXQgd2l0aG91dCBnaXQsIGFuZCB0aGV5IGFyZSB0aGVcbiAqIHZlcnkgbGlzdHMgdGhpcyBpbmRpcmVjdGlvbiBleGlzdHMgdG8gc3RvcCBmcm9tIGRyaWZ0aW5nLlxuICpcbiAqIFRoZSBgbm9kZV9tb2R1bGVzYCBmaWx0ZXIgaXMgYXBwbGllZCB0byB0aGUgZ2l0LWRlcml2ZWQgbGlzdCB0b28sIGFuZCBkZWxpYmVyYXRlbHkgc286IGdpdCBvbmx5IHNraXBzXG4gKiB3aGF0IHRoZSByZXBvc2l0b3J5IGFza2VkIGl0IHRvIHNraXAsIGFuZCBhIHJlcG9zaXRvcnkgY2FuIGRlbGliZXJhdGVseSBUUkFDSyBhIHZlbmRvcmVkIGBub2RlX21vZHVsZXNgXG4gKiB0cmVlLiBUaGF0IGlzIHRoZSBvbmUgZXhjbHVzaW9uIGAuZ2l0aWdub3JlYCBjYW5ub3QgYW5zd2VyIOKAlCBzZWUgYG1hcmtkb3dubGludC1pZ25vcmVzLnRzYC4gQXBwbHlpbmcgaXRcbiAqIGhlcmUga2VlcHMgYGxpbmtpbmF0b3JgIGluIHN0ZXAgd2l0aCB0aGUgbWFya2Rvd25saW50IGhhbGYsIHdoaWNoIGlnbm9yZXMgdGhlIHNhbWUgcGF0aHMgYnkgZ2xvYi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG1hcmtkb3duIGZpbGUgcGF0aHMsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG5vbklnbm9yZWRGaWxlcyA9IGF3YWl0IGdldE5vbklnbm9yZWRGaWxlcyh7IHBhdHRlcm5zOiBbTUFSS0RPV05fUEFUSFNQRUNdIH0pO1xuICByZXR1cm4gbm9uSWdub3JlZEZpbGVzXG4gICAgPyBub25JZ25vcmVkRmlsZXMuZmlsdGVyKChwYXRoKSA9PiAhY2hlY2tJc0luTm9kZU1vZHVsZXMocGF0aCkpXG4gICAgOiAoYXdhaXQgdG9BcnJheShnbG9iKFsnKiovKi5tZCddLCB7XG4gICAgICBleGNsdWRlOiBbXG4gICAgICAgICcuZ2l0LyoqJyxcbiAgICAgICAgJ2Rpc3QvKionLFxuICAgICAgICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0JcbiAgICAgIF1cbiAgICB9KSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW5MaW5raW5hdG9yKGxpbmtDaGVja0ZpbGVzOiBzdHJpbmdbXSwgc2tpcENvbmZpZ0ZvbGRlcjogbnVsbCB8IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBFcnJvciByZXRyaWVzIHVzZSBtaWxsaXNlY29uZCBqaXR0ZXIuIE9taXQgLS1yZXRyeTogaXRzIHNlcGFyYXRlIFJldHJ5LUFmdGVyIG1vZGUgY2FuIHNsZWVwIGZvciB0aG91c2FuZHNcbiAgLy8gb2Ygc2Vjb25kcyBvbiBhIDQyOSB3ZSBhbHJlYWR5IGFjY2VwdCBhcyBhIHdhcm5pbmcuIFJlcXVlc3QgdGltZW91dHMgcmVtYWluIGVycm9ycyBhbmQga2VlcCB0aGVpciByZXRyaWVzLlxuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgIC4uLnJlc29sdmVUb29sQ29tbWFuZCh7IHRvb2w6ICdsaW5raW5hdG9yJyB9KSxcbiAgICAnLS1jb25jdXJyZW5jeScsXG4gICAgU3RyaW5nKGdldEJ1bGtDb25jdXJyZW5jeShMSU5LX0NIRUNLX0NPTkNVUlJFTkNZKSksXG4gICAgJy0tdGltZW91dCcsXG4gICAgU3RyaW5nKExJTktfQ0hFQ0tfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpLFxuICAgICctLXJldHJ5LWVycm9ycycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWNvdW50JyxcbiAgICAnMycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWppdHRlcicsXG4gICAgJzUwMDAnLFxuICAgICctLXN0YXR1cy1jb2RlJyxcbiAgICAnNDI5Ondhcm4nLFxuICAgICctLXVybC1yZXdyaXRlLXNlYXJjaCcsXG4gICAgU3RyaW5nLnJhd2BodHRwczovL3d3d1xcLm5wbWpzXFwuY29tL3BhY2thZ2UvYCxcbiAgICAnLS11cmwtcmV3cml0ZS1yZXBsYWNlJyxcbiAgICAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJyxcbiAgICAuLi4oc2tpcENvbmZpZ0ZvbGRlciA9PT0gbnVsbCA/IFtdIDogWyctLWNvbmZpZycsIGpvaW4oc2tpcENvbmZpZ0ZvbGRlciwgTElOS0lOQVRPUl9DT05GSUdfRklMRV9OQU1FKV0pLFxuICAgIHsgYmF0Y2hlZEFyZ3VtZW50czogbGlua0NoZWNrRmlsZXMgfVxuICBdKTtcbn1cblxuLyoqXG4gKiBXYXJucyBhYm91dCBldmVyeSBsaW5rIHRoZSBza2lwIGVudHJpZXMgdGFrZSBvdXQgb2YgdGhlIGNoZWNrLCBhbmQgd3JpdGVzIHRoZSBgbGlua2luYXRvcmAgY29uZmlnIHRoYXQgc2tpcHMgdGhlbS5cbiAqXG4gKiBAcGFyYW0gc2tpcEVudHJpZXMgLSBUaGUgc2tpcCBlbnRyaWVzLlxuICogQHBhcmFtIGxpbmtDaGVja0ZpbGVzIC0gVGhlIG1hcmtkb3duIGZpbGVzIGhhbmRlZCB0byBgbGlua2luYXRvcmAsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlci5cbiAqIEBwYXJhbSByb290Rm9sZGVyIC0gVGhlIHJvb3QgZm9sZGVyLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGhvbGRpbmcgdGhlIGNvbmZpZzsgdGhlIGNhbGxlciByZW1vdmVzIGl0LlxuICovXG5hc3luYyBmdW5jdGlvbiB3cml0ZVNraXBDb25maWcoc2tpcEVudHJpZXM6IHJlYWRvbmx5IExpbmtDaGVja1NraXBFbnRyeVtdLCBsaW5rQ2hlY2tGaWxlczogcmVhZG9ubHkgc3RyaW5nW10sIHJvb3RGb2xkZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNvdXJjZUZpbGVzID0gYXdhaXQgUHJvbWlzZS5hbGwobGlua0NoZWNrRmlsZXMubWFwKGFzeW5jIChwYXRoKSA9PiAoe1xuICAgIGNvbnRlbnQ6IGF3YWl0IHJlYWRGaWxlKHJlc29sdmUocm9vdEZvbGRlciwgcGF0aCksICd1dGYtOCcpLFxuICAgIHBhdGhcbiAgfSkpKTtcbiAgZm9yIChjb25zdCB3YXJuaW5nIG9mIGdldExpbmtDaGVja1NraXBXYXJuaW5ncyhza2lwRW50cmllcywgc291cmNlRmlsZXMpKSB7XG4gICAgY29uc29sZS53YXJuKHdhcm5pbmcpO1xuICB9XG5cbiAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSByZXNvbHZlKHJvb3RGb2xkZXIsIExJTktJTkFUT1JfQ09ORklHX0ZJTEVfTkFNRSk7XG4gIGNvbnN0IHByb2plY3RDb25maWc6IHVua25vd24gPSBleGlzdHNTeW5jKHByb2plY3RDb25maWdQYXRoKSA/IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUocHJvamVjdENvbmZpZ1BhdGgsICd1dGYtOCcpKSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2tpcENvbmZpZ0ZvbGRlciA9IGF3YWl0IG1rZHRlbXAoam9pbih0bXBkaXIoKSwgJ2xpbmstY2hlY2stc2tpcC0nKSk7XG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKHNraXBDb25maWdGb2xkZXIsIExJTktJTkFUT1JfQ09ORklHX0ZJTEVfTkFNRSksIEpTT04uc3RyaW5naWZ5KG1lcmdlTGlua2luYXRvclNraXBDb25maWcocHJvamVjdENvbmZpZywgc2tpcEVudHJpZXMpKSk7XG4gIHJldHVybiBza2lwQ29uZmlnRm9sZGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7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
@@ -23,6 +23,7 @@ export * as 'gate' from './gate.mjs';
23
23
  export * as 'git' from './git.mjs';
24
24
  export * as 'json' from './json.mjs';
25
25
  export * as 'library-build' from './library-build.mjs';
26
+ export * as 'link-check-skip' from './link-check-skip.mjs';
26
27
  export * as 'linters' from './linters/index.mjs';
27
28
  export * as 'nano-staged-config' from './nano-staged-config.mjs';
28
29
  export * as 'npm-publish' from './npm-publish.mjs';
@@ -23,6 +23,7 @@ import * as gate from "./gate.mjs";
23
23
  import * as git from "./git.mjs";
24
24
  import * as json from "./json.mjs";
25
25
  import * as library_build from "./library-build.mjs";
26
+ import * as link_check_skip from "./link-check-skip.mjs";
26
27
  import * as linters from "./linters/index.mjs";
27
28
  import * as nano_staged_config from "./nano-staged-config.mjs";
28
29
  import * as npm_publish from "./npm-publish.mjs";
@@ -61,6 +62,7 @@ export {
61
62
  git,
62
63
  json,
63
64
  library_build as "library-build",
65
+ link_check_skip as "link-check-skip",
64
66
  linters,
65
67
  nano_staged_config as "nano-staged-config",
66
68
  npm,
@@ -79,4 +81,4 @@ export {
79
81
  validate_dependencies as "validate-dependencies",
80
82
  version
81
83
  };
82
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1aWxkJyBmcm9tICcuL2J1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdidWxrLWNvbmN1cnJlbmN5JyBmcm9tICcuL2J1bGstY29uY3VycmVuY3kudHMnO1xuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjaGVjay1wcm9qZWN0LXR5cGVzJyBmcm9tICcuL2NoZWNrLXByb2plY3QtdHlwZXMudHMnO1xuZXhwb3J0ICogYXMgJ2NsaS11dGlscycgZnJvbSAnLi9jbGktdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtZ2VuZXJhdG9yJyBmcm9tICcuL2NvZGUtZ2VuZXJhdG9yLnRzJztcbmV4cG9ydCAqIGFzICdjb21taXRsaW50LWNvbmZpZycgZnJvbSAnLi9jb21taXRsaW50LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMnIGZyb20gJy4vY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtbGludC1tZC1oZWFkZXInIGZyb20gJy4vY29tbWl0bGludC1saW50LW1kLWhlYWRlci50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlcicgZnJvbSAnLi9jb21taXRsaW50LXNwZWxsY2hlY2staGVhZGVyLnRzJztcbmV4cG9ydCAqIGFzICdkb2NzLXNpdGUnIGZyb20gJy4vZG9jcy1zaXRlL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlbnYtdG9nZ2xlJyBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuZXhwb3J0ICogYXMgJ2V4ZWMnIGZyb20gJy4vZXhlYy50cyc7XG5leHBvcnQgKiBhcyAnZm9yYmlkZGVuLXBhdHRlcm5zJyBmcm9tICcuL2ZvcmJpZGRlbi1wYXR0ZXJucy50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdmcycgZnJvbSAnLi9mcy50cyc7XG5leHBvcnQgKiBhcyAnZ2F0ZScgZnJvbSAnLi9nYXRlLnRzJztcbmV4cG9ydCAqIGFzICdnaXQnIGZyb20gJy4vZ2l0LnRzJztcbmV4cG9ydCAqIGFzICdqc29uJyBmcm9tICcuL2pzb24udHMnO1xuZXhwb3J0ICogYXMgJ2xpYnJhcnktYnVpbGQnIGZyb20gJy4vbGlicmFyeS1idWlsZC50cyc7XG5leHBvcnQgKiBhcyAnbGludGVycycgZnJvbSAnLi9saW50ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICduYW5vLXN0YWdlZC1jb25maWcnIGZyb20gJy4vbmFuby1zdGFnZWQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICducG0tcHVibGlzaCcgZnJvbSAnLi9ucG0tcHVibGlzaC50cyc7XG5leHBvcnQgKiBhcyAnbnBtLXJ1bicgZnJvbSAnLi9ucG0tcnVuLnRzJztcbmV4cG9ydCAqIGFzICducG0nIGZyb20gJy4vbnBtLnRzJztcbmV4cG9ydCAqIGFzICdwYWNrYWdlLWxvY2staW50ZWdyaXR5JyBmcm9tICcuL3BhY2thZ2UtbG9jay1pbnRlZ3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ3BhY2thZ2UtbWFuYWdlcicgZnJvbSAnLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgJ3JlbGVhc2VkLWlzc3VlcycgZnJvbSAnLi9yZWxlYXNlZC1pc3N1ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3JlcG8tcGF0aHMnIGZyb20gJy4vcmVwby1wYXRocy50cyc7XG5leHBvcnQgKiBhcyAncm9vdCcgZnJvbSAnLi9yb290LnRzJztcbmV4cG9ydCAqIGFzICdzaGFyZWQtY29uZmlnLWZpbGVzJyBmcm9tICcuL3NoYXJlZC1jb25maWctZmlsZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Vwc3RyZWFtLXN5bmMtY2xpJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMtY2xpLnRzJztcbmV4cG9ydCAqIGFzICd1cHN0cmVhbS1zeW5jJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlY2xhcmF0aW9ucycgZnJvbSAnLi92YWxpZGF0ZS1kZWNsYXJhdGlvbnMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlcGVuZGVuY2llcycgZnJvbSAnLi92YWxpZGF0ZS1kZXBlbmRlbmNpZXMudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVksV0FBYTtBQUN6QixZQUFZQSxzQkFBd0I7QUFDcEMsWUFBWSxjQUFnQjtBQUM1QixZQUFZQyx5QkFBMkI7QUFDdkMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZQyxlQUFpQjtBQUM3QixZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZLGdCQUFrQjtBQUM5QixZQUFZLFFBQVU7QUFDdEIsWUFBWSxVQUFZO0FBQ3hCLFlBQVksU0FBVztBQUN2QixZQUFZLFVBQVk7QUFDeEIsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVksYUFBZTtBQUMzQixZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsaUJBQW1CO0FBQy9CLFlBQVlDLGFBQWU7QUFDM0IsWUFBWSxTQUFXO0FBQ3ZCLFlBQVlDLDRCQUE4QjtBQUMxQyxZQUFZQyxxQkFBdUI7QUFDbkMsWUFBWUMscUJBQXVCO0FBQ25DLFlBQVlDLGdCQUFrQjtBQUM5QixZQUFZLFVBQVk7QUFDeEIsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyx1QkFBeUI7QUFDckMsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQywyQkFBNkI7QUFDekMsWUFBWSxhQUFlOyIsCiAgIm5hbWVzIjogWyJidWxrLWNvbmN1cnJlbmN5IiwgImNoZWNrLXByb2plY3QtdHlwZXMiLCAiY2xpLXV0aWxzIiwgImNvZGUtZ2VuZXJhdG9yIiwgImNvbW1pdGxpbnQtY29uZmlnIiwgImNvbW1pdGxpbnQtZm9yYmlkZGVuLXBhdHRlcm5zIiwgImNvbW1pdGxpbnQtbGludC1tZC1oZWFkZXIiLCAiY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlciIsICJkb2NzLXNpdGUiLCAiZW52LXRvZ2dsZSIsICJmb3JiaWRkZW4tcGF0dGVybnMiLCAibGlicmFyeS1idWlsZCIsICJuYW5vLXN0YWdlZC1jb25maWciLCAibnBtLXB1Ymxpc2giLCAibnBtLXJ1biIsICJwYWNrYWdlLWxvY2staW50ZWdyaXR5IiwgInBhY2thZ2UtbWFuYWdlciIsICJyZWxlYXNlZC1pc3N1ZXMiLCAicmVwby1wYXRocyIsICJzaGFyZWQtY29uZmlnLWZpbGVzIiwgInRlc3QtcnVubmVycyIsICJ1cHN0cmVhbS1zeW5jLWNsaSIsICJ1cHN0cmVhbS1zeW5jIiwgInZhbGlkYXRlLWRlY2xhcmF0aW9ucyIsICJ2YWxpZGF0ZS1kZXBlbmRlbmNpZXMiXQp9Cg==
84
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1aWxkJyBmcm9tICcuL2J1aWxkLnRzJztcbmV4cG9ydCAqIGFzICdidWxrLWNvbmN1cnJlbmN5JyBmcm9tICcuL2J1bGstY29uY3VycmVuY3kudHMnO1xuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdjaGVjay1wcm9qZWN0LXR5cGVzJyBmcm9tICcuL2NoZWNrLXByb2plY3QtdHlwZXMudHMnO1xuZXhwb3J0ICogYXMgJ2NsaS11dGlscycgZnJvbSAnLi9jbGktdXRpbHMudHMnO1xuZXhwb3J0ICogYXMgJ2NvZGUtZ2VuZXJhdG9yJyBmcm9tICcuL2NvZGUtZ2VuZXJhdG9yLnRzJztcbmV4cG9ydCAqIGFzICdjb21taXRsaW50LWNvbmZpZycgZnJvbSAnLi9jb21taXRsaW50LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMnIGZyb20gJy4vY29tbWl0bGludC1mb3JiaWRkZW4tcGF0dGVybnMudHMnO1xuZXhwb3J0ICogYXMgJ2NvbW1pdGxpbnQtbGludC1tZC1oZWFkZXInIGZyb20gJy4vY29tbWl0bGludC1saW50LW1kLWhlYWRlci50cyc7XG5leHBvcnQgKiBhcyAnY29tbWl0bGludC1zcGVsbGNoZWNrLWhlYWRlcicgZnJvbSAnLi9jb21taXRsaW50LXNwZWxsY2hlY2staGVhZGVyLnRzJztcbmV4cG9ydCAqIGFzICdkb2NzLXNpdGUnIGZyb20gJy4vZG9jcy1zaXRlL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlbnYtdG9nZ2xlJyBmcm9tICcuL2Vudi10b2dnbGUudHMnO1xuZXhwb3J0ICogYXMgJ2V4ZWMnIGZyb20gJy4vZXhlYy50cyc7XG5leHBvcnQgKiBhcyAnZm9yYmlkZGVuLXBhdHRlcm5zJyBmcm9tICcuL2ZvcmJpZGRlbi1wYXR0ZXJucy50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdmcycgZnJvbSAnLi9mcy50cyc7XG5leHBvcnQgKiBhcyAnZ2F0ZScgZnJvbSAnLi9nYXRlLnRzJztcbmV4cG9ydCAqIGFzICdnaXQnIGZyb20gJy4vZ2l0LnRzJztcbmV4cG9ydCAqIGFzICdqc29uJyBmcm9tICcuL2pzb24udHMnO1xuZXhwb3J0ICogYXMgJ2xpYnJhcnktYnVpbGQnIGZyb20gJy4vbGlicmFyeS1idWlsZC50cyc7XG5leHBvcnQgKiBhcyAnbGluay1jaGVjay1za2lwJyBmcm9tICcuL2xpbmstY2hlY2stc2tpcC50cyc7XG5leHBvcnQgKiBhcyAnbGludGVycycgZnJvbSAnLi9saW50ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICduYW5vLXN0YWdlZC1jb25maWcnIGZyb20gJy4vbmFuby1zdGFnZWQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICducG0tcHVibGlzaCcgZnJvbSAnLi9ucG0tcHVibGlzaC50cyc7XG5leHBvcnQgKiBhcyAnbnBtLXJ1bicgZnJvbSAnLi9ucG0tcnVuLnRzJztcbmV4cG9ydCAqIGFzICducG0nIGZyb20gJy4vbnBtLnRzJztcbmV4cG9ydCAqIGFzICdwYWNrYWdlLWxvY2staW50ZWdyaXR5JyBmcm9tICcuL3BhY2thZ2UtbG9jay1pbnRlZ3JpdHkudHMnO1xuZXhwb3J0ICogYXMgJ3BhY2thZ2UtbWFuYWdlcicgZnJvbSAnLi9wYWNrYWdlLW1hbmFnZXIudHMnO1xuZXhwb3J0ICogYXMgJ3JlbGVhc2VkLWlzc3VlcycgZnJvbSAnLi9yZWxlYXNlZC1pc3N1ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3JlcG8tcGF0aHMnIGZyb20gJy4vcmVwby1wYXRocy50cyc7XG5leHBvcnQgKiBhcyAncm9vdCcgZnJvbSAnLi9yb290LnRzJztcbmV4cG9ydCAqIGFzICdzaGFyZWQtY29uZmlnLWZpbGVzJyBmcm9tICcuL3NoYXJlZC1jb25maWctZmlsZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3Vwc3RyZWFtLXN5bmMtY2xpJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMtY2xpLnRzJztcbmV4cG9ydCAqIGFzICd1cHN0cmVhbS1zeW5jJyBmcm9tICcuL3Vwc3RyZWFtLXN5bmMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlY2xhcmF0aW9ucycgZnJvbSAnLi92YWxpZGF0ZS1kZWNsYXJhdGlvbnMudHMnO1xuZXhwb3J0ICogYXMgJ3ZhbGlkYXRlLWRlcGVuZGVuY2llcycgZnJvbSAnLi92YWxpZGF0ZS1kZXBlbmRlbmNpZXMudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVksV0FBYTtBQUN6QixZQUFZQSxzQkFBd0I7QUFDcEMsWUFBWSxjQUFnQjtBQUM1QixZQUFZQyx5QkFBMkI7QUFDdkMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVlDLHVCQUF5QjtBQUNyQyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsK0JBQWlDO0FBQzdDLFlBQVlDLGtDQUFvQztBQUNoRCxZQUFZQyxlQUFpQjtBQUM3QixZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZLGdCQUFrQjtBQUM5QixZQUFZLFFBQVU7QUFDdEIsWUFBWSxVQUFZO0FBQ3hCLFlBQVksU0FBVztBQUN2QixZQUFZLFVBQVk7QUFDeEIsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZLGFBQWU7QUFDM0IsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQyxhQUFlO0FBQzNCLFlBQVksU0FBVztBQUN2QixZQUFZQyw0QkFBOEI7QUFDMUMsWUFBWUMscUJBQXVCO0FBQ25DLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQyxnQkFBa0I7QUFDOUIsWUFBWSxVQUFZO0FBQ3hCLFlBQVlDLHlCQUEyQjtBQUN2QyxZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWUMsdUJBQXlCO0FBQ3JDLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZQywyQkFBNkI7QUFDekMsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVksYUFBZTsiLAogICJuYW1lcyI6IFsiYnVsay1jb25jdXJyZW5jeSIsICJjaGVjay1wcm9qZWN0LXR5cGVzIiwgImNsaS11dGlscyIsICJjb2RlLWdlbmVyYXRvciIsICJjb21taXRsaW50LWNvbmZpZyIsICJjb21taXRsaW50LWZvcmJpZGRlbi1wYXR0ZXJucyIsICJjb21taXRsaW50LWxpbnQtbWQtaGVhZGVyIiwgImNvbW1pdGxpbnQtc3BlbGxjaGVjay1oZWFkZXIiLCAiZG9jcy1zaXRlIiwgImVudi10b2dnbGUiLCAiZm9yYmlkZGVuLXBhdHRlcm5zIiwgImxpYnJhcnktYnVpbGQiLCAibGluay1jaGVjay1za2lwIiwgIm5hbm8tc3RhZ2VkLWNvbmZpZyIsICJucG0tcHVibGlzaCIsICJucG0tcnVuIiwgInBhY2thZ2UtbG9jay1pbnRlZ3JpdHkiLCAicGFja2FnZS1tYW5hZ2VyIiwgInJlbGVhc2VkLWlzc3VlcyIsICJyZXBvLXBhdGhzIiwgInNoYXJlZC1jb25maWctZmlsZXMiLCAidGVzdC1ydW5uZXJzIiwgInVwc3RyZWFtLXN5bmMtY2xpIiwgInVwc3RyZWFtLXN5bmMiLCAidmFsaWRhdGUtZGVjbGFyYXRpb25zIiwgInZhbGlkYXRlLWRlcGVuZGVuY2llcyJdCn0K
@@ -0,0 +1,109 @@
1
+ /// <reference path="./library-references.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Links the markdown link check leaves unchecked for one run, named by the {@link LINK_CHECK_SKIP_ENV_VARIABLE}
6
+ * environment variable.
7
+ *
8
+ * Two cases need it: a host the current network cannot reach although it is up (a provider blocking it), and a
9
+ * release whose documentation links to something only that same release pushes. Both are temporary, so the
10
+ * variable belongs on the one command that needs it, never in `.env`: a skip left in place lets a link go stale
11
+ * with nothing to say so. It is read like every other variable here, `.env` included, and every skipped link,
12
+ * like every entry that skipped nothing, prints a warning, so a skip is never silent.
13
+ *
14
+ * Entries are comma-separated. An entry holding `://` is a URL prefix and matches every link starting with it; any
15
+ * other entry is a host and matches the links to exactly that host (`mail.tm` does not match `docs.mail.tm`).
16
+ */
17
+ /**
18
+ * The environment variable naming the links to skip.
19
+ */
20
+ export declare const LINK_CHECK_SKIP_ENV_VARIABLE = "LINK_CHECK_SKIP";
21
+ /**
22
+ * One entry of {@link LINK_CHECK_SKIP_ENV_VARIABLE}.
23
+ */
24
+ export interface LinkCheckSkipEntry {
25
+ /**
26
+ * `host` matches links to exactly that host; `prefix` matches links starting with {@link value}.
27
+ */
28
+ readonly kind: 'host' | 'prefix';
29
+ /**
30
+ * The entry as written, a host lowercased.
31
+ */
32
+ readonly value: string;
33
+ }
34
+ /**
35
+ * The text of one markdown file the link check reads.
36
+ */
37
+ export interface LinkCheckSourceFile {
38
+ /**
39
+ * The file's content.
40
+ */
41
+ readonly content: string;
42
+ /**
43
+ * The file's path, as the warnings name it.
44
+ */
45
+ readonly path: string;
46
+ }
47
+ /**
48
+ * Tells whether an entry matches a URL.
49
+ *
50
+ * @param url - The URL.
51
+ * @param entry - The entry.
52
+ * @returns `true` when a `prefix` entry starts the URL, or a `host` entry is exactly the URL's host.
53
+ */
54
+ export declare function doesLinkCheckSkipEntryMatch(url: string, entry: LinkCheckSkipEntry): boolean;
55
+ /**
56
+ * Finds the absolute `http`/`https` URLs written in a text.
57
+ *
58
+ * It is a textual scan, so it also finds a URL inside a code span, which `linkinator` does not check.
59
+ *
60
+ * @param text - The text to scan.
61
+ * @returns The URLs, in order of appearance, trailing punctuation dropped.
62
+ */
63
+ export declare function extractUrls(text: string): string[];
64
+ /**
65
+ * Builds the warnings for a run with skip entries: one per distinct link each file loses to an entry, and one per
66
+ * entry that matched no link at all.
67
+ *
68
+ * @param entries - The entries, as {@link parseLinkCheckSkipEntries} returned them.
69
+ * @param files - The markdown files the link check is handed.
70
+ * @returns The warning lines, without a trailing newline.
71
+ */
72
+ export declare function getLinkCheckSkipWarnings(entries: readonly LinkCheckSkipEntry[], files: readonly LinkCheckSourceFile[]): string[];
73
+ /**
74
+ * Adds the entries to a `linkinator` config, keeping whatever the project's own config already skips.
75
+ *
76
+ * The skip list goes to `linkinator` as a config file because `--config` replaces the project's
77
+ * `linkinator.config.json` rather than adding to it, so the project's settings have to be carried over.
78
+ *
79
+ * @param projectConfig - The parsed project `linkinator.config.json`, or `undefined` when there is none.
80
+ * @param entries - The entries.
81
+ * @returns The config to write.
82
+ * @throws If the project config is not a JSON object.
83
+ */
84
+ export declare function mergeLinkinatorSkipConfig(projectConfig: unknown, entries: readonly LinkCheckSkipEntry[]): Record<string, unknown>;
85
+ /**
86
+ * Parses the value of {@link LINK_CHECK_SKIP_ENV_VARIABLE}.
87
+ *
88
+ * @param value - The comma-separated value; blank entries are ignored.
89
+ * @returns The entries.
90
+ * @throws If an entry is neither a URL prefix nor a host name.
91
+ */
92
+ export declare function parseLinkCheckSkipEntries(value: string): LinkCheckSkipEntry[];
93
+ /**
94
+ * Reads the entries of {@link LINK_CHECK_SKIP_ENV_VARIABLE}, loading the optional `.env` first.
95
+ *
96
+ * @returns The entries; none when the variable is unset or blank.
97
+ */
98
+ export declare function readLinkCheckSkipEntries(): LinkCheckSkipEntry[];
99
+ /**
100
+ * Converts an entry into a regular expression for the `skip` list of a `linkinator` config file.
101
+ *
102
+ * Never pass it as a `--skip` argument: on Windows the command line passes through the `npx` and `.bin` shims,
103
+ * which re-expand it unquoted, so the `|` in it pipes into a command named by what follows.
104
+ *
105
+ * @param entry - The entry.
106
+ * @returns The regular expression source: an anchored prefix, or the scheme, optional credentials, the host and an
107
+ * optional port followed by the end of the authority.
108
+ */
109
+ export declare function toLinkinatorSkipPattern(entry: LinkCheckSkipEntry): string;
@@ -0,0 +1,125 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return '/';
11
+ },
12
+ env: {},
13
+ platform: 'android'
14
+ };
15
+
16
+ const existingProcess = globalThis.process;
17
+
18
+ if (!existingProcess) {
19
+ globalThis.process = browserProcess;
20
+ return;
21
+ }
22
+
23
+ if (existingProcess.versions?.node) {
24
+ return;
25
+ }
26
+
27
+ const existingProcessRecord = existingProcess;
28
+
29
+ for (const [key, value] of Object.entries(browserProcess)) {
30
+ existingProcessRecord[key] ??= value;
31
+ }
32
+
33
+ existingProcessRecord['browser'] = true;
34
+ }
35
+
36
+ ensureBrowserProcess();
37
+ })();
38
+
39
+ import { escapeRegExp } from "@mnaoumov/typescript-lib/reg-exp";
40
+ import process from "node:process";
41
+ import { loadEnvFileIfExists } from "./env-toggle.mjs";
42
+ const LINK_CHECK_SKIP_ENV_VARIABLE = "LINK_CHECK_SKIP";
43
+ const HOST_REG_EXP = /^[a-z\d-]+(?:\.[a-z\d-]+)*$/i;
44
+ const URL_REG_EXP = /\bhttps?:\/\/[^\s<>()[\]{}"'`]+/gi;
45
+ const URL_TRAILING_PUNCTUATION_REG_EXP = /[.,;:!?*_~]+$/;
46
+ function doesLinkCheckSkipEntryMatch(url, entry) {
47
+ return entry.kind === "prefix" ? url.startsWith(entry.value) : URL.parse(url)?.hostname === entry.value;
48
+ }
49
+ function extractUrls(text) {
50
+ return Array.from(text.matchAll(URL_REG_EXP), (match) => match[0].replace(URL_TRAILING_PUNCTUATION_REG_EXP, ""));
51
+ }
52
+ function getLinkCheckSkipWarnings(entries, files) {
53
+ const warnings = [];
54
+ const usedEntries = /* @__PURE__ */ new Set();
55
+ for (const file of files) {
56
+ for (const url of new Set(extractUrls(file.content))) {
57
+ const entry = entries.find((candidate) => doesLinkCheckSkipEntryMatch(url, candidate));
58
+ if (!entry) {
59
+ continue;
60
+ }
61
+ usedEntries.add(entry);
62
+ warnings.push(`WARNING: ${LINK_CHECK_SKIP_ENV_VARIABLE} skips ${url} in ${file.path} (entry ${entry.value}).`);
63
+ }
64
+ }
65
+ for (const entry of entries) {
66
+ if (!usedEntries.has(entry)) {
67
+ warnings.push(`WARNING: ${LINK_CHECK_SKIP_ENV_VARIABLE} entry ${entry.value} matched no link; remove it.`);
68
+ }
69
+ }
70
+ if (entries.length > 0) {
71
+ warnings.push(
72
+ `WARNING: ${LINK_CHECK_SKIP_ENV_VARIABLE} is set. Set it for one command only, never in .env: a lasting skip lets links go stale unnoticed.`
73
+ );
74
+ }
75
+ return warnings;
76
+ }
77
+ function mergeLinkinatorSkipConfig(projectConfig, entries) {
78
+ const config = projectConfig ?? {};
79
+ if (typeof config !== "object" || Array.isArray(config)) {
80
+ throw new TypeError("The project linkinator.config.json is not a JSON object.");
81
+ }
82
+ const record = config;
83
+ const projectSkip = record["skip"];
84
+ const existingSkip = projectSkip === void 0 ? [] : [projectSkip].flat();
85
+ return { ...record, skip: [...existingSkip, ...entries.map((entry) => toLinkinatorSkipPattern(entry))] };
86
+ }
87
+ function parseLinkCheckSkipEntries(value) {
88
+ const entries = [];
89
+ for (const rawEntry of value.split(",")) {
90
+ const entry = rawEntry.trim();
91
+ if (entry === "") {
92
+ continue;
93
+ }
94
+ if (entry.includes("://")) {
95
+ entries.push({ kind: "prefix", value: entry });
96
+ continue;
97
+ }
98
+ if (!HOST_REG_EXP.test(entry)) {
99
+ throw new Error(`${LINK_CHECK_SKIP_ENV_VARIABLE} entry ${entry} is neither a host name nor a URL prefix (one holding ://).`);
100
+ }
101
+ entries.push({ kind: "host", value: entry.toLowerCase() });
102
+ }
103
+ return entries;
104
+ }
105
+ function readLinkCheckSkipEntries() {
106
+ loadEnvFileIfExists();
107
+ return parseLinkCheckSkipEntries(process.env[LINK_CHECK_SKIP_ENV_VARIABLE] ?? "");
108
+ }
109
+ function toLinkinatorSkipPattern(entry) {
110
+ if (entry.kind === "prefix") {
111
+ return `^${escapeRegExp(entry.value)}`;
112
+ }
113
+ return String.raw`^https?://(?:[^/?#@]*@)?${escapeRegExp(entry.value)}(?::\d+)?(?:[/?#]|$)`;
114
+ }
115
+ export {
116
+ LINK_CHECK_SKIP_ENV_VARIABLE,
117
+ doesLinkCheckSkipEntryMatch,
118
+ extractUrls,
119
+ getLinkCheckSkipWarnings,
120
+ mergeLinkinatorSkipConfig,
121
+ parseLinkCheckSkipEntries,
122
+ readLinkCheckSkipEntries,
123
+ toLinkinatorSkipPattern
124
+ };
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saW5rLWNoZWNrLXNraXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIExpbmtzIHRoZSBtYXJrZG93biBsaW5rIGNoZWNrIGxlYXZlcyB1bmNoZWNrZWQgZm9yIG9uZSBydW4sIG5hbWVkIGJ5IHRoZSB7QGxpbmsgTElOS19DSEVDS19TS0lQX0VOVl9WQVJJQUJMRX1cbiAqIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICpcbiAqIFR3byBjYXNlcyBuZWVkIGl0OiBhIGhvc3QgdGhlIGN1cnJlbnQgbmV0d29yayBjYW5ub3QgcmVhY2ggYWx0aG91Z2ggaXQgaXMgdXAgKGEgcHJvdmlkZXIgYmxvY2tpbmcgaXQpLCBhbmQgYVxuICogcmVsZWFzZSB3aG9zZSBkb2N1bWVudGF0aW9uIGxpbmtzIHRvIHNvbWV0aGluZyBvbmx5IHRoYXQgc2FtZSByZWxlYXNlIHB1c2hlcy4gQm90aCBhcmUgdGVtcG9yYXJ5LCBzbyB0aGVcbiAqIHZhcmlhYmxlIGJlbG9uZ3Mgb24gdGhlIG9uZSBjb21tYW5kIHRoYXQgbmVlZHMgaXQsIG5ldmVyIGluIGAuZW52YDogYSBza2lwIGxlZnQgaW4gcGxhY2UgbGV0cyBhIGxpbmsgZ28gc3RhbGVcbiAqIHdpdGggbm90aGluZyB0byBzYXkgc28uIEl0IGlzIHJlYWQgbGlrZSBldmVyeSBvdGhlciB2YXJpYWJsZSBoZXJlLCBgLmVudmAgaW5jbHVkZWQsIGFuZCBldmVyeSBza2lwcGVkIGxpbmssXG4gKiBsaWtlIGV2ZXJ5IGVudHJ5IHRoYXQgc2tpcHBlZCBub3RoaW5nLCBwcmludHMgYSB3YXJuaW5nLCBzbyBhIHNraXAgaXMgbmV2ZXIgc2lsZW50LlxuICpcbiAqIEVudHJpZXMgYXJlIGNvbW1hLXNlcGFyYXRlZC4gQW4gZW50cnkgaG9sZGluZyBgOi8vYCBpcyBhIFVSTCBwcmVmaXggYW5kIG1hdGNoZXMgZXZlcnkgbGluayBzdGFydGluZyB3aXRoIGl0OyBhbnlcbiAqIG90aGVyIGVudHJ5IGlzIGEgaG9zdCBhbmQgbWF0Y2hlcyB0aGUgbGlua3MgdG8gZXhhY3RseSB0aGF0IGhvc3QgKGBtYWlsLnRtYCBkb2VzIG5vdCBtYXRjaCBgZG9jcy5tYWlsLnRtYCkuXG4gKi9cblxuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3JlZy1leHAnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuaW1wb3J0IHsgbG9hZEVudkZpbGVJZkV4aXN0cyB9IGZyb20gJy4vZW52LXRvZ2dsZS50cyc7XG5cbi8qKlxuICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWluZyB0aGUgbGlua3MgdG8gc2tpcC5cbiAqL1xuZXhwb3J0IGNvbnN0IExJTktfQ0hFQ0tfU0tJUF9FTlZfVkFSSUFCTEUgPSAnTElOS19DSEVDS19TS0lQJztcblxuLyoqXG4gKiBPbmUgZW50cnkgb2Yge0BsaW5rIExJTktfQ0hFQ0tfU0tJUF9FTlZfVkFSSUFCTEV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtDaGVja1NraXBFbnRyeSB7XG4gIC8qKlxuICAgKiBgaG9zdGAgbWF0Y2hlcyBsaW5rcyB0byBleGFjdGx5IHRoYXQgaG9zdDsgYHByZWZpeGAgbWF0Y2hlcyBsaW5rcyBzdGFydGluZyB3aXRoIHtAbGluayB2YWx1ZX0uXG4gICAqL1xuICByZWFkb25seSBraW5kOiAnaG9zdCcgfCAncHJlZml4JztcblxuICAvKipcbiAgICogVGhlIGVudHJ5IGFzIHdyaXR0ZW4sIGEgaG9zdCBsb3dlcmNhc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgdGV4dCBvZiBvbmUgbWFya2Rvd24gZmlsZSB0aGUgbGluayBjaGVjayByZWFkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rQ2hlY2tTb3VyY2VGaWxlIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlJ3MgY29udGVudC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZpbGUncyBwYXRoLCBhcyB0aGUgd2FybmluZ3MgbmFtZSBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuY29uc3QgSE9TVF9SRUdfRVhQID0gL15bYS16XFxkLV0rKD86XFwuW2EtelxcZC1dKykqJC9pO1xuY29uc3QgVVJMX1JFR19FWFAgPSAvXFxiaHR0cHM/OlxcL1xcL1teXFxzPD4oKVtcXF17fVwiJ2BdKy9naTtcbmNvbnN0IFVSTF9UUkFJTElOR19QVU5DVFVBVElPTl9SRUdfRVhQID0gL1suLDs6IT8qX35dKyQvO1xuXG4vKipcbiAqIFRlbGxzIHdoZXRoZXIgYW4gZW50cnkgbWF0Y2hlcyBhIFVSTC5cbiAqXG4gKiBAcGFyYW0gdXJsIC0gVGhlIFVSTC5cbiAqIEBwYXJhbSBlbnRyeSAtIFRoZSBlbnRyeS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGEgYHByZWZpeGAgZW50cnkgc3RhcnRzIHRoZSBVUkwsIG9yIGEgYGhvc3RgIGVudHJ5IGlzIGV4YWN0bHkgdGhlIFVSTCdzIGhvc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb2VzTGlua0NoZWNrU2tpcEVudHJ5TWF0Y2godXJsOiBzdHJpbmcsIGVudHJ5OiBMaW5rQ2hlY2tTa2lwRW50cnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVudHJ5LmtpbmQgPT09ICdwcmVmaXgnID8gdXJsLnN0YXJ0c1dpdGgoZW50cnkudmFsdWUpIDogVVJMLnBhcnNlKHVybCk/Lmhvc3RuYW1lID09PSBlbnRyeS52YWx1ZTtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgYWJzb2x1dGUgYGh0dHBgL2BodHRwc2AgVVJMcyB3cml0dGVuIGluIGEgdGV4dC5cbiAqXG4gKiBJdCBpcyBhIHRleHR1YWwgc2Nhbiwgc28gaXQgYWxzbyBmaW5kcyBhIFVSTCBpbnNpZGUgYSBjb2RlIHNwYW4sIHdoaWNoIGBsaW5raW5hdG9yYCBkb2VzIG5vdCBjaGVjay5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSB0ZXh0IHRvIHNjYW4uXG4gKiBAcmV0dXJucyBUaGUgVVJMcywgaW4gb3JkZXIgb2YgYXBwZWFyYW5jZSwgdHJhaWxpbmcgcHVuY3R1YXRpb24gZHJvcHBlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RVcmxzKHRleHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20odGV4dC5tYXRjaEFsbChVUkxfUkVHX0VYUCksIChtYXRjaCkgPT4gbWF0Y2hbMF0ucmVwbGFjZShVUkxfVFJBSUxJTkdfUFVOQ1RVQVRJT05fUkVHX0VYUCwgJycpKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHdhcm5pbmdzIGZvciBhIHJ1biB3aXRoIHNraXAgZW50cmllczogb25lIHBlciBkaXN0aW5jdCBsaW5rIGVhY2ggZmlsZSBsb3NlcyB0byBhbiBlbnRyeSwgYW5kIG9uZSBwZXJcbiAqIGVudHJ5IHRoYXQgbWF0Y2hlZCBubyBsaW5rIGF0IGFsbC5cbiAqXG4gKiBAcGFyYW0gZW50cmllcyAtIFRoZSBlbnRyaWVzLCBhcyB7QGxpbmsgcGFyc2VMaW5rQ2hlY2tTa2lwRW50cmllc30gcmV0dXJuZWQgdGhlbS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBtYXJrZG93biBmaWxlcyB0aGUgbGluayBjaGVjayBpcyBoYW5kZWQuXG4gKiBAcmV0dXJucyBUaGUgd2FybmluZyBsaW5lcywgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5rQ2hlY2tTa2lwV2FybmluZ3MoZW50cmllczogcmVhZG9ubHkgTGlua0NoZWNrU2tpcEVudHJ5W10sIGZpbGVzOiByZWFkb25seSBMaW5rQ2hlY2tTb3VyY2VGaWxlW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB1c2VkRW50cmllcyA9IG5ldyBTZXQ8TGlua0NoZWNrU2tpcEVudHJ5PigpO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGZvciAoY29uc3QgdXJsIG9mIG5ldyBTZXQoZXh0cmFjdFVybHMoZmlsZS5jb250ZW50KSkpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllcy5maW5kKChjYW5kaWRhdGUpID0+IGRvZXNMaW5rQ2hlY2tTa2lwRW50cnlNYXRjaCh1cmwsIGNhbmRpZGF0ZSkpO1xuICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdXNlZEVudHJpZXMuYWRkKGVudHJ5KTtcbiAgICAgIHdhcm5pbmdzLnB1c2goYFdBUk5JTkc6ICR7TElOS19DSEVDS19TS0lQX0VOVl9WQVJJQUJMRX0gc2tpcHMgJHt1cmx9IGluICR7ZmlsZS5wYXRofSAoZW50cnkgJHtlbnRyeS52YWx1ZX0pLmApO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmICghdXNlZEVudHJpZXMuaGFzKGVudHJ5KSkge1xuICAgICAgd2FybmluZ3MucHVzaChgV0FSTklORzogJHtMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfSBlbnRyeSAke2VudHJ5LnZhbHVlfSBtYXRjaGVkIG5vIGxpbms7IHJlbW92ZSBpdC5gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgd2FybmluZ3MucHVzaChcbiAgICAgIGBXQVJOSU5HOiAke0xJTktfQ0hFQ0tfU0tJUF9FTlZfVkFSSUFCTEV9IGlzIHNldC4gU2V0IGl0IGZvciBvbmUgY29tbWFuZCBvbmx5LCBuZXZlciBpbiAuZW52OiBhIGxhc3Rpbmcgc2tpcCBsZXRzIGxpbmtzIGdvIHN0YWxlIHVubm90aWNlZC5gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB3YXJuaW5ncztcbn1cblxuLyoqXG4gKiBBZGRzIHRoZSBlbnRyaWVzIHRvIGEgYGxpbmtpbmF0b3JgIGNvbmZpZywga2VlcGluZyB3aGF0ZXZlciB0aGUgcHJvamVjdCdzIG93biBjb25maWcgYWxyZWFkeSBza2lwcy5cbiAqXG4gKiBUaGUgc2tpcCBsaXN0IGdvZXMgdG8gYGxpbmtpbmF0b3JgIGFzIGEgY29uZmlnIGZpbGUgYmVjYXVzZSBgLS1jb25maWdgIHJlcGxhY2VzIHRoZSBwcm9qZWN0J3NcbiAqIGBsaW5raW5hdG9yLmNvbmZpZy5qc29uYCByYXRoZXIgdGhhbiBhZGRpbmcgdG8gaXQsIHNvIHRoZSBwcm9qZWN0J3Mgc2V0dGluZ3MgaGF2ZSB0byBiZSBjYXJyaWVkIG92ZXIuXG4gKlxuICogQHBhcmFtIHByb2plY3RDb25maWcgLSBUaGUgcGFyc2VkIHByb2plY3QgYGxpbmtpbmF0b3IuY29uZmlnLmpzb25gLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZXJlIGlzIG5vbmUuXG4gKiBAcGFyYW0gZW50cmllcyAtIFRoZSBlbnRyaWVzLlxuICogQHJldHVybnMgVGhlIGNvbmZpZyB0byB3cml0ZS5cbiAqIEB0aHJvd3MgSWYgdGhlIHByb2plY3QgY29uZmlnIGlzIG5vdCBhIEpTT04gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VMaW5raW5hdG9yU2tpcENvbmZpZyhwcm9qZWN0Q29uZmlnOiB1bmtub3duLCBlbnRyaWVzOiByZWFkb25seSBMaW5rQ2hlY2tTa2lwRW50cnlbXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgY29uZmlnID0gcHJvamVjdENvbmZpZyA/PyB7fTtcbiAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoY29uZmlnKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBwcm9qZWN0IGxpbmtpbmF0b3IuY29uZmlnLmpzb24gaXMgbm90IGEgSlNPTiBvYmplY3QuJyk7XG4gIH1cblxuICBjb25zdCByZWNvcmQgPSBjb25maWcgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHByb2plY3RTa2lwID0gcmVjb3JkWydza2lwJ107XG4gIGNvbnN0IGV4aXN0aW5nU2tpcCA9IHByb2plY3RTa2lwID09PSB1bmRlZmluZWQgPyBbXSA6IFtwcm9qZWN0U2tpcF0uZmxhdCgpO1xuICByZXR1cm4geyAuLi5yZWNvcmQsIHNraXA6IFsuLi5leGlzdGluZ1NraXAsIC4uLmVudHJpZXMubWFwKChlbnRyeSkgPT4gdG9MaW5raW5hdG9yU2tpcFBhdHRlcm4oZW50cnkpKV0gfTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHZhbHVlIG9mIHtAbGluayBMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgY29tbWEtc2VwYXJhdGVkIHZhbHVlOyBibGFuayBlbnRyaWVzIGFyZSBpZ25vcmVkLlxuICogQHJldHVybnMgVGhlIGVudHJpZXMuXG4gKiBAdGhyb3dzIElmIGFuIGVudHJ5IGlzIG5laXRoZXIgYSBVUkwgcHJlZml4IG5vciBhIGhvc3QgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGlua0NoZWNrU2tpcEVudHJpZXModmFsdWU6IHN0cmluZyk6IExpbmtDaGVja1NraXBFbnRyeVtdIHtcbiAgY29uc3QgZW50cmllczogTGlua0NoZWNrU2tpcEVudHJ5W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJhd0VudHJ5IG9mIHZhbHVlLnNwbGl0KCcsJykpIHtcbiAgICBjb25zdCBlbnRyeSA9IHJhd0VudHJ5LnRyaW0oKTtcbiAgICBpZiAoZW50cnkgPT09ICcnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZW50cnkuaW5jbHVkZXMoJzovLycpKSB7XG4gICAgICBlbnRyaWVzLnB1c2goeyBraW5kOiAncHJlZml4JywgdmFsdWU6IGVudHJ5IH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFIT1NUX1JFR19FWFAudGVzdChlbnRyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfSBlbnRyeSAke2VudHJ5fSBpcyBuZWl0aGVyIGEgaG9zdCBuYW1lIG5vciBhIFVSTCBwcmVmaXggKG9uZSBob2xkaW5nIDovLykuYCk7XG4gICAgfVxuXG4gICAgZW50cmllcy5wdXNoKHsga2luZDogJ2hvc3QnLCB2YWx1ZTogZW50cnkudG9Mb3dlckNhc2UoKSB9KTtcbiAgfVxuXG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBlbnRyaWVzIG9mIHtAbGluayBMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFfSwgbG9hZGluZyB0aGUgb3B0aW9uYWwgYC5lbnZgIGZpcnN0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBlbnRyaWVzOyBub25lIHdoZW4gdGhlIHZhcmlhYmxlIGlzIHVuc2V0IG9yIGJsYW5rLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZExpbmtDaGVja1NraXBFbnRyaWVzKCk6IExpbmtDaGVja1NraXBFbnRyeVtdIHtcbiAgbG9hZEVudkZpbGVJZkV4aXN0cygpO1xuICByZXR1cm4gcGFyc2VMaW5rQ2hlY2tTa2lwRW50cmllcyhwcm9jZXNzLmVudltMSU5LX0NIRUNLX1NLSVBfRU5WX1ZBUklBQkxFXSA/PyAnJyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gZW50cnkgaW50byBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgdGhlIGBza2lwYCBsaXN0IG9mIGEgYGxpbmtpbmF0b3JgIGNvbmZpZyBmaWxlLlxuICpcbiAqIE5ldmVyIHBhc3MgaXQgYXMgYSBgLS1za2lwYCBhcmd1bWVudDogb24gV2luZG93cyB0aGUgY29tbWFuZCBsaW5lIHBhc3NlcyB0aHJvdWdoIHRoZSBgbnB4YCBhbmQgYC5iaW5gIHNoaW1zLFxuICogd2hpY2ggcmUtZXhwYW5kIGl0IHVucXVvdGVkLCBzbyB0aGUgYHxgIGluIGl0IHBpcGVzIGludG8gYSBjb21tYW5kIG5hbWVkIGJ5IHdoYXQgZm9sbG93cy5cbiAqXG4gKiBAcGFyYW0gZW50cnkgLSBUaGUgZW50cnkuXG4gKiBAcmV0dXJucyBUaGUgcmVndWxhciBleHByZXNzaW9uIHNvdXJjZTogYW4gYW5jaG9yZWQgcHJlZml4LCBvciB0aGUgc2NoZW1lLCBvcHRpb25hbCBjcmVkZW50aWFscywgdGhlIGhvc3QgYW5kIGFuXG4gKiBvcHRpb25hbCBwb3J0IGZvbGxvd2VkIGJ5IHRoZSBlbmQgb2YgdGhlIGF1dGhvcml0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTGlua2luYXRvclNraXBQYXR0ZXJuKGVudHJ5OiBMaW5rQ2hlY2tTa2lwRW50cnkpOiBzdHJpbmcge1xuICBpZiAoZW50cnkua2luZCA9PT0gJ3ByZWZpeCcpIHtcbiAgICByZXR1cm4gYF4ke2VzY2FwZVJlZ0V4cChlbnRyeS52YWx1ZSl9YDtcbiAgfVxuXG4gIC8vIGBsaW5raW5hdG9yYCBtYXRjaGVzIHRoZSBVUkwgaXQgaGFzIG5vcm1hbGl6ZWQsIHdob3NlIHNjaGVtZSBhbmQgaG9zdCBhcmUgbG93ZXJjYXNlIGFscmVhZHkuXG4gIHJldHVybiBTdHJpbmcucmF3YF5odHRwcz86Ly8oPzpbXi8/I0BdKkApPyR7ZXNjYXBlUmVnRXhwKGVudHJ5LnZhbHVlKX0oPzo6XFxkKyk/KD86Wy8/I118JClgO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxTQUFTLG9CQUFvQjtBQUM3QixPQUFPLGFBQWE7QUFFcEIsU0FBUywyQkFBMkI7QUFLN0IsTUFBTSwrQkFBK0I7QUFnQzVDLE1BQU0sZUFBZTtBQUNyQixNQUFNLGNBQWM7QUFDcEIsTUFBTSxtQ0FBbUM7QUFTbEMsU0FBUyw0QkFBNEIsS0FBYSxPQUFvQztBQUMzRixTQUFPLE1BQU0sU0FBUyxXQUFXLElBQUksV0FBVyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sR0FBRyxHQUFHLGFBQWEsTUFBTTtBQUNwRztBQVVPLFNBQVMsWUFBWSxNQUF3QjtBQUNsRCxTQUFPLE1BQU0sS0FB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
@@ -42,14 +42,26 @@ import { basename } from "@mnaoumov/typescript-lib/path";
42
42
  import { existsSync } from "node:fs";
43
43
  import {
44
44
  cp,
45
- glob
45
+ glob,
46
+ mkdtemp,
47
+ readFile,
48
+ rm,
49
+ writeFile
46
50
  } from "node:fs/promises";
51
+ import { tmpdir } from "node:os";
47
52
  import {
53
+ join,
48
54
  matchesGlob,
49
- relative
55
+ relative,
56
+ resolve
50
57
  } from "node:path";
51
58
  import { getBulkConcurrency } from "../bulk-concurrency.mjs";
52
59
  import { getNonIgnoredFiles } from "../git.mjs";
60
+ import {
61
+ getLinkCheckSkipWarnings,
62
+ mergeLinkinatorSkipConfig,
63
+ readLinkCheckSkipEntries
64
+ } from "../link-check-skip.mjs";
53
65
  import { resolveToolCommand } from "../package-manager.mjs";
54
66
  import { RepoPaths } from "../repo-paths.mjs";
55
67
  import {
@@ -91,6 +103,31 @@ async function lint(options) {
91
103
  if (linkCheckFiles.length === 0) {
92
104
  return;
93
105
  }
106
+ const skipEntries = readLinkCheckSkipEntries();
107
+ const skipConfigFolder = skipEntries.length > 0 ? await writeSkipConfig(skipEntries, linkCheckFiles, rootFolder) : null;
108
+ try {
109
+ await runLinkinator(linkCheckFiles, skipConfigFolder);
110
+ } finally {
111
+ if (skipConfigFolder !== null) {
112
+ await rm(skipConfigFolder, { force: true, recursive: true });
113
+ }
114
+ }
115
+ }
116
+ const MARKDOWN_PATHSPEC = "*.md";
117
+ const LINK_CHECK_CONCURRENCY = 100;
118
+ const LINK_CHECK_TIMEOUT_IN_MILLISECONDS = 3e4;
119
+ const LINKINATOR_CONFIG_FILE_NAME = "linkinator.config.json";
120
+ async function getMarkdownFiles() {
121
+ const nonIgnoredFiles = await getNonIgnoredFiles({ patterns: [MARKDOWN_PATHSPEC] });
122
+ return nonIgnoredFiles ? nonIgnoredFiles.filter((path) => !checkIsInNodeModules(path)) : await toArray(glob(["**/*.md"], {
123
+ exclude: [
124
+ ".git/**",
125
+ "dist/**",
126
+ NODE_MODULES_IGNORE_GLOB
127
+ ]
128
+ }));
129
+ }
130
+ async function runLinkinator(linkCheckFiles, skipConfigFolder) {
94
131
  await execFromRoot([
95
132
  ...resolveToolCommand({ tool: "linkinator" }),
96
133
  "--concurrency",
@@ -108,23 +145,25 @@ async function lint(options) {
108
145
  String.raw`https://www\.npmjs\.com/package/`,
109
146
  "--url-rewrite-replace",
110
147
  "https://registry.npmjs.org/",
148
+ ...skipConfigFolder === null ? [] : ["--config", join(skipConfigFolder, LINKINATOR_CONFIG_FILE_NAME)],
111
149
  { batchedArguments: linkCheckFiles }
112
150
  ]);
113
151
  }
114
- const MARKDOWN_PATHSPEC = "*.md";
115
- const LINK_CHECK_CONCURRENCY = 100;
116
- const LINK_CHECK_TIMEOUT_IN_MILLISECONDS = 3e4;
117
- async function getMarkdownFiles() {
118
- const nonIgnoredFiles = await getNonIgnoredFiles({ patterns: [MARKDOWN_PATHSPEC] });
119
- return nonIgnoredFiles ? nonIgnoredFiles.filter((path) => !checkIsInNodeModules(path)) : await toArray(glob(["**/*.md"], {
120
- exclude: [
121
- ".git/**",
122
- "dist/**",
123
- NODE_MODULES_IGNORE_GLOB
124
- ]
125
- }));
152
+ async function writeSkipConfig(skipEntries, linkCheckFiles, rootFolder) {
153
+ const sourceFiles = await Promise.all(linkCheckFiles.map(async (path) => ({
154
+ content: await readFile(resolve(rootFolder, path), "utf-8"),
155
+ path
156
+ })));
157
+ for (const warning of getLinkCheckSkipWarnings(skipEntries, sourceFiles)) {
158
+ console.warn(warning);
159
+ }
160
+ const projectConfigPath = resolve(rootFolder, LINKINATOR_CONFIG_FILE_NAME);
161
+ const projectConfig = existsSync(projectConfigPath) ? JSON.parse(await readFile(projectConfigPath, "utf-8")) : void 0;
162
+ const skipConfigFolder = await mkdtemp(join(tmpdir(), "link-check-skip-"));
163
+ await writeFile(join(skipConfigFolder, LINKINATOR_CONFIG_FILE_NAME), JSON.stringify(mergeLinkinatorSkipConfig(projectConfig, skipEntries)));
164
+ return skipConfigFolder;
126
165
  }
127
166
  export {
128
167
  lint
129
168
  };
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2Jcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQge1xuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgZ2V0QnVsa0NvbmN1cnJlbmN5IH0gZnJvbSAnLi4vYnVsay1jb25jdXJyZW5jeS50cyc7XG5pbXBvcnQgeyBnZXROb25JZ25vcmVkRmlsZXMgfSBmcm9tICcuLi9naXQudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7XG4gIGNoZWNrSXNJbk5vZGVNb2R1bGVzLFxuICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0Jcbn0gZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBsaW50fSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGNvcGllZCB0byB0aGUgcHJvamVjdCByb290IHdoZW4gdGhlIHByb2plY3QgaGFzIG5vbmUuIFdpdGhvdXQgaXQsXG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgcnVucyB3aXRoIGl0cyBvd24gZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEdsb2JzLCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIsIG9mIG1hcmtkb3duIGZpbGVzIHRvIGxlYXZlIG91dCBvZiB0aGUgYGxpbmtpbmF0b3JgIHBhc3Mgb25seTtcbiAgICogYG1hcmtkb3dubGludC1jbGkyYCBzdGlsbCBsaW50cyB0aGVtLlxuICAgKlxuICAgKiBGb3IgYSBkb2N1bWVudGF0aW9uIHNpdGUgd2hvc2UgcGFnZXMgbGluayB0byBlYWNoIG90aGVyIGJhc2UtYWJzb2x1dGVseSAoYC88c2l0ZS1iYXNlPi9ndWlkZXMvLi4uYCk6IHRob3NlXG4gICAqIGxpbmtzIHJlc29sdmUgb25seSBhZ2FpbnN0IHRoZSBCVUlMVCBzaXRlLCBzbyBgbGlua2luYXRvcmAgcmVwb3J0cyBlYWNoIG9uZSBhcyBhIDQwNCwgYW5kIHRoZSBzaXRlJ3Mgb3duXG4gICAqIGJ1aWxkIGlzIHdoYXQgY2hlY2tzIHRoZW0uXG4gICAqXG4gICAqIEBleGFtcGxlIGBbJ2RvY3MvKionXWBcbiAgICovXG4gIHJlYWRvbmx5IGxpbmtDaGVja0V4Y2x1ZGVHbG9icz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIGxpbmtDaGVja0V4Y2x1ZGVHbG9icyA9IFtdLCBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbixcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ01qc1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoZXMgYXJlIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ21hcmtkb3dubGludC1jbGkyJyB9KSwgLi4uKHNob3VsZEZpeCA/IFsnLS1maXgnXSA6IFtdKSwgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZUFsbCgnXFxcXCcsICcvJykgfHwgcClcbiAgICA6IGF3YWl0IGdldE1hcmtkb3duRmlsZXMoKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgY29uc3QgbGlua0NoZWNrRmlsZXMgPSBtZEZpbGVzLmZpbHRlcigobWRGaWxlKSA9PiBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMuZXZlcnkoKGV4Y2x1ZGVHbG9iKSA9PiAhbWF0Y2hlc0dsb2IobWRGaWxlLCBleGNsdWRlR2xvYikpKTtcbiAgLy8gYGxpbmtpbmF0b3JgIHdpdGggbm8gTE9DQVRJT04gcHJpbnRzIGl0cyB1c2FnZSBhbmQgZXhpdHMgbm9uLXplcm8sIHNvIGEgbGlzdCBlbXB0aWVkIGJ5IHRoZSBleGNsdXNpb25zIGhhcyBub3RoaW5nIHRvIGNoZWNrLlxuICBpZiAobGlua0NoZWNrRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEVycm9yIHJldHJpZXMgdXNlIG1pbGxpc2Vjb25kIGppdHRlci4gT21pdCAtLXJldHJ5OiBpdHMgc2VwYXJhdGUgUmV0cnktQWZ0ZXIgbW9kZSBjYW4gc2xlZXAgZm9yIHRob3VzYW5kc1xuICAvLyBvZiBzZWNvbmRzIG9uIGEgNDI5IHdlIGFscmVhZHkgYWNjZXB0IGFzIGEgd2FybmluZy4gUmVxdWVzdCB0aW1lb3V0cyByZW1haW4gZXJyb3JzIGFuZCBrZWVwIHRoZWlyIHJldHJpZXMuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2xpbmtpbmF0b3InIH0pLFxuICAgICctLWNvbmN1cnJlbmN5JyxcbiAgICBTdHJpbmcoZ2V0QnVsa0NvbmN1cnJlbmN5KExJTktfQ0hFQ0tfQ09OQ1VSUkVOQ1kpKSxcbiAgICAnLS10aW1lb3V0JyxcbiAgICBTdHJpbmcoTElOS19DSEVDS19USU1FT1VUX0lOX01JTExJU0VDT05EUyksXG4gICAgJy0tcmV0cnktZXJyb3JzJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtY291bnQnLFxuICAgICczJyxcbiAgICAnLS1yZXRyeS1lcnJvcnMtaml0dGVyJyxcbiAgICAnNTAwMCcsXG4gICAgJy0tc3RhdHVzLWNvZGUnLFxuICAgICc0Mjk6d2FybicsXG4gICAgJy0tdXJsLXJld3JpdGUtc2VhcmNoJyxcbiAgICBTdHJpbmcucmF3YGh0dHBzOi8vd3d3XFwubnBtanNcXC5jb20vcGFja2FnZS9gLFxuICAgICctLXVybC1yZXdyaXRlLXJlcGxhY2UnLFxuICAgICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8nLFxuICAgIHsgYmF0Y2hlZEFyZ3VtZW50czogbGlua0NoZWNrRmlsZXMgfVxuICBdKTtcbn1cblxuLyoqXG4gKiBUaGUgZ2l0IHBhdGhzcGVjIG1hdGNoaW5nIGV2ZXJ5IG1hcmtkb3duIGZpbGUgaW4gdGhlIHJlcG9zaXRvcnksIGF0IGFueSBkZXB0aC5cbiAqL1xuY29uc3QgTUFSS0RPV05fUEFUSFNQRUMgPSAnKi5tZCc7XG5jb25zdCBMSU5LX0NIRUNLX0NPTkNVUlJFTkNZID0gMTAwO1xuY29uc3QgTElOS19DSEVDS19USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDMwXzAwMDtcblxuLyoqXG4gKiBMaXN0cyB0aGUgbWFya2Rvd24gZmlsZXMgdG8gaGFuZCB0byBgbGlua2luYXRvcmAuXG4gKlxuICogYGxpbmtpbmF0b3JgIHRha2VzIGEgZmlsZSBsaXN0IHJhdGhlciB0aGFuIGFuIGlnbm9yZSBjb25maWd1cmF0aW9uLCBzbyB0aGUgZ2l0aWdub3JlZCBmaWxlcyBoYXZlIHRvIGJlXG4gKiBkcm9wcGVkIGJlZm9yZSBpdCBpcyBpbnZva2VkLiBHaXQgaXRzZWxmIGFuc3dlcnMgdGhhdCAobmVzdGVkIGlnbm9yZSBmaWxlcywgYCFgIG5lZ2F0aW9ucyBhbmQgYWxsKTsgdGhlXG4gKiBoYW5kLW1haW50YWluZWQgZ2xvYiBleGNsdXNpb25zIGJlbG93IGFyZSBvbmx5IHRoZSBmYWxsYmFjayBmb3IgYSBjaGVja291dCB3aXRob3V0IGdpdCwgYW5kIHRoZXkgYXJlIHRoZVxuICogdmVyeSBsaXN0cyB0aGlzIGluZGlyZWN0aW9uIGV4aXN0cyB0byBzdG9wIGZyb20gZHJpZnRpbmcuXG4gKlxuICogVGhlIGBub2RlX21vZHVsZXNgIGZpbHRlciBpcyBhcHBsaWVkIHRvIHRoZSBnaXQtZGVyaXZlZCBsaXN0IHRvbywgYW5kIGRlbGliZXJhdGVseSBzbzogZ2l0IG9ubHkgc2tpcHNcbiAqIHdoYXQgdGhlIHJlcG9zaXRvcnkgYXNrZWQgaXQgdG8gc2tpcCwgYW5kIGEgcmVwb3NpdG9yeSBjYW4gZGVsaWJlcmF0ZWx5IFRSQUNLIGEgdmVuZG9yZWQgYG5vZGVfbW9kdWxlc2BcbiAqIHRyZWUuIFRoYXQgaXMgdGhlIG9uZSBleGNsdXNpb24gYC5naXRpZ25vcmVgIGNhbm5vdCBhbnN3ZXIg4oCUIHNlZSBgbWFya2Rvd25saW50LWlnbm9yZXMudHNgLiBBcHBseWluZyBpdFxuICogaGVyZSBrZWVwcyBgbGlua2luYXRvcmAgaW4gc3RlcCB3aXRoIHRoZSBtYXJrZG93bmxpbnQgaGFsZiwgd2hpY2ggaWdub3JlcyB0aGUgc2FtZSBwYXRocyBieSBnbG9iLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbWFya2Rvd24gZmlsZSBwYXRocywgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgbm9uSWdub3JlZEZpbGVzID0gYXdhaXQgZ2V0Tm9uSWdub3JlZEZpbGVzKHsgcGF0dGVybnM6IFtNQVJLRE9XTl9QQVRIU1BFQ10gfSk7XG4gIHJldHVybiBub25JZ25vcmVkRmlsZXNcbiAgICA/IG5vbklnbm9yZWRGaWxlcy5maWx0ZXIoKHBhdGgpID0+ICFjaGVja0lzSW5Ob2RlTW9kdWxlcyhwYXRoKSlcbiAgICA6IChhd2FpdCB0b0FycmF5KGdsb2IoWycqKi8qLm1kJ10sIHtcbiAgICAgIGV4Y2x1ZGU6IFtcbiAgICAgICAgJy5naXQvKionLFxuICAgICAgICAnZGlzdC8qKicsXG4gICAgICAgIE5PREVfTU9EVUxFU19JR05PUkVfR0xPQlxuICAgICAgXVxuICAgIH0pKSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsZ0JBQWdCO0FBQ3pCLFNBQVMsa0JBQWtCO0FBQzNCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLGlCQUFpQjtBQUMxQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQTBDUCxlQUFzQixLQUFLLFNBQXNDO0FBQy9ELFFBQU0sRUFBRSx1QkFBdUIsd0JBQXdCLENBQUMsR0FBRyxPQUFPLFlBQVksTUFBTSxJQUFJLFdBQVcsQ0FBQztBQUNwRyxRQUFNLGNBQWM7QUFBQSxJQUNsQixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWjtBQUVBLFFBQU0sc0JBQXNCLFlBQVksS0FBSyxDQUFDLGVBQWU7QUFDM0QsVUFBTSxpQkFBaUIsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkUsV0FBTyxXQUFXLGNBQWM7QUFBQSxFQUNsQyxDQUFDO0FBRUQsTUFBSSxDQUFDLHVCQUF1Qix1QkFBdUI7QUFDakQsbUJBQWUsbUJBQW1CLEVBQUUsdUVBQXVFO0FBQzNHLFVBQU0sR0FBRyx1QkFBdUIsd0JBQXdCLEVBQUUsTUFBTSxTQUFTLHFCQUFxQixFQUFFLENBQUMsQ0FBQztBQUFBLEVBQ3BHO0FBR0EsUUFBTSxVQUFVLE9BQU8sU0FBUyxRQUFRLENBQUMsVUFBVSxhQUFhO0FBRWhFLFFBQU0sYUFBYSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyxHQUFHLEdBQUksWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUksRUFBRSxrQkFBa0IsUUFBUSxDQUFDLENBQUM7QUFHekksUUFBTSxhQUFhLGNBQWMsS0FBSyxRQUFRLElBQUk7QUFDbEQsUUFBTSxVQUFVLE9BQU8sU0FDbkIsTUFBTSxJQUFJLENBQUMsTUFBTSxTQUFTLFlBQVksQ0FBQyxFQUFFLFdBQVcsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUNuRSxNQUFNLGlCQUFpQjtBQUUzQixRQUFNLGlCQUFpQixRQUFRLE9BQU8sQ0FBQyxXQUFXLHNCQUFzQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxRQUFRLFdBQVcsQ0FBQyxDQUFDO0FBRWpJLE1BQUksZUFBZSxXQUFXLEdBQUc7QUFDL0I7QUFBQSxFQUNGO0FBR0EsUUFBTSxhQUFhO0FBQUEsSUFDakIsR0FBRyxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUFBLElBQzVDO0FBQUEsSUFDQSxPQUFPLG1CQUFtQixzQkFBc0IsQ0FBQztBQUFBLElBQ2pEO0FBQUEsSUFDQSxPQUFPLGtDQUFrQztBQUFBLElBQ3pDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsT0FBTztBQUFBLElBQ1A7QUFBQSxJQUNBO0FBQUEsSUFDQSxFQUFFLGtCQUFrQixlQUFlO0FBQUEsRUFDckMsQ0FBQztBQUNIO0FBS0EsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSx5QkFBeUI7QUFDL0IsTUFBTSxxQ0FBcUM7QUFpQjNDLGVBQWUsbUJBQXNDO0FBQ25ELFFBQU0sa0JBQWtCLE1BQU0sbUJBQW1CLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDbEYsU0FBTyxrQkFDSCxnQkFBZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLElBQzNELE1BQU0sUUFBUSxLQUFLLENBQUMsU0FBUyxHQUFHO0FBQUEsSUFDakMsU0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUMsQ0FBQztBQUNOOyIsIm5hbWVzIjpbXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqL1xuXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGdsb2IsXG4gIG1rZHRlbXAsXG4gIHJlYWRGaWxlLFxuICBybSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQge1xuICBqb2luLFxuICBtYXRjaGVzR2xvYixcbiAgcmVsYXRpdmUsXG4gIHJlc29sdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHR5cGUgeyBMaW5rQ2hlY2tTa2lwRW50cnkgfSBmcm9tICcuLi9saW5rLWNoZWNrLXNraXAudHMnO1xuXG5pbXBvcnQgeyBnZXRCdWxrQ29uY3VycmVuY3kgfSBmcm9tICcuLi9idWxrLWNvbmN1cnJlbmN5LnRzJztcbmltcG9ydCB7IGdldE5vbklnbm9yZWRGaWxlcyB9IGZyb20gJy4uL2dpdC50cyc7XG5pbXBvcnQge1xuICBnZXRMaW5rQ2hlY2tTa2lwV2FybmluZ3MsXG4gIG1lcmdlTGlua2luYXRvclNraXBDb25maWcsXG4gIHJlYWRMaW5rQ2hlY2tTa2lwRW50cmllc1xufSBmcm9tICcuLi9saW5rLWNoZWNrLXNraXAudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7XG4gIGNoZWNrSXNJbk5vZGVNb2R1bGVzLFxuICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0Jcbn0gZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBsaW50fSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW50T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGNvcGllZCB0byB0aGUgcHJvamVjdCByb290IHdoZW4gdGhlIHByb2plY3QgaGFzIG5vbmUuIFdpdGhvdXQgaXQsXG4gICAqIGBtYXJrZG93bmxpbnQtY2xpMmAgcnVucyB3aXRoIGl0cyBvd24gZGVmYXVsdHMuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEdsb2JzLCByZWxhdGl2ZSB0byB0aGUgcm9vdCBmb2xkZXIsIG9mIG1hcmtkb3duIGZpbGVzIHRvIGxlYXZlIG91dCBvZiB0aGUgYGxpbmtpbmF0b3JgIHBhc3Mgb25seTtcbiAgICogYG1hcmtkb3dubGludC1jbGkyYCBzdGlsbCBsaW50cyB0aGVtLlxuICAgKlxuICAgKiBGb3IgYSBkb2N1bWVudGF0aW9uIHNpdGUgd2hvc2UgcGFnZXMgbGluayB0byBlYWNoIG90aGVyIGJhc2UtYWJzb2x1dGVseSAoYC88c2l0ZS1iYXNlPi9ndWlkZXMvLi4uYCk6IHRob3NlXG4gICAqIGxpbmtzIHJlc29sdmUgb25seSBhZ2FpbnN0IHRoZSBCVUlMVCBzaXRlLCBzbyBgbGlua2luYXRvcmAgcmVwb3J0cyBlYWNoIG9uZSBhcyBhIDQwNCwgYW5kIHRoZSBzaXRlJ3Mgb3duXG4gICAqIGJ1aWxkIGlzIHdoYXQgY2hlY2tzIHRoZW0uXG4gICAqXG4gICAqIEBleGFtcGxlIGBbJ2RvY3MvKionXWBcbiAgICovXG4gIHJlYWRvbmx5IGxpbmtDaGVja0V4Y2x1ZGVHbG9icz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTGludCBtYXJrZG93biBkb2N1bWVudGF0aW9uIHVzaW5nIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIGxpbmtDaGVja0V4Y2x1ZGVHbG9icyA9IFtdLCBwYXRocywgc2hvdWxkRml4ID0gZmFsc2UgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdZYW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdKc29uYyxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnSnNvbixcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWWFtbCxcbiAgICBSZXBvUGF0aHMuTWFya2Rvd25saW50Q29uZmlnWW1sLFxuICAgIFJlcG9QYXRocy5NYXJrZG93bmxpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLk1hcmtkb3dubGludENvbmZpZ01qc1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ21hcmtkb3dubGludDpsaW50JykoJ21hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoZXMgYXJlIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ21hcmtkb3dubGludC1jbGkyJyB9KSwgLi4uKHNob3VsZEZpeCA/IFsnLS1maXgnXSA6IFtdKSwgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1dKTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhlIHBhdGhzLXByb3ZpZGVkIGJyYW5jaCBpcyBvbmx5IGV4ZXJjaXNlZCBieSBjb25zdW1lciBwcm9qZWN0cyBwYXNzaW5nIGZpbGUgbGlzdHMuICovXG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgbWRGaWxlcyA9IHBhdGhzPy5sZW5ndGhcbiAgICA/IHBhdGhzLm1hcCgocCkgPT4gcmVsYXRpdmUocm9vdEZvbGRlciwgcCkucmVwbGFjZUFsbCgnXFxcXCcsICcvJykgfHwgcClcbiAgICA6IGF3YWl0IGdldE1hcmtkb3duRmlsZXMoKTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgY29uc3QgbGlua0NoZWNrRmlsZXMgPSBtZEZpbGVzLmZpbHRlcigobWRGaWxlKSA9PiBsaW5rQ2hlY2tFeGNsdWRlR2xvYnMuZXZlcnkoKGV4Y2x1ZGVHbG9iKSA9PiAhbWF0Y2hlc0dsb2IobWRGaWxlLCBleGNsdWRlR2xvYikpKTtcbiAgLy8gYGxpbmtpbmF0b3JgIHdpdGggbm8gTE9DQVRJT04gcHJpbnRzIGl0cyB1c2FnZSBhbmQgZXhpdHMgbm9uLXplcm8sIHNvIGEgbGlzdCBlbXB0aWVkIGJ5IHRoZSBleGNsdXNpb25zIGhhcyBub3RoaW5nIHRvIGNoZWNrLlxuICBpZiAobGlua0NoZWNrRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHNraXBFbnRyaWVzID0gcmVhZExpbmtDaGVja1NraXBFbnRyaWVzKCk7XG4gIGNvbnN0IHNraXBDb25maWdGb2xkZXIgPSBza2lwRW50cmllcy5sZW5ndGggPiAwID8gYXdhaXQgd3JpdGVTa2lwQ29uZmlnKHNraXBFbnRyaWVzLCBsaW5rQ2hlY2tGaWxlcywgcm9vdEZvbGRlcikgOiBudWxsO1xuICB0cnkge1xuICAgIGF3YWl0IHJ1bkxpbmtpbmF0b3IobGlua0NoZWNrRmlsZXMsIHNraXBDb25maWdGb2xkZXIpO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChza2lwQ29uZmlnRm9sZGVyICE9PSBudWxsKSB7XG4gICAgICBhd2FpdCBybShza2lwQ29uZmlnRm9sZGVyLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhlIGdpdCBwYXRoc3BlYyBtYXRjaGluZyBldmVyeSBtYXJrZG93biBmaWxlIGluIHRoZSByZXBvc2l0b3J5LCBhdCBhbnkgZGVwdGguXG4gKi9cbmNvbnN0IE1BUktET1dOX1BBVEhTUEVDID0gJyoubWQnO1xuY29uc3QgTElOS19DSEVDS19DT05DVVJSRU5DWSA9IDEwMDtcbmNvbnN0IExJTktfQ0hFQ0tfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAzMF8wMDA7XG5jb25zdCBMSU5LSU5BVE9SX0NPTkZJR19GSUxFX05BTUUgPSAnbGlua2luYXRvci5jb25maWcuanNvbic7XG5cbi8qKlxuICogTGlzdHMgdGhlIG1hcmtkb3duIGZpbGVzIHRvIGhhbmQgdG8gYGxpbmtpbmF0b3JgLlxuICpcbiAqIGBsaW5raW5hdG9yYCB0YWtlcyBhIGZpbGUgbGlzdCByYXRoZXIgdGhhbiBhbiBpZ25vcmUgY29uZmlndXJhdGlvbiwgc28gdGhlIGdpdGlnbm9yZWQgZmlsZXMgaGF2ZSB0byBiZVxuICogZHJvcHBlZCBiZWZvcmUgaXQgaXMgaW52b2tlZC4gR2l0IGl0c2VsZiBhbnN3ZXJzIHRoYXQgKG5lc3RlZCBpZ25vcmUgZmlsZXMsIGAhYCBuZWdhdGlvbnMgYW5kIGFsbCk7IHRoZVxuICogaGFuZC1tYWludGFpbmVkIGdsb2IgZXhjbHVzaW9ucyBiZWxvdyBhcmUgb25seSB0aGUgZmFsbGJhY2sgZm9yIGEgY2hlY2tvdXQgd2l0aG91dCBnaXQsIGFuZCB0aGV5IGFyZSB0aGVcbiAqIHZlcnkgbGlzdHMgdGhpcyBpbmRpcmVjdGlvbiBleGlzdHMgdG8gc3RvcCBmcm9tIGRyaWZ0aW5nLlxuICpcbiAqIFRoZSBgbm9kZV9tb2R1bGVzYCBmaWx0ZXIgaXMgYXBwbGllZCB0byB0aGUgZ2l0LWRlcml2ZWQgbGlzdCB0b28sIGFuZCBkZWxpYmVyYXRlbHkgc286IGdpdCBvbmx5IHNraXBzXG4gKiB3aGF0IHRoZSByZXBvc2l0b3J5IGFza2VkIGl0IHRvIHNraXAsIGFuZCBhIHJlcG9zaXRvcnkgY2FuIGRlbGliZXJhdGVseSBUUkFDSyBhIHZlbmRvcmVkIGBub2RlX21vZHVsZXNgXG4gKiB0cmVlLiBUaGF0IGlzIHRoZSBvbmUgZXhjbHVzaW9uIGAuZ2l0aWdub3JlYCBjYW5ub3QgYW5zd2VyIOKAlCBzZWUgYG1hcmtkb3dubGludC1pZ25vcmVzLnRzYC4gQXBwbHlpbmcgaXRcbiAqIGhlcmUga2VlcHMgYGxpbmtpbmF0b3JgIGluIHN0ZXAgd2l0aCB0aGUgbWFya2Rvd25saW50IGhhbGYsIHdoaWNoIGlnbm9yZXMgdGhlIHNhbWUgcGF0aHMgYnkgZ2xvYi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG1hcmtkb3duIGZpbGUgcGF0aHMsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TWFya2Rvd25GaWxlcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIGNvbnN0IG5vbklnbm9yZWRGaWxlcyA9IGF3YWl0IGdldE5vbklnbm9yZWRGaWxlcyh7IHBhdHRlcm5zOiBbTUFSS0RPV05fUEFUSFNQRUNdIH0pO1xuICByZXR1cm4gbm9uSWdub3JlZEZpbGVzXG4gICAgPyBub25JZ25vcmVkRmlsZXMuZmlsdGVyKChwYXRoKSA9PiAhY2hlY2tJc0luTm9kZU1vZHVsZXMocGF0aCkpXG4gICAgOiAoYXdhaXQgdG9BcnJheShnbG9iKFsnKiovKi5tZCddLCB7XG4gICAgICBleGNsdWRlOiBbXG4gICAgICAgICcuZ2l0LyoqJyxcbiAgICAgICAgJ2Rpc3QvKionLFxuICAgICAgICBOT0RFX01PRFVMRVNfSUdOT1JFX0dMT0JcbiAgICAgIF1cbiAgICB9KSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW5MaW5raW5hdG9yKGxpbmtDaGVja0ZpbGVzOiBzdHJpbmdbXSwgc2tpcENvbmZpZ0ZvbGRlcjogbnVsbCB8IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBFcnJvciByZXRyaWVzIHVzZSBtaWxsaXNlY29uZCBqaXR0ZXIuIE9taXQgLS1yZXRyeTogaXRzIHNlcGFyYXRlIFJldHJ5LUFmdGVyIG1vZGUgY2FuIHNsZWVwIGZvciB0aG91c2FuZHNcbiAgLy8gb2Ygc2Vjb25kcyBvbiBhIDQyOSB3ZSBhbHJlYWR5IGFjY2VwdCBhcyBhIHdhcm5pbmcuIFJlcXVlc3QgdGltZW91dHMgcmVtYWluIGVycm9ycyBhbmQga2VlcCB0aGVpciByZXRyaWVzLlxuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgIC4uLnJlc29sdmVUb29sQ29tbWFuZCh7IHRvb2w6ICdsaW5raW5hdG9yJyB9KSxcbiAgICAnLS1jb25jdXJyZW5jeScsXG4gICAgU3RyaW5nKGdldEJ1bGtDb25jdXJyZW5jeShMSU5LX0NIRUNLX0NPTkNVUlJFTkNZKSksXG4gICAgJy0tdGltZW91dCcsXG4gICAgU3RyaW5nKExJTktfQ0hFQ0tfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpLFxuICAgICctLXJldHJ5LWVycm9ycycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWNvdW50JyxcbiAgICAnMycsXG4gICAgJy0tcmV0cnktZXJyb3JzLWppdHRlcicsXG4gICAgJzUwMDAnLFxuICAgICctLXN0YXR1cy1jb2RlJyxcbiAgICAnNDI5Ondhcm4nLFxuICAgICctLXVybC1yZXdyaXRlLXNlYXJjaCcsXG4gICAgU3RyaW5nLnJhd2BodHRwczovL3d3d1xcLm5wbWpzXFwuY29tL3BhY2thZ2UvYCxcbiAgICAnLS11cmwtcmV3cml0ZS1yZXBsYWNlJyxcbiAgICAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJyxcbiAgICAuLi4oc2tpcENvbmZpZ0ZvbGRlciA9PT0gbnVsbCA/IFtdIDogWyctLWNvbmZpZycsIGpvaW4oc2tpcENvbmZpZ0ZvbGRlciwgTElOS0lOQVRPUl9DT05GSUdfRklMRV9OQU1FKV0pLFxuICAgIHsgYmF0Y2hlZEFyZ3VtZW50czogbGlua0NoZWNrRmlsZXMgfVxuICBdKTtcbn1cblxuLyoqXG4gKiBXYXJucyBhYm91dCBldmVyeSBsaW5rIHRoZSBza2lwIGVudHJpZXMgdGFrZSBvdXQgb2YgdGhlIGNoZWNrLCBhbmQgd3JpdGVzIHRoZSBgbGlua2luYXRvcmAgY29uZmlnIHRoYXQgc2tpcHMgdGhlbS5cbiAqXG4gKiBAcGFyYW0gc2tpcEVudHJpZXMgLSBUaGUgc2tpcCBlbnRyaWVzLlxuICogQHBhcmFtIGxpbmtDaGVja0ZpbGVzIC0gVGhlIG1hcmtkb3duIGZpbGVzIGhhbmRlZCB0byBgbGlua2luYXRvcmAsIHJlbGF0aXZlIHRvIHRoZSByb290IGZvbGRlci5cbiAqIEBwYXJhbSByb290Rm9sZGVyIC0gVGhlIHJvb3QgZm9sZGVyLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGhvbGRpbmcgdGhlIGNvbmZpZzsgdGhlIGNhbGxlciByZW1vdmVzIGl0LlxuICovXG5hc3luYyBmdW5jdGlvbiB3cml0ZVNraXBDb25maWcoc2tpcEVudHJpZXM6IHJlYWRvbmx5IExpbmtDaGVja1NraXBFbnRyeVtdLCBsaW5rQ2hlY2tGaWxlczogcmVhZG9ubHkgc3RyaW5nW10sIHJvb3RGb2xkZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHNvdXJjZUZpbGVzID0gYXdhaXQgUHJvbWlzZS5hbGwobGlua0NoZWNrRmlsZXMubWFwKGFzeW5jIChwYXRoKSA9PiAoe1xuICAgIGNvbnRlbnQ6IGF3YWl0IHJlYWRGaWxlKHJlc29sdmUocm9vdEZvbGRlciwgcGF0aCksICd1dGYtOCcpLFxuICAgIHBhdGhcbiAgfSkpKTtcbiAgZm9yIChjb25zdCB3YXJuaW5nIG9mIGdldExpbmtDaGVja1NraXBXYXJuaW5ncyhza2lwRW50cmllcywgc291cmNlRmlsZXMpKSB7XG4gICAgY29uc29sZS53YXJuKHdhcm5pbmcpO1xuICB9XG5cbiAgY29uc3QgcHJvamVjdENvbmZpZ1BhdGggPSByZXNvbHZlKHJvb3RGb2xkZXIsIExJTktJTkFUT1JfQ09ORklHX0ZJTEVfTkFNRSk7XG4gIGNvbnN0IHByb2plY3RDb25maWc6IHVua25vd24gPSBleGlzdHNTeW5jKHByb2plY3RDb25maWdQYXRoKSA/IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUocHJvamVjdENvbmZpZ1BhdGgsICd1dGYtOCcpKSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2tpcENvbmZpZ0ZvbGRlciA9IGF3YWl0IG1rZHRlbXAoam9pbih0bXBkaXIoKSwgJ2xpbmstY2hlY2stc2tpcC0nKSk7XG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKHNraXBDb25maWdGb2xkZXIsIExJTktJTkFUT1JfQ09ORklHX0ZJTEVfTkFNRSksIEpTT04uc3RyaW5naWZ5KG1lcmdlTGlua2luYXRvclNraXBDb25maWcocHJvamVjdENvbmZpZywgc2tpcEVudHJpZXMpKSk7XG4gIHJldHVybiBza2lwQ29uZmlnRm9sZGVyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mnaoumov/typescript-dev-toolkit",
3
- "version": "5.2.0",
3
+ "version": "5.3.0",
4
4
  "description": "Generic TypeScript project tooling: build, lint, format, spellcheck, test, gate and release scripts.",
5
5
  "keywords": [
6
6
  "typescript",