mthds 0.0.6 → 0.0.8

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 (239) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +51 -11
  3. package/dist/agent/commands/build.d.ts +35 -0
  4. package/dist/agent/commands/build.js +334 -0
  5. package/dist/agent/commands/build.js.map +1 -0
  6. package/dist/agent/commands/config.d.ts +6 -0
  7. package/dist/agent/commands/config.js +50 -0
  8. package/dist/agent/commands/config.js.map +1 -0
  9. package/dist/agent/commands/install.d.ts +14 -0
  10. package/dist/agent/commands/install.js +178 -0
  11. package/dist/agent/commands/install.js.map +1 -0
  12. package/dist/agent/commands/pipelex.d.ts +7 -0
  13. package/dist/agent/commands/pipelex.js +56 -0
  14. package/dist/agent/commands/pipelex.js.map +1 -0
  15. package/dist/agent/commands/plxt.d.ts +7 -0
  16. package/dist/agent/commands/plxt.js +27 -0
  17. package/dist/agent/commands/plxt.js.map +1 -0
  18. package/dist/agent/commands/validate.d.ts +15 -0
  19. package/dist/agent/commands/validate.js +118 -0
  20. package/dist/agent/commands/validate.js.map +1 -0
  21. package/dist/agent/output.d.ts +25 -0
  22. package/dist/agent/output.js +51 -0
  23. package/dist/agent/output.js.map +1 -0
  24. package/dist/agent/passthrough.d.ts +5 -0
  25. package/dist/agent/passthrough.js +19 -0
  26. package/dist/agent/passthrough.js.map +1 -0
  27. package/dist/agent-cli.d.ts +8 -0
  28. package/dist/agent-cli.js +237 -0
  29. package/dist/agent-cli.js.map +1 -0
  30. package/dist/cli/commands/build.d.ts +31 -0
  31. package/dist/cli/commands/build.js +305 -0
  32. package/dist/cli/commands/build.js.map +1 -0
  33. package/dist/{commands → cli/commands}/config.js +4 -4
  34. package/dist/cli/commands/config.js.map +1 -0
  35. package/dist/{commands → cli/commands}/index.js +20 -18
  36. package/dist/cli/commands/index.js.map +1 -0
  37. package/dist/cli/commands/install.js +275 -0
  38. package/dist/cli/commands/install.js.map +1 -0
  39. package/dist/cli/commands/package/add.d.ts +6 -0
  40. package/dist/cli/commands/package/add.js +9 -0
  41. package/dist/cli/commands/package/add.js.map +1 -0
  42. package/dist/cli/commands/package/init.d.ts +3 -0
  43. package/dist/cli/commands/package/init.js +108 -0
  44. package/dist/cli/commands/package/init.js.map +1 -0
  45. package/dist/cli/commands/package/install.d.ts +3 -0
  46. package/dist/cli/commands/package/install.js +97 -0
  47. package/dist/cli/commands/package/install.js.map +1 -0
  48. package/dist/cli/commands/package/list.d.ts +3 -0
  49. package/dist/cli/commands/package/list.js +58 -0
  50. package/dist/cli/commands/package/list.js.map +1 -0
  51. package/dist/cli/commands/package/lock.d.ts +3 -0
  52. package/dist/cli/commands/package/lock.js +37 -0
  53. package/dist/cli/commands/package/lock.js.map +1 -0
  54. package/dist/cli/commands/package/update.d.ts +3 -0
  55. package/dist/cli/commands/package/update.js +35 -0
  56. package/dist/cli/commands/package/update.js.map +1 -0
  57. package/dist/cli/commands/package/validate.d.ts +3 -0
  58. package/dist/cli/commands/package/validate.js +76 -0
  59. package/dist/cli/commands/package/validate.js.map +1 -0
  60. package/dist/cli/commands/run.d.ts +12 -0
  61. package/dist/cli/commands/run.js +95 -0
  62. package/dist/cli/commands/run.js.map +1 -0
  63. package/dist/cli/commands/setup.d.ts +3 -0
  64. package/dist/cli/commands/setup.js +168 -0
  65. package/dist/cli/commands/setup.js.map +1 -0
  66. package/dist/cli/commands/utils.d.ts +9 -0
  67. package/dist/cli/commands/utils.js +34 -0
  68. package/dist/cli/commands/utils.js.map +1 -0
  69. package/dist/cli/commands/validate.d.ts +10 -0
  70. package/dist/cli/commands/validate.js +93 -0
  71. package/dist/cli/commands/validate.js.map +1 -0
  72. package/dist/cli.js +276 -99
  73. package/dist/cli.js.map +1 -1
  74. package/dist/client/client.js +2 -2
  75. package/dist/client/client.js.map +1 -1
  76. package/dist/config/config.d.ts +5 -20
  77. package/dist/config/config.js +5 -78
  78. package/dist/config/config.js.map +1 -1
  79. package/dist/config/credentials.d.ts +25 -0
  80. package/dist/config/credentials.js +230 -0
  81. package/dist/config/credentials.js.map +1 -0
  82. package/dist/installer/agents/registry.d.ts +12 -0
  83. package/dist/installer/agents/registry.js +78 -0
  84. package/dist/installer/agents/registry.js.map +1 -0
  85. package/dist/installer/agents/types.d.ts +16 -0
  86. package/dist/installer/agents/types.js +6 -0
  87. package/dist/installer/agents/types.js.map +1 -0
  88. package/dist/installer/resolver/address.d.ts +2 -0
  89. package/dist/installer/resolver/address.js.map +1 -0
  90. package/dist/{resolver → installer/resolver}/github.d.ts +1 -1
  91. package/dist/{resolver → installer/resolver}/github.js +2 -2
  92. package/dist/installer/resolver/github.js.map +1 -0
  93. package/dist/installer/resolver/index.d.ts +6 -0
  94. package/dist/{resolver → installer/resolver}/index.js +1 -1
  95. package/dist/installer/resolver/index.js.map +1 -0
  96. package/dist/{resolver → installer/resolver}/local.d.ts +1 -1
  97. package/dist/{resolver → installer/resolver}/local.js +2 -2
  98. package/dist/installer/resolver/local.js.map +1 -0
  99. package/dist/installer/runtime/check.js.map +1 -0
  100. package/dist/installer/runtime/installer.js.map +1 -0
  101. package/dist/installer/runtime/spawn.js.map +1 -0
  102. package/dist/{telemetry → installer/telemetry}/posthog.d.ts +2 -5
  103. package/dist/installer/telemetry/posthog.js +55 -0
  104. package/dist/installer/telemetry/posthog.js.map +1 -0
  105. package/dist/package/bundle-metadata.d.ts +8 -0
  106. package/dist/package/bundle-metadata.js +2 -0
  107. package/dist/package/bundle-metadata.js.map +1 -0
  108. package/dist/package/bundle-scanner.d.ts +18 -0
  109. package/dist/package/bundle-scanner.js +77 -0
  110. package/dist/package/bundle-scanner.js.map +1 -0
  111. package/dist/package/dependency-resolver.d.ts +32 -0
  112. package/dist/package/dependency-resolver.js +298 -0
  113. package/dist/package/dependency-resolver.js.map +1 -0
  114. package/dist/package/discovery.d.ts +9 -0
  115. package/dist/package/discovery.js +32 -0
  116. package/dist/package/discovery.js.map +1 -0
  117. package/dist/package/exceptions.d.ts +36 -0
  118. package/dist/package/exceptions.js +73 -0
  119. package/dist/package/exceptions.js.map +1 -0
  120. package/dist/package/lock-file.d.ts +27 -0
  121. package/dist/package/lock-file.js +137 -0
  122. package/dist/package/lock-file.js.map +1 -0
  123. package/dist/package/manifest/convert.d.ts +14 -0
  124. package/dist/package/manifest/convert.js +83 -0
  125. package/dist/package/manifest/convert.js.map +1 -0
  126. package/dist/package/manifest/parser.d.ts +9 -0
  127. package/dist/package/manifest/parser.js +261 -0
  128. package/dist/package/manifest/parser.js.map +1 -0
  129. package/dist/package/manifest/schema.d.ts +71 -0
  130. package/dist/package/manifest/schema.js +73 -0
  131. package/dist/package/manifest/schema.js.map +1 -0
  132. package/dist/{resolver → package/manifest}/types.d.ts +2 -5
  133. package/dist/{resolver → package/manifest}/types.js.map +1 -1
  134. package/dist/{resolver → package/manifest}/validate.js +25 -20
  135. package/dist/package/manifest/validate.js.map +1 -0
  136. package/dist/package/manifest/validation.d.ts +10 -0
  137. package/dist/package/manifest/validation.js +34 -0
  138. package/dist/package/manifest/validation.js.map +1 -0
  139. package/dist/package/package-cache.d.ts +24 -0
  140. package/dist/package/package-cache.js +92 -0
  141. package/dist/package/package-cache.js.map +1 -0
  142. package/dist/package/qualified-ref.d.ts +41 -0
  143. package/dist/package/qualified-ref.js +105 -0
  144. package/dist/package/qualified-ref.js.map +1 -0
  145. package/dist/package/semver.d.ts +33 -0
  146. package/dist/package/semver.js +77 -0
  147. package/dist/package/semver.js.map +1 -0
  148. package/dist/package/vcs-resolver.d.ts +19 -0
  149. package/dist/package/vcs-resolver.js +115 -0
  150. package/dist/package/vcs-resolver.js.map +1 -0
  151. package/dist/package/visibility.d.ts +25 -0
  152. package/dist/package/visibility.js +132 -0
  153. package/dist/package/visibility.js.map +1 -0
  154. package/dist/runners/api-runner.d.ts +3 -0
  155. package/dist/runners/api-runner.js +9 -1
  156. package/dist/runners/api-runner.js.map +1 -1
  157. package/dist/runners/pipelex-runner.d.ts +16 -2
  158. package/dist/runners/pipelex-runner.js +155 -41
  159. package/dist/runners/pipelex-runner.js.map +1 -1
  160. package/dist/runners/registry.d.ts +1 -1
  161. package/dist/runners/registry.js +5 -4
  162. package/dist/runners/registry.js.map +1 -1
  163. package/dist/runners/types.d.ts +17 -10
  164. package/dist/runners/types.js +6 -1
  165. package/dist/runners/types.js.map +1 -1
  166. package/package.json +7 -4
  167. package/dist/agents/claude-code.d.ts +0 -2
  168. package/dist/agents/claude-code.js +0 -36
  169. package/dist/agents/claude-code.js.map +0 -1
  170. package/dist/agents/cursor.d.ts +0 -2
  171. package/dist/agents/cursor.js +0 -11
  172. package/dist/agents/cursor.js.map +0 -1
  173. package/dist/agents/github-copilot.d.ts +0 -2
  174. package/dist/agents/github-copilot.js +0 -11
  175. package/dist/agents/github-copilot.js.map +0 -1
  176. package/dist/agents/registry.d.ts +0 -4
  177. package/dist/agents/registry.js +0 -24
  178. package/dist/agents/registry.js.map +0 -1
  179. package/dist/agents/types.d.ts +0 -25
  180. package/dist/agents/types.js +0 -11
  181. package/dist/agents/types.js.map +0 -1
  182. package/dist/agents/windsurf.d.ts +0 -2
  183. package/dist/agents/windsurf.js +0 -11
  184. package/dist/agents/windsurf.js.map +0 -1
  185. package/dist/commands/build.d.ts +0 -19
  186. package/dist/commands/build.js +0 -128
  187. package/dist/commands/build.js.map +0 -1
  188. package/dist/commands/config.js.map +0 -1
  189. package/dist/commands/index.js.map +0 -1
  190. package/dist/commands/install.js +0 -252
  191. package/dist/commands/install.js.map +0 -1
  192. package/dist/commands/run.d.ts +0 -11
  193. package/dist/commands/run.js +0 -44
  194. package/dist/commands/run.js.map +0 -1
  195. package/dist/commands/runner.d.ts +0 -2
  196. package/dist/commands/runner.js +0 -59
  197. package/dist/commands/runner.js.map +0 -1
  198. package/dist/commands/setup.d.ts +0 -1
  199. package/dist/commands/setup.js +0 -45
  200. package/dist/commands/setup.js.map +0 -1
  201. package/dist/commands/telemetry.d.ts +0 -3
  202. package/dist/commands/telemetry.js +0 -49
  203. package/dist/commands/telemetry.js.map +0 -1
  204. package/dist/commands/validate.d.ts +0 -6
  205. package/dist/commands/validate.js +0 -41
  206. package/dist/commands/validate.js.map +0 -1
  207. package/dist/resolver/address.d.ts +0 -2
  208. package/dist/resolver/address.js.map +0 -1
  209. package/dist/resolver/github.js.map +0 -1
  210. package/dist/resolver/index.d.ts +0 -6
  211. package/dist/resolver/index.js.map +0 -1
  212. package/dist/resolver/local.js.map +0 -1
  213. package/dist/resolver/validate.js.map +0 -1
  214. package/dist/runtime/check.js.map +0 -1
  215. package/dist/runtime/installer.js.map +0 -1
  216. package/dist/runtime/spawn.js.map +0 -1
  217. package/dist/supabase/client.d.ts +0 -4
  218. package/dist/supabase/client.js +0 -5
  219. package/dist/supabase/client.js.map +0 -1
  220. package/dist/supabase/methods.d.ts +0 -2
  221. package/dist/supabase/methods.js +0 -13
  222. package/dist/supabase/methods.js.map +0 -1
  223. package/dist/supabase/types.d.ts +0 -30
  224. package/dist/supabase/types.js +0 -2
  225. package/dist/supabase/types.js.map +0 -1
  226. package/dist/telemetry/posthog.js +0 -117
  227. package/dist/telemetry/posthog.js.map +0 -1
  228. /package/dist/{commands → cli/commands}/config.d.ts +0 -0
  229. /package/dist/{commands → cli/commands}/index.d.ts +0 -0
  230. /package/dist/{commands → cli/commands}/install.d.ts +0 -0
  231. /package/dist/{resolver → installer/resolver}/address.js +0 -0
  232. /package/dist/{runtime → installer/runtime}/check.d.ts +0 -0
  233. /package/dist/{runtime → installer/runtime}/check.js +0 -0
  234. /package/dist/{runtime → installer/runtime}/installer.d.ts +0 -0
  235. /package/dist/{runtime → installer/runtime}/installer.js +0 -0
  236. /package/dist/{runtime → installer/runtime}/spawn.d.ts +0 -0
  237. /package/dist/{runtime → installer/runtime}/spawn.js +0 -0
  238. /package/dist/{resolver → package/manifest}/types.js +0 -0
  239. /package/dist/{resolver → package/manifest}/validate.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/installer/runtime/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,YAAY,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../src/installer/runtime/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,QAAQ,CACN,iEAAiE,EACjE,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,gDAAgD,EAAE;gBACzD,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/installer/runtime/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE;YACnC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,5 @@
1
- export type TelemetrySource = "env" | "env.local" | "config" | "default";
1
+ import type { CredentialSource } from "../../config/credentials.js";
2
+ export type TelemetrySource = CredentialSource;
2
3
  export declare function getTelemetryStatus(): {
3
4
  enabled: boolean;
4
5
  source: TelemetrySource;
@@ -14,10 +15,6 @@ export interface InstallEvent {
14
15
  license?: string;
15
16
  mthds_version?: string;
16
17
  exports?: Record<string, unknown>;
17
- dependencies?: Record<string, {
18
- address: string;
19
- version: string;
20
- }>;
21
18
  manifest_raw: string;
22
19
  }
23
20
  export declare function trackInstall(data: InstallEvent): void;
@@ -0,0 +1,55 @@
1
+ import { PostHog } from "posthog-node";
2
+ import { isTelemetryEnabled, setTelemetryEnabled as setTelemetryFlag, getTelemetrySource, } from "../../config/credentials.js";
3
+ const POSTHOG_API_KEY = "phc_ylV9FzMiQDyGgtd5nJn0Cc2OkyHAobfj7xDhYloH5IA";
4
+ const POSTHOG_HOST = "https://eu.i.posthog.com";
5
+ let client = null;
6
+ export function getTelemetryStatus() {
7
+ const enabled = isTelemetryEnabled();
8
+ const source = getTelemetrySource();
9
+ return { enabled, source };
10
+ }
11
+ export function setTelemetryEnabled(enabled) {
12
+ setTelemetryFlag(enabled);
13
+ }
14
+ function getClient() {
15
+ if (!isTelemetryEnabled())
16
+ return null;
17
+ if (!client) {
18
+ client = new PostHog(POSTHOG_API_KEY, { host: POSTHOG_HOST, disableGeoip: true });
19
+ }
20
+ return client;
21
+ }
22
+ export function trackInstall(data) {
23
+ const posthog = getClient();
24
+ if (!posthog)
25
+ return;
26
+ posthog.capture({
27
+ distinctId: "anonymous",
28
+ event: "install",
29
+ properties: {
30
+ address: data.address,
31
+ slug: data.slug,
32
+ version: data.version,
33
+ description: data.description,
34
+ display_name: data.display_name,
35
+ authors: data.authors,
36
+ license: data.license,
37
+ mthds_version: data.mthds_version,
38
+ exports: data.exports,
39
+ manifest_raw: data.manifest_raw,
40
+ timestamp: new Date().toISOString(),
41
+ },
42
+ });
43
+ }
44
+ export async function shutdown() {
45
+ if (client) {
46
+ try {
47
+ await client.shutdown();
48
+ }
49
+ catch {
50
+ // Telemetry flush failures should never crash the CLI
51
+ }
52
+ client = null;
53
+ }
54
+ }
55
+ //# sourceMappingURL=posthog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"posthog.js","sourceRoot":"","sources":["../../../src/installer/telemetry/posthog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,IAAI,gBAAgB,EACvC,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,eAAe,GAAG,iDAAiD,CAAC;AAC1E,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,IAAI,MAAM,GAAmB,IAAI,CAAC;AAIlC,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAeD,MAAM,UAAU,YAAY,CAAC,IAAkB;IAC7C,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,OAAO,CAAC,OAAO,CAAC;QACd,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Minimal metadata about a bundle needed for visibility checking.
3
+ */
4
+ export interface BundleMetadata {
5
+ readonly domain: string;
6
+ readonly mainPipe: string | null;
7
+ readonly pipeReferences: Array<[string, string]>;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bundle-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-metadata.js","sourceRoot":"","sources":["../../src/package/bundle-metadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { DomainExports } from "./manifest/schema.js";
2
+ /**
3
+ * Scan .mthds bundle files and extract domain/pipe metadata.
4
+ *
5
+ * Returns:
6
+ * - domainPipes: mapping domain -> set of pipe codes
7
+ * - domainMainPipes: mapping domain -> main_pipe code
8
+ * - errors: list of human-readable error strings
9
+ */
10
+ export declare function scanBundlesForDomainInfo(mthdsFiles: string[]): {
11
+ domainPipes: Map<string, Set<string>>;
12
+ domainMainPipes: Map<string, string>;
13
+ errors: string[];
14
+ };
15
+ /**
16
+ * Build DomainExports dict from scan results.
17
+ */
18
+ export declare function buildDomainExportsFromScan(domainPipes: Map<string, Set<string>>, domainMainPipes: Map<string, string>): Record<string, DomainExports>;
@@ -0,0 +1,77 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { parse } from "smol-toml";
3
+ /**
4
+ * Scan .mthds bundle files and extract domain/pipe metadata.
5
+ *
6
+ * Returns:
7
+ * - domainPipes: mapping domain -> set of pipe codes
8
+ * - domainMainPipes: mapping domain -> main_pipe code
9
+ * - errors: list of human-readable error strings
10
+ */
11
+ export function scanBundlesForDomainInfo(mthdsFiles) {
12
+ const domainPipes = new Map();
13
+ const domainMainPipes = new Map();
14
+ const errors = [];
15
+ for (const filePath of mthdsFiles) {
16
+ let data;
17
+ try {
18
+ const content = readFileSync(filePath, "utf-8");
19
+ data = parse(content);
20
+ }
21
+ catch (err) {
22
+ errors.push(`${filePath}: ${err.message}`);
23
+ continue;
24
+ }
25
+ const domain = data["domain"];
26
+ if (typeof domain !== "string" || !domain) {
27
+ errors.push(`${filePath}: missing or invalid 'domain' field`);
28
+ continue;
29
+ }
30
+ // Collect pipe codes from [pipe.*] sections
31
+ const pipesSection = data["pipe"];
32
+ const pipeCodes = new Set();
33
+ if (pipesSection && typeof pipesSection === "object" && !Array.isArray(pipesSection)) {
34
+ for (const key of Object.keys(pipesSection)) {
35
+ pipeCodes.add(key);
36
+ }
37
+ }
38
+ const existing = domainPipes.get(domain);
39
+ if (existing) {
40
+ for (const code of pipeCodes)
41
+ existing.add(code);
42
+ }
43
+ else {
44
+ domainPipes.set(domain, pipeCodes);
45
+ }
46
+ // Collect main_pipe if declared
47
+ const mainPipe = data["main_pipe"];
48
+ if (typeof mainPipe === "string" && mainPipe) {
49
+ const existingMain = domainMainPipes.get(domain);
50
+ if (!existingMain || existingMain === mainPipe) {
51
+ domainMainPipes.set(domain, mainPipe);
52
+ }
53
+ else {
54
+ errors.push(`${filePath}: conflicting main_pipe for domain '${domain}': '${existingMain}' vs '${mainPipe}' (keeping '${existingMain}')`);
55
+ }
56
+ }
57
+ }
58
+ return { domainPipes, domainMainPipes, errors };
59
+ }
60
+ /**
61
+ * Build DomainExports dict from scan results.
62
+ */
63
+ export function buildDomainExportsFromScan(domainPipes, domainMainPipes) {
64
+ const exports = {};
65
+ const sortedDomains = [...domainPipes.keys()].sort();
66
+ for (const domain of sortedDomains) {
67
+ const pipes = new Set(domainPipes.get(domain));
68
+ // Ensure main_pipe is in the exported pipe list
69
+ const mainPipe = domainMainPipes.get(domain);
70
+ if (mainPipe) {
71
+ pipes.add(mainPipe);
72
+ }
73
+ exports[domain] = { pipes: [...pipes].sort() };
74
+ }
75
+ return exports;
76
+ }
77
+ //# sourceMappingURL=bundle-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-scanner.js","sourceRoot":"","sources":["../../src/package/bundle-scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ParsedManifest } from "./manifest/schema.js";
2
+ /** Dependency entry — kept locally for the resolver (dependencies are no longer in the manifest). */
3
+ export interface PackageDependency {
4
+ readonly address: string;
5
+ readonly version: string;
6
+ readonly path?: string;
7
+ }
8
+ export interface ResolvedDependency {
9
+ readonly alias: string;
10
+ readonly address: string;
11
+ readonly manifest: ParsedManifest | null;
12
+ readonly packageRoot: string;
13
+ readonly mthdsFiles: string[];
14
+ readonly exportedPipeCodes: Set<string> | null;
15
+ }
16
+ /**
17
+ * Collect all .mthds files under a directory recursively.
18
+ */
19
+ export declare function collectMthdsFiles(directory: string): string[];
20
+ /**
21
+ * Determine which pipes are exported by a dependency.
22
+ * Returns null when all pipes should be public.
23
+ */
24
+ export declare function determineExportedPipes(manifest: ParsedManifest | null): Set<string> | null;
25
+ /**
26
+ * Resolve all dependencies with transitive resolution for remote deps.
27
+ *
28
+ * Local path dependencies are resolved directly (no recursion into their sub-deps).
29
+ * Remote dependencies are resolved transitively with cycle detection and diamond
30
+ * constraint handling.
31
+ */
32
+ export declare function resolveAllDependencies(manifest: ParsedManifest, packageRoot: string, cacheRoot?: string, fetchUrlOverrides?: Record<string, string>): Promise<ResolvedDependency[]>;
@@ -0,0 +1,298 @@
1
+ import { existsSync, readdirSync, statSync, readFileSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { mkdtempSync, rmSync } from "node:fs";
4
+ import { tmpdir } from "node:os";
5
+ import { DependencyResolveError, ManifestError, TransitiveDependencyError } from "./exceptions.js";
6
+ import { parseMethodsToml } from "./manifest/parser.js";
7
+ import { MANIFEST_FILENAME } from "./discovery.js";
8
+ import { getCachedPackagePath, isCached, storeInCache } from "./package-cache.js";
9
+ import { parseConstraint, parseVersion, selectMinimumVersionForMultipleConstraints, versionSatisfies } from "./semver.js";
10
+ import { addressToCloneUrl, cloneAtVersion, listRemoteVersionTags, resolveVersionFromTags } from "./vcs-resolver.js";
11
+ /**
12
+ * Collect all .mthds files under a directory recursively.
13
+ */
14
+ export function collectMthdsFiles(directory) {
15
+ const results = [];
16
+ function walk(dir) {
17
+ if (!existsSync(dir))
18
+ return;
19
+ const entries = readdirSync(dir, { withFileTypes: true });
20
+ for (const entry of entries) {
21
+ const fullPath = join(dir, entry.name);
22
+ if (entry.isDirectory()) {
23
+ walk(fullPath);
24
+ }
25
+ else if (entry.isFile() && entry.name.endsWith(".mthds")) {
26
+ results.push(fullPath);
27
+ }
28
+ }
29
+ }
30
+ walk(directory);
31
+ return results.sort();
32
+ }
33
+ /**
34
+ * Determine which pipes are exported by a dependency.
35
+ * Returns null when all pipes should be public.
36
+ */
37
+ export function determineExportedPipes(manifest) {
38
+ if (manifest === null)
39
+ return null;
40
+ if (Object.keys(manifest.exports).length === 0)
41
+ return null;
42
+ const exported = new Set();
43
+ for (const domainExport of Object.values(manifest.exports)) {
44
+ for (const pipe of domainExport.pipes) {
45
+ exported.add(pipe);
46
+ }
47
+ }
48
+ return exported;
49
+ }
50
+ function findManifestInDir(directory) {
51
+ const manifestPath = join(directory, MANIFEST_FILENAME);
52
+ if (!existsSync(manifestPath))
53
+ return null;
54
+ try {
55
+ const content = readFileSync(manifestPath, "utf-8");
56
+ return parseMethodsToml(content);
57
+ }
58
+ catch (err) {
59
+ if (err instanceof ManifestError)
60
+ return null;
61
+ throw err;
62
+ }
63
+ }
64
+ function resolveLocalDependency(alias, dep, packageRoot) {
65
+ const depDir = resolve(packageRoot, dep.path);
66
+ if (!existsSync(depDir)) {
67
+ throw new DependencyResolveError(`Dependency '${alias}' local path '${dep.path}' resolves to '${depDir}' which does not exist`);
68
+ }
69
+ if (!statSync(depDir).isDirectory()) {
70
+ throw new DependencyResolveError(`Dependency '${alias}' local path '${dep.path}' resolves to '${depDir}' which is not a directory`);
71
+ }
72
+ const depManifest = findManifestInDir(depDir);
73
+ const mthdsFiles = collectMthdsFiles(depDir);
74
+ const exportedPipeCodes = determineExportedPipes(depManifest);
75
+ return { alias, address: dep.address, manifest: depManifest, packageRoot: depDir, mthdsFiles, exportedPipeCodes };
76
+ }
77
+ async function resolveRemoteDependency(alias, dep, cacheRoot, fetchUrlOverride) {
78
+ const cloneUrl = fetchUrlOverride ?? addressToCloneUrl(dep.address);
79
+ let versionTags;
80
+ let selectedVersion;
81
+ let selectedTag;
82
+ try {
83
+ versionTags = await listRemoteVersionTags(cloneUrl);
84
+ [selectedVersion, selectedTag] = resolveVersionFromTags(versionTags, dep.version);
85
+ }
86
+ catch (err) {
87
+ throw new DependencyResolveError(`Failed to resolve remote dependency '${alias}' (${dep.address}): ${err.message}`);
88
+ }
89
+ const versionStr = selectedVersion.version;
90
+ // Check cache
91
+ if (isCached(dep.address, versionStr, cacheRoot)) {
92
+ const cachedPath = getCachedPackagePath(dep.address, versionStr, cacheRoot);
93
+ return buildResolvedFromDir(alias, dep.address, cachedPath);
94
+ }
95
+ // Clone and cache
96
+ const tmpDir = mkdtempSync(join(tmpdir(), "mthds_clone_"));
97
+ try {
98
+ const cloneDest = join(tmpDir, "pkg");
99
+ await cloneAtVersion(cloneUrl, selectedTag, cloneDest);
100
+ const cachedPath = storeInCache(cloneDest, dep.address, versionStr, cacheRoot);
101
+ return buildResolvedFromDir(alias, dep.address, cachedPath);
102
+ }
103
+ catch (err) {
104
+ throw new DependencyResolveError(`Failed to fetch/cache dependency '${alias}' (${dep.address}@${versionStr}): ${err.message}`);
105
+ }
106
+ finally {
107
+ rmSync(tmpDir, { recursive: true, force: true });
108
+ }
109
+ }
110
+ function buildResolvedFromDir(alias, address, directory) {
111
+ const depManifest = findManifestInDir(directory);
112
+ const mthdsFiles = collectMthdsFiles(directory);
113
+ const exportedPipeCodes = determineExportedPipes(depManifest);
114
+ return { alias, address, manifest: depManifest, packageRoot: directory, mthdsFiles, exportedPipeCodes };
115
+ }
116
+ async function resolveWithMultipleConstraints(address, alias, constraints, tagsCache, cacheRoot, fetchUrlOverride) {
117
+ const cloneUrl = fetchUrlOverride ?? addressToCloneUrl(address);
118
+ // Get or cache tag list
119
+ if (!tagsCache.has(address)) {
120
+ try {
121
+ tagsCache.set(address, await listRemoteVersionTags(cloneUrl));
122
+ }
123
+ catch (err) {
124
+ throw new DependencyResolveError(`Failed to list tags for '${address}': ${err.message}`);
125
+ }
126
+ }
127
+ const versionTags = tagsCache.get(address);
128
+ const versions = versionTags.map((entry) => entry[0]);
129
+ // Parse all constraints and find a version satisfying all
130
+ const parsedConstraints = constraints.map((constraint) => parseConstraint(constraint));
131
+ const selected = selectMinimumVersionForMultipleConstraints(versions, parsedConstraints);
132
+ if (selected === null) {
133
+ throw new TransitiveDependencyError(`No version of '${address}' satisfies all constraints: ${constraints.join(", ")}`);
134
+ }
135
+ const versionStr = selected.version;
136
+ // Check cache
137
+ if (isCached(address, versionStr, cacheRoot)) {
138
+ const cachedPath = getCachedPackagePath(address, versionStr, cacheRoot);
139
+ return buildResolvedFromDir(alias, address, cachedPath);
140
+ }
141
+ // Find the corresponding tag name
142
+ let selectedTag;
143
+ for (const [ver, tagName] of versionTags) {
144
+ if (ver.compare(selected) === 0) {
145
+ selectedTag = tagName;
146
+ break;
147
+ }
148
+ }
149
+ if (!selectedTag) {
150
+ throw new DependencyResolveError(`Internal error: selected version ${selected.version} not found in tag list for '${address}'`);
151
+ }
152
+ // Clone and cache
153
+ const tmpDir = mkdtempSync(join(tmpdir(), "mthds_clone_"));
154
+ try {
155
+ const cloneDest = join(tmpDir, "pkg");
156
+ await cloneAtVersion(cloneUrl, selectedTag, cloneDest);
157
+ const cachedPath = storeInCache(cloneDest, address, versionStr, cacheRoot);
158
+ return buildResolvedFromDir(alias, address, cachedPath);
159
+ }
160
+ catch (err) {
161
+ throw new DependencyResolveError(`Failed to fetch/cache '${address}@${versionStr}': ${err.message}`);
162
+ }
163
+ finally {
164
+ rmSync(tmpDir, { recursive: true, force: true });
165
+ }
166
+ }
167
+ function removeStaleSubdepConstraints(oldManifest, resolvedMap, constraintsByAddress) {
168
+ if (!oldManifest || Object.keys(oldManifest.dependencies ?? {}).length === 0)
169
+ return;
170
+ for (const oldSubRaw of Object.values(oldManifest.dependencies ?? {})) {
171
+ const oldSub = oldSubRaw;
172
+ if (oldSub.path !== undefined)
173
+ continue;
174
+ const constraintsList = constraintsByAddress.get(oldSub.address);
175
+ if (!constraintsList)
176
+ continue;
177
+ const idx = constraintsList.indexOf(oldSub.version);
178
+ if (idx === -1)
179
+ continue;
180
+ constraintsList.splice(idx, 1);
181
+ if (constraintsList.length === 0) {
182
+ constraintsByAddress.delete(oldSub.address);
183
+ const oldResolvedSub = resolvedMap.get(oldSub.address);
184
+ if (oldResolvedSub) {
185
+ resolvedMap.delete(oldSub.address);
186
+ removeStaleSubdepConstraints(oldResolvedSub.manifest, resolvedMap, constraintsByAddress);
187
+ }
188
+ }
189
+ }
190
+ }
191
+ async function resolveTransitiveTree(deps, resolutionStack, resolvedMap, constraintsByAddress, tagsCache, cacheRoot, fetchUrlOverrides) {
192
+ for (const [alias, dep] of Object.entries(deps)) {
193
+ // Skip local path deps in transitive resolution
194
+ if (dep.path !== undefined)
195
+ continue;
196
+ // Cycle detection
197
+ if (resolutionStack.has(dep.address)) {
198
+ throw new TransitiveDependencyError(`Dependency cycle detected: '${dep.address}' is already on the resolution stack`);
199
+ }
200
+ // Track constraint
201
+ if (!constraintsByAddress.has(dep.address)) {
202
+ constraintsByAddress.set(dep.address, []);
203
+ }
204
+ constraintsByAddress.get(dep.address).push(dep.version);
205
+ // Already resolved — check if existing version satisfies new constraint
206
+ if (resolvedMap.has(dep.address)) {
207
+ const existing = resolvedMap.get(dep.address);
208
+ if (existing.manifest !== null) {
209
+ const existingConstraint = parseConstraint(dep.version);
210
+ const existingVer = parseVersion(existing.manifest.version);
211
+ if (versionSatisfies(existingVer, existingConstraint)) {
212
+ continue;
213
+ }
214
+ }
215
+ // Diamond: remove stale constraints from old version's sub-deps
216
+ removeStaleSubdepConstraints(existing.manifest, resolvedMap, constraintsByAddress);
217
+ // Diamond: re-resolve with all constraints
218
+ const overrideUrl = fetchUrlOverrides?.[dep.address];
219
+ const reResolved = await resolveWithMultipleConstraints(dep.address, alias, constraintsByAddress.get(dep.address), tagsCache, cacheRoot, overrideUrl);
220
+ resolvedMap.set(dep.address, reResolved);
221
+ // Recurse into sub-dependencies of the re-resolved version
222
+ if (reResolved.manifest && Object.keys(reResolved.manifest.dependencies ?? {}).length > 0) {
223
+ const remoteSubs = {};
224
+ for (const [subAlias, sub] of Object.entries(reResolved.manifest.dependencies ?? {})) {
225
+ if (sub.path === undefined)
226
+ remoteSubs[subAlias] = sub;
227
+ }
228
+ if (Object.keys(remoteSubs).length > 0) {
229
+ resolutionStack.add(dep.address);
230
+ try {
231
+ await resolveTransitiveTree(remoteSubs, resolutionStack, resolvedMap, constraintsByAddress, tagsCache, cacheRoot, fetchUrlOverrides);
232
+ }
233
+ finally {
234
+ resolutionStack.delete(dep.address);
235
+ }
236
+ }
237
+ }
238
+ continue;
239
+ }
240
+ // Normal resolve
241
+ resolutionStack.add(dep.address);
242
+ try {
243
+ const overrideUrl = fetchUrlOverrides?.[dep.address];
244
+ let resolvedDep;
245
+ if (constraintsByAddress.get(dep.address).length > 1) {
246
+ resolvedDep = await resolveWithMultipleConstraints(dep.address, alias, constraintsByAddress.get(dep.address), tagsCache, cacheRoot, overrideUrl);
247
+ }
248
+ else {
249
+ resolvedDep = await resolveRemoteDependency(alias, dep, cacheRoot, overrideUrl);
250
+ }
251
+ resolvedMap.set(dep.address, resolvedDep);
252
+ // Recurse into sub-dependencies (remote only)
253
+ if (resolvedDep.manifest && Object.keys(resolvedDep.manifest.dependencies ?? {}).length > 0) {
254
+ const remoteSubs = {};
255
+ for (const [subAlias, sub] of Object.entries(resolvedDep.manifest.dependencies ?? {})) {
256
+ if (sub.path === undefined)
257
+ remoteSubs[subAlias] = sub;
258
+ }
259
+ if (Object.keys(remoteSubs).length > 0) {
260
+ await resolveTransitiveTree(remoteSubs, resolutionStack, resolvedMap, constraintsByAddress, tagsCache, cacheRoot, fetchUrlOverrides);
261
+ }
262
+ }
263
+ }
264
+ finally {
265
+ resolutionStack.delete(dep.address);
266
+ }
267
+ }
268
+ }
269
+ /**
270
+ * Resolve all dependencies with transitive resolution for remote deps.
271
+ *
272
+ * Local path dependencies are resolved directly (no recursion into their sub-deps).
273
+ * Remote dependencies are resolved transitively with cycle detection and diamond
274
+ * constraint handling.
275
+ */
276
+ export async function resolveAllDependencies(manifest, packageRoot, cacheRoot, fetchUrlOverrides) {
277
+ // 1. Resolve local path deps (direct only, no recursion)
278
+ const localResolved = [];
279
+ const remoteDeps = {};
280
+ for (const [alias, dep] of Object.entries(manifest.dependencies ?? {})) {
281
+ if (dep.path !== undefined) {
282
+ localResolved.push(resolveLocalDependency(alias, dep, packageRoot));
283
+ }
284
+ else {
285
+ remoteDeps[alias] = dep;
286
+ }
287
+ }
288
+ // 2. Resolve remote deps transitively
289
+ const resolvedMap = new Map();
290
+ const constraintsByAddress = new Map();
291
+ const tagsCache = new Map();
292
+ const resolutionStack = new Set();
293
+ if (Object.keys(remoteDeps).length > 0) {
294
+ await resolveTransitiveTree(remoteDeps, resolutionStack, resolvedMap, constraintsByAddress, tagsCache, cacheRoot, fetchUrlOverrides);
295
+ }
296
+ return [...localResolved, ...resolvedMap.values()];
297
+ }
298
+ //# sourceMappingURL=dependency-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/package/dependency-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ParsedManifest } from "./manifest/schema.js";
2
+ export declare const MANIFEST_FILENAME = "METHODS.toml";
3
+ /**
4
+ * Walk up from a bundle file's directory to find the nearest METHODS.toml.
5
+ *
6
+ * Stops at the first METHODS.toml found, or when a .git/ directory is
7
+ * encountered, or at the filesystem root.
8
+ */
9
+ export declare function findPackageManifest(bundlePath: string): ParsedManifest | null;
@@ -0,0 +1,32 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { parseMethodsToml } from "./manifest/parser.js";
4
+ export const MANIFEST_FILENAME = "METHODS.toml";
5
+ /**
6
+ * Walk up from a bundle file's directory to find the nearest METHODS.toml.
7
+ *
8
+ * Stops at the first METHODS.toml found, or when a .git/ directory is
9
+ * encountered, or at the filesystem root.
10
+ */
11
+ export function findPackageManifest(bundlePath) {
12
+ let current = resolve(dirname(bundlePath));
13
+ while (true) {
14
+ const manifestPath = join(current, MANIFEST_FILENAME);
15
+ if (existsSync(manifestPath)) {
16
+ const content = readFileSync(manifestPath, "utf-8");
17
+ return parseMethodsToml(content);
18
+ }
19
+ // Stop at .git boundary
20
+ const gitDir = join(current, ".git");
21
+ if (existsSync(gitDir)) {
22
+ return null;
23
+ }
24
+ // Stop at filesystem root
25
+ const parent = dirname(current);
26
+ if (parent === current) {
27
+ return null;
28
+ }
29
+ current = parent;
30
+ }
31
+ }
32
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/package/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAE3C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0BAA0B;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,36 @@
1
+ export declare class MthdsPackageError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class ManifestError extends MthdsPackageError {
5
+ constructor(message: string);
6
+ }
7
+ export declare class ManifestParseError extends ManifestError {
8
+ constructor(message: string);
9
+ }
10
+ export declare class ManifestValidationError extends ManifestError {
11
+ constructor(message: string);
12
+ }
13
+ export declare class VCSFetchError extends MthdsPackageError {
14
+ constructor(message: string);
15
+ }
16
+ export declare class VersionResolutionError extends MthdsPackageError {
17
+ constructor(message: string);
18
+ }
19
+ export declare class PackageCacheError extends MthdsPackageError {
20
+ constructor(message: string);
21
+ }
22
+ export declare class LockFileError extends MthdsPackageError {
23
+ constructor(message: string);
24
+ }
25
+ export declare class IntegrityError extends MthdsPackageError {
26
+ constructor(message: string);
27
+ }
28
+ export declare class DependencyResolveError extends MthdsPackageError {
29
+ constructor(message: string);
30
+ }
31
+ export declare class TransitiveDependencyError extends MthdsPackageError {
32
+ constructor(message: string);
33
+ }
34
+ export declare class QualifiedRefError extends MthdsPackageError {
35
+ constructor(message: string);
36
+ }