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.
- package/LICENSE +1 -1
- package/README.md +51 -11
- package/dist/agent/commands/build.d.ts +35 -0
- package/dist/agent/commands/build.js +334 -0
- package/dist/agent/commands/build.js.map +1 -0
- package/dist/agent/commands/config.d.ts +6 -0
- package/dist/agent/commands/config.js +50 -0
- package/dist/agent/commands/config.js.map +1 -0
- package/dist/agent/commands/install.d.ts +14 -0
- package/dist/agent/commands/install.js +178 -0
- package/dist/agent/commands/install.js.map +1 -0
- package/dist/agent/commands/pipelex.d.ts +7 -0
- package/dist/agent/commands/pipelex.js +56 -0
- package/dist/agent/commands/pipelex.js.map +1 -0
- package/dist/agent/commands/plxt.d.ts +7 -0
- package/dist/agent/commands/plxt.js +27 -0
- package/dist/agent/commands/plxt.js.map +1 -0
- package/dist/agent/commands/validate.d.ts +15 -0
- package/dist/agent/commands/validate.js +118 -0
- package/dist/agent/commands/validate.js.map +1 -0
- package/dist/agent/output.d.ts +25 -0
- package/dist/agent/output.js +51 -0
- package/dist/agent/output.js.map +1 -0
- package/dist/agent/passthrough.d.ts +5 -0
- package/dist/agent/passthrough.js +19 -0
- package/dist/agent/passthrough.js.map +1 -0
- package/dist/agent-cli.d.ts +8 -0
- package/dist/agent-cli.js +237 -0
- package/dist/agent-cli.js.map +1 -0
- package/dist/cli/commands/build.d.ts +31 -0
- package/dist/cli/commands/build.js +305 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/{commands → cli/commands}/config.js +4 -4
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/{commands → cli/commands}/index.js +20 -18
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/install.js +275 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/package/add.d.ts +6 -0
- package/dist/cli/commands/package/add.js +9 -0
- package/dist/cli/commands/package/add.js.map +1 -0
- package/dist/cli/commands/package/init.d.ts +3 -0
- package/dist/cli/commands/package/init.js +108 -0
- package/dist/cli/commands/package/init.js.map +1 -0
- package/dist/cli/commands/package/install.d.ts +3 -0
- package/dist/cli/commands/package/install.js +97 -0
- package/dist/cli/commands/package/install.js.map +1 -0
- package/dist/cli/commands/package/list.d.ts +3 -0
- package/dist/cli/commands/package/list.js +58 -0
- package/dist/cli/commands/package/list.js.map +1 -0
- package/dist/cli/commands/package/lock.d.ts +3 -0
- package/dist/cli/commands/package/lock.js +37 -0
- package/dist/cli/commands/package/lock.js.map +1 -0
- package/dist/cli/commands/package/update.d.ts +3 -0
- package/dist/cli/commands/package/update.js +35 -0
- package/dist/cli/commands/package/update.js.map +1 -0
- package/dist/cli/commands/package/validate.d.ts +3 -0
- package/dist/cli/commands/package/validate.js +76 -0
- package/dist/cli/commands/package/validate.js.map +1 -0
- package/dist/cli/commands/run.d.ts +12 -0
- package/dist/cli/commands/run.js +95 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.js +168 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/utils.d.ts +9 -0
- package/dist/cli/commands/utils.js +34 -0
- package/dist/cli/commands/utils.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +10 -0
- package/dist/cli/commands/validate.js +93 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli.js +276 -99
- package/dist/cli.js.map +1 -1
- package/dist/client/client.js +2 -2
- package/dist/client/client.js.map +1 -1
- package/dist/config/config.d.ts +5 -20
- package/dist/config/config.js +5 -78
- package/dist/config/config.js.map +1 -1
- package/dist/config/credentials.d.ts +25 -0
- package/dist/config/credentials.js +230 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/installer/agents/registry.d.ts +12 -0
- package/dist/installer/agents/registry.js +78 -0
- package/dist/installer/agents/registry.js.map +1 -0
- package/dist/installer/agents/types.d.ts +16 -0
- package/dist/installer/agents/types.js +6 -0
- package/dist/installer/agents/types.js.map +1 -0
- package/dist/installer/resolver/address.d.ts +2 -0
- package/dist/installer/resolver/address.js.map +1 -0
- package/dist/{resolver → installer/resolver}/github.d.ts +1 -1
- package/dist/{resolver → installer/resolver}/github.js +2 -2
- package/dist/installer/resolver/github.js.map +1 -0
- package/dist/installer/resolver/index.d.ts +6 -0
- package/dist/{resolver → installer/resolver}/index.js +1 -1
- package/dist/installer/resolver/index.js.map +1 -0
- package/dist/{resolver → installer/resolver}/local.d.ts +1 -1
- package/dist/{resolver → installer/resolver}/local.js +2 -2
- package/dist/installer/resolver/local.js.map +1 -0
- package/dist/installer/runtime/check.js.map +1 -0
- package/dist/installer/runtime/installer.js.map +1 -0
- package/dist/installer/runtime/spawn.js.map +1 -0
- package/dist/{telemetry → installer/telemetry}/posthog.d.ts +2 -5
- package/dist/installer/telemetry/posthog.js +55 -0
- package/dist/installer/telemetry/posthog.js.map +1 -0
- package/dist/package/bundle-metadata.d.ts +8 -0
- package/dist/package/bundle-metadata.js +2 -0
- package/dist/package/bundle-metadata.js.map +1 -0
- package/dist/package/bundle-scanner.d.ts +18 -0
- package/dist/package/bundle-scanner.js +77 -0
- package/dist/package/bundle-scanner.js.map +1 -0
- package/dist/package/dependency-resolver.d.ts +32 -0
- package/dist/package/dependency-resolver.js +298 -0
- package/dist/package/dependency-resolver.js.map +1 -0
- package/dist/package/discovery.d.ts +9 -0
- package/dist/package/discovery.js +32 -0
- package/dist/package/discovery.js.map +1 -0
- package/dist/package/exceptions.d.ts +36 -0
- package/dist/package/exceptions.js +73 -0
- package/dist/package/exceptions.js.map +1 -0
- package/dist/package/lock-file.d.ts +27 -0
- package/dist/package/lock-file.js +137 -0
- package/dist/package/lock-file.js.map +1 -0
- package/dist/package/manifest/convert.d.ts +14 -0
- package/dist/package/manifest/convert.js +83 -0
- package/dist/package/manifest/convert.js.map +1 -0
- package/dist/package/manifest/parser.d.ts +9 -0
- package/dist/package/manifest/parser.js +261 -0
- package/dist/package/manifest/parser.js.map +1 -0
- package/dist/package/manifest/schema.d.ts +71 -0
- package/dist/package/manifest/schema.js +73 -0
- package/dist/package/manifest/schema.js.map +1 -0
- package/dist/{resolver → package/manifest}/types.d.ts +2 -5
- package/dist/{resolver → package/manifest}/types.js.map +1 -1
- package/dist/{resolver → package/manifest}/validate.js +25 -20
- package/dist/package/manifest/validate.js.map +1 -0
- package/dist/package/manifest/validation.d.ts +10 -0
- package/dist/package/manifest/validation.js +34 -0
- package/dist/package/manifest/validation.js.map +1 -0
- package/dist/package/package-cache.d.ts +24 -0
- package/dist/package/package-cache.js +92 -0
- package/dist/package/package-cache.js.map +1 -0
- package/dist/package/qualified-ref.d.ts +41 -0
- package/dist/package/qualified-ref.js +105 -0
- package/dist/package/qualified-ref.js.map +1 -0
- package/dist/package/semver.d.ts +33 -0
- package/dist/package/semver.js +77 -0
- package/dist/package/semver.js.map +1 -0
- package/dist/package/vcs-resolver.d.ts +19 -0
- package/dist/package/vcs-resolver.js +115 -0
- package/dist/package/vcs-resolver.js.map +1 -0
- package/dist/package/visibility.d.ts +25 -0
- package/dist/package/visibility.js +132 -0
- package/dist/package/visibility.js.map +1 -0
- package/dist/runners/api-runner.d.ts +3 -0
- package/dist/runners/api-runner.js +9 -1
- package/dist/runners/api-runner.js.map +1 -1
- package/dist/runners/pipelex-runner.d.ts +16 -2
- package/dist/runners/pipelex-runner.js +155 -41
- package/dist/runners/pipelex-runner.js.map +1 -1
- package/dist/runners/registry.d.ts +1 -1
- package/dist/runners/registry.js +5 -4
- package/dist/runners/registry.js.map +1 -1
- package/dist/runners/types.d.ts +17 -10
- package/dist/runners/types.js +6 -1
- package/dist/runners/types.js.map +1 -1
- package/package.json +7 -4
- package/dist/agents/claude-code.d.ts +0 -2
- package/dist/agents/claude-code.js +0 -36
- package/dist/agents/claude-code.js.map +0 -1
- package/dist/agents/cursor.d.ts +0 -2
- package/dist/agents/cursor.js +0 -11
- package/dist/agents/cursor.js.map +0 -1
- package/dist/agents/github-copilot.d.ts +0 -2
- package/dist/agents/github-copilot.js +0 -11
- package/dist/agents/github-copilot.js.map +0 -1
- package/dist/agents/registry.d.ts +0 -4
- package/dist/agents/registry.js +0 -24
- package/dist/agents/registry.js.map +0 -1
- package/dist/agents/types.d.ts +0 -25
- package/dist/agents/types.js +0 -11
- package/dist/agents/types.js.map +0 -1
- package/dist/agents/windsurf.d.ts +0 -2
- package/dist/agents/windsurf.js +0 -11
- package/dist/agents/windsurf.js.map +0 -1
- package/dist/commands/build.d.ts +0 -19
- package/dist/commands/build.js +0 -128
- package/dist/commands/build.js.map +0 -1
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/install.js +0 -252
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/run.d.ts +0 -11
- package/dist/commands/run.js +0 -44
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/runner.d.ts +0 -2
- package/dist/commands/runner.js +0 -59
- package/dist/commands/runner.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -1
- package/dist/commands/setup.js +0 -45
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/telemetry.d.ts +0 -3
- package/dist/commands/telemetry.js +0 -49
- package/dist/commands/telemetry.js.map +0 -1
- package/dist/commands/validate.d.ts +0 -6
- package/dist/commands/validate.js +0 -41
- package/dist/commands/validate.js.map +0 -1
- package/dist/resolver/address.d.ts +0 -2
- package/dist/resolver/address.js.map +0 -1
- package/dist/resolver/github.js.map +0 -1
- package/dist/resolver/index.d.ts +0 -6
- package/dist/resolver/index.js.map +0 -1
- package/dist/resolver/local.js.map +0 -1
- package/dist/resolver/validate.js.map +0 -1
- package/dist/runtime/check.js.map +0 -1
- package/dist/runtime/installer.js.map +0 -1
- package/dist/runtime/spawn.js.map +0 -1
- package/dist/supabase/client.d.ts +0 -4
- package/dist/supabase/client.js +0 -5
- package/dist/supabase/client.js.map +0 -1
- package/dist/supabase/methods.d.ts +0 -2
- package/dist/supabase/methods.js +0 -13
- package/dist/supabase/methods.js.map +0 -1
- package/dist/supabase/types.d.ts +0 -30
- package/dist/supabase/types.js +0 -2
- package/dist/supabase/types.js.map +0 -1
- package/dist/telemetry/posthog.js +0 -117
- package/dist/telemetry/posthog.js.map +0 -1
- /package/dist/{commands → cli/commands}/config.d.ts +0 -0
- /package/dist/{commands → cli/commands}/index.d.ts +0 -0
- /package/dist/{commands → cli/commands}/install.d.ts +0 -0
- /package/dist/{resolver → installer/resolver}/address.js +0 -0
- /package/dist/{runtime → installer/runtime}/check.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/check.js +0 -0
- /package/dist/{runtime → installer/runtime}/installer.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/installer.js +0 -0
- /package/dist/{runtime → installer/runtime}/spawn.d.ts +0 -0
- /package/dist/{runtime → installer/runtime}/spawn.js +0 -0
- /package/dist/{resolver → package/manifest}/types.js +0 -0
- /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
|
-
|
|
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 @@
|
|
|
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
|
+
}
|