@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.
- package/CHANGELOG.md +7 -0
- package/LICENSE +23 -0
- package/README.md +79 -2
- package/dist/action-client.d.ts +38 -0
- package/dist/action-client.d.ts.map +1 -0
- package/dist/action-client.js +96 -0
- package/dist/action-client.js.map +1 -0
- package/dist/action-context.d.ts +51 -0
- package/dist/action-context.d.ts.map +1 -0
- package/dist/action-context.js +61 -0
- package/dist/action-context.js.map +1 -0
- package/dist/action-runner.d.ts +57 -0
- package/dist/action-runner.d.ts.map +1 -0
- package/dist/action-runner.js +100 -0
- package/dist/action-runner.js.map +1 -0
- package/dist/action-summary.d.ts +45 -0
- package/dist/action-summary.d.ts.map +1 -0
- package/dist/action-summary.js +92 -0
- package/dist/action-summary.js.map +1 -0
- package/dist/action.d.ts +16 -0
- package/dist/action.d.ts.map +1 -0
- package/dist/action.js +37 -0
- package/dist/action.js.map +1 -0
- package/dist/errors/action-api-error.d.ts +13 -0
- package/dist/errors/action-api-error.d.ts.map +1 -0
- package/dist/errors/action-api-error.js +17 -0
- package/dist/errors/action-api-error.js.map +1 -0
- package/dist/errors/action-context-error.d.ts +16 -0
- package/dist/errors/action-context-error.d.ts.map +1 -0
- package/dist/errors/action-context-error.js +16 -0
- package/dist/errors/action-context-error.js.map +1 -0
- package/dist/errors/action-failed.d.ts +10 -0
- package/dist/errors/action-failed.d.ts.map +1 -0
- package/dist/errors/action-failed.js +10 -0
- package/dist/errors/action-failed.js.map +1 -0
- package/dist/errors/action-failure.d.ts +15 -0
- package/dist/errors/action-failure.d.ts.map +1 -0
- package/dist/errors/action-failure.js +15 -0
- package/dist/errors/action-failure.js.map +1 -0
- package/dist/errors/action-input-error.d.ts +17 -0
- package/dist/errors/action-input-error.d.ts.map +1 -0
- package/dist/errors/action-input-error.js +22 -0
- package/dist/errors/action-input-error.js.map +1 -0
- package/dist/errors/action-oidc-error.d.ts +15 -0
- package/dist/errors/action-oidc-error.d.ts.map +1 -0
- package/dist/errors/action-oidc-error.js +18 -0
- package/dist/errors/action-oidc-error.js.map +1 -0
- package/dist/errors/action-summary-error.d.ts +15 -0
- package/dist/errors/action-summary-error.d.ts.map +1 -0
- package/dist/errors/action-summary-error.js +18 -0
- package/dist/errors/action-summary-error.js.map +1 -0
- package/dist/errors/input-validation-failure.d.ts +19 -0
- package/dist/errors/input-validation-failure.d.ts.map +1 -0
- package/dist/errors/input-validation-failure.js +19 -0
- package/dist/errors/input-validation-failure.js.map +1 -0
- package/dist/errors/platform-missing.d.ts +9 -0
- package/dist/errors/platform-missing.d.ts.map +1 -0
- package/dist/errors/platform-missing.js +9 -0
- package/dist/errors/platform-missing.js.map +1 -0
- package/dist/input.d.ts +14 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +30 -0
- package/dist/input.js.map +1 -0
- package/dist/object.d.ts +2 -0
- package/dist/object.d.ts.map +1 -0
- package/dist/object.js +2 -0
- package/dist/object.js.map +1 -0
- package/dist/testing/action-client-test.d.ts +7 -0
- package/dist/testing/action-client-test.d.ts.map +1 -0
- package/dist/testing/action-client-test.js +10 -0
- package/dist/testing/action-client-test.js.map +1 -0
- package/dist/testing/action-context-test.d.ts +10 -0
- package/dist/testing/action-context-test.d.ts.map +1 -0
- package/dist/testing/action-context-test.js +27 -0
- package/dist/testing/action-context-test.js.map +1 -0
- package/dist/testing/action-runner-test.d.ts +26 -0
- package/dist/testing/action-runner-test.d.ts.map +1 -0
- package/dist/testing/action-runner-test.js +92 -0
- package/dist/testing/action-runner-test.js.map +1 -0
- package/dist/testing/action-summary-test.d.ts +11 -0
- package/dist/testing/action-summary-test.d.ts.map +1 -0
- package/dist/testing/action-summary-test.js +62 -0
- package/dist/testing/action-summary-test.js.map +1 -0
- package/dist/thrown-message.d.ts +2 -0
- package/dist/thrown-message.d.ts.map +1 -0
- package/dist/thrown-message.js +7 -0
- package/dist/thrown-message.js.map +1 -0
- package/package.json +64 -3
- package/src/action-client.ts +238 -0
- package/src/action-context.ts +121 -0
- package/src/action-runner.ts +221 -0
- package/src/action-summary.ts +143 -0
- package/src/action.ts +81 -0
- package/src/errors/action-api-error.ts +18 -0
- package/src/errors/action-context-error.ts +20 -0
- package/src/errors/action-failed.ts +10 -0
- package/src/errors/action-failure.ts +36 -0
- package/src/errors/action-input-error.ts +24 -0
- package/src/errors/action-oidc-error.ts +19 -0
- package/src/errors/action-summary-error.ts +22 -0
- package/src/errors/input-validation-failure.ts +23 -0
- package/src/errors/platform-missing.ts +9 -0
- package/src/input.ts +60 -0
- package/src/object.ts +4 -0
- package/src/testing/action-client-test.ts +15 -0
- package/src/testing/action-context-test.ts +36 -0
- package/src/testing/action-runner-test.ts +138 -0
- package/src/testing/action-summary-test.ts +82 -0
- package/src/thrown-message.ts +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAsC,MAAM,QAAQ,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,sBAAsB,EAEvB,MAAM,sCAAsC,CAAC;AAI9C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAUrD,CAAC;AAEF,eAAO,MAAM,GAAG,8DAGd,CAAC;AAEH,eAAO,MAAM,KAAK,GAA4C,CAAC,SAAS,MAAM,CAAC,GAAG,oHAiBhF,CAAC;AAEH,eAAO,MAAM,MAAM,SAAU,MAAM,gEAA+B,CAAC;AAEnE,eAAO,MAAM,cAAc,SAAU,MAAM,gEAAuC,CAAC;AAEnF,eAAO,MAAM,OAAO,SAAU,MAAM,gEAA+D,CAAC;AAEpG,eAAO,MAAM,MAAM,SAAU,MAAM,gEAAyC,CAAC;AAE7E,eAAO,MAAM,OAAO,SAAU,MAAM,iEAA6B,CAAC;AAElE,eAAO,MAAM,MAAM,SAAU,MAAM,oGAC2B,CAAC;AAE/D,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,MAAM,CAAC,GAAG,QAAQ,MAAM,UAAU,CAAC,2FACtB,CAAC"}
|
package/dist/input.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Effect, Schema, SchemaGetter, SchemaTransformation } from "effect";
|
|
2
|
+
import { ActionRunner } from "./action-runner.js";
|
|
3
|
+
import { InputValidationFailure, InputValidationFailureReason, } from "./errors/input-validation-failure.js";
|
|
4
|
+
const yamlTrue = new Set(["true", "yes", "on", "1"]);
|
|
5
|
+
export const YamlBoolean = Schema.String.pipe(Schema.decodeTo(Schema.String, SchemaTransformation.toLowerCase()), Schema.decodeTo(Schema.Literals(["true", "yes", "on", "1", "false", "no", "off", "0", ""]), SchemaTransformation.passthroughSupertype()), Schema.decodeTo(Schema.Boolean, {
|
|
6
|
+
decode: SchemaGetter.transform((literal) => yamlTrue.has(literal)),
|
|
7
|
+
encode: SchemaGetter.transform((value) => (value ? "true" : "false")),
|
|
8
|
+
}));
|
|
9
|
+
export const raw = Effect.fn("Input.raw")(function* raw(name) {
|
|
10
|
+
const runner = yield* ActionRunner;
|
|
11
|
+
return yield* runner.getInput(name).pipe(Effect.orDie);
|
|
12
|
+
});
|
|
13
|
+
export const parse = Effect.fn("Input.parse")(function* parse(name, schema) {
|
|
14
|
+
const value = yield* raw(name);
|
|
15
|
+
return yield* Schema.decodeUnknownEffect(schema)(value).pipe(Effect.mapError((cause) => new InputValidationFailure({
|
|
16
|
+
cause,
|
|
17
|
+
input: name,
|
|
18
|
+
message: cause.message,
|
|
19
|
+
reason: InputValidationFailureReason.SchemaValidation,
|
|
20
|
+
value,
|
|
21
|
+
})));
|
|
22
|
+
});
|
|
23
|
+
export const string = (name) => parse(name, Schema.String);
|
|
24
|
+
export const nonEmptyString = (name) => parse(name, Schema.NonEmptyString);
|
|
25
|
+
export const integer = (name) => parse(name, Schema.NumberFromString.check(Schema.isInt()));
|
|
26
|
+
export const number = (name) => parse(name, Schema.NumberFromString);
|
|
27
|
+
export const boolean = (name) => parse(name, YamlBoolean);
|
|
28
|
+
export const secret = (name) => parse(name, Schema.RedactedFromValue(Schema.NonEmptyString));
|
|
29
|
+
export const json = (name, schema) => parse(name, Schema.fromJsonString(schema));
|
|
30
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
|
package/dist/object.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,SAAS,MAAM,SACtC,CAAC,WACC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,kBACkC,CAAC"}
|
package/dist/object.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAQ,EACR,OAAqC,EACrC,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Layer } from "effect";
|
|
2
|
+
import { ActionClient } from "../action-client.ts";
|
|
3
|
+
export declare const make: (options?: {
|
|
4
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
5
|
+
}) => Layer.Layer<ActionClient, never, never>;
|
|
6
|
+
export declare const layer: Layer.Layer<ActionClient>;
|
|
7
|
+
//# sourceMappingURL=action-client-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-client-test.d.ts","sourceRoot":"","sources":["../../src/testing/action-client-test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,eAAO,MAAM,IAAI,aAAa;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAE,4CAQtE,CAAC;AAEL,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Redacted } from "effect";
|
|
2
|
+
import { ActionClient } from "../action-client.js";
|
|
3
|
+
export const make = (options = {}) => ActionClient.layer(Redacted.make("test-token"), {
|
|
4
|
+
request: {
|
|
5
|
+
fetch: options.fetch ??
|
|
6
|
+
(async () => await Promise.resolve(Response.json({ message: "Not Found" }, { status: 404 }))),
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
export const layer = make();
|
|
10
|
+
//# sourceMappingURL=action-client-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-client-test.js","sourceRoot":"","sources":["../../src/testing/action-client-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,GAAiD,EAAE,EAAE,EAAE,CACjF,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;IAC9C,OAAO,EAAE;QACP,KAAK,EACH,OAAO,CAAC,KAAK;YACb,CAAC,KAAK,IAAI,EAAE,CACV,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;KACrF;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,KAAK,GAA8B,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Layer } from "effect";
|
|
2
|
+
import { ActionContext } from "../action-context.ts";
|
|
3
|
+
import type { ActionContextApi, IssueContext, RepoContext } from "../action-context.ts";
|
|
4
|
+
import { ActionContextError } from "../errors/action-context-error.ts";
|
|
5
|
+
export declare const make: (options?: Partial<Omit<ActionContextApi, "repo" | "issue"> & {
|
|
6
|
+
readonly repo: RepoContext | ActionContextError;
|
|
7
|
+
readonly issue: IssueContext | ActionContextError;
|
|
8
|
+
}>) => Layer.Layer<ActionContext, never, never>;
|
|
9
|
+
export declare const layer: Layer.Layer<ActionContext, never, never>;
|
|
10
|
+
//# sourceMappingURL=action-context-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-context-test.d.ts","sourceRoot":"","sources":["../../src/testing/action-context-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,eAAO,MAAM,IAAI,aACN,OAAO,CACd,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IACzC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAAC;CACnD,CACF,6CAsBF,CAAC;AAEF,eAAO,MAAM,KAAK,0CAAS,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Effect, Layer } from "effect";
|
|
2
|
+
import { ActionContext } from "../action-context.js";
|
|
3
|
+
import { ActionContextError } from "../errors/action-context-error.js";
|
|
4
|
+
export const make = (options = {}) => {
|
|
5
|
+
const repo = options.repo ?? { owner: "octocat", repo: "hello-world" };
|
|
6
|
+
const issue = options.issue ?? { number: 1, owner: "octocat", repo: "hello-world" };
|
|
7
|
+
return Layer.succeed(ActionContext, {
|
|
8
|
+
action: options.action ?? "run",
|
|
9
|
+
actor: options.actor ?? "octocat",
|
|
10
|
+
apiUrl: options.apiUrl ?? "https://api.github.com",
|
|
11
|
+
eventName: options.eventName ?? "push",
|
|
12
|
+
graphqlUrl: options.graphqlUrl ?? "https://api.github.com/graphql",
|
|
13
|
+
issue: issue instanceof ActionContextError ? Effect.fail(issue) : Effect.succeed(issue),
|
|
14
|
+
job: options.job ?? "build",
|
|
15
|
+
payload: options.payload ?? {},
|
|
16
|
+
ref: options.ref ?? "refs/heads/main",
|
|
17
|
+
repo: repo instanceof ActionContextError ? Effect.fail(repo) : Effect.succeed(repo),
|
|
18
|
+
runAttempt: options.runAttempt ?? 1,
|
|
19
|
+
runId: options.runId ?? 12_345,
|
|
20
|
+
runNumber: options.runNumber ?? 1,
|
|
21
|
+
serverUrl: options.serverUrl ?? "https://github.com",
|
|
22
|
+
sha: options.sha ?? "abc123def456",
|
|
23
|
+
workflow: options.workflow ?? "CI",
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
export const layer = make();
|
|
27
|
+
//# sourceMappingURL=action-context-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-context-test.js","sourceRoot":"","sources":["../../src/testing/action-context-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,OAAO,GAKH,EAAE,EACN,EAAE;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACvE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACpF,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,wBAAwB;QAClD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,gCAAgC;QAClE,KAAK,EAAE,KAAK,YAAY,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACvF,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO;QAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,iBAAiB;QACrC,IAAI,EAAE,IAAI,YAAY,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACnF,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,oBAAoB;QACpD,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,cAAc;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;KACnC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Layer } from "effect";
|
|
2
|
+
import type { Schema } from "effect";
|
|
3
|
+
import { ActionRunner } from "../action-runner.ts";
|
|
4
|
+
export interface LogEntry {
|
|
5
|
+
readonly level: "debug" | "info" | "warning" | "error" | "notice";
|
|
6
|
+
readonly message: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const make: (options?: {
|
|
9
|
+
readonly inputs?: Readonly<Record<string, string>>;
|
|
10
|
+
readonly state?: Readonly<Record<string, string>>;
|
|
11
|
+
readonly idToken?: string;
|
|
12
|
+
}) => {
|
|
13
|
+
layer: Layer.Layer<ActionRunner, never, never>;
|
|
14
|
+
recording: {
|
|
15
|
+
failures: string[];
|
|
16
|
+
groups: string[];
|
|
17
|
+
logs: LogEntry[];
|
|
18
|
+
outputs: Map<string, Schema.Json>;
|
|
19
|
+
paths: string[];
|
|
20
|
+
secrets: string[];
|
|
21
|
+
state: Map<string, string>;
|
|
22
|
+
variables: Map<string, string>;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export declare const layer: Layer.Layer<ActionRunner, never, never>;
|
|
26
|
+
//# sourceMappingURL=action-runner-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-runner-test.d.ts","sourceRoot":"","sources":["../../src/testing/action-runner-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAuB,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAQD,eAAO,MAAM,IAAI,aACN;IACP,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;;;;;;;;;;;;CAiHF,CAAC;AAEF,eAAO,MAAQ,KAAK,yCAAW,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Effect, Layer, Predicate, Redacted } from "effect";
|
|
2
|
+
import { ActionRunner } from "../action-runner.js";
|
|
3
|
+
import { ActionInputError, ActionInputErrorReason } from "../errors/action-input-error.js";
|
|
4
|
+
const trueInputs = new Set(["true", "True", "TRUE"]);
|
|
5
|
+
const falseInputs = new Set(["false", "False", "FALSE"]);
|
|
6
|
+
const messageText = (message) => Predicate.isString(message) ? message : message.message;
|
|
7
|
+
export const make = (options = {}) => {
|
|
8
|
+
const inputs = new Map(Object.entries(options.inputs ?? {}));
|
|
9
|
+
const recording = {
|
|
10
|
+
failures: Array.of(),
|
|
11
|
+
groups: Array.of(),
|
|
12
|
+
logs: Array.of(),
|
|
13
|
+
outputs: new Map(),
|
|
14
|
+
paths: Array.of(),
|
|
15
|
+
secrets: Array.of(),
|
|
16
|
+
state: new Map(Object.entries(options.state ?? {})),
|
|
17
|
+
variables: new Map(),
|
|
18
|
+
};
|
|
19
|
+
const readInput = Effect.fn("ActionRunnerTest.readInput")(function* readInput(name, inputOptions = {}) {
|
|
20
|
+
const value = inputs.get(name) ?? "";
|
|
21
|
+
if (inputOptions.required === true && value === "") {
|
|
22
|
+
return yield* new ActionInputError({ name, reason: ActionInputErrorReason.Missing });
|
|
23
|
+
}
|
|
24
|
+
return inputOptions.trimWhitespace === false ? value : value.trim();
|
|
25
|
+
});
|
|
26
|
+
const log = (level) => (message) => Effect.sync(() => {
|
|
27
|
+
recording.logs.push({ level, message: messageText(message) });
|
|
28
|
+
});
|
|
29
|
+
const layer = Layer.succeed(ActionRunner, {
|
|
30
|
+
addPath: (path) => Effect.sync(() => {
|
|
31
|
+
recording.paths.push(path);
|
|
32
|
+
}),
|
|
33
|
+
debug: log("debug"),
|
|
34
|
+
endGroup: () => Effect.sync(() => {
|
|
35
|
+
recording.groups.pop();
|
|
36
|
+
}),
|
|
37
|
+
error: log("error"),
|
|
38
|
+
exportVariable: (name, value) => Effect.sync(() => {
|
|
39
|
+
recording.variables.set(name, value);
|
|
40
|
+
}),
|
|
41
|
+
getBooleanInput: Effect.fn("TestActionRunner.getBooleanInput")(function* getBooleanInput(name, inputOptions) {
|
|
42
|
+
const value = yield* readInput(name, inputOptions).pipe(Effect.mapError((cause) => new ActionInputError({ cause, name, reason: ActionInputErrorReason.InvalidType })));
|
|
43
|
+
if (trueInputs.has(value)) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
if (falseInputs.has(value)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return yield* new ActionInputError({
|
|
50
|
+
name,
|
|
51
|
+
reason: ActionInputErrorReason.InvalidType,
|
|
52
|
+
value,
|
|
53
|
+
});
|
|
54
|
+
}),
|
|
55
|
+
getIDToken: () => Effect.succeed(Redacted.make(options.idToken ?? "test-oidc-token")),
|
|
56
|
+
getInput: readInput,
|
|
57
|
+
getMultilineInput: Effect.fn("ActionRunnerTest.getMultilineInput")(function* getMultilineInput(name, inputOptions) {
|
|
58
|
+
const value = yield* readInput(name, { ...inputOptions, trimWhitespace: false });
|
|
59
|
+
return value
|
|
60
|
+
.split("\n")
|
|
61
|
+
.filter((line) => line !== "")
|
|
62
|
+
.map((line) => (inputOptions?.trimWhitespace === false ? line : line.trim()));
|
|
63
|
+
}),
|
|
64
|
+
getState: (name) => Effect.sync(() => recording.state.get(name) ?? ""),
|
|
65
|
+
group: (name, fn) => Effect.acquireUseRelease(Effect.sync(() => {
|
|
66
|
+
recording.groups.push(name);
|
|
67
|
+
}), fn, () => Effect.sync(() => {
|
|
68
|
+
recording.groups.pop();
|
|
69
|
+
})).pipe(Effect.withSpan("ActionRunnerTest.group", { attributes: { group: name } })),
|
|
70
|
+
info: log("info"),
|
|
71
|
+
notice: log("notice"),
|
|
72
|
+
saveState: (name, value) => Effect.sync(() => {
|
|
73
|
+
recording.state.set(name, Predicate.isString(value) ? value : JSON.stringify(value));
|
|
74
|
+
}),
|
|
75
|
+
setFailed: (message) => Effect.sync(() => {
|
|
76
|
+
recording.failures.push(messageText(message));
|
|
77
|
+
}),
|
|
78
|
+
setOutput: (name, value) => Effect.sync(() => {
|
|
79
|
+
recording.outputs.set(name, value);
|
|
80
|
+
}),
|
|
81
|
+
setSecret: (secret) => Effect.sync(() => {
|
|
82
|
+
recording.secrets.push(secret);
|
|
83
|
+
}),
|
|
84
|
+
startGroup: (name) => Effect.sync(() => {
|
|
85
|
+
recording.groups.push(name);
|
|
86
|
+
}),
|
|
87
|
+
warning: log("warning"),
|
|
88
|
+
});
|
|
89
|
+
return { layer, recording };
|
|
90
|
+
};
|
|
91
|
+
export const { layer } = make();
|
|
92
|
+
//# sourceMappingURL=action-runner-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-runner-test.js","sourceRoot":"","sources":["../../src/testing/action-runner-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Layer } from "effect";
|
|
2
|
+
import { ActionSummary } from "../action-summary.ts";
|
|
3
|
+
export declare const make: (options?: {
|
|
4
|
+
readonly writeError?: string;
|
|
5
|
+
readonly clearError?: string;
|
|
6
|
+
}) => {
|
|
7
|
+
getBuffer: () => string;
|
|
8
|
+
layer: Layer.Layer<ActionSummary, never, never>;
|
|
9
|
+
};
|
|
10
|
+
export declare const layer: Layer.Layer<ActionSummary, never, never>;
|
|
11
|
+
//# sourceMappingURL=action-summary-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-summary-test.d.ts","sourceRoot":"","sources":["../../src/testing/action-summary-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrD,eAAO,MAAM,IAAI,aACN;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;IAqE9D,SAAS;IAAyB,KAAK;CACjD,CAAC;AAEF,eAAO,MAAQ,KAAK,0CAAW,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Effect, Layer } from "effect";
|
|
2
|
+
import { ActionSummary } from "../action-summary.js";
|
|
3
|
+
import { ActionSummaryError, ActionSummaryErrorReason } from "../errors/action-summary-error.js";
|
|
4
|
+
const attribute = (name, value) => value === undefined ? "" : ` ${name}="${value}"`;
|
|
5
|
+
export const make = (options = {}) => {
|
|
6
|
+
const chunks = Array.of();
|
|
7
|
+
const summary = {
|
|
8
|
+
addBreak: () => summary.addRaw("<br>\n"),
|
|
9
|
+
addCodeBlock: (code, lang) => summary.addRaw(`<pre${attribute("lang", lang)}><code>${code}</code></pre>\n`),
|
|
10
|
+
addDetails: (label, content) => summary.addRaw(`<details><summary>${label}</summary>${content}</details>\n`),
|
|
11
|
+
addEOL: () => summary.addRaw("\n"),
|
|
12
|
+
addHeading: (text, level = 1) => summary.addRaw(`<h${level}>${text}</h${level}>\n`),
|
|
13
|
+
addImage: (src, alt, imageOptions) => summary.addRaw(`<img src="${src}" alt="${alt}"${attribute("width", imageOptions?.width)}${attribute("height", imageOptions?.height)}>\n`),
|
|
14
|
+
addLink: (text, href) => summary.addRaw(`<a href="${href}">${text}</a>\n`),
|
|
15
|
+
addList: (items, ordered = false) => {
|
|
16
|
+
const tag = ordered ? "ol" : "ul";
|
|
17
|
+
return summary.addRaw(`<${tag}>${items.map((item) => `<li>${item}</li>`).join("")}</${tag}>\n`);
|
|
18
|
+
},
|
|
19
|
+
addQuote: (text, cite) => summary.addRaw(`<blockquote${attribute("cite", cite)}>${text}</blockquote>\n`),
|
|
20
|
+
addRaw: (text, addEOL = false) => {
|
|
21
|
+
chunks.push(addEOL ? `${text}\n` : text);
|
|
22
|
+
return summary;
|
|
23
|
+
},
|
|
24
|
+
addSeparator: () => summary.addRaw("<hr>\n"),
|
|
25
|
+
addTable: (rows) => {
|
|
26
|
+
const body = rows
|
|
27
|
+
.map((row) => {
|
|
28
|
+
const cells = row.map((cell) => {
|
|
29
|
+
const tag = cell.header === true ? "th" : "td";
|
|
30
|
+
return `<${tag}${attribute("colspan", cell.colspan)}${attribute("rowspan", cell.rowspan)}>${cell.data}</${tag}>`;
|
|
31
|
+
});
|
|
32
|
+
return `<tr>${cells.join("")}</tr>`;
|
|
33
|
+
})
|
|
34
|
+
.join("");
|
|
35
|
+
return summary.addRaw(`<table>${body}</table>\n`);
|
|
36
|
+
},
|
|
37
|
+
clear: () => options.clearError === undefined
|
|
38
|
+
? Effect.sync(() => {
|
|
39
|
+
chunks.splice(0);
|
|
40
|
+
return summary;
|
|
41
|
+
})
|
|
42
|
+
: Effect.fail(new ActionSummaryError({
|
|
43
|
+
description: options.clearError,
|
|
44
|
+
reason: ActionSummaryErrorReason.WriteFailed,
|
|
45
|
+
})),
|
|
46
|
+
emptyBuffer: () => {
|
|
47
|
+
chunks.splice(0);
|
|
48
|
+
return summary;
|
|
49
|
+
},
|
|
50
|
+
isEmptyBuffer: () => chunks.every((chunk) => chunk === ""),
|
|
51
|
+
stringify: () => chunks.join(""),
|
|
52
|
+
write: () => options.writeError === undefined
|
|
53
|
+
? Effect.succeed(summary)
|
|
54
|
+
: Effect.fail(new ActionSummaryError({
|
|
55
|
+
description: options.writeError,
|
|
56
|
+
reason: ActionSummaryErrorReason.WriteFailed,
|
|
57
|
+
})),
|
|
58
|
+
};
|
|
59
|
+
return { getBuffer: () => chunks.join(""), layer: Layer.succeed(ActionSummary, summary) };
|
|
60
|
+
};
|
|
61
|
+
export const { layer } = make();
|
|
62
|
+
//# sourceMappingURL=action-summary-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-summary-test.js","sourceRoot":"","sources":["../../src/testing/action-summary-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thrown-message.d.ts","sourceRoot":"","sources":["../src/thrown-message.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,UAAW,OAAO,YAAY,MAAM,WAI1D,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Option, Schema } from "effect";
|
|
2
|
+
const decodeThrown = Schema.decodeUnknownOption(Schema.Struct({ message: Schema.String }));
|
|
3
|
+
export const thrownMessage = (cause, fallback) => Option.match(decodeThrown(cause), {
|
|
4
|
+
onNone: () => fallback,
|
|
5
|
+
onSome: (thrown) => thrown.message,
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=thrown-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thrown-message.js","sourceRoot":"","sources":["../src/thrown-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE3F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAE,EAAE,CAChE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IAChC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ;IACtB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO;CACnC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,67 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@computis/effect-github",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Write the logic of GitHub Actions with Effect: inputs, outputs, event context, Octokit, job summary and runMain.",
|
|
5
|
+
"homepage": "https://github.com/computis-labs/oss/tree/main/packages/effect-github#readme",
|
|
6
|
+
"bugs": "https://github.com/computis-labs/oss/issues",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/computis-labs/oss.git",
|
|
11
|
+
"directory": "packages/effect-github"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"src/**/*.ts",
|
|
15
|
+
"!src/**/*.test.ts",
|
|
16
|
+
"dist/**/*.js",
|
|
17
|
+
"dist/**/*.js.map",
|
|
18
|
+
"dist/**/*.d.ts",
|
|
19
|
+
"dist/**/*.d.ts.map",
|
|
20
|
+
"CHANGELOG.md"
|
|
21
|
+
],
|
|
22
|
+
"type": "module",
|
|
23
|
+
"exports": {
|
|
24
|
+
"./action": "./dist/action.js",
|
|
25
|
+
"./action-client": "./dist/action-client.js",
|
|
26
|
+
"./action-context": "./dist/action-context.js",
|
|
27
|
+
"./action-runner": "./dist/action-runner.js",
|
|
28
|
+
"./action-summary": "./dist/action-summary.js",
|
|
29
|
+
"./errors/*": "./dist/errors/*.js",
|
|
30
|
+
"./input": "./dist/input.js",
|
|
31
|
+
"./testing/*": "./dist/testing/*.js",
|
|
32
|
+
"./package.json": "./package.json"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public",
|
|
36
|
+
"provenance": true
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@actions/core": "3.0.1",
|
|
40
|
+
"@actions/github": "9.1.1"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@effect/platform-node": "4.0.3",
|
|
44
|
+
"@effect/vitest": "4.0.3",
|
|
45
|
+
"@types/node": "^26.6.4",
|
|
46
|
+
"effect": "4.0.3",
|
|
47
|
+
"vitest": "5.0.3",
|
|
48
|
+
"@computis/config": "0.0.1"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"@effect/platform-node": "^4.0.0",
|
|
52
|
+
"effect": "^4.0.0"
|
|
53
|
+
},
|
|
54
|
+
"peerDependenciesMeta": {
|
|
55
|
+
"@effect/platform-node": {
|
|
56
|
+
"optional": true
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=22"
|
|
61
|
+
},
|
|
62
|
+
"scripts": {
|
|
63
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
64
|
+
"test": "vitest run",
|
|
65
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
66
|
+
}
|
|
6
67
|
}
|