@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.
Files changed (119) hide show
  1. package/README.md +15 -0
  2. package/dist/environment-k2Uf6VVc.d.mts +25 -0
  3. package/dist/environment-k2Uf6VVc.d.mts.map +1 -0
  4. package/dist/errors/evaluation.d.mts +2 -0
  5. package/dist/errors/evaluation.mjs +9 -0
  6. package/dist/errors/evaluation.mjs.map +1 -0
  7. package/dist/evaluate-D7ODMrbg.mjs +84 -0
  8. package/dist/evaluate-D7ODMrbg.mjs.map +1 -0
  9. package/dist/evaluation/base-forms/array.d.mts +11 -0
  10. package/dist/evaluation/base-forms/array.d.mts.map +1 -0
  11. package/dist/evaluation/base-forms/array.mjs +2 -0
  12. package/dist/evaluation/base-forms/primitive.d.mts +10 -0
  13. package/dist/evaluation/base-forms/primitive.d.mts.map +1 -0
  14. package/dist/evaluation/base-forms/primitive.mjs +10 -0
  15. package/dist/evaluation/base-forms/primitive.mjs.map +1 -0
  16. package/dist/evaluation/base-forms/record.d.mts +13 -0
  17. package/dist/evaluation/base-forms/record.d.mts.map +1 -0
  18. package/dist/evaluation/base-forms/record.mjs +2 -0
  19. package/dist/evaluation/environment.d.mts +12 -0
  20. package/dist/evaluation/environment.d.mts.map +1 -0
  21. package/dist/evaluation/environment.mjs +19 -0
  22. package/dist/evaluation/environment.mjs.map +1 -0
  23. package/dist/evaluation/evaluate.d.mts +12 -0
  24. package/dist/evaluation/evaluate.d.mts.map +1 -0
  25. package/dist/evaluation/evaluate.mjs +2 -0
  26. package/dist/evaluation/special-forms/begin.d.mts +11 -0
  27. package/dist/evaluation/special-forms/begin.d.mts.map +1 -0
  28. package/dist/evaluation/special-forms/begin.mjs +2 -0
  29. package/dist/evaluation/special-forms/cond.d.mts +11 -0
  30. package/dist/evaluation/special-forms/cond.d.mts.map +1 -0
  31. package/dist/evaluation/special-forms/cond.mjs +2 -0
  32. package/dist/evaluation/special-forms/define.d.mts +11 -0
  33. package/dist/evaluation/special-forms/define.d.mts.map +1 -0
  34. package/dist/evaluation/special-forms/define.mjs +2 -0
  35. package/dist/evaluation/special-forms/eval.d.mts +11 -0
  36. package/dist/evaluation/special-forms/eval.d.mts.map +1 -0
  37. package/dist/evaluation/special-forms/eval.mjs +2 -0
  38. package/dist/evaluation/special-forms/function.d.mts +11 -0
  39. package/dist/evaluation/special-forms/function.d.mts.map +1 -0
  40. package/dist/evaluation/special-forms/function.mjs +2 -0
  41. package/dist/evaluation/special-forms/lambda.d.mts +11 -0
  42. package/dist/evaluation/special-forms/lambda.d.mts.map +1 -0
  43. package/dist/evaluation/special-forms/lambda.mjs +2 -0
  44. package/dist/evaluation/special-forms/match.d.mts +11 -0
  45. package/dist/evaluation/special-forms/match.d.mts.map +1 -0
  46. package/dist/evaluation/special-forms/match.mjs +2 -0
  47. package/dist/evaluation/special-forms/quote.d.mts +11 -0
  48. package/dist/evaluation/special-forms/quote.d.mts.map +1 -0
  49. package/dist/evaluation/special-forms/quote.mjs +7 -0
  50. package/dist/evaluation/special-forms/quote.mjs.map +1 -0
  51. package/dist/evaluation-AblffSQw.d.mts +17 -0
  52. package/dist/evaluation-AblffSQw.d.mts.map +1 -0
  53. package/dist/evaluation-EqzK8tQV.d.mts +13 -0
  54. package/dist/evaluation-EqzK8tQV.d.mts.map +1 -0
  55. package/dist/evaluation-uwZSKxIf.d.mts +10 -0
  56. package/dist/evaluation-uwZSKxIf.d.mts.map +1 -0
  57. package/dist/json-primitive-DUaaoNff.d.mts +8 -0
  58. package/dist/json-primitive-DUaaoNff.d.mts.map +1 -0
  59. package/dist/lion-expression-6Y3itx9l.d.mts +16 -0
  60. package/dist/lion-expression-6Y3itx9l.d.mts.map +1 -0
  61. package/dist/modules/array.d.mts +19 -0
  62. package/dist/modules/array.d.mts.map +1 -0
  63. package/dist/modules/array.mjs +23 -0
  64. package/dist/modules/array.mjs.map +1 -0
  65. package/dist/modules/boolean.d.mts +17 -0
  66. package/dist/modules/boolean.d.mts.map +1 -0
  67. package/dist/modules/boolean.mjs +17 -0
  68. package/dist/modules/boolean.mjs.map +1 -0
  69. package/dist/modules/console.d.mts +10 -0
  70. package/dist/modules/console.d.mts.map +1 -0
  71. package/dist/modules/console.mjs +10 -0
  72. package/dist/modules/console.mjs.map +1 -0
  73. package/dist/modules/func.d.mts +13 -0
  74. package/dist/modules/func.d.mts.map +1 -0
  75. package/dist/modules/func.mjs +28 -0
  76. package/dist/modules/func.mjs.map +1 -0
  77. package/dist/modules/index.d.mts +8 -0
  78. package/dist/modules/index.d.mts.map +1 -0
  79. package/dist/modules/index.mjs +31 -0
  80. package/dist/modules/index.mjs.map +1 -0
  81. package/dist/modules/lib/shared.d.mts +9 -0
  82. package/dist/modules/lib/shared.d.mts.map +1 -0
  83. package/dist/modules/lib/shared.mjs +7 -0
  84. package/dist/modules/lib/shared.mjs.map +1 -0
  85. package/dist/modules/number.d.mts +19 -0
  86. package/dist/modules/number.d.mts.map +1 -0
  87. package/dist/modules/number.mjs +19 -0
  88. package/dist/modules/number.mjs.map +1 -0
  89. package/dist/modules/object.d.mts +86 -0
  90. package/dist/modules/object.d.mts.map +1 -0
  91. package/dist/modules/object.mjs +154 -0
  92. package/dist/modules/object.mjs.map +1 -0
  93. package/dist/modules/string.d.mts +18 -0
  94. package/dist/modules/string.d.mts.map +1 -0
  95. package/dist/modules/string.mjs +17 -0
  96. package/dist/modules/string.mjs.map +1 -0
  97. package/dist/modules/value.d.mts +19 -0
  98. package/dist/modules/value.d.mts.map +1 -0
  99. package/dist/modules/value.mjs +19 -0
  100. package/dist/modules/value.mjs.map +1 -0
  101. package/dist/schemas/environment.d.mts +2 -0
  102. package/dist/schemas/environment.mjs +14 -0
  103. package/dist/schemas/environment.mjs.map +1 -0
  104. package/dist/schemas/evaluation.d.mts +24 -0
  105. package/dist/schemas/evaluation.d.mts.map +1 -0
  106. package/dist/schemas/evaluation.mjs +38 -0
  107. package/dist/schemas/evaluation.mjs.map +1 -0
  108. package/dist/schemas/json-primitive.d.mts +2 -0
  109. package/dist/schemas/json-primitive.mjs +7 -0
  110. package/dist/schemas/json-primitive.mjs.map +1 -0
  111. package/dist/schemas/lion-expression.d.mts +2 -0
  112. package/dist/schemas/lion-expression.mjs +14 -0
  113. package/dist/schemas/lion-expression.mjs.map +1 -0
  114. package/dist/services/evaluation.d.mts +2 -0
  115. package/dist/services/evaluation.mjs +8 -0
  116. package/dist/services/evaluation.mjs.map +1 -0
  117. package/dist/types/evaluation.d.mts +2 -0
  118. package/dist/types/evaluation.mjs +1 -0
  119. 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,7 @@
1
+ import { Schema } from "effect";
2
+ //#region src/modules/lib/shared.ts
3
+ const decode = (s) => (u) => Schema.decodeUnknown(s)(u);
4
+ //#endregion
5
+ export { decode };
6
+
7
+ //# sourceMappingURL=shared.mjs.map
@@ -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