@shrkcrft/inspector 0.1.0-alpha.8 → 0.1.0-alpha.9
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/README.md +1 -1
- package/dist/adoption-state.js +1 -1
- package/dist/agent-brief.d.ts.map +1 -1
- package/dist/agent-brief.js +10 -59
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +3 -1
- package/dist/ai-readiness.d.ts +9 -84
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +30 -161
- package/dist/apply-dispatch-trace.d.ts +2 -1
- package/dist/apply-dispatch-trace.d.ts.map +1 -1
- package/dist/apply-dispatch-trace.js +9 -0
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +5 -1
- package/dist/area-map.d.ts +19 -0
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +27 -0
- package/dist/ci-permissions-fix.d.ts +1 -1
- package/dist/ci-permissions-fix.d.ts.map +1 -1
- package/dist/ci-permissions-fix.js +182 -1
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-adoption-diff.d.ts.map +1 -1
- package/dist/construct-adoption-diff.js +1 -2
- package/dist/construct-adoption.d.ts.map +1 -1
- package/dist/construct-adoption.js +11 -10
- package/dist/construct-inference.d.ts.map +1 -1
- package/dist/construct-inference.js +1 -2
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +10 -2
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +10 -2
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +10 -2
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +9 -2
- package/dist/demo-script.d.ts +1 -0
- package/dist/demo-script.d.ts.map +1 -1
- package/dist/demo-script.js +43 -0
- package/dist/docs-check.js +1 -1
- package/dist/drift-baseline.d.ts.map +1 -1
- package/dist/drift-baseline.js +2 -5
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +16 -2
- package/dist/git-helpers.d.ts +12 -0
- package/dist/git-helpers.d.ts.map +1 -1
- package/dist/git-helpers.js +63 -0
- package/dist/helper-registry.d.ts +54 -27
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +517 -16
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +5 -4
- package/dist/impact-render.d.ts.map +1 -1
- package/dist/impact-render.js +9 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/ingest-drafts.js +4 -8
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +10 -2
- package/dist/monorepo-onboarding.js +2 -2
- package/dist/onboarding-drafts-merge.d.ts +71 -0
- package/dist/onboarding-drafts-merge.d.ts.map +1 -0
- package/dist/onboarding-drafts-merge.js +174 -0
- package/dist/onboarding-drafts.d.ts +14 -0
- package/dist/onboarding-drafts.d.ts.map +1 -1
- package/dist/onboarding-drafts.js +39 -5
- package/dist/onboarding-report.d.ts.map +1 -1
- package/dist/onboarding-report.js +1 -5
- package/dist/onboarding.d.ts +1 -1
- package/dist/onboarding.d.ts.map +1 -1
- package/dist/onboarding.js +64 -5
- package/dist/ownership.js +10 -2
- package/dist/pack-contributions-inventory.d.ts +1 -0
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +24 -0
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +10 -2
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +11 -4
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +1 -0
- package/dist/pack-symbol-compat.d.ts +17 -4
- package/dist/pack-symbol-compat.d.ts.map +1 -1
- package/dist/pack-symbol-compat.js +155 -7
- package/dist/pack-test-runner.js +10 -2
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +20 -3
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +10 -2
- package/dist/plugin-lifecycle-profile-registry.d.ts +52 -0
- package/dist/plugin-lifecycle-profile-registry.d.ts.map +1 -0
- package/dist/plugin-lifecycle-profile-registry.js +202 -0
- package/dist/plugin-lifecycle.d.ts +132 -0
- package/dist/plugin-lifecycle.d.ts.map +1 -0
- package/dist/plugin-lifecycle.js +477 -0
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +11 -3
- package/dist/policy-test.js +11 -3
- package/dist/product-coherence.js +5 -5
- package/dist/profile-registry.d.ts +1 -0
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +32 -4
- package/dist/quality-baseline.d.ts.map +1 -1
- package/dist/quality-baseline.js +1 -3
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +9 -3
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +10 -2
- package/dist/release-readiness.js +5 -5
- package/dist/reposet.js +1 -1
- package/dist/repository-knowledge-model.d.ts +1 -1
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/review-packet-v2.d.ts.map +1 -1
- package/dist/review-packet-v2.js +13 -3
- package/dist/rule-scaffold.d.ts.map +1 -1
- package/dist/rule-scaffold.js +4 -12
- package/dist/scaffold-patterns.js +10 -2
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +10 -2
- package/dist/self-config-doctor-v2.d.ts +1 -1
- package/dist/self-config-doctor-v2.d.ts.map +1 -1
- package/dist/self-config-doctor-v2.js +10 -6
- package/dist/self-config-doctor.d.ts.map +1 -1
- package/dist/self-config-doctor.js +13 -7
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +0 -1
- package/dist/start-here.d.ts +1 -1
- package/dist/start-here.js +1 -1
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +31 -1
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +10 -2
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +16 -8
- package/dist/universal-search.d.ts +1 -0
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +12 -0
- package/dist/upgrade-advisor.js +1 -1
- package/package.json +21 -22
- package/dist/synthesize-from-onboarding.d.ts +0 -68
- package/dist/synthesize-from-onboarding.d.ts.map +0 -1
- package/dist/synthesize-from-onboarding.js +0 -508
package/dist/ownership.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
1
9
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
10
|
import * as nodePath from 'node:path';
|
|
3
|
-
import {
|
|
11
|
+
import { pathToFileURL } from 'node:url';
|
|
4
12
|
export const OWNERSHIP_SCHEMA = 'sharkcraft.ownership-rule/v1';
|
|
5
13
|
const DEFAULT_PATHS = ['sharkcraft/ownership.ts', 'CODEOWNERS', '.github/CODEOWNERS'];
|
|
6
14
|
export async function loadOwnershipRules(cwd, configured) {
|
|
@@ -16,7 +24,7 @@ export async function loadOwnershipRules(cwd, configured) {
|
|
|
16
24
|
if (full.endsWith('.ts') || full.endsWith('.js') || full.endsWith('.mjs') || full.endsWith('.cjs')) {
|
|
17
25
|
try {
|
|
18
26
|
// pathToFileURL mirrors the resolver pattern in TypeScriptKnowledgeLoader.
|
|
19
|
-
const mod = (await
|
|
27
|
+
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(full).href)));
|
|
20
28
|
const list = mod.default ?? mod.ownershipRules ?? [];
|
|
21
29
|
for (const r of list)
|
|
22
30
|
rules.push(normalize(r));
|
|
@@ -24,6 +24,7 @@ export declare enum ContributionKind {
|
|
|
24
24
|
Decision = "decision",
|
|
25
25
|
ContractTemplate = "contract-template",
|
|
26
26
|
MigrationProfile = "migration-profile",
|
|
27
|
+
PluginLifecycleProfile = "plugin-lifecycle-profile",
|
|
27
28
|
ContextTest = "context-test",
|
|
28
29
|
AgentTest = "agent-test",
|
|
29
30
|
Helper = "helper",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-contributions-inventory.d.ts","sourceRoot":"","sources":["../src/pack-contributions-inventory.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"pack-contributions-inventory.d.ts","sourceRoot":"","sources":["../src/pack-contributions-inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import * as nodePath from 'node:path';
|
|
|
12
12
|
// Structural loaders used to replace regex-fallback noise per kind.
|
|
13
13
|
import { HELPERS } from "./helper-registry.js";
|
|
14
14
|
import { listConventions } from "./convention-registry.js";
|
|
15
|
+
import { listPluginLifecycleProfiles } from "./plugin-lifecycle-profile-registry.js";
|
|
15
16
|
import { listPackHelpers } from "./pack-helper-registry.js";
|
|
16
17
|
import { listTaskRoutingHints } from "./task-routing-hint-registry.js";
|
|
17
18
|
import { listRegistrationHints } from "./registration-hint-registry.js";
|
|
@@ -45,6 +46,7 @@ export var ContributionKind;
|
|
|
45
46
|
ContributionKind["Decision"] = "decision";
|
|
46
47
|
ContributionKind["ContractTemplate"] = "contract-template";
|
|
47
48
|
ContributionKind["MigrationProfile"] = "migration-profile";
|
|
49
|
+
ContributionKind["PluginLifecycleProfile"] = "plugin-lifecycle-profile";
|
|
48
50
|
ContributionKind["ContextTest"] = "context-test";
|
|
49
51
|
ContributionKind["AgentTest"] = "agent-test";
|
|
50
52
|
ContributionKind["Helper"] = "helper";
|
|
@@ -82,6 +84,7 @@ const KIND_TO_SLOT = {
|
|
|
82
84
|
[ContributionKind.Decision]: 'decisionFiles',
|
|
83
85
|
[ContributionKind.ContractTemplate]: 'contractTemplateFiles',
|
|
84
86
|
[ContributionKind.MigrationProfile]: 'migrationProfileFiles',
|
|
87
|
+
[ContributionKind.PluginLifecycleProfile]: 'pluginLifecycleProfileFiles',
|
|
85
88
|
[ContributionKind.ContextTest]: 'contextTestFiles',
|
|
86
89
|
[ContributionKind.AgentTest]: 'agentTestFiles',
|
|
87
90
|
[ContributionKind.Helper]: 'helperFiles',
|
|
@@ -140,6 +143,10 @@ function buildContribFileEntries(inspection) {
|
|
|
140
143
|
{ kind: ContributionKind.FeedbackRule, relCandidates: ['feedback-rules.ts'] },
|
|
141
144
|
{ kind: ContributionKind.Decision, relCandidates: ['decisions.ts'] },
|
|
142
145
|
{ kind: ContributionKind.AgentTest, relCandidates: ['agent-tests.ts'] },
|
|
146
|
+
{
|
|
147
|
+
kind: ContributionKind.PluginLifecycleProfile,
|
|
148
|
+
relCandidates: ['plugin-lifecycle-profiles.ts'],
|
|
149
|
+
},
|
|
143
150
|
{ kind: ContributionKind.ContractTemplate, relCandidates: ['contract-templates.ts'] },
|
|
144
151
|
{ kind: ContributionKind.MigrationProfile, relCandidates: ['migration-profiles.ts'] },
|
|
145
152
|
{ kind: ContributionKind.Helper, relCandidates: ['helpers.ts'] },
|
|
@@ -288,6 +295,23 @@ async function loadStructuralEntries(inspection) {
|
|
|
288
295
|
catch {
|
|
289
296
|
// ignore
|
|
290
297
|
}
|
|
298
|
+
// Plugin-lifecycle profiles — same problem (sub-object ids).
|
|
299
|
+
try {
|
|
300
|
+
const entries = await listPluginLifecycleProfiles(inspection);
|
|
301
|
+
for (const e of entries) {
|
|
302
|
+
record(ContributionKind.PluginLifecycleProfile, e.sourceFile, {
|
|
303
|
+
id: e.profile.id,
|
|
304
|
+
...(e.profile.title ? { title: e.profile.title } : {}),
|
|
305
|
+
source: e.source === 'pack'
|
|
306
|
+
? ContributionSource.Pack
|
|
307
|
+
: ContributionSource.Local,
|
|
308
|
+
...(e.packageName ? { packageName: e.packageName } : {}),
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
// ignore
|
|
314
|
+
}
|
|
291
315
|
// Conventions, helpers, routing hints, registration hints, contract templates,
|
|
292
316
|
// migration profiles — all loader-backed today.
|
|
293
317
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-helper-registry.d.ts","sourceRoot":"","sources":["../src/pack-helper-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pack-helper-registry.d.ts","sourceRoot":"","sources":["../src/pack-helper-registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4BD,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CAAC,CAoF9F;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAGtC;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGlC;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAG5C"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
1
9
|
/**
|
|
2
10
|
* Pack helper registry. Loads pack-contributed and locally-configured
|
|
3
11
|
* helpers via `helperFiles[]`. Engine still ships its profile-driven generic
|
|
@@ -5,8 +13,8 @@
|
|
|
5
13
|
*/
|
|
6
14
|
import { existsSync } from 'node:fs';
|
|
7
15
|
import * as nodePath from 'node:path';
|
|
16
|
+
import { pathToFileURL } from 'node:url';
|
|
8
17
|
import { validatePackHelper } from '@shrkcrft/plugin-api';
|
|
9
|
-
import { importModuleViaLoader } from '@shrkcrft/core';
|
|
10
18
|
export const PACK_HELPER_REGISTRY_SCHEMA = 'sharkcraft.pack-helper-registry/v1';
|
|
11
19
|
export var PackHelperSource;
|
|
12
20
|
(function (PackHelperSource) {
|
|
@@ -15,7 +23,7 @@ export var PackHelperSource;
|
|
|
15
23
|
PackHelperSource["Fixture"] = "fixture";
|
|
16
24
|
})(PackHelperSource || (PackHelperSource = {}));
|
|
17
25
|
async function importDefault(file) {
|
|
18
|
-
const mod = (await
|
|
26
|
+
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
|
|
19
27
|
if (Array.isArray(mod.default))
|
|
20
28
|
return mod.default;
|
|
21
29
|
if (mod.default && typeof mod.default === 'object')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-release-check.d.ts","sourceRoot":"","sources":["../src/pack-release-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pack-release-check.d.ts","sourceRoot":"","sources":["../src/pack-release-check.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;CACjB;AA6ED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgLtF"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
1
9
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
10
|
import * as nodePath from 'node:path';
|
|
3
11
|
import { validatePackManifest } from '@shrkcrft/plugin-api';
|
|
4
|
-
import { importModuleViaLoader } from '@shrkcrft/core';
|
|
5
12
|
export const PACK_RELEASE_CHECK_SCHEMA = 'sharkcraft.pack-release-check/v1';
|
|
6
13
|
function findManifest(packPath) {
|
|
7
14
|
const pkgFile = nodePath.join(packPath, 'package.json');
|
|
@@ -26,7 +33,7 @@ async function loadManifest(file) {
|
|
|
26
33
|
return JSON.parse(readFileSync(file, 'utf8'));
|
|
27
34
|
}
|
|
28
35
|
const { pathToFileURL } = await import('node:url');
|
|
29
|
-
const mod = (await
|
|
36
|
+
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
|
|
30
37
|
return mod.default ?? mod.manifest ?? null;
|
|
31
38
|
}
|
|
32
39
|
catch {
|
|
@@ -199,7 +206,7 @@ export async function runPackReleaseCheck(packPath) {
|
|
|
199
206
|
if (/\.(ts|js|mjs|cjs)$/.test(rel)) {
|
|
200
207
|
try {
|
|
201
208
|
const { pathToFileURL } = await import('node:url');
|
|
202
|
-
await
|
|
209
|
+
await import(__rewriteRelativeImportExtension(pathToFileURL(full).href));
|
|
203
210
|
}
|
|
204
211
|
catch (e) {
|
|
205
212
|
const message = e.message;
|
|
@@ -228,7 +235,7 @@ export async function runPackReleaseCheck(packPath) {
|
|
|
228
235
|
findings.push({
|
|
229
236
|
code: 'unsigned-manifest',
|
|
230
237
|
severity: 'warning',
|
|
231
|
-
message: 'Manifest has no HMAC signature.
|
|
238
|
+
message: 'Manifest has no HMAC signature. Adopters who run `shrk packs verify` will see signature status "missing-signature".',
|
|
232
239
|
suggestedFix: 'Run `shrk packs sign <manifest.ts> --output ...signed.json` with SHARKCRAFT_PACK_SECRET set.',
|
|
233
240
|
suggestedCommand: 'shrk packs sign ' + manifestFile + ' --verify-after-sign',
|
|
234
241
|
file: manifestFile,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-signature-status.d.ts","sourceRoot":"","sources":["../src/pack-signature-status.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,oBAAY,uBAAuB;IACjC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,4BAA4B,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,sEAAsE;QACtE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;
|
|
1
|
+
{"version":3,"file":"pack-signature-status.d.ts","sourceRoot":"","sources":["../src/pack-signature-status.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,oBAAY,uBAAuB;IACjC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,4BAA4B,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,sEAAsE;QACtE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAgCD,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,qBAAqB,GAChC,0BAA0B,CA6F5B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GACjC,OAAO,GACP,UAAU,GACV,OAAO,GACP,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,kCAAkC;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kCAAuC,GAC/C,2BAA2B,CA6D7B"}
|
|
@@ -6,10 +6,16 @@
|
|
|
6
6
|
* and reports which symbols the pack uses that the consumer's plugin-api
|
|
7
7
|
* does not export.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Default mode (`'ts'`) walks ESM exports with the TypeScript compiler
|
|
10
|
+
* API — multi-line export blocks, multi-declarator `export const`,
|
|
11
|
+
* `export type { … }`, and transitive `export * from` re-exports are
|
|
12
|
+
* resolved correctly. CJS bundles (`Object.defineProperty(exports, 'X')`,
|
|
13
|
+
* `exports.X = …`) still use the regex scanner, since those shapes don't
|
|
14
|
+
* surface as `ExportDeclaration` nodes in the AST.
|
|
15
|
+
*
|
|
16
|
+
* `mode: 'fast'` falls back to the legacy regex-only scanner — useful
|
|
17
|
+
* when the typescript module can't be loaded or when speed matters more
|
|
18
|
+
* than completeness.
|
|
13
19
|
*/
|
|
14
20
|
export declare const PACK_SYMBOL_COMPAT_SCHEMA = "sharkcraft.pack-symbol-compat/v1";
|
|
15
21
|
export interface IPluginApiImport {
|
|
@@ -50,11 +56,18 @@ export interface IPackSymbolCompatReport {
|
|
|
50
56
|
/** Files inspected when collecting available symbols. */
|
|
51
57
|
filesInspected: readonly string[];
|
|
52
58
|
}
|
|
59
|
+
export type PackSymbolCompatMode = 'ts' | 'fast';
|
|
53
60
|
export interface IPackSymbolCompatInput {
|
|
54
61
|
packPath: string;
|
|
55
62
|
consumerRoot?: string | null;
|
|
56
63
|
/** Scan dist/*.js patterns even when TS source is present. */
|
|
57
64
|
distAware?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* `'ts'` (default) walks ESM exports with the TypeScript compiler API and
|
|
67
|
+
* follows `export * from` chains transitively. `'fast'` uses the legacy
|
|
68
|
+
* regex-only scanner.
|
|
69
|
+
*/
|
|
70
|
+
mode?: PackSymbolCompatMode;
|
|
58
71
|
}
|
|
59
72
|
export declare function checkPackSymbolCompat(input: IPackSymbolCompatInput): IPackSymbolCompatReport;
|
|
60
73
|
//# sourceMappingURL=pack-symbol-compat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-symbol-compat.d.ts","sourceRoot":"","sources":["../src/pack-symbol-compat.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pack-symbol-compat.d.ts","sourceRoot":"","sources":["../src/pack-symbol-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAC9F,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,uBAAuB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,WAAW,CAAC;IACtG,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC9C,6EAA6E;IAC7E,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+BAA+B;IAC/B,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,uCAAuC;IACvC,UAAU,EAAE,oBAAoB,CAAC;IACjC,qCAAqC;IACrC,UAAU,EAAE,oBAAoB,CAAC;IACjC,yDAAyD;IACzD,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAgWD,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAUD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,CAsHzB"}
|
|
@@ -6,13 +6,20 @@
|
|
|
6
6
|
* and reports which symbols the pack uses that the consumer's plugin-api
|
|
7
7
|
* does not export.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Default mode (`'ts'`) walks ESM exports with the TypeScript compiler
|
|
10
|
+
* API — multi-line export blocks, multi-declarator `export const`,
|
|
11
|
+
* `export type { … }`, and transitive `export * from` re-exports are
|
|
12
|
+
* resolved correctly. CJS bundles (`Object.defineProperty(exports, 'X')`,
|
|
13
|
+
* `exports.X = …`) still use the regex scanner, since those shapes don't
|
|
14
|
+
* surface as `ExportDeclaration` nodes in the AST.
|
|
15
|
+
*
|
|
16
|
+
* `mode: 'fast'` falls back to the legacy regex-only scanner — useful
|
|
17
|
+
* when the typescript module can't be loaded or when speed matters more
|
|
18
|
+
* than completeness.
|
|
13
19
|
*/
|
|
14
20
|
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
15
21
|
import * as nodePath from 'node:path';
|
|
22
|
+
import * as ts from 'typescript';
|
|
16
23
|
export const PACK_SYMBOL_COMPAT_SCHEMA = 'sharkcraft.pack-symbol-compat/v1';
|
|
17
24
|
const NAMED_IMPORT_RE = /^\s*import\s*(?:type\s+)?\{([^}]+)\}\s*from\s*['"]@shrkcrft\/plugin-api['"]/;
|
|
18
25
|
const DEFAULT_IMPORT_RE = /^\s*import\s+(\w+)\s*(?:,\s*\{([^}]+)\})?\s*from\s*['"]@shrkcrft\/plugin-api['"]/;
|
|
@@ -193,6 +200,112 @@ const EXPORT_NAMED_RE = /^\s*export\s+(?:async\s+)?(?:declare\s+)?(?:function|cl
|
|
|
193
200
|
const EXPORT_BLOCK_RE = /^\s*export\s*\{([^}]+)\}/;
|
|
194
201
|
const RE_EXPORT_RE = /^\s*export\s*\*\s+from\s*['"]([^'"]+)['"]/;
|
|
195
202
|
const RE_EXPORT_NAMED_RE = /^\s*export\s*\{([^}]+)\}\s*from\s*['"]([^'"]+)['"]/;
|
|
203
|
+
function scriptKindFor(file) {
|
|
204
|
+
if (file.endsWith('.tsx'))
|
|
205
|
+
return ts.ScriptKind.TSX;
|
|
206
|
+
if (file.endsWith('.jsx'))
|
|
207
|
+
return ts.ScriptKind.JSX;
|
|
208
|
+
if (file.endsWith('.js') || file.endsWith('.mjs') || file.endsWith('.cjs'))
|
|
209
|
+
return ts.ScriptKind.JS;
|
|
210
|
+
return ts.ScriptKind.TS;
|
|
211
|
+
}
|
|
212
|
+
function hasExportModifier(node) {
|
|
213
|
+
const modifiers = (ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined) ?? [];
|
|
214
|
+
return modifiers.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
|
|
215
|
+
}
|
|
216
|
+
function collectBindingNames(name, out) {
|
|
217
|
+
if (ts.isIdentifier(name)) {
|
|
218
|
+
out.add(name.text);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {
|
|
222
|
+
for (const element of name.elements) {
|
|
223
|
+
if (ts.isBindingElement(element)) {
|
|
224
|
+
collectBindingNames(element.name, out);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Walk ESM exports of `file` using the TypeScript compiler API, following
|
|
231
|
+
* `export * from` re-exports transitively. CJS-specific shapes are NOT
|
|
232
|
+
* resolved here — call {@link collectJsExports} alongside for those.
|
|
233
|
+
*
|
|
234
|
+
* Returns an empty set on parse failure so callers can union with the
|
|
235
|
+
* regex fallback.
|
|
236
|
+
*/
|
|
237
|
+
function collectExportsTs(file, visited) {
|
|
238
|
+
if (visited.has(file))
|
|
239
|
+
return new Set();
|
|
240
|
+
visited.add(file);
|
|
241
|
+
const out = new Set();
|
|
242
|
+
let body;
|
|
243
|
+
try {
|
|
244
|
+
body = readFileSync(file, 'utf8');
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return out;
|
|
248
|
+
}
|
|
249
|
+
let source;
|
|
250
|
+
try {
|
|
251
|
+
source = ts.createSourceFile(file, body, ts.ScriptTarget.Latest, /*setParentNodes*/ false, scriptKindFor(file));
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return out;
|
|
255
|
+
}
|
|
256
|
+
for (const stmt of source.statements) {
|
|
257
|
+
if (ts.isExportDeclaration(stmt)) {
|
|
258
|
+
const moduleSpec = stmt.moduleSpecifier && ts.isStringLiteral(stmt.moduleSpecifier) ? stmt.moduleSpecifier.text : null;
|
|
259
|
+
if (!stmt.exportClause) {
|
|
260
|
+
// `export * from '...'` — recurse through the barrel.
|
|
261
|
+
if (moduleSpec) {
|
|
262
|
+
const target = resolveRelative(file, moduleSpec);
|
|
263
|
+
if (target) {
|
|
264
|
+
for (const sym of collectExportsTs(target, visited))
|
|
265
|
+
out.add(sym);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
if (ts.isNamedExports(stmt.exportClause)) {
|
|
271
|
+
for (const spec of stmt.exportClause.elements) {
|
|
272
|
+
out.add(spec.name.text);
|
|
273
|
+
}
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
if (ts.isNamespaceExport(stmt.exportClause)) {
|
|
277
|
+
// `export * as ns from '...'` — the namespace itself is the export.
|
|
278
|
+
out.add(stmt.exportClause.name.text);
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
else if (ts.isFunctionDeclaration(stmt) && stmt.name && hasExportModifier(stmt)) {
|
|
283
|
+
out.add(stmt.name.text);
|
|
284
|
+
}
|
|
285
|
+
else if (ts.isClassDeclaration(stmt) && stmt.name && hasExportModifier(stmt)) {
|
|
286
|
+
out.add(stmt.name.text);
|
|
287
|
+
}
|
|
288
|
+
else if (ts.isInterfaceDeclaration(stmt) && hasExportModifier(stmt)) {
|
|
289
|
+
out.add(stmt.name.text);
|
|
290
|
+
}
|
|
291
|
+
else if (ts.isTypeAliasDeclaration(stmt) && hasExportModifier(stmt)) {
|
|
292
|
+
out.add(stmt.name.text);
|
|
293
|
+
}
|
|
294
|
+
else if (ts.isEnumDeclaration(stmt) && hasExportModifier(stmt)) {
|
|
295
|
+
out.add(stmt.name.text);
|
|
296
|
+
}
|
|
297
|
+
else if (ts.isModuleDeclaration(stmt) && stmt.name && hasExportModifier(stmt)) {
|
|
298
|
+
if (ts.isIdentifier(stmt.name))
|
|
299
|
+
out.add(stmt.name.text);
|
|
300
|
+
}
|
|
301
|
+
else if (ts.isVariableStatement(stmt) && hasExportModifier(stmt)) {
|
|
302
|
+
for (const decl of stmt.declarationList.declarations) {
|
|
303
|
+
collectBindingNames(decl.name, out);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return out;
|
|
308
|
+
}
|
|
196
309
|
function collectExports(file, visited) {
|
|
197
310
|
if (visited.has(file))
|
|
198
311
|
return new Set();
|
|
@@ -246,18 +359,33 @@ function resolveRelative(fromFile, rel) {
|
|
|
246
359
|
return null;
|
|
247
360
|
const base = nodePath.resolve(nodePath.dirname(fromFile), rel);
|
|
248
361
|
const candidates = [
|
|
362
|
+
base, // Verbatim with extension (e.g. './foo.ts' under NodeNext).
|
|
249
363
|
base + '.ts',
|
|
250
364
|
base + '.tsx',
|
|
365
|
+
base + '.d.ts',
|
|
366
|
+
base + '.mts',
|
|
367
|
+
base + '.cts',
|
|
251
368
|
base + '.js',
|
|
252
369
|
base + '.mjs',
|
|
253
370
|
base + '.cjs',
|
|
254
371
|
nodePath.join(base, 'index.ts'),
|
|
255
372
|
nodePath.join(base, 'index.tsx'),
|
|
373
|
+
nodePath.join(base, 'index.d.ts'),
|
|
374
|
+
nodePath.join(base, 'index.mts'),
|
|
256
375
|
nodePath.join(base, 'index.js'),
|
|
376
|
+
nodePath.join(base, 'index.mjs'),
|
|
257
377
|
];
|
|
258
|
-
for (const c of candidates)
|
|
259
|
-
if (existsSync(c))
|
|
260
|
-
|
|
378
|
+
for (const c of candidates) {
|
|
379
|
+
if (existsSync(c)) {
|
|
380
|
+
try {
|
|
381
|
+
if (statSync(c).isFile())
|
|
382
|
+
return c;
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
continue;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
261
389
|
return null;
|
|
262
390
|
}
|
|
263
391
|
function confidenceFor(mode, count) {
|
|
@@ -278,9 +406,25 @@ export function checkPackSymbolCompat(input) {
|
|
|
278
406
|
const filesInspected = [];
|
|
279
407
|
let availableSet = new Set();
|
|
280
408
|
let usedMode = resolved.sourceMode;
|
|
409
|
+
const useTs = (input.mode ?? 'ts') === 'ts';
|
|
281
410
|
if (resolved.source.length > 0) {
|
|
282
411
|
if (resolved.sourceMode === 'dist-js') {
|
|
412
|
+
// CJS shapes only show up in the regex scanner; ESM shapes show up
|
|
413
|
+
// in either. Union the two so a bundle that mixes both is covered.
|
|
283
414
|
availableSet = collectJsExports(resolved.source);
|
|
415
|
+
if (useTs) {
|
|
416
|
+
for (const sym of collectExportsTs(resolved.source, new Set()))
|
|
417
|
+
availableSet.add(sym);
|
|
418
|
+
}
|
|
419
|
+
filesInspected.push(resolved.source);
|
|
420
|
+
}
|
|
421
|
+
else if (useTs) {
|
|
422
|
+
availableSet = collectExportsTs(resolved.source, new Set());
|
|
423
|
+
// Fallback union — if the TS walker returns nothing (parse failure),
|
|
424
|
+
// we still want a best-effort symbol list from the regex scanner.
|
|
425
|
+
if (availableSet.size === 0) {
|
|
426
|
+
availableSet = collectExports(resolved.source, new Set());
|
|
427
|
+
}
|
|
284
428
|
filesInspected.push(resolved.source);
|
|
285
429
|
}
|
|
286
430
|
else {
|
|
@@ -299,6 +443,10 @@ export function checkPackSymbolCompat(input) {
|
|
|
299
443
|
const full = nodePath.join(distDir, entry);
|
|
300
444
|
for (const s of collectJsExports(full))
|
|
301
445
|
availableSet.add(s);
|
|
446
|
+
if (useTs) {
|
|
447
|
+
for (const s of collectExportsTs(full, new Set()))
|
|
448
|
+
availableSet.add(s);
|
|
449
|
+
}
|
|
302
450
|
filesInspected.push(full);
|
|
303
451
|
}
|
|
304
452
|
if (resolved.sourceMode === 'declaration')
|
package/dist/pack-test-runner.js
CHANGED
|
@@ -13,11 +13,19 @@
|
|
|
13
13
|
* `mustNotIncludeIds`, optionally capping the token budget.
|
|
14
14
|
* 4. Emits a structured diagnostic report.
|
|
15
15
|
*/
|
|
16
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
17
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
18
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
19
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return path;
|
|
23
|
+
};
|
|
16
24
|
import { existsSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
17
25
|
import { join } from 'node:path';
|
|
26
|
+
import { pathToFileURL } from 'node:url';
|
|
18
27
|
import { inspectSharkcraft } from "./sharkcraft-inspector.js";
|
|
19
28
|
import { buildTaskPacket } from "./task-packet.js";
|
|
20
|
-
import { importModuleViaLoader } from '@shrkcrft/core';
|
|
21
29
|
export function definePackTest(t) {
|
|
22
30
|
return t;
|
|
23
31
|
}
|
|
@@ -35,7 +43,7 @@ function findTestsFile(packPath) {
|
|
|
35
43
|
return null;
|
|
36
44
|
}
|
|
37
45
|
async function loadTestCases(file) {
|
|
38
|
-
const mod = (await
|
|
46
|
+
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
|
|
39
47
|
const list = mod.default ?? mod.tests ?? [];
|
|
40
48
|
return [...list];
|
|
41
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-simulation.d.ts","sourceRoot":"","sources":["../src/plan-simulation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan-simulation.d.ts","sourceRoot":"","sources":["../src/plan-simulation.ts"],"names":[],"mappings":"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"}
|
package/dist/plan-simulation.js
CHANGED
|
@@ -318,9 +318,26 @@ export async function simulatePlan(inspection, planPath, options = {}) {
|
|
|
318
318
|
relativePath: c.relativePath,
|
|
319
319
|
sizeBytes: Number(c.sizeBytes ?? 0),
|
|
320
320
|
}));
|
|
321
|
-
// Marker-driven detection.
|
|
322
|
-
//
|
|
323
|
-
|
|
321
|
+
// Marker-driven detection. Project-specific markers identify pack-owned regions.
|
|
322
|
+
// Markers come from registered lifecycle profiles. The engine ships only
|
|
323
|
+
// generic naming conventions.
|
|
324
|
+
const baseKeyTableMarkers = ['PluginKey', 'pluginKeys'];
|
|
325
|
+
const profileKeyMarkers = [];
|
|
326
|
+
try {
|
|
327
|
+
const { listPluginLifecycleProfiles } = await import("./plugin-lifecycle-profile-registry.js");
|
|
328
|
+
const profiles = await listPluginLifecycleProfiles(inspection);
|
|
329
|
+
for (const entry of profiles) {
|
|
330
|
+
if (entry.profile.keyTable?.path) {
|
|
331
|
+
const base = entry.profile.keyTable.path.split('/').pop()?.replace(/\.\w+$/, '');
|
|
332
|
+
if (base)
|
|
333
|
+
profileKeyMarkers.push(base);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
// best-effort
|
|
339
|
+
}
|
|
340
|
+
const KEY_TABLE_MARKERS = [...baseKeyTableMarkers, ...profileKeyMarkers];
|
|
324
341
|
const EVENT_REGISTRY_MARKERS = ['EventRegistry', 'EVENTS', 'eventRegistry', 'events.ts'];
|
|
325
342
|
const TOKEN_REGISTRY_MARKERS = ['TokenRegistry', 'TOKENS', 'tokenRegistry', 'tokens.ts'];
|
|
326
343
|
const maxDiffLines = options.maxDiffLines ?? 80;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playbook-registry.d.ts","sourceRoot":"","sources":["../src/playbook-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playbook-registry.d.ts","sourceRoot":"","sources":["../src/playbook-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmCD,wBAAsB,aAAa,CACjC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAiD/B;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,SAAS,SAAS,EAAE,CAGrF;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,CAWlE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,IAAI,EAAE,MAAM,GACX,SAAS,uBAAuB,EAAE,CA+BpC"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
1
9
|
import { existsSync, readFileSync } from 'node:fs';
|
|
2
10
|
import * as nodePath from 'node:path';
|
|
3
|
-
import {
|
|
11
|
+
import { pathToFileURL } from 'node:url';
|
|
4
12
|
export const PLAYBOOK_REGISTRY_SCHEMA = 'sharkcraft.playbook-registry/v1';
|
|
5
13
|
const CACHE = new Map();
|
|
6
14
|
async function importDefault(file) {
|
|
7
|
-
const mod = (await
|
|
15
|
+
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
|
|
8
16
|
if (Array.isArray(mod.default))
|
|
9
17
|
return mod.default;
|
|
10
18
|
if (mod.default && typeof mod.default === 'object')
|