bingo 0.5.7 → 0.5.8

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 (130) hide show
  1. package/lib/cli/display/runInsideClackDisplay.js +1 -1
  2. package/lib/cli/display/runInsideClackDisplay.js.map +1 -1
  3. package/lib/cli/loggers/logRerunSuggestion.d.ts +1 -1
  4. package/lib/cli/loggers/logRerunSuggestion.d.ts.map +1 -1
  5. package/lib/cli/loggers/logRerunSuggestion.js +3 -3
  6. package/lib/cli/loggers/logRerunSuggestion.js.map +1 -1
  7. package/lib/cli/loggers/logRerunSuggestion.test.js +7 -5
  8. package/lib/cli/loggers/logRerunSuggestion.test.js.map +1 -1
  9. package/lib/cli/messages.d.ts +3 -0
  10. package/lib/cli/messages.d.ts.map +1 -1
  11. package/lib/cli/messages.js +3 -0
  12. package/lib/cli/messages.js.map +1 -1
  13. package/lib/cli/parseProcessArgv.d.ts +1 -1
  14. package/lib/cli/parseProcessArgv.d.ts.map +1 -1
  15. package/lib/cli/parseProcessArgv.js +2 -3
  16. package/lib/cli/parseProcessArgv.js.map +1 -1
  17. package/lib/cli/prompts/promptForOptionSchema.d.ts.map +1 -1
  18. package/lib/cli/prompts/promptForOptionSchema.js +16 -9
  19. package/lib/cli/prompts/promptForOptionSchema.js.map +1 -1
  20. package/lib/cli/runBingoCLI.js +2 -2
  21. package/lib/cli/runCLI.d.ts +2 -2
  22. package/lib/cli/runCLI.js +2 -2
  23. package/lib/cli/runCli.test.js +4 -3
  24. package/lib/cli/runCli.test.js.map +1 -1
  25. package/lib/cli/runTemplateCLI.js +2 -2
  26. package/lib/cli/schemas/defaults.d.ts +3 -0
  27. package/lib/cli/schemas/defaults.d.ts.map +1 -0
  28. package/lib/cli/schemas/defaults.js +7 -0
  29. package/lib/cli/schemas/defaults.js.map +1 -0
  30. package/lib/cli/schemas/isStringLikeOption.d.ts +3 -0
  31. package/lib/cli/schemas/isStringLikeOption.d.ts.map +1 -0
  32. package/lib/cli/schemas/isStringLikeOption.js +19 -0
  33. package/lib/cli/schemas/isStringLikeOption.js.map +1 -0
  34. package/lib/cli/schemas/isStringLikeOption.test.d.ts +2 -0
  35. package/lib/cli/schemas/isStringLikeOption.test.d.ts.map +1 -0
  36. package/lib/cli/schemas/isStringLikeOption.test.js +63 -0
  37. package/lib/cli/schemas/isStringLikeOption.test.js.map +1 -0
  38. package/lib/cli/schemas/isStringLikeSchema.d.ts +3 -0
  39. package/lib/cli/schemas/isStringLikeSchema.d.ts.map +1 -0
  40. package/lib/cli/schemas/isStringLikeSchema.js +20 -0
  41. package/lib/cli/schemas/isStringLikeSchema.js.map +1 -0
  42. package/lib/cli/schemas/isStringLikeSchema.test.d.ts +2 -0
  43. package/lib/cli/schemas/isStringLikeSchema.test.d.ts.map +1 -0
  44. package/lib/cli/schemas/isStringLikeSchema.test.js +85 -0
  45. package/lib/cli/schemas/isStringLikeSchema.test.js.map +1 -0
  46. package/lib/cli/schemas/isZodDefaultDef.d.ts +3 -0
  47. package/lib/cli/schemas/isZodDefaultDef.d.ts.map +1 -0
  48. package/lib/cli/schemas/isZodDefaultDef.js +7 -0
  49. package/lib/cli/schemas/isZodDefaultDef.js.map +1 -0
  50. package/lib/cli/schemas/isZodDefaultDef.test.d.ts +2 -0
  51. package/lib/cli/schemas/isZodDefaultDef.test.d.ts.map +1 -0
  52. package/lib/cli/schemas/isZodDefaultDef.test.js +40 -0
  53. package/lib/cli/schemas/isZodDefaultDef.test.js.map +1 -0
  54. package/lib/cli/schemas/predicates.d.ts +3 -0
  55. package/lib/cli/schemas/predicates.d.ts.map +1 -0
  56. package/lib/cli/schemas/predicates.js +7 -0
  57. package/lib/cli/schemas/predicates.js.map +1 -0
  58. package/lib/cli/schemas/strings.d.ts +3 -0
  59. package/lib/cli/schemas/strings.d.ts.map +1 -0
  60. package/lib/cli/schemas/strings.js +15 -0
  61. package/lib/cli/schemas/strings.js.map +1 -0
  62. package/lib/cli/schemas/types.d.ts +13 -0
  63. package/lib/cli/schemas/types.d.ts.map +1 -0
  64. package/lib/cli/schemas/types.js +2 -0
  65. package/lib/cli/schemas/types.js.map +1 -0
  66. package/lib/cli/schemas/unions.d.ts +2 -0
  67. package/lib/cli/schemas/unions.d.ts.map +1 -0
  68. package/lib/cli/schemas/unions.js +2 -0
  69. package/lib/cli/schemas/unions.js.map +1 -0
  70. package/lib/cli/setup/createRepositoryOnGitHub.d.ts +3 -1
  71. package/lib/cli/setup/createRepositoryOnGitHub.d.ts.map +1 -1
  72. package/lib/cli/setup/createRepositoryOnGitHub.js +27 -13
  73. package/lib/cli/setup/createRepositoryOnGitHub.js.map +1 -1
  74. package/lib/cli/setup/createRepositoryOnGitHub.test.js +65 -20
  75. package/lib/cli/setup/createRepositoryOnGitHub.test.js.map +1 -1
  76. package/lib/cli/setup/runModeSetup.d.ts +2 -2
  77. package/lib/cli/setup/runModeSetup.d.ts.map +1 -1
  78. package/lib/cli/setup/runModeSetup.js +20 -14
  79. package/lib/cli/setup/runModeSetup.js.map +1 -1
  80. package/lib/cli/transition/runModeTransition.d.ts +2 -2
  81. package/lib/cli/transition/runModeTransition.d.ts.map +1 -1
  82. package/lib/cli/transition/runModeTransition.js +28 -23
  83. package/lib/cli/transition/runModeTransition.js.map +1 -1
  84. package/lib/cli/transition/runModeTransition.test.js +17 -21
  85. package/lib/cli/transition/runModeTransition.test.js.map +1 -1
  86. package/lib/cli/types.d.ts +1 -1
  87. package/lib/cli/types.d.ts.map +1 -1
  88. package/lib/mergers/mergeFetchRequests.d.ts +3 -0
  89. package/lib/mergers/mergeFetchRequests.d.ts.map +1 -0
  90. package/lib/mergers/mergeFetchRequests.js +22 -0
  91. package/lib/mergers/mergeFetchRequests.js.map +1 -0
  92. package/lib/mergers/mergeFetchRequests.test.d.ts +2 -0
  93. package/lib/mergers/mergeFetchRequests.test.d.ts.map +1 -0
  94. package/lib/mergers/mergeFetchRequests.test.js +58 -0
  95. package/lib/mergers/mergeFetchRequests.test.js.map +1 -0
  96. package/lib/mergers/mergeOctokitRequests.d.ts +3 -0
  97. package/lib/mergers/mergeOctokitRequests.d.ts.map +1 -0
  98. package/lib/mergers/mergeOctokitRequests.js +20 -0
  99. package/lib/mergers/mergeOctokitRequests.js.map +1 -0
  100. package/lib/mergers/mergeOctokitRequests.test copy.d.ts +2 -0
  101. package/lib/mergers/mergeOctokitRequests.test copy.d.ts.map +1 -0
  102. package/lib/mergers/mergeOctokitRequests.test copy.js +71 -0
  103. package/lib/mergers/mergeOctokitRequests.test copy.js.map +1 -0
  104. package/lib/mergers/mergeOctokitRequests.test.d.ts +2 -0
  105. package/lib/mergers/mergeOctokitRequests.test.d.ts.map +1 -0
  106. package/lib/mergers/mergeOctokitRequests.test.js +71 -0
  107. package/lib/mergers/mergeOctokitRequests.test.js.map +1 -0
  108. package/lib/mergers/mergeRequests.d.ts +1 -1
  109. package/lib/mergers/mergeRequests.d.ts.map +1 -1
  110. package/lib/mergers/mergeRequests.js +14 -4
  111. package/lib/mergers/mergeRequests.js.map +1 -1
  112. package/lib/mergers/mergeRequests.test.js +17 -13
  113. package/lib/mergers/mergeRequests.test.js.map +1 -1
  114. package/lib/runners/applyRequestsToSystem.d.ts +2 -2
  115. package/lib/runners/applyRequestsToSystem.d.ts.map +1 -1
  116. package/lib/runners/applyRequestsToSystem.js +6 -4
  117. package/lib/runners/applyRequestsToSystem.js.map +1 -1
  118. package/lib/runners/applyRequestsToSystem.test.js +29 -2
  119. package/lib/runners/applyRequestsToSystem.test.js.map +1 -1
  120. package/lib/runners/getRequestSender.d.ts +8 -0
  121. package/lib/runners/getRequestSender.d.ts.map +1 -0
  122. package/lib/runners/getRequestSender.js +22 -0
  123. package/lib/runners/getRequestSender.js.map +1 -0
  124. package/lib/runners/getRequestSender.test.d.ts +2 -0
  125. package/lib/runners/getRequestSender.test.d.ts.map +1 -0
  126. package/lib/runners/getRequestSender.test.js +83 -0
  127. package/lib/runners/getRequestSender.test.js.map +1 -0
  128. package/lib/types/creations.d.ts +1 -9
  129. package/lib/types/creations.d.ts.map +1 -1
  130. package/package.json +2 -1
@@ -0,0 +1,71 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { mergeOctokitRequests } from "./mergeOctokitRequests.js";
3
+ const owner = "test-owner";
4
+ const repo = "test-repo";
5
+ const title = "Test Title";
6
+ describe("mergeOctokitRequests", () => {
7
+ it("returns the second request when there are no existing requests", () => {
8
+ const second = {
9
+ endpoint: "POST /repos/{owner}/{repo}/labels",
10
+ parameters: { name: "...", owner, repo },
11
+ type: "octokit",
12
+ };
13
+ const actual = mergeOctokitRequests([], second);
14
+ expect(actual).toEqual([second]);
15
+ });
16
+ it("returns both requests when they have different endpoints", () => {
17
+ const first = {
18
+ endpoint: "POST /repos/{owner}/{repo}/labels",
19
+ parameters: { name: "...", owner, repo },
20
+ type: "octokit",
21
+ };
22
+ const second = {
23
+ endpoint: "POST /repos/{owner}/{repo}/issues",
24
+ parameters: { owner, repo, title },
25
+ type: "octokit",
26
+ };
27
+ const actual = mergeOctokitRequests([first], second);
28
+ expect(actual).toEqual([first, second]);
29
+ });
30
+ it("returns just the first request when a next request is identical", () => {
31
+ const first = {
32
+ endpoint: "POST /repos/{owner}/{repo}/labels",
33
+ parameters: { name: "first", owner, repo },
34
+ type: "octokit",
35
+ };
36
+ const second = { ...first };
37
+ const actual = mergeOctokitRequests([first], second);
38
+ expect(actual).toEqual([first]);
39
+ });
40
+ it("returns a merged parameters version of the first request when a next request has the same endpoint and different data", () => {
41
+ const first = {
42
+ endpoint: "POST /repos/{owner}/{repo}/labels",
43
+ parameters: {
44
+ description: "First description.",
45
+ name: "first",
46
+ owner,
47
+ repo,
48
+ },
49
+ type: "octokit",
50
+ };
51
+ const second = {
52
+ endpoint: "POST /repos/{owner}/{repo}/labels",
53
+ parameters: { name: "second", owner, repo },
54
+ type: "octokit",
55
+ };
56
+ const actual = mergeOctokitRequests([first], second);
57
+ expect(actual).toEqual([
58
+ {
59
+ endpoint: "POST /repos/{owner}/{repo}/labels",
60
+ parameters: {
61
+ description: "First description.",
62
+ name: "second",
63
+ owner,
64
+ repo,
65
+ },
66
+ type: "octokit",
67
+ },
68
+ ]);
69
+ });
70
+ });
71
+ //# sourceMappingURL=mergeOctokitRequests.test%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeOctokitRequests.test copy.js","sourceRoot":"","sources":["../../src/mergers/mergeOctokitRequests.test copy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mergeOctokitRequests.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeOctokitRequests.test.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeOctokitRequests.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { mergeOctokitRequests } from "./mergeOctokitRequests.js";
3
+ const owner = "test-owner";
4
+ const repo = "test-repo";
5
+ const title = "Test Title";
6
+ describe("mergeOctokitRequests", () => {
7
+ it("returns the second request when there are no existing requests", () => {
8
+ const second = {
9
+ endpoint: "POST /repos/{owner}/{repo}/labels",
10
+ parameters: { name: "...", owner, repo },
11
+ type: "octokit",
12
+ };
13
+ const actual = mergeOctokitRequests([], second);
14
+ expect(actual).toEqual([second]);
15
+ });
16
+ it("returns both requests when they have different endpoints", () => {
17
+ const first = {
18
+ endpoint: "POST /repos/{owner}/{repo}/labels",
19
+ parameters: { name: "...", owner, repo },
20
+ type: "octokit",
21
+ };
22
+ const second = {
23
+ endpoint: "POST /repos/{owner}/{repo}/issues",
24
+ parameters: { owner, repo, title },
25
+ type: "octokit",
26
+ };
27
+ const actual = mergeOctokitRequests([first], second);
28
+ expect(actual).toEqual([first, second]);
29
+ });
30
+ it("returns just the first request when a next request is identical", () => {
31
+ const first = {
32
+ endpoint: "POST /repos/{owner}/{repo}/labels",
33
+ parameters: { name: "first", owner, repo },
34
+ type: "octokit",
35
+ };
36
+ const second = { ...first };
37
+ const actual = mergeOctokitRequests([first], second);
38
+ expect(actual).toEqual([first]);
39
+ });
40
+ it("returns a merged parameters version of the first request when a next request has the same endpoint and different data", () => {
41
+ const first = {
42
+ endpoint: "POST /repos/{owner}/{repo}/labels",
43
+ parameters: {
44
+ description: "First description.",
45
+ name: "first",
46
+ owner,
47
+ repo,
48
+ },
49
+ type: "octokit",
50
+ };
51
+ const second = {
52
+ endpoint: "POST /repos/{owner}/{repo}/labels",
53
+ parameters: { name: "second", owner, repo },
54
+ type: "octokit",
55
+ };
56
+ const actual = mergeOctokitRequests([first], second);
57
+ expect(actual).toEqual([
58
+ {
59
+ endpoint: "POST /repos/{owner}/{repo}/labels",
60
+ parameters: {
61
+ description: "First description.",
62
+ name: "second",
63
+ owner,
64
+ repo,
65
+ },
66
+ type: "octokit",
67
+ },
68
+ ]);
69
+ });
70
+ });
71
+ //# sourceMappingURL=mergeOctokitRequests.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeOctokitRequests.test.js","sourceRoot":"","sources":["../../src/mergers/mergeOctokitRequests.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { CreatedRequest } from "../types/creations.js";
1
+ import { CreatedRequest } from "bingo-requests";
2
2
  export declare function mergeRequests(firsts: CreatedRequest[], seconds: CreatedRequest[]): CreatedRequest[];
3
3
  //# sourceMappingURL=mergeRequests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeRequests.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeRequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,wBAAgB,aAAa,CAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,EAAE,cAAc,EAAE,oBASzB"}
1
+ {"version":3,"file":"mergeRequests.d.ts","sourceRoot":"","sources":["../../src/mergers/mergeRequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,cAAc,EACd,MAAM,gBAAgB,CAAC;AAMxB,wBAAgB,aAAa,CAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,EAAE,cAAc,EAAE,oBAuBzB"}
@@ -1,8 +1,18 @@
1
+ import { groupBy } from "../utils/groupBy.js";
2
+ import { mergeFetchRequests } from "./mergeFetchRequests.js";
3
+ import { mergeOctokitRequests } from "./mergeOctokitRequests.js";
1
4
  export function mergeRequests(firsts, seconds) {
2
- const byId = new Map();
3
- for (const request of [...firsts, ...seconds]) {
4
- byId.set(request.id, request);
5
+ const byType = groupBy(firsts, (request) => request.type);
6
+ for (const added of seconds) {
7
+ switch (added.type) {
8
+ case "fetch":
9
+ byType.fetch = mergeFetchRequests(byType.fetch, added);
10
+ break;
11
+ case "octokit":
12
+ byType.octokit = mergeOctokitRequests(byType.octokit, added);
13
+ break;
14
+ }
5
15
  }
6
- return Array.from(byId.values());
16
+ return Object.values(byType).flat();
7
17
  }
8
18
  //# sourceMappingURL=mergeRequests.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeRequests.js","sourceRoot":"","sources":["../../src/mergers/mergeRequests.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC5B,MAAwB,EACxB,OAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE/C,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"mergeRequests.js","sourceRoot":"","sources":["../../src/mergers/mergeRequests.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,UAAU,aAAa,CAC5B,MAAwB,EACxB,OAAyB;IAEzB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,OAAO;gBACX,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAChC,MAAM,CAAC,KAA8B,EACrC,KAAK,CACL,CAAC;gBACF,MAAM;YAEP,KAAK,SAAS;gBACb,MAAM,CAAC,OAAO,GAAG,oBAAoB,CACpC,MAAM,CAAC,OAAkC,EACzC,KAAK,CACL,CAAC;gBACF,MAAM;QACR,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC"}
@@ -1,29 +1,33 @@
1
- import { describe, expect, it, vi } from "vitest";
1
+ import { describe, expect, it } from "vitest";
2
2
  import { mergeRequests } from "./mergeRequests.js";
3
+ const owner = "test-owner";
4
+ const repo = "test-repo";
3
5
  describe("mergeRequests", () => {
4
- it("returns both requests when they have different ids", () => {
6
+ it("returns fetch and octokit requests together when both are provided", () => {
5
7
  const first = {
6
- id: "a",
7
- send: vi.fn(),
8
+ endpoint: "POST /repos/{owner}/{repo}/labels",
9
+ parameters: { name: "...", owner, repo },
10
+ type: "octokit",
8
11
  };
9
12
  const second = {
10
- id: "b",
11
- send: vi.fn(),
13
+ type: "fetch",
14
+ url: "https://create.bingo",
12
15
  };
13
16
  const actual = mergeRequests([first], [second]);
14
17
  expect(actual).toEqual([first, second]);
15
18
  });
16
- it("returns only the second request when they have the same id", () => {
19
+ it("returns one merged request when a new request can be merged", () => {
17
20
  const first = {
18
- id: "a",
19
- send: vi.fn(),
21
+ endpoint: "POST /repos/{owner}/{repo}/labels",
22
+ parameters: { name: "...", owner, repo },
23
+ type: "octokit",
20
24
  };
21
25
  const second = {
22
- id: "a",
23
- send: vi.fn(),
26
+ type: "fetch",
27
+ url: "https://create.bingo",
24
28
  };
25
- const actual = mergeRequests([first], [second]);
26
- expect(actual).toEqual([second]);
29
+ const actual = mergeRequests([first, second], [{ ...second, init: { method: "POST" } }]);
30
+ expect(actual).toEqual([{ ...second, init: { method: "POST" } }, first]);
27
31
  });
28
32
  });
29
33
  //# sourceMappingURL=mergeRequests.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeRequests.test.js","sourceRoot":"","sources":["../../src/mergers/mergeRequests.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,MAAM,KAAK,GAAG;YACb,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;SACb,CAAC;QACF,MAAM,MAAM,GAAG;YACd,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;SACb,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG;YACb,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;SACb,CAAC;QACF,MAAM,MAAM,GAAG;YACd,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;SACb,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"mergeRequests.test.js","sourceRoot":"","sources":["../../src/mergers/mergeRequests.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC7E,MAAM,KAAK,GAA0B;YACpC,QAAQ,EAAE,mCAAmC;YAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;YACxC,IAAI,EAAE,SAAS;SACf,CAAC;QAEF,MAAM,MAAM,GAAwB;YACnC,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,sBAAsB;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACtE,MAAM,KAAK,GAA0B;YACpC,QAAQ,EAAE,mCAAmC;YAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;YACxC,IAAI,EAAE,SAAS;SACf,CAAC;QAEF,MAAM,MAAM,GAAwB;YACnC,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,sBAAsB;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAC3B,CAAC,KAAK,EAAE,MAAM,CAAC,EACf,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CACzC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { CreatedRequest } from "../types/creations.js";
1
+ import { CreatedRequest } from "bingo-requests";
2
2
  import { SystemContext } from "../types/system.js";
3
- export declare function applyRequestsToSystem(requests: CreatedRequest[], system: Pick<SystemContext, "display" | "fetchers">): Promise<void>;
3
+ export declare function applyRequestsToSystem(requests: CreatedRequest[], system: SystemContext): Promise<void>;
4
4
  //# sourceMappingURL=applyRequestsToSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyRequestsToSystem.d.ts","sourceRoot":"","sources":["../../src/runners/applyRequestsToSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,cAAc,EAAE,EAC1B,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,UAAU,CAAC,iBAenD"}
1
+ {"version":3,"file":"applyRequestsToSystem.d.ts","sourceRoot":"","sources":["../../src/runners/applyRequestsToSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,cAAc,EAAE,EAC1B,MAAM,EAAE,aAAa,iBAiBrB"}
@@ -1,13 +1,15 @@
1
+ import { getRequestSender } from "./getRequestSender.js";
1
2
  export async function applyRequestsToSystem(requests, system) {
2
3
  await Promise.all(requests.map(async (request) => {
3
- system.display.item("request", request.id, { start: Date.now() });
4
+ const { id, send } = getRequestSender(request);
5
+ system.display.item("request", id, { start: Date.now() });
4
6
  try {
5
- await request.send(system.fetchers);
7
+ await send(system.fetchers);
6
8
  }
7
9
  catch (error) {
8
- system.display.item("request", request.id, { error });
10
+ system.display.item("request", id, { error });
9
11
  }
10
- system.display.item("request", request.id, { end: Date.now() });
12
+ system.display.item("request", id, { end: Date.now() });
11
13
  }));
12
14
  }
13
15
  //# sourceMappingURL=applyRequestsToSystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyRequestsToSystem.js","sourceRoot":"","sources":["../../src/runners/applyRequestsToSystem.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,QAA0B,EAC1B,MAAmD;IAEnD,MAAM,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"applyRequestsToSystem.js","sourceRoot":"","sources":["../../src/runners/applyRequestsToSystem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,QAA0B,EAC1B,MAAqB;IAErB,MAAM,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAE1D,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CACF,CAAC;AACH,CAAC"}
@@ -1,7 +1,14 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
2
  import { applyRequestsToSystem } from "./applyRequestsToSystem.js";
3
+ const mockGetRequestSender = vi.fn();
4
+ vi.mock("./getRequestSender.js", () => ({
5
+ get getRequestSender() {
6
+ return mockGetRequestSender;
7
+ },
8
+ }));
3
9
  function createStubSystem() {
4
10
  return {
11
+ directory: "",
5
12
  display: {
6
13
  item: vi.fn(),
7
14
  log: vi.fn(),
@@ -10,17 +17,37 @@ function createStubSystem() {
10
17
  fetch: vi.fn(),
11
18
  octokit: {},
12
19
  },
20
+ fs: {},
21
+ runner: vi.fn(),
13
22
  };
14
23
  }
15
24
  describe("applyRequestsToSystem", () => {
25
+ it("does not display an error when a request does not reject", async () => {
26
+ const id = "abc";
27
+ const send = vi.fn();
28
+ const system = createStubSystem();
29
+ mockGetRequestSender.mockReturnValueOnce({ id, send });
30
+ await applyRequestsToSystem([
31
+ {
32
+ type: "fetch",
33
+ url: "https://example.com",
34
+ },
35
+ ], system);
36
+ expect(system.display.item.mock.calls).toEqual([
37
+ ["request", id, { start: expect.any(Number) }],
38
+ ["request", id, { end: expect.any(Number) }],
39
+ ]);
40
+ });
16
41
  it("displays the error when a request rejects", async () => {
17
42
  const error = new Error();
18
43
  const id = "abc";
44
+ const send = vi.fn().mockRejectedValueOnce(error);
19
45
  const system = createStubSystem();
46
+ mockGetRequestSender.mockReturnValueOnce({ id, send });
20
47
  await applyRequestsToSystem([
21
48
  {
22
- id,
23
- send: vi.fn().mockRejectedValueOnce(error),
49
+ type: "fetch",
50
+ url: "https://example.com",
24
51
  },
25
52
  ], system);
26
53
  expect(system.display.item.mock.calls).toEqual([
@@ -1 +1 @@
1
- {"version":3,"file":"applyRequestsToSystem.test.js","sourceRoot":"","sources":["../../src/runners/applyRequestsToSystem.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,SAAS,gBAAgB;IACxB,OAAO;QACN,OAAO,EAAE;YACR,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;SACZ;QACD,QAAQ,EAAE;YACT,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,OAAO,EAAE,EAAa;SACtB;KACD,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElC,MAAM,qBAAqB,CAC1B;YACC;gBACC,EAAE;gBACF,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC;aAC1C;SACD,EACD,MAAM,CACN,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC9C,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"applyRequestsToSystem.test.js","sourceRoot":"","sources":["../../src/runners/applyRequestsToSystem.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,oBAAoB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAErC,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,IAAI,gBAAgB;QACnB,OAAO,oBAAoB,CAAC;IAC7B,CAAC;CACD,CAAC,CAAC,CAAC;AAEJ,SAAS,gBAAgB;IACxB,OAAO;QACN,SAAS,EAAE,EAAE;QACb,OAAO,EAAE;YACR,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;SACZ;QACD,QAAQ,EAAE;YACT,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,OAAO,EAAE,EAAa;SACtB;QACD,EAAE,EAAE,EAAuB;QAC3B,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KACf,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,EAAE,GAAG,KAAK,CAAC;QACjB,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElC,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,MAAM,qBAAqB,CAC1B;YACC;gBACC,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,qBAAqB;aAC1B;SACD,EACD,MAAM,CACN,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC9C,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,KAAK,CAAC;QACjB,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAElC,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,MAAM,qBAAqB,CAC1B;YACC;gBACC,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,qBAAqB;aAC1B;SACD,EACD,MAAM,CACN,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAC9C,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CreatedRequest } from "bingo-requests";
2
+ import { SystemFetchers } from "bingo-systems";
3
+ export interface RequestSender {
4
+ id: string;
5
+ send: (fetchers: SystemFetchers) => Promise<void>;
6
+ }
7
+ export declare function getRequestSender(request: CreatedRequest): RequestSender;
8
+ //# sourceMappingURL=getRequestSender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRequestSender.d.ts","sourceRoot":"","sources":["../../src/runners/getRequestSender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CAuBvE"}
@@ -0,0 +1,22 @@
1
+ export function getRequestSender(request) {
2
+ switch (request.type) {
3
+ case "fetch":
4
+ return {
5
+ id: request.id ?? request.url,
6
+ send: async (fetchers) => {
7
+ await fetchers.fetch(request.url, request.init);
8
+ },
9
+ };
10
+ case "octokit":
11
+ return {
12
+ id: request.id ?? request.endpoint,
13
+ send: async (fetchers) => {
14
+ await fetchers.octokit.request(request.endpoint,
15
+ // TODO: I have no idea how to get this to type-check without the any.
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
17
+ request.parameters);
18
+ },
19
+ };
20
+ }
21
+ }
22
+ //# sourceMappingURL=getRequestSender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRequestSender.js","sourceRoot":"","sources":["../../src/runners/getRequestSender.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACvD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,OAAO;YACX,OAAO;gBACN,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG;gBAC7B,IAAI,EAAE,KAAK,EAAE,QAAwB,EAAE,EAAE;oBACxC,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBACjD,CAAC;aACD,CAAC;QAEH,KAAK,SAAS;YACb,OAAO;gBACN,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,QAAQ;gBAClC,IAAI,EAAE,KAAK,EAAE,QAAwB,EAAE,EAAE;oBACxC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAC7B,OAAO,CAAC,QAAQ;oBAChB,sEAAsE;oBACtE,qGAAqG;oBACrG,OAAO,CAAC,UAAiB,CACzB,CAAC;gBACH,CAAC;aACD,CAAC;IACJ,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getRequestSender.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRequestSender.test.d.ts","sourceRoot":"","sources":["../../src/runners/getRequestSender.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,83 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { getRequestSender } from "./getRequestSender.js";
3
+ function createMockSystemFetchers() {
4
+ return {
5
+ fetch: vi.fn(),
6
+ octokit: { request: vi.fn() },
7
+ };
8
+ }
9
+ const owner = "test-owner";
10
+ const repo = "test-repo";
11
+ describe("getRequestSender", () => {
12
+ it("returns a sender with url for id when given a fetch request without id", () => {
13
+ const request = {
14
+ type: "fetch",
15
+ url: "https://create.bingo",
16
+ };
17
+ const actual = getRequestSender(request);
18
+ expect(actual).toEqual({
19
+ id: request.url,
20
+ send: expect.any(Function),
21
+ });
22
+ });
23
+ it("returns a sender with id for id when given a fetch request with id", () => {
24
+ const request = {
25
+ id: "abc123",
26
+ type: "fetch",
27
+ url: "https://create.bingo",
28
+ };
29
+ const actual = getRequestSender(request);
30
+ expect(actual).toEqual({
31
+ id: request.id,
32
+ send: expect.any(Function),
33
+ });
34
+ });
35
+ it("sends a request with fetchers.request sending a fetch request", async () => {
36
+ const fetchers = createMockSystemFetchers();
37
+ const request = {
38
+ id: "abc123",
39
+ type: "fetch",
40
+ url: "https://create.bingo",
41
+ };
42
+ await getRequestSender(request).send(fetchers);
43
+ expect(fetchers.fetch).toHaveBeenCalledWith(request.url, request.init);
44
+ expect(fetchers.octokit.request).not.toHaveBeenCalled();
45
+ });
46
+ it("returns a sender with url for id when given an Octokit request without id", () => {
47
+ const request = {
48
+ endpoint: "POST /repos/{owner}/{repo}/labels",
49
+ parameters: { name: "...", owner, repo },
50
+ type: "octokit",
51
+ };
52
+ const actual = getRequestSender(request);
53
+ expect(actual).toEqual({
54
+ id: request.endpoint,
55
+ send: expect.any(Function),
56
+ });
57
+ });
58
+ it("returns a sender with id for id when given an Octokit request with id", () => {
59
+ const request = {
60
+ endpoint: "POST /repos/{owner}/{repo}/labels",
61
+ id: "abc123",
62
+ parameters: { name: "...", owner, repo },
63
+ type: "octokit",
64
+ };
65
+ const actual = getRequestSender(request);
66
+ expect(actual).toEqual({
67
+ id: request.id,
68
+ send: expect.any(Function),
69
+ });
70
+ });
71
+ it("sends a request with fetchers.octokit.request sending an Octokit request", async () => {
72
+ const fetchers = createMockSystemFetchers();
73
+ const request = {
74
+ endpoint: "POST /repos/{owner}/{repo}/labels",
75
+ parameters: { name: "...", owner, repo },
76
+ type: "octokit",
77
+ };
78
+ await getRequestSender(request).send(fetchers);
79
+ expect(fetchers.fetch).not.toHaveBeenCalled();
80
+ expect(fetchers.octokit.request).toHaveBeenCalledWith(request.endpoint, request.parameters);
81
+ });
82
+ });
83
+ //# sourceMappingURL=getRequestSender.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRequestSender.test.js","sourceRoot":"","sources":["../../src/runners/getRequestSender.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,SAAS,wBAAwB;IAChC,OAAO;QACN,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KAC7B,CAAC;AACH,CAAC;AAED,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QACjF,MAAM,OAAO,GAAwB;YACpC,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,sBAAsB;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACtB,EAAE,EAAE,OAAO,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC1B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC7E,MAAM,OAAO,GAAwB;YACpC,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,sBAAsB;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACtB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC1B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;QAE5C,MAAM,OAAO,GAAwB;YACpC,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,sBAAsB;SAC3B,CAAC;QAEF,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAqC,CAAC,CAAC;QAE5E,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACpF,MAAM,OAAO,GAA0B;YACtC,QAAQ,EAAE,mCAAmC;YAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;YACxC,IAAI,EAAE,SAAS;SACf,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACtB,EAAE,EAAE,OAAO,CAAC,QAAQ;YACpB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC1B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAChF,MAAM,OAAO,GAA0B;YACtC,QAAQ,EAAE,mCAAmC;YAC7C,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;YACxC,IAAI,EAAE,SAAS;SACf,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACtB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC1B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;QAE5C,MAAM,OAAO,GAA0B;YACtC,QAAQ,EAAE,mCAAmC;YAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;YACxC,IAAI,EAAE,SAAS;SACf,CAAC;QAEF,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAqC,CAAC,CAAC;QAE5E,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CACpD,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAU,CAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,14 +1,6 @@
1
1
  import { CreatedDirectory } from "bingo-fs";
2
+ import { CreatedRequest } from "bingo-requests";
2
3
  import { SystemFetchers } from "bingo-systems";
3
- /**
4
- * A request to make to set up part of a repository's tooling.
5
- * @todo This will eventually become a serializable format:
6
- * https://github.com/JoshuaKGoldberg/bingo/issues/65
7
- */
8
- export interface CreatedRequest {
9
- id: string;
10
- send: CreatedRequestSender;
11
- }
12
4
  export type CreatedRequestSender = (fetchers: SystemFetchers) => Promise<void>;
13
5
  /**
14
6
  * A script to run to set up part of a repository's tooling.
@@ -1 +1 @@
1
- {"version":3,"file":"creations.d.ts","sourceRoot":"","sources":["../../src/types/creations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,oBAAoB,CAAC;CAC3B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,wBAAwB,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACxB;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC;IAExB;;OAEG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IAEzB;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB"}
1
+ {"version":3,"file":"creations.d.ts","sourceRoot":"","sources":["../../src/types/creations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/E;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,wBAAwB,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACxB;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC;IAExB;;OAEG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IAEzB;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bingo",
3
- "version": "0.5.7",
3
+ "version": "0.5.8",
4
4
  "description": "Delightful templates for web repositories. 💝",
5
5
  "homepage": "https://create.bingo",
6
6
  "repository": {
@@ -38,6 +38,7 @@
38
38
  "without-undefined-properties": "^0.1.1",
39
39
  "zod": "^3.24.2",
40
40
  "bingo-fs": "^0.5.4",
41
+ "bingo-requests": "^0.5.4",
41
42
  "bingo-systems": "^0.5.4"
42
43
  },
43
44
  "devDependencies": {