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
package/LICENSE.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# MIT License
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
'Software'), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<h1 align="center">bingo-stratum</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">Highly composable, customizable templating engine for <a href="https://create.bingo">Bingo</a>. 🏭</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://github.com/JoshuaKGoldberg/bingo/blob/main/.github/CODE_OF_CONDUCT.md" target="_blank"><img alt="🤝 Code of Conduct: Kept" src="https://img.shields.io/badge/%F0%9F%A4%9D_code_of_conduct-kept-21bb42" /></a>
|
|
7
|
+
<a href="https://codecov.io/gh/JoshuaKGoldberg/bingo" target="_blank"><img alt="🧪 Coverage" src="https://img.shields.io/codecov/c/github/JoshuaKGoldberg/bingo?label=%F0%9F%A7%AA%20coverage" /></a>
|
|
8
|
+
<a href="https://github.com/JoshuaKGoldberg/bingo/blob/main/LICENSE.md" target="_blank"><img alt="📝 License: MIT" src="https://img.shields.io/badge/%F0%9F%93%9D_license-MIT-21bb42.svg"></a>
|
|
9
|
+
<a href="http://npmjs.com/package/bingo-testers"><img alt="📦 npm version" src="https://img.shields.io/npm/v/bingo-testers?color=21bb42&label=%F0%9F%93%A6%20npm" /></a>
|
|
10
|
+
<img alt="💪 TypeScript: Strict" src="https://img.shields.io/badge/%F0%9F%92%AA_typescript-strict-21bb42.svg" />
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
See **[create.bingo > Templating Engines > Stratum](https://create.bingo/engines/stratum)** for documentation.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNoDuplicateBlocks copy.d.ts","sourceRoot":"","sources":["../../src/creators/assertNoDuplicateBlocks copy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,MAAM,EAC7D,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAY3C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function assertNoDuplicateBlocks(presetDefinition) {
|
|
2
|
+
const presetName = getName(presetDefinition);
|
|
3
|
+
const seen = new Set();
|
|
4
|
+
for (const block of presetDefinition.blocks) {
|
|
5
|
+
if (seen.has(block)) {
|
|
6
|
+
throw new Error(`Preset ${presetName} has duplicate Block: ${getName(block)}`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function getName(value) {
|
|
11
|
+
return value.about?.name ?? "(anonymous)";
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=assertNoDuplicateBlocks%20copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNoDuplicateBlocks copy.js","sourceRoot":"","sources":["../../src/creators/assertNoDuplicateBlocks copy.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,uBAAuB,CACtC,gBAA2C;IAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACd,UAAU,UAAU,yBAAyB,OAAO,CAAC,KAAK,CAAC,EAAE,CAC7D,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,OAAO,CAAC,KAA4B;IAC5C,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,aAAa,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNoDuplicateBlocks.d.ts","sourceRoot":"","sources":["../../src/creators/assertNoDuplicateBlocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,MAAM,EAC7D,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAY3C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function assertNoDuplicateBlocks(presetDefinition) {
|
|
2
|
+
const presetName = getName(presetDefinition);
|
|
3
|
+
const seen = new Set();
|
|
4
|
+
for (const block of presetDefinition.blocks) {
|
|
5
|
+
if (seen.has(block)) {
|
|
6
|
+
throw new Error(`Preset ${presetName} has duplicate Block: ${getName(block)}`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function getName(value) {
|
|
11
|
+
return value.about?.name ?? "(anonymous)";
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=assertNoDuplicateBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNoDuplicateBlocks.js","sourceRoot":"","sources":["../../src/creators/assertNoDuplicateBlocks.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,uBAAuB,CACtC,gBAA2C;IAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACd,UAAU,UAAU,yBAAyB,OAAO,CAAC,KAAK,CAAC,EAAE,CAC7D,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,OAAO,CAAC,KAA4B;IAC5C,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,aAAa,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNoPresetOption.d.ts","sourceRoot":"","sources":["../../src/creators/assertNoPresetOption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,wBAAgB,oBAAoB,CAAC,YAAY,SAAS,QAAQ,EACjE,cAAc,EAAE,cAAc,CAAC,YAAY,CAAC,QAO5C"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function assertNoPresetOption(baseDefinition) {
|
|
2
|
+
// https://github.com/typescript-eslint/typescript-eslint/issues/6632
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
4
|
+
if (baseDefinition.options.preset) {
|
|
5
|
+
throw new Error(`Bases should not declare a preset option.`);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=assertNoPresetOption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertNoPresetOption.js","sourceRoot":"","sources":["../../src/creators/assertNoPresetOption.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,oBAAoB,CACnC,cAA4C;IAE5C,qEAAqE;IACrE,uEAAuE;IACvE,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9D,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBase.d.ts","sourceRoot":"","sources":["../../src/creators/createBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAInE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAiBzD,wBAAgB,UAAU,CAAC,YAAY,SAAS,QAAQ,EACvD,cAAc,EAAE,cAAc,CAAC,YAAY,CAAC,GAC1C,IAAI,CAAC,YAAY,CAAC,CAgFpB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { BaseOptionsFor } from "../types/bases.js";
|
|
3
|
+
declare const zContributor: z.ZodObject<{
|
|
4
|
+
avatar_url: z.ZodString;
|
|
5
|
+
contributions: z.ZodArray<z.ZodString, "many">;
|
|
6
|
+
login: z.ZodString;
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
profile: z.ZodString;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
avatar_url: string;
|
|
11
|
+
contributions: string[];
|
|
12
|
+
login: string;
|
|
13
|
+
name: string;
|
|
14
|
+
profile: string;
|
|
15
|
+
}, {
|
|
16
|
+
avatar_url: string;
|
|
17
|
+
contributions: string[];
|
|
18
|
+
login: string;
|
|
19
|
+
name: string;
|
|
20
|
+
profile: string;
|
|
21
|
+
}>;
|
|
22
|
+
export type Contributor = z.infer<typeof zContributor>;
|
|
23
|
+
export declare const base: import("../types/bases.js").Base<{
|
|
24
|
+
access: z.ZodUnion<[z.ZodLiteral<"public">, z.ZodLiteral<"restricted">]>;
|
|
25
|
+
author: z.ZodOptional<z.ZodString>;
|
|
26
|
+
bin: z.ZodOptional<z.ZodString>;
|
|
27
|
+
contributors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
28
|
+
avatar_url: z.ZodString;
|
|
29
|
+
contributions: z.ZodArray<z.ZodString, "many">;
|
|
30
|
+
login: z.ZodString;
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
profile: z.ZodString;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
avatar_url: string;
|
|
35
|
+
contributions: string[];
|
|
36
|
+
login: string;
|
|
37
|
+
name: string;
|
|
38
|
+
profile: string;
|
|
39
|
+
}, {
|
|
40
|
+
avatar_url: string;
|
|
41
|
+
contributions: string[];
|
|
42
|
+
login: string;
|
|
43
|
+
name: string;
|
|
44
|
+
profile: string;
|
|
45
|
+
}>, "many">>;
|
|
46
|
+
description: z.ZodDefault<z.ZodString>;
|
|
47
|
+
directory: z.ZodString;
|
|
48
|
+
documentation: z.ZodOptional<z.ZodString>;
|
|
49
|
+
email: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
50
|
+
github: z.ZodString;
|
|
51
|
+
npm: z.ZodString;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
github: string;
|
|
54
|
+
npm: string;
|
|
55
|
+
}, {
|
|
56
|
+
github: string;
|
|
57
|
+
npm: string;
|
|
58
|
+
}>]>, {
|
|
59
|
+
github: string;
|
|
60
|
+
npm: string;
|
|
61
|
+
}, string | {
|
|
62
|
+
github: string;
|
|
63
|
+
npm: string;
|
|
64
|
+
}>;
|
|
65
|
+
explainer: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
66
|
+
funding: z.ZodOptional<z.ZodString>;
|
|
67
|
+
guide: z.ZodOptional<z.ZodObject<{
|
|
68
|
+
href: z.ZodString;
|
|
69
|
+
title: z.ZodString;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
href: string;
|
|
72
|
+
title: string;
|
|
73
|
+
}, {
|
|
74
|
+
href: string;
|
|
75
|
+
title: string;
|
|
76
|
+
}>>;
|
|
77
|
+
keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
78
|
+
logo: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
alt: z.ZodString;
|
|
80
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
src: z.ZodString;
|
|
82
|
+
width: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
}, "strip", z.ZodTypeAny, {
|
|
84
|
+
alt: string;
|
|
85
|
+
src: string;
|
|
86
|
+
height?: number | undefined;
|
|
87
|
+
width?: number | undefined;
|
|
88
|
+
}, {
|
|
89
|
+
alt: string;
|
|
90
|
+
src: string;
|
|
91
|
+
height?: number | undefined;
|
|
92
|
+
width?: number | undefined;
|
|
93
|
+
}>>;
|
|
94
|
+
node: z.ZodOptional<z.ZodObject<{
|
|
95
|
+
minimum: z.ZodString;
|
|
96
|
+
pinned: z.ZodOptional<z.ZodString>;
|
|
97
|
+
}, "strip", z.ZodTypeAny, {
|
|
98
|
+
minimum: string;
|
|
99
|
+
pinned?: string | undefined;
|
|
100
|
+
}, {
|
|
101
|
+
minimum: string;
|
|
102
|
+
pinned?: string | undefined;
|
|
103
|
+
}>>;
|
|
104
|
+
owner: z.ZodString;
|
|
105
|
+
packageData: z.ZodOptional<z.ZodObject<{
|
|
106
|
+
dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
107
|
+
devDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
108
|
+
scripts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
109
|
+
}, "strip", z.ZodTypeAny, {
|
|
110
|
+
dependencies?: Record<string, string> | undefined;
|
|
111
|
+
devDependencies?: Record<string, string> | undefined;
|
|
112
|
+
scripts?: Record<string, string> | undefined;
|
|
113
|
+
}, {
|
|
114
|
+
dependencies?: Record<string, string> | undefined;
|
|
115
|
+
devDependencies?: Record<string, string> | undefined;
|
|
116
|
+
scripts?: Record<string, string> | undefined;
|
|
117
|
+
}>>;
|
|
118
|
+
repository: z.ZodString;
|
|
119
|
+
title: z.ZodString;
|
|
120
|
+
usage: z.ZodOptional<z.ZodString>;
|
|
121
|
+
version: z.ZodOptional<z.ZodString>;
|
|
122
|
+
}>;
|
|
123
|
+
export type BaseOptions = BaseOptionsFor<typeof base>;
|
|
124
|
+
export {};
|
|
125
|
+
//# sourceMappingURL=createBase.e2e.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBase.e2e.test.d.ts","sourceRoot":"","sources":["../../src/creators/createBase.e2e.test.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAgBnD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAMhB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Mf,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// import { BaseOptionsFor, createBase } from "bingo-stratum";
|
|
2
|
+
// import { execaCommand } from "execa";
|
|
3
|
+
// import gitRemoteOriginUrl from "git-remote-origin-url";
|
|
4
|
+
// import gitUrlParse from "git-url-parse";
|
|
5
|
+
// import { inputFromFile } from "input-from-file";
|
|
6
|
+
// import { inputFromFileJSON } from "input-from-file-json";
|
|
7
|
+
// import { inputFromScript } from "input-from-script";
|
|
8
|
+
// import lazyValue from "lazy-value";
|
|
9
|
+
// import npmUser from "npm-user";
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { createBase } from "./createBase.js";
|
|
12
|
+
// import { parsePackageAuthor } from "./options/parsePackageAuthor.js";
|
|
13
|
+
// import { readDefaultsFromReadme } from "./options/readDefaultsFromReadme.js";
|
|
14
|
+
// import { readDescription } from "./options/readDescription.js";
|
|
15
|
+
// import { readDocumentation } from "./options/readDocumentation.js";
|
|
16
|
+
// import { readEmails } from "./options/readEmails.js";
|
|
17
|
+
// import { readFileSafe } from "./options/readFileSafe.js";
|
|
18
|
+
// import { readFunding } from "./options/readFunding.js";
|
|
19
|
+
// import { readGuide } from "./options/readGuide.js";
|
|
20
|
+
// import { readPackageData } from "./options/readPackageData.js";
|
|
21
|
+
// import { AllContributorsData } from "./types.js";
|
|
22
|
+
// import { swallowError } from "./utils/swallowError.js";
|
|
23
|
+
// import { tryCatchLazyValueAsync } from "./utils/tryCatchLazyValueAsync.js";
|
|
24
|
+
const zContributor = z.object({
|
|
25
|
+
avatar_url: z.string(),
|
|
26
|
+
contributions: z.array(z.string()),
|
|
27
|
+
login: z.string(),
|
|
28
|
+
name: z.string(),
|
|
29
|
+
profile: z.string(),
|
|
30
|
+
});
|
|
31
|
+
export const base = createBase({
|
|
32
|
+
options: {
|
|
33
|
+
access: z
|
|
34
|
+
.union([z.literal("public"), z.literal("restricted")])
|
|
35
|
+
.describe("which `npm publish --access` to release npm packages with"),
|
|
36
|
+
author: z
|
|
37
|
+
.string()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("username on npm to publish packages under"),
|
|
40
|
+
bin: z
|
|
41
|
+
.string()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('value to set in `package.json`\'s `"bin"` property'),
|
|
44
|
+
contributors: z
|
|
45
|
+
.array(zContributor)
|
|
46
|
+
.optional()
|
|
47
|
+
.describe("AllContributors contributors to store in .all-contributorsrc"),
|
|
48
|
+
description: z
|
|
49
|
+
.string()
|
|
50
|
+
.default("A very lovely package. Hooray! 💖")
|
|
51
|
+
.describe("'Sentence case.' description of the repository"),
|
|
52
|
+
directory: z.string().describe("Directory to create the repository in"),
|
|
53
|
+
documentation: z
|
|
54
|
+
.string()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("any additional docs to add to .github/DEVELOPMENT.md"),
|
|
57
|
+
email: z
|
|
58
|
+
.union([
|
|
59
|
+
z.string(),
|
|
60
|
+
z.object({
|
|
61
|
+
github: z.string(),
|
|
62
|
+
npm: z.string(),
|
|
63
|
+
}),
|
|
64
|
+
])
|
|
65
|
+
.transform((email) => typeof email === "string" ? { github: email, npm: email } : email)
|
|
66
|
+
.describe("email address to be listed as the point of contact in docs and packages"),
|
|
67
|
+
explainer: z
|
|
68
|
+
.array(z.string())
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("additional README.md sentence(s) describing the package"),
|
|
71
|
+
funding: z
|
|
72
|
+
.string()
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("GitHub organization or username to mention in `funding.yml`"),
|
|
75
|
+
guide: z
|
|
76
|
+
.object({
|
|
77
|
+
href: z.string(),
|
|
78
|
+
title: z.string(),
|
|
79
|
+
})
|
|
80
|
+
.optional()
|
|
81
|
+
.describe("link to a contribution guide to place at the top of development docs"),
|
|
82
|
+
keywords: z
|
|
83
|
+
.array(z.string())
|
|
84
|
+
.optional()
|
|
85
|
+
.describe("any number of keywords to include in `package.json`"),
|
|
86
|
+
logo: z
|
|
87
|
+
.object({
|
|
88
|
+
alt: z.string(),
|
|
89
|
+
height: z.number().optional(),
|
|
90
|
+
src: z.string(),
|
|
91
|
+
width: z.number().optional(),
|
|
92
|
+
})
|
|
93
|
+
.optional()
|
|
94
|
+
.describe("local image file in the repository to display near the top of the README.md"),
|
|
95
|
+
node: z
|
|
96
|
+
.object({
|
|
97
|
+
minimum: z.string(),
|
|
98
|
+
pinned: z.string().optional(),
|
|
99
|
+
})
|
|
100
|
+
.optional()
|
|
101
|
+
.describe("node.js engine version(s) to pin and require a minimum of"),
|
|
102
|
+
owner: z
|
|
103
|
+
.string()
|
|
104
|
+
.describe("GitHub organization or user the repository is underneath"),
|
|
105
|
+
packageData: z
|
|
106
|
+
.object({
|
|
107
|
+
dependencies: z.record(z.string(), z.string()).optional(),
|
|
108
|
+
devDependencies: z.record(z.string(), z.string()).optional(),
|
|
109
|
+
scripts: z.record(z.string(), z.string()).optional(),
|
|
110
|
+
})
|
|
111
|
+
.optional()
|
|
112
|
+
.describe("additional properties to include in `package.json`"),
|
|
113
|
+
repository: z
|
|
114
|
+
.string()
|
|
115
|
+
.describe("'kebab-case' or 'PascalCase' title of the repository"),
|
|
116
|
+
title: z.string().describe("'Title Case' title for the repository"),
|
|
117
|
+
usage: z
|
|
118
|
+
.string()
|
|
119
|
+
.optional()
|
|
120
|
+
.describe("markdown docs to put in README.md under the ## Usage heading"),
|
|
121
|
+
version: z
|
|
122
|
+
.string()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe("package version to publish as and store in `package.json`"),
|
|
125
|
+
},
|
|
126
|
+
produce({ options, take }) {
|
|
127
|
+
// const allContributors = lazyValue(async () => {
|
|
128
|
+
// const contributions = (await take(inputFromFileJSON, {
|
|
129
|
+
// filePath: ".all-contributorsrc",
|
|
130
|
+
// })) as AllContributorsData;
|
|
131
|
+
// return contributions.contributors;
|
|
132
|
+
// });
|
|
133
|
+
// const documentation = lazyValue(async () => readDocumentation(take));
|
|
134
|
+
// const nvmrc = lazyValue(
|
|
135
|
+
// async () =>
|
|
136
|
+
// await take(inputFromFile, {
|
|
137
|
+
// filePath: ".nvmrc",
|
|
138
|
+
// }),
|
|
139
|
+
// );
|
|
140
|
+
// const githubCliUser = lazyValue(async () => {
|
|
141
|
+
// return swallowError(
|
|
142
|
+
// await take(inputFromScript, {
|
|
143
|
+
// command: "gh config get user -h github.com",
|
|
144
|
+
// }),
|
|
145
|
+
// )?.stdout?.toString();
|
|
146
|
+
// });
|
|
147
|
+
// const readme = lazyValue(async () => await readFileSafe("README.md", ""));
|
|
148
|
+
// // TODO: Make these all use take
|
|
149
|
+
// const gitDefaults = tryCatchLazyValueAsync(async () =>
|
|
150
|
+
// gitUrlParse(await gitRemoteOriginUrl()),
|
|
151
|
+
// );
|
|
152
|
+
// const npmDefaults = tryCatchLazyValueAsync(async () => {
|
|
153
|
+
// const whoami = (await execaCommand(`npm whoami`)).stdout;
|
|
154
|
+
// return whoami ? await npmUser(whoami) : undefined;
|
|
155
|
+
// });
|
|
156
|
+
// const packageData = lazyValue(readPackageData);
|
|
157
|
+
// const packageAuthor = lazyValue(async () =>
|
|
158
|
+
// parsePackageAuthor(await packageData()),
|
|
159
|
+
// );
|
|
160
|
+
// const author = lazyValue(
|
|
161
|
+
// async () =>
|
|
162
|
+
// (await packageAuthor()).author ??
|
|
163
|
+
// (await npmDefaults())?.name ??
|
|
164
|
+
// options.owner,
|
|
165
|
+
// );
|
|
166
|
+
// const node = lazyValue(async () => {
|
|
167
|
+
// const { engines } = await packageData();
|
|
168
|
+
// return {
|
|
169
|
+
// minimum:
|
|
170
|
+
// (engines?.node && /[\d+.]+/.exec(engines.node))?.[0] ?? "18.3.0",
|
|
171
|
+
// pinned: swallowError(await nvmrc())?.trim() ?? "20.18.0",
|
|
172
|
+
// };
|
|
173
|
+
// });
|
|
174
|
+
// const version = lazyValue(async () => (await packageData()).version);
|
|
175
|
+
// const repository = lazyValue(
|
|
176
|
+
// async () =>
|
|
177
|
+
// options.repository ??
|
|
178
|
+
// (await gitDefaults())?.name ??
|
|
179
|
+
// (await packageData()).name ??
|
|
180
|
+
// options.directory,
|
|
181
|
+
// );
|
|
182
|
+
// return {
|
|
183
|
+
// access: "public" as const,
|
|
184
|
+
// author,
|
|
185
|
+
// bin: async () => (await packageData()).bin,
|
|
186
|
+
// contributors: allContributors,
|
|
187
|
+
// description: async () => await readDescription(packageData, readme),
|
|
188
|
+
// documentation,
|
|
189
|
+
// email: async () => readEmails(npmDefaults, packageAuthor),
|
|
190
|
+
// funding: readFunding,
|
|
191
|
+
// guide: readGuide,
|
|
192
|
+
// login: author,
|
|
193
|
+
// node,
|
|
194
|
+
// owner: async () =>
|
|
195
|
+
// (await gitDefaults())?.organization ??
|
|
196
|
+
// (await packageAuthor()).author ??
|
|
197
|
+
// (await githubCliUser()),
|
|
198
|
+
// packageData: async () => {
|
|
199
|
+
// const original = await packageData();
|
|
200
|
+
// return {
|
|
201
|
+
// dependencies: original.dependencies,
|
|
202
|
+
// devDependencies: original.devDependencies,
|
|
203
|
+
// scripts: original.scripts,
|
|
204
|
+
// };
|
|
205
|
+
// },
|
|
206
|
+
// repository,
|
|
207
|
+
// ...readDefaultsFromReadme(readme, repository),
|
|
208
|
+
// version,
|
|
209
|
+
// };
|
|
210
|
+
return {};
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
//# sourceMappingURL=createBase.e2e.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBase.e2e.test.js","sourceRoot":"","sources":["../../src/creators/createBase.e2e.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { produceStratumTemplate } from "../producers/produceStratumTemplate.js";
|
|
3
|
+
import { assertNoDuplicateBlocks } from "./assertNoDuplicateBlocks.js";
|
|
4
|
+
import { assertNoPresetOption } from "./assertNoPresetOption.js";
|
|
5
|
+
import { applyZodDefaults, isDefinitionWithAddons } from "./utils.js";
|
|
6
|
+
export function createBase(baseDefinition) {
|
|
7
|
+
assertNoPresetOption(baseDefinition);
|
|
8
|
+
function createBlock(blockDefinition) {
|
|
9
|
+
// Blocks without Addons can't be called as functions.
|
|
10
|
+
if (!isDefinitionWithAddons(blockDefinition)) {
|
|
11
|
+
return blockDefinition;
|
|
12
|
+
}
|
|
13
|
+
const addonsSchema = blockDefinition.addons;
|
|
14
|
+
// Blocks with Addons do need to be callable as functions...
|
|
15
|
+
function block(addons) {
|
|
16
|
+
return { addons, block };
|
|
17
|
+
}
|
|
18
|
+
// ...and also still have the Block Definition properties.
|
|
19
|
+
Object.assign(block, blockDefinition);
|
|
20
|
+
block.produce = (context) => {
|
|
21
|
+
return blockDefinition.produce({
|
|
22
|
+
...context,
|
|
23
|
+
addons: applyZodDefaults(addonsSchema, context.addons),
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
return block;
|
|
27
|
+
}
|
|
28
|
+
function createPreset(presetDefinition) {
|
|
29
|
+
assertNoDuplicateBlocks(presetDefinition);
|
|
30
|
+
return {
|
|
31
|
+
...presetDefinition,
|
|
32
|
+
base,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function createStratumTemplate(templateDefinition) {
|
|
36
|
+
const template = {
|
|
37
|
+
...templateDefinition,
|
|
38
|
+
base,
|
|
39
|
+
options: {
|
|
40
|
+
...base.options,
|
|
41
|
+
preset: z.string(),
|
|
42
|
+
},
|
|
43
|
+
produce(context) {
|
|
44
|
+
return produceStratumTemplate(template, context);
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
return template;
|
|
48
|
+
}
|
|
49
|
+
const base = {
|
|
50
|
+
...baseDefinition,
|
|
51
|
+
createBlock,
|
|
52
|
+
createPreset,
|
|
53
|
+
createStratumTemplate,
|
|
54
|
+
};
|
|
55
|
+
return base;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=createBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBase.js","sourceRoot":"","sources":["../../src/creators/createBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAchF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,UAAU,UAAU,CACzB,cAA4C;IAI5C,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAQrC,SAAS,WAAW,CACnB,eAEwC;QAExC,sDAAsD;QACtD,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,EAAE,CAAC;YAC9C,OAAO,eAAe,CAAC;QACxB,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;QAI5C,4DAA4D;QAC5D,SAAS,KAAK,CAAC,MAAc;YAC5B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,0DAA0D;QAC1D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAEtC,KAAK,CAAC,OAAO,GAAG,CAAC,OAAgD,EAAE,EAAE;YACpE,OAAO,eAAe,CAAC,OAAO,CAAC;gBAC9B,GAAG,OAAO;gBACV,MAAM,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC;aACtD,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,KAAyC,CAAC;IAClD,CAAC;IAED,SAAS,YAAY,CACpB,gBAA2C;QAE3C,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;QAE1C,OAAO;YACN,GAAG,gBAAgB;YACnB,IAAI;SACJ,CAAC;IACH,CAAC;IAED,SAAS,qBAAqB,CAC7B,kBAA2D;QAE3D,MAAM,QAAQ,GAAkC;YAC/C,GAAG,kBAAkB;YACrB,IAAI;YACJ,OAAO,EAAE;gBACR,GAAG,IAAI,CAAC,OAAO;gBACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB;YACD,OAAO,CAAC,OAAO;gBACd,OAAO,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;SACD,CAAC;QAEF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,GAAuB;QAChC,GAAG,cAAc;QACjB,WAAW;QACX,YAAY;QACZ,qBAAqB;KACrB,CAAC;IAEF,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBase.test.d.ts","sourceRoot":"","sources":["../../src/creators/createBase.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
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,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const production = block.produce({ options: { name: "abc" } });
|
|
21
|
+
expect(production).toEqual({
|
|
22
|
+
files: {
|
|
23
|
+
"name.txt": "abc",
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe("with Addons", () => {
|
|
29
|
+
it("applies Zod defaults when producing with Addons", () => {
|
|
30
|
+
const block = base.createBlock({
|
|
31
|
+
addons: {
|
|
32
|
+
names: z.array(z.string()).default([]),
|
|
33
|
+
},
|
|
34
|
+
produce({ addons, options }) {
|
|
35
|
+
const { names } = addons;
|
|
36
|
+
return {
|
|
37
|
+
files: {
|
|
38
|
+
"names.txt": [options.name, ...names].join("\n"),
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
const production = block.produce({
|
|
44
|
+
addons: { names: ["def"] },
|
|
45
|
+
options: { name: "abc" },
|
|
46
|
+
});
|
|
47
|
+
expect(production).toEqual({
|
|
48
|
+
files: {
|
|
49
|
+
"names.txt": "abc\ndef",
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=createBase.test.js.map
|
|
@@ -0,0 +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;6BACxB;yBACD,CAAC;oBACH,CAAC;iBACD,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAE/D,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;oBAC1B,KAAK,EAAE;wBACN,UAAU,EAAE,KAAK;qBACjB;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,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;6BAChD;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;iBACxB,CAAC,CAAC;gBAEH,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;oBAC1B,KAAK,EAAE;wBACN,WAAW,EAAE,UAAU;qBACvB;iBACD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDefinitionName.d.ts","sourceRoot":"","sources":["../../src/creators/getDefinitionName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,UAE7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDefinitionName.js","sourceRoot":"","sources":["../../src/creators/getDefinitionName.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,KAA4B;IAC7D,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,aAAa,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getName.d.ts","sourceRoot":"","sources":["../../src/creators/getName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,UAE7D"}
|