metascope 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/bin/cli.js +57 -59
  2. package/dist/bin/dns-Cz6xXkw_.js +1 -0
  3. package/dist/bin/{jiti-Bqwg645p.js → jiti-DDHyYNLW.js} +5 -5
  4. package/dist/bin/renovate-CpDMbQZd.js +1 -0
  5. package/dist/bin/rolldown-runtime-DaDcL9Zw.js +1 -0
  6. package/dist/bin/shared-Dix5HPlG.js +6 -0
  7. package/dist/bin/web-tree-sitter.wasm +0 -0
  8. package/dist/lib/file-matching.js +15 -10
  9. package/dist/lib/package.js +1 -1
  10. package/dist/lib/parsers/gemspec-parser.js +10 -7
  11. package/dist/lib/parsers/makefile-config-parser.js +1 -1
  12. package/dist/lib/parsers/rfc822-header-parser.js +1 -1
  13. package/dist/lib/parsers/setup-py-parser.js +1 -1
  14. package/dist/lib/sources/arduino-library-properties.d.ts +1 -1
  15. package/dist/lib/sources/arduino-library-properties.js +3 -3
  16. package/dist/lib/sources/cinder-cinderblock-xml.d.ts +1 -1
  17. package/dist/lib/sources/cinder-cinderblock-xml.js +1 -1
  18. package/dist/lib/sources/codemeta-json.d.ts +1 -1
  19. package/dist/lib/sources/codemeta-json.js +1 -1
  20. package/dist/lib/sources/file-stats.d.ts +1 -1
  21. package/dist/lib/sources/git-stats.d.ts +1 -1
  22. package/dist/lib/sources/github-actions.d.ts +1 -1
  23. package/dist/lib/sources/github.d.ts +1 -1
  24. package/dist/lib/sources/go-go-mod.d.ts +1 -1
  25. package/dist/lib/sources/go-go-mod.js +1 -1
  26. package/dist/lib/sources/go-goreleaser-yaml.d.ts +1 -1
  27. package/dist/lib/sources/go-goreleaser-yaml.js +1 -1
  28. package/dist/lib/sources/java-pom-xml.d.ts +1 -1
  29. package/dist/lib/sources/java-pom-xml.js +1 -1
  30. package/dist/lib/sources/license-file.d.ts +1 -1
  31. package/dist/lib/sources/metadata-file.d.ts +1 -1
  32. package/dist/lib/sources/metadata-file.js +1 -1
  33. package/dist/lib/sources/metascope.d.ts +1 -1
  34. package/dist/lib/sources/node-npm-registry.d.ts +1 -1
  35. package/dist/lib/sources/node-package-json.js +1 -1
  36. package/dist/lib/sources/obsidian-plugin-manifest-json.d.ts +1 -1
  37. package/dist/lib/sources/obsidian-plugin-registry.d.ts +1 -1
  38. package/dist/lib/sources/openframeworks-addon-config-mk.d.ts +1 -1
  39. package/dist/lib/sources/openframeworks-addon-config-mk.js +1 -1
  40. package/dist/lib/sources/openframeworks-install-xml.d.ts +1 -1
  41. package/dist/lib/sources/openframeworks-install-xml.js +1 -1
  42. package/dist/lib/sources/processing-library-properties.d.ts +1 -1
  43. package/dist/lib/sources/processing-library-properties.js +3 -3
  44. package/dist/lib/sources/processing-sketch-properties.d.ts +1 -1
  45. package/dist/lib/sources/processing-sketch-properties.js +1 -1
  46. package/dist/lib/sources/publiccode-yaml.d.ts +1 -1
  47. package/dist/lib/sources/publiccode-yaml.js +1 -1
  48. package/dist/lib/sources/python-pkg-info.d.ts +1 -1
  49. package/dist/lib/sources/python-pkg-info.js +1 -1
  50. package/dist/lib/sources/python-pypi-registry.d.ts +1 -1
  51. package/dist/lib/sources/python-pyproject-toml.js +1 -1
  52. package/dist/lib/sources/python-setup-cfg.d.ts +1 -1
  53. package/dist/lib/sources/python-setup-cfg.js +2 -2
  54. package/dist/lib/sources/python-setup-py.d.ts +1 -1
  55. package/dist/lib/sources/python-setup-py.js +1 -1
  56. package/dist/lib/sources/readme-file.d.ts +1 -1
  57. package/dist/lib/sources/readme-file.js +1 -1
  58. package/dist/lib/sources/ruby-gemspec.d.ts +1 -1
  59. package/dist/lib/sources/ruby-gemspec.js +1 -1
  60. package/dist/lib/sources/rust-cargo-toml.d.ts +1 -1
  61. package/dist/lib/sources/rust-cargo-toml.js +1 -1
  62. package/dist/lib/sources/xcode-info-plist.d.ts +1 -1
  63. package/dist/lib/sources/xcode-info-plist.js +1 -1
  64. package/dist/lib/sources/xcode-project-pbxproj.d.ts +1 -1
  65. package/dist/lib/sources/xcode-project-pbxproj.js +1 -1
  66. package/dist/lib/templates/codemeta-json.d.ts +1 -1
  67. package/dist/lib/templates/codemeta.d.ts +1 -1
  68. package/dist/lib/templates/frontmatter.d.ts +1 -1
  69. package/dist/lib/templates/metadata.d.ts +1 -1
  70. package/dist/lib/templates/project.d.ts +1 -1
  71. package/dist/lib/utilities/codemeta-helpers.d.ts +1 -1
  72. package/dist/lib/utilities/fetch.js +15 -1
  73. package/dist/lib/utilities/license-identification.js +1 -1
  74. package/dist/lib/utilities/template-helpers.d.ts +1 -1
  75. package/dist/lib/utilities/template-helpers.js +2 -2
  76. package/dist/lib/utilities/tree-sitter-wasm.js +1 -1
  77. package/package.json +11 -11
  78. package/dist/bin/chunk-BTyA9uPd.js +0 -1
  79. package/dist/bin/dns-CMo4lMFT.js +0 -1
  80. package/dist/bin/renovate-RGZhd1au.js +0 -1
  81. package/dist/bin/shared-DovHaiUj.js +0 -4
@@ -27,4 +27,4 @@ const pythonPyprojectTomlSource = defineSource({
27
27
  phase: 1
28
28
  });
29
29
  //#endregion
30
- export { pythonPyprojectTomlSource };
30
+ export { parse, pythonPyprojectTomlSource };
@@ -25,4 +25,4 @@ declare const setupCfgDataSchema: z.ZodObject<{
25
25
  type SetupCfg = z.infer<typeof setupCfgDataSchema>;
26
26
  type PythonSetupCfgData = OneOrMany<SourceRecord<SetupCfg>> | undefined;
27
27
  //#endregion
28
- export { PythonSetupCfgData };
28
+ export { PythonSetupCfgData, SetupCfg };
@@ -27,7 +27,7 @@ const setupCfgDataSchema = z.object({
27
27
  version: nonEmptyString
28
28
  });
29
29
  /** Simple string attributes to extract from [metadata]. */
30
- const STRING_ATTRS = new Set([
30
+ const STRING_ATTRS = /* @__PURE__ */ new Set([
31
31
  "author",
32
32
  "author_email",
33
33
  "description",
@@ -103,4 +103,4 @@ const pythonSetupCfgSource = defineSource({
103
103
  phase: 1
104
104
  });
105
105
  //#endregion
106
- export { pythonSetupCfgSource };
106
+ export { parse, pythonSetupCfgSource };
@@ -25,4 +25,4 @@ declare const setupPyDataSchema: z.ZodObject<{
25
25
  type SetupPyData = z.infer<typeof setupPyDataSchema>;
26
26
  type PythonSetupPyData = OneOrMany<SourceRecord<SetupPyData>> | undefined;
27
27
  //#endregion
28
- export { PythonSetupPyData };
28
+ export { PythonSetupPyData, SetupPyData };
@@ -45,4 +45,4 @@ const pythonSetupPySource = defineSource({
45
45
  phase: 1
46
46
  });
47
47
  //#endregion
48
- export { pythonSetupPySource };
48
+ export { parse, pythonSetupPySource };
@@ -9,4 +9,4 @@ declare const readmeSchema: z.ZodObject<{
9
9
  type Readme = z.infer<typeof readmeSchema>;
10
10
  type ReadmeFileData = OneOrMany<SourceRecord<Readme>> | undefined;
11
11
  //#endregion
12
- export { ReadmeFileData };
12
+ export { Readme, ReadmeFileData };
@@ -69,4 +69,4 @@ const readmeFileSource = defineSource({
69
69
  phase: 1
70
70
  });
71
71
  //#endregion
72
- export { readmeFileSource };
72
+ export { parse, readmeFileSource };
@@ -41,4 +41,4 @@ declare const gemSpecSchema: z.ZodObject<{
41
41
  type GemSpec = z.infer<typeof gemSpecSchema>;
42
42
  type RubyGemspecData = OneOrMany<SourceRecord<GemSpec>> | undefined;
43
43
  //#endregion
44
- export { RubyGemspecData };
44
+ export { GemSpec, RubyGemspecData };
@@ -60,4 +60,4 @@ const rubyGemspecSource = defineSource({
60
60
  phase: 1
61
61
  });
62
62
  //#endregion
63
- export { rubyGemspecSource };
63
+ export { parse, rubyGemspecSource };
@@ -37,4 +37,4 @@ declare const cargoTomlSchema: z.ZodObject<{
37
37
  type CargoToml = z.infer<typeof cargoTomlSchema>;
38
38
  type RustCargoTomlData = OneOrMany<SourceRecord<CargoToml>> | undefined;
39
39
  //#endregion
40
- export { RustCargoTomlData };
40
+ export { CargoToml, RustCargoTomlData };
@@ -175,4 +175,4 @@ const rustCargoTomlSource = defineSource({
175
175
  phase: 1
176
176
  });
177
177
  //#endregion
178
- export { rustCargoTomlSource };
178
+ export { parse$1 as parse, rustCargoTomlSource };
@@ -19,4 +19,4 @@ declare const infoPlistSchema: z.ZodObject<{
19
19
  type InfoPlist = z.infer<typeof infoPlistSchema>;
20
20
  type XcodeInfoPlistData = OneOrMany<SourceRecord<InfoPlist>> | undefined;
21
21
  //#endregion
22
- export { XcodeInfoPlistData };
22
+ export { InfoPlist, XcodeInfoPlistData };
@@ -225,4 +225,4 @@ const xcodeInfoPlistSource = defineSource({
225
225
  phase: 1
226
226
  });
227
227
  //#endregion
228
- export { xcodeInfoPlistSource };
228
+ export { parse$1 as parse, xcodeInfoPlistSource };
@@ -18,4 +18,4 @@ declare const pbxprojSchema: z.ZodObject<{
18
18
  type Pbxproj = z.infer<typeof pbxprojSchema>;
19
19
  type XcodeProjectPbxprojData = OneOrMany<SourceRecord<Pbxproj>> | undefined;
20
20
  //#endregion
21
- export { XcodeProjectPbxprojData };
21
+ export { Pbxproj, XcodeProjectPbxprojData };
@@ -237,4 +237,4 @@ const xcodeProjectPbxprojSource = defineSource({
237
237
  phase: 1
238
238
  });
239
239
  //#endregion
240
- export { xcodeProjectPbxprojSource };
240
+ export { parse, xcodeProjectPbxprojSource };
@@ -105,4 +105,4 @@ declare const codemetaJson: Template<{
105
105
  version?: string | undefined;
106
106
  }>;
107
107
  //#endregion
108
- export { TemplateDataCodemetaJson };
108
+ export { TemplateDataCodemetaJson, codemetaJson };
@@ -44,4 +44,4 @@ declare const codemeta: Template<{
44
44
  version: string | undefined;
45
45
  }>;
46
46
  //#endregion
47
- export { TemplateDataCodemeta };
47
+ export { TemplateDataCodemeta, codemeta };
@@ -86,4 +86,4 @@ declare const frontmatter: Template<{
86
86
  'Git Submodules': number;
87
87
  }>;
88
88
  //#endregion
89
- export { TemplateDataFrontmatter };
89
+ export { TemplateDataFrontmatter, frontmatter };
@@ -14,4 +14,4 @@ declare const metadata: Template<{
14
14
  topics: string[] | undefined;
15
15
  }>;
16
16
  //#endregion
17
- export { TemplateDataMetadata };
17
+ export { TemplateDataMetadata, metadata };
@@ -36,4 +36,4 @@ declare const project: Template<{
36
36
  version: string | undefined;
37
37
  }>;
38
38
  //#endregion
39
- export { TemplateDataProject };
39
+ export { TemplateDataProject, project };
@@ -37,4 +37,4 @@ type CodemetaDependencyLd = {
37
37
  version?: string;
38
38
  };
39
39
  //#endregion
40
- export { CodemetaDependencyLd, CodemetaPersonOrOrgLd };
40
+ export { CodemetaDependencyLd, CodemetaOrganizationLd, CodemetaPersonOrOrgLd };
@@ -1,12 +1,26 @@
1
1
  import { log } from "../log.js";
2
2
  //#region src/lib/utilities/fetch.ts
3
+ const MIN_FETCH_INTERVAL_MS = 300;
4
+ let fetchChain = Promise.resolve();
5
+ let lastFetchStart = 0;
6
+ async function waitForFetchTurn() {
7
+ const turn = fetchChain.then(async () => {
8
+ const wait = lastFetchStart + MIN_FETCH_INTERVAL_MS - Date.now();
9
+ if (wait > 0) await sleep(wait);
10
+ lastFetchStart = Date.now();
11
+ });
12
+ fetchChain = turn;
13
+ return turn;
14
+ }
3
15
  /**
4
16
  * Fetch with automatic retries and exponential backoff. Retries on network
5
- * errors and 429/5xx responses.
17
+ * errors and 429/5xx responses. Request starts are paced globally to stay under
18
+ * per-IP rate limits.
6
19
  */
7
20
  async function fetchWithRetry(url, options, maxRetries = 5) {
8
21
  let lastError;
9
22
  for (let attempt = 0; attempt <= maxRetries; attempt++) try {
23
+ await waitForFetchTurn();
10
24
  const response = await fetch(url, options);
11
25
  if ((response.status === 429 || response.status >= 500) && attempt < maxRetries) {
12
26
  const delay = getDelay(attempt, response);
@@ -242,4 +242,4 @@ function identifyByUrl(text) {
242
242
  }
243
243
  }
244
244
  //#endregion
245
- export { identifyLicense };
245
+ export { identifyLicense, spdxIdToUrl };
@@ -139,4 +139,4 @@ declare function toStatus(codeRepository?: string, codemetaAuthorName?: CodeMeta
139
139
  */
140
140
  declare function isValidUrl(value: string): boolean;
141
141
  //#endregion
142
- export { template_helpers_d_exports };
142
+ export { REPLACEMENTS, collectArrayField, collectField, dependencyNames, ensureArray, firstOf, hasDependencyWithId, isAuthoredBy, isOnGithubAccountOf, isValidUrl, mixedStringsToArray, nonEmpty, splitCommaSeparated, stripNamespace, stripUndefined, template_helpers_d_exports, toAlias, toBasicLicense, toBasicLicenses, toBasicNames, toDelimitedString, toLocalUrl, toMarkdownLink, toMb, toOptionalMarkdownLink, toStatus, toStatusLegacy, usesPnpm };
@@ -153,7 +153,7 @@ function toAlias(value) {
153
153
  function escapeRegExp(string_) {
154
154
  return string_.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`);
155
155
  }
156
- const REPLACEMENTS = new Map([["javascript", "JavaScript"], ["typescript", "TypeScript"]]);
156
+ const REPLACEMENTS = /* @__PURE__ */ new Map([["javascript", "JavaScript"], ["typescript", "TypeScript"]]);
157
157
  /**
158
158
  * Cache compiled regexes for replacement maps to avoid recompilation on each
159
159
  * call.
@@ -329,4 +329,4 @@ function isValidUrl(value) {
329
329
  return is.urlString(value);
330
330
  }
331
331
  //#endregion
332
- export { REPLACEMENTS, collectArrayField, collectField, dependencyNames, ensureArray, firstOf, hasDependencyWithId, isAuthoredBy, isOnGithubAccountOf, isValidUrl, mixedStringsToArray, nonEmpty, splitCommaSeparated, stripUndefined, template_helpers_exports, toAlias, toBasicLicenses, toBasicNames, toLocalUrl, toMb, toStatus, toStatusLegacy, usesPnpm };
332
+ export { REPLACEMENTS, collectArrayField, collectField, dependencyNames, ensureArray, firstOf, hasDependencyWithId, isAuthoredBy, isOnGithubAccountOf, isValidUrl, mixedStringsToArray, nonEmpty, splitCommaSeparated, stripNamespace, stripUndefined, template_helpers_exports, toAlias, toBasicLicense, toBasicLicenses, toBasicNames, toDelimitedString, toLocalUrl, toMarkdownLink, toMb, toOptionalMarkdownLink, toStatus, toStatusLegacy, usesPnpm };
@@ -49,4 +49,4 @@ async function getRubyLanguage() {
49
49
  return rubyLanguage;
50
50
  }
51
51
  //#endregion
52
- export { getPythonLanguage, getRubyLanguage, initParser, setGrammarDirectory };
52
+ export { findGrammarDirectory, getPythonLanguage, getRubyLanguage, initParser, setGrammarDirectory };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "metascope",
3
- "version": "0.8.3",
3
+ "version": "0.8.5",
4
4
  "description": "A CLI tool and TypeScript library to easily extract metadata from all kinds of software repositories.",
5
5
  "keywords": [
6
6
  "metadata",
@@ -50,7 +50,7 @@
50
50
  "@types/yargs": "^17.0.35",
51
51
  "case-police": "^2.2.1",
52
52
  "defu": "^6.1.7",
53
- "fast-xml-parser": "^5.8.0",
53
+ "fast-xml-parser": "^5.9.3",
54
54
  "find-workspaces": "^0.3.1",
55
55
  "git-url-parse": "^16.1.0",
56
56
  "gray-matter-es": "^0.2.1",
@@ -65,39 +65,39 @@
65
65
  "read-pkg": "^10.1.0",
66
66
  "read-pyproject": "^0.3.3",
67
67
  "remark-parse": "^11.0.0",
68
- "semver": "^7.8.1",
68
+ "semver": "^7.8.5",
69
69
  "simple-git": "^3.36.0",
70
- "smol-toml": "^1.6.1",
70
+ "smol-toml": "^1.7.0",
71
71
  "spdx-license-list": "^6.11.0",
72
72
  "string-ts": "^2.3.1",
73
73
  "tinyexec": "^1.2.4",
74
74
  "tinyglobby": "^0.2.17",
75
75
  "unified": "^11.0.5",
76
- "updates": "^17.17.3",
77
- "web-tree-sitter": "^0.26.9",
76
+ "updates": "^17.18.1",
77
+ "web-tree-sitter": "^0.26.10",
78
78
  "yaml": "^2.9.0",
79
79
  "yargs": "^18.0.0",
80
80
  "zod": "^4.4.3"
81
81
  },
82
82
  "devDependencies": {
83
- "@arethetypeswrong/core": "^0.18.3",
83
+ "@arethetypeswrong/core": "^0.18.4",
84
84
  "@fast-csv/parse": "^5.0.7",
85
- "@kitschpatrol/shared-config": "^7.6.3",
85
+ "@kitschpatrol/shared-config": "^7.6.4",
86
86
  "@types/jsonld": "^1.5.15",
87
87
  "@types/picomatch": "^4.0.3",
88
88
  "@types/semver": "^7.7.1",
89
89
  "bumpp": "^11.1.0",
90
90
  "jsonld": "^9.0.0",
91
- "mdat-plugin-cli-help": "^3.0.1",
91
+ "mdat-plugin-cli-help": "^3.0.2",
92
92
  "msw": "2.12.14",
93
93
  "publint": "^0.3.21",
94
94
  "shx": "^0.4.0",
95
95
  "tree-sitter-python": "^0.25.0",
96
96
  "tree-sitter-ruby": "^0.23.1",
97
- "tsdown": "^0.22.1",
97
+ "tsdown": "^0.22.3",
98
98
  "tsx": "^4.22.4",
99
99
  "typescript": "~5.9.3",
100
- "vitest": "^4.1.8"
100
+ "vitest": "^4.1.9"
101
101
  },
102
102
  "engines": {
103
103
  "node": ">=22.17.0"
@@ -1 +0,0 @@
1
- import{createRequire as e}from"node:module";var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(e&&(t=e(e=0)),t),c=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),l=(e,t)=>{let r={};for(var i in e)n(r,i,{get:e[i],enumerable:!0});return t||n(r,Symbol.toStringTag,{value:`Module`}),r},u=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},d=(e,r,i)=>(i=e==null?{}:t(a(e)),u(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)),f=e=>o.call(e,`module.exports`)?e[`module.exports`]:u(n({},`__esModule`,{value:!0}),e),p=e(import.meta.url);export{f as a,p as i,s as n,d as o,l as r,c as t};
@@ -1 +0,0 @@
1
- import e from"node:dns";function t(){let t=new Map,n=new Map,r=e.lookup;e.lookup=function(i,...a){let o={},s;typeof a[0]==`function`?s=a[0]:(o=typeof a[0]==`number`?{family:a[0]}:a[0]||{},s=a[1]);let c=t.get(i);if(c){o.all?s(null,c):s(null,c[0].address,c[0].family);return}if(n.has(i)){n.get(i).push({options:o,callback:s});return}n.set(i,[{options:o,callback:s}]),r.call(e,i,{all:!0},(e,r)=>{let a=n.get(i);n.delete(i),!e&&r?.length&&t.set(i,r);for(let{options:t,callback:n}of a)e?n(e):t.all?n(null,r):n(null,r[0].address,r[0].family)})}}export{t as enableDnsCache};
@@ -1 +0,0 @@
1
- import{a as e,i as t,n,t as r}from"./shared-DovHaiUj.js";import{join as i}from"node:path";import{readFile as a}from"node:fs/promises";const o=[`renovate.json`,`renovate.json5`,...[`.github`,`.gitea`,`.forgejo`,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.json5`],s={y:365,year:365,years:365,mo:30,month:30,months:30,w:7,week:7,weeks:7,d:1,day:1,days:1,h:1/24,hour:1/24,hours:1/24,min:1/1440,minute:1/1440,minutes:1/1440,s:1/86400,second:1/86400,seconds:1/86400};function c(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=s[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}function l(e){if(!Array.isArray(e.matchPackageNames)||!e.matchPackageNames.length)return!1;for(let t of Object.keys(e))if(t.startsWith(`match`)&&t!==`matchPackageNames`)return!1;return!0}async function u(e){for(let t of o){let n=i(e,...t.split(`/`));try{return{path:n,text:await a(n,`utf8`)}}catch{}}try{let t=await a(i(e,`package.json`),`utf8`),n=JSON.parse(t);if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:`package.json`,text:JSON.stringify(n.renovate)}}catch{}}function d(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function f(e,t){let n={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=c(e.minimumReleaseAge);t!==void 0&&t>0&&(n.cooldown=t)}let i=[],a={};if(Array.isArray(e.ignoreDeps))for(let t of e.ignoreDeps)typeof t==`string`&&t&&i.push(t);if(Array.isArray(e.packageRules))for(let t of e.packageRules){if(!t||typeof t!=`object`||!l(t))continue;let e=t.matchPackageNames.filter(e=>typeof e==`string`&&!!e);if(t.enabled===!1)for(let t of e)i.push(d(t));if(typeof t.allowedVersions==`string`&&r(t.allowedVersions))for(let n of e)a[n]=t.allowedVersions}return i.length&&(n.exclude=i),Object.keys(a).length&&(n.pin=a),n}const p=t(t=>n(t,async t=>{let n=await u(t);if(!n)return null;let r;try{r=e(n.text)}catch(e){throw Error(`Unable to parse renovate config ${n.path}: ${e.message}`)}return!r||typeof r!=`object`?null:{parsed:r,path:n.path}}));async function m(e,t={}){let n=await p(e);return n?f(n.parsed,t):{}}export{m as loadRenovateConfig};
@@ -1,4 +0,0 @@
1
- import{accessSync as e,globSync as t,lstatSync as n,readFileSync as r,readdirSync as i,statSync as a,truncateSync as o,writeFileSync as s}from"node:fs";import{homedir as c}from"node:os";import{basename as l,dirname as u,join as d,relative as f,resolve as p}from"node:path";import{cwd as m,env as h,platform as g,stderr as _}from"node:process";import{styleText as v}from"node:util";import{access as y,mkdir as b,readFile as x,writeFile as S}from"node:fs/promises";import{pathToFileURL as ee}from"node:url";import{createHash as C}from"node:crypto";function te(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=D(i).trim();if(!a)continue;let o=/^\[\[([^\]]+)\]\]$/.exec(a);if(o){let e=t,r=ie(o[1]);for(let t=0;t<r.length-1;t++){let n=e[r[t]];Array.isArray(n)?e=n[n.length-1]:((!n||typeof n!=`object`)&&(e[r[t]]={}),e=e[r[t]])}let i=r[r.length-1];Array.isArray(e[i])||(e[i]=[]);let a={};e[i].push(a),n=a;continue}let s=/^\[([^[\]]+)\]$/.exec(a);if(s){n=t;for(let e of ie(s[1]))(!(e in n)||typeof n[e]!=`object`||Array.isArray(n[e]))&&(n[e]={}),n=n[e];continue}let c=se(a);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=ie(l),f=n;for(let e=0;e<d.length-1;e++)(!(d[e]in f)||typeof f[d[e]]!=`object`||Array.isArray(f[d[e]]))&&(f[d[e]]={}),f=f[d[e]];let p=d[d.length-1];if(u.startsWith(`[`)&&ae(u,`]`)<0){let t=[];w(u.slice(1),t);for(let n=e+1;n<r.length;n++){let i=D(r[n]).trim();if(!i)continue;let a=ae(i,`]`);if(a>=0){w(i.slice(0,a),t),e=n;break}w(i,t)}f[p]=t}else f[p]=T(u)}return t}function w(e,t){let n=e.trim();if(n)for(let e of re(n)){let n=e.trim();n&&t.push(T(n))}}function T(e){if(e.startsWith(`[`)){let t=[],n=oe(e,`]`);return w(e.slice(1,n<0?e.length:n),t),t}return e.startsWith(`{`)?ne(e):e.startsWith(`"""`)?ce(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?ce(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):E(e)}function E(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function ne(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of re(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=T(e.slice(n+1).trim())}return t}function re(e){let t=[],n=0,r=null,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r){if(o===`\\`&&r===`"`){a++;continue}o===r&&(r=null)}else o===`"`||o===`'`?r=o:o===`[`||o===`{`?n++:o===`]`||o===`}`?n--:o===`,`&&n===0&&(t.push(e.slice(i,a)),i=a+1)}return i<e.length&&t.push(e.slice(i)),t}function ie(e){let t=[],n=``,r=null;for(let i of e)if(r){if(i===r){r=null;continue}n+=i}else i===`"`||i===`'`?r=i:i===`.`?(t.push(n.trim()),n=``):n+=i;return n.trim()&&t.push(n.trim()),t}function D(e){let t=ae(e,`#`);return t<0?e:e.slice(0,t)}function ae(e,t){let n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n){if(i===`\\`&&n===`"`){r++;continue}i===n&&(n=null)}else if(i===`"`||i===`'`)n=i;else if(i===t)return r}return-1}function oe(e,t){let n=-1,r=null;for(let i=0;i<e.length;i++){let a=e[i];if(r){if(a===`\\`&&r===`"`){i++;continue}a===r&&(r=null)}else a===`"`||a===`'`?r=a:a===t&&(n=i)}return n}function se(e){let t=null;for(let n=0;n<e.length;n++){let r=e[n];if(t){if(r===`\\`&&t===`"`){n++;continue}r===t&&(t=null)}else if(r===`"`||r===`'`)t=r;else if(r===`=`)return n}return-1}function ce(e){return e.replace(/\\(["\\bfnrt]|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/g,(e,t)=>{switch(t[0]){case`"`:return`"`;case`\\`:return`\\`;case`b`:return`\b`;case`f`:return`\f`;case`n`:return`
2
- `;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const le=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,ue=new Map;function O(e){if(typeof e!=`string`)return null;let t=ue.get(e);if(t!==void 0)return t;let n=le.exec(e.trim());if(!n)return ue.set(e,null),null;let r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=n[4]?n[4].split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e):[],s={major:r,minor:i,patch:a,prerelease:o,version:`${r}.${i}.${a}${o.length?`-${o.join(`.`)}`:``}`};return ue.set(e,s),s}function de(e,t){let n=typeof e==`number`,r=typeof t==`number`;return n&&r?e-t:n?-1:r?1:e<t?-1:+(e>t)}function k(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function A(e,t){let n=k(e,t);if(n!==0)return n;if(!e.prerelease.length&&!t.prerelease.length)return 0;if(e.prerelease.length&&!t.prerelease.length)return-1;if(!e.prerelease.length&&t.prerelease.length)return 1;let r=Math.max(e.prerelease.length,t.prerelease.length);for(let n=0;n<r;n++){if(e.prerelease[n]===void 0)return-1;if(t.prerelease[n]===void 0)return 1;let r=de(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function fe(e){return O(e)?.version??null}function j(e){return O(e)}const M=new Map,pe=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function me(e){if(typeof e!=`string`)return null;let t=M.get(e);if(t!==void 0)return t;let n=pe.exec(e);if(!n)return M.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return M.set(e,r),r}function N(e,t){let n=O(e),r=O(t);return!n||!r?null:he(n,r)}function he(e,t){if(e.version===t.version)return null;let n=A(e,t),r=n>0?e:t,i=n>0?t:e,a=r.prerelease.length>0;if(i.prerelease.length>0&&!a){if(!i.patch&&!i.minor)return`major`;if(k(i,r)===0)return i.minor&&!i.patch?`minor`:`patch`}let o=a?`pre`:``;return e.major===t.major?e.minor===t.minor?e.patch===t.patch?`prerelease`:`${o}patch`:`${o}minor`:`${o}major`}function P(e,t){let n=O(e),r=O(t);return n&&r?A(n,r):null}function F(e,t){return(P(e,t)??-1)>0}function ge(e,t){return(P(e,t)??-1)>=0}function I(e,t){return(P(e,t)??1)<0}function _e(e){let t=/^(>=|<=|>|<|=)?\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)$/.exec(e.trim());if(!t)return null;let n=t[2],r=O(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function ve(e,t){let n=A(e,t.semver);switch(t.op){case`>=`:return n>=0;case`<=`:return n<=0;case`>`:return n>0;case`<`:return n<0;case`=`:return n===0;default:return n===0}}function L(e,t,n){return`${e}.${t}.${n}-0`}function R(e){return e.replace(/~\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t);if(n===void 0)return`>=${a}.0.0 <${L(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${L(a,o+1,0)}`})}function ye(e){return e.replace(/\^\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t),o=i||``;if(n===void 0)return`>=${a}.0.0 <${L(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${L(a,s+1,0)}`:`>=${a}.${s}.0 <${L(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${L(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${L(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${L(a+1,0,0)}`})}function be(e){return e.replace(/v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)\s+-\s+v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a,o,s,c)=>{let l=Number(t),u=n===void 0?0:Number(n),d=r===void 0?0:Number(r),f=i||``,p=Number(a),m;return m=s===void 0?o===void 0?`<${L(p+1,0,0)}`:`<${L(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function xe(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n)=>{let r=Number(t),i=Number(n);return`>=${r}.${i}.0 <${L(r,i+1,0)}`}),e=e.replace(/v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t)=>{let n=Number(t);return`>=${n}.0.0 <${L(n+1,0,0)}`}),e=e.replace(/(^|[\s|])(\d+)\.(\d+)(?=\s|$)/g,(t,n,r,i,a)=>{let o=e.substring(0,a).trimEnd();if(/[<>=]$/.test(o))return t;let s=Number(r),c=Number(i);return`${n}>=${s}.${c}.0 <${L(s,c+1,0)}`}),e=e.replace(/(^|[\s|])(\d+)(?=\s|$)/g,(t,n,r,i)=>{let a=e.substring(0,i).trimEnd();if(/[<>=]$/.test(a))return t;let o=Number(r);return`${n}>=${o}.0.0 <${L(o+1,0,0)}`}),e)}const z=new Map;function Se(e){let t=z.get(e);if(t!==void 0)return t;let n=e.split(`||`).map(e=>e.trim()),r=[];for(let t of n){if(!t){r.push([]);continue}t=be(t),t=ye(t),t=R(t),t=xe(t),t=t.replace(/(>=|<=|>|<|=)\s+/g,`$1`),t=t.replace(/(^|[\s])v?(\d+\.\d+\.\d+(?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)\b/g,(e,t,n)=>`${t}=${n}`);let n=t.split(/\s+/).filter(Boolean),i=[];for(let t of n){let n=_e(t);if(!n)return z.set(e,null),null;i.push(n)}if(i.length===0)return z.set(e,null),null;r.push(i)}let i=r.length?r:null;return z.set(e,i),i}function Ce(e,t){for(let n of t)if(!ve(e,n))return!1;if(e.prerelease.length>0){for(let n of t)if(n.semver.prerelease.length>0&&n.semver.major===e.major&&n.semver.minor===e.minor&&n.semver.patch===e.patch)return!0;return!1}return!0}function B(e,t){let n=O(e);if(!n)return!1;let r=Se(t);if(!r)return!1;for(let e of r)if(e.length===0||Ce(n,e))return!0;return!1}function we(e){return typeof e==`string`&&Se(e)?e:null}const Te=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ee={"1 day ago":`yesterday`,"1 week ago":`last week`,"1 month ago":`last month`,"1 year ago":`last year`,"in 1 day":`tomorrow`,"in 1 week":`next week`,"in 1 month":`next month`,"in 1 year":`next year`},De={sec:`second`,min:`minute`};function Oe(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function ke(e,{now:t,noAffix:n=!1,times:r=Te,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ee,longUnits:l=!1}={}){let u=Oe(e),d=t===void 0?Date.now():Oe(t);if(u!==u)return o||String(e);let f=d-u,p=f<0;if(p&&(f=-f),f<i)return a;let m=0,h=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(f>=t[1])){m=f/t[0]|0,h=(l&&De[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Ae(e){let t=[];for(let n of e){let e=/^([^<>=~!]+)(?:==|>=?|<=?|~=)([0-9.a-z]+)$/.exec(n.replaceAll(/\s+/g,``));if(!e)continue;let r=e[1].replace(/\[.*?\]$/,``);r&&t.push({name:r,version:e[2]})}return t}const je=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Me=[`node`,`deno`,`bun`],Ne=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],Pe=[`deps`,`indirect`,`replace`,`tool`],Fe=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function V(e,t){if(!(t instanceof Set))return!1;for(let n of t)if(n.test(e))return!0;return!1}function Ie(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Le(){let e=new Date,t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`),r=String(e.getHours()).padStart(2,`0`),i=String(e.getMinutes()).padStart(2,`0`),a=String(e.getSeconds()).padStart(2,`0`),o=String(e.getMilliseconds()).padStart(3,`0`);return`${e.getFullYear()}-${t}-${n} ${r}:${i}:${a}.${o}`}const Re={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function ze(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Re[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}async function H(e,t,{concurrency:n=1/0}={}){let r=Array.from(e);if(!Number.isFinite(n))return Promise.all(r.map(t));let i=Array(r.length),a=0;return await Promise.all(Array.from({length:Math.min(n,r.length)},async()=>{for(;a<r.length;){let e=a++;i[e]=await t(r[e])}})),i}const U=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`);async function Be(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=u(n);if(r===n)return null;n=r}}function Ve(e){let t=new Map;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const He=d(g===`win32`?h.LOCALAPPDATA||d(c(),`AppData`,`Local`):h.XDG_CACHE_HOME||d(c(),`.cache`),`updates`);let Ue=null;const We=new Map;function Ge(e){let t=We.get(e);return t===void 0&&(t=C(`sha256`).update(e).digest(`hex`).substring(0,16),We.set(e,t)),t}async function Ke(e){try{let t=await x(d(He,`${Ge(e)}.cache`),`utf8`),n=t.indexOf(`
3
- `);if(n===-1)return null;let r=t.substring(0,n),i=t.substring(n+1);return r&&i?{etag:r,body:i}:null}catch{return null}}async function qe(e,t,n){try{await(Ue??=b(He,{recursive:!0})),await S(d(He,`${Ge(e)}.cache`),`${t}\n${n}`)}catch{}}var Je=`17.17.3`;function W(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const Ye=Je,G=e=>e[0]===`v`?e.substring(1):e,Xe=e=>e.endsWith(`/`)?e.slice(0,-1):e;function Ze(e,t){return{headers:{"user-agent":`updates/${Ye}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function Qe(e,t){try{return await fetch(e,t)}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}async function $e(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}async function et(e,t,n={}){let r=t.noCache?null:await Ke(e),i=n.headers,a=r?{...i,"if-none-match":r.etag}:i,o=await t.doFetch(e,{...n,headers:a,signal:AbortSignal.timeout(t.fetchTimeout)});if(!o)return{res:void 0};if(o.status===304&&r)return{body:r.body,res:o};if(!o.ok)return{res:o};let s=await $e(o),c=o.headers?.get?.(`etag`);return c&&!t.noCache&&await qe(e,c,s),{body:s,res:o}}async function tt(e,t,n={}){if(!t.noCache){let t=await Ke(e);if(t)return{body:t.body}}let r=await t.doFetch(e,{...n,signal:AbortSignal.timeout(t.fetchTimeout)});if(!r)return{res:void 0};if(!r.ok)return{res:r};let i=await $e(r);return t.noCache||await qe(e,`immutable`,i),{body:i,res:r}}function nt(e){return(j(e)?.prerelease.length??0)>0}function rt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const it=new WeakMap;function at(e){let t=it.get(e);if(t)return t;let n=new Set(e);return n.add(`prerelease`),e.has(`patch`)&&n.add(`prepatch`),e.has(`minor`)&&n.add(`preminor`),e.has(`major`)&&n.add(`premajor`),it.set(e,n),n}function ot(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=K(e),s=K(t);if(!o||!s)return!0;let c=rt(e)||nt(e),l=nt(t);return c&&!l?F(s,o)||n:!l&&I(s,o)?r===!0||a(i,r):!0}function K(e){return me(e)?.version??``}function st(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=K(n);if(!d)return d;let f=rt(n)||i,p=f?at(r):r,m=e?.time,h=!!m,g=o||!h,_=!!(c&&l),v=0,y=!1,b=d,x=j(d);for(let e of t){let t=j(e);if(!t?.version||t.prerelease.length&&(!f||a))continue;let n=t.version;if(s&&!B(n,s))continue;let r;if(_&&(r=u?u(e):h?m[e]:void 0,!W(r,c,l)))continue;let i=he(x,t);if(!(!i||!p.has(i)))if(g){let e=k(t,x),r=y&&e===0&&t.prerelease.length>0&&x.prerelease.length===0;(e>=0&&!r||s&&!B(b,s))&&(b=n,x=t,y=!0)}else{let i=Date.parse(r??m[e]);i>=0&&i>v&&(b=n,x=t,v=i)}}return b||null}function ct(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l},{allowDowngrade:u,matchesAny:d,isGoPseudoVersion:f}){if(n===`*`||n.includes(`||`)||/\d\s/.test(n))return null;let p=[],m;if(t===`pypi`){let t=e.releases;p=[];for(let e of Object.keys(t))fe(e)&&p.push(e);m=e=>t?.[e]?.[0]?.upload_time_iso_8601}else if(t===`npm`||t===`cargo`){p=[];for(let t of Object.keys(e.versions))fe(t)&&p.push(t)}else if(t===`go`){let t=K(n);if(!t)return null;let r=a||rt(n),p=e=>nt(e)&&(!r||i),m={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},h=e.old||n,g=K(e.new);if(g&&!f(e.new)&&!p(e.new)){let n=N(t,g);if(n&&o.has(n)&&ot(h,e.new,m)&&W(e.Time,c,l)&&(!s||B(g,s)))return e.new}let _=K(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=N(t,_);if(n&&o.has(n)&&ot(h,e.sameMajorNew,m)&&W(e.sameMajorTime,c,l)&&(!s||B(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=K(e.olderEligible.version);if(n){let r=N(t,n);if(r&&o.has(r)&&ot(h,e.olderEligible.version,m)&&(!s||B(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=st(e,p,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:m});if(!h)return null;if(r)return h;{let r=``,f=``;t===`pypi`?(f=e.info.version,r=K(e.info.version)):r=e[`dist-tags`].latest;let p=K(n),m=rt(n),g=nt(h),_=nt(r),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||m&&g)return h;if(m&&!g)return ot(n,h,v)?h:null;let y=N(p,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&nt(r)?h:I(r,p)&&!_?ot(n,r,v)?r:null:!m&&_&&!a||s&&!B(r,s)||c&&l&&!W(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const lt=new Map;if(h.UPDATES_FORGE_TOKENS)for(let e of h.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&lt.set(e.substring(0,t),e.substring(t+1))}const ut=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function dt(){return Array.from(new Set(ut.map(e=>h[e]).filter(Boolean)))}let ft;function pt(){let e=dt();return e.length?Promise.resolve(e):ft??=(async()=>{try{let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]),{stdout:n}=await t(e)(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),r=n.trim();return r?[r]:[]}catch{return[]}})()}const mt=new Map;async function ht(e,t){if(!e)return[];let n=lt.get(e);if(n)return[n];let r=``;try{r=new URL(t).hostname}catch{}return e===`api.github.com`||e===`github.com`||e===r?pt():[]}async function gt(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await ht(r,t.forgeApiUrl),a=AbortSignal.timeout(t.fetchTimeout),o=e=>{let t=Ze(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t.signal=a,t};if(!i.length)return t.doFetch(e,o());let s=r?mt.get(r):void 0;if(s)return t.doFetch(e,o(s));for(let n of i){let i=await t.doFetch(e,o(n));if(i.status!==401&&i.status!==403)return r&&mt.set(r,n),i}return t.doFetch(e,o())}function _t(e,t){let n=G(t);if(!fe(n))return null;let r=``,i=``;for(let t of e){let e=G(t);fe(e)&&(!r||F(e,i))&&(r=t,i=e)}return r&&F(i,n)?r:null}function vt(e){let t=e.replace(`git@`,``).replace(/.+?\/\//,`https://`).replace(/\.git$/,``);return/^[a-z]+:[a-z0-9-]+\/[a-z0-9-]+$/.test(t)?t.replace(/^(.+?):/,(e,t)=>`https://${t}.com/`):/^[a-z0-9-]+\/[a-z0-9-]+$/.test(t)?`https://github.com/${t}`:t}const yt=/^[0-9a-f]{7,}$/i;function bt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function xt(e,t){let n=t.noCache?null:await Ke(e),r=await gt(e,t,n?{"if-none-match":n.etag}:void 0);if(r?.status===304&&n)try{let e=JSON.parse(n.body);return{tags:e.tags||[],link:e.link||``}}catch{return null}if(!r?.ok)return null;let i=bt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&await qe(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function St(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await xt(i(1),r);if(!e)return[];let t=e.tags,n=/<([^>]+)>;\s*rel="last"/.exec(e.link);if(!n)return t;let a=Math.min(Number(new URL(n[1]).searchParams.get(`page`)),10);if(a<2)return t;let o=await Promise.all(Array.from({length:a-1},(e,t)=>xt(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function Ct(e,t,n,r){throw e?.status&&e?.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}function wt(e,t,n=``){let r=t.startsWith(`v`),i=G(e),a=G(t).split(`.`).length,o=i.split(`.`),s;return s=a===1?o[0]:a===2?`${o[0]}.${o[1]||`0`}`:i,`${r?`v`:``}${s}${n}`}function Tt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Et({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`])if(t?.[n]){e=t[n];break}e??=`https://pypi.org/project/${i}/`}let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=vt(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${Tt(a)}/${e.directory}`)),a||t||``)}function Dt(e,t){return RegExp(`^${U(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Ot(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Dt(e,n):e instanceof RegExp?e:Dt(e,n)}function q(e){return new Set(e.map(e=>Ot(e,!1,!0)))}function kt(e){if(typeof e==`boolean`)return e;if(!Array.isArray(e)||!e.length)return!1;let t=new Set;for(let n of e)t.add(Ot(n,!1,!1));return t}async function At(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=d(e,n);try{await y(r)}catch{return null}try{return{configDir:e,filename:n,default:(await import(ee(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const jt=Ve(e=>Be(e,At));async function Mt(e){let t=await jt(e),n=t?.default??{},{loadRenovateConfig:r}=await import(`./renovate-RGZhd1au.js`);return{...await r(t?.configDir??e,n.inherit?.renovate),...n}}function Nt(e){if(/^\s*\{/.test(e))return JSON.parse(e);let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(r+1).trim();i.length>=2&&(i.startsWith(`"`)&&i.endsWith(`"`)||i.startsWith(`'`)&&i.endsWith(`'`))&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function Pt(e){try{return Nt(r(e,`utf-8`))}catch{return}}function Ft(e){let t=m();for(;;){let n=d(t,e);try{return a(n),n}catch{}let r=u(t);if(r===t)break;t=r}}function It(e){let t={},n=e.toLowerCase();for(let[r,i]of Object.entries(h))if(r.toLowerCase().startsWith(n)){let n=r.substring(e.length).split(`__`).filter(Boolean);if(n.length===0)continue;let a=t;for(let e=0;e<n.length;e++){let t=n[e];if(e===n.length-1)a[t]=i;else if(a[t]===void 0&&(a[t]={}),typeof a[t]==`object`)a=a[t];else break}}return t}function Lt(e,t={}){let n=g===`win32`,r=n?h.USERPROFILE:h.HOME,i=[{...t}],a=[];function o(e){if(!e||a.includes(e))return;let t=Pt(e);t&&(i.push(t),a.push(e))}n||(o(d(`/etc`,e,`config`)),o(d(`/etc`,`${e}rc`))),r&&(o(d(r,`.config`,e,`config`)),o(d(r,`.config`,e)),o(d(r,`.${e}`,`config`)),o(d(r,`.${e}rc`))),o(Ft(`.${e}rc`));let s=It(`${e}_`);return s.config&&o(s.config),Object.assign({},...i,s,a.length?{configs:a,config:a[a.length-1]}:void 0)}const Rt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,zt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Bt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Vt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Ht=`https://registry.npmjs.org`;let J=null;const Ut=new Map;function Wt(){return J??=Lt(`npm`,{registry:Ht})}function Gt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,t)=>h[t]||``)}function Kt(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Gt(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Gt(a),`base64`).toString(`utf8`);return{token:Buffer.from(`${i}:${e}`).toString(`base64`),type:`Basic`,username:i,password:e}}let o=n(`_auth`);if(o)return{token:Gt(o),type:`Basic`}}function qt(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Kt(`//${n.host}${r.replace(/\/$/,``)}`,t);if(e)return e;let i=r.endsWith(`/`)?r:`${r}/`;n.pathname=new URL(`..`,new URL(i,`http://x`)).pathname}let i=t._auth;if(i)return{token:Gt(i),type:`Basic`}}function Jt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Yt(e,t){J||=Wt();let n=e.startsWith(`@`)?e.split(`/`)[0]:``,r=`${n}:${t}`,i=Ut.get(r);if(i)return i;let a=()=>({auth:qt(t,J),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=Xe(Jt(n,J));if(e!==t)try{let t=qt(e,J);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return Ut.set(r,o),o}function Xt(e,t,n){J||=Wt();let r=Xe((typeof n.registry==`string`?n.registry:!1)||t.registry||J.registry||Ht);return{...Yt(e,r),originalRegistry:r}}function Zt(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Qt=new Map,$t=new Map,en=new Map;async function tn(e,t,n,r,i){let{auth:a,registry:o}=Xt(e,n,r),s=Zt(o,t===`resolutions`?l(e):e),c=Qt.get(s);if(!c){let t=Ze(a?.type,a?.token),n={...t.headers,accept:`application/vnd.npm.install-v1+json`};t.headers=n,c=(async()=>{let r=i.noCache?null:await Ke(s);r&&(n[`if-none-match`]=r.etag);let a=await i.doFetch(s,{signal:AbortSignal.timeout(i.fetchTimeout),...t});if(a?.status===304&&r)return JSON.parse(r.body);if(a?.ok){let e=await a.text(),t=a.headers.get(`etag`);return t&&!i.noCache&&await qe(s,t,e),JSON.parse(e)}Ct(a,s,e,o)})().catch(e=>{throw Qt.delete(s),e}),Qt.set(s,c)}return[await c,t,o,e]}async function nn(e,t,n,r,i){let{auth:a,registry:o}=Xt(e,n,r),s=Zt(o,e,t),c=$t.get(s);if(c)return c;let l=(async()=>{try{let n=Ze(a?.type,a?.token),r=await tt(s,i,n);if(!(`body`in r))return{};let c=JSON.parse(r.body),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}if(!l){let r=Zt(o,e),a=en.get(r);a||(a=i.doFetch(r,{...n,signal:AbortSignal.timeout(i.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>(en.delete(r),null)),en.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return $t.set(s,l),l}function rn(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function an(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function on(e,t){if(e.startsWith(`npm:@jsr/`)){let t=/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:@`)){let t=/^jsr:@([^/]+)\/([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:`)){let n=e.substring(4);if(t?.startsWith(`@`)){let e=/^@([^/]+)\/(.+)$/.exec(t);if(e)return{scope:e[1],name:e[2],version:n}}}return{scope:null,name:null,version:``}}async function sn(e,t,n){let r=/^@([^/]+)\/(.+)$/.exec(e);if(!r)throw Error(`Invalid JSR package name: ${e}`);let[,i,a]=r,o=`${n.jsrApiUrl}/@${i}/${a}/meta.json`,s=await et(o,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in s){let r=JSON.parse(s.body),i={},a={};for(let[e,t]of Object.entries(r.versions))i[e]={version:e,time:t.createdAt},a[e]=t.createdAt;return[{name:e,"dist-tags":{latest:r.latest},versions:i,time:a},t,n.jsrApiUrl,e]}Ct(s.res,o,e,`JSR`)}function cn(e,t){let n=new Map;for(let[e,{old:r,oldOrig:i,new:a}]of Object.entries(t)){let[t,o]=e.split(`\0`),s=i||r;t===`packageManager`?n.set(`${t}\0${o}@${s}`,`"${t}": "${o}@${a}"`):n.set(`${o}\0${s}`,`"${o}": "${a}"`)}return n.size?e.replace(/"((?:[^"\\]|\\.)*)": *"((?:[^"\\]|\\.)*)"/g,(e,t,r)=>n.get(`${t}\0${r}`)??e):e}function ln(e,t,n){let r=e.replace(Vt,t);if(!n||n===e)return r;let i=/^([\^~]|>=\s*)([\d.]+)$/.exec(n);if(!i)return r;let[,a,o]=i,s=t.split(/[-+]/)[0];if(s!==t)return r;let c=o.split(`.`).length,l=s.split(`.`);return l.length===c?r:`${a}${l.slice(0,c).join(`.`)}`}function Y(e){if(/[xX*]/.test(e))return e;let t=e.match(Bt);return t?.length===1?e.replace(Bt,K(t[0])):e}async function un(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await Ke(r),t=await gt(r,n,e?{"if-none-match":e.etag}:void 0);if(t?.status===304&&e){let{sha:t,commit:n}=JSON.parse(e.body)[0];return{hash:t,commit:n}}if(!t?.ok)return{hash:``,commit:{}};let i=await t.text(),a=t.headers.get(`etag`);a&&!n.noCache&&await qe(r,a,i);let{sha:o,commit:s}=JSON.parse(i)[0];return{hash:o,commit:s}}catch{return{hash:``,commit:{}}}}async function dn(e,t,n){return(await St(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function fn(e,t,n){let r=t.old.replace(Rt,``),[,i,a,o]=zt.exec(r)||[];if(!i||!a||!o)return null;if(yt.test(o)){let{hash:r,commit:s}=await un(i,a,n);if(!r)return null;let c=s?.committer?.date??s?.author?.date,l=r.substring(0,o.length);if(o!==l)return{key:e,newRange:t.old.replace(o,l),user:i,repo:a,oldRef:o,newRef:l,newDate:c}}else{let r=_t(await dn(i,a,n),o);if(r)return{key:e,newRange:t.old.replace(o,r),user:i,repo:a,oldRef:o,newRef:r}}return null}async function pn(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await et(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in i)return[JSON.parse(i.body),t,null,e];Ct(i.res,r,e,n.pypiApiUrl)}function mn(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let a=e.split(`\0`)[1],o=i||r;n=n.replace(RegExp(`("${U(a)}(?:\\[[^\\]]+\\])? *[<>=~]+ *)${U(o)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}let hn;async function gn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function _n(){return hn??=gn()}function vn(){let e=h.GOPROXY||`https://proxy.golang.org,direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return Xe(e)}return`https://proxy.golang.org`}function yn(){return(h.GONOPROXY||h.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function bn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function xn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Sn=/\/v(\d+)$/;function Cn(e){let t=Sn.exec(e);return t?Number.parseInt(t[1]):1}function wn(e,t){let n=e.replace(Sn,``);return t<=1?n:`${n}/v${t}`}function Tn(e,t){let n=t?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e);if(!n)return null;let[,r,i,a]=n;return i.startsWith(`./`)||i.startsWith(`/`)||i.startsWith(`../`)?null:{origModule:r,targetModule:i,targetVersion:a}}function En(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||Dn(n)}function Dn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function On(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function kn(e,t,n){if(!t)return null;let r=t,i=e+101,a=e+2,o=7;for(;a<=i;){let e=Math.min(a+o-1,i),t=await Promise.all(Array.from({length:e-a+1},(e,t)=>n(a+t))),s=t.indexOf(null),c=s===-1?t:t.slice(0,s);if(c.length&&(r=c.at(-1)),s!==-1)break;a=e+1,o*=2}return r}function An(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:G(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:G(i),sameMajorTime:a},t,null,e]}function jn(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=Tn(i,l);e&&(r[e.targetModule]=e.targetVersion,a.add(e.origModule));continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=a?n[a]?n:t[a]?t:null:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function Mn(e,t,n,r,i){let a=Cn(e),o=async(e,t)=>{try{let{stdout:n}=await(await _n())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:t,cwd:r,env:h}),i=JSON.parse(n);return{Version:i.Version,Time:i.Time||``,path:e}}catch{return null}},s=En(e,t,n),[c,l]=await Promise.all([o(e,i.fetchTimeout),s?null:o(wn(e,a+1),i.goProbeTimeout)]);return c?An(e,t,n,await kn(a,l,t=>o(wn(e,t),i.goProbeTimeout)),c.Version,c.Time):On(e,n,t)}async function Nn(e,t,n,r,i,a){if(bn(e,a))return Mn(e,t,n,r,i);let o=xn(e),s=Cn(e),c=async t=>{let n=wn(e,t);return i.doFetch(`${i.goProxyUrl}/${xn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=En(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return On(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return On(e,n,t)}return An(e,t,n,await kn(s,d,c),f,p)}function Pn(e,t){let n=U(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function Fn(e,t){let n=e,r={};for(let[e,{old:i,oldOrig:a}]of Object.entries(t)){let[o,s]=e.split(`\0`),c=a||i,l=t[e].new;if(o===`replace`){n=n.replace(RegExp(`(=>\\s+${U(s)}\\s+)v${U(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${U(s)}) +v${U(c)}`,`g`),`$1 v${l}`);continue}let u=Cn(s),d=Number.parseInt(l.split(`.`)[0]);if(!l.includes(`+incompatible`)&&u!==d&&d>1){let e=wn(s,d);n=n.replace(RegExp(`${U(s)} +v${U(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${U(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${U(s)}) +v${U(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=Pn(n,s))}return[n,r]}function In(e,n,i){let a=Object.entries(n);if(!a.length)return;let o=new Map(a),s=a.map(([e])=>e).sort((e,t)=>t.length-e.length),c=RegExp(`"(${s.map(U).join(`|`)})(/|")`,`g`),l=t(`**/*.go`,{cwd:e});for(let t of l){let n=d(e,t),a=r(n,`utf8`),s=a.replace(c,(e,t,n)=>`"${o.get(t)}${n}`);s!==a&&i(n,s)}}function Ln(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(/^use\s*\(/.test(r)){i=!0;continue}if(/^replace\s*\(/.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=/^(\S+)/.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=/^use\s+(\S+)/.exec(r);if(o){t.push(o[1]);continue}if(a||/^replace\s+/.test(r)){let e=Tn(r,a);e&&(n[e.targetModule]=e.targetVersion);continue}}return{use:t,replace:n}}function Rn(e){let t=`https://${zn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${Tt(t)}/${a.join(`/`)}`,n.toString()}else return t}function zn(e){return Sn.test(e)?u(e):e}function Bn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Vn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Hn(e){if(e.startsWith(`docker://`)||e.startsWith(`./`))return null;let t=/^https?:\/\/([^/]+)\/(.+)$/.exec(e),n=t?.[1]??null,r=t?.[2]??e,i=r.indexOf(`@`);if(i===-1)return null;let a=r.substring(0,i),o=r.substring(i+1);if(!o)return null;let s=a.split(`/`);if(s.length<2)return null;let c=n?`${n}/${a}`:a;return{host:n,owner:s[0],repo:s[1],ref:o,name:c,isHash:yt.test(o)}}function Un(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Wn(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await Ke(a);if(e)return e.body}try{let e=await gt(a,i);if(!e?.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&await qe(a,`immutable`,n),n}catch{return``}}function Gn(e,t){return wt(j(G(e))?.version??G(e),t)}function Kn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${U(e)}@${U(r)}(?![\\w.-])`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}const X=[`.github`,`.gitea`,`.forgejo`],qn=RegExp(`(?:${X.map(U).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function Jn(e){return qn.test(e.replace(/\\/g,`/`))}function Yn(e){let t=new Set;try{for(let n of i(d(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(p(d(e,`workflows`,n)))}catch{}try{for(let n of i(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(p(d(n.parentPath,n.name)))}catch{}return Array.from(t)}const Xn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Zn=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Qn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,$n=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,er=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function tr(e){let t=e.split(`/`);return t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`),repo:t[t.length-1]}}function nr(e){if(e=e.replace(/^docker:\/\//,``),e.includes(`@`))return null;let t=e.lastIndexOf(`:`),n,r;if(t===-1||e.lastIndexOf(`/`)>t||(n=e.substring(0,t),r=e.substring(t+1),!r||!Xn.test(r)))return null;let{registry:i,namespace:a,repo:o}=tr(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function rr(e){let t=Xn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function ir(e,t){let n=rr(t);return n?wt(e,n.version,n.suffix):t}function ar(e,t){let n=[];for(let r of e.matchAll(t)){let e=nr(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function or(e,t,n){let r={},i=`${n.dockerApiUrl}/v2/repositories/${e}/${t}/tags`,a=e=>`${i}?page_size=100&ordering=last_updated&page=${e}`,o={headers:{"accept-encoding":`gzip, deflate, br`}},s=async e=>{try{let t=await et(a(e),n,o);return`body`in t?JSON.parse(t.body):null}catch{return null}},c=await s(1);if(!c)return r;for(let e of c.results||[])r[e.name]=e.tag_last_pushed||e.last_updated||``;let l=Math.min(Math.ceil((c.count||0)/100),10);if(l<2)return r;let u=await Promise.all(Array.from({length:l-1},(e,t)=>s(t+2)));for(let e of u)if(e)for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function sr(e,t,n){let{registry:r,namespace:i,repo:a}=tr(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await or(i,a,n),name:e},t,null,e]}function cr(e,t,n,r,i,a){let o=rr(t);if(!o)return null;let s=me(G(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=rr(t);if(!e||e.suffix!==o.suffix)continue;let d=me(G(e.version))?.version;if(!d||a&&!B(d,a)||!W(s,r,i))continue;let f=N(c,d);!f||!n.has(f)||ge(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=ir(c,t);return d===t?null:{newTag:d,date:u}}function lr(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let t=e.split(`\0`)[1],a=i.oldOrig||i.old;for(let e of n)r=r.replace(e(U(t),U(a)),`$1${t}:${i.new}`)}return r}function ur(e,t){return lr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}(?![\\w.-])`,`g`)])}function dr(e,t){return lr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`)])}function fr(e,t){return lr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}(?![\\w.-])`,`g`)])}const pr=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function mr(e){return/^docker-.+\.ya?ml$/.test(e)}function hr(e){return/^Dockerfile(\..+)?$/.test(e)}function gr(e){return hr(e)||mr(e)}function _r(e){return hr(e)?Zn:Qn}function vr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const yr=new Map;async function br(e,t,n){let r=`${Xe(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=n.noCache?void 0:yr.get(r);return i||(i=et(r,n,Ze()).then(t=>{`body`in t||Ct(t.res,r,e,n.cratesIoUrl);let i;try{i=JSON.parse(t.body)}catch{throw Error(`Invalid JSON from ${r}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}).catch(e=>{throw yr.delete(r),e}),yr.set(r,i)),[await i,t,null,e]}function xr(e){let t=new Map;for(let n of e.split(`[[package]]`)){let e=/\bname\s*=\s*"([^"]+)"/.exec(n),r=/\bversion\s*=\s*"([^"]+)"/.exec(n);if(!e||!r)continue;let i=e[1],a=r[1];if(!fe(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const Sr=/^\d/;function Cr(e,t){return Sr.test(e)?ln(Y(`^${e}`),t,`^${e}`).replace(/^\^/,``):ln(Y(e),t,e)}function wr(e,t,n){let r=e.get(t);if(!r)return;let i=Sr.test(n)?`^${n}`:n,a;for(let e of r)B(e,i)&&(!a||F(e,a))&&(a=e);return a}const Tr=Fe.map(U).join(`|`);function Er(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[,t]=e.split(`\0`),i=r.oldOrig||r.old,a=r.new,o=U(t),s=U(i);n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*["'])${s}(["'].*)$`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*\\{[^}\\n]*?\\bversion\\s*=\\s*["'])${s}(["'])`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${Tr})\\.${o}\\][^\\[]*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function Dr(e){return e.split(`|`)[0]}function Or(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Dr(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const kr=/[*?{[]/;async function Ar(e,n,r,i=32){let a=new Set,o=[];for(let i of e){let e=kr.test(i)?t(i,{cwd:n}).map(e=>p(d(n,e))):[p(d(n,i))];for(let t of e){let e=d(t,r);if(a.has(e))continue;a.add(e);let i=f(n,t);o.push({absPath:e,memberPath:`./${i.replace(/\\/g,`/`)}`})}}return(await H(o,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:i})).filter(e=>e!==null)}function jr(e){let t=[],n=e.split(/\r?\n/),r=!1;for(let e of n){if(/^packages\s*:/.test(e)){r=!0;continue}if(r){if(/^\S/.test(e))break;let n=/^\s+-\s+['"]?([^'"#\s]+)['"]?/.exec(e);n&&t.push(n[1])}}return t}const Mr={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Nr=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),Pr=(e,t)=>typeof e==`string`?Xe(e):typeof t==`function`?t():t;function Fr(t,n){let r=new Map,i=new Set(t),a=n;for(;i.size;){for(let t of i){let n=d(a,t);try{e(n),r.set(t,n),i.delete(t)}catch{}}let t=u(a);if(t===a)break;a=t}return r}async function Ir(e,t){let n=await H(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function Z(e,t){t&&(e.date=t,e.age=ke(t,{noAffix:!0}))}function Lr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function Rr(e){console.error(`${Le()} ${e}`)}function Q(e,t,n,r,i){if(i===`engines`&&Me.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?zn(e):e;for(let t of r)if(t.test(e)||t.test(a))return!1;for(let t of n)if(t.test(e)||t.test(a))return!0;return!n.size}function zr(e){let t=new Set;if(e)for(let r of e){let e;try{e=n(r)}catch(e){throw Error(`Unable to open ${r}: ${e.message}`)}if(e?.isFile())t.add(p(r));else if(e?.isDirectory()){for(let e of Object.keys(Mr)){let i=d(r,e),a=null;try{a=n(i)}catch{}a?.isFile()&&t.add(p(i))}try{for(let e of i(r,{withFileTypes:!0}))e.isFile()&&gr(e.name)&&t.add(p(d(r,e.name)))}catch{}let e=p(r).replace(/\\/g,`/`),a=X.some(t=>e.endsWith(`${t}/workflows`)),o=!a&&X.some(t=>e.endsWith(t)),s;s=a?[u(e)]:o?[e]:X.map(t=>d(e,t));for(let e of s)for(let n of Yn(e))t.add(n)}else throw Error(`${r} is neither a file nor directory`)}else{let e=new Set(X),n=[...Object.keys(Mr),...pr,...X];for(let[r,i]of Fr(n,m()))if(e.has(r))for(let e of Yn(i))t.add(e);else t.add(p(i));try{for(let e of i(m(),{withFileTypes:!0}))e.isFile()&&gr(e.name)&&!pr.includes(e.name)&&t.add(p(d(m(),e.name)))}catch{}}for(let e of t)l(e)===`go.work`&&t.delete(d(u(e),`go.mod`));for(let e of t)l(e)===`pnpm-workspace.yaml`&&t.delete(d(u(e),`package.json`));return t}function $(e,t){g===`win32`&&o(e,0),s(e,t,g===`win32`?{flag:`r+`}:void 0)}function Br(e){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!rn(i.oldOrig)&&(i.old=n===`go`?Bn(i.oldOrig):i.oldOrig),n===`go`&&(i.new=Bn(i.new)),n===`actions`&&(i.old=G(i.old),i.new=G(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[e,a]=r.split(`\0`),o=t.results[n]??={};(o[e]??={})[a]=i}return t}let Vr=!1;async function Hr(e={}){if(!Vr){let{enableDnsCache:e}=await import(`./dns-CMo4lMFT.js`);e(),Vr=!0}let t={...e},n=t.sockets??25,r=t.timeout??0,i=Pr(e.forgeapi,`https://api.github.com`),a=Pr(e.pypiapi,`https://pypi.org`),o=Pr(e.jsrapi,`https://jsr.io`),s=Pr(e.goproxy,vn),c=Pr(e.cargoapi,`https://crates.io`),f=Pr(e.dockerapi,`https://hub.docker.com`),h=yn(),g=t.color===!0||t.noColor!==!0&&_.isTTY,y=e=>g?t=>v(e,String(t)):String,b=y(`magenta`),S=y(`green`),ee=y(`red`),C={fetchTimeout:r||5e3,goProbeTimeout:r?r/2:2500,forgeApiUrl:i,pypiApiUrl:a,jsrApiUrl:o,goProxyUrl:s,cratesIoUrl:c,dockerApiUrl:f,doFetch:async(e,n)=>{t.verbose&&Rr(`${b(n?.method||`GET`)} ${e}`);let r=await Qe(e,n);return t.verbose&&Rr(`${r.ok?S(r.status):ee(r.status)} ${e}`),r},noCache:!!t.noCache},w=kt(t.greatest),T=kt(t.prerelease),E=kt(t.release),ne=kt(t.patch),re=kt(t.minor),ie=kt(t.allowDowngrade),D=t.modes?.length?new Set(t.modes):Nr,ae=(t.overrides??[]).map(e=>({include:e.include?.length?q(e.include):void 0,exclude:e.exclude?.length?q(e.exclude):void 0,greatest:e.greatest,prerelease:e.prerelease,release:e.release,patch:e.patch,minor:e.minor,allowDowngrade:e.allowDowngrade,cooldownDays:e.cooldown===void 0?void 0:ze(String(e.cooldown))})),oe=(e,t)=>!(e.include&&!V(t,e.include)||e.exclude&&V(t,e.exclude)),se=ae.some(e=>!!e.cooldownDays);D.has(`actions`)&&pt();let ce=new Map;function le(e){let t=ce.get(e);if(!t){let n=typeof w==`boolean`?w:V(e,w),r=typeof T==`boolean`?T:V(e,T),i=typeof E==`boolean`?E:V(e,E),a=typeof ne==`boolean`?ne:V(e,ne),o=typeof re==`boolean`?re:V(e,re),s=typeof ie==`boolean`?ie:V(e,ie),c;for(let t of ae)oe(t,e)&&(t.greatest!==void 0&&(n=t.greatest),t.prerelease!==void 0&&(r=t.prerelease),t.release!==void 0&&(i=t.release),t.patch!==void 0&&(a=t.patch),t.minor!==void 0&&(o=t.minor),t.allowDowngrade!==void 0&&(s=t.allowDowngrade),t.cooldownDays!==void 0&&(c=t.cooldownDays));let l=new Set(a?[`patch`]:o?[`patch`,`minor`]:[`patch`,`minor`,`major`]);t={useGreatest:n,usePre:r,useRel:i,semvers:l,allowDowngrade:s,cooldownOverride:c},ce.set(e,t)}return t}let ue=q(t.include??[]),O=q(t.exclude??[]),de=t.pin??{},k={},A={},j={},M={},pe=Date.now(),me=e=>{let n=t.cooldown??e;return n?ze(String(n)):0},N=m(),he=e=>e.replace(`${N}/`,``).replace(`${N}\\`,``),P=0,F=(e,t,n,r,i,a)=>{k[e][`${t}${n}${r}`]={old:i,oldOrig:a}},ge=zr(t.files?.length?new Set(t.files):!1),I=await Ir(Array.from(ge).filter(e=>{if(Jn(e))return D.has(`actions`)||D.has(`docker`);let t=l(e);if(gr(t))return D.has(`docker`);let n=Mr[t];return!!n&&D.has(n)}),n),_e={},ve={},L=[],R=null,ye=[],be=!1,xe=[],z=!1,Se=[],Ce=[],B={};async function Te(e){let n=await Mt(e);return{modeConfig:n,modeInclude:n.include?.length?q([...t.include??[],...n.include]):ue,modeExclude:n.exclude?.length?q([...t.exclude??[],...n.exclude]):O,pin:{...n.pin,...de}}}function Ee(e,n){return t.types?.length?t.types:n?.types?.length?n.types:e===`npm`?je:e===`pypi`?Ne:e===`go`?t.indirect?Pe:Pe.filter(e=>e!==`indirect`):e===`cargo`?Fe:[]}function De(e,t,n,r){k.docker??={};for(let i of n)for(let{ref:n}of ar(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(k.docker[e])continue;let i=rr(n.tag);i&&(k.docker[e]={old:i.version,oldOrig:n.tag},Ce.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function Oe(e){let n=await Mt(e);return{include:n.include?.length?q([...t.include??[],...n.include]):ue,exclude:n.exclude?.length?q([...t.exclude??[],...n.exclude]):O,pin:n.pin??{},cooldownDays:me(n.cooldown)}}for(let e of ge){if(Jn(e)){let t=D.has(`actions`),n=D.has(`docker`);if(!t&&!n)continue;let r=I.get(e),a=he(e),o=await Oe(u(e));if(_e[a]={absPath:e,content:r},t){k.actions??={};let e=Array.from(r.matchAll(Vn),e=>Hn(e[1])).filter(e=>e!==null);for(let t of e){if(!Q(t.name,`actions`,o.include,o.exclude,`actions`))continue;let e=`${a}${t.name}`;k.actions[e]||(k.actions[e]={old:t.ref},Se.push({...t,key:e,apiUrl:Un(t.host,i),filePin:o.pin,fileCooldownDays:o.cooldownDays}))}}n&&(ve[a]={absPath:e,content:r,fileType:`workflow`},De(r,a,[Qn,$n,er],o));continue}let t=l(e);if(gr(t)){if(!D.has(`docker`))continue;let n=I.get(e),r=he(e),i=hr(t)?`dockerfile`:`compose`,a=await Oe(u(e));ve[r]={absPath:e,content:n,fileType:i},De(n,r,[_r(t)],a);continue}let r=Mr[t];if(!D.has(r))continue;if(t===`go.work`){k[r]??={};let t=u(p(e)),i=I.get(e);R={file:e,content:i};let a=Ln(i),[o,s]=await Promise.all([Te(t),H(a.use,async e=>{let n=p(d(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:n})]),{modeConfig:c,modeInclude:l,modeExclude:f,pin:m}=o,h=Ee(r,c);M[r]=e,B[r]={modeConfig:c,projectDir:t,pin:m};for(let e of s){if(!e)continue;let{usePath:t,modPath:n,content:i}=e,a=jn(i),o=u(n);L.push({absPath:n,content:i,projectDir:o,usePath:t});let s=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[n,i]of Object.entries(t))Q(n,r,l,f,e)&&F(r,e,s,n,Bn(i),G(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,r,l,f,`replace`)&&F(r,`replace`,``,e,Bn(t),G(t));P+=Object.keys(k[r]).length;continue}if(t===`go.mod`&&R||t===`package.json`&&z)continue;if(t===`Cargo.toml`){k[r]??={};let t=I.get(e),i=te(t),a=u(p(e));M[r]=e;let o=Fr([`Cargo.lock`],a).get(`Cargo.lock`),s=i.workspace?.members,c=Array.isArray(s)&&s.length,[l,d,f]=await Promise.all([Te(a),o?x(o,`utf8`):Promise.resolve(null),c?Ar(s,a,`Cargo.toml`,n):Promise.resolve([])]),{modeConfig:m,modeInclude:h,modeExclude:g,pin:_}=l,v=Ee(r,m);B[r]={modeConfig:m,projectDir:a,pin:_};let y=d?xr(d):new Map,b=(e,t)=>{for(let n of v){let i=Ie(e,n)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,r,h,g,n))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=String(a.version);we(i)&&F(r,n,t,e,wr(y,e,i)??Y(i),i)}else typeof a==`string`&&we(a)&&F(r,n,t,e,wr(y,e,a)??Y(a),a)}}};if(c){be=!0,b(i,``),ye.push({absPath:p(e),content:t,memberPath:`.`});for(let e of f){ye.push(e);try{b(te(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else j[r]=t,b(i,``);P+=Object.keys(k[r]).length;continue}if(t===`pnpm-workspace.yaml`){k[r]??={};let t=u(p(e)),i=I.get(e);z=!0;let a=jr(i),o=d(t,`package.json`),[s,c,l]=await Promise.all([Te(t),x(o,`utf8`).catch(()=>null),Ar(a,t,`package.json`,n)]),{modeConfig:f,modeInclude:m,modeExclude:h,pin:g}=s,_=Ee(r,f);M[r]=e,B[r]={modeConfig:f,projectDir:t,pin:g};let v=(e,t)=>{for(let n of _){let i=e[n]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,r,m,h,n)&&F(r,n,t,e,Y(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,r,m,h,n)&&(rn(a)?F(r,n,t,e,on(a,e).version,a):we(a)?F(r,n,t,e,Y(a),a):an(a)?F(r,n,t,e,`0.0.0`,a):A[`${n}${t}${e}`]={old:a})}};if(c!==null){let e;try{e=JSON.parse(c)}catch(e){throw Error(`Error parsing ${o}: ${e.message}`)}xe.push({absPath:p(o),content:c,memberPath:`.`}),v(e,``)}for(let e of l){let t;try{t=JSON.parse(e.content)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}xe.push(e),v(t,`|${e.memberPath}`)}P+=Object.keys(k[r]).length+Object.keys(A).length;continue}M[r]=e,k[r]??={};let a=u(p(e)),{modeConfig:o,modeInclude:s,modeExclude:c,pin:f}=await Te(a),m=Ee(r,o),h={};j[r]=I.get(e);try{if(r===`npm`)h=JSON.parse(j[r]);else if(r===`pypi`)h=te(j[r]);else if(r===`go`){let e=jn(j[r]);h.deps=e.deps,h.indirect=e.indirect,h.replace=e.replace,h.tool=e.tool}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of m){let t;if(t=r===`npm`||r===`go`?h[e]||{}:Ie(h,e)||{},Array.isArray(t)&&r===`pypi`)for(let{name:n,version:i}of Ae(t))Q(n,r,s,c,e)&&F(r,e,``,n,Y(i),i);else if(typeof t==`string`){let[n,i]=t.split(`@`);Q(n,r,s,c,e)&&F(r,e,``,n,Y(i),i)}else for(let[n,i]of Object.entries(t))Q(n,r,s,c,e)&&(r===`npm`&&rn(i)?F(r,e,``,n,on(i,n).version,i):r!==`go`&&we(i)?F(r,e,``,n,Y(i),i):r===`npm`&&an(i)?F(r,e,``,n,`0.0.0`,i):r===`npm`?A[`${e}${n}`]={old:i}:r===`go`&&F(r,e,``,n,Bn(i),G(i)))}P+=Object.keys(k[r]).length+Object.keys(A).length,B[r]={modeConfig:o,projectDir:a,pin:f}}if(k.actions&&(P+=Object.keys(k.actions).length),k.docker&&(P+=Object.keys(k.docker).length),P===0)return{results:{},message:`No dependencies found, nothing to do.`};let ke=[],Me={registry:t.registry};for(let e of Object.keys(B)){let t=!!k[e]&&Object.keys(k[e]).length>0,r=e===`npm`&&Object.keys(A).length>0;if(!t&&!r)continue;let{modeConfig:i,projectDir:a,pin:o}=B[e],s=me(i.cooldown);ke.push((async()=>{let t=new Map,r=e=>{if(!(!s&&!se))for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let[,r]=t.split(`\0`),i=le(r).cooldownOverride??s;i&&!W(n,i,pe)&&delete e[t]}};if(await H(Object.keys(k[e]),async n=>{let[r,c]=n.split(`\0`),l=Dr(r),u=k[e][n],d=null;if(e===`npm`){let{oldOrig:t}=u;if(t&&rn(t))d=await sn(c,l,C);else if(t&&an(t))try{d=await tn(c,l,i,Me,C)}catch{delete k[e][n];return}else d=await tn(c,l,i,Me,C)}else d=e===`go`?await Nn(c,l,u.oldOrig||u.old,a,C,h):e===`cargo`?await br(c,l,C):await pn(c,l,C);if(!d)return;let[f,,p]=d;if(f?.error)throw Error(f.error);let{useGreatest:m,usePre:g,useRel:_,semvers:v,allowDowngrade:y,cooldownOverride:b}=le(f.name),x=u.old,S=u.oldOrig,ee=o[c],te=b??s,w=ct(f,{usePre:g,useRel:_,useGreatest:m,semvers:v,range:x,mode:e,pinnedRange:ee,cooldownDays:te||void 0,now:te?pe:void 0},{allowDowngrade:y,matchesAny:V,isGoPseudoVersion:Dn}),T=``;if([`go`,`pypi`].includes(e)&&w)T=w;else if(e===`cargo`&&w&&S)T=Cr(S,w);else if(w)if(S&&an(S))T=String(Wt()[`save-exact`])===`true`?w:`^${w}`;else if(S&&rn(S)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(S);e?T=`${e[1]}${w}`:S.startsWith(`jsr:`)&&(T=`jsr:${w}`)}else T=ln(x,w,S);if(!w||w===x||S&&S===T){delete k[e][n];return}let E=``;e===`pypi`&&f.releases?.[w]?.[0]?.upload_time_iso_8601?E=f.releases[w][0].upload_time_iso_8601:e===`go`&&f.Time?E=f.Time:e===`cargo`&&f.time?.[w]&&(E=f.time[w]),u.new=T,S&&rn(S)&&(u.newPrint=w),e===`npm`?t.set(n,{name:c,promise:nn(f.name,w,i,Me,C)}):e===`pypi`?u.info=Et(f,p,f.info.name):e===`go`?u.info=Rn(f.newPath||c):e===`cargo`&&(u.info=`https://crates.io/crates/${c}`),E&&Z(u,E)},{concurrency:n}),await Promise.all(Array.from(t,async([t,{name:n,promise:r}])=>{let i=await r,a=k[e][t];a&&(a.info=Et({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(A).length){let t=(await H(Object.entries(A),([e,t])=>fn(e,t,C),{concurrency:n})).filter(e=>e!==null);for(let n of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=n;k[e][t]={old:A[t].old,new:r,oldPrint:yt.test(o)?o.substring(0,7):o,newPrint:yt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(k[e][t],c)}}r(k[e])})())}if(Se.length&&ke.push((async()=>{let e=new Map;for(let t of Se){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await H(e.values(),async({apiUrl:e,owner:t,repo:r,infos:i})=>{let a=await St(e,t,r,C),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=G(e.name);fe(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=new Map;async function d(n){if(u.has(n))return u.get(n);let i=await Wn(e,t,r,n,C);return u.set(n,i),i}async function f(e){let t=new Set;for(let n=0;n<20;n++){let n=st({},t.size?o.filter(e=>!t.has(e)):o,e);if(!n||n===e.range)return null;let r=s.get(n);if(!r){t.add(n);continue}let i=c.get(r)?.commitSha||``;if(!e.cooldownDays)return{version:n,tag:r,commitSha:i,date:``};let a=i?await d(i):``;if(W(a,e.cooldownDays,e.now))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await H(i,async({key:e,host:n,ref:i,name:a,isHash:o,filePin:s,fileCooldownDays:u})=>{let p=k.actions[e],m=`https://${n||`github.com`}/${t}/${r}`,h=de[a]??s[a];if(o){let{usePre:t,useRel:n,cooldownOverride:r}=le(a),o=r??u,s=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:h,cooldownDays:o||void 0,now:o?pe:void 0});if(!s){delete k.actions[e];return}let{tag:c,commitSha:d,date:g}=s;if(!d||d===i||d.startsWith(i)||i.startsWith(d)){delete k.actions[e];return}let _=l.get(i);if(!_){for(let[e,t]of l)if(e.startsWith(i)){_=t;break}}p.old=i,p.new=d.substring(0,i.length),p.oldPrint=_||i.substring(0,7),p.newPrint=c,p.info=m,g&&Z(p,g)}else{let t=K(G(i));if(!t){delete k.actions[e];return}let{usePre:n,useRel:r,semvers:o,cooldownOverride:s}=le(a),l=s??u,g=await f({range:t,semvers:o,usePre:n,useRel:r,useGreatest:!0,pinnedRange:h,cooldownDays:l||void 0,now:l?pe:void 0});if(!g){delete k.actions[e];return}let{tag:_,commitSha:v,date:y}=g,b=Gn(_,i);if(b===i){delete k.actions[e];return}if(p.new=c.has(b)?b:_,p.info=m,v&&y)Z(p,y);else if(v){let e=await d(v);e&&Z(p,e)}}},{concurrency:n})},{concurrency:n}),Object.keys(k.actions).length||delete k.actions})()),Ce.length&&ke.push((async()=>{let e=new Map;for(let t of Ce){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await H(e.entries(),async([e,t])=>{let n;try{let[t]=await sr(e,`docker`,C);n=t}catch{for(let e of t)delete k.docker[e.key];return}for(let e of t){let t=k.docker[e.key],r=t.oldOrig||t.old,{semvers:i,cooldownOverride:a}=le(e.fullImage),o=de[e.fullImage]??e.filePin[e.fullImage],s=a??e.fileCooldownDays,c=cr(n.tags,r,i,s||void 0,s?pe:void 0,o);if(!c){delete k.docker[e.key];continue}t.new=c.newTag,t.info=vr(e.ref),Z(t,c.date)}},{concurrency:n}),Object.keys(k.docker).length||delete k.docker})()),await Promise.all(ke),!Lr(k))return{results:{},message:`All dependencies are up to date.`};if(t.update){let e=(e,t,n)=>{for(let r of t){let t=Or(k[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(k.actions)for(let[e,n]of Object.entries(k.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(k.docker)for(let[e,t]of Object.entries(k.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}for(let r of Object.keys(k)){if(!Object.keys(k[r]).length)continue;if(r===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=_e[e]||{};if(!t)continue;let i=Kn(r,n);$(t,i),ve[e]&&(ve[e].content=i)}continue}if(r===`docker`){for(let[e,t]of n){let n=ve[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?ur:a===`compose`?dr:fr)(i,t))}continue}let i=j[r];if(r===`go`&&R){for(let e of L){let t=Or(k[r],e.usePath);if(!Object.keys(t).length)continue;let[n,i]=Fn(e.content,t);n!==e.content&&$(e.absPath,n),In(e.projectDir,i,$)}let e={};for(let[t,n]of Object.entries(k[r]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=Fn(R.content,e);t!==R.content&&$(R.file,t)}}else if(r===`go`){let[e,t]=Fn(i,k[r]);$(M[r],e),In(u(p(M[r])),t,$)}else if(r===`cargo`&&be)e(r,ye,Er);else if(r===`cargo`)$(M[r],Er(i,k[r]));else if(r===`npm`&&z)e(r,xe,cn);else{let e=r===`npm`?cn:mn;$(M[r],e(i,k[r]))}}}return Br(k)}function Ur(e){let t=``,n=0,r=e.length;for(;n<r;){let i=e[n];if(i===`"`){for(t+=i,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(i===`/`&&n+1<r&&e[n+1]===`/`){for(n+=2;n<r&&e[n]!==`
4
- `;)n++;continue}if(i===`/`&&n+1<r&&e[n+1]===`*`){for(n+=2;n<r&&(e[n]!==`*`||e[n+1]!==`/`);)n++;n+=2;continue}t+=i,n++}return t=t.replace(/,(\s*[}\]])/g,`$1`),JSON.parse(t)}export{Ur as a,Ve as i,Be as n,Hr as r,we as t};