liminal 0.17.1 → 0.17.2
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/Accumulator.ts +16 -10
- package/Actor.ts +35 -29
- package/Audition.ts +17 -12
- package/CHANGELOG.md +6 -0
- package/Client.ts +260 -295
- package/ClientHandle.ts +17 -6
- package/F.ts +3 -9
- package/LICENSE +202 -0
- package/Method.ts +11 -13
- package/Protocol.ts +104 -126
- package/Send.ts +9 -5
- package/_util/Diagnostic.ts +16 -0
- package/_util/Mutex.ts +5 -5
- package/dist/Accumulator.d.ts +2 -2
- package/dist/Accumulator.js +12 -8
- package/dist/Accumulator.js.map +1 -1
- package/dist/Actor.d.ts +9 -10
- package/dist/Actor.js +6 -15
- package/dist/Actor.js.map +1 -1
- package/dist/Audition.d.ts +3 -4
- package/dist/Audition.js +7 -5
- package/dist/Audition.js.map +1 -1
- package/dist/Client.d.ts +20 -39
- package/dist/Client.js +119 -139
- package/dist/Client.js.map +1 -1
- package/dist/ClientHandle.d.ts +5 -6
- package/dist/ClientHandle.js +1 -1
- package/dist/ClientHandle.js.map +1 -1
- package/dist/F.d.ts +3 -12
- package/dist/F.js +1 -3
- package/dist/F.js.map +1 -1
- package/dist/Method.d.ts +11 -12
- package/dist/Method.js.map +1 -1
- package/dist/Protocol.d.ts +46 -89
- package/dist/Protocol.js +35 -11
- package/dist/Protocol.js.map +1 -1
- package/dist/Send.d.ts +2 -3
- package/dist/Send.js +1 -1
- package/dist/Send.js.map +1 -1
- package/dist/_util/Diagnostic.d.ts +5 -0
- package/dist/_util/Diagnostic.js +10 -0
- package/dist/_util/Diagnostic.js.map +1 -0
- package/dist/_util/Mutex.d.ts +2 -2
- package/dist/_util/Mutex.js +4 -4
- package/dist/_util/Mutex.js.map +1 -1
- package/dist/errors.d.ts +15 -12
- package/dist/errors.js +6 -4
- package/dist/errors.js.map +1 -1
- package/dist/experimental/BranchLive.d.ts +1 -1
- package/dist/experimental/BranchLive.js +1 -1
- package/dist/experimental/BranchLive.js.map +1 -1
- package/dist/experimental/L/append.d.ts +1 -1
- package/dist/experimental/L/append.js +2 -2
- package/dist/experimental/L/append.js.map +1 -1
- package/dist/experimental/L/assistant.d.ts +2 -2
- package/dist/experimental/L/assistant.js +1 -1
- package/dist/experimental/L/assistant.js.map +1 -1
- package/dist/experimental/L/assistantSchema.d.ts +2 -2
- package/dist/experimental/L/assistantSchema.js +1 -1
- package/dist/experimental/L/assistantSchema.js.map +1 -1
- package/dist/experimental/L/assistantStream.d.ts +2 -2
- package/dist/experimental/L/assistantStream.js +1 -1
- package/dist/experimental/L/assistantStream.js.map +1 -1
- package/dist/experimental/L/branch.d.ts +1 -1
- package/dist/experimental/L/clear.d.ts +1 -1
- package/dist/experimental/L/clear.js +1 -1
- package/dist/experimental/L/clear.js.map +1 -1
- package/dist/experimental/L/history.d.ts +2 -2
- package/dist/experimental/L/history.js +2 -2
- package/dist/experimental/L/history.js.map +1 -1
- package/dist/experimental/L/init.d.ts +1 -1
- package/dist/experimental/L/init.js +1 -1
- package/dist/experimental/L/init.js.map +1 -1
- package/dist/experimental/L/matrix.d.ts +2 -2
- package/dist/experimental/L/system.d.ts +1 -1
- package/dist/experimental/L/system.js +1 -1
- package/dist/experimental/L/system.js.map +1 -1
- package/dist/experimental/L/user.d.ts +1 -1
- package/dist/experimental/L/user.js +1 -1
- package/dist/experimental/L/user.js.map +1 -1
- package/dist/experimental/Loader.d.ts +3 -3
- package/dist/experimental/Loader.js +2 -2
- package/dist/experimental/Loader.js.map +1 -1
- package/dist/experimental/TaggedTemplateFunction.d.ts +2 -2
- package/dist/experimental/Template.d.ts +8 -12
- package/dist/experimental/Template.js +53 -51
- package/dist/experimental/Template.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/errors.ts +12 -4
- package/experimental/BranchLive.ts +1 -1
- package/experimental/L/append.ts +2 -2
- package/experimental/L/assistant.ts +1 -1
- package/experimental/L/assistantSchema.ts +3 -3
- package/experimental/L/assistantStream.ts +1 -1
- package/experimental/L/clear.ts +1 -1
- package/experimental/L/history.ts +2 -2
- package/experimental/L/init.ts +1 -1
- package/experimental/L/matrix.ts +3 -3
- package/experimental/L/system.ts +1 -1
- package/experimental/L/user.ts +1 -1
- package/experimental/Loader.ts +3 -3
- package/experimental/TaggedTemplateFunction.ts +2 -2
- package/experimental/Template.ts +62 -70
- package/package.json +2 -6
- package/tsconfig.json +1 -1
- package/_types.ts +0 -27
- package/dist/_types.d.ts +0 -22
- package/dist/_types.js +0 -2
- package/dist/_types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../experimental/Loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../experimental/Loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAE7D,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,aAAa,CAE7D;CAAG;AAEL,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,OAAO,EAKxC,CAAC,gBAAgB,CAAC;CAAG;AAExB,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CACjC,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7B,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IAEvC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAW;QACnD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAA;QACrD,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACpD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAChD,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,IAAI,EAAE,CAAA;AACjB,CAAC,CAAC,CACH,CAAA"}
|
|
@@ -2,8 +2,8 @@ import { Effect } from "effect";
|
|
|
2
2
|
export type TemplateStringsArrayLike = {
|
|
3
3
|
raw: ReadonlyArray<string> | ArrayLike<string>;
|
|
4
4
|
};
|
|
5
|
-
type ExtractE<T> = [Extract<T, Effect.Effect<any, any, any>>] extends [never] ? never : Effect.
|
|
6
|
-
type ExtractR<T> = [Extract<T, Effect.Effect<any, any, any>>] extends [never] ? never : Effect.
|
|
5
|
+
type ExtractE<T> = [Extract<T, Effect.Effect<any, any, any>>] extends [never] ? never : Effect.Error<Extract<T, Effect.Effect<any, any, any>>>;
|
|
6
|
+
type ExtractR<T> = [Extract<T, Effect.Effect<any, any, any>>] extends [never] ? never : Effect.Services<Extract<T, Effect.Effect<any, any, any>>>;
|
|
7
7
|
export declare const raw: <Substitutions extends Array<unknown>>(template: TemplateStringsArrayLike, ...substitutions: Substitutions) => Effect.Effect<string, ExtractE<Substitutions[number]>, ExtractR<Substitutions[number]>>;
|
|
8
8
|
export type TaggableHead = TemplateStringsArrayLike | string | Effect.Effect<string, any, any>;
|
|
9
9
|
export type TaggableRest<H extends TaggableHead> = H extends TemplateStringsArrayLike ? Array<unknown> : [];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Layer, Effect, Schema as S, Context } from "effect";
|
|
2
2
|
import * as Loader from "./Loader.ts";
|
|
3
3
|
export type Template<A> = (...[value]: A extends undefined ? [] : [value: A]) => string;
|
|
4
|
-
declare const TemplateMisalignedError_base: new <A extends Record<string, any> = {}>(args: Types.
|
|
4
|
+
declare const TemplateMisalignedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
5
5
|
readonly _tag: "TemplateMisalignedError";
|
|
6
6
|
} & Readonly<A>;
|
|
7
7
|
export declare class TemplateMisalignedError extends TemplateMisalignedError_base<{
|
|
@@ -9,24 +9,20 @@ export declare class TemplateMisalignedError extends TemplateMisalignedError_bas
|
|
|
9
9
|
readonly keys: ReadonlyArray<string>;
|
|
10
10
|
}> {
|
|
11
11
|
}
|
|
12
|
-
declare const NoSuchTemplateError_base: new <A extends Record<string, any> = {}>(args: Types.
|
|
12
|
+
declare const NoSuchTemplateError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
13
13
|
readonly _tag: "NoSuchTemplateError";
|
|
14
14
|
} & Readonly<A>;
|
|
15
15
|
export declare class NoSuchTemplateError extends NoSuchTemplateError_base<{
|
|
16
16
|
url: string;
|
|
17
17
|
}> {
|
|
18
18
|
}
|
|
19
|
-
export interface TemplateClass<Self, Id extends string, A> extends Context.
|
|
20
|
-
new (_: never): Context.
|
|
19
|
+
export interface TemplateClass<Self, Id extends string, A> extends Context.Service<Self, Template<A>> {
|
|
20
|
+
new (_: never): Context.ServiceClass.Shape<Id, Template<A>>;
|
|
21
21
|
readonly layer: Layer.Layer<Self, NoSuchTemplateError | TemplateMisalignedError | Loader.LoaderError, Loader.Loader>;
|
|
22
22
|
readonly synthesize: (...[value]: A extends undefined ? [] : [value: A]) => Effect.Effect<string, never, Self>;
|
|
23
23
|
}
|
|
24
|
-
export
|
|
25
|
-
export declare namespace Payload {
|
|
26
|
-
type FromDefinition<P extends Payload | undefined> = P extends infer Q extends Payload ? S.Struct<Q>["Type"] : {};
|
|
27
|
-
}
|
|
28
|
-
export declare const Service: <Self>() => <const Id extends string, const P extends Payload | undefined>(id: Id, { url, payload, }: {
|
|
24
|
+
export declare const Service: <Self>() => <const Id extends string, const P extends S.Struct.Fields>(_id: Id, _config: {
|
|
29
25
|
readonly url: string;
|
|
30
|
-
readonly payload
|
|
31
|
-
}) => TemplateClass<Self, Id,
|
|
26
|
+
readonly payload: P;
|
|
27
|
+
}) => TemplateClass<Self, Id, S.Struct<P>["Type"]>;
|
|
32
28
|
export {};
|
|
@@ -1,58 +1,60 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Layer, Effect, Schema as S, Data, Context } from "effect";
|
|
2
2
|
import * as Loader from "./Loader.js";
|
|
3
3
|
export class TemplateMisalignedError extends Data.TaggedError("TemplateMisalignedError") {
|
|
4
4
|
}
|
|
5
5
|
export class NoSuchTemplateError extends Data.TaggedError("NoSuchTemplateError") {
|
|
6
6
|
}
|
|
7
|
-
export const Service = () => (
|
|
8
|
-
|
|
9
|
-
self.layer = Effect.gen(function* () {
|
|
10
|
-
const loader = yield* Loader.Loader;
|
|
11
|
-
const template = yield* loader.load(url).pipe(Effect.map(Option.getOrUndefined));
|
|
12
|
-
if (!template) {
|
|
13
|
-
return yield* new NoSuchTemplateError({ url });
|
|
14
|
-
}
|
|
15
|
-
const [head, ...rest] = pipe(template, String.trim, String.split("{{"));
|
|
16
|
-
if ((!payload || !Object.keys(payload).length) && !rest.length) {
|
|
17
|
-
return () => template;
|
|
18
|
-
}
|
|
19
|
-
const segments = rest.flatMap((part) => {
|
|
20
|
-
const i = part.indexOf("}}");
|
|
21
|
-
if (i === -1) {
|
|
22
|
-
return [];
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
key: part.slice(0, i).trim(),
|
|
26
|
-
tail: part.slice(i + 2),
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
const keys = segments.map(({ key }) => key);
|
|
30
|
-
if (payload) {
|
|
31
|
-
const keys_ = new Set(keys);
|
|
32
|
-
const dne = new Set();
|
|
33
|
-
const schema = S.Struct(payload);
|
|
34
|
-
const fields = SchemaAST.getPropertySignatures(SchemaAST.encodedBoundAST(schema.ast));
|
|
35
|
-
for (const field of fields) {
|
|
36
|
-
if (!field.isOptional && !keys_.has(field.name.toString())) {
|
|
37
|
-
dne.add(field.name.toString());
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (dne.size) {
|
|
41
|
-
return yield* new TemplateMisalignedError({
|
|
42
|
-
url,
|
|
43
|
-
keys: [...dne.values()],
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (segments.length) {
|
|
48
|
-
return yield* new TemplateMisalignedError({ url, keys });
|
|
49
|
-
}
|
|
50
|
-
const make = (value) => value
|
|
51
|
-
? head + segments.map(({ key, tail }) => `${value[key]}${tail}`).join("")
|
|
52
|
-
: template;
|
|
53
|
-
return make;
|
|
54
|
-
}).pipe(Layer.effect(self));
|
|
55
|
-
self.synthesize = (...args) => self.pipe(Effect.map((make) => make(...args)));
|
|
56
|
-
return self;
|
|
7
|
+
export const Service = () => (_id, _config) => {
|
|
8
|
+
throw 0;
|
|
57
9
|
};
|
|
10
|
+
// type Make_ = Template<Payload.FromDefinition<P>>
|
|
11
|
+
// type Self_ = TemplateClass<Self, Id, Payload.FromDefinition<P>>
|
|
12
|
+
// const tag = Context.Service<Self, Make_>()(id)
|
|
13
|
+
// const layer = Effect.gen(function* () {
|
|
14
|
+
// const loader = yield* Loader.Loader
|
|
15
|
+
// const template = yield* loader.load(url).pipe(Effect.map(Option.getOrUndefined))
|
|
16
|
+
// if (!template) {
|
|
17
|
+
// return yield* new NoSuchTemplateError({ url })
|
|
18
|
+
// }
|
|
19
|
+
// const [head, ...rest] = pipe(template, String.trim, String.split("{{"))
|
|
20
|
+
// if ((!payload || !Object.keys(payload).length) && !rest.length) {
|
|
21
|
+
// return () => template
|
|
22
|
+
// }
|
|
23
|
+
// const segments = rest.flatMap((part) => {
|
|
24
|
+
// const i = part.indexOf("}}")
|
|
25
|
+
// if (i === -1) {
|
|
26
|
+
// return []
|
|
27
|
+
// }
|
|
28
|
+
// return {
|
|
29
|
+
// key: part.slice(0, i).trim(),
|
|
30
|
+
// tail: part.slice(i + 2),
|
|
31
|
+
// }
|
|
32
|
+
// })
|
|
33
|
+
// const keys = segments.map(({ key }) => key)
|
|
34
|
+
// if (payload) {
|
|
35
|
+
// const keys_ = new Set(keys)
|
|
36
|
+
// const dne = new Set<string>()
|
|
37
|
+
// const schema = S.Struct(payload)
|
|
38
|
+
// for (const field of schema.ast.propertySignatures) {
|
|
39
|
+
// if (!SchemaAST.isOptional(field.type) && !keys_.has(field.name.toString())) {
|
|
40
|
+
// dne.add(field.name.toString())
|
|
41
|
+
// }
|
|
42
|
+
// }
|
|
43
|
+
// if (dne.size) {
|
|
44
|
+
// return yield* new TemplateMisalignedError({
|
|
45
|
+
// url,
|
|
46
|
+
// keys: [...dne.values()],
|
|
47
|
+
// })
|
|
48
|
+
// }
|
|
49
|
+
// } else if (segments.length) {
|
|
50
|
+
// return yield* new TemplateMisalignedError({ url, keys })
|
|
51
|
+
// }
|
|
52
|
+
// const make: Make_ = (value?) =>
|
|
53
|
+
// value
|
|
54
|
+
// ? head + segments.map(({ key, tail }) => `${(value as Record<typeof key, string>)[key]}${tail}`).join("")
|
|
55
|
+
// : template
|
|
56
|
+
// return make
|
|
57
|
+
// }).pipe(Layer.effect(tag))
|
|
58
|
+
// const synthesize = (...args) => tag.pipe(Effect.map((make) => make(...args)))
|
|
59
|
+
// return Object.assign(tag, { synthesize })
|
|
58
60
|
//# sourceMappingURL=Template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../../experimental/Template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Template.js","sourceRoot":"","sources":["../../experimental/Template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAElE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAIrC,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAGrF;CAAG;AAEL,MAAM,OAAO,mBAAoB,SAAQ,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAkB;CAAG;AAUpG,MAAM,CAAC,MAAM,OAAO,GAClB,GAAS,EAAE,CACX,CACE,GAAO,EACP,OAGC,EAC6C,EAAE;IAChD,MAAM,CAAC,CAAA;AACT,CAAC,CAAA;AAEH,mDAAmD;AACnD,kEAAkE;AAClE,iDAAiD;AACjD,0CAA0C;AAC1C,wCAAwC;AACxC,qFAAqF;AACrF,qBAAqB;AACrB,qDAAqD;AACrD,MAAM;AACN,4EAA4E;AAC5E,sEAAsE;AACtE,4BAA4B;AAC5B,MAAM;AACN,8CAA8C;AAC9C,mCAAmC;AACnC,sBAAsB;AACtB,kBAAkB;AAClB,QAAQ;AACR,eAAe;AACf,sCAAsC;AACtC,iCAAiC;AACjC,QAAQ;AACR,OAAO;AACP,gDAAgD;AAChD,mBAAmB;AACnB,kCAAkC;AAClC,oCAAoC;AACpC,uCAAuC;AACvC,2DAA2D;AAC3D,sFAAsF;AACtF,yCAAyC;AACzC,UAAU;AACV,QAAQ;AACR,sBAAsB;AACtB,oDAAoD;AACpD,eAAe;AACf,mCAAmC;AACnC,WAAW;AACX,QAAQ;AACR,kCAAkC;AAClC,+DAA+D;AAC/D,MAAM;AACN,oCAAoC;AACpC,YAAY;AACZ,kHAAkH;AAClH,mBAAmB;AACnB,gBAAgB;AAChB,6BAA6B;AAE7B,gFAAgF;AAEhF,4CAA4C"}
|