bingo-stratum 0.2.0
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.md +20 -0
- package/README.md +13 -0
- package/lib/creators/assertNoDuplicateBlocks copy.d.ts +3 -0
- package/lib/creators/assertNoDuplicateBlocks copy.d.ts.map +1 -0
- package/lib/creators/assertNoDuplicateBlocks copy.js +13 -0
- package/lib/creators/assertNoDuplicateBlocks copy.js.map +1 -0
- package/lib/creators/assertNoDuplicateBlocks.d.ts +3 -0
- package/lib/creators/assertNoDuplicateBlocks.d.ts.map +1 -0
- package/lib/creators/assertNoDuplicateBlocks.js +13 -0
- package/lib/creators/assertNoDuplicateBlocks.js.map +1 -0
- package/lib/creators/assertNoPresetOption.d.ts +4 -0
- package/lib/creators/assertNoPresetOption.d.ts.map +1 -0
- package/lib/creators/assertNoPresetOption.js +8 -0
- package/lib/creators/assertNoPresetOption.js.map +1 -0
- package/lib/creators/createBase.d.ts +4 -0
- package/lib/creators/createBase.d.ts.map +1 -0
- package/lib/creators/createBase.e2e.test.d.ts +125 -0
- package/lib/creators/createBase.e2e.test.d.ts.map +1 -0
- package/lib/creators/createBase.e2e.test.js +213 -0
- package/lib/creators/createBase.e2e.test.js.map +1 -0
- package/lib/creators/createBase.js +57 -0
- package/lib/creators/createBase.js.map +1 -0
- package/lib/creators/createBase.test.d.ts +2 -0
- package/lib/creators/createBase.test.d.ts.map +1 -0
- package/lib/creators/createBase.test.js +56 -0
- package/lib/creators/createBase.test.js.map +1 -0
- package/lib/creators/getDefinitionName.d.ts +5 -0
- package/lib/creators/getDefinitionName.d.ts.map +1 -0
- package/lib/creators/getDefinitionName.js +4 -0
- package/lib/creators/getDefinitionName.js.map +1 -0
- package/lib/creators/getName.d.ts +5 -0
- package/lib/creators/getName.d.ts.map +1 -0
- package/lib/creators/getName.js +4 -0
- package/lib/creators/getName.js.map +1 -0
- package/lib/creators/utils.d.ts +4 -0
- package/lib/creators/utils.d.ts.map +1 -0
- package/lib/creators/utils.js +8 -0
- package/lib/creators/utils.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -0
- package/lib/mergers/mergeAddons.d.ts +3 -0
- package/lib/mergers/mergeAddons.d.ts.map +1 -0
- package/lib/mergers/mergeAddons.js +37 -0
- package/lib/mergers/mergeAddons.js.map +1 -0
- package/lib/mergers/mergeAddons.test.d.ts +2 -0
- package/lib/mergers/mergeAddons.test.d.ts.map +1 -0
- package/lib/mergers/mergeAddons.test.js +174 -0
- package/lib/mergers/mergeAddons.test.js.map +1 -0
- package/lib/mergers/mergeAddonsIfUpdated.d.ts +2 -0
- package/lib/mergers/mergeAddonsIfUpdated.d.ts.map +1 -0
- package/lib/mergers/mergeAddonsIfUpdated.js +53 -0
- package/lib/mergers/mergeAddonsIfUpdated.js.map +1 -0
- package/lib/mergers/mergeAddonsIfUpdated.test.d.ts +2 -0
- package/lib/mergers/mergeAddonsIfUpdated.test.d.ts.map +1 -0
- package/lib/mergers/mergeAddonsIfUpdated.test.js +51 -0
- package/lib/mergers/mergeAddonsIfUpdated.test.js.map +1 -0
- package/lib/mergers/mergeBlockCreations.d.ts +9 -0
- package/lib/mergers/mergeBlockCreations.d.ts.map +1 -0
- package/lib/mergers/mergeBlockCreations.js +10 -0
- package/lib/mergers/mergeBlockCreations.js.map +1 -0
- package/lib/predicates/isBase.d.ts +3 -0
- package/lib/predicates/isBase.d.ts.map +1 -0
- package/lib/predicates/isBase.js +10 -0
- package/lib/predicates/isBase.js.map +1 -0
- package/lib/predicates/isBase.test.d.ts +2 -0
- package/lib/predicates/isBase.test.d.ts.map +1 -0
- package/lib/predicates/isBase.test.js +21 -0
- package/lib/predicates/isBase.test.js.map +1 -0
- package/lib/predicates/isPreset.d.ts +3 -0
- package/lib/predicates/isPreset.d.ts.map +1 -0
- package/lib/predicates/isPreset.js +13 -0
- package/lib/predicates/isPreset.js.map +1 -0
- package/lib/predicates/isPreset.test.d.ts +2 -0
- package/lib/predicates/isPreset.test.d.ts.map +1 -0
- package/lib/predicates/isPreset.test.js +25 -0
- package/lib/predicates/isPreset.test.js.map +1 -0
- package/lib/predicates/isPresetAbout.d.ts +3 -0
- package/lib/predicates/isPresetAbout.d.ts.map +1 -0
- package/lib/predicates/isPresetAbout.js +4 -0
- package/lib/predicates/isPresetAbout.js.map +1 -0
- package/lib/predicates/isPresetAbout.test.d.ts +2 -0
- package/lib/predicates/isPresetAbout.test.d.ts.map +1 -0
- package/lib/predicates/isPresetAbout.test.js +16 -0
- package/lib/predicates/isPresetAbout.test.js.map +1 -0
- package/lib/producers/applyBlockModifications.d.ts +4 -0
- package/lib/producers/applyBlockModifications.d.ts.map +1 -0
- package/lib/producers/applyBlockModifications.js +14 -0
- package/lib/producers/applyBlockModifications.js.map +1 -0
- package/lib/producers/applyBlockModifications.test.d.ts +2 -0
- package/lib/producers/applyBlockModifications.test.d.ts.map +1 -0
- package/lib/producers/applyBlockModifications.test.js +42 -0
- package/lib/producers/applyBlockModifications.test.js.map +1 -0
- package/lib/producers/getUpdatedBlockAddons.d.ts +9 -0
- package/lib/producers/getUpdatedBlockAddons.d.ts.map +1 -0
- package/lib/producers/getUpdatedBlockAddons.js +20 -0
- package/lib/producers/getUpdatedBlockAddons.js.map +1 -0
- package/lib/producers/produceBase.d.ts +10 -0
- package/lib/producers/produceBase.d.ts.map +1 -0
- package/lib/producers/produceBase.js +15 -0
- package/lib/producers/produceBase.js.map +1 -0
- package/lib/producers/produceBase.test.d.ts +2 -0
- package/lib/producers/produceBase.test.d.ts.map +1 -0
- package/lib/producers/produceBase.test.js +77 -0
- package/lib/producers/produceBase.test.js.map +1 -0
- package/lib/producers/produceBlock.d.ts +15 -0
- package/lib/producers/produceBlock.d.ts.map +1 -0
- package/lib/producers/produceBlock.js +14 -0
- package/lib/producers/produceBlock.js.map +1 -0
- package/lib/producers/produceBlocks.d.ts +11 -0
- package/lib/producers/produceBlocks.d.ts.map +1 -0
- package/lib/producers/produceBlocks.js +46 -0
- package/lib/producers/produceBlocks.js.map +1 -0
- package/lib/producers/produceBlocks.test.d.ts +2 -0
- package/lib/producers/produceBlocks.test.d.ts.map +1 -0
- package/lib/producers/produceBlocks.test.js +145 -0
- package/lib/producers/produceBlocks.test.js.map +1 -0
- package/lib/producers/producePreset.d.ts +10 -0
- package/lib/producers/producePreset.d.ts.map +1 -0
- package/lib/producers/producePreset.js +20 -0
- package/lib/producers/producePreset.js.map +1 -0
- package/lib/producers/producePreset.test.d.ts +2 -0
- package/lib/producers/producePreset.test.d.ts.map +1 -0
- package/lib/producers/producePreset.test.js +88 -0
- package/lib/producers/producePreset.test.js.map +1 -0
- package/lib/producers/produceStratumTemplate.d.ts +15 -0
- package/lib/producers/produceStratumTemplate.d.ts.map +1 -0
- package/lib/producers/produceStratumTemplate.js +17 -0
- package/lib/producers/produceStratumTemplate.js.map +1 -0
- package/lib/producers/produceStratumTemplate.test.d.ts +2 -0
- package/lib/producers/produceStratumTemplate.test.d.ts.map +1 -0
- package/lib/producers/produceStratumTemplate.test.js +134 -0
- package/lib/producers/produceStratumTemplate.test.js.map +1 -0
- package/lib/producers/produceStratumTemplateFull.d.ts +21 -0
- package/lib/producers/produceStratumTemplateFull.d.ts.map +1 -0
- package/lib/producers/produceStratumTemplateFull.js +28 -0
- package/lib/producers/produceStratumTemplateFull.js.map +1 -0
- package/lib/runners/runBlock.d.ts +17 -0
- package/lib/runners/runBlock.d.ts.map +1 -0
- package/lib/runners/runBlock.js +11 -0
- package/lib/runners/runBlock.js.map +1 -0
- package/lib/runners/runBlock.test.d.ts +2 -0
- package/lib/runners/runBlock.test.d.ts.map +1 -0
- package/lib/runners/runBlock.test.js +136 -0
- package/lib/runners/runBlock.test.js.map +1 -0
- package/lib/types/bases.d.ts +30 -0
- package/lib/types/bases.d.ts.map +1 -0
- package/lib/types/bases.js +2 -0
- package/lib/types/bases.js.map +1 -0
- package/lib/types/blocks.d.ts +51 -0
- package/lib/types/blocks.d.ts.map +1 -0
- package/lib/types/blocks.js +2 -0
- package/lib/types/blocks.js.map +1 -0
- package/lib/types/creations.d.ts +10 -0
- package/lib/types/creations.d.ts.map +1 -0
- package/lib/types/creations.js +2 -0
- package/lib/types/creations.js.map +1 -0
- package/lib/types/presets.d.ts +16 -0
- package/lib/types/presets.d.ts.map +1 -0
- package/lib/types/presets.js +2 -0
- package/lib/types/presets.js.map +1 -0
- package/lib/types/settings.d.ts +9 -0
- package/lib/types/settings.d.ts.map +1 -0
- package/lib/types/settings.js +2 -0
- package/lib/types/settings.js.map +1 -0
- package/lib/types/templates.d.ts +25 -0
- package/lib/types/templates.d.ts.map +1 -0
- package/lib/types/templates.js +2 -0
- package/lib/types/templates.js.map +1 -0
- package/lib/utils.ts/getPresetByName.d.ts +4 -0
- package/lib/utils.ts/getPresetByName.d.ts.map +1 -0
- package/lib/utils.ts/getPresetByName.js +13 -0
- package/lib/utils.ts/getPresetByName.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createBase } from "../creators/createBase.js";
|
|
4
|
+
import { producePreset } from "./producePreset.js";
|
|
5
|
+
const emptyCreation = {
|
|
6
|
+
addons: [],
|
|
7
|
+
files: {},
|
|
8
|
+
requests: [],
|
|
9
|
+
scripts: [],
|
|
10
|
+
suggestions: [],
|
|
11
|
+
};
|
|
12
|
+
const system = {
|
|
13
|
+
fetchers: {
|
|
14
|
+
fetch: vi.fn(),
|
|
15
|
+
octokit: {},
|
|
16
|
+
},
|
|
17
|
+
fs: {
|
|
18
|
+
readDirectory: vi.fn(),
|
|
19
|
+
readFile: vi.fn(),
|
|
20
|
+
writeDirectory: vi.fn(),
|
|
21
|
+
writeFile: vi.fn(),
|
|
22
|
+
},
|
|
23
|
+
runner: vi.fn(),
|
|
24
|
+
};
|
|
25
|
+
describe("producePreset", () => {
|
|
26
|
+
it("passes options to the preset when provided via options", () => {
|
|
27
|
+
const baseWithOption = createBase({
|
|
28
|
+
options: {
|
|
29
|
+
value: z.string(),
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
const blockUsingOption = baseWithOption.createBlock({
|
|
33
|
+
produce({ options }) {
|
|
34
|
+
return {
|
|
35
|
+
files: {
|
|
36
|
+
"value.txt": options.value,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
const preset = baseWithOption.createPreset({
|
|
42
|
+
about: { name: "Test" },
|
|
43
|
+
blocks: [blockUsingOption],
|
|
44
|
+
});
|
|
45
|
+
const actual = producePreset(preset, {
|
|
46
|
+
...system,
|
|
47
|
+
options: {
|
|
48
|
+
value: "abc",
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
expect(actual).toEqual({
|
|
52
|
+
...emptyCreation,
|
|
53
|
+
files: {
|
|
54
|
+
"value.txt": "abc",
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
it("passes offline to the preset when provided", () => {
|
|
59
|
+
const baseWithoutOption = createBase({
|
|
60
|
+
options: {},
|
|
61
|
+
});
|
|
62
|
+
const blockWithoutOption = baseWithoutOption.createBlock({
|
|
63
|
+
produce({ offline }) {
|
|
64
|
+
return {
|
|
65
|
+
files: {
|
|
66
|
+
"offline.txt": String(offline),
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
const preset = baseWithoutOption.createPreset({
|
|
72
|
+
about: { name: "Test" },
|
|
73
|
+
blocks: [blockWithoutOption],
|
|
74
|
+
});
|
|
75
|
+
const actual = producePreset(preset, {
|
|
76
|
+
...system,
|
|
77
|
+
offline: true,
|
|
78
|
+
options: {},
|
|
79
|
+
});
|
|
80
|
+
expect(actual).toEqual({
|
|
81
|
+
...emptyCreation,
|
|
82
|
+
files: {
|
|
83
|
+
"offline.txt": "true",
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=producePreset.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"producePreset.test.js","sourceRoot":"","sources":["../../src/producers/producePreset.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,aAAa,GAAG;IACrB,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;CACf,CAAC;AAEF,MAAM,MAAM,GAAG;IACd,QAAQ,EAAE;QACT,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,EAAE,EAAa;KACtB;IACD,EAAE,EAAE;QACH,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;QACvB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;KAClB;IACD,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;CACf,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QACjE,MAAM,cAAc,GAAG,UAAU,CAAC;YACjC,OAAO,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;aACjB;SACD,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,cAAc,CAAC,WAAW,CAAC;YACnD,OAAO,CAAC,EAAE,OAAO,EAAE;gBAClB,OAAO;oBACN,KAAK,EAAE;wBACN,WAAW,EAAE,OAAO,CAAC,KAAK;qBAC1B;iBACD,CAAC;YACH,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC;YAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,CAAC,gBAAgB,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE;YACpC,GAAG,MAAM;YACT,OAAO,EAAE;gBACR,KAAK,EAAE,KAAK;aACZ;SACD,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACtB,GAAG,aAAa;YAChB,KAAK,EAAE;gBACN,WAAW,EAAE,KAAK;aAClB;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,MAAM,iBAAiB,GAAG,UAAU,CAAC;YACpC,OAAO,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,WAAW,CAAC;YACxD,OAAO,CAAC,EAAE,OAAO,EAAE;gBAClB,OAAO;oBACN,KAAK,EAAE;wBACN,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;qBAC9B;iBACD,CAAC;YACH,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC;YAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,CAAC,kBAAkB,CAAC;SAC5B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE;YACpC,GAAG,MAAM;YACT,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACtB,GAAG,aAAa;YAChB,KAAK,EAAE;gBACN,aAAa,EAAE,MAAM;aACrB;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AnyShape, InferredObject, ProductionMode } from "bingo";
|
|
2
|
+
import { CreatedBlockAddons } from "../types/creations.js";
|
|
3
|
+
import { BlockModifications } from "../types/settings.js";
|
|
4
|
+
import { StratumTemplate } from "../types/templates.js";
|
|
5
|
+
export interface ProduceStratumTemplateSettings<OptionsShape extends AnyShape> {
|
|
6
|
+
addons?: CreatedBlockAddons<any, InferredObject<OptionsShape>>[];
|
|
7
|
+
blocks?: BlockModifications<InferredObject<OptionsShape>>;
|
|
8
|
+
mode?: ProductionMode;
|
|
9
|
+
offline?: boolean;
|
|
10
|
+
options: InferredObject<OptionsShape> & {
|
|
11
|
+
preset: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function produceStratumTemplate<OptionsShape extends AnyShape = AnyShape>(template: StratumTemplate<OptionsShape>, { addons, blocks: blockModifications, mode, offline, options, }: ProduceStratumTemplateSettings<OptionsShape>): {};
|
|
15
|
+
//# sourceMappingURL=produceStratumTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"produceStratumTemplate.d.ts","sourceRoot":"","sources":["../../src/producers/produceStratumTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,MAAM,WAAW,8BAA8B,CAAC,YAAY,SAAS,QAAQ;IAG5E,MAAM,CAAC,EAAE,kBAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3D;AAED,wBAAgB,sBAAsB,CACrC,YAAY,SAAS,QAAQ,GAAG,QAAQ,EAExC,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,EACvC,EACC,MAAM,EACN,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EACJ,OAAO,EACP,OAAO,GACP,EAAE,8BAA8B,CAAC,YAAY,CAAC,MAe/C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getPresetByName } from "../utils.ts/getPresetByName.js";
|
|
2
|
+
import { applyBlockModifications } from "./applyBlockModifications.js";
|
|
3
|
+
import { produceBlocks } from "./produceBlocks.js";
|
|
4
|
+
export function produceStratumTemplate(template, { addons, blocks: blockModifications, mode, offline, options, }) {
|
|
5
|
+
const preset = getPresetByName(template.presets, options.preset);
|
|
6
|
+
if (preset instanceof Error) {
|
|
7
|
+
throw preset;
|
|
8
|
+
}
|
|
9
|
+
const blocks = applyBlockModifications(preset.blocks, blockModifications);
|
|
10
|
+
return produceBlocks(blocks, {
|
|
11
|
+
addons,
|
|
12
|
+
mode,
|
|
13
|
+
offline,
|
|
14
|
+
options,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=produceStratumTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"produceStratumTemplate.js","sourceRoot":"","sources":["../../src/producers/produceStratumTemplate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYnD,MAAM,UAAU,sBAAsB,CAGrC,QAAuC,EACvC,EACC,MAAM,EACN,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EACJ,OAAO,EACP,OAAO,GACuC;IAE/C,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,MAAM,YAAY,KAAK,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAE1E,OAAO,aAAa,CAAC,MAAM,EAAE;QAC5B,MAAM;QACN,IAAI;QACJ,OAAO;QACP,OAAO;KACP,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"produceStratumTemplate.test.d.ts","sourceRoot":"","sources":["../../src/producers/produceStratumTemplate.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createBase } from "../creators/createBase.js";
|
|
4
|
+
import { produceStratumTemplate } from "./produceStratumTemplate.js";
|
|
5
|
+
describe("produceStratumTemplate", () => {
|
|
6
|
+
it("passes addons to the preset when provided", () => {
|
|
7
|
+
const baseWithOption = createBase({
|
|
8
|
+
options: {
|
|
9
|
+
value: z.string(),
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
const blockUsingOption = baseWithOption.createBlock({
|
|
13
|
+
produce({ options }) {
|
|
14
|
+
return {
|
|
15
|
+
files: {
|
|
16
|
+
"value.txt": options.value,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const presetUsingOption = baseWithOption.createPreset({
|
|
22
|
+
about: { name: "Test" },
|
|
23
|
+
blocks: [blockUsingOption],
|
|
24
|
+
});
|
|
25
|
+
const template = baseWithOption.createStratumTemplate({
|
|
26
|
+
presets: [presetUsingOption],
|
|
27
|
+
});
|
|
28
|
+
const actual = produceStratumTemplate(template, {
|
|
29
|
+
options: {
|
|
30
|
+
preset: "test",
|
|
31
|
+
value: "abc",
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
expect(actual).toEqual({
|
|
35
|
+
files: {
|
|
36
|
+
"value.txt": "abc",
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
it("passes options to the preset when provided", () => {
|
|
41
|
+
const baseWithOption = createBase({
|
|
42
|
+
options: {
|
|
43
|
+
value: z.string(),
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
const blockUsingOption = baseWithOption.createBlock({
|
|
47
|
+
produce({ options }) {
|
|
48
|
+
return {
|
|
49
|
+
files: {
|
|
50
|
+
"value.txt": options.value,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
const presetUsingOption = baseWithOption.createPreset({
|
|
56
|
+
about: { name: "Test" },
|
|
57
|
+
blocks: [blockUsingOption],
|
|
58
|
+
});
|
|
59
|
+
const template = baseWithOption.createStratumTemplate({
|
|
60
|
+
presets: [presetUsingOption],
|
|
61
|
+
});
|
|
62
|
+
const actual = produceStratumTemplate(template, {
|
|
63
|
+
options: {
|
|
64
|
+
preset: "test",
|
|
65
|
+
value: "abc",
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
expect(actual).toEqual({
|
|
69
|
+
files: {
|
|
70
|
+
"value.txt": "abc",
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
it("passes offline to the preset when provided", () => {
|
|
75
|
+
const baseWithoutOption = createBase({
|
|
76
|
+
options: {},
|
|
77
|
+
});
|
|
78
|
+
const blockWithoutOption = baseWithoutOption.createBlock({
|
|
79
|
+
produce({ offline }) {
|
|
80
|
+
return {
|
|
81
|
+
files: {
|
|
82
|
+
"offline.txt": String(offline),
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
const presetWithoutOption = baseWithoutOption.createPreset({
|
|
88
|
+
about: { name: "Test Without Option" },
|
|
89
|
+
blocks: [blockWithoutOption],
|
|
90
|
+
});
|
|
91
|
+
const template = baseWithoutOption.createStratumTemplate({
|
|
92
|
+
presets: [presetWithoutOption],
|
|
93
|
+
});
|
|
94
|
+
const actual = produceStratumTemplate(template, {
|
|
95
|
+
offline: true,
|
|
96
|
+
options: {
|
|
97
|
+
preset: "test-without-option",
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
expect(actual).toEqual({
|
|
101
|
+
files: {
|
|
102
|
+
"offline.txt": "true",
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
it("throws an error when a preset string cannot be matched to its name", () => {
|
|
107
|
+
const base = createBase({
|
|
108
|
+
options: {},
|
|
109
|
+
});
|
|
110
|
+
const blockUsingOption = base.createBlock({
|
|
111
|
+
produce() {
|
|
112
|
+
return {
|
|
113
|
+
files: {
|
|
114
|
+
"value.txt": "abc",
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
const presetUsingOption = base.createPreset({
|
|
120
|
+
about: { name: "Test" },
|
|
121
|
+
blocks: [blockUsingOption],
|
|
122
|
+
});
|
|
123
|
+
const template = base.createStratumTemplate({
|
|
124
|
+
presets: [presetUsingOption],
|
|
125
|
+
});
|
|
126
|
+
const act = () => produceStratumTemplate(template, {
|
|
127
|
+
options: {
|
|
128
|
+
preset: "other",
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
expect(act).toThrow("other is not one of: test");
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=produceStratumTemplate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"produceStratumTemplate.test.js","sourceRoot":"","sources":["../../src/producers/produceStratumTemplate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AnyShape, InferredObject, ProductionMode } from "bingo";
|
|
2
|
+
import { CreatedBlockAddons } from "../types/creations.js";
|
|
3
|
+
import { Preset } from "../types/presets.js";
|
|
4
|
+
import { BlockModifications } from "../types/settings.js";
|
|
5
|
+
import { StratumTemplate } from "../types/templates.js";
|
|
6
|
+
export interface ProduceTemplateSettings<OptionsShape extends AnyShape> {
|
|
7
|
+
addons?: CreatedBlockAddons<any, InferredObject<OptionsShape>>[];
|
|
8
|
+
blocks?: BlockModifications<InferredObject<OptionsShape>>;
|
|
9
|
+
mode?: ProductionMode;
|
|
10
|
+
offline?: boolean;
|
|
11
|
+
options: InferredObject<OptionsShape>;
|
|
12
|
+
preset: Preset<OptionsShape> | string;
|
|
13
|
+
}
|
|
14
|
+
export declare function produceStratumTemplate<OptionsShape extends AnyShape = AnyShape>(template: StratumTemplate<OptionsShape>, { addons, blocks: blockModifications, mode, offline, options, preset: requestedPreset, ...system }: ProduceTemplateSettings<OptionsShape>): {
|
|
15
|
+
addons: never[];
|
|
16
|
+
files: {};
|
|
17
|
+
requests: never[];
|
|
18
|
+
scripts: never[];
|
|
19
|
+
suggestions: never[];
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=produceStratumTemplateFull.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"produceStratumTemplateFull.d.ts","sourceRoot":"","sources":["../../src/producers/produceStratumTemplateFull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,OAAO,CAAC;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,MAAM,WAAW,uBAAuB,CAAC,YAAY,SAAS,QAAQ;IAGrE,MAAM,CAAC,EAAE,kBAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;CACtC;AAED,wBAAgB,sBAAsB,CACrC,YAAY,SAAS,QAAQ,GAAG,QAAQ,EAExC,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,EACvC,EACC,MAAM,EACN,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,EAAE,eAAe,EACvB,GAAG,MAAM,EACT,EAAE,uBAAuB,CAAC,YAAY,CAAC;;;;;;EA4BxC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getPresetByName } from "../utils.ts/getPresetByName.js";
|
|
2
|
+
import { applyBlockModifications } from "./applyBlockModifications.js";
|
|
3
|
+
import { produceBlocks } from "./produceBlocks.js";
|
|
4
|
+
export function produceStratumTemplate(template, { addons, blocks: blockModifications, mode, offline, options, preset: requestedPreset, ...system }) {
|
|
5
|
+
const preset = typeof requestedPreset === "string"
|
|
6
|
+
? getPresetByName(template.presets, requestedPreset)
|
|
7
|
+
: requestedPreset;
|
|
8
|
+
if (preset instanceof Error) {
|
|
9
|
+
throw preset;
|
|
10
|
+
}
|
|
11
|
+
const blocks = applyBlockModifications(preset.blocks, blockModifications);
|
|
12
|
+
const creation = produceBlocks(blocks, {
|
|
13
|
+
addons,
|
|
14
|
+
mode,
|
|
15
|
+
offline,
|
|
16
|
+
options,
|
|
17
|
+
system,
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
addons: [],
|
|
21
|
+
files: {},
|
|
22
|
+
requests: [],
|
|
23
|
+
scripts: [],
|
|
24
|
+
suggestions: [],
|
|
25
|
+
...creation,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=produceStratumTemplateFull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"produceStratumTemplateFull.js","sourceRoot":"","sources":["../../src/producers/produceStratumTemplateFull.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAanD,MAAM,UAAU,sBAAsB,CAGrC,QAAuC,EACvC,EACC,MAAM,EACN,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,EAAE,eAAe,EACvB,GAAG,MAAM,EAC8B;IAExC,MAAM,MAAM,GACX,OAAO,eAAe,KAAK,QAAQ;QAClC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;QACpD,CAAC,CAAC,eAAe,CAAC;IACpB,IAAI,MAAM,YAAY,KAAK,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,EAAE;QACtC,MAAM;QACN,IAAI;QACJ,OAAO;QACP,OAAO;QACP,MAAM;KACN,CAAC,CAAC;IAEH,OAAO;QACN,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;QACf,GAAG,QAAQ;KACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BingoSystem } from "bingo-systems";
|
|
2
|
+
import { BlockWithAddons, BlockWithoutAddons } from "../types/blocks.js";
|
|
3
|
+
export type RunBlockSettings<Addons extends object | undefined, Options extends object> = Addons extends object ? RunBlockSettingsWithOptionalAddons<Addons, Options> : RunBlockSettingsWithoutAddons<Options>;
|
|
4
|
+
export interface RunBlockSettingsWithOptionalAddons<Addons extends object, Options extends object> extends RunBlockSettingsWithoutAddons<Options> {
|
|
5
|
+
addons?: Addons;
|
|
6
|
+
}
|
|
7
|
+
export interface RunBlockSettingsWithoutAddons<Options extends object> extends Partial<BingoSystem> {
|
|
8
|
+
directory?: string;
|
|
9
|
+
offline?: boolean;
|
|
10
|
+
options: Options;
|
|
11
|
+
}
|
|
12
|
+
export interface RunBlockSettingsWithRequiredAddons<Addons extends object, Options extends object> extends RunBlockSettingsWithoutAddons<Options> {
|
|
13
|
+
addons: Addons;
|
|
14
|
+
}
|
|
15
|
+
export declare function runBlock<Addons extends object, Options extends object>(block: BlockWithAddons<Addons, Options>, settings: RunBlockSettingsWithOptionalAddons<Addons, Options>): Promise<void>;
|
|
16
|
+
export declare function runBlock<Options extends object>(block: BlockWithoutAddons<Options>, settings: RunBlockSettingsWithoutAddons<Options>): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=runBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runBlock.d.ts","sourceRoot":"","sources":["../../src/runners/runBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,MAAM,MAAM,gBAAgB,CAC3B,MAAM,SAAS,MAAM,GAAG,SAAS,EACjC,OAAO,SAAS,MAAM,IACnB,MAAM,SAAS,MAAM,GACtB,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,GACnD,6BAA6B,CAAC,OAAO,CAAC,CAAC;AAE1C,MAAM,WAAW,kCAAkC,CAClD,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CACrB,SAAQ,6BAA6B,CAAC,OAAO,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,6BAA6B,CAAC,OAAO,SAAS,MAAM,CACpE,SAAQ,OAAO,CAAC,WAAW,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kCAAkC,CAClD,MAAM,SAAS,MAAM,EACrB,OAAO,SAAS,MAAM,CACrB,SAAQ,6BAA6B,CAAC,OAAO,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,QAAQ,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,EAC3E,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,QAAQ,EAAE,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3D,OAAO,CAAC,IAAI,CAAC,CAAC;AACjB,wBAAsB,QAAQ,CAAC,OAAO,SAAS,MAAM,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAClC,QAAQ,EAAE,6BAA6B,CAAC,OAAO,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createSystemContextWithAuth, runCreation } from "bingo";
|
|
2
|
+
import { produceBlock } from "../producers/produceBlock.js";
|
|
3
|
+
export async function runBlock(block, settings) {
|
|
4
|
+
const { directory = ".", offline } = settings;
|
|
5
|
+
const system = await createSystemContextWithAuth({ directory, ...settings });
|
|
6
|
+
const creation = produceBlock(
|
|
7
|
+
// TODO: Why are these assertions necessary?
|
|
8
|
+
block, settings);
|
|
9
|
+
await runCreation(creation, { offline, system });
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=runBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runBlock.js","sourceRoot":"","sources":["../../src/runners/runBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAuC5D,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC7B,KAAqE,EACrE,QAA2C;IAE3C,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;IAE7E,MAAM,QAAQ,GAAG,YAAY;IAC5B,4CAA4C;IAC5C,KAAyC,EACzC,QAA+D,CAC/D,CAAC;IAEF,MAAM,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runBlock.test.d.ts","sourceRoot":"","sources":["../../src/runners/runBlock.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { describe, expect, test, vi } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createBase } from "../creators/createBase.js";
|
|
4
|
+
import { runBlock } from "./runBlock.js";
|
|
5
|
+
const base = createBase({
|
|
6
|
+
options: {
|
|
7
|
+
title: z.string(),
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
function createSystem() {
|
|
11
|
+
return {
|
|
12
|
+
fetchers: {
|
|
13
|
+
fetch: noop("fetch"),
|
|
14
|
+
octokit: {},
|
|
15
|
+
},
|
|
16
|
+
fs: {
|
|
17
|
+
readDirectory: noop("readDirectory"),
|
|
18
|
+
readFile: noop("readFile"),
|
|
19
|
+
writeDirectory: vi.fn(),
|
|
20
|
+
writeFile: vi.fn(),
|
|
21
|
+
},
|
|
22
|
+
runner: noop("runner"),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function noop(label) {
|
|
26
|
+
return vi.fn().mockReturnValue(`Not implemented: ${label}`);
|
|
27
|
+
}
|
|
28
|
+
describe("runBlock", () => {
|
|
29
|
+
test("Block without Addons", async () => {
|
|
30
|
+
const block = base.createBlock({
|
|
31
|
+
produce({ options }) {
|
|
32
|
+
return {
|
|
33
|
+
files: {
|
|
34
|
+
"README.md": `# ${options.title}`,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
const system = createSystem();
|
|
40
|
+
await runBlock(block, {
|
|
41
|
+
options: { title: "abc" },
|
|
42
|
+
...system,
|
|
43
|
+
});
|
|
44
|
+
expect({
|
|
45
|
+
writeDirectory: system.fs.writeDirectory.mock.calls,
|
|
46
|
+
writeFile: system.fs.writeFile.mock.calls,
|
|
47
|
+
}).toMatchInlineSnapshot(`
|
|
48
|
+
{
|
|
49
|
+
"writeDirectory": [
|
|
50
|
+
[
|
|
51
|
+
".",
|
|
52
|
+
],
|
|
53
|
+
],
|
|
54
|
+
"writeFile": [
|
|
55
|
+
[
|
|
56
|
+
"README.md",
|
|
57
|
+
"# abc
|
|
58
|
+
",
|
|
59
|
+
],
|
|
60
|
+
],
|
|
61
|
+
}
|
|
62
|
+
`);
|
|
63
|
+
});
|
|
64
|
+
describe("Block with Addons", () => {
|
|
65
|
+
const block = base.createBlock({
|
|
66
|
+
addons: {
|
|
67
|
+
descriptions: z.array(z.string()).default([]),
|
|
68
|
+
},
|
|
69
|
+
produce({ addons, options }) {
|
|
70
|
+
return {
|
|
71
|
+
files: {
|
|
72
|
+
"README.md": `# ${options.title}\n${addons.descriptions.join("\n")}`,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
test("default Addon value", async () => {
|
|
78
|
+
const system = createSystem();
|
|
79
|
+
await runBlock(block, {
|
|
80
|
+
options: { title: "abc" },
|
|
81
|
+
...system,
|
|
82
|
+
});
|
|
83
|
+
expect({
|
|
84
|
+
writeDirectory: system.fs.writeDirectory.mock.calls,
|
|
85
|
+
writeFile: system.fs.writeFile.mock.calls,
|
|
86
|
+
}).toMatchInlineSnapshot(`
|
|
87
|
+
{
|
|
88
|
+
"writeDirectory": [
|
|
89
|
+
[
|
|
90
|
+
".",
|
|
91
|
+
],
|
|
92
|
+
],
|
|
93
|
+
"writeFile": [
|
|
94
|
+
[
|
|
95
|
+
"README.md",
|
|
96
|
+
"# abc
|
|
97
|
+
",
|
|
98
|
+
],
|
|
99
|
+
],
|
|
100
|
+
}
|
|
101
|
+
`);
|
|
102
|
+
});
|
|
103
|
+
test("provided Addon value", async () => {
|
|
104
|
+
const system = createSystem();
|
|
105
|
+
await runBlock(block, {
|
|
106
|
+
addons: {
|
|
107
|
+
descriptions: ["def"],
|
|
108
|
+
},
|
|
109
|
+
options: { title: "abc" },
|
|
110
|
+
...system,
|
|
111
|
+
});
|
|
112
|
+
expect({
|
|
113
|
+
writeDirectory: system.fs.writeDirectory.mock.calls,
|
|
114
|
+
writeFile: system.fs.writeFile.mock.calls,
|
|
115
|
+
}).toMatchInlineSnapshot(`
|
|
116
|
+
{
|
|
117
|
+
"writeDirectory": [
|
|
118
|
+
[
|
|
119
|
+
".",
|
|
120
|
+
],
|
|
121
|
+
],
|
|
122
|
+
"writeFile": [
|
|
123
|
+
[
|
|
124
|
+
"README.md",
|
|
125
|
+
"# abc
|
|
126
|
+
|
|
127
|
+
def
|
|
128
|
+
",
|
|
129
|
+
],
|
|
130
|
+
],
|
|
131
|
+
}
|
|
132
|
+
`);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=runBlock.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runBlock.test.js","sourceRoot":"","sources":["../../src/runners/runBlock.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,IAAI,GAAG,UAAU,CAAC;IACvB,OAAO,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB;CACD,CAAC,CAAC;AAEH,SAAS,YAAY;IACpB,OAAO;QACN,QAAQ,EAAE;YACT,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,OAAO,EAAE,EAAa;SACtB;QACD,EAAE,EAAE;YACH,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;YAC1B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;YACvB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;SAClB;QACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;KACtB,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,KAAa;IAC1B,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC9B,OAAO,CAAC,EAAE,OAAO,EAAE;gBAClB,OAAO;oBACN,KAAK,EAAE;wBACN,WAAW,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE;qBACjC;iBACD,CAAC;YACH,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,MAAM,QAAQ,CAAC,KAAK,EAAE;YACrB,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;YACzB,GAAG,MAAM;SACT,CAAC,CAAC;QAEH,MAAM,CAAC;YACN,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK;YACnD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;SACzC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;GAexB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC9B,MAAM,EAAE;gBACP,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aAC7C;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;gBAC1B,OAAO;oBACN,KAAK,EAAE;wBACN,WAAW,EAAE,KAAK,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACpE;iBACD,CAAC;YACH,CAAC;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAE9B,MAAM,QAAQ,CAAC,KAAK,EAAE;gBACrB,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;gBACzB,GAAG,MAAM;aACT,CAAC,CAAC;YAEH,MAAM,CAAC;gBACN,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK;gBACnD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;aACzC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;IAexB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAE9B,MAAM,QAAQ,CAAC,KAAK,EAAE;gBACrB,MAAM,EAAE;oBACP,YAAY,EAAE,CAAC,KAAK,CAAC;iBACrB;gBACD,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;gBACzB,GAAG,MAAM;aACT,CAAC,CAAC;YAEH,MAAM,CAAC;gBACN,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK;gBACnD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;aACzC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;IAiBxB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AnyOptionalShape, AnyShape, InferredObject, LazyOptionalOptions, TakeInput } from "bingo";
|
|
2
|
+
import { BlockDefinitionWithAddons, BlockDefinitionWithoutAddons, BlockWithAddons, BlockWithoutAddons } from "./blocks.js";
|
|
3
|
+
import { Preset, PresetDefinition } from "./presets.js";
|
|
4
|
+
import { StratumTemplate, StratumTemplateDefinition } from "./templates.js";
|
|
5
|
+
export interface Base<OptionsShape extends AnyShape = AnyShape> {
|
|
6
|
+
createBlock: CreateBlock<InferredObject<OptionsShape>>;
|
|
7
|
+
createPreset: CreatePreset<OptionsShape>;
|
|
8
|
+
createStratumTemplate: CreateStratumTemplate<OptionsShape>;
|
|
9
|
+
options: OptionsShape;
|
|
10
|
+
prepare?: BasePreparer<InferredObject<OptionsShape>>;
|
|
11
|
+
}
|
|
12
|
+
export interface BaseContext<Options> {
|
|
13
|
+
options: Options;
|
|
14
|
+
take: TakeInput;
|
|
15
|
+
}
|
|
16
|
+
export interface BaseDefinition<OptionsShape extends AnyShape = AnyShape> {
|
|
17
|
+
options: OptionsShape;
|
|
18
|
+
prepare?: BasePreparer<InferredObject<OptionsShape>>;
|
|
19
|
+
}
|
|
20
|
+
export type BaseOptionsFor<TypeOfBase> = TypeOfBase extends {
|
|
21
|
+
options: infer OptionsShape extends AnyShape;
|
|
22
|
+
} ? InferredObject<OptionsShape> : never;
|
|
23
|
+
export type BasePreparer<Options> = (context: BaseContext<Partial<Options>>) => LazyOptionalOptions<Partial<Options>>;
|
|
24
|
+
export interface CreateBlock<Options extends object> {
|
|
25
|
+
<AddonsShape extends AnyOptionalShape>(blockDefinition: BlockDefinitionWithAddons<AddonsShape, Options>): BlockWithAddons<InferredObject<AddonsShape>, Options>;
|
|
26
|
+
(blockDefinition: BlockDefinitionWithoutAddons<Options>): BlockWithoutAddons<Options>;
|
|
27
|
+
}
|
|
28
|
+
export type CreatePreset<OptionsShape extends AnyShape> = (presetDefinition: PresetDefinition<InferredObject<OptionsShape>>) => Preset<OptionsShape>;
|
|
29
|
+
export type CreateStratumTemplate<OptionsShape extends AnyShape> = (templateDefinition: StratumTemplateDefinition<OptionsShape>) => StratumTemplate<OptionsShape>;
|
|
30
|
+
//# sourceMappingURL=bases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bases.d.ts","sourceRoot":"","sources":["../../src/types/bases.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,MAAM,OAAO,CAAC;AAEf,OAAO,EACN,yBAAyB,EACzB,4BAA4B,EAC5B,eAAe,EACf,kBAAkB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,WAAW,IAAI,CAAC,YAAY,SAAS,QAAQ,GAAG,QAAQ;IAC7D,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACzC,qBAAqB,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,WAAW,CAAC,OAAO;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;CAChB;AAED,MAAM,WAAW,cAAc,CAAC,YAAY,SAAS,QAAQ,GAAG,QAAQ;IACvE,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,MAAM,cAAc,CAAC,UAAU,IAAI,UAAU,SAAS;IAC3D,OAAO,EAAE,MAAM,YAAY,SAAS,QAAQ,CAAC;CAC7C,GACE,cAAc,CAAC,YAAY,CAAC,GAC5B,KAAK,CAAC;AAET,MAAM,MAAM,YAAY,CAAC,OAAO,IAAI,CACnC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAClC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3C,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,MAAM;IAClD,CAAC,WAAW,SAAS,gBAAgB,EACpC,eAAe,EAAE,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,GAC9D,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IAEzD,CACC,eAAe,EAAE,4BAA4B,CAAC,OAAO,CAAC,GACpD,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,CAAC,YAAY,SAAS,QAAQ,IAAI,CACzD,gBAAgB,EAAE,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,KAC5D,MAAM,CAAC,YAAY,CAAC,CAAC;AAE1B,MAAM,MAAM,qBAAqB,CAAC,YAAY,SAAS,QAAQ,IAAI,CAClE,kBAAkB,EAAE,yBAAyB,CAAC,YAAY,CAAC,KACvD,eAAe,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bases.js","sourceRoot":"","sources":["../../src/types/bases.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AboutBase, AnyOptionalShape, InferredObject } from "bingo";
|
|
2
|
+
import { BlockCreation, CreatedBlockAddons } from "./creations.js";
|
|
3
|
+
export type Block<Addons extends object | undefined = object | undefined, Options extends object = object> = Addons extends object ? BlockWithAddons<Addons, Options> : BlockWithoutAddons<Options>;
|
|
4
|
+
export type BlockAugmentWithAddons<Addons extends object, Options extends object> = (context: BlockContextWithAddons<Addons, Options>) => Partial<BlockCreation<Options>>;
|
|
5
|
+
export type BlockAugmentWithoutAddons<Options extends object> = (context: BlockContextWithoutAddons<Options>) => Partial<BlockCreation<Options>>;
|
|
6
|
+
export interface BlockBase {
|
|
7
|
+
about?: AboutBase;
|
|
8
|
+
}
|
|
9
|
+
export interface BlockContextWithAddons<Addons extends object, Options extends object> extends BlockContextWithoutAddons<Options> {
|
|
10
|
+
addons: Addons;
|
|
11
|
+
options: Options;
|
|
12
|
+
}
|
|
13
|
+
export interface BlockContextWithOptionalAddons<Addons extends object, Options extends object> extends BlockContextWithoutAddons<Options> {
|
|
14
|
+
addons?: Addons;
|
|
15
|
+
options: Options;
|
|
16
|
+
}
|
|
17
|
+
export interface BlockContextWithoutAddons<Options extends object> {
|
|
18
|
+
offline?: boolean;
|
|
19
|
+
options: Options;
|
|
20
|
+
}
|
|
21
|
+
export type BlockDefinition<AddonsShape extends AnyOptionalShape | undefined, Options extends object> = AddonsShape extends object ? BlockDefinitionWithAddons<AddonsShape, Options> : BlockDefinitionWithoutAddons<Options>;
|
|
22
|
+
export interface BlockDefinitionBase {
|
|
23
|
+
about?: AboutBase;
|
|
24
|
+
}
|
|
25
|
+
export type BlockDefinitionProducerWithAddons<Addons extends object, Options extends object> = (context: BlockContextWithAddons<Addons, Options>) => Partial<BlockCreation<Options>>;
|
|
26
|
+
export type BlockDefinitionProducerWithoutAddons<Options extends object> = (context: BlockContextWithoutAddons<Options>) => Partial<BlockCreation<Options>>;
|
|
27
|
+
export interface BlockDefinitionWithAddons<AddonsShape extends AnyOptionalShape, Options extends object> extends BlockDefinitionBase {
|
|
28
|
+
addons: AddonsShape;
|
|
29
|
+
produce: BlockDefinitionProducerWithAddons<InferredObject<AddonsShape>, Options>;
|
|
30
|
+
setup?: BlockAugmentWithAddons<InferredObject<AddonsShape>, Options>;
|
|
31
|
+
transition?: BlockAugmentWithAddons<InferredObject<AddonsShape>, Options>;
|
|
32
|
+
}
|
|
33
|
+
export interface BlockDefinitionWithoutAddons<Options extends object> extends BlockDefinitionBase {
|
|
34
|
+
produce: BlockDefinitionProducerWithoutAddons<Options>;
|
|
35
|
+
setup?: BlockAugmentWithoutAddons<Options>;
|
|
36
|
+
transition?: BlockAugmentWithoutAddons<Options>;
|
|
37
|
+
}
|
|
38
|
+
export type BlockProducerWithAddons<Addons extends object, Options extends object> = (context: BlockContextWithOptionalAddons<Addons, Options>) => Partial<BlockCreation<Options>>;
|
|
39
|
+
export type BlockProducerWithoutAddons<Options extends object> = (context: BlockContextWithoutAddons<Options>) => Partial<BlockCreation<Options>>;
|
|
40
|
+
export interface BlockWithAddons<Addons extends object, Options extends object> extends BlockBase {
|
|
41
|
+
produce: BlockProducerWithAddons<Addons, Options>;
|
|
42
|
+
setup?: BlockAugmentWithAddons<Addons, Options>;
|
|
43
|
+
transition?: BlockAugmentWithAddons<Addons, Options>;
|
|
44
|
+
(addons: Partial<Addons>): CreatedBlockAddons<Addons, Options>;
|
|
45
|
+
}
|
|
46
|
+
export interface BlockWithoutAddons<Options extends object> extends BlockBase {
|
|
47
|
+
produce: BlockProducerWithoutAddons<Options>;
|
|
48
|
+
setup?: BlockAugmentWithoutAddons<Options>;
|
|
49
|
+
transition?: BlockAugmentWithoutAddons<Options>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=blocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/types/blocks.ts"],"names":[],"mappings":"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"}
|