@usine/config 0.1.0 → 0.2.1
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/README.md +22 -4
- package/dist/agent.d.ts +26 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +32 -0
- package/dist/agent.js.map +1 -0
- package/dist/board.d.ts +31 -0
- package/dist/board.d.ts.map +1 -0
- package/dist/board.js +32 -0
- package/dist/board.js.map +1 -0
- package/dist/checks.d.ts +3 -0
- package/dist/checks.d.ts.map +1 -0
- package/dist/checks.js +3 -0
- package/dist/checks.js.map +1 -0
- package/dist/factory.d.ts +86 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +87 -0
- package/dist/factory.js.map +1 -0
- package/dist/file.d.ts +27 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +29 -0
- package/dist/file.js.map +1 -0
- package/dist/frontmatter.d.ts +2 -2
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +2 -2
- package/dist/frontmatter.js.map +1 -1
- package/dist/instance/diagnostics.d.ts +19 -0
- package/dist/instance/diagnostics.d.ts.map +1 -0
- package/dist/instance/diagnostics.js +22 -0
- package/dist/instance/diagnostics.js.map +1 -0
- package/dist/instance/instance.d.ts +17 -0
- package/dist/instance/instance.d.ts.map +1 -0
- package/dist/instance/instance.js +21 -0
- package/dist/instance/instance.js.map +1 -0
- package/dist/instance/references.d.ts +21 -0
- package/dist/instance/references.d.ts.map +1 -0
- package/dist/instance/references.js +38 -0
- package/dist/instance/references.js.map +1 -0
- package/dist/instance-folder.d.ts +5 -4
- package/dist/instance-folder.d.ts.map +1 -1
- package/dist/instance-folder.js +23 -3
- package/dist/instance-folder.js.map +1 -1
- package/dist/label.d.ts +22 -0
- package/dist/label.d.ts.map +1 -0
- package/dist/label.js +25 -0
- package/dist/label.js.map +1 -0
- package/dist/loop.d.ts +42 -0
- package/dist/loop.d.ts.map +1 -0
- package/dist/loop.js +36 -0
- package/dist/loop.js.map +1 -0
- package/dist/parser.d.ts +13 -8
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +53 -14
- package/dist/parser.js.map +1 -1
- package/dist/payload-slices.d.ts +8 -7
- package/dist/payload-slices.d.ts.map +1 -1
- package/dist/payload-slices.js +8 -8
- package/dist/payload-slices.js.map +1 -1
- package/dist/selector.d.ts +25 -3
- package/dist/selector.d.ts.map +1 -1
- package/dist/selector.js +14 -2
- package/dist/selector.js.map +1 -1
- package/dist/trigger.d.ts +37 -0
- package/dist/trigger.d.ts.map +1 -0
- package/dist/trigger.js +34 -0
- package/dist/trigger.js.map +1 -0
- package/dist/yaml/document.d.ts +3 -3
- package/dist/yaml/document.d.ts.map +1 -1
- package/dist/yaml/document.js +3 -3
- package/dist/yaml/document.js.map +1 -1
- package/dist/yaml/writer.d.ts +5 -3
- package/dist/yaml/writer.d.ts.map +1 -1
- package/dist/yaml/writer.js +7 -5
- package/dist/yaml/writer.js.map +1 -1
- package/package.json +54 -6
- package/dist/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/model.d.ts +0 -257
- package/dist/model.d.ts.map +0 -1
- package/dist/model.js +0 -238
- package/dist/model.js.map +0 -1
package/dist/payload-slices.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Environment, ObjectField, ObjectType, TypeReference, Variable } from "@usine/expression";
|
|
1
|
+
import { splitRepositoryName } from "@usine/core/repository";
|
|
2
|
+
import { Environment, ObjectField, ObjectType, TypeReference, Variable, } from "@usine/expression/expression-engine";
|
|
3
3
|
import { Schema } from "effect";
|
|
4
4
|
const reference = Schema.decodeUnknownSync(TypeReference);
|
|
5
5
|
const objectType = (name, fields) => new ObjectType({
|
|
@@ -155,7 +155,7 @@ const environment = (types, itemType) => new Environment({
|
|
|
155
155
|
new Variable({ name: "item", type: reference(itemType) }),
|
|
156
156
|
],
|
|
157
157
|
});
|
|
158
|
-
/**
|
|
158
|
+
/** The CEL environment for issue triggers: the `item` type mirrors the issue payload slice. */
|
|
159
159
|
export const issueEnvironment = environment([
|
|
160
160
|
actor,
|
|
161
161
|
label,
|
|
@@ -169,7 +169,7 @@ export const issueEnvironment = environment([
|
|
|
169
169
|
pullRequestReferences,
|
|
170
170
|
issue,
|
|
171
171
|
], "IssuePayload");
|
|
172
|
-
/**
|
|
172
|
+
/** The CEL environment for pull-request triggers: the `item` type mirrors the pull-request payload slice. */
|
|
173
173
|
export const pullRequestEnvironment = environment([
|
|
174
174
|
actor,
|
|
175
175
|
label,
|
|
@@ -191,7 +191,7 @@ export const pullRequestEnvironment = environment([
|
|
|
191
191
|
statusCheckRollup,
|
|
192
192
|
pullRequest,
|
|
193
193
|
], "PullRequestPayload");
|
|
194
|
-
/**
|
|
194
|
+
/** The CEL environment for schedule triggers: `item.tick` has `scheduledAt`, `scheduledAtLocal`, `cron`, and `tz`. */
|
|
195
195
|
export const scheduleEnvironment = environment([tick, schedule], "SchedulePayload");
|
|
196
196
|
export const environmentFor = (stream) => {
|
|
197
197
|
switch (stream) {
|
|
@@ -204,11 +204,11 @@ export const environmentFor = (stream) => {
|
|
|
204
204
|
}
|
|
205
205
|
};
|
|
206
206
|
/**
|
|
207
|
-
* The CEL `repo` variable
|
|
208
|
-
*
|
|
207
|
+
* The value of the CEL `repo` variable. A field added here must also be added
|
|
208
|
+
* to the `RepoContext` type, and the reverse.
|
|
209
209
|
*/
|
|
210
210
|
export const repositoryContext = (repository) => {
|
|
211
|
-
const { owner } =
|
|
211
|
+
const { owner } = splitRepositoryName(repository.name);
|
|
212
212
|
return {
|
|
213
213
|
name: repository.name,
|
|
214
214
|
owner,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-slices.js","sourceRoot":"","sources":["../src/payload-slices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"payload-slices.js","sourceRoot":"","sources":["../src/payload-slices.ts"],"names":[],"mappings":"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"}
|
package/dist/selector.d.ts
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
|
-
import { Option } from "effect";
|
|
2
|
-
import type
|
|
3
|
-
|
|
1
|
+
import { Option, Schema } from "effect";
|
|
2
|
+
import { type ManagedRepo } from "./factory.ts";
|
|
3
|
+
declare const Selector_base: Schema.Class<Selector, Schema.Struct<{
|
|
4
|
+
readonly repos: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>;
|
|
5
|
+
readonly tags: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>;
|
|
6
|
+
}>, {}>;
|
|
7
|
+
/** Narrows a Loop to registry repositories by name, by any listed tag, or by both criteria together. */
|
|
8
|
+
export declare class Selector extends Selector_base {
|
|
9
|
+
}
|
|
10
|
+
/** An authored selector must name repositories or tags; omit the selector entirely to include every repository. */
|
|
11
|
+
export declare const ValidSelector: Schema.decodeTo<Schema.declareConstructor<Selector, {
|
|
12
|
+
readonly repos?: readonly string[];
|
|
13
|
+
readonly tags?: readonly string[];
|
|
14
|
+
}, readonly [Schema.Struct<{
|
|
15
|
+
readonly repos: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>;
|
|
16
|
+
readonly tags: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>;
|
|
17
|
+
}>], {
|
|
18
|
+
readonly repos: Schema.OptionIso<Schema.toType<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>>;
|
|
19
|
+
readonly tags: Schema.OptionIso<Schema.toType<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>>;
|
|
20
|
+
}>, Schema.Struct<{
|
|
21
|
+
readonly repos: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>;
|
|
22
|
+
readonly tags: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>;
|
|
23
|
+
}>, never, never>;
|
|
24
|
+
/** Whether a repo passes the selector. Both axes must match when present; no selector matches every repo. */
|
|
4
25
|
export declare const matchesSelector: (selector: Option.Option<Selector>, repo: ManagedRepo) => boolean;
|
|
26
|
+
export {};
|
|
5
27
|
//# sourceMappingURL=selector.d.ts.map
|
package/dist/selector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;;;;;AAE7D,wGAAwG;AACxG,qBAAa,QAAS,SAAQ,aAO5B;CAAG;AAEL,mHAAmH;AACnH,eAAO,MAAM,aAAa;;;;;;;;;;;;iBAIzB,CAAC;AAEF,6GAA6G;AAC7G,eAAO,MAAM,eAAe,aAAc,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAW,KAAG,OAcnF,CAAC"}
|
package/dist/selector.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { RepositoryName } from "@usine/core/repository";
|
|
2
|
+
import { Option, Schema } from "effect";
|
|
3
|
+
import { RegistryTag } from "./factory.js";
|
|
4
|
+
/** Narrows a Loop to registry repositories by name, by any listed tag, or by both criteria together. */
|
|
5
|
+
export class Selector extends Schema.Class("@usine/config/Selector")({
|
|
6
|
+
repos: Schema.OptionFromOptionalKey(Schema.Array(RepositoryName).check(Schema.isNonEmpty(), Schema.isUnique())),
|
|
7
|
+
tags: Schema.OptionFromOptionalKey(Schema.Array(RegistryTag).check(Schema.isNonEmpty(), Schema.isUnique())),
|
|
8
|
+
}) {
|
|
9
|
+
}
|
|
10
|
+
/** An authored selector must name repositories or tags; omit the selector entirely to include every repository. */
|
|
11
|
+
export const ValidSelector = Selector.check(Schema.makeFilter((selector) => Option.isSome(selector.repos) || Option.isSome(selector.tags), {
|
|
12
|
+
message: "Expected selector.repos, selector.tags, or both",
|
|
13
|
+
}));
|
|
14
|
+
/** Whether a repo passes the selector. Both axes must match when present; no selector matches every repo. */
|
|
3
15
|
export const matchesSelector = (selector, repo) => Option.match(selector, {
|
|
4
16
|
onNone: () => true,
|
|
5
17
|
onSome: (value) => {
|
package/dist/selector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AAE7D,wGAAwG;AACxG,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,wBAAwB,CAAC,CAAC;IAC7E,KAAK,EAAE,MAAM,CAAC,qBAAqB,CACjC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAC3E;IACD,IAAI,EAAE,MAAM,CAAC,qBAAqB,CAChC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CACxE;CACF,CAAC;CAAG;AAEL,mHAAmH;AACnH,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CACzC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IAC7F,OAAO,EAAE,iDAAiD;CAC3D,CAAC,CACH,CAAC;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAiC,EAAE,IAAiB,EAAW,EAAE,CAC/F,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;IACrB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;IAClB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;YAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,WAAW,IAAI,UAAU,CAAC;IACnC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
/** A five-field schedule evaluated in the trigger's time zone. */
|
|
3
|
+
export declare const Cron: Schema.brand<Schema.String, "Cron">;
|
|
4
|
+
export type Cron = typeof Cron.Type;
|
|
5
|
+
/** The IANA time zone whose local clock defines a schedule's firing times. */
|
|
6
|
+
export declare const TimeZone: Schema.brand<Schema.String, "TimeZone">;
|
|
7
|
+
export type TimeZone = typeof TimeZone.Type;
|
|
8
|
+
declare const IssueTrigger_base: Schema.Class<IssueTrigger, Schema.Struct<{
|
|
9
|
+
readonly on: Schema.Literal<"issue">;
|
|
10
|
+
readonly if: Schema.brand<Schema.String, "ExpressionSource">;
|
|
11
|
+
}>, {}>;
|
|
12
|
+
/** Watches issues and selects matching payloads with the Loop's `if` expression. */
|
|
13
|
+
export declare class IssueTrigger extends IssueTrigger_base {
|
|
14
|
+
}
|
|
15
|
+
declare const PullRequestTrigger_base: Schema.Class<PullRequestTrigger, Schema.Struct<{
|
|
16
|
+
readonly on: Schema.Literal<"pr">;
|
|
17
|
+
readonly if: Schema.brand<Schema.String, "ExpressionSource">;
|
|
18
|
+
}>, {}>;
|
|
19
|
+
/** Watches pull requests and selects matching payloads with the Loop's `if` expression. */
|
|
20
|
+
export declare class PullRequestTrigger extends PullRequestTrigger_base {
|
|
21
|
+
}
|
|
22
|
+
declare const ScheduleTrigger_base: Schema.Class<ScheduleTrigger, Schema.Struct<{
|
|
23
|
+
readonly on: Schema.Literal<"schedule">;
|
|
24
|
+
readonly if: Schema.brand<Schema.String, "ExpressionSource">;
|
|
25
|
+
readonly cron: Schema.brand<Schema.String, "Cron">;
|
|
26
|
+
readonly tz: Schema.withDecodingDefaultKey<Schema.brand<Schema.String, "TimeZone">, never>;
|
|
27
|
+
}>, {}>;
|
|
28
|
+
/** Fires per selected repository on a schedule, catching up only the latest missed Tick after downtime. */
|
|
29
|
+
export declare class ScheduleTrigger extends ScheduleTrigger_base {
|
|
30
|
+
}
|
|
31
|
+
/** The standing Item condition or schedule that produces Events for a Loop. */
|
|
32
|
+
export declare const Trigger: Schema.Union<readonly [typeof IssueTrigger, typeof PullRequestTrigger, typeof ScheduleTrigger]>;
|
|
33
|
+
export type Trigger = typeof Trigger.Type;
|
|
34
|
+
/** The class of state a Loop watches: issues, pull requests, or scheduled Ticks. */
|
|
35
|
+
export type Stream = Trigger["on"];
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../src/trigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQtF,kEAAkE;AAClE,eAAO,MAAM,IAAI,qCAEW,CAAC;AAE7B,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC;AAIpC,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,yCAEW,CAAC;AAEjC,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;;;;;AAE5C,oFAAoF;AACpF,qBAAa,YAAa,SAAQ,iBAGhC;CAAG;;;;;AAEL,2FAA2F;AAC3F,qBAAa,kBAAmB,SAAQ,uBAKtC;CAAG;;;;;;;AAEL,2GAA2G;AAC3G,qBAAa,eAAgB,SAAQ,oBAOpC;CAAG;AAEJ,+EAA+E;AAC/E,eAAO,MAAM,OAAO,iGAAoE,CAAC;AAEzF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAE1C,oFAAoF;AACpF,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/trigger.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Source } from "@usine/expression/expression-engine";
|
|
2
|
+
import { Cron as EffectCron, DateTime, Effect, Option, Result, Schema } from "effect";
|
|
3
|
+
// Uses the same Cron parser the scheduler evaluates with, so a cron that parses
|
|
4
|
+
// here parses at tick time too. Cron.prev and Cron.next can still fail inside a
|
|
5
|
+
// DST gap; the scheduler isolates that per schedule.
|
|
6
|
+
const isFiveFieldCron = (value) => value.trim().split(/\s+/u).length === 5 && Result.isSuccess(EffectCron.parse(value));
|
|
7
|
+
/** A five-field schedule evaluated in the trigger's time zone. */
|
|
8
|
+
export const Cron = Schema.String.check(Schema.makeFilter(isFiveFieldCron, { message: "Expected a valid five-field cron expression" })).pipe(Schema.brand("Cron"));
|
|
9
|
+
const isTimeZone = (value) => Option.isSome(DateTime.zoneMakeNamed(value));
|
|
10
|
+
/** The IANA time zone whose local clock defines a schedule's firing times. */
|
|
11
|
+
export const TimeZone = Schema.String.check(Schema.makeFilter(isTimeZone, { message: "Expected an IANA time-zone name" })).pipe(Schema.brand("TimeZone"));
|
|
12
|
+
/** Watches issues and selects matching payloads with the Loop's `if` expression. */
|
|
13
|
+
export class IssueTrigger extends Schema.Class("@usine/config/IssueTrigger")({
|
|
14
|
+
on: Schema.Literal("issue"),
|
|
15
|
+
if: Source,
|
|
16
|
+
}) {
|
|
17
|
+
}
|
|
18
|
+
/** Watches pull requests and selects matching payloads with the Loop's `if` expression. */
|
|
19
|
+
export class PullRequestTrigger extends Schema.Class("@usine/config/PullRequestTrigger")({
|
|
20
|
+
on: Schema.Literal("pr"),
|
|
21
|
+
if: Source,
|
|
22
|
+
}) {
|
|
23
|
+
}
|
|
24
|
+
/** Fires per selected repository on a schedule, catching up only the latest missed Tick after downtime. */
|
|
25
|
+
export class ScheduleTrigger extends Schema.Class("@usine/config/ScheduleTrigger")({
|
|
26
|
+
on: Schema.Literal("schedule"),
|
|
27
|
+
if: Source,
|
|
28
|
+
cron: Cron,
|
|
29
|
+
tz: TimeZone.pipe(Schema.withDecodingDefaultKey(Effect.succeed("UTC"))),
|
|
30
|
+
}) {
|
|
31
|
+
}
|
|
32
|
+
/** The standing Item condition or schedule that produces Events for a Loop. */
|
|
33
|
+
export const Trigger = Schema.Union([IssueTrigger, PullRequestTrigger, ScheduleTrigger]);
|
|
34
|
+
//# sourceMappingURL=trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../src/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtF,gFAAgF;AAChF,gFAAgF;AAChF,qDAAqD;AACrD,MAAM,eAAe,GAAG,CAAC,KAAa,EAAW,EAAE,CACjD,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAEvF,kEAAkE;AAClE,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACrC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAC/F,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAI7B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACzC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAC9E,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAIjC,oFAAoF;AACpF,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,KAAK,CAAe,4BAA4B,CAAC,CAAC;IACzF,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3B,EAAE,EAAE,MAAM;CACX,CAAC;CAAG;AAEL,2FAA2F;AAC3F,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAClD,kCAAkC,CACnC,CAAC;IACA,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,EAAE,EAAE,MAAM;CACX,CAAC;CAAG;AAEL,2GAA2G;AAC3G,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,+BAA+B,CAAC,CACjG;IACE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC9B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,IAAI;IACV,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;CACxE,CACF;CAAG;AAEJ,+EAA+E;AAC/E,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC"}
|
package/dist/yaml/document.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { type Document } from "yaml";
|
|
3
|
-
import { ConfigFileError, type InstancePath } from "../
|
|
3
|
+
import { ConfigFileError, type InstancePath } from "../file.ts";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Parses YAML into a Document AST that keeps source tokens, so an edit through
|
|
6
|
+
* it preserves formatting. Duplicate keys and parser warnings are errors.
|
|
7
7
|
*/
|
|
8
8
|
export declare const parseYamlDocument: (file: InstancePath, source: string) => Effect.Effect<Document.Parsed, ConfigFileError>;
|
|
9
9
|
//# sourceMappingURL=document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAWhE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SACtB,YAAY,UACV,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CA4B7C,CAAC"}
|
package/dist/yaml/document.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Effect, Option, Schema } from "effect";
|
|
2
2
|
import { parseDocument } from "yaml";
|
|
3
|
-
import { ConfigFileError } from "../
|
|
3
|
+
import { ConfigFileError } from "../file.js";
|
|
4
4
|
const causeMessage = (cause) => Option.match(Schema.decodeUnknownOption(Schema.Struct({ message: Schema.NonEmptyString }))(cause), {
|
|
5
5
|
onNone: () => "Unknown YAML parsing failure",
|
|
6
6
|
onSome: ({ message }) => message,
|
|
7
7
|
});
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Parses YAML into a Document AST that keeps source tokens, so an edit through
|
|
10
|
+
* it preserves formatting. Duplicate keys and parser warnings are errors.
|
|
11
11
|
*/
|
|
12
12
|
export const parseYamlDocument = (file, source) => Effect.gen(function* () {
|
|
13
13
|
const document = yield* Effect.try({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAiB,aAAa,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAqB,MAAM,
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAiB,aAAa,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAEhE,MAAM,YAAY,GAAG,CAAC,KAAc,EAAU,EAAE,CAC9C,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EACpF;IACE,MAAM,EAAE,GAAG,EAAE,CAAC,8BAA8B;IAC5C,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO;CACjC,CACF,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAkB,EAClB,MAAc,EACmC,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,GAAG,EAAE,CACR,aAAa,CAAC,MAAM,EAAE;YACpB,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;SACjB,CAAC;QACJ,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,eAAe,CAAC;YAClB,IAAI;YACJ,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;SAC7B,CAAC;KACL,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YAChC,IAAI;YACJ,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/yaml/writer.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
|
-
import type { ConfigFileError } from "../
|
|
2
|
+
import type { ConfigFileError } from "../file.ts";
|
|
3
3
|
declare const YamlEdit_base: Schema.Class<YamlEdit, Schema.Struct<{
|
|
4
|
+
/** Path in file-key spelling, for example `["settings", "max_children"]`. */
|
|
4
5
|
readonly path: Schema.$Array<Schema.NonEmptyString>;
|
|
5
6
|
readonly value: Schema.Codec<Schema.Json, Schema.Json, never, never>;
|
|
6
7
|
}>, {}>;
|
|
8
|
+
/** One replacement in authored YAML, preserving the surrounding file. */
|
|
7
9
|
export declare class YamlEdit extends YamlEdit_base {
|
|
8
10
|
}
|
|
9
|
-
/**
|
|
11
|
+
/** Sets one YAML path and returns the file with its comments, key order, and newline style intact. */
|
|
10
12
|
export declare const updateYaml: (file: string & import("effect/Brand").Brand<"InstancePath">, source: string, edit: YamlEdit) => Effect.Effect<string, ConfigFileError, never>;
|
|
11
|
-
/**
|
|
13
|
+
/** Sets one YAML path in the frontmatter of a Markdown config file and returns the whole file. */
|
|
12
14
|
export declare const updateFrontmatter: (file: string & import("effect/Brand").Brand<"InstancePath">, source: string, edit: YamlEdit) => Effect.Effect<string, ConfigFileError, never>;
|
|
13
15
|
export {};
|
|
14
16
|
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;;IAM9D,6EAA6E;;;;AAF/E,yEAAyE;AACzE,qBAAa,QAAS,SAAQ,aAI5B;CAAG;AAOL,sGAAsG;AACtG,eAAO,MAAM,UAAU,gJAQtB,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,gJAe7B,CAAC"}
|
package/dist/yaml/writer.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Effect, Schema } from "effect";
|
|
2
2
|
import { splitMarkdown } from "../frontmatter.js";
|
|
3
3
|
import { parseYamlDocument } from "./document.js";
|
|
4
|
+
/** One replacement in authored YAML, preserving the surrounding file. */
|
|
4
5
|
export class YamlEdit extends Schema.Class("@usine/config/YamlEdit")({
|
|
6
|
+
/** Path in file-key spelling, for example `["settings", "max_children"]`. */
|
|
5
7
|
path: Schema.Array(Schema.NonEmptyString).check(Schema.isNonEmpty()),
|
|
6
8
|
value: Schema.Json,
|
|
7
9
|
}) {
|
|
@@ -10,18 +12,18 @@ const restoreNewlines = (text, newline) => {
|
|
|
10
12
|
const normalized = text.replaceAll("\r\n", "\n");
|
|
11
13
|
return newline === "\r\n" ? normalized.replaceAll("\n", "\r\n") : normalized;
|
|
12
14
|
};
|
|
13
|
-
/**
|
|
15
|
+
/** Sets one YAML path and returns the file with its comments, key order, and newline style intact. */
|
|
14
16
|
export const updateYaml = Effect.fn("YamlWriter.updateYaml")((file, source, edit) => Effect.gen(function* () {
|
|
15
17
|
const document = yield* parseYamlDocument(file, source);
|
|
16
18
|
document.setIn(edit.path, edit.value);
|
|
17
|
-
// The
|
|
19
|
+
// The stringifier always emits LF.
|
|
18
20
|
return restoreNewlines(document.toString(), source.includes("\r\n") ? "\r\n" : "\n");
|
|
19
21
|
}));
|
|
20
|
-
/**
|
|
22
|
+
/** Sets one YAML path in the frontmatter of a Markdown config file and returns the whole file. */
|
|
21
23
|
export const updateFrontmatter = Effect.fn("YamlWriter.updateFrontmatter")((file, source, edit) => Effect.gen(function* () {
|
|
22
24
|
const markdown = yield* splitMarkdown(file, source);
|
|
23
|
-
// A one-line YAML half
|
|
24
|
-
// delimiter
|
|
25
|
+
// A one-line YAML half has no newline to infer a style from, so the file's
|
|
26
|
+
// delimiter decides.
|
|
25
27
|
const updated = restoreNewlines(yield* updateYaml(file, markdown.yaml, edit), markdown.newline);
|
|
26
28
|
const yaml = updated.endsWith(markdown.newline)
|
|
27
29
|
? updated.slice(0, -markdown.newline.length)
|
package/dist/yaml/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,wBAAwB,CAAC,CAAC;IAC7E,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC,IAAI;CACnB,CAAC;CAAG;AAEL,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAsB,EAAU,EAAE;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/E,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,yEAAyE;AACzE,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,wBAAwB,CAAC,CAAC;IAC7E,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC,IAAI;CACnB,CAAC;CAAG;AAEL,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAsB,EAAU,EAAE;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/E,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAC1D,CAAC,IAAkB,EAAE,MAAc,EAAE,IAAc,EAA0C,EAAE,CAC7F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,mCAAmC;IACnC,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvF,CAAC,CAAC,CACL,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CACxE,CAAC,IAAkB,EAAE,MAAc,EAAE,IAAc,EAA0C,EAAE,CAC7F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,2EAA2E;IAC3E,qBAAqB;IACrB,MAAM,OAAO,GAAG,eAAe,CAC7B,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAC5C,QAAQ,CAAC,OAAO,CACjB,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,MAAM,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClG,CAAC,CAAC,CACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usine/config",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Config file machinery for usine: parse, validate, and surgically rewrite the instance repo's files — usine.yaml, loop files, agent files.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -14,9 +14,57 @@
|
|
|
14
14
|
"type": "module",
|
|
15
15
|
"sideEffects": false,
|
|
16
16
|
"exports": {
|
|
17
|
-
"
|
|
18
|
-
"types": "./dist/
|
|
19
|
-
"default": "./dist/
|
|
17
|
+
"./instance-folder": {
|
|
18
|
+
"types": "./dist/instance-folder.d.ts",
|
|
19
|
+
"default": "./dist/instance-folder.js"
|
|
20
|
+
},
|
|
21
|
+
"./parser": {
|
|
22
|
+
"types": "./dist/parser.d.ts",
|
|
23
|
+
"default": "./dist/parser.js"
|
|
24
|
+
},
|
|
25
|
+
"./payload-slices": {
|
|
26
|
+
"types": "./dist/payload-slices.d.ts",
|
|
27
|
+
"default": "./dist/payload-slices.js"
|
|
28
|
+
},
|
|
29
|
+
"./selector": {
|
|
30
|
+
"types": "./dist/selector.d.ts",
|
|
31
|
+
"default": "./dist/selector.js"
|
|
32
|
+
},
|
|
33
|
+
"./yaml/writer": {
|
|
34
|
+
"types": "./dist/yaml/writer.d.ts",
|
|
35
|
+
"default": "./dist/yaml/writer.js"
|
|
36
|
+
},
|
|
37
|
+
"./file": {
|
|
38
|
+
"types": "./dist/file.d.ts",
|
|
39
|
+
"default": "./dist/file.js"
|
|
40
|
+
},
|
|
41
|
+
"./board": {
|
|
42
|
+
"types": "./dist/board.d.ts",
|
|
43
|
+
"default": "./dist/board.js"
|
|
44
|
+
},
|
|
45
|
+
"./label": {
|
|
46
|
+
"types": "./dist/label.d.ts",
|
|
47
|
+
"default": "./dist/label.js"
|
|
48
|
+
},
|
|
49
|
+
"./factory": {
|
|
50
|
+
"types": "./dist/factory.d.ts",
|
|
51
|
+
"default": "./dist/factory.js"
|
|
52
|
+
},
|
|
53
|
+
"./loop": {
|
|
54
|
+
"types": "./dist/loop.d.ts",
|
|
55
|
+
"default": "./dist/loop.js"
|
|
56
|
+
},
|
|
57
|
+
"./trigger": {
|
|
58
|
+
"types": "./dist/trigger.d.ts",
|
|
59
|
+
"default": "./dist/trigger.js"
|
|
60
|
+
},
|
|
61
|
+
"./agent": {
|
|
62
|
+
"types": "./dist/agent.d.ts",
|
|
63
|
+
"default": "./dist/agent.js"
|
|
64
|
+
},
|
|
65
|
+
"./instance": {
|
|
66
|
+
"types": "./dist/instance/instance.d.ts",
|
|
67
|
+
"default": "./dist/instance/instance.js"
|
|
20
68
|
}
|
|
21
69
|
},
|
|
22
70
|
"publishConfig": {
|
|
@@ -24,8 +72,8 @@
|
|
|
24
72
|
},
|
|
25
73
|
"dependencies": {
|
|
26
74
|
"yaml": "2.8.1",
|
|
27
|
-
"@usine/core": "0.
|
|
28
|
-
"@usine/expression": "0.
|
|
75
|
+
"@usine/core": "0.3.0",
|
|
76
|
+
"@usine/expression": "0.2.0"
|
|
29
77
|
},
|
|
30
78
|
"devDependencies": {
|
|
31
79
|
"@effect/platform-node": "4.0.0-rc.111",
|
package/dist/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @usine/config — strict schemas, CEL-aware parsing, per-loop quarantine,
|
|
3
|
-
* instance-folder loading, payload descriptors, and surgical YAML edits.
|
|
4
|
-
*/
|
|
5
|
-
export * from "./instance-folder.ts";
|
|
6
|
-
export * from "./model.ts";
|
|
7
|
-
export * from "./parser.ts";
|
|
8
|
-
export * from "./payload-slices.ts";
|
|
9
|
-
export * from "./selector.ts";
|
|
10
|
-
export * from "./yaml/writer.ts";
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @usine/config — strict schemas, CEL-aware parsing, per-loop quarantine,
|
|
3
|
-
* instance-folder loading, payload descriptors, and surgical YAML edits.
|
|
4
|
-
*/
|
|
5
|
-
export * from "./instance-folder.js";
|
|
6
|
-
export * from "./model.js";
|
|
7
|
-
export * from "./parser.js";
|
|
8
|
-
export * from "./payload-slices.js";
|
|
9
|
-
export * from "./selector.js";
|
|
10
|
-
export * from "./yaml/writer.js";
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|