bingo-stratum 0.5.4 → 0.5.6
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/lib/creators/createBase.d.ts.map +1 -1
- package/lib/creators/createBase.js +1 -21
- package/lib/creators/createBase.js.map +1 -1
- package/lib/creators/createBase.test copy.d.ts +2 -0
- package/lib/creators/createBase.test copy.d.ts.map +1 -0
- package/lib/creators/createBase.test copy.js +58 -0
- package/lib/creators/createBase.test copy.js.map +1 -0
- package/lib/creators/createBase.test.js +8 -6
- package/lib/creators/createBase.test.js.map +1 -1
- package/lib/creators/createBlock.d.ts +5 -0
- package/lib/creators/createBlock.d.ts.map +1 -0
- package/lib/creators/createBlock.js +22 -0
- package/lib/creators/createBlock.js.map +1 -0
- package/lib/creators/createBlock.test.d.ts +2 -0
- package/lib/creators/createBlock.test.d.ts.map +1 -0
- package/lib/creators/createBlock.test.js +53 -0
- package/lib/creators/createBlock.test.js.map +1 -0
- package/lib/creators/createStratumTemplate.d.ts.map +1 -1
- package/lib/creators/createStratumTemplate.js +27 -12
- package/lib/creators/createStratumTemplate.js.map +1 -1
- package/lib/creators/createStratumTemplate.test.js +18 -4
- package/lib/creators/createStratumTemplate.test.js.map +1 -1
- package/lib/creators/inferPreset.js +1 -1
- package/lib/creators/inferPreset.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/mergers/mergeAddonsIfUpdated.d.ts.map +1 -1
- package/lib/mergers/mergeAddonsIfUpdated.js +7 -5
- package/lib/mergers/mergeAddonsIfUpdated.js.map +1 -1
- package/lib/mergers/mergeBlockCreations.d.ts +1 -1
- package/lib/predicates/hasName.d.ts +9 -0
- package/lib/predicates/hasName.d.ts.map +1 -0
- package/lib/predicates/hasName.js +4 -0
- package/lib/predicates/hasName.js.map +1 -0
- package/lib/producers/applyBlockModifications.d.ts +2 -2
- package/lib/producers/applyBlockModifications.d.ts.map +1 -1
- package/lib/producers/applyBlockModifications.js.map +1 -1
- package/lib/producers/applyBlockRefinements.d.ts +1 -1
- package/lib/producers/applyBlockRefinements.d.ts.map +1 -1
- package/lib/producers/applyBlockRefinements.js +37 -7
- package/lib/producers/applyBlockRefinements.js.map +1 -1
- package/lib/producers/applyBlockRefinements.test.js +51 -8
- package/lib/producers/applyBlockRefinements.test.js.map +1 -1
- package/lib/producers/produceBlock.d.ts +5 -5
- package/lib/producers/produceBlock.d.ts.map +1 -1
- package/lib/producers/produceBlock.js +1 -1
- package/lib/producers/produceBlock.js.map +1 -1
- package/lib/producers/producePreset.d.ts +6 -1
- package/lib/producers/producePreset.d.ts.map +1 -1
- package/lib/producers/producePreset.js +2 -2
- package/lib/producers/producePreset.js.map +1 -1
- package/lib/producers/producePreset.test.js +50 -0
- package/lib/producers/producePreset.test.js.map +1 -1
- package/lib/producers/produceStratumTemplate.d.ts.map +1 -1
- package/lib/producers/produceStratumTemplate.js +1 -1
- package/lib/producers/produceStratumTemplate.js.map +1 -1
- package/lib/producers/produceStratumTemplate.test.js +2 -2
- package/lib/producers/produceStratumTemplate.test.js.map +1 -1
- package/lib/runners/runBlock.js +1 -0
- package/lib/runners/runBlock.js.map +1 -1
- package/lib/runners/runPreset.d.ts +12 -0
- package/lib/runners/runPreset.d.ts.map +1 -0
- package/lib/runners/runPreset.js +15 -0
- package/lib/runners/runPreset.js.map +1 -0
- package/lib/types/blocks.d.ts +2 -3
- package/lib/types/blocks.d.ts.map +1 -1
- package/lib/types/creations.d.ts.map +1 -1
- package/lib/types/presets.d.ts.map +1 -1
- package/lib/types/refinements.d.ts.map +1 -1
- package/lib/types/settings.d.ts +1 -1
- package/lib/types/settings.d.ts.map +1 -1
- package/lib/types/templates.d.ts +62 -0
- package/lib/types/templates.d.ts.map +1 -1
- package/lib/utils/createBlockRefinementOption.d.ts +2 -0
- package/lib/utils/createBlockRefinementOption.d.ts.map +1 -0
- package/lib/utils/createBlockRefinementOption.js +5 -0
- package/lib/utils/createBlockRefinementOption.js.map +1 -0
- package/lib/utils/getPresetByName.d.ts +1 -1
- package/lib/utils.ts/getPresetByName.d.ts +1 -1
- package/lib/utils.ts/getPresetByName.d.ts.map +1 -1
- package/lib/utils.ts/getPresetByName.js +9 -3
- package/lib/utils.ts/getPresetByName.js.map +1 -1
- package/package.json +9 -6
- package/lib/predicates/isBlock.d.ts +0 -3
- package/lib/predicates/isBlock.d.ts.map +0 -1
- package/lib/predicates/isBlock.js +0 -7
- package/lib/predicates/isBlock.js.map +0 -1
- package/lib/types/customizations..d.ts +0 -9
- package/lib/types/customizations..d.ts.map +0 -1
- package/lib/types/customizations..js +0 -2
- package/lib/types/customizations..js.map +0 -1
- package/lib/types/customizations.d.ts +0 -22
- package/lib/types/customizations.d.ts.map +0 -1
- package/lib/types/customizations.js +0 -2
- package/lib/types/customizations.js.map +0 -1
- package/lib/utils.ts/createBlockExclusionOption.d.ts +0 -2
- package/lib/utils.ts/createBlockExclusionOption.d.ts.map +0 -1
- package/lib/utils.ts/createBlockExclusionOption.js +0 -5
- package/lib/utils.ts/createBlockExclusionOption.js.map +0 -1
- package/lib/utils.ts/slugifyName.d.ts +0 -2
- package/lib/utils.ts/slugifyName.d.ts.map +0 -1
- package/lib/utils.ts/slugifyName.js +0 -6
- package/lib/utils.ts/slugifyName.js.map +0 -1
- package/lib/utils.ts/slugifyPresetName.d.ts +0 -2
- package/lib/utils.ts/slugifyPresetName.d.ts.map +0 -1
- package/lib/utils.ts/slugifyPresetName.js +0 -6
- package/lib/utils.ts/slugifyPresetName.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBase.d.ts","sourceRoot":"","sources":["../../src/creators/createBase.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"createBase.d.ts","sourceRoot":"","sources":["../../src/creators/createBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMzD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,YAAY,SAAS,QAAQ,EACvD,cAAc,EAAE,cAAc,CAAC,YAAY,CAAC,GAC1C,IAAI,CAAC,YAAY,CAAC,CAYpB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { assertNoPresetOption } from "./assertNoPresetOption.js";
|
|
2
|
+
import { createBlock } from "./createBlock.js";
|
|
2
3
|
import { createPreset } from "./createPreset.js";
|
|
3
4
|
import { createStratumTemplate } from "./createStratumTemplate.js";
|
|
4
|
-
import { applyZodDefaults, isDefinitionWithAddons } from "./utils.js";
|
|
5
5
|
/**
|
|
6
6
|
* Creates a Stratum {@link Base}.
|
|
7
7
|
* @template OptionsShape Schemas of options the Base's Blocks take in.
|
|
@@ -9,26 +9,6 @@ import { applyZodDefaults, isDefinitionWithAddons } from "./utils.js";
|
|
|
9
9
|
*/
|
|
10
10
|
export function createBase(baseDefinition) {
|
|
11
11
|
assertNoPresetOption(baseDefinition);
|
|
12
|
-
function createBlock(blockDefinition) {
|
|
13
|
-
// Blocks without Addons can't be called as functions.
|
|
14
|
-
if (!isDefinitionWithAddons(blockDefinition)) {
|
|
15
|
-
return blockDefinition;
|
|
16
|
-
}
|
|
17
|
-
const addonsSchema = blockDefinition.addons;
|
|
18
|
-
// Blocks with Addons do need to be callable as functions...
|
|
19
|
-
function block(addons) {
|
|
20
|
-
return { addons, block };
|
|
21
|
-
}
|
|
22
|
-
// ...and also still have the Block Definition properties.
|
|
23
|
-
Object.assign(block, blockDefinition);
|
|
24
|
-
block.produce = (context) => {
|
|
25
|
-
return blockDefinition.produce({
|
|
26
|
-
...context,
|
|
27
|
-
addons: applyZodDefaults(addonsSchema, context.addons),
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
return block;
|
|
31
|
-
}
|
|
32
12
|
const base = {
|
|
33
13
|
...baseDefinition,
|
|
34
14
|
createBlock,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBase.js","sourceRoot":"","sources":["../../src/creators/createBase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createBase.js","sourceRoot":"","sources":["../../src/creators/createBase.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACzB,cAA4C;IAE5C,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAErC,MAAM,IAAI,GAAuB;QAChC,GAAG,cAAc;QACjB,WAAW;QACX,YAAY,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC;QACxE,qBAAqB,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAC7C,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAChD,CAAC;IAEF,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBase.test copy.d.ts","sourceRoot":"","sources":["../../src/creators/createBase.test copy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createBase } from "./createBase.js";
|
|
4
|
+
const base = createBase({
|
|
5
|
+
options: { name: z.string() },
|
|
6
|
+
});
|
|
7
|
+
describe("createBase", () => {
|
|
8
|
+
describe("createBlock", () => {
|
|
9
|
+
describe("without Addons", () => {
|
|
10
|
+
it("produces without Addons", () => {
|
|
11
|
+
const block = base.createBlock({
|
|
12
|
+
produce({ options }) {
|
|
13
|
+
return {
|
|
14
|
+
files: {
|
|
15
|
+
"name.txt": `${options.name} (${options.preset})`,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const production = block.produce({
|
|
21
|
+
options: { name: "abc", preset: "test" },
|
|
22
|
+
});
|
|
23
|
+
expect(production).toEqual({
|
|
24
|
+
files: {
|
|
25
|
+
"name.txt": "abc (test)",
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe("with Addons", () => {
|
|
31
|
+
it("applies Zod defaults when producing with Addons", () => {
|
|
32
|
+
const block = base.createBlock({
|
|
33
|
+
addons: {
|
|
34
|
+
names: z.array(z.string()).default([]),
|
|
35
|
+
},
|
|
36
|
+
produce({ addons, options }) {
|
|
37
|
+
const { names } = addons;
|
|
38
|
+
return {
|
|
39
|
+
files: {
|
|
40
|
+
"names.txt": [options.preset, options.name, ...names].join("\n"),
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const production = block.produce({
|
|
46
|
+
addons: { names: ["def"] },
|
|
47
|
+
options: { name: "abc", preset: "test" },
|
|
48
|
+
});
|
|
49
|
+
expect(production).toEqual({
|
|
50
|
+
files: {
|
|
51
|
+
"names.txt": "test\nabc\ndef",
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=createBase.test%20copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBase.test copy.js","sourceRoot":"","sources":["../../src/creators/createBase.test copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,IAAI,GAAG,UAAU,CAAC;IACvB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;CAC7B,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC9B,OAAO,CAAC,EAAE,OAAO,EAAE;wBAClB,OAAO;4BACN,KAAK,EAAE;gCACN,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG;6BACjD;yBACD,CAAC;oBACH,CAAC;iBACD,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;oBAChC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;iBACxC,CAAC,CAAC;gBAEH,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;oBAC1B,KAAK,EAAE;wBACN,UAAU,EAAE,YAAY;qBACxB;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC9B,MAAM,EAAE;wBACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;qBACtC;oBACD,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;wBAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;wBAEzB,OAAO;4BACN,KAAK,EAAE;gCACN,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CACzD,IAAI,CACJ;6BACD;yBACD,CAAC;oBACH,CAAC;iBACD,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;oBAChC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;oBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;iBACxC,CAAC,CAAC;gBAEH,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;oBAC1B,KAAK,EAAE;wBACN,WAAW,EAAE,gBAAgB;qBAC7B;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -12,15 +12,17 @@ describe("createBase", () => {
|
|
|
12
12
|
produce({ options }) {
|
|
13
13
|
return {
|
|
14
14
|
files: {
|
|
15
|
-
"name.txt": options.name
|
|
15
|
+
"name.txt": `${options.name} (${options.preset})`,
|
|
16
16
|
},
|
|
17
17
|
};
|
|
18
18
|
},
|
|
19
19
|
});
|
|
20
|
-
const production = block.produce({
|
|
20
|
+
const production = block.produce({
|
|
21
|
+
options: { name: "abc", preset: "test" },
|
|
22
|
+
});
|
|
21
23
|
expect(production).toEqual({
|
|
22
24
|
files: {
|
|
23
|
-
"name.txt": "abc",
|
|
25
|
+
"name.txt": "abc (test)",
|
|
24
26
|
},
|
|
25
27
|
});
|
|
26
28
|
});
|
|
@@ -35,18 +37,18 @@ describe("createBase", () => {
|
|
|
35
37
|
const { names } = addons;
|
|
36
38
|
return {
|
|
37
39
|
files: {
|
|
38
|
-
"names.txt": [options.name, ...names].join("\n"),
|
|
40
|
+
"names.txt": [options.preset, options.name, ...names].join("\n"),
|
|
39
41
|
},
|
|
40
42
|
};
|
|
41
43
|
},
|
|
42
44
|
});
|
|
43
45
|
const production = block.produce({
|
|
44
46
|
addons: { names: ["def"] },
|
|
45
|
-
options: { name: "abc" },
|
|
47
|
+
options: { name: "abc", preset: "test" },
|
|
46
48
|
});
|
|
47
49
|
expect(production).toEqual({
|
|
48
50
|
files: {
|
|
49
|
-
"names.txt": "
|
|
51
|
+
"names.txt": "test\nabc\ndef",
|
|
50
52
|
},
|
|
51
53
|
});
|
|
52
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBase.test.js","sourceRoot":"","sources":["../../src/creators/createBase.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,IAAI,GAAG,UAAU,CAAC;IACvB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;CAC7B,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC9B,OAAO,CAAC,EAAE,OAAO,EAAE;wBAClB,OAAO;4BACN,KAAK,EAAE;gCACN,UAAU,EAAE,OAAO,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"createBase.test.js","sourceRoot":"","sources":["../../src/creators/createBase.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,IAAI,GAAG,UAAU,CAAC;IACvB,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE;CAC7B,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC/B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;gBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC9B,OAAO,CAAC,EAAE,OAAO,EAAE;wBAClB,OAAO;4BACN,KAAK,EAAE;gCACN,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG;6BACjD;yBACD,CAAC;oBACH,CAAC;iBACD,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;oBAChC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;iBACxC,CAAC,CAAC;gBAEH,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;oBAC1B,KAAK,EAAE;wBACN,UAAU,EAAE,YAAY;qBACxB;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YAC5B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC9B,MAAM,EAAE;wBACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;qBACtC;oBACD,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;wBAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;wBAEzB,OAAO;4BACN,KAAK,EAAE;gCACN,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CACzD,IAAI,CACJ;6BACD;yBACD,CAAC;oBACH,CAAC;iBACD,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;oBAChC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;oBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;iBACxC,CAAC,CAAC;gBAEH,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;oBAC1B,KAAK,EAAE;wBACN,WAAW,EAAE,gBAAgB;qBAC7B;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AnyOptionalShape, InferredObject } from "bingo";
|
|
2
|
+
import { BlockDefinitionWithAddons, BlockDefinitionWithoutAddons, BlockWithAddons, BlockWithoutAddons } from "../types/blocks.js";
|
|
3
|
+
export declare function createBlock<AddonsShape extends AnyOptionalShape, Options extends object>(blockDefinition: BlockDefinitionWithAddons<AddonsShape, Options>): BlockWithAddons<InferredObject<AddonsShape>, Options>;
|
|
4
|
+
export declare function createBlock<Options extends object>(blockDefinition: BlockDefinitionWithoutAddons<Options>): BlockWithoutAddons<Options>;
|
|
5
|
+
//# sourceMappingURL=createBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBlock.d.ts","sourceRoot":"","sources":["../../src/creators/createBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAEN,yBAAyB,EACzB,4BAA4B,EAC5B,eAAe,EACf,kBAAkB,EAClB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,WAAW,CAC1B,WAAW,SAAS,gBAAgB,EACpC,OAAO,SAAS,MAAM,EAEtB,eAAe,EAAE,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,GAC9D,eAAe,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;AACzD,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,EACjD,eAAe,EAAE,4BAA4B,CAAC,OAAO,CAAC,GACpD,kBAAkB,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { applyZodDefaults, isDefinitionWithAddons } from "./utils.js";
|
|
2
|
+
export function createBlock(blockDefinition) {
|
|
3
|
+
// Blocks without Addons can't be called as functions.
|
|
4
|
+
if (!isDefinitionWithAddons(blockDefinition)) {
|
|
5
|
+
return blockDefinition;
|
|
6
|
+
}
|
|
7
|
+
const addonsSchema = blockDefinition.addons;
|
|
8
|
+
// Blocks with Addons do need to be callable as functions...
|
|
9
|
+
function block(addons) {
|
|
10
|
+
return { addons, block };
|
|
11
|
+
}
|
|
12
|
+
// ...and also still have the Block Definition properties.
|
|
13
|
+
Object.assign(block, blockDefinition);
|
|
14
|
+
block.produce = (context) => {
|
|
15
|
+
return blockDefinition.produce({
|
|
16
|
+
...context,
|
|
17
|
+
addons: applyZodDefaults(addonsSchema, context.addons),
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
return block;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=createBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBlock.js","sourceRoot":"","sources":["../../src/creators/createBlock.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAWtE,MAAM,UAAU,WAAW,CAI1B,eAEwC;IAExC,sDAAsD;IACtD,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,EAAE,CAAC;QAC9C,OAAO,eAAe,CAAC;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;IAI5C,4DAA4D;IAC5D,SAAS,KAAK,CAAC,MAAc;QAC5B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAEtC,KAAK,CAAC,OAAO,GAAG,CAAC,OAAgD,EAAE,EAAE;QACpE,OAAO,eAAe,CAAC,OAAO,CAAC;YAC9B,GAAG,OAAO;YACV,MAAM,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC;SACtD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,KAAyC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBlock.test.d.ts","sourceRoot":"","sources":["../../src/creators/createBlock.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { createBlock } from "./createBlock.js";
|
|
4
|
+
describe("createBlock", () => {
|
|
5
|
+
describe("without Addons", () => {
|
|
6
|
+
it("produces without Addons", () => {
|
|
7
|
+
const block = createBlock({
|
|
8
|
+
produce({ options }) {
|
|
9
|
+
return {
|
|
10
|
+
files: {
|
|
11
|
+
"name.txt": `${options.name} (${options.preset})`,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
const production = block.produce({
|
|
17
|
+
options: { name: "abc", preset: "test" },
|
|
18
|
+
});
|
|
19
|
+
expect(production).toEqual({
|
|
20
|
+
files: {
|
|
21
|
+
"name.txt": "abc (test)",
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe("with Addons", () => {
|
|
27
|
+
it("applies Zod defaults when producing with Addons", () => {
|
|
28
|
+
const block = createBlock({
|
|
29
|
+
addons: {
|
|
30
|
+
names: z.array(z.string()).default([]),
|
|
31
|
+
},
|
|
32
|
+
produce({ addons, options }) {
|
|
33
|
+
const { names } = addons;
|
|
34
|
+
return {
|
|
35
|
+
files: {
|
|
36
|
+
"names.txt": [options.preset, options.name, ...names].join("\n"),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
const production = block.produce({
|
|
42
|
+
addons: { names: ["def"] },
|
|
43
|
+
options: { name: "abc", preset: "test" },
|
|
44
|
+
});
|
|
45
|
+
expect(production).toEqual({
|
|
46
|
+
files: {
|
|
47
|
+
"names.txt": "test\nabc\ndef",
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=createBlock.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBlock.test.js","sourceRoot":"","sources":["../../src/creators/createBlock.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YAClC,MAAM,KAAK,GAAG,WAAW,CAAmB;gBAC3C,OAAO,CAAC,EAAE,OAAO,EAAE;oBAClB,OAAO;wBACN,KAAK,EAAE;4BACN,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG;yBACjD;qBACD,CAAC;gBACH,CAAC;aACD,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;gBAChC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;aACxC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAC1B,KAAK,EAAE;oBACN,UAAU,EAAE,YAAY;iBACxB;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YAC1D,MAAM,KAAK,GAAG,WAAW,CAGvB;gBACD,MAAM,EAAE;oBACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;iBACtC;gBACD,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;oBAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;oBAEzB,OAAO;wBACN,KAAK,EAAE;4BACN,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;yBAChE;qBACD,CAAC;gBACH,CAAC;aACD,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;gBAChC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;gBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;aACxC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBAC1B,KAAK,EAAE;oBACN,WAAW,EAAE,gBAAgB;iBAC7B;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStratumTemplate.d.ts","sourceRoot":"","sources":["../../src/creators/createStratumTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuC,MAAM,OAAO,CAAC;AAQtE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACN,eAAe,EACf,yBAAyB,EAEzB,MAAM,uBAAuB,CAAC;AAK/B,wBAAgB,qBAAqB,CAAC,YAAY,SAAS,QAAQ,EAClE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EACxB,kBAAkB,EAAE,yBAAyB,CAAC,YAAY,CAAC,GACzD,eAAe,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"createStratumTemplate.d.ts","sourceRoot":"","sources":["../../src/creators/createStratumTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuC,MAAM,OAAO,CAAC;AAQtE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACN,eAAe,EACf,yBAAyB,EAEzB,MAAM,uBAAuB,CAAC;AAK/B,wBAAgB,qBAAqB,CAAC,YAAY,SAAS,QAAQ,EAClE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,EACxB,kBAAkB,EAAE,yBAAyB,CAAC,YAAY,CAAC,GACzD,eAAe,CAAC,YAAY,CAAC,CAuG/B"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { produceStratumTemplate, } from "../producers/produceStratumTemplate.js";
|
|
4
|
-
import {
|
|
4
|
+
import { createBlockRefinementOption } from "../utils/createBlockRefinementOption.js";
|
|
5
5
|
import { slugifyName } from "../utils/slugifyName.js";
|
|
6
6
|
import { inferPreset } from "./inferPreset.js";
|
|
7
7
|
export function createStratumTemplate(base, templateDefinition) {
|
|
8
|
+
const namedBlocks = Array.from(new Set(templateDefinition.presets
|
|
9
|
+
.flatMap((preset) => preset.blocks.map((block) => block.about?.name))
|
|
10
|
+
.filter((blockName) => typeof blockName === "string")));
|
|
8
11
|
const template = {
|
|
9
12
|
...templateDefinition,
|
|
10
13
|
base,
|
|
14
|
+
blocks: Array.from(new Set(templateDefinition.presets.flatMap((preset) => preset.blocks))),
|
|
11
15
|
createConfig: (config) => ({ ...config, template }),
|
|
12
16
|
options: {
|
|
13
17
|
...base.options,
|
|
@@ -16,17 +20,25 @@ export function createStratumTemplate(base, templateDefinition) {
|
|
|
16
20
|
.describe("starting set of tooling to use")
|
|
17
21
|
.default(slugifyName((templateDefinition.suggested ?? templateDefinition.presets[0])
|
|
18
22
|
.about.name)),
|
|
19
|
-
//
|
|
23
|
+
// Block refinement options are not present in the types, because:
|
|
20
24
|
// * It'd be a lot of types plumbing to know the full list of Blocks.
|
|
21
25
|
// * We want to discourage using them in config files: it's better to
|
|
22
|
-
// instead use imported Blocks in `refinements.blocks
|
|
26
|
+
// instead use imported Blocks in `refinements.blocks`.
|
|
23
27
|
//
|
|
24
28
|
// TODO: It would be nice to have labeled groups of options.
|
|
25
|
-
//
|
|
26
|
-
...Object.fromEntries(
|
|
27
|
-
.filter((blockName) => typeof blockName === "string")
|
|
29
|
+
// https://github.com/JoshuaKGoldberg/bingo/issues/288
|
|
30
|
+
...Object.fromEntries(namedBlocks
|
|
28
31
|
.map((blockName) => [
|
|
29
|
-
|
|
32
|
+
createBlockRefinementOption("add", blockName),
|
|
33
|
+
z
|
|
34
|
+
.boolean()
|
|
35
|
+
.describe(`whether to add the ${blockName} block`)
|
|
36
|
+
.optional(),
|
|
37
|
+
])
|
|
38
|
+
.sort(([a], [b]) => a.localeCompare(b))),
|
|
39
|
+
...Object.fromEntries(namedBlocks
|
|
40
|
+
.map((blockName) => [
|
|
41
|
+
createBlockRefinementOption("exclude", blockName),
|
|
30
42
|
z
|
|
31
43
|
.boolean()
|
|
32
44
|
.describe(`whether to exclude the ${blockName} block`)
|
|
@@ -35,10 +47,15 @@ export function createStratumTemplate(base, templateDefinition) {
|
|
|
35
47
|
.sort(([a], [b]) => a.localeCompare(b))),
|
|
36
48
|
},
|
|
37
49
|
prepare(context) {
|
|
50
|
+
// TODO: Why are these type assertions necessary?
|
|
51
|
+
// https://github.com/JoshuaKGoldberg/bingo/issues/287
|
|
38
52
|
return {
|
|
39
53
|
preset: () => {
|
|
54
|
+
if (context.options.preset) {
|
|
55
|
+
return context.options.preset;
|
|
56
|
+
}
|
|
40
57
|
// TODO: It would be better to run the base.prepare first to generate option defaults.
|
|
41
|
-
//
|
|
58
|
+
// https://github.com/JoshuaKGoldberg/bingo/issues/289
|
|
42
59
|
const preset = context.files && inferPreset(context, templateDefinition.presets);
|
|
43
60
|
if (preset) {
|
|
44
61
|
context.log(`Detected ${chalk.blue(`--preset ${preset}`)} from existing files on disk.`);
|
|
@@ -46,12 +63,10 @@ export function createStratumTemplate(base, templateDefinition) {
|
|
|
46
63
|
return preset;
|
|
47
64
|
},
|
|
48
65
|
...(base.prepare?.(context) ?? {}),
|
|
49
|
-
};
|
|
66
|
+
};
|
|
50
67
|
},
|
|
51
68
|
produce(context) {
|
|
52
|
-
return produceStratumTemplate(template,
|
|
53
|
-
// TODO: Why is this type assertion necessary?
|
|
54
|
-
context);
|
|
69
|
+
return produceStratumTemplate(template, context);
|
|
55
70
|
},
|
|
56
71
|
};
|
|
57
72
|
return template;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStratumTemplate.js","sourceRoot":"","sources":["../../src/creators/createStratumTemplate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACN,sBAAsB,GAEtB,MAAM,wCAAwC,CAAC;AAOhD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"createStratumTemplate.js","sourceRoot":"","sources":["../../src/creators/createStratumTemplate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allPropertiesLazy } from "all-properties-lazy";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import { describe, expect, it, vi } from "vitest";
|
|
4
4
|
import { z } from "zod";
|
|
@@ -48,6 +48,7 @@ describe("createStratumTemplate", () => {
|
|
|
48
48
|
expect(Object.keys(template.options)).toEqual([
|
|
49
49
|
"name",
|
|
50
50
|
"preset",
|
|
51
|
+
"add-example-block",
|
|
51
52
|
"exclude-example-block",
|
|
52
53
|
]);
|
|
53
54
|
});
|
|
@@ -61,10 +62,23 @@ describe("createStratumTemplate", () => {
|
|
|
61
62
|
options: mockOptions,
|
|
62
63
|
take: vi.fn(),
|
|
63
64
|
});
|
|
64
|
-
const options = await
|
|
65
|
+
const options = await allPropertiesLazy(lazyOptions);
|
|
65
66
|
expect(mockInferPreset).not.toHaveBeenCalled();
|
|
66
67
|
expect(options).toEqual({});
|
|
67
68
|
});
|
|
69
|
+
it("does not call inferPreset when a preset option is manually provided", async () => {
|
|
70
|
+
const preset = "example";
|
|
71
|
+
const lazyOptions = templateWithPreset.prepare({
|
|
72
|
+
log: mockLog,
|
|
73
|
+
// TODO: why is this type assertion necessary?
|
|
74
|
+
// https://github.com/JoshuaKGoldberg/bingo/issues/287
|
|
75
|
+
options: { ...mockOptions, preset },
|
|
76
|
+
take: vi.fn(),
|
|
77
|
+
});
|
|
78
|
+
const options = await allPropertiesLazy(lazyOptions);
|
|
79
|
+
expect(mockInferPreset).not.toHaveBeenCalled();
|
|
80
|
+
expect(options).toEqual({ preset });
|
|
81
|
+
});
|
|
68
82
|
it("does not display a log when inferPreset returns undefined", async () => {
|
|
69
83
|
mockInferPreset.mockReturnValueOnce(undefined);
|
|
70
84
|
const lazyOptions = templateWithPreset.prepare({
|
|
@@ -75,7 +89,7 @@ describe("createStratumTemplate", () => {
|
|
|
75
89
|
options: mockOptions,
|
|
76
90
|
take: vi.fn(),
|
|
77
91
|
});
|
|
78
|
-
const options = await
|
|
92
|
+
const options = await allPropertiesLazy(lazyOptions);
|
|
79
93
|
expect(mockLog).not.toHaveBeenCalled();
|
|
80
94
|
expect(options).toEqual({});
|
|
81
95
|
});
|
|
@@ -90,7 +104,7 @@ describe("createStratumTemplate", () => {
|
|
|
90
104
|
options: mockOptions,
|
|
91
105
|
take: vi.fn(),
|
|
92
106
|
});
|
|
93
|
-
const options = await
|
|
107
|
+
const options = await allPropertiesLazy(lazyOptions);
|
|
94
108
|
expect(mockLog).toHaveBeenCalledWith(`Detected ${chalk.blue(`--preset example`)} from existing files on disk.`);
|
|
95
109
|
expect(options).toEqual({ preset: presetName });
|
|
96
110
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStratumTemplate.test.js","sourceRoot":"","sources":["../../src/creators/createStratumTemplate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"createStratumTemplate.test.js","sourceRoot":"","sources":["../../src/creators/createStratumTemplate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export function inferPreset(context, presets) {
|
|
|
5
5
|
const blockSettings = {
|
|
6
6
|
...context,
|
|
7
7
|
// TODO: It would be better to run the base.prepare first to generate option defaults.
|
|
8
|
-
//
|
|
8
|
+
// https://github.com/JoshuaKGoldberg/bingo/issues/289
|
|
9
9
|
options: context.options,
|
|
10
10
|
};
|
|
11
11
|
let record;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inferPreset.js","sourceRoot":"","sources":["../../src/creators/inferPreset.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,cAAc,GAEd,MAAM,OAAO,CAAC;AAIf,OAAO,EACN,YAAY,GAEZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,UAAU,WAAW,CAC1B,OAGC,EACD,OAA+B;IAE/B,MAAM,aAAa,GAA6C;QAC/D,GAAG,OAAO;QAEV,sFAAsF;QACtF,
|
|
1
|
+
{"version":3,"file":"inferPreset.js","sourceRoot":"","sources":["../../src/creators/inferPreset.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./creators/createBase.js";
|
|
2
2
|
export * from "./producers/produceBlock.js";
|
|
3
3
|
export * from "./producers/producePreset.js";
|
|
4
|
+
export * from "./runners/runBlock.js";
|
|
5
|
+
export * from "./runners/runPreset.js";
|
|
4
6
|
export type * from "./types/bases.js";
|
|
5
7
|
export type * from "./types/blocks.js";
|
|
6
8
|
export type * from "./types/creations.js";
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,mBAAmB,CAAC;AACvC,mBAAmB,sBAAsB,CAAC;AAC1C,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,mBAAmB,CAAC;AACvC,mBAAmB,sBAAsB,CAAC;AAC1C,mBAAmB,oBAAoB,CAAC;AACxC,mBAAmB,wBAAwB,CAAC"}
|
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeAddonsIfUpdated.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeAddonsIfUpdated.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mergeAddonsIfUpdated.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeAddonsIfUpdated.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACpD,cAAc,EAAE,CAAC,EACjB,SAAS,EAAE,CAAC,GACV,KAAK,GAAG,CAAC,GAAG,SAAS,CA+DvB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import hashObject from "hash-object";
|
|
1
2
|
export function mergeAddonsIfUpdated(existingAddons, newAddons) {
|
|
2
3
|
const newEntries = Object.entries(newAddons);
|
|
3
4
|
const result = { ...existingAddons };
|
|
@@ -15,9 +16,9 @@ export function mergeAddonsIfUpdated(existingAddons, newAddons) {
|
|
|
15
16
|
if (!Array.isArray(value)) {
|
|
16
17
|
return new Error("Mismatched merging addons (Array.isArray).");
|
|
17
18
|
}
|
|
18
|
-
const existingElementKeys = new Set(result[key].map(
|
|
19
|
+
const existingElementKeys = new Set(result[key].map((value) => createHash(value)));
|
|
19
20
|
for (const newElement of value) {
|
|
20
|
-
const newElementKey =
|
|
21
|
+
const newElementKey = createHash(newElement);
|
|
21
22
|
if (!existingElementKeys.has(newElementKey)) {
|
|
22
23
|
existingElementKeys.add(newElementKey);
|
|
23
24
|
result[key].push(newElement);
|
|
@@ -46,8 +47,9 @@ export function mergeAddonsIfUpdated(existingAddons, newAddons) {
|
|
|
46
47
|
}
|
|
47
48
|
return updated ? result : undefined;
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
function createHash(value) {
|
|
51
|
+
return typeof value === "object"
|
|
52
|
+
? hashObject(value)
|
|
53
|
+
: String(value);
|
|
52
54
|
}
|
|
53
55
|
//# sourceMappingURL=mergeAddonsIfUpdated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeAddonsIfUpdated.js","sourceRoot":"","sources":["../../src/mergers/mergeAddonsIfUpdated.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CACnC,cAAiB,EACjB,SAAY;IAEZ,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAyB,CAAC;IACrE,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IAEvE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7C,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,GAAG,KAAmB,CAAC;YAClC,SAAS;QACV,CAAC;QAED,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YACnB,SAAS;QACV,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"mergeAddonsIfUpdated.js","sourceRoot":"","sources":["../../src/mergers/mergeAddonsIfUpdated.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,UAAU,oBAAoB,CACnC,cAAiB,EACjB,SAAY;IAEZ,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAyB,CAAC;IACrE,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IAEvE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7C,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,GAAG,KAAmB,CAAC;YAClC,SAAS;QACV,CAAC;QAED,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YACnB,SAAS;QACV,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAClC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAC7C,CAAC;YAEF,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC7C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC7C,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC7B,OAAO,GAAG,IAAI,CAAC;gBAChB,CAAC;YACF,CAAC;YAED,SAAS;QACV,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,WAAW,EAAE,CAAC;gBACjB,IAAI,WAAW,YAAY,KAAK,EAAE,CAAC;oBAClC,OAAO,WAAW,CAAC;gBACpB,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,GAAG,WAAyB,CAAC;gBACxC,OAAO,GAAG,IAAI,CAAC;YAChB,CAAC;YAED,SAAS;QACV,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,KAAK,CACf,8BAA8B,MAAM,CAAC,GAAG,CAAW,QAAQ,KAAe,IAAI,CAC9E,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC/B,CAAC,CAAC,UAAU,CAAC,KAAgC,CAAC;QAC9C,CAAC,CAAC,MAAM,CAAC,KAAqD,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { BlockCreation } from "../types/creations.js";
|
|
|
2
2
|
export declare function mergeBlockCreations<Options extends object>(first: Partial<BlockCreation<Options>>, second: Partial<BlockCreation<Options>>): {
|
|
3
3
|
addons: import("../types/creations.js").CreatedBlockAddons<any, Options>[];
|
|
4
4
|
files?: import("bingo-fs").CreatedDirectory | undefined;
|
|
5
|
-
requests?: import("bingo").CreatedRequest[] | undefined;
|
|
5
|
+
requests?: import("bingo-requests").CreatedRequest[] | undefined;
|
|
6
6
|
scripts?: import("bingo").CreatedScript[] | undefined;
|
|
7
7
|
suggestions?: string[] | undefined;
|
|
8
8
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AboutBase, AboutBaseWithName } from "bingo";
|
|
2
|
+
export interface HasAbout {
|
|
3
|
+
about: AboutBase;
|
|
4
|
+
}
|
|
5
|
+
export interface HasAboutWithName {
|
|
6
|
+
about: AboutBaseWithName;
|
|
7
|
+
}
|
|
8
|
+
export declare function hasName<T extends Partial<HasAbout>>(value: T): value is HasAboutWithName & T;
|
|
9
|
+
//# sourceMappingURL=hasName.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasName.d.ts","sourceRoot":"","sources":["../../src/predicates/hasName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAErD,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,iBAAiB,CAAC;CACzB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,QAAQ,CAAC,EAClD,KAAK,EAAE,CAAC,GACN,KAAK,IAAI,gBAAgB,GAAG,CAAC,CAE/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasName.js","sourceRoot":"","sources":["../../src/predicates/hasName.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,OAAO,CACtB,KAAQ;IAER,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC5B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Block } from "../types/blocks.js";
|
|
2
|
-
import {
|
|
3
|
-
export declare function applyBlockModifications<Options extends object>(initial: Block<object | undefined, Options>[], { add, exclude }?:
|
|
2
|
+
import { BlockModifications } from "../types/settings.js";
|
|
3
|
+
export declare function applyBlockModifications<Options extends object>(initial: Block<object | undefined, Options>[], { add, exclude }?: BlockModifications<Options>): Block<object | undefined, Options>[];
|
|
4
4
|
//# sourceMappingURL=applyBlockModifications.d.ts.map
|