@computis/effect-github 0.0.0-stage → 0.1.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 (109) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +23 -0
  3. package/README.md +79 -2
  4. package/dist/action-client.d.ts +38 -0
  5. package/dist/action-client.d.ts.map +1 -0
  6. package/dist/action-client.js +96 -0
  7. package/dist/action-client.js.map +1 -0
  8. package/dist/action-context.d.ts +51 -0
  9. package/dist/action-context.d.ts.map +1 -0
  10. package/dist/action-context.js +61 -0
  11. package/dist/action-context.js.map +1 -0
  12. package/dist/action-runner.d.ts +57 -0
  13. package/dist/action-runner.d.ts.map +1 -0
  14. package/dist/action-runner.js +100 -0
  15. package/dist/action-runner.js.map +1 -0
  16. package/dist/action-summary.d.ts +45 -0
  17. package/dist/action-summary.d.ts.map +1 -0
  18. package/dist/action-summary.js +92 -0
  19. package/dist/action-summary.js.map +1 -0
  20. package/dist/action.d.ts +16 -0
  21. package/dist/action.d.ts.map +1 -0
  22. package/dist/action.js +37 -0
  23. package/dist/action.js.map +1 -0
  24. package/dist/errors/action-api-error.d.ts +13 -0
  25. package/dist/errors/action-api-error.d.ts.map +1 -0
  26. package/dist/errors/action-api-error.js +17 -0
  27. package/dist/errors/action-api-error.js.map +1 -0
  28. package/dist/errors/action-context-error.d.ts +16 -0
  29. package/dist/errors/action-context-error.d.ts.map +1 -0
  30. package/dist/errors/action-context-error.js +16 -0
  31. package/dist/errors/action-context-error.js.map +1 -0
  32. package/dist/errors/action-failed.d.ts +10 -0
  33. package/dist/errors/action-failed.d.ts.map +1 -0
  34. package/dist/errors/action-failed.js +10 -0
  35. package/dist/errors/action-failed.js.map +1 -0
  36. package/dist/errors/action-failure.d.ts +15 -0
  37. package/dist/errors/action-failure.d.ts.map +1 -0
  38. package/dist/errors/action-failure.js +15 -0
  39. package/dist/errors/action-failure.js.map +1 -0
  40. package/dist/errors/action-input-error.d.ts +17 -0
  41. package/dist/errors/action-input-error.d.ts.map +1 -0
  42. package/dist/errors/action-input-error.js +22 -0
  43. package/dist/errors/action-input-error.js.map +1 -0
  44. package/dist/errors/action-oidc-error.d.ts +15 -0
  45. package/dist/errors/action-oidc-error.d.ts.map +1 -0
  46. package/dist/errors/action-oidc-error.js +18 -0
  47. package/dist/errors/action-oidc-error.js.map +1 -0
  48. package/dist/errors/action-summary-error.d.ts +15 -0
  49. package/dist/errors/action-summary-error.d.ts.map +1 -0
  50. package/dist/errors/action-summary-error.js +18 -0
  51. package/dist/errors/action-summary-error.js.map +1 -0
  52. package/dist/errors/input-validation-failure.d.ts +19 -0
  53. package/dist/errors/input-validation-failure.d.ts.map +1 -0
  54. package/dist/errors/input-validation-failure.js +19 -0
  55. package/dist/errors/input-validation-failure.js.map +1 -0
  56. package/dist/errors/platform-missing.d.ts +9 -0
  57. package/dist/errors/platform-missing.d.ts.map +1 -0
  58. package/dist/errors/platform-missing.js +9 -0
  59. package/dist/errors/platform-missing.js.map +1 -0
  60. package/dist/input.d.ts +14 -0
  61. package/dist/input.d.ts.map +1 -0
  62. package/dist/input.js +30 -0
  63. package/dist/input.js.map +1 -0
  64. package/dist/object.d.ts +2 -0
  65. package/dist/object.d.ts.map +1 -0
  66. package/dist/object.js +2 -0
  67. package/dist/object.js.map +1 -0
  68. package/dist/testing/action-client-test.d.ts +7 -0
  69. package/dist/testing/action-client-test.d.ts.map +1 -0
  70. package/dist/testing/action-client-test.js +10 -0
  71. package/dist/testing/action-client-test.js.map +1 -0
  72. package/dist/testing/action-context-test.d.ts +10 -0
  73. package/dist/testing/action-context-test.d.ts.map +1 -0
  74. package/dist/testing/action-context-test.js +27 -0
  75. package/dist/testing/action-context-test.js.map +1 -0
  76. package/dist/testing/action-runner-test.d.ts +26 -0
  77. package/dist/testing/action-runner-test.d.ts.map +1 -0
  78. package/dist/testing/action-runner-test.js +92 -0
  79. package/dist/testing/action-runner-test.js.map +1 -0
  80. package/dist/testing/action-summary-test.d.ts +11 -0
  81. package/dist/testing/action-summary-test.d.ts.map +1 -0
  82. package/dist/testing/action-summary-test.js +62 -0
  83. package/dist/testing/action-summary-test.js.map +1 -0
  84. package/dist/thrown-message.d.ts +2 -0
  85. package/dist/thrown-message.d.ts.map +1 -0
  86. package/dist/thrown-message.js +7 -0
  87. package/dist/thrown-message.js.map +1 -0
  88. package/package.json +64 -3
  89. package/src/action-client.ts +238 -0
  90. package/src/action-context.ts +121 -0
  91. package/src/action-runner.ts +221 -0
  92. package/src/action-summary.ts +143 -0
  93. package/src/action.ts +81 -0
  94. package/src/errors/action-api-error.ts +18 -0
  95. package/src/errors/action-context-error.ts +20 -0
  96. package/src/errors/action-failed.ts +10 -0
  97. package/src/errors/action-failure.ts +36 -0
  98. package/src/errors/action-input-error.ts +24 -0
  99. package/src/errors/action-oidc-error.ts +19 -0
  100. package/src/errors/action-summary-error.ts +22 -0
  101. package/src/errors/input-validation-failure.ts +23 -0
  102. package/src/errors/platform-missing.ts +9 -0
  103. package/src/input.ts +60 -0
  104. package/src/object.ts +4 -0
  105. package/src/testing/action-client-test.ts +15 -0
  106. package/src/testing/action-context-test.ts +36 -0
  107. package/src/testing/action-runner-test.ts +138 -0
  108. package/src/testing/action-summary-test.ts +82 -0
  109. package/src/thrown-message.ts +9 -0
@@ -0,0 +1,82 @@
1
+ import { Effect, Layer } from "effect";
2
+ import { ActionSummary } from "../action-summary.ts";
3
+ import type { ActionSummaryApi } from "../action-summary.ts";
4
+ import { ActionSummaryError, ActionSummaryErrorReason } from "../errors/action-summary-error.ts";
5
+
6
+ const attribute = (name: string, value: string | number | undefined) =>
7
+ value === undefined ? "" : ` ${name}="${value}"`;
8
+
9
+ export const make = (
10
+ options: { readonly writeError?: string; readonly clearError?: string } = {},
11
+ ) => {
12
+ const chunks = Array.of<string>();
13
+ const summary: ActionSummaryApi = {
14
+ addBreak: () => summary.addRaw("<br>\n"),
15
+ addCodeBlock: (code, lang) =>
16
+ summary.addRaw(`<pre${attribute("lang", lang)}><code>${code}</code></pre>\n`),
17
+ addDetails: (label, content) =>
18
+ summary.addRaw(`<details><summary>${label}</summary>${content}</details>\n`),
19
+ addEOL: () => summary.addRaw("\n"),
20
+ addHeading: (text, level = 1) => summary.addRaw(`<h${level}>${text}</h${level}>\n`),
21
+ addImage: (src, alt, imageOptions) =>
22
+ summary.addRaw(
23
+ `<img src="${src}" alt="${alt}"${attribute("width", imageOptions?.width)}${attribute("height", imageOptions?.height)}>\n`,
24
+ ),
25
+ addLink: (text, href) => summary.addRaw(`<a href="${href}">${text}</a>\n`),
26
+ addList: (items, ordered = false) => {
27
+ const tag = ordered ? "ol" : "ul";
28
+ return summary.addRaw(
29
+ `<${tag}>${items.map((item) => `<li>${item}</li>`).join("")}</${tag}>\n`,
30
+ );
31
+ },
32
+ addQuote: (text, cite) =>
33
+ summary.addRaw(`<blockquote${attribute("cite", cite)}>${text}</blockquote>\n`),
34
+ addRaw: (text, addEOL = false) => {
35
+ chunks.push(addEOL ? `${text}\n` : text);
36
+ return summary;
37
+ },
38
+ addSeparator: () => summary.addRaw("<hr>\n"),
39
+ addTable: (rows) => {
40
+ const body = rows
41
+ .map((row) => {
42
+ const cells = row.map((cell) => {
43
+ const tag = cell.header === true ? "th" : "td";
44
+ return `<${tag}${attribute("colspan", cell.colspan)}${attribute("rowspan", cell.rowspan)}>${cell.data}</${tag}>`;
45
+ });
46
+ return `<tr>${cells.join("")}</tr>`;
47
+ })
48
+ .join("");
49
+ return summary.addRaw(`<table>${body}</table>\n`);
50
+ },
51
+ clear: () =>
52
+ options.clearError === undefined
53
+ ? Effect.sync(() => {
54
+ chunks.splice(0);
55
+ return summary;
56
+ })
57
+ : Effect.fail(
58
+ new ActionSummaryError({
59
+ description: options.clearError,
60
+ reason: ActionSummaryErrorReason.WriteFailed,
61
+ }),
62
+ ),
63
+ emptyBuffer: () => {
64
+ chunks.splice(0);
65
+ return summary;
66
+ },
67
+ isEmptyBuffer: () => chunks.every((chunk) => chunk === ""),
68
+ stringify: () => chunks.join(""),
69
+ write: () =>
70
+ options.writeError === undefined
71
+ ? Effect.succeed(summary)
72
+ : Effect.fail(
73
+ new ActionSummaryError({
74
+ description: options.writeError,
75
+ reason: ActionSummaryErrorReason.WriteFailed,
76
+ }),
77
+ ),
78
+ };
79
+ return { getBuffer: () => chunks.join(""), layer: Layer.succeed(ActionSummary, summary) };
80
+ };
81
+
82
+ export const { layer } = make();
@@ -0,0 +1,9 @@
1
+ import { Option, Schema } from "effect";
2
+
3
+ const decodeThrown = Schema.decodeUnknownOption(Schema.Struct({ message: Schema.String }));
4
+
5
+ export const thrownMessage = (cause: unknown, fallback: string) =>
6
+ Option.match(decodeThrown(cause), {
7
+ onNone: () => fallback,
8
+ onSome: (thrown) => thrown.message,
9
+ });