@goodbones/cli 0.1.0-beta.16 → 0.1.0-beta.18

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 (39) hide show
  1. package/build/dts/campaigns/host.d.ts +51 -0
  2. package/build/dts/campaigns/host.d.ts.map +1 -0
  3. package/build/dts/campaigns/live.d.ts +3 -0
  4. package/build/dts/campaigns/live.d.ts.map +1 -0
  5. package/build/dts/campaigns/none.d.ts +7 -0
  6. package/build/dts/campaigns/none.d.ts.map +1 -0
  7. package/build/dts/campaigns/verbs.d.ts +6 -0
  8. package/build/dts/campaigns/verbs.d.ts.map +1 -0
  9. package/build/dts/config-loader.d.ts +7 -5
  10. package/build/dts/config-loader.d.ts.map +1 -1
  11. package/build/dts/output.d.ts +9 -0
  12. package/build/dts/output.d.ts.map +1 -0
  13. package/build/dts/run.d.ts +3 -18
  14. package/build/dts/run.d.ts.map +1 -1
  15. package/build/esm/campaigns/host.js +2 -0
  16. package/build/esm/campaigns/host.js.map +1 -0
  17. package/build/esm/campaigns/live.js +106 -0
  18. package/build/esm/campaigns/live.js.map +1 -0
  19. package/build/esm/campaigns/none.js +34 -0
  20. package/build/esm/campaigns/none.js.map +1 -0
  21. package/build/esm/campaigns/verbs.js +489 -0
  22. package/build/esm/campaigns/verbs.js.map +1 -0
  23. package/build/esm/config-loader.js +40 -25
  24. package/build/esm/config-loader.js.map +1 -1
  25. package/build/esm/infer.js +3 -3
  26. package/build/esm/infer.js.map +1 -1
  27. package/build/esm/output.js +8 -0
  28. package/build/esm/output.js.map +1 -0
  29. package/build/esm/run.js +39 -555
  30. package/build/esm/run.js.map +1 -1
  31. package/package.json +18 -6
  32. package/src/campaigns/host.ts +120 -0
  33. package/src/campaigns/live.ts +136 -0
  34. package/src/campaigns/none.ts +47 -0
  35. package/src/campaigns/verbs.ts +620 -0
  36. package/src/config-loader.ts +41 -26
  37. package/src/infer.ts +3 -3
  38. package/src/output.ts +18 -0
  39. package/src/run.ts +56 -726
@@ -0,0 +1,51 @@
1
+ import type { CampaignEvaluation, CampaignReport } from "@goodbones/campaigns";
2
+ import type { LoadedPolicy as CorePolicy, PolicyExtension, Snapshot, SourceFacts, UninstalledExtension, Violation } from "@goodbones/core";
3
+ import type * as Effect from "effect/Effect";
4
+ import type { CliFailure } from "../output.js";
5
+ export type { CampaignEvaluation, CampaignReport } from "@goodbones/campaigns";
6
+ export type LoadedPolicy = CorePolicy & {
7
+ readonly campaigns: CampaignsHost;
8
+ };
9
+ export type CampaignHit = {
10
+ readonly violation: Violation;
11
+ readonly objective: string;
12
+ readonly sector: string;
13
+ readonly entry: string;
14
+ readonly ledgered: boolean;
15
+ };
16
+ export type Readers = {
17
+ readonly textOf: (file: string) => string;
18
+ readonly factsOf: (file: string) => SourceFacts;
19
+ };
20
+ export type VerbContext = {
21
+ readonly policy: LoadedPolicy;
22
+ readonly defaultRoots: ReadonlyArray<string>;
23
+ readonly argv: ReadonlyArray<string>;
24
+ readonly evaluate: (roots: ReadonlyArray<string>) => ReadonlyArray<CampaignEvaluation>;
25
+ readonly reload: (repoRoot: string) => Promise<CorePolicy>;
26
+ readonly manifestPath: string;
27
+ };
28
+ export type CampaignsHost = {
29
+ readonly widenedExtensions: (policy: CorePolicy) => ReadonlyArray<string>;
30
+ readonly readReports: (policy: CorePolicy) => Promise<void>;
31
+ readonly evaluate: (policy: CorePolicy, roots: ReadonlyArray<string>, walked: ReadonlyArray<string>, readers: Readers) => ReadonlyArray<CampaignEvaluation>;
32
+ readonly hitsOf: (policy: CorePolicy, evaluations: ReadonlyArray<CampaignEvaluation>) => ReadonlyArray<CampaignHit>;
33
+ readonly reportsOf: (policy: CorePolicy, evaluations: ReadonlyArray<CampaignEvaluation>) => ReadonlyArray<CampaignReport>;
34
+ readonly failuresOf: (reports: ReadonlyArray<CampaignReport>) => ReadonlyArray<string>;
35
+ readonly renderReports: (reports: ReadonlyArray<CampaignReport>, hits: ReadonlyArray<CampaignHit>) => ReadonlyArray<string>;
36
+ readonly snapshotOf: (policy: CorePolicy, evaluations: ReadonlyArray<CampaignEvaluation>) => Snapshot["campaigns"];
37
+ readonly renderRows: (campaigns: Snapshot["campaigns"]) => ReadonlyArray<string>;
38
+ readonly explainLines: (policy: CorePolicy, file: string, evaluate: () => ReadonlyArray<CampaignEvaluation>) => ReadonlyArray<string>;
39
+ readonly campaigns: (context: VerbContext) => Effect.Effect<void, CliFailure>;
40
+ readonly objectives: (context: VerbContext) => Effect.Effect<void, CliFailure>;
41
+ };
42
+ export type Composition = {
43
+ readonly manifest: unknown;
44
+ readonly extensions: ReadonlyArray<PolicyExtension>;
45
+ readonly uninstalled: ReadonlyArray<UninstalledExtension>;
46
+ };
47
+ export type CampaignsFamily = {
48
+ readonly host: CampaignsHost;
49
+ readonly compose: (repoRoot: string, configPath: string | null, manifest: unknown) => Promise<Composition>;
50
+ };
51
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../src/campaigns/host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CampaignsFamily } from "./host.js";
2
+ export declare const liveCampaigns: CampaignsFamily;
3
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/campaigns/live.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,WAAW,CAAC;AA6FhE,eAAO,MAAM,aAAa,EAAE,eAiB3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { UninstalledExtension } from "@goodbones/core";
2
+ import type { CampaignsFamily, CampaignsHost } from "./host.js";
3
+ export declare const CAMPAIGNS_PACKAGE = "@goodbones/campaigns";
4
+ export declare const CAMPAIGNS_UNINSTALLED: UninstalledExtension;
5
+ export declare const noCampaigns: CampaignsHost;
6
+ export declare const campaignsNotInstalled: CampaignsFamily;
7
+ //# sourceMappingURL=none.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"none.d.ts","sourceRoot":"","sources":["../../../src/campaigns/none.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAKhE,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,eAAO,MAAM,qBAAqB,EAAE,oBAGnC,CAAC;AAaF,eAAO,MAAM,WAAW,EAAE,aAazB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAInC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { type CliFailure } from "../output.js";
3
+ import type { VerbContext } from "./host.js";
4
+ export declare const objectives: (context: VerbContext) => Effect.Effect<void, CliFailure>;
5
+ export declare const campaigns: (context: VerbContext) => Effect.Effect<void, CliFailure>;
6
+ //# sourceMappingURL=verbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbs.d.ts","sourceRoot":"","sources":["../../../src/campaigns/verbs.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,WAAW,CAAC;AA2J3D,eAAO,MAAM,UAAU,YAAa,WAAW,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CA0N5E,CAAC;AAEL,eAAO,MAAM,SAAS,YAAa,WAAW,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAyN3E,CAAC"}
@@ -1,9 +1,11 @@
1
- import { type ConfigInvalid, type Language, type LoadedPolicy, type PatternInvalid } from "@goodbones/core";
1
+ import { type ConfigInvalid, type Language, type PatternInvalid } from "@goodbones/core";
2
2
  import * as Result from "effect/Result";
3
- export type { LoadedPolicy } from "@goodbones/core";
4
- export declare const hostLanguages: () => ReadonlyArray<Language>;
3
+ import type { CampaignsFamily, LoadedPolicy } from "./campaigns/host.js";
4
+ export type { LoadedPolicy } from "./campaigns/host.js";
5
+ export declare const hostLanguages: () => Promise<ReadonlyArray<Language>>;
6
+ export declare const hostCampaigns: () => Promise<CampaignsFamily>;
5
7
  export declare const hostNow: () => number;
6
8
  export declare const manifestPathOf: (repoRoot: string, configFilename?: string) => string;
7
- export declare const loadPolicyFromFile: (repoRoot: string, configFilename?: string) => Promise<LoadedPolicy>;
8
- export declare const loadPolicyFromManifest: (repoRoot: string, manifest: unknown) => Result.Result<LoadedPolicy, ConfigInvalid | PatternInvalid>;
9
+ export declare const loadPolicyFromFile: (repoRoot: string, configFilename?: string, given?: CampaignsFamily) => Promise<LoadedPolicy>;
10
+ export declare const loadPolicyFromManifest: (repoRoot: string, manifest: unknown) => Promise<Result.Result<LoadedPolicy, ConfigInvalid | PatternInvalid>>;
9
11
  //# sourceMappingURL=config-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/config-loader.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACb,KAAK,YAAY,EAGjB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,eAAO,MAAM,aAAa,QAAO,aAAa,CAAC,QAAQ,CAEtD,CAAC;AAKF,eAAO,MAAM,OAAO,QAAO,MAQ1B,CAAC;AAQF,eAAO,MAAM,cAAc,aAAc,MAAM,mBAAmB,MAAM,KAAG,MAG/B,CAAC;AAE7C,eAAO,MAAM,kBAAkB,aACnB,MAAM,mBACC,MAAM,KACtB,OAAO,CAAC,YAAY,CAkBtB,CAAC;AAMF,eAAO,MAAM,sBAAsB,aACvB,MAAM,YACN,OAAO,KAChB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,GAAG,cAAc,CASzD,CAAC"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,QAAQ,EAGb,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGzE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAGrE,CAAC;AAKF,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,eAAe,CAElB,CAAC;AAK7C,eAAO,MAAM,OAAO,QAAO,MAQ1B,CAAC;AAQF,eAAO,MAAM,cAAc,aAAc,MAAM,mBAAmB,MAAM,KAAG,MAG/B,CAAC;AAI7C,eAAO,MAAM,kBAAkB,aACnB,MAAM,mBACC,MAAM,UACf,eAAe,KACtB,OAAO,CAAC,YAAY,CAkBtB,CAAC;AAMF,eAAO,MAAM,sBAAsB,aACvB,MAAM,YACN,OAAO,KAChB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,GAAG,cAAc,CAAC,CAcrE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import * as Effect from "effect/Effect";
2
+ export type CliFailure = {
3
+ readonly _tag: "CliFailure";
4
+ readonly message: string;
5
+ };
6
+ export declare const fail: (message: string) => CliFailure;
7
+ export declare const report: (lines: ReadonlyArray<string>) => Effect.Effect<void>;
8
+ export declare const count: (n: number, noun: string, plural?: string) => string;
9
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAOxC,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,eAAO,MAAM,IAAI,YAAa,MAAM,KAAG,UAA+C,CAAC;AAEvF,eAAO,MAAM,MAAM,UAAW,aAAa,CAAC,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAGpE,CAAC;AAEL,eAAO,MAAM,KAAK,MAAO,MAAM,QAAQ,MAAM,sBAAwB,MAC1B,CAAC"}
@@ -1,11 +1,9 @@
1
- import { type CampaignEvaluation, type CampaignReport } from "@goodbones/campaigns";
2
1
  import { type ConformanceMeasure, type CoverageFamily, type Graph, type ObservedEdge, type Snapshot, type Violation } from "@goodbones/core";
3
2
  import * as Effect from "effect/Effect";
3
+ import type { CampaignEvaluation, CampaignReport } from "./campaigns/host.js";
4
4
  import { type LoadedPolicy } from "./config-loader.js";
5
- export type CliFailure = {
6
- readonly _tag: "CliFailure";
7
- readonly message: string;
8
- };
5
+ import { type CliFailure } from "./output.js";
6
+ export type { CliFailure } from "./output.js";
9
7
  export type UnresolvedEdge = {
10
8
  readonly file: string;
11
9
  readonly specifier: string;
@@ -77,19 +75,6 @@ export declare const explain: (policy: LoadedPolicy, file: string, roots?: Reado
77
75
  export declare const facts: (policy: LoadedPolicy, file: string, format?: "text" | "json") => Effect.Effect<void, CliFailure>;
78
76
  export declare const init: (repoRoot: string) => Effect.Effect<void, CliFailure>;
79
77
  export declare const migrate: (repoRoot: string, configFilename?: string) => Effect.Effect<void, CliFailure>;
80
- export declare const campaignArgsOf: (argv: ReadonlyArray<string>, ids: ReadonlyArray<string>) => {
81
- readonly subcommand: string | undefined;
82
- readonly args: ReadonlyArray<string>;
83
- readonly roots: ReadonlyArray<string>;
84
- };
85
- export declare const objectiveArgsOf: (argv: ReadonlyArray<string>, ids: ReadonlyArray<string>) => {
86
- readonly subcommand: string | undefined;
87
- readonly target: {
88
- campaign: string;
89
- objective: string | null;
90
- } | null;
91
- readonly roots: ReadonlyArray<string>;
92
- };
93
78
  export declare const objectives: (policy: LoadedPolicy, defaultRoots: ReadonlyArray<string>, argv: ReadonlyArray<string>) => Effect.Effect<void, CliFailure>;
94
79
  export declare const campaigns: (policy: LoadedPolicy, defaultRoots: ReadonlyArray<string>, argv: ReadonlyArray<string>, configFilename?: string) => Effect.Effect<void, CliFailure>;
95
80
  export declare const run: (repoRoot: string, argv: ReadonlyArray<string>, configFilename?: string) => Effect.Effect<void, CliFailure>;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/campaigns/host.ts"],"names":[],"mappings":""}
@@ -0,0 +1,106 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import * as path from "node:path";
3
+ import { campaignFailuresOf, campaignReportsOf, campaignsExtension, campaignsOf, campaignsSelecting, evaluateCampaigns, explainCampaignLines, explainObjective, hitsInWindow, ledgeredFilter, loadCampaignFunctions, makeReportSourceLive, measureFile, renderCampaignReports, renderCampaignRows, reportSpecsOf, snapshotCampaignsOf, valueOfParts, widenedExtensions, } from "@goodbones/campaigns";
4
+ import { campaigns, objectives } from "./verbs.js";
5
+ // The campaigns family as this host runs it, over `@goodbones/campaigns`.
6
+ // The one module that loads the package: the composition root imports it
7
+ // through `importOptional`, so its absence is `none`, not a crash.
8
+ const firstSentence = (message) => `${(message.split(". ")[0] ?? message).replace(/\.$/, "")}.`;
9
+ const host = {
10
+ widenedExtensions,
11
+ readReports: async (policy) => {
12
+ const { campaignRules, reports } = campaignsOf(policy);
13
+ await Promise.all(reportSpecsOf(campaignRules).map((spec) => reports.read?.(spec)));
14
+ },
15
+ evaluate: evaluateCampaigns,
16
+ hitsOf: (policy, evaluations) => {
17
+ const isLedgered = ledgeredFilter(policy, evaluations);
18
+ return evaluations.flatMap((evaluation) => hitsInWindow(evaluation).map((hit) => ({
19
+ violation: hit.violation,
20
+ objective: hit.objective,
21
+ sector: hit.sector,
22
+ entry: hit.entry,
23
+ ledgered: isLedgered(hit),
24
+ })));
25
+ },
26
+ reportsOf: campaignReportsOf,
27
+ failuresOf: campaignFailuresOf,
28
+ renderReports: renderCampaignReports,
29
+ snapshotOf: snapshotCampaignsOf,
30
+ renderRows: renderCampaignRows,
31
+ // Each campaign selecting the file: the sector the file is in, its phase
32
+ // and definedness, the objectives in window that fire on it and the
33
+ // nearest remaining holdouts — which needs the campaign evaluated over its
34
+ // files, since a sector's phase is derived from all of them — then each
35
+ // objective's truth table: one line per leaf term and what it answered
36
+ // here, so a detector that "should fire" and does not shows which term is
37
+ // not saying what its author thinks.
38
+ explainLines: (policy, relative, evaluate) => {
39
+ const selected = campaignsSelecting(campaignsOf(policy).campaignRules, relative);
40
+ if (selected.length === 0)
41
+ return [];
42
+ const evaluations = evaluate();
43
+ return selected.flatMap((rule) => {
44
+ const at = path.join(policy.repoRoot, relative);
45
+ const text = existsSync(at) ? readFileSync(at, "utf8") : "";
46
+ const input = {
47
+ file: relative,
48
+ text,
49
+ facts: policy.extractor.factsOf(relative, text),
50
+ resolver: policy.resolver,
51
+ fileSystem: policy.fileSystem,
52
+ syntax: policy.syntax.parse(relative, text),
53
+ functions: campaignsOf(policy).functions,
54
+ reports: campaignsOf(policy).reports,
55
+ };
56
+ const evaluation = evaluations.find((one) => one.rule.id === rule.id);
57
+ return [
58
+ ...(evaluation === undefined ? [] : explainCampaignLines(policy, evaluation, relative)),
59
+ ...rule.objectives.flatMap((objective) => {
60
+ const measure = objective.measure;
61
+ if (measure !== null) {
62
+ // A scalar: what this file adds to its sector's number.
63
+ if (measure.kind === "command")
64
+ return [];
65
+ const parts = measureFile(measure, input);
66
+ const here = measure.kind === "ratio"
67
+ ? `${String(parts.of)} of ${String(parts.per)} here`
68
+ : `${String(valueOfParts(measure, parts))} here`;
69
+ return [
70
+ ` ${objective.name} — ${firstSentence(objective.intent ?? objective.message)} (measure, ${objective.direction}; ${here})`,
71
+ ];
72
+ }
73
+ const table = explainObjective(objective, input);
74
+ if (table.length === 0)
75
+ return [];
76
+ const fired = table.length > 0 && table.every((line) => line.answer);
77
+ return [
78
+ ` ${objective.name} — ${firstSentence(objective.intent ?? objective.message)} (${objective.holdout}; ${fired ? "fires here" : "no hit"})`,
79
+ ...table.map((line) => ` ${line.answer ? "✓" : "✗"} ${line.term}${line.count === undefined ? "" : ` (${String(line.count)})`}`),
80
+ ];
81
+ }),
82
+ ];
83
+ });
84
+ },
85
+ campaigns,
86
+ objectives,
87
+ };
88
+ export const liveCampaigns = {
89
+ host,
90
+ // The `fn` terms are imported here, before the policy loads: the core
91
+ // receives the functions as a map and touches no module loader. A
92
+ // manifest held as a value has no file for them to resolve against.
93
+ compose: async (repoRoot, configPath, manifest) => {
94
+ const reports = makeReportSourceLive(repoRoot);
95
+ if (configPath === null) {
96
+ return { manifest, extensions: [campaignsExtension({ reports })], uninstalled: [] };
97
+ }
98
+ const loaded = await loadCampaignFunctions(configPath, manifest);
99
+ return {
100
+ manifest: loaded.manifest,
101
+ extensions: [campaignsExtension({ functions: loaded.functions, reports })],
102
+ uninstalled: [],
103
+ };
104
+ },
105
+ };
106
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/campaigns/live.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { fail } from "../output.js";
3
+ // The package the family comes in, and the manifest keys it would claim: a
4
+ // manifest that uses one without it is refused naming the package, rather
5
+ // than as a misspelling.
6
+ export const CAMPAIGNS_PACKAGE = "@goodbones/campaigns";
7
+ export const CAMPAIGNS_UNINSTALLED = {
8
+ manifestKeys: ["campaigns", "ledger"],
9
+ install: CAMPAIGNS_PACKAGE,
10
+ };
11
+ const notInstalled = (verb) => Effect.fail(fail(`\`architecture ${verb}\` needs \`${CAMPAIGNS_PACKAGE}\`, which is not installed. ` +
12
+ `Install it beside @goodbones/cli to run campaigns.`));
13
+ // The family, when it is not installed: there is nothing to evaluate, so every
14
+ // report has no campaigns in it, and the two campaigns commands say what to
15
+ // install.
16
+ export const noCampaigns = {
17
+ widenedExtensions: () => [],
18
+ readReports: () => Promise.resolve(),
19
+ evaluate: () => [],
20
+ hitsOf: () => [],
21
+ reportsOf: () => [],
22
+ failuresOf: () => [],
23
+ renderReports: () => [],
24
+ snapshotOf: () => [],
25
+ renderRows: () => [],
26
+ explainLines: () => [],
27
+ campaigns: () => notInstalled("campaigns"),
28
+ objectives: () => notInstalled("objectives"),
29
+ };
30
+ export const campaignsNotInstalled = {
31
+ host: noCampaigns,
32
+ compose: (_repoRoot, _configPath, manifest) => Promise.resolve({ manifest, extensions: [], uninstalled: [CAMPAIGNS_UNINSTALLED] }),
33
+ };
34
+ //# sourceMappingURL=none.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"none.js","sourceRoot":"","sources":["../../../src/campaigns/none.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,2EAA2E;AAC3E,0EAA0E;AAC1E,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAyB;IACzD,YAAY,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;IACrC,OAAO,EAAE,iBAAiB;CAC3B,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,MAAM,CAAC,IAAI,CACT,IAAI,CACF,kBAAkB,IAAI,cAAc,iBAAiB,8BAA8B;IACjF,oDAAoD,CACvD,CACF,CAAC;AAEJ,+EAA+E;AAC/E,4EAA4E;AAC5E,WAAW;AACX,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,iBAAiB,EAAE,GAAG,EAAE,CAAC,EAAE;IAC3B,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;IACpC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;IAClB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;IAChB,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IACnB,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE;IACpB,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE;IACvB,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE;IACpB,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE;IACpB,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE;IACtB,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC;IAC1C,UAAU,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC;CAC7C,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,CAC5C,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;CACtF,CAAC"}