@lionlang/core 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/README.md +15 -0
- package/dist/environment-k2Uf6VVc.d.mts +25 -0
- package/dist/environment-k2Uf6VVc.d.mts.map +1 -0
- package/dist/errors/evaluation.d.mts +2 -0
- package/dist/errors/evaluation.mjs +9 -0
- package/dist/errors/evaluation.mjs.map +1 -0
- package/dist/evaluate-D7ODMrbg.mjs +84 -0
- package/dist/evaluate-D7ODMrbg.mjs.map +1 -0
- package/dist/evaluation/base-forms/array.d.mts +11 -0
- package/dist/evaluation/base-forms/array.d.mts.map +1 -0
- package/dist/evaluation/base-forms/array.mjs +2 -0
- package/dist/evaluation/base-forms/primitive.d.mts +10 -0
- package/dist/evaluation/base-forms/primitive.d.mts.map +1 -0
- package/dist/evaluation/base-forms/primitive.mjs +10 -0
- package/dist/evaluation/base-forms/primitive.mjs.map +1 -0
- package/dist/evaluation/base-forms/record.d.mts +13 -0
- package/dist/evaluation/base-forms/record.d.mts.map +1 -0
- package/dist/evaluation/base-forms/record.mjs +2 -0
- package/dist/evaluation/environment.d.mts +12 -0
- package/dist/evaluation/environment.d.mts.map +1 -0
- package/dist/evaluation/environment.mjs +19 -0
- package/dist/evaluation/environment.mjs.map +1 -0
- package/dist/evaluation/evaluate.d.mts +12 -0
- package/dist/evaluation/evaluate.d.mts.map +1 -0
- package/dist/evaluation/evaluate.mjs +2 -0
- package/dist/evaluation/special-forms/begin.d.mts +11 -0
- package/dist/evaluation/special-forms/begin.d.mts.map +1 -0
- package/dist/evaluation/special-forms/begin.mjs +2 -0
- package/dist/evaluation/special-forms/cond.d.mts +11 -0
- package/dist/evaluation/special-forms/cond.d.mts.map +1 -0
- package/dist/evaluation/special-forms/cond.mjs +2 -0
- package/dist/evaluation/special-forms/define.d.mts +11 -0
- package/dist/evaluation/special-forms/define.d.mts.map +1 -0
- package/dist/evaluation/special-forms/define.mjs +2 -0
- package/dist/evaluation/special-forms/eval.d.mts +11 -0
- package/dist/evaluation/special-forms/eval.d.mts.map +1 -0
- package/dist/evaluation/special-forms/eval.mjs +2 -0
- package/dist/evaluation/special-forms/function.d.mts +11 -0
- package/dist/evaluation/special-forms/function.d.mts.map +1 -0
- package/dist/evaluation/special-forms/function.mjs +2 -0
- package/dist/evaluation/special-forms/lambda.d.mts +11 -0
- package/dist/evaluation/special-forms/lambda.d.mts.map +1 -0
- package/dist/evaluation/special-forms/lambda.mjs +2 -0
- package/dist/evaluation/special-forms/match.d.mts +11 -0
- package/dist/evaluation/special-forms/match.d.mts.map +1 -0
- package/dist/evaluation/special-forms/match.mjs +2 -0
- package/dist/evaluation/special-forms/quote.d.mts +11 -0
- package/dist/evaluation/special-forms/quote.d.mts.map +1 -0
- package/dist/evaluation/special-forms/quote.mjs +7 -0
- package/dist/evaluation/special-forms/quote.mjs.map +1 -0
- package/dist/evaluation-AblffSQw.d.mts +17 -0
- package/dist/evaluation-AblffSQw.d.mts.map +1 -0
- package/dist/evaluation-EqzK8tQV.d.mts +13 -0
- package/dist/evaluation-EqzK8tQV.d.mts.map +1 -0
- package/dist/evaluation-uwZSKxIf.d.mts +10 -0
- package/dist/evaluation-uwZSKxIf.d.mts.map +1 -0
- package/dist/json-primitive-DUaaoNff.d.mts +8 -0
- package/dist/json-primitive-DUaaoNff.d.mts.map +1 -0
- package/dist/lion-expression-6Y3itx9l.d.mts +16 -0
- package/dist/lion-expression-6Y3itx9l.d.mts.map +1 -0
- package/dist/modules/array.d.mts +19 -0
- package/dist/modules/array.d.mts.map +1 -0
- package/dist/modules/array.mjs +23 -0
- package/dist/modules/array.mjs.map +1 -0
- package/dist/modules/boolean.d.mts +17 -0
- package/dist/modules/boolean.d.mts.map +1 -0
- package/dist/modules/boolean.mjs +17 -0
- package/dist/modules/boolean.mjs.map +1 -0
- package/dist/modules/console.d.mts +10 -0
- package/dist/modules/console.d.mts.map +1 -0
- package/dist/modules/console.mjs +10 -0
- package/dist/modules/console.mjs.map +1 -0
- package/dist/modules/func.d.mts +13 -0
- package/dist/modules/func.d.mts.map +1 -0
- package/dist/modules/func.mjs +28 -0
- package/dist/modules/func.mjs.map +1 -0
- package/dist/modules/index.d.mts +8 -0
- package/dist/modules/index.d.mts.map +1 -0
- package/dist/modules/index.mjs +31 -0
- package/dist/modules/index.mjs.map +1 -0
- package/dist/modules/lib/shared.d.mts +9 -0
- package/dist/modules/lib/shared.d.mts.map +1 -0
- package/dist/modules/lib/shared.mjs +7 -0
- package/dist/modules/lib/shared.mjs.map +1 -0
- package/dist/modules/number.d.mts +19 -0
- package/dist/modules/number.d.mts.map +1 -0
- package/dist/modules/number.mjs +19 -0
- package/dist/modules/number.mjs.map +1 -0
- package/dist/modules/object.d.mts +86 -0
- package/dist/modules/object.d.mts.map +1 -0
- package/dist/modules/object.mjs +154 -0
- package/dist/modules/object.mjs.map +1 -0
- package/dist/modules/string.d.mts +18 -0
- package/dist/modules/string.d.mts.map +1 -0
- package/dist/modules/string.mjs +17 -0
- package/dist/modules/string.mjs.map +1 -0
- package/dist/modules/value.d.mts +19 -0
- package/dist/modules/value.d.mts.map +1 -0
- package/dist/modules/value.mjs +19 -0
- package/dist/modules/value.mjs.map +1 -0
- package/dist/schemas/environment.d.mts +2 -0
- package/dist/schemas/environment.mjs +14 -0
- package/dist/schemas/environment.mjs.map +1 -0
- package/dist/schemas/evaluation.d.mts +24 -0
- package/dist/schemas/evaluation.d.mts.map +1 -0
- package/dist/schemas/evaluation.mjs +38 -0
- package/dist/schemas/evaluation.mjs.map +1 -0
- package/dist/schemas/json-primitive.d.mts +2 -0
- package/dist/schemas/json-primitive.mjs +7 -0
- package/dist/schemas/json-primitive.mjs.map +1 -0
- package/dist/schemas/lion-expression.d.mts +2 -0
- package/dist/schemas/lion-expression.mjs +14 -0
- package/dist/schemas/lion-expression.mjs.map +1 -0
- package/dist/services/evaluation.d.mts +2 -0
- package/dist/services/evaluation.mjs +8 -0
- package/dist/services/evaluation.mjs.map +1 -0
- package/dist/types/evaluation.d.mts +2 -0
- package/dist/types/evaluation.mjs +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { n as JsonPrimitiveType } from "./json-primitive-DUaaoNff.mjs";
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
|
|
4
|
+
//#region src/schemas/lion-expression.d.ts
|
|
5
|
+
type AssumedExpressionType = JsonPrimitiveType | readonly AssumedExpressionType[] | {
|
|
6
|
+
readonly [key: string]: AssumedExpressionType;
|
|
7
|
+
};
|
|
8
|
+
declare const LionArrayExpressionSchema: Schema.Array$<Schema.suspend<AssumedExpressionType, AssumedExpressionType, never>>;
|
|
9
|
+
type LionArrayExpressionType = typeof LionArrayExpressionSchema.Type;
|
|
10
|
+
declare const LionRecordExpressionSchema: Schema.Record$<Schema.filter<Schema.filter<typeof Schema.String>>, Schema.suspend<AssumedExpressionType, AssumedExpressionType, never>>;
|
|
11
|
+
type LionRecordExpressionType = typeof LionRecordExpressionSchema.Type;
|
|
12
|
+
declare const LionExpressionSchema: Schema.Union<[Schema.Union<[typeof Schema.String, typeof Schema.Number, typeof Schema.Boolean, typeof Schema.Null]>, Schema.Array$<Schema.suspend<AssumedExpressionType, AssumedExpressionType, never>>, Schema.Record$<Schema.filter<Schema.filter<typeof Schema.String>>, Schema.suspend<AssumedExpressionType, AssumedExpressionType, never>>]>;
|
|
13
|
+
type LionExpressionType = typeof LionExpressionSchema.Type;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { LionExpressionType as a, LionExpressionSchema as i, LionArrayExpressionSchema as n, LionRecordExpressionSchema as o, LionArrayExpressionType as r, LionRecordExpressionType as s, AssumedExpressionType as t };
|
|
16
|
+
//# sourceMappingURL=lion-expression-6Y3itx9l.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lion-expression-6Y3itx9l.d.mts","names":[],"sources":["../src/schemas/lion-expression.ts"],"mappings":";;;;KAOY,qBAAA,GACR,iBAAA,YACS,qBAAA;EAAA,UACG,GAAA,WAAc,qBAAA;AAAA;AAAA,cAEjB,yBAAA,EAAyB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,OAAA,CAAA,qBAAA,EAAA,qBAAA;AAAA,KAM1B,uBAAA,UAAiC,yBAAA,CAA0B,IAAA;AAAA,cAK1D,0BAAA,EAA0B,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,QAAA,MAAA,CAAA,MAAA,IAAA,MAAA,CAAA,OAAA,CAAA,qBAAA,EAAA,qBAAA;AAAA,KAU3B,wBAAA,UAAkC,0BAAA,CAA2B,IAAA;AAAA,cAG5D,oBAAA,EAAoB,MAAA,CAAA,KAAA,EAAA,MAAA,CAAA,KAAA,SAAA,MAAA,CAAA,MAAA,SAAA,MAAA,CAAA,MAAA,SAAA,MAAA,CAAA,OAAA,SAAA,MAAA,CAAA,IAAA,IAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,OAAA,CAAA,qBAAA,EAAA,qBAAA,WAAA,MAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,QAAA,MAAA,CAAA,MAAA,IAAA,MAAA,CAAA,OAAA,CAAA,qBAAA,EAAA,qBAAA;AAAA,KAMrB,kBAAA,UAA4B,oBAAA,CAAqB,IAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import * as _$effect_ParseResult0 from "effect/ParseResult";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/array.d.ts
|
|
5
|
+
declare const module: {
|
|
6
|
+
symbol: symbol;
|
|
7
|
+
make: (...args: unknown[]) => Effect.Effect<unknown[], never, never>;
|
|
8
|
+
head: (u: unknown) => Effect.Effect<any, _$effect_ParseResult0.ParseError, never>;
|
|
9
|
+
tail: (u: unknown) => Effect.Effect<any[], _$effect_ParseResult0.ParseError, never>;
|
|
10
|
+
length: (u: unknown) => Effect.Effect<number, _$effect_ParseResult0.ParseError, never>;
|
|
11
|
+
concat: (a: unknown, b: unknown) => Effect.Effect<any[], _$effect_ParseResult0.ParseError, never>;
|
|
12
|
+
"includes?": (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
13
|
+
map: (a: unknown, b: unknown) => Effect.Effect<unknown[], _$effect_ParseResult0.ParseError, never>;
|
|
14
|
+
"flat-map": (a: unknown, b: unknown) => Effect.Effect<unknown[], _$effect_ParseResult0.ParseError, never>;
|
|
15
|
+
reduce: (a: unknown, b: unknown, c: unknown) => Effect.Effect<any, _$effect_ParseResult0.ParseError, never>;
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { module };
|
|
19
|
+
//# sourceMappingURL=array.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.mts","names":[],"sources":["../../src/modules/array.ts"],"mappings":";;;;cAGa,MAAA;;gCAGc,MAAA,CAAA,MAAA;2CAAA,qBAAA,CAAA,UAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { decode } from "./lib/shared.mjs";
|
|
2
|
+
import { Array, Effect, Option, Schema, flow, pipe } from "effect";
|
|
3
|
+
//#region src/modules/array.ts
|
|
4
|
+
const module = {
|
|
5
|
+
symbol: Symbol("array"),
|
|
6
|
+
make: (...args) => Effect.succeed(args),
|
|
7
|
+
head: flow(decode(Schema.Array(Schema.Any)), Effect.map(Array.head), Effect.map(Option.getOrThrow)),
|
|
8
|
+
tail: flow(decode(Schema.Array(Schema.Any)), Effect.map(Array.tail), Effect.map(Option.getOrThrow)),
|
|
9
|
+
length: flow(decode(Schema.Array(Schema.Any)), Effect.map(Array.length)),
|
|
10
|
+
concat: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Array(Schema.Any))), Effect.map(Array.flatten)),
|
|
11
|
+
"includes?": flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any)), Effect.map(([list, item]) => Array.contains(list, item))),
|
|
12
|
+
map: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any)), Effect.flatMap(([list, fn]) => Effect.all(Array.map(list, fn)))),
|
|
13
|
+
"flat-map": flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any)), Effect.flatMap(([list, fn]) => pipe(Array.map(list, fn), Effect.all, Effect.map(Array.flatten)))),
|
|
14
|
+
reduce: flow((a, b, c) => [
|
|
15
|
+
a,
|
|
16
|
+
b,
|
|
17
|
+
c
|
|
18
|
+
], decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any, Schema.Any)), Effect.flatMap(([list, initial, fn]) => Array.reduce(list, Effect.succeed(initial), (accEffect, item) => Effect.flatMap(accEffect, (acc) => fn(acc, item)))))
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { module };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=array.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.mjs","names":["Arr"],"sources":["../../src/modules/array.ts"],"sourcesContent":["import { Array as Arr, Effect, flow, Option, pipe, Schema } from \"effect\";\nimport { decode } from \"@/modules/lib/shared\";\n\nexport const module = {\n symbol: Symbol(\"array\"),\n\n make: (...args: unknown[]) => Effect.succeed(args),\n\n head: flow(\n decode(Schema.Array(Schema.Any)),\n Effect.map(Arr.head),\n Effect.map(Option.getOrThrow)\n ),\n\n tail: flow(\n decode(Schema.Array(Schema.Any)),\n Effect.map(Arr.tail),\n Effect.map(Option.getOrThrow)\n ),\n\n length: flow(decode(Schema.Array(Schema.Any)), Effect.map(Arr.length)),\n\n concat: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Array(Schema.Any))),\n Effect.map(Arr.flatten)\n ),\n\n \"includes?\": flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any)),\n Effect.map(([list, item]) => Arr.contains(list, item))\n ),\n\n map: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any)),\n Effect.flatMap(([list, fn]) =>\n Effect.all(Arr.map(list, fn) as Effect.Effect<unknown>[])\n )\n ),\n\n \"flat-map\": flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any)),\n Effect.flatMap(([list, fn]) =>\n pipe(\n Arr.map(list, fn) as Effect.Effect<unknown[]>[],\n Effect.all,\n Effect.map(Arr.flatten)\n )\n )\n ),\n\n reduce: flow(\n (a: unknown, b: unknown, c: unknown) => [a, b, c],\n decode(Schema.Tuple(Schema.Array(Schema.Any), Schema.Any, Schema.Any)),\n Effect.flatMap(([list, initial, fn]) =>\n Arr.reduce(list, Effect.succeed(initial), (accEffect, item) =>\n Effect.flatMap(accEffect, (acc) =>\n (fn as (acc: unknown, item: unknown) => Effect.Effect<unknown>)(\n acc,\n item\n )\n )\n )\n )\n ),\n};\n"],"mappings":";;;AAGA,MAAa,SAAS;CACpB,QAAQ,OAAO,QAAQ;CAEvB,OAAO,GAAG,SAAoB,OAAO,QAAQ,KAAK;CAElD,MAAM,KACJ,OAAO,OAAO,MAAM,OAAO,IAAI,CAAC,EAChC,OAAO,IAAIA,MAAI,KAAK,EACpB,OAAO,IAAI,OAAO,WAAW,CAC9B;CAED,MAAM,KACJ,OAAO,OAAO,MAAM,OAAO,IAAI,CAAC,EAChC,OAAO,IAAIA,MAAI,KAAK,EACpB,OAAO,IAAI,OAAO,WAAW,CAC9B;CAED,QAAQ,KAAK,OAAO,OAAO,MAAM,OAAO,IAAI,CAAC,EAAE,OAAO,IAAIA,MAAI,OAAO,CAAC;CAEtE,QAAQ,MACL,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,MAAM,OAAO,IAAI,EAAE,OAAO,MAAM,OAAO,IAAI,CAAC,CAAC,EACxE,OAAO,IAAIA,MAAI,QAAQ,CACxB;CAED,aAAa,MACV,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,MAAM,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC,EAC1D,OAAO,KAAK,CAAC,MAAM,UAAUA,MAAI,SAAS,MAAM,KAAK,CAAC,CACvD;CAED,KAAK,MACF,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,MAAM,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC,EAC1D,OAAO,SAAS,CAAC,MAAM,QACrB,OAAO,IAAIA,MAAI,IAAI,MAAM,GAAG,CAA6B,CAC1D,CACF;CAED,YAAY,MACT,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,MAAM,OAAO,IAAI,EAAE,OAAO,IAAI,CAAC,EAC1D,OAAO,SAAS,CAAC,MAAM,QACrB,KACEA,MAAI,IAAI,MAAM,GAAG,EACjB,OAAO,KACP,OAAO,IAAIA,MAAI,QAAQ,CACxB,CACF,CACF;CAED,QAAQ,MACL,GAAY,GAAY,MAAe;EAAC;EAAG;EAAG;EAAE,EACjD,OAAO,OAAO,MAAM,OAAO,MAAM,OAAO,IAAI,EAAE,OAAO,KAAK,OAAO,IAAI,CAAC,EACtE,OAAO,SAAS,CAAC,MAAM,SAAS,QAC9BA,MAAI,OAAO,MAAM,OAAO,QAAQ,QAAQ,GAAG,WAAW,SACpD,OAAO,QAAQ,YAAY,QACxB,GACC,KACA,KACD,CACF,CACF,CACF,CACF;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import * as _$effect_ParseResult0 from "effect/ParseResult";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/boolean.d.ts
|
|
5
|
+
declare const module: {
|
|
6
|
+
symbol: symbol;
|
|
7
|
+
"equals?": (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
8
|
+
not: (u: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
9
|
+
and: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
10
|
+
or: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
11
|
+
xor: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
12
|
+
nand: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
13
|
+
nor: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { module };
|
|
17
|
+
//# sourceMappingURL=boolean.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.d.mts","names":[],"sources":["../../src/modules/boolean.ts"],"mappings":";;;;cAGa,MAAA;;gEAwCZ,qBAAA,CAAA,UAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { decode } from "./lib/shared.mjs";
|
|
2
|
+
import { Boolean, Effect, Schema, flow } from "effect";
|
|
3
|
+
//#region src/modules/boolean.ts
|
|
4
|
+
const module = {
|
|
5
|
+
symbol: Symbol("boolean"),
|
|
6
|
+
"equals?": flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)), Effect.map(([a, b]) => a === b)),
|
|
7
|
+
not: flow(decode(Schema.Boolean), Effect.map(Boolean.not)),
|
|
8
|
+
and: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)), Effect.map(([a, b]) => Boolean.and(a, b))),
|
|
9
|
+
or: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)), Effect.map(([a, b]) => Boolean.or(a, b))),
|
|
10
|
+
xor: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)), Effect.map(([a, b]) => Boolean.xor(a, b))),
|
|
11
|
+
nand: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)), Effect.map(([a, b]) => Boolean.nand(a, b))),
|
|
12
|
+
nor: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)), Effect.map(([a, b]) => Boolean.nor(a, b)))
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { module };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=boolean.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.mjs","names":["Bool"],"sources":["../../src/modules/boolean.ts"],"sourcesContent":["import { Boolean as Bool, Effect, flow, Schema } from \"effect\";\nimport { decode } from \"@/modules/lib/shared\";\n\nexport const module = {\n symbol: Symbol(\"boolean\"),\n\n \"equals?\": flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)),\n Effect.map(([a, b]) => a === b)\n ),\n\n not: flow(decode(Schema.Boolean), Effect.map(Bool.not)),\n\n and: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)),\n Effect.map(([a, b]) => Bool.and(a, b))\n ),\n\n or: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)),\n Effect.map(([a, b]) => Bool.or(a, b))\n ),\n\n xor: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)),\n Effect.map(([a, b]) => Bool.xor(a, b))\n ),\n\n nand: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)),\n Effect.map(([a, b]) => Bool.nand(a, b))\n ),\n\n nor: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Boolean, Schema.Boolean)),\n Effect.map(([a, b]) => Bool.nor(a, b))\n ),\n};\n"],"mappings":";;;AAGA,MAAa,SAAS;CACpB,QAAQ,OAAO,UAAU;CAEzB,WAAW,MACR,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,QAAQ,CAAC,EACpD,OAAO,KAAK,CAAC,GAAG,OAAO,MAAM,EAAE,CAChC;CAED,KAAK,KAAK,OAAO,OAAO,QAAQ,EAAE,OAAO,IAAIA,QAAK,IAAI,CAAC;CAEvD,KAAK,MACF,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,QAAQ,CAAC,EACpD,OAAO,KAAK,CAAC,GAAG,OAAOA,QAAK,IAAI,GAAG,EAAE,CAAC,CACvC;CAED,IAAI,MACD,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,QAAQ,CAAC,EACpD,OAAO,KAAK,CAAC,GAAG,OAAOA,QAAK,GAAG,GAAG,EAAE,CAAC,CACtC;CAED,KAAK,MACF,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,QAAQ,CAAC,EACpD,OAAO,KAAK,CAAC,GAAG,OAAOA,QAAK,IAAI,GAAG,EAAE,CAAC,CACvC;CAED,MAAM,MACH,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,QAAQ,CAAC,EACpD,OAAO,KAAK,CAAC,GAAG,OAAOA,QAAK,KAAK,GAAG,EAAE,CAAC,CACxC;CAED,KAAK,MACF,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,SAAS,OAAO,QAAQ,CAAC,EACpD,OAAO,KAAK,CAAC,GAAG,OAAOA,QAAK,IAAI,GAAG,EAAE,CAAC,CACvC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/console.d.ts
|
|
4
|
+
declare const module: {
|
|
5
|
+
log: (message: string) => Effect.Effect<string, never, never>;
|
|
6
|
+
"log-json": (message: unknown) => Effect.Effect<string, never, never>;
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { module };
|
|
10
|
+
//# sourceMappingURL=console.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.mts","names":[],"sources":["../../src/modules/console.ts"],"mappings":";;;cAEa,MAAA;4BACU,MAAA,CAAA,MAAA;oCAGQ,MAAA,CAAA,MAAA;AAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Console, Effect } from "effect";
|
|
2
|
+
//#region src/modules/console.ts
|
|
3
|
+
const module = {
|
|
4
|
+
log: (message) => Console.log(message).pipe(Effect.map(() => message)),
|
|
5
|
+
"log-json": (message) => Console.log(JSON.stringify(message, null, 2)).pipe(Effect.map(() => JSON.stringify(message, null, 2)))
|
|
6
|
+
};
|
|
7
|
+
//#endregion
|
|
8
|
+
export { module };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=console.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.mjs","names":[],"sources":["../../src/modules/console.ts"],"sourcesContent":["import { Console, Effect } from \"effect\";\n\nexport const module = {\n log: (message: string) =>\n Console.log(message).pipe(Effect.map(() => message)),\n \n \"log-json\": (message: unknown) =>\n Console.log(JSON.stringify(message, null, 2)).pipe(\n Effect.map(() => JSON.stringify(message, null, 2))\n ),\n};\n"],"mappings":";;AAEA,MAAa,SAAS;CACpB,MAAM,YACJ,QAAQ,IAAI,QAAQ,CAAC,KAAK,OAAO,UAAU,QAAQ,CAAC;CAEtD,aAAa,YACX,QAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC,CAAC,KAC5C,OAAO,UAAU,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC,CACnD;CACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
|
|
3
|
+
//#region src/modules/func.d.ts
|
|
4
|
+
declare const module: {
|
|
5
|
+
symbol: symbol;
|
|
6
|
+
bind: (fn: (...args: unknown[]) => unknown, obj: unknown, ...args: unknown[]) => Effect.Effect<(...args: unknown[]) => unknown, never, never>;
|
|
7
|
+
apply: (fn: (...args: unknown[]) => unknown, obj: unknown, ...args: unknown[]) => Effect.Effect<unknown, never, never>;
|
|
8
|
+
callback: (fn: unknown) => Effect.Effect<(...args: unknown[]) => any, never, never>;
|
|
9
|
+
partial: (fn: unknown, ...args: unknown[]) => Effect.Effect<(...moreArgs: unknown[]) => any, never, never>;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { module };
|
|
13
|
+
//# sourceMappingURL=func.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"func.d.mts","names":[],"sources":["../../src/modules/func.ts"],"mappings":";;;cAGa,MAAA;;iBAID,IAAA,yBAA2B,GAAA,cACvB,IAAA,gBACM,MAAA,CAAA,MAAA,KAAA,IAAA;kBAIV,IAAA,yBAA2B,GAAA,cACvB,IAAA,gBACM,MAAA,CAAA,MAAA;6BAGE,MAAA,CAAA,MAAA,KAAA,IAAA;4BAuCD,IAAA,gBAAoB,MAAA,CAAA,MAAA,KAAA,QAAA;AAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LionEnvironmentService } from "../services/evaluation.mjs";
|
|
2
|
+
import { Context, Effect, Match, Option, pipe } from "effect";
|
|
3
|
+
//#region src/modules/func.ts
|
|
4
|
+
const module = {
|
|
5
|
+
symbol: Symbol("func"),
|
|
6
|
+
bind: (fn, obj, ...args) => Effect.succeed(fn.bind(obj, ...args)),
|
|
7
|
+
apply: (fn, obj, ...args) => Effect.succeed(fn.apply(obj, args)),
|
|
8
|
+
callback: (fn) => pipe(Effect.context(), Effect.map((context) => Context.getOption(context, LionEnvironmentService)), Effect.map((environmentRef) => (...args) => {
|
|
9
|
+
if (typeof fn !== "function") return fn;
|
|
10
|
+
const result = fn(...args);
|
|
11
|
+
if (Effect.isEffect(result)) {
|
|
12
|
+
const callbackEffect = pipe(Match.value(environmentRef), Match.when(Option.isSome, ({ value }) => result.pipe(Effect.provideService(LionEnvironmentService, value))), Match.when(Option.isNone, () => result), Match.exhaustive);
|
|
13
|
+
return Effect.runPromise(callbackEffect).catch((e) => {
|
|
14
|
+
console.error(e);
|
|
15
|
+
throw e;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
})),
|
|
20
|
+
partial: (fn, ...args) => Effect.succeed((...moreArgs) => {
|
|
21
|
+
if (typeof fn !== "function") return fn;
|
|
22
|
+
return fn(...args, ...moreArgs);
|
|
23
|
+
})
|
|
24
|
+
};
|
|
25
|
+
//#endregion
|
|
26
|
+
export { module };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=func.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"func.mjs","names":[],"sources":["../../src/modules/func.ts"],"sourcesContent":["import { Context, Effect, Match, Option, pipe } from \"effect\";\nimport { LionEnvironmentService } from \"@/services/evaluation\";\n\nexport const module = {\n symbol: Symbol(\"func\"),\n\n bind: (\n fn: (...args: unknown[]) => unknown,\n obj: unknown,\n ...args: unknown[]\n ) => Effect.succeed(fn.bind(obj, ...args)),\n\n apply: (\n fn: (...args: unknown[]) => unknown,\n obj: unknown,\n ...args: unknown[]\n ) => Effect.succeed(fn.apply(obj, args)),\n\n callback: (fn: unknown) =>\n pipe(\n Effect.context<never>(),\n Effect.map((context) =>\n Context.getOption(context, LionEnvironmentService)\n ),\n Effect.map((environmentRef) => (...args: unknown[]) => {\n if (typeof fn !== \"function\") {\n return fn;\n }\n\n const result = fn(...args);\n\n if (Effect.isEffect(result)) {\n const callbackEffect = pipe(\n Match.value(environmentRef),\n Match.when(\n Option.isSome,\n ({ value }) =>\n result.pipe(\n Effect.provideService(LionEnvironmentService, value)\n ) as Effect.Effect<unknown, unknown, never>\n ),\n Match.when(Option.isNone, () => result),\n Match.exhaustive\n );\n\n return Effect.runPromise(\n callbackEffect as Effect.Effect<unknown, unknown, never>\n ).catch((e) => {\n console.error(e);\n throw e;\n });\n }\n\n return result;\n })\n ),\n\n partial: (fn: unknown, ...args: unknown[]) =>\n Effect.succeed((...moreArgs: unknown[]) => {\n if (typeof fn !== \"function\") {\n return fn;\n }\n\n return fn(...args, ...moreArgs);\n }),\n};\n"],"mappings":";;;AAGA,MAAa,SAAS;CACpB,QAAQ,OAAO,OAAO;CAEtB,OACE,IACA,KACA,GAAG,SACA,OAAO,QAAQ,GAAG,KAAK,KAAK,GAAG,KAAK,CAAC;CAE1C,QACE,IACA,KACA,GAAG,SACA,OAAO,QAAQ,GAAG,MAAM,KAAK,KAAK,CAAC;CAExC,WAAW,OACT,KACE,OAAO,SAAgB,EACvB,OAAO,KAAK,YACV,QAAQ,UAAU,SAAS,uBAAuB,CACnD,EACD,OAAO,KAAK,oBAAoB,GAAG,SAAoB;AACrD,MAAI,OAAO,OAAO,WAChB,QAAO;EAGT,MAAM,SAAS,GAAG,GAAG,KAAK;AAE1B,MAAI,OAAO,SAAS,OAAO,EAAE;GAC3B,MAAM,iBAAiB,KACrB,MAAM,MAAM,eAAe,EAC3B,MAAM,KACJ,OAAO,SACN,EAAE,YACD,OAAO,KACL,OAAO,eAAe,wBAAwB,MAAM,CACrD,CACJ,EACD,MAAM,KAAK,OAAO,cAAc,OAAO,EACvC,MAAM,WACP;AAED,UAAO,OAAO,WACZ,eACD,CAAC,OAAO,MAAM;AACb,YAAQ,MAAM,EAAE;AAChB,UAAM;KACN;;AAGJ,SAAO;GACP,CACH;CAEH,UAAU,IAAa,GAAG,SACxB,OAAO,SAAS,GAAG,aAAwB;AACzC,MAAI,OAAO,OAAO,WAChB,QAAO;AAGT,SAAO,GAAG,GAAG,MAAM,GAAG,SAAS;GAC/B;CACL"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/modules/index.d.ts
|
|
2
|
+
declare const namespaceEntries: (namespace: string, record: Record<string, unknown>) => Record<string, unknown>;
|
|
3
|
+
declare const stdlib: {
|
|
4
|
+
[x: string]: unknown;
|
|
5
|
+
};
|
|
6
|
+
//#endregion
|
|
7
|
+
export { namespaceEntries, stdlib };
|
|
8
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/modules/index.ts"],"mappings":";cASa,gBAAA,GACX,SAAA,UACA,MAAA,EAAQ,MAAA,sBAAuB,MAAA;AAAA,cAYpB,MAAA;EAAA,CASZ,CAAA;AAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { module } from "./array.mjs";
|
|
2
|
+
import { module as module$1 } from "./boolean.mjs";
|
|
3
|
+
import { module as module$2 } from "./console.mjs";
|
|
4
|
+
import { module as module$3 } from "./func.mjs";
|
|
5
|
+
import { module as module$4 } from "./number.mjs";
|
|
6
|
+
import { module as module$5 } from "./object.mjs";
|
|
7
|
+
import { module as module$6 } from "./string.mjs";
|
|
8
|
+
import { module as module$7 } from "./value.mjs";
|
|
9
|
+
//#region src/modules/index.ts
|
|
10
|
+
const namespaceEntries = (namespace, record) => {
|
|
11
|
+
const result = {};
|
|
12
|
+
for (const entry of Object.entries(record)) {
|
|
13
|
+
const [key, value] = entry;
|
|
14
|
+
result[`${namespace}/${key}`] = value;
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
const stdlib = {
|
|
19
|
+
...namespaceEntries("array", module),
|
|
20
|
+
...namespaceEntries("boolean", module$1),
|
|
21
|
+
...namespaceEntries("console", module$2),
|
|
22
|
+
...namespaceEntries("func", module$3),
|
|
23
|
+
...namespaceEntries("number", module$4),
|
|
24
|
+
...namespaceEntries("object", module$5),
|
|
25
|
+
...namespaceEntries("string", module$6),
|
|
26
|
+
...namespaceEntries("value", module$7)
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
export { namespaceEntries, stdlib };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["array","boolean","console","func","number","object","string","value"],"sources":["../../src/modules/index.ts"],"sourcesContent":["import { module as array } from \"./array.ts\";\nimport { module as boolean } from \"./boolean.ts\";\nimport { module as console } from \"./console.ts\";\nimport { module as func } from \"./func.ts\";\nimport { module as number } from \"./number.ts\";\nimport { module as object } from \"./object.ts\";\nimport { module as string } from \"./string.ts\";\nimport { module as value } from \"./value.ts\";\n\nexport const namespaceEntries = (\n namespace: string,\n record: Record<string, unknown>\n) => {\n const result: Record<string, unknown> = {};\n\n for (const entry of Object.entries(record)) {\n const [key, value] = entry;\n result[`${namespace}/${key}`] = value;\n }\n\n return result;\n};\n\nexport const stdlib = {\n ...namespaceEntries(\"array\", array),\n ...namespaceEntries(\"boolean\", boolean),\n ...namespaceEntries(\"console\", console),\n ...namespaceEntries(\"func\", func),\n ...namespaceEntries(\"number\", number),\n ...namespaceEntries(\"object\", object),\n ...namespaceEntries(\"string\", string),\n ...namespaceEntries(\"value\", value),\n};\n"],"mappings":";;;;;;;;;AASA,MAAa,oBACX,WACA,WACG;CACH,MAAM,SAAkC,EAAE;AAE1C,MAAK,MAAM,SAAS,OAAO,QAAQ,OAAO,EAAE;EAC1C,MAAM,CAAC,KAAK,SAAS;AACrB,SAAO,GAAG,UAAU,GAAG,SAAS;;AAGlC,QAAO;;AAGT,MAAa,SAAS;CACpB,GAAG,iBAAiB,SAASA,OAAM;CACnC,GAAG,iBAAiB,WAAWC,SAAQ;CACvC,GAAG,iBAAiB,WAAWC,SAAQ;CACvC,GAAG,iBAAiB,QAAQC,SAAK;CACjC,GAAG,iBAAiB,UAAUC,SAAO;CACrC,GAAG,iBAAiB,UAAUC,SAAO;CACrC,GAAG,iBAAiB,UAAUC,SAAO;CACrC,GAAG,iBAAiB,SAASC,SAAM;CACpC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import * as _$effect_ParseResult0 from "effect/ParseResult";
|
|
3
|
+
import * as _$effect_Effect0 from "effect/Effect";
|
|
4
|
+
|
|
5
|
+
//#region src/modules/lib/shared.d.ts
|
|
6
|
+
declare const decode: <A, B, C>(s: Schema.Schema<A, B, C>) => (u: unknown) => _$effect_Effect0.Effect<A, _$effect_ParseResult0.ParseError, C>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { decode };
|
|
9
|
+
//# sourceMappingURL=shared.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.mts","names":[],"sources":["../../../src/modules/lib/shared.ts"],"mappings":";;;;;cAEa,MAAA,YAAmB,CAAA,EAAG,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA,OACpD,CAAA,cAAU,gBAAA,CAAA,MAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,UAAA,EAAA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.mjs","names":[],"sources":["../../../src/modules/lib/shared.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nexport const decode = <A, B, C>(s: Schema.Schema<A, B, C>) =>\n (u: unknown) => Schema.decodeUnknown(s)(u);\n"],"mappings":";;AAEA,MAAa,UAAmB,OAC7B,MAAe,OAAO,cAAc,EAAE,CAAC,EAAE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import * as _$effect_ParseResult0 from "effect/ParseResult";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/number.d.ts
|
|
5
|
+
declare const module: {
|
|
6
|
+
symbol: symbol;
|
|
7
|
+
"equals?": (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
8
|
+
lessThan: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
9
|
+
greaterThan: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
10
|
+
lessThanOrEqualTo: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
11
|
+
greaterThanOrEqualTo: (a: unknown, b: unknown) => Effect.Effect<boolean, _$effect_ParseResult0.ParseError, never>;
|
|
12
|
+
add: (a: unknown, b: unknown) => Effect.Effect<number, _$effect_ParseResult0.ParseError, never>;
|
|
13
|
+
subtract: (a: unknown, b: unknown) => Effect.Effect<number, _$effect_ParseResult0.ParseError, never>;
|
|
14
|
+
multiply: (a: unknown, b: unknown) => Effect.Effect<number, _$effect_ParseResult0.ParseError, never>;
|
|
15
|
+
divide: (a: unknown, b: unknown) => Effect.Effect<number, _$effect_ParseResult0.ParseError, never>;
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { module };
|
|
19
|
+
//# sourceMappingURL=number.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.mts","names":[],"sources":["../../src/modules/number.ts"],"mappings":";;;;cAGa,MAAA;;gEAwDZ,qBAAA,CAAA,UAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { decode } from "./lib/shared.mjs";
|
|
2
|
+
import { Effect, Schema, flow } from "effect";
|
|
3
|
+
//#region src/modules/number.ts
|
|
4
|
+
const module = {
|
|
5
|
+
symbol: Symbol("number"),
|
|
6
|
+
"equals?": flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a === b)),
|
|
7
|
+
lessThan: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a < b)),
|
|
8
|
+
greaterThan: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a > b)),
|
|
9
|
+
lessThanOrEqualTo: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a <= b)),
|
|
10
|
+
greaterThanOrEqualTo: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a >= b)),
|
|
11
|
+
add: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a + b)),
|
|
12
|
+
subtract: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a - b)),
|
|
13
|
+
multiply: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a * b)),
|
|
14
|
+
divide: flow((a, b) => [a, b], decode(Schema.Tuple(Schema.Number, Schema.Number)), Effect.map(([a, b]) => a / b))
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { module };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=number.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.mjs","names":[],"sources":["../../src/modules/number.ts"],"sourcesContent":["import { Effect, flow, Schema } from \"effect\";\nimport { decode } from \"@/modules/lib/shared\";\n\nexport const module = {\n symbol: Symbol(\"number\"),\n\n \"equals?\": flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a === b)\n ),\n\n lessThan: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a < b)\n ),\n\n greaterThan: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a > b)\n ),\n\n lessThanOrEqualTo: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a <= b)\n ),\n\n greaterThanOrEqualTo: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a >= b)\n ),\n\n add: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a + b)\n ),\n\n subtract: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a - b)\n ),\n\n multiply: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a * b)\n ),\n\n divide: flow(\n (a: unknown, b: unknown) => [a, b],\n decode(Schema.Tuple(Schema.Number, Schema.Number)),\n Effect.map(([a, b]) => a / b)\n ),\n};\n"],"mappings":";;;AAGA,MAAa,SAAS;CACpB,QAAQ,OAAO,SAAS;CAExB,WAAW,MACR,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,MAAM,EAAE,CAChC;CAED,UAAU,MACP,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,IAAI,EAAE,CAC9B;CAED,aAAa,MACV,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,IAAI,EAAE,CAC9B;CAED,mBAAmB,MAChB,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,EAAE,CAC/B;CAED,sBAAsB,MACnB,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,EAAE,CAC/B;CAED,KAAK,MACF,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,IAAI,EAAE,CAC9B;CAED,UAAU,MACP,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,IAAI,EAAE,CAC9B;CAED,UAAU,MACP,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,IAAI,EAAE,CAC9B;CAED,QAAQ,MACL,GAAY,MAAe,CAAC,GAAG,EAAE,EAClC,OAAO,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,CAAC,EAClD,OAAO,KAAK,CAAC,GAAG,OAAO,IAAI,EAAE,CAC9B;CACF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import * as _$effect_ParseResult0 from "effect/ParseResult";
|
|
3
|
+
|
|
4
|
+
//#region src/modules/object.d.ts
|
|
5
|
+
declare const NotAnObjectError_base: Schema.TaggedErrorClass<NotAnObjectError, "NotAnObjectError", {
|
|
6
|
+
readonly _tag: Schema.tag<"NotAnObjectError">;
|
|
7
|
+
} & {
|
|
8
|
+
actual: typeof Schema.Unknown;
|
|
9
|
+
}>;
|
|
10
|
+
declare class NotAnObjectError extends NotAnObjectError_base {}
|
|
11
|
+
declare const KeyNotFoundError_base: Schema.TaggedErrorClass<KeyNotFoundError, "KeyNotFoundError", {
|
|
12
|
+
readonly _tag: Schema.tag<"KeyNotFoundError">;
|
|
13
|
+
} & {
|
|
14
|
+
key: typeof Schema.String;
|
|
15
|
+
}>;
|
|
16
|
+
declare class KeyNotFoundError extends KeyNotFoundError_base {}
|
|
17
|
+
declare const NotAFunctionError_base: Schema.TaggedErrorClass<NotAFunctionError, "NotAFunctionError", {
|
|
18
|
+
readonly _tag: Schema.tag<"NotAFunctionError">;
|
|
19
|
+
} & {
|
|
20
|
+
key: typeof Schema.String;
|
|
21
|
+
actual: typeof Schema.Unknown;
|
|
22
|
+
}>;
|
|
23
|
+
declare class NotAFunctionError extends NotAFunctionError_base {}
|
|
24
|
+
declare const NotAConstructorError_base: Schema.TaggedErrorClass<NotAConstructorError, "NotAConstructorError", {
|
|
25
|
+
readonly _tag: Schema.tag<"NotAConstructorError">;
|
|
26
|
+
} & {
|
|
27
|
+
actual: typeof Schema.Unknown;
|
|
28
|
+
}>;
|
|
29
|
+
declare class NotAConstructorError extends NotAConstructorError_base {}
|
|
30
|
+
declare const PathTraversalError_base: Schema.TaggedErrorClass<PathTraversalError, "PathTraversalError", {
|
|
31
|
+
readonly _tag: Schema.tag<"PathTraversalError">;
|
|
32
|
+
} & {
|
|
33
|
+
path: typeof Schema.String;
|
|
34
|
+
key: typeof Schema.String;
|
|
35
|
+
current: typeof Schema.Unknown;
|
|
36
|
+
}>;
|
|
37
|
+
declare class PathTraversalError extends PathTraversalError_base {}
|
|
38
|
+
declare const EmptyPathError_base: Schema.TaggedErrorClass<EmptyPathError, "EmptyPathError", {
|
|
39
|
+
readonly _tag: Schema.tag<"EmptyPathError">;
|
|
40
|
+
} & {
|
|
41
|
+
path: typeof Schema.String;
|
|
42
|
+
}>;
|
|
43
|
+
declare class EmptyPathError extends EmptyPathError_base {}
|
|
44
|
+
declare const MethodNotFoundError_base: Schema.TaggedErrorClass<MethodNotFoundError, "MethodNotFoundError", {
|
|
45
|
+
readonly _tag: Schema.tag<"MethodNotFoundError">;
|
|
46
|
+
} & {
|
|
47
|
+
path: typeof Schema.String;
|
|
48
|
+
methodKey: typeof Schema.String;
|
|
49
|
+
actual: typeof Schema.Unknown;
|
|
50
|
+
}>;
|
|
51
|
+
declare class MethodNotFoundError extends MethodNotFoundError_base {}
|
|
52
|
+
declare const IndexOutOfBoundsError_base: Schema.TaggedErrorClass<IndexOutOfBoundsError, "IndexOutOfBoundsError", {
|
|
53
|
+
readonly _tag: Schema.tag<"IndexOutOfBoundsError">;
|
|
54
|
+
} & {
|
|
55
|
+
index: typeof Schema.Number;
|
|
56
|
+
length: typeof Schema.Number;
|
|
57
|
+
}>;
|
|
58
|
+
declare class IndexOutOfBoundsError extends IndexOutOfBoundsError_base {}
|
|
59
|
+
declare const NotAnArrayError_base: Schema.TaggedErrorClass<NotAnArrayError, "NotAnArrayError", {
|
|
60
|
+
readonly _tag: Schema.tag<"NotAnArrayError">;
|
|
61
|
+
} & {
|
|
62
|
+
actual: typeof Schema.Unknown;
|
|
63
|
+
}>;
|
|
64
|
+
declare class NotAnArrayError extends NotAnArrayError_base {}
|
|
65
|
+
declare const InvalidPathError_base: Schema.TaggedErrorClass<InvalidPathError, "InvalidPathError", {
|
|
66
|
+
readonly _tag: Schema.tag<"InvalidPathError">;
|
|
67
|
+
} & {
|
|
68
|
+
path: typeof Schema.Unknown;
|
|
69
|
+
}>;
|
|
70
|
+
declare class InvalidPathError extends InvalidPathError_base {}
|
|
71
|
+
declare const module: {
|
|
72
|
+
symbol: symbol;
|
|
73
|
+
get: (obj: unknown, key: string) => Effect.Effect<unknown, NotAnObjectError, never>;
|
|
74
|
+
"get-path": (obj: unknown, path: string) => Effect.Effect<unknown, NotAnObjectError | InvalidPathError | PathTraversalError | NotAnArrayError | IndexOutOfBoundsError | KeyNotFoundError, never>;
|
|
75
|
+
"json-stringify": (obj: unknown, replacer: Parameters<typeof JSON.stringify>[1], space: number) => Effect.Effect<string, NotAnObjectError, never>;
|
|
76
|
+
keys: (obj: unknown) => Effect.Effect<string[], _$effect_ParseResult0.ParseError, never>;
|
|
77
|
+
values: (obj: unknown) => Effect.Effect<unknown[], _$effect_ParseResult0.ParseError, never>;
|
|
78
|
+
new: (classRef: unknown, ...args: unknown[]) => Effect.Effect<unknown, NotAConstructorError, never>;
|
|
79
|
+
"get-method": (obj: unknown, key: unknown) => Effect.Effect<any, NotAnObjectError | NotAFunctionError, never>;
|
|
80
|
+
"call-method": (obj: unknown, key: unknown, ...args: unknown[]) => Effect.Effect<any, NotAFunctionError, never>;
|
|
81
|
+
"get-method-path": (obj: unknown, path: string) => Effect.Effect<(...args: unknown[]) => unknown, NotAnObjectError | InvalidPathError | PathTraversalError | EmptyPathError | MethodNotFoundError, never>;
|
|
82
|
+
"call-method-path": (obj: unknown, path: string, ...args: unknown[]) => Effect.Effect<unknown, NotAnObjectError | InvalidPathError | PathTraversalError | EmptyPathError | MethodNotFoundError, never>;
|
|
83
|
+
};
|
|
84
|
+
//#endregion
|
|
85
|
+
export { module };
|
|
86
|
+
//# sourceMappingURL=object.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.mts","names":[],"sources":["../../src/modules/object.ts"],"mappings":";;;;cAAsD,qBAAA;;;;;cAEhD,gBAAA,SAAyB,qBAAA;AAAA,cAEkB,qBAAA;;;;;cAE3C,gBAAA,SAAyB,qBAAA;AAAA,cAEc,sBAAA;;;;;;cAEvC,iBAAA,SAA0B,sBAAA;AAAA,cAEsC,yBAAA;;;;;cAEhE,oBAAA,SAA6B,yBAAA;AAAA,cAEkB,uBAAA;;;;;;;cAE/C,kBAAA,SAA2B,uBAAA;AAAA,cAM/B,mBAAA;;;;;cAEI,cAAA,SAAuB,mBAAA;AAAA,cAEe,wBAAA;;;;;;;cAEtC,mBAAA,SAA4B,wBAAA;AAAA,cAMhC,0BAAA;;;;;;cAEI,qBAAA,SAA8B,0BAAA;AAAA,cAKlC,oBAAA;;;;;cAEI,eAAA,SAAwB,oBAAA;AAAA,cAEkB,qBAAA;;;;;cAE1C,gBAAA,SAAyB,qBAAA;AAAA,cAkGlB,MAAA;;sBAGO,GAAA,aAAa,MAAA,CAAA,MAAA,UAAA,gBAAA;6BAQN,IAAA,aAAc,MAAA,CAAA,MAAA,UAAA,gBAAA,GAAA,gBAAA,GAAA,kBAAA,GAAA,eAAA,GAAA,qBAAA,GAAA,gBAAA;mCAyBzB,QAAA,EACF,UAAA,QAAkB,IAAA,CAAK,SAAA,MAAa,KAAA,aACjC,MAAA,CAAA,MAAA,SAAA,gBAAA;kDAAA,qBAAA,CAAA,UAAA;;8BAyBU,IAAA,gBAAoB,MAAA,CAAA,MAAA,UAAA,oBAAA;+BAUlB,GAAA,cAAc,MAAA,CAAA,MAAA,MAAA,gBAAA,GAAA,iBAAA;gCAgBb,GAAA,cAAc,IAAA,gBAAoB,MAAA,CAAA,MAAA,MAAA,iBAAA;oCAY9B,IAAA,aAAc,MAAA,CAAA,MAAA,KAAA,IAAA,yBA9Hf,gBAAA,GAAA,gBAAA,GAAA,kBAAA,GAAA,cAAA,GAAA,mBAAA;qCA6IE,IAAA,aAAc,IAAA,gBAAoB,MAAA,CAAA,MAAA,UAAA,gBAAA,GAAA,gBAAA,GAAA,kBAAA,GAAA,cAAA,GAAA,mBAAA;AAAA"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { Effect, Record, Schema, flow } from "effect";
|
|
2
|
+
//#region src/modules/object.ts
|
|
3
|
+
var NotAnObjectError = class extends Schema.TaggedError("NotAnObjectError")("NotAnObjectError", { actual: Schema.Unknown }) {};
|
|
4
|
+
var KeyNotFoundError = class extends Schema.TaggedError("KeyNotFoundError")("KeyNotFoundError", { key: Schema.String }) {};
|
|
5
|
+
var NotAFunctionError = class extends Schema.TaggedError("NotAFunctionError")("NotAFunctionError", {
|
|
6
|
+
key: Schema.String,
|
|
7
|
+
actual: Schema.Unknown
|
|
8
|
+
}) {};
|
|
9
|
+
var NotAConstructorError = class extends Schema.TaggedError("NotAConstructorError")("NotAConstructorError", { actual: Schema.Unknown }) {};
|
|
10
|
+
var PathTraversalError = class extends Schema.TaggedError("PathTraversalError")("PathTraversalError", {
|
|
11
|
+
path: Schema.String,
|
|
12
|
+
key: Schema.String,
|
|
13
|
+
current: Schema.Unknown
|
|
14
|
+
}) {};
|
|
15
|
+
var EmptyPathError = class extends Schema.TaggedError("EmptyPathError")("EmptyPathError", { path: Schema.String }) {};
|
|
16
|
+
var MethodNotFoundError = class extends Schema.TaggedError("MethodNotFoundError")("MethodNotFoundError", {
|
|
17
|
+
path: Schema.String,
|
|
18
|
+
methodKey: Schema.String,
|
|
19
|
+
actual: Schema.Unknown
|
|
20
|
+
}) {};
|
|
21
|
+
var IndexOutOfBoundsError = class extends Schema.TaggedError("IndexOutOfBoundsError")("IndexOutOfBoundsError", {
|
|
22
|
+
index: Schema.Number,
|
|
23
|
+
length: Schema.Number
|
|
24
|
+
}) {};
|
|
25
|
+
var NotAnArrayError = class extends Schema.TaggedError("NotAnArrayError")("NotAnArrayError", { actual: Schema.Unknown }) {};
|
|
26
|
+
var InvalidPathError = class extends Schema.TaggedError("InvalidPathError")("InvalidPathError", { path: Schema.Unknown }) {};
|
|
27
|
+
const NUMERIC_KEY_REGEX = /^\d+$/;
|
|
28
|
+
const isNumericKey = (key) => NUMERIC_KEY_REGEX.test(key);
|
|
29
|
+
const getValueAtKey = (current, key) => {
|
|
30
|
+
if (Array.isArray(current) && isNumericKey(key)) return current[Number.parseInt(key, 10)];
|
|
31
|
+
return current[key];
|
|
32
|
+
};
|
|
33
|
+
const validateKeyExists = (current, key) => Effect.gen(function* () {
|
|
34
|
+
if (!Array.isArray(current) && isNumericKey(key)) return yield* new NotAnArrayError({ actual: current });
|
|
35
|
+
const index = isNumericKey(key) ? Number.parseInt(key, 10) : -1;
|
|
36
|
+
if (Array.isArray(current) && index >= 0) {
|
|
37
|
+
if (index >= current.length) return yield* new IndexOutOfBoundsError({
|
|
38
|
+
index,
|
|
39
|
+
length: current.length
|
|
40
|
+
});
|
|
41
|
+
} else if (!(key in current)) return yield* new KeyNotFoundError({ key });
|
|
42
|
+
});
|
|
43
|
+
const traversePath = (obj, path, keys) => Effect.gen(function* () {
|
|
44
|
+
let current = obj;
|
|
45
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
46
|
+
const key = keys[i];
|
|
47
|
+
if (key === void 0) return yield* new PathTraversalError({
|
|
48
|
+
path,
|
|
49
|
+
key: String(i),
|
|
50
|
+
current
|
|
51
|
+
});
|
|
52
|
+
if (typeof current !== "object" || current === null) return yield* new PathTraversalError({
|
|
53
|
+
path,
|
|
54
|
+
key: String(key),
|
|
55
|
+
current
|
|
56
|
+
});
|
|
57
|
+
if (!(key in current)) return yield* new PathTraversalError({
|
|
58
|
+
path,
|
|
59
|
+
key: String(key),
|
|
60
|
+
current
|
|
61
|
+
});
|
|
62
|
+
current = getValueAtKey(current, key);
|
|
63
|
+
}
|
|
64
|
+
return current;
|
|
65
|
+
});
|
|
66
|
+
const getMethodFromObject = (obj, methodKey, path) => Effect.gen(function* () {
|
|
67
|
+
if (methodKey === void 0 || methodKey === "") return yield* new EmptyPathError({ path });
|
|
68
|
+
if (typeof obj !== "object" || obj === null) return yield* new PathTraversalError({
|
|
69
|
+
path,
|
|
70
|
+
key: String(methodKey),
|
|
71
|
+
current: obj
|
|
72
|
+
});
|
|
73
|
+
const method = obj[methodKey];
|
|
74
|
+
if (typeof method !== "function") return yield* new MethodNotFoundError({
|
|
75
|
+
path,
|
|
76
|
+
methodKey: String(methodKey),
|
|
77
|
+
actual: method
|
|
78
|
+
});
|
|
79
|
+
return method;
|
|
80
|
+
});
|
|
81
|
+
const module = {
|
|
82
|
+
symbol: Symbol("object"),
|
|
83
|
+
get: (obj, key) => Effect.gen(function* () {
|
|
84
|
+
if (typeof obj !== "object" || obj === null) return yield* new NotAnObjectError({ actual: obj });
|
|
85
|
+
return obj[key];
|
|
86
|
+
}),
|
|
87
|
+
"get-path": (obj, path) => Effect.gen(function* () {
|
|
88
|
+
if (typeof obj !== "object" || obj === null) return yield* new NotAnObjectError({ actual: obj });
|
|
89
|
+
if (typeof path !== "string") return yield* new InvalidPathError({ path });
|
|
90
|
+
const keys = path.split(".");
|
|
91
|
+
let current = obj;
|
|
92
|
+
for (const key of keys) {
|
|
93
|
+
if (typeof current !== "object" || current === null) return yield* new PathTraversalError({
|
|
94
|
+
path,
|
|
95
|
+
key: String(key),
|
|
96
|
+
current
|
|
97
|
+
});
|
|
98
|
+
yield* validateKeyExists(current, key);
|
|
99
|
+
current = getValueAtKey(current, key);
|
|
100
|
+
}
|
|
101
|
+
return current;
|
|
102
|
+
}),
|
|
103
|
+
"json-stringify": (obj, replacer, space) => Effect.gen(function* () {
|
|
104
|
+
if (typeof obj !== "object" || obj === null) return yield* new NotAnObjectError({ actual: obj });
|
|
105
|
+
return JSON.stringify(obj, replacer, space);
|
|
106
|
+
}),
|
|
107
|
+
keys: flow((obj) => obj, Schema.decodeUnknown(Schema.Record({
|
|
108
|
+
key: Schema.String,
|
|
109
|
+
value: Schema.Unknown
|
|
110
|
+
})), Effect.map(Record.keys)),
|
|
111
|
+
values: flow((obj) => obj, Schema.decodeUnknown(Schema.Record({
|
|
112
|
+
key: Schema.String,
|
|
113
|
+
value: Schema.Unknown
|
|
114
|
+
})), Effect.map(Record.values)),
|
|
115
|
+
"new": (classRef, ...args) => Effect.gen(function* () {
|
|
116
|
+
if (typeof classRef !== "function") return yield* new NotAConstructorError({ actual: classRef });
|
|
117
|
+
return new classRef(...args);
|
|
118
|
+
}),
|
|
119
|
+
"get-method": (obj, key) => Effect.gen(function* () {
|
|
120
|
+
if (typeof obj !== "object" || obj === null) return yield* new NotAnObjectError({ actual: obj });
|
|
121
|
+
const method = obj[key];
|
|
122
|
+
if (typeof method !== "function") return yield* new NotAFunctionError({
|
|
123
|
+
key,
|
|
124
|
+
actual: method
|
|
125
|
+
});
|
|
126
|
+
return method.bind(obj);
|
|
127
|
+
}),
|
|
128
|
+
"call-method": (obj, key, ...args) => Effect.gen(function* () {
|
|
129
|
+
const method = obj[key];
|
|
130
|
+
if (typeof method !== "function") return yield* new NotAFunctionError({
|
|
131
|
+
key,
|
|
132
|
+
actual: method
|
|
133
|
+
});
|
|
134
|
+
return method.apply(obj, args);
|
|
135
|
+
}),
|
|
136
|
+
"get-method-path": (obj, path) => Effect.gen(function* () {
|
|
137
|
+
if (typeof obj !== "object" || obj === null) return yield* new NotAnObjectError({ actual: obj });
|
|
138
|
+
if (typeof path !== "string") return yield* new InvalidPathError({ path });
|
|
139
|
+
const keys = path.split(".");
|
|
140
|
+
const targetObj = yield* traversePath(obj, path, keys);
|
|
141
|
+
return (yield* getMethodFromObject(targetObj, keys.at(-1) ?? "", path)).bind(targetObj);
|
|
142
|
+
}),
|
|
143
|
+
"call-method-path": (obj, path, ...args) => Effect.gen(function* () {
|
|
144
|
+
if (typeof obj !== "object" || obj === null) return yield* new NotAnObjectError({ actual: obj });
|
|
145
|
+
if (typeof path !== "string") return yield* new InvalidPathError({ path });
|
|
146
|
+
const keys = path.split(".");
|
|
147
|
+
const targetObj = yield* traversePath(obj, path, keys);
|
|
148
|
+
return (yield* getMethodFromObject(targetObj, keys.at(-1) ?? "", path)).apply(targetObj, args);
|
|
149
|
+
})
|
|
150
|
+
};
|
|
151
|
+
//#endregion
|
|
152
|
+
export { module };
|
|
153
|
+
|
|
154
|
+
//# sourceMappingURL=object.mjs.map
|