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.
Files changed (175) hide show
  1. package/LICENSE.md +20 -0
  2. package/README.md +13 -0
  3. package/lib/creators/assertNoDuplicateBlocks copy.d.ts +3 -0
  4. package/lib/creators/assertNoDuplicateBlocks copy.d.ts.map +1 -0
  5. package/lib/creators/assertNoDuplicateBlocks copy.js +13 -0
  6. package/lib/creators/assertNoDuplicateBlocks copy.js.map +1 -0
  7. package/lib/creators/assertNoDuplicateBlocks.d.ts +3 -0
  8. package/lib/creators/assertNoDuplicateBlocks.d.ts.map +1 -0
  9. package/lib/creators/assertNoDuplicateBlocks.js +13 -0
  10. package/lib/creators/assertNoDuplicateBlocks.js.map +1 -0
  11. package/lib/creators/assertNoPresetOption.d.ts +4 -0
  12. package/lib/creators/assertNoPresetOption.d.ts.map +1 -0
  13. package/lib/creators/assertNoPresetOption.js +8 -0
  14. package/lib/creators/assertNoPresetOption.js.map +1 -0
  15. package/lib/creators/createBase.d.ts +4 -0
  16. package/lib/creators/createBase.d.ts.map +1 -0
  17. package/lib/creators/createBase.e2e.test.d.ts +125 -0
  18. package/lib/creators/createBase.e2e.test.d.ts.map +1 -0
  19. package/lib/creators/createBase.e2e.test.js +213 -0
  20. package/lib/creators/createBase.e2e.test.js.map +1 -0
  21. package/lib/creators/createBase.js +57 -0
  22. package/lib/creators/createBase.js.map +1 -0
  23. package/lib/creators/createBase.test.d.ts +2 -0
  24. package/lib/creators/createBase.test.d.ts.map +1 -0
  25. package/lib/creators/createBase.test.js +56 -0
  26. package/lib/creators/createBase.test.js.map +1 -0
  27. package/lib/creators/getDefinitionName.d.ts +5 -0
  28. package/lib/creators/getDefinitionName.d.ts.map +1 -0
  29. package/lib/creators/getDefinitionName.js +4 -0
  30. package/lib/creators/getDefinitionName.js.map +1 -0
  31. package/lib/creators/getName.d.ts +5 -0
  32. package/lib/creators/getName.d.ts.map +1 -0
  33. package/lib/creators/getName.js +4 -0
  34. package/lib/creators/getName.js.map +1 -0
  35. package/lib/creators/utils.d.ts +4 -0
  36. package/lib/creators/utils.d.ts.map +1 -0
  37. package/lib/creators/utils.js +8 -0
  38. package/lib/creators/utils.js.map +1 -0
  39. package/lib/index.d.ts +9 -0
  40. package/lib/index.d.ts.map +1 -0
  41. package/lib/index.js +4 -0
  42. package/lib/index.js.map +1 -0
  43. package/lib/mergers/mergeAddons.d.ts +3 -0
  44. package/lib/mergers/mergeAddons.d.ts.map +1 -0
  45. package/lib/mergers/mergeAddons.js +37 -0
  46. package/lib/mergers/mergeAddons.js.map +1 -0
  47. package/lib/mergers/mergeAddons.test.d.ts +2 -0
  48. package/lib/mergers/mergeAddons.test.d.ts.map +1 -0
  49. package/lib/mergers/mergeAddons.test.js +174 -0
  50. package/lib/mergers/mergeAddons.test.js.map +1 -0
  51. package/lib/mergers/mergeAddonsIfUpdated.d.ts +2 -0
  52. package/lib/mergers/mergeAddonsIfUpdated.d.ts.map +1 -0
  53. package/lib/mergers/mergeAddonsIfUpdated.js +53 -0
  54. package/lib/mergers/mergeAddonsIfUpdated.js.map +1 -0
  55. package/lib/mergers/mergeAddonsIfUpdated.test.d.ts +2 -0
  56. package/lib/mergers/mergeAddonsIfUpdated.test.d.ts.map +1 -0
  57. package/lib/mergers/mergeAddonsIfUpdated.test.js +51 -0
  58. package/lib/mergers/mergeAddonsIfUpdated.test.js.map +1 -0
  59. package/lib/mergers/mergeBlockCreations.d.ts +9 -0
  60. package/lib/mergers/mergeBlockCreations.d.ts.map +1 -0
  61. package/lib/mergers/mergeBlockCreations.js +10 -0
  62. package/lib/mergers/mergeBlockCreations.js.map +1 -0
  63. package/lib/predicates/isBase.d.ts +3 -0
  64. package/lib/predicates/isBase.d.ts.map +1 -0
  65. package/lib/predicates/isBase.js +10 -0
  66. package/lib/predicates/isBase.js.map +1 -0
  67. package/lib/predicates/isBase.test.d.ts +2 -0
  68. package/lib/predicates/isBase.test.d.ts.map +1 -0
  69. package/lib/predicates/isBase.test.js +21 -0
  70. package/lib/predicates/isBase.test.js.map +1 -0
  71. package/lib/predicates/isPreset.d.ts +3 -0
  72. package/lib/predicates/isPreset.d.ts.map +1 -0
  73. package/lib/predicates/isPreset.js +13 -0
  74. package/lib/predicates/isPreset.js.map +1 -0
  75. package/lib/predicates/isPreset.test.d.ts +2 -0
  76. package/lib/predicates/isPreset.test.d.ts.map +1 -0
  77. package/lib/predicates/isPreset.test.js +25 -0
  78. package/lib/predicates/isPreset.test.js.map +1 -0
  79. package/lib/predicates/isPresetAbout.d.ts +3 -0
  80. package/lib/predicates/isPresetAbout.d.ts.map +1 -0
  81. package/lib/predicates/isPresetAbout.js +4 -0
  82. package/lib/predicates/isPresetAbout.js.map +1 -0
  83. package/lib/predicates/isPresetAbout.test.d.ts +2 -0
  84. package/lib/predicates/isPresetAbout.test.d.ts.map +1 -0
  85. package/lib/predicates/isPresetAbout.test.js +16 -0
  86. package/lib/predicates/isPresetAbout.test.js.map +1 -0
  87. package/lib/producers/applyBlockModifications.d.ts +4 -0
  88. package/lib/producers/applyBlockModifications.d.ts.map +1 -0
  89. package/lib/producers/applyBlockModifications.js +14 -0
  90. package/lib/producers/applyBlockModifications.js.map +1 -0
  91. package/lib/producers/applyBlockModifications.test.d.ts +2 -0
  92. package/lib/producers/applyBlockModifications.test.d.ts.map +1 -0
  93. package/lib/producers/applyBlockModifications.test.js +42 -0
  94. package/lib/producers/applyBlockModifications.test.js.map +1 -0
  95. package/lib/producers/getUpdatedBlockAddons.d.ts +9 -0
  96. package/lib/producers/getUpdatedBlockAddons.d.ts.map +1 -0
  97. package/lib/producers/getUpdatedBlockAddons.js +20 -0
  98. package/lib/producers/getUpdatedBlockAddons.js.map +1 -0
  99. package/lib/producers/produceBase.d.ts +10 -0
  100. package/lib/producers/produceBase.d.ts.map +1 -0
  101. package/lib/producers/produceBase.js +15 -0
  102. package/lib/producers/produceBase.js.map +1 -0
  103. package/lib/producers/produceBase.test.d.ts +2 -0
  104. package/lib/producers/produceBase.test.d.ts.map +1 -0
  105. package/lib/producers/produceBase.test.js +77 -0
  106. package/lib/producers/produceBase.test.js.map +1 -0
  107. package/lib/producers/produceBlock.d.ts +15 -0
  108. package/lib/producers/produceBlock.d.ts.map +1 -0
  109. package/lib/producers/produceBlock.js +14 -0
  110. package/lib/producers/produceBlock.js.map +1 -0
  111. package/lib/producers/produceBlocks.d.ts +11 -0
  112. package/lib/producers/produceBlocks.d.ts.map +1 -0
  113. package/lib/producers/produceBlocks.js +46 -0
  114. package/lib/producers/produceBlocks.js.map +1 -0
  115. package/lib/producers/produceBlocks.test.d.ts +2 -0
  116. package/lib/producers/produceBlocks.test.d.ts.map +1 -0
  117. package/lib/producers/produceBlocks.test.js +145 -0
  118. package/lib/producers/produceBlocks.test.js.map +1 -0
  119. package/lib/producers/producePreset.d.ts +10 -0
  120. package/lib/producers/producePreset.d.ts.map +1 -0
  121. package/lib/producers/producePreset.js +20 -0
  122. package/lib/producers/producePreset.js.map +1 -0
  123. package/lib/producers/producePreset.test.d.ts +2 -0
  124. package/lib/producers/producePreset.test.d.ts.map +1 -0
  125. package/lib/producers/producePreset.test.js +88 -0
  126. package/lib/producers/producePreset.test.js.map +1 -0
  127. package/lib/producers/produceStratumTemplate.d.ts +15 -0
  128. package/lib/producers/produceStratumTemplate.d.ts.map +1 -0
  129. package/lib/producers/produceStratumTemplate.js +17 -0
  130. package/lib/producers/produceStratumTemplate.js.map +1 -0
  131. package/lib/producers/produceStratumTemplate.test.d.ts +2 -0
  132. package/lib/producers/produceStratumTemplate.test.d.ts.map +1 -0
  133. package/lib/producers/produceStratumTemplate.test.js +134 -0
  134. package/lib/producers/produceStratumTemplate.test.js.map +1 -0
  135. package/lib/producers/produceStratumTemplateFull.d.ts +21 -0
  136. package/lib/producers/produceStratumTemplateFull.d.ts.map +1 -0
  137. package/lib/producers/produceStratumTemplateFull.js +28 -0
  138. package/lib/producers/produceStratumTemplateFull.js.map +1 -0
  139. package/lib/runners/runBlock.d.ts +17 -0
  140. package/lib/runners/runBlock.d.ts.map +1 -0
  141. package/lib/runners/runBlock.js +11 -0
  142. package/lib/runners/runBlock.js.map +1 -0
  143. package/lib/runners/runBlock.test.d.ts +2 -0
  144. package/lib/runners/runBlock.test.d.ts.map +1 -0
  145. package/lib/runners/runBlock.test.js +136 -0
  146. package/lib/runners/runBlock.test.js.map +1 -0
  147. package/lib/types/bases.d.ts +30 -0
  148. package/lib/types/bases.d.ts.map +1 -0
  149. package/lib/types/bases.js +2 -0
  150. package/lib/types/bases.js.map +1 -0
  151. package/lib/types/blocks.d.ts +51 -0
  152. package/lib/types/blocks.d.ts.map +1 -0
  153. package/lib/types/blocks.js +2 -0
  154. package/lib/types/blocks.js.map +1 -0
  155. package/lib/types/creations.d.ts +10 -0
  156. package/lib/types/creations.d.ts.map +1 -0
  157. package/lib/types/creations.js +2 -0
  158. package/lib/types/creations.js.map +1 -0
  159. package/lib/types/presets.d.ts +16 -0
  160. package/lib/types/presets.d.ts.map +1 -0
  161. package/lib/types/presets.js +2 -0
  162. package/lib/types/presets.js.map +1 -0
  163. package/lib/types/settings.d.ts +9 -0
  164. package/lib/types/settings.d.ts.map +1 -0
  165. package/lib/types/settings.js +2 -0
  166. package/lib/types/settings.js.map +1 -0
  167. package/lib/types/templates.d.ts +25 -0
  168. package/lib/types/templates.d.ts.map +1 -0
  169. package/lib/types/templates.js +2 -0
  170. package/lib/types/templates.js.map +1 -0
  171. package/lib/utils.ts/getPresetByName.d.ts +4 -0
  172. package/lib/utils.ts/getPresetByName.d.ts.map +1 -0
  173. package/lib/utils.ts/getPresetByName.js +13 -0
  174. package/lib/utils.ts/getPresetByName.js.map +1 -0
  175. package/package.json +45 -0
@@ -0,0 +1,4 @@
1
+ export function getDefinitionName(value) {
2
+ return value.about?.name ?? "(anonymous)";
3
+ }
4
+ //# sourceMappingURL=getName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getName.js","sourceRoot":"","sources":["../../src/creators/getName.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,KAA4B;IAC7D,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,aAAa,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AnyOptionalShape, InferredObject } from "bingo";
2
+ export declare function applyZodDefaults<Shape extends AnyOptionalShape>(shape: Shape, value: InferredObject<Shape> | undefined): InferredObject<Shape>;
3
+ export declare function isDefinitionWithAddons(definition: object): definition is object & Record<"addons", unknown>;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/creators/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGzD,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,gBAAgB,EAC9D,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,SAAS,GACtC,cAAc,CAAC,KAAK,CAAC,CAEvB;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,oDAExD"}
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ export function applyZodDefaults(shape, value) {
3
+ return z.object(shape).parse(value ?? {});
4
+ }
5
+ export function isDefinitionWithAddons(definition) {
6
+ return "addons" in definition;
7
+ }
8
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/creators/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,gBAAgB,CAC/B,KAAY,EACZ,KAAwC;IAExC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA0B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACxD,OAAO,QAAQ,IAAI,UAAU,CAAC;AAC/B,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from "./creators/createBase.js";
2
+ export * from "./producers/produceBlock.js";
3
+ export * from "./producers/producePreset.js";
4
+ export type * from "./types/bases.js";
5
+ export type * from "./types/blocks.js";
6
+ export type * from "./types/creations.js";
7
+ export type * from "./types/presets.js";
8
+ export type * from "./types/settings.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,qBAAqB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./creators/createBase.js";
2
+ export * from "./producers/produceBlock.js";
3
+ export * from "./producers/producePreset.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ import { CreatedBlockAddons } from "../types/creations.js";
2
+ export declare function mergeAddons<Options extends object | unknown[]>(first: CreatedBlockAddons<object, Options>[], second: CreatedBlockAddons<object, Options>[]): CreatedBlockAddons<object, Options>[];
3
+ //# sourceMappingURL=mergeAddons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeAddons.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeAddons.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,GAAG,OAAO,EAAE,EAC7D,KAAK,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC5C,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAC3C,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAevC"}
@@ -0,0 +1,37 @@
1
+ import hashObject from "hash-object";
2
+ export function mergeAddons(first, second) {
3
+ const byBlock = new Map();
4
+ for (const { addons, block } of [...first, ...second]) {
5
+ const merged = mergeBlockAddons(byBlock.get(block), addons);
6
+ if (isNotNullish(merged)) {
7
+ byBlock.set(block, merged);
8
+ }
9
+ }
10
+ return Array.from(byBlock).map(([block, addons]) => ({ addons, block }));
11
+ }
12
+ function isNotNullish(value) {
13
+ return value != null;
14
+ }
15
+ function mergeBlockAddonArrays(firsts, seconds) {
16
+ const firstNonNullish = firsts.filter(isNotNullish);
17
+ const secondNonNullish = seconds.filter(isNotNullish);
18
+ return mergeBlockAddonArraysNonNullish(firstNonNullish, secondNonNullish);
19
+ }
20
+ function mergeBlockAddonArraysNonNullish(firsts, seconds) {
21
+ const seen = new Set();
22
+ return [...firsts, ...seconds].filter((value) => {
23
+ const identity = value && typeof value === "object" ? hashObject(value) : value;
24
+ if (seen.has(identity)) {
25
+ return false;
26
+ }
27
+ seen.add(identity);
28
+ return true;
29
+ });
30
+ }
31
+ function mergeBlockAddons(first, second) {
32
+ if (Array.isArray(first) && Array.isArray(second)) {
33
+ return mergeBlockAddonArrays(first, second);
34
+ }
35
+ return first ?? second;
36
+ }
37
+ //# sourceMappingURL=mergeAddons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeAddons.js","sourceRoot":"","sources":["../../src/mergers/mergeAddons.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AAKrC,MAAM,UAAU,WAAW,CAC1B,KAA4C,EAC5C,MAA6C;IAE7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAGpB,CAAC;IAEJ,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5D,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IACnC,OAAO,KAAK,IAAI,IAAI,CAAC;AACtB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAiB,EAAE,OAAkB;IACnE,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAEtD,OAAO,+BAA+B,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,+BAA+B,CACvC,MAAiB,EACjB,OAAkB;IAElB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAEhC,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,MAAM,QAAQ,GACb,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAEhE,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,MAAe;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,IAAI,MAAM,CAAC;AACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mergeAddons.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeAddons.test.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeAddons.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,174 @@
1
+ import { describe, expect, test, vi } from "vitest";
2
+ import { mergeAddons } from "./mergeAddons.js";
3
+ const blockFirst = Object.assign(vi.fn(), {
4
+ about: { name: "Block First" },
5
+ produce: vi.fn(),
6
+ });
7
+ const blockSecond = Object.assign(vi.fn(), {
8
+ about: { name: "BlockSecond" },
9
+ produce: vi.fn(),
10
+ });
11
+ const sharedObject = { value: true };
12
+ describe("mergeAddons", () => {
13
+ test.each([
14
+ [
15
+ [{ addons: [null], block: blockFirst }],
16
+ [{ addons: [undefined], block: blockFirst }],
17
+ [{ addons: [], block: blockFirst }],
18
+ ],
19
+ [
20
+ [{ addons: ["a"], block: blockFirst }],
21
+ [{ addons: [123], block: blockFirst }],
22
+ [{ addons: ["a", 123], block: blockFirst }],
23
+ ],
24
+ [
25
+ [{ addons: ["a"], block: blockFirst }],
26
+ [{ addons: ["b"], block: blockFirst }],
27
+ [{ addons: ["a", "b"], block: blockFirst }],
28
+ ],
29
+ [
30
+ [{ addons: ["a", "b"], block: blockFirst }],
31
+ [{ addons: ["b"], block: blockFirst }],
32
+ [{ addons: ["a", "b"], block: blockFirst }],
33
+ ],
34
+ [
35
+ [{ addons: ["a", "b"], block: blockFirst }],
36
+ [{ addons: ["b", "c"], block: blockFirst }],
37
+ [{ addons: ["a", "b", "c"], block: blockFirst }],
38
+ ],
39
+ [
40
+ [{ addons: ["a", "b"], block: blockFirst }],
41
+ [{ addons: ["b", "c", "d"], block: blockFirst }],
42
+ [{ addons: ["a", "b", "c", "d"], block: blockFirst }],
43
+ ],
44
+ [
45
+ [{ addons: ["a"], block: blockFirst }],
46
+ [{ addons: [null], block: blockFirst }],
47
+ [{ addons: ["a"], block: blockFirst }],
48
+ ],
49
+ [
50
+ [{ addons: ["a", undefined, null, "b"], block: blockFirst }],
51
+ [{ addons: [null], block: blockFirst }],
52
+ [{ addons: ["a", "b"], block: blockFirst }],
53
+ ],
54
+ [
55
+ [{ addons: ["a"], block: blockFirst }],
56
+ [{ addons: ["a"], block: blockSecond }],
57
+ [
58
+ { addons: ["a"], block: blockFirst },
59
+ { addons: ["a"], block: blockSecond },
60
+ ],
61
+ ],
62
+ [
63
+ [{ addons: [{ values: ["a"] }], block: blockFirst }],
64
+ [{ addons: [{ values: ["a"] }], block: blockFirst }],
65
+ [{ addons: [{ values: ["a"] }], block: blockFirst }],
66
+ ],
67
+ [
68
+ [{ addons: [{ values: ["a", { b: "c" }] }], block: blockFirst }],
69
+ [{ addons: [{ values: ["a", { b: "c" }] }], block: blockFirst }],
70
+ [{ addons: [{ values: ["a", { b: "c" }] }], block: blockFirst }],
71
+ ],
72
+ [
73
+ [{ addons: [{ value: {} }], block: blockFirst }],
74
+ [{ addons: [{ value: { inner: true } }], block: blockFirst }],
75
+ [
76
+ {
77
+ addons: [{ value: {} }, { value: { inner: true } }],
78
+ block: blockFirst,
79
+ },
80
+ ],
81
+ ],
82
+ [
83
+ [{ addons: [{ value: { inner: true } }], block: blockFirst }],
84
+ [{ addons: [{ value: {} }], block: blockFirst }],
85
+ [
86
+ {
87
+ addons: [{ value: { inner: true } }, { value: {} }],
88
+ block: blockFirst,
89
+ },
90
+ ],
91
+ ],
92
+ [
93
+ [{ addons: [{ value: { inner: true } }], block: blockFirst }],
94
+ [{ addons: [{ value: [true] }], block: blockFirst }],
95
+ [
96
+ {
97
+ addons: [{ value: { inner: true } }, { value: [true] }],
98
+ block: blockFirst,
99
+ },
100
+ ],
101
+ ],
102
+ [
103
+ [{ addons: [{ value: { inner: false } }], block: blockFirst }],
104
+ [{ addons: [{ value: { inner: true } }], block: blockFirst }],
105
+ [
106
+ {
107
+ addons: [{ value: { inner: false } }, { value: { inner: true } }],
108
+ block: blockFirst,
109
+ },
110
+ ],
111
+ ],
112
+ [
113
+ [{ addons: [sharedObject], block: blockFirst }],
114
+ [{ addons: [sharedObject], block: blockFirst }],
115
+ [{ addons: [sharedObject], block: blockFirst }],
116
+ ],
117
+ [
118
+ [
119
+ {
120
+ addons: [{ name: "First", steps: ["a", "b"] }],
121
+ block: blockFirst,
122
+ },
123
+ ],
124
+ [
125
+ {
126
+ addons: [{ name: "Second", steps: ["c", "d"] }],
127
+ block: blockFirst,
128
+ },
129
+ ],
130
+ [
131
+ {
132
+ addons: [
133
+ { name: "First", steps: ["a", "b"] },
134
+ { name: "Second", steps: ["c", "d"] },
135
+ ],
136
+ block: blockFirst,
137
+ },
138
+ ],
139
+ ],
140
+ [
141
+ [
142
+ {
143
+ addons: [
144
+ { name: "First", steps: ["a", "b"] },
145
+ { name: "Second", steps: ["c", "d"] },
146
+ ],
147
+ block: blockFirst,
148
+ },
149
+ ],
150
+ [
151
+ {
152
+ addons: [
153
+ { name: "Second", steps: ["c", "d"] },
154
+ { name: "Third", steps: ["e", "f"] },
155
+ ],
156
+ block: blockFirst,
157
+ },
158
+ ],
159
+ [
160
+ {
161
+ addons: [
162
+ { name: "First", steps: ["a", "b"] },
163
+ { name: "Second", steps: ["c", "d"] },
164
+ { name: "Third", steps: ["e", "f"] },
165
+ ],
166
+ block: blockFirst,
167
+ },
168
+ ],
169
+ ],
170
+ ])("%j and %j", (first, second, expected) => {
171
+ expect(mergeAddons(first, second)).toEqual(expected);
172
+ });
173
+ });
174
+ //# sourceMappingURL=mergeAddons.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeAddons.test.js","sourceRoot":"","sources":["../../src/mergers/mergeAddons.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function mergeAddonsIfUpdated<T extends object>(existingAddons: T, newAddons: T): Error | T | undefined;
2
+ //# sourceMappingURL=mergeAddonsIfUpdated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeAddonsIfUpdated.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeAddonsIfUpdated.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACpD,cAAc,EAAE,CAAC,EACjB,SAAS,EAAE,CAAC,GACV,KAAK,GAAG,CAAC,GAAG,SAAS,CA6DvB"}
@@ -0,0 +1,53 @@
1
+ export function mergeAddonsIfUpdated(existingAddons, newAddons) {
2
+ const newEntries = Object.entries(newAddons);
3
+ const result = { ...existingAddons };
4
+ let updated = newEntries.length !== Object.keys(existingAddons).length;
5
+ for (const [key, value] of newEntries) {
6
+ if (!(key in result) || result[key] == null) {
7
+ updated = true;
8
+ result[key] = value;
9
+ continue;
10
+ }
11
+ if (value == null) {
12
+ continue;
13
+ }
14
+ if (Array.isArray(result[key])) {
15
+ if (!Array.isArray(value)) {
16
+ return new Error("Mismatched merging addons (Array.isArray).");
17
+ }
18
+ const existingElementKeys = new Set(result[key].map(createKey));
19
+ for (const newElement of value) {
20
+ const newElementKey = createKey(newElement);
21
+ if (!existingElementKeys.has(newElementKey)) {
22
+ existingElementKeys.add(newElementKey);
23
+ result[key].push(newElement);
24
+ updated = true;
25
+ }
26
+ }
27
+ continue;
28
+ }
29
+ if (typeof result[key] === "object") {
30
+ if (typeof value !== "object") {
31
+ return new Error("Mismatched merging addons (typeof object).");
32
+ }
33
+ const nestedMerge = mergeAddonsIfUpdated(result[key], value);
34
+ if (nestedMerge) {
35
+ if (nestedMerge instanceof Error) {
36
+ return nestedMerge;
37
+ }
38
+ result[key] = nestedMerge;
39
+ updated = true;
40
+ }
41
+ continue;
42
+ }
43
+ if (result[key] !== value) {
44
+ return new Error(`Mismatched merging addons (${result[key]} vs. ${value}).`);
45
+ }
46
+ }
47
+ return updated ? result : undefined;
48
+ }
49
+ // TODO: In the future, this could be a more quick and intelligent hash...
50
+ function createKey(value) {
51
+ return JSON.stringify(value);
52
+ }
53
+ //# sourceMappingURL=mergeAddonsIfUpdated.js.map
@@ -0,0 +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,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAEhE,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC5C,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,0EAA0E;AAC1E,SAAS,SAAS,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mergeAddonsIfUpdated.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeAddonsIfUpdated.test.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeAddonsIfUpdated.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { mergeAddonsIfUpdated } from "./mergeAddonsIfUpdated.js";
3
+ describe("mergeArgsIfUpdated", () => {
4
+ it.each([
5
+ [{}, {}, undefined],
6
+ [{ a: true }, {}, { a: true }],
7
+ [{ a: true }, { a: null }, undefined],
8
+ [{ a: true }, { a: true }, undefined],
9
+ [
10
+ { a: true },
11
+ { a: false },
12
+ new Error("Mismatched merging addons (true vs. false)."),
13
+ ],
14
+ [
15
+ { a: [] },
16
+ { a: false },
17
+ new Error("Mismatched merging addons (Array.isArray)."),
18
+ ],
19
+ [
20
+ { a: {} },
21
+ { a: false },
22
+ new Error("Mismatched merging addons (typeof object)."),
23
+ ],
24
+ [{ a: true }, { b: true }, { a: true, b: true }],
25
+ [{}, { b: true }, { b: true }],
26
+ [{ a: [] }, {}, { a: [] }],
27
+ [{ a: [] }, { b: [] }, { a: [], b: [] }],
28
+ [{}, { b: [] }, { b: [] }],
29
+ [{ a: ["a"] }, { b: ["b"] }, { a: ["a"], b: ["b"] }],
30
+ [{ a: ["a1"] }, { a: ["a2"] }, { a: ["a1", "a2"] }],
31
+ [{ a: ["a1"] }, { a: ["a1"] }, undefined],
32
+ [{ a: { a1: true } }, { a: { a1: true } }, undefined],
33
+ [
34
+ { a: { a1: true } },
35
+ { a: { a1: false } },
36
+ new Error("Mismatched merging addons (true vs. false)."),
37
+ ],
38
+ [{ a: { a1: ["a2"] } }, { a: { a1: ["a2"] } }, undefined],
39
+ [{ a: { a1: ["a2"] } }, { a: { a1: ["a3"] } }, { a: { a1: ["a2", "a3"] } }],
40
+ [{ imports: ["a", "b"] }, { imports: ["a", "b"] }, undefined],
41
+ [
42
+ { imports: [{ from: "a", source: "b" }] },
43
+ { imports: [{ from: "a", source: "b" }] },
44
+ undefined,
45
+ ],
46
+ ])("when given %j and %j, produces %j", (existingArgs, newArgs, expected) => {
47
+ const actual = mergeAddonsIfUpdated(existingArgs, newArgs);
48
+ expect(actual).toEqual(expected);
49
+ });
50
+ });
51
+ //# sourceMappingURL=mergeAddonsIfUpdated.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeAddonsIfUpdated.test.js","sourceRoot":"","sources":["../../src/mergers/mergeAddonsIfUpdated.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { BlockCreation } from "../types/creations.js";
2
+ export declare function mergeBlockCreations<Options extends object>(first: Partial<BlockCreation<Options>>, second: Partial<BlockCreation<Options>>): {
3
+ addons: import("../types/creations.js").CreatedBlockAddons<any, Options>[];
4
+ files?: import("bingo-fs").CreatedDirectory | undefined;
5
+ requests?: import("bingo").CreatedRequest[] | undefined;
6
+ scripts?: import("bingo").CreatedScript[] | undefined;
7
+ suggestions?: string[] | undefined;
8
+ };
9
+ //# sourceMappingURL=mergeBlockCreations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeBlockCreations.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeBlockCreations.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,wBAAgB,mBAAmB,CAAC,OAAO,SAAS,MAAM,EACzD,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EACtC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;;;;;;EAMvC"}
@@ -0,0 +1,10 @@
1
+ import { applyMerger, mergeCreations } from "bingo";
2
+ import { withoutUndefinedProperties } from "without-undefined-properties";
3
+ import { mergeAddons } from "./mergeAddons.js";
4
+ export function mergeBlockCreations(first, second) {
5
+ return withoutUndefinedProperties({
6
+ ...mergeCreations(first, second),
7
+ addons: applyMerger(first.addons, second.addons, mergeAddons),
8
+ });
9
+ }
10
+ //# sourceMappingURL=mergeBlockCreations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeBlockCreations.js","sourceRoot":"","sources":["../../src/mergers/mergeBlockCreations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CAClC,KAAsC,EACtC,MAAuC;IAEvC,OAAO,0BAA0B,CAAC;QACjC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;KAC7D,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Base } from "../types/bases.js";
2
+ export declare function isBase(value: unknown): value is Base;
3
+ //# sourceMappingURL=isBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isBase.d.ts","sourceRoot":"","sources":["../../src/predicates/isBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAUpD"}
@@ -0,0 +1,10 @@
1
+ export function isBase(value) {
2
+ return (!!value &&
3
+ typeof value === "object" &&
4
+ "createBlock" in value &&
5
+ typeof value.createBlock === "function" &&
6
+ "createPreset" in value &&
7
+ typeof value.createPreset === "function" &&
8
+ "options" in value);
9
+ }
10
+ //# sourceMappingURL=isBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isBase.js","sourceRoot":"","sources":["../../src/predicates/isBase.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,CAAC,KAAc;IACpC,OAAO,CACN,CAAC,CAAC,KAAK;QACP,OAAO,KAAK,KAAK,QAAQ;QACzB,aAAa,IAAI,KAAK;QACtB,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;QACvC,cAAc,IAAI,KAAK;QACvB,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU;QACxC,SAAS,IAAI,KAAK,CAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=isBase.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isBase.test.d.ts","sourceRoot":"","sources":["../../src/predicates/isBase.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { createBase } from "../creators/createBase.js";
3
+ import { isBase } from "./isBase.js";
4
+ const base = createBase({
5
+ options: {},
6
+ });
7
+ describe("isBase", () => {
8
+ test.each([
9
+ [null, false],
10
+ [undefined, false],
11
+ [123, false],
12
+ ["abc", false],
13
+ [{}, false],
14
+ [{ createBlock: {}, createPreset: {}, options: {} }, false],
15
+ [base, true],
16
+ ])("%j", (input, expected) => {
17
+ const actual = isBase(input);
18
+ expect(actual).toBe(expected);
19
+ });
20
+ });
21
+ //# sourceMappingURL=isBase.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isBase.test.js","sourceRoot":"","sources":["../../src/predicates/isBase.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,IAAI,GAAG,UAAU,CAAC;IACvB,OAAO,EAAE,EAAE;CACX,CAAC,CAAC;AAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACvB,IAAI,CAAC,IAAI,CAAC;QACT,CAAC,IAAI,EAAE,KAAK,CAAC;QACb,CAAC,SAAS,EAAE,KAAK,CAAC;QAClB,CAAC,GAAG,EAAE,KAAK,CAAC;QACZ,CAAC,KAAK,EAAE,KAAK,CAAC;QACd,CAAC,EAAE,EAAE,KAAK,CAAC;QACX,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC;QAC3D,CAAC,IAAI,EAAE,IAAI,CAAC;KACZ,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Preset } from "../types/presets.js";
2
+ export declare function isPreset(value: unknown): value is Preset;
3
+ //# sourceMappingURL=isPreset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPreset.d.ts","sourceRoot":"","sources":["../../src/predicates/isPreset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAWxD"}
@@ -0,0 +1,13 @@
1
+ import { isBase } from "./isBase.js";
2
+ import { isPresetAbout } from "./isPresetAbout.js";
3
+ export function isPreset(value) {
4
+ return (!!value &&
5
+ typeof value === "object" &&
6
+ "about" in value &&
7
+ isPresetAbout(value.about) &&
8
+ "base" in value &&
9
+ isBase(value.base) &&
10
+ "blocks" in value &&
11
+ Array.isArray(value.blocks));
12
+ }
13
+ //# sourceMappingURL=isPreset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPreset.js","sourceRoot":"","sources":["../../src/predicates/isPreset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,CACN,CAAC,CAAC,KAAK;QACP,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,IAAI,KAAK;QAChB,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,IAAI,KAAK;QACf,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClB,QAAQ,IAAI,KAAK;QACjB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAC3B,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=isPreset.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPreset.test.d.ts","sourceRoot":"","sources":["../../src/predicates/isPreset.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { createBase } from "../creators/createBase.js";
3
+ import { isPreset } from "./isPreset.js";
4
+ const base = createBase({
5
+ options: {},
6
+ });
7
+ const preset = base.createPreset({
8
+ about: { name: "Test Preset" },
9
+ blocks: [],
10
+ });
11
+ describe("isPreset", () => {
12
+ test.each([
13
+ [null, false],
14
+ [undefined, false],
15
+ [123, false],
16
+ ["abc", false],
17
+ [{}, false],
18
+ [{ about: {}, base: {}, blocks: [] }, false],
19
+ [preset, true],
20
+ ])("%j", (input, expected) => {
21
+ const actual = isPreset(input);
22
+ expect(actual).toBe(expected);
23
+ });
24
+ });
25
+ //# sourceMappingURL=isPreset.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPreset.test.js","sourceRoot":"","sources":["../../src/predicates/isPreset.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,IAAI,GAAG,UAAU,CAAC;IACvB,OAAO,EAAE,EAAE;CACX,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;IAChC,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;IAC9B,MAAM,EAAE,EAAE;CACV,CAAC,CAAC;AAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,IAAI,CAAC;QACT,CAAC,IAAI,EAAE,KAAK,CAAC;QACb,CAAC,SAAS,EAAE,KAAK,CAAC;QAClB,CAAC,GAAG,EAAE,KAAK,CAAC;QACZ,CAAC,KAAK,EAAE,KAAK,CAAC;QACd,CAAC,EAAE,EAAE,KAAK,CAAC;QACX,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC;QAC5C,CAAC,MAAM,EAAE,IAAI,CAAC;KACd,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { PresetAbout } from "../types/presets.js";
2
+ export declare function isPresetAbout(value: unknown): value is PresetAbout;
3
+ //# sourceMappingURL=isPresetAbout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPresetAbout.d.ts","sourceRoot":"","sources":["../../src/predicates/isPresetAbout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE"}
@@ -0,0 +1,4 @@
1
+ export function isPresetAbout(value) {
2
+ return !!value && typeof value === "object" && "name" in value;
3
+ }
4
+ //# sourceMappingURL=isPresetAbout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPresetAbout.js","sourceRoot":"","sources":["../../src/predicates/isPresetAbout.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,KAAc;IAC3C,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC;AAChE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=isPresetAbout.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isPresetAbout.test.d.ts","sourceRoot":"","sources":["../../src/predicates/isPresetAbout.test.ts"],"names":[],"mappings":""}