effect-app 0.189.0 → 0.190.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 0.190.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 790bfc2: cleanup
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [790bfc2]
12
+ - @effect-app/fluent-extensions@0.152.0
13
+ - @effect-app/core@0.157.0
14
+ - @effect-app/schema@0.210.2
15
+
16
+ ## 0.189.1
17
+
18
+ ### Patch Changes
19
+
20
+ - 0334285: update packages
21
+ - Updated dependencies [0334285]
22
+ - Updated dependencies [b9f35eb]
23
+ - @effect-app/fluent-extensions@0.151.0
24
+ - @effect-app/schema@0.210.1
25
+ - @effect-app/core@0.156.1
26
+
3
27
  ## 0.189.0
4
28
 
5
29
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "0.189.0",
3
+ "version": "0.190.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -13,26 +13,25 @@
13
13
  "ts-pattern": "^5.0.8",
14
14
  "uuid": "^9.0.1",
15
15
  "validator": "^13.11.0",
16
- "@effect-app/core": "0.156.0",
17
- "@effect-app/schema": "0.210.0",
18
- "@effect-app/fluent-extensions": "0.150.0"
16
+ "@effect-app/core": "0.157.0",
17
+ "@effect-app/fluent-extensions": "0.152.0",
18
+ "@effect-app/schema": "0.210.2"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@babel/cli": "^7.23.9",
22
22
  "@faker-js/faker": "^8.4.1",
23
- "@types/node": "~20.11.27",
23
+ "@types/node": "~20.11.28",
24
24
  "@types/uuid": "^9.0.8",
25
25
  "@types/validator": "^13.11.9",
26
26
  "fast-check": "~3.16.0",
27
27
  "ts-node": "^10.9.2",
28
28
  "typescript": "^5.4.2",
29
- "vitest": "^1.3.1"
29
+ "vitest": "^1.4.0"
30
30
  },
31
31
  "peerDependencies": {
32
- "@effect/platform": "^0.48.7",
32
+ "@effect/platform": "^0.48.8",
33
33
  "effect": "^2.4.7",
34
- "@effect/schema": "^0.64.4",
35
- "@fp-ts/optic": "0.22.0"
34
+ "@effect/schema": "^0.64.5"
36
35
  },
37
36
  "typesVersions": {
38
37
  "*": {
@@ -232,16 +231,6 @@
232
231
  "default": "./_cjs/lib.cjs"
233
232
  }
234
233
  },
235
- "./refinements": {
236
- "import": {
237
- "types": "./dist/refinements.d.ts",
238
- "default": "./dist/refinements.js"
239
- },
240
- "require": {
241
- "types": "./dist/refinements.d.ts",
242
- "default": "./_cjs/refinements.cjs"
243
- }
244
- },
245
234
  "./schema": {
246
235
  "import": {
247
236
  "types": "./dist/schema.d.ts",
@@ -0,0 +1,33 @@
1
+ // packages/prelude/vitest.config.ts
2
+ import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.1.5_@types+node@20.11.25/node_modules/vite/dist/node/index.js";
3
+
4
+ // vite.config.base.ts
5
+ import path from "path";
6
+ import fs from "fs";
7
+ var __vite_injected_original_dirname = "/Users/patrickroza/pj/effect-app/libs";
8
+ function makeConfig(dirName) {
9
+ const prefix = path.resolve(__vite_injected_original_dirname, "packages");
10
+ const packages = fs.readdirSync(prefix).map((f) => prefix + "/" + f).filter((f) => fs.lstatSync(f).isDirectory());
11
+ const cfg = {
12
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
13
+ //plugins: [autoImport],
14
+ test: {
15
+ include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
16
+ reporters: "verbose",
17
+ globals: true
18
+ },
19
+ resolve: packages.reduce((acc, cur) => {
20
+ acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, "src");
21
+ return acc;
22
+ }, {})
23
+ };
24
+ return cfg;
25
+ }
26
+
27
+ // packages/prelude/vitest.config.ts
28
+ var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/prelude";
29
+ var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
30
+ export {
31
+ vitest_config_default as default
32
+ };
33
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvcHJlbHVkZS92aXRlc3QuY29uZmlnLnRzIiwgInZpdGUuY29uZmlnLmJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3BhY2thZ2VzL3ByZWx1ZGVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvcHJlbHVkZS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvcHJlbHVkZS92aXRlc3QuY29uZmlnLnRzXCI7Ly8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ2aXRlc3RcIiAvPlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVcIlxuaW1wb3J0IG1ha2VDb25maWcgZnJvbSBcIi4uLy4uL3ZpdGUuY29uZmlnLmJhc2VcIlxuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcobWFrZUNvbmZpZyhfX2Rpcm5hbWUpKVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3ZpdGUuY29uZmlnLmJhc2UudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Ly8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ2aXRlc3RcIiAvPlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tIFwidW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZVwiXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZXN0L2NvbmZpZ1wiXG5cbi8vIGNvbnN0IGF1dG9JbXBvcnQgPSBBdXRvSW1wb3J0KHtcbi8vICAgZHRzOiBcIi4vdGVzdC9hdXRvLWltcG9ydHMuZC50c1wiLFxuLy8gICAvLyBpbmNsdWRlOiBbXG4vLyAgIC8vICAgL1xcLnRlc3RcXC5bdGpdc3g/JC8gLy8gLnRzLCAudHN4LCAuanMsIC5qc3hcbi8vICAgLy8gXSxcbi8vICAgaW1wb3J0czogW1xuLy8gICAgIFwidml0ZXN0XCJcbi8vICAgXVxuLy8gfSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFrZUNvbmZpZyhkaXJOYW1lPzogc3RyaW5nKSB7XG4gIGNvbnN0IHByZWZpeCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwicGFja2FnZXNcIilcbiAgY29uc3QgcGFja2FnZXMgPSBmcy5yZWFkZGlyU3luYyhwcmVmaXgpLm1hcChmID0+IHByZWZpeCArIFwiL1wiICsgZikuZmlsdGVyKGYgPT4gZnMubHN0YXRTeW5jKGYpLmlzRGlyZWN0b3J5KCkgKVxuICBjb25zdCBjZmcgPSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAvL3BsdWdpbnM6IFthdXRvSW1wb3J0XSxcbiAgICB0ZXN0OiB7XG4gICAgICBpbmNsdWRlOiAgW1wiLi90ZXN0LyoqLyoudGVzdC57anMsbWpzLGNqcyx0cyxtdHMsY3RzLGpzeCx0c3h9XCJdLFxuICAgICAgcmVwb3J0ZXJzOiBcInZlcmJvc2VcIixcbiAgICAgIGdsb2JhbHM6IHRydWVcbiAgICB9LFxuICAgIHJlc29sdmU6IHBhY2thZ2VzLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcbiAgICAgIGFjY1tKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjdXIgKyBcIi9wYWNrYWdlLmpzb25cIiwgXCJ1dGYtOFwiKSkubmFtZV0gPSBwYXRoLnJlc29sdmUoY3VyLCBcInNyY1wiKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIHt9KVxuICB9XG4gIC8vY29uc29sZS5sb2coY2ZnKVxuICByZXR1cm4gY2ZnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixPQUFPLFVBQVU7QUFDakIsT0FBTyxRQUFRO0FBRmYsSUFBTSxtQ0FBbUM7QUFnQjFCLFNBQVIsV0FBNEIsU0FBa0I7QUFDbkQsUUFBTSxTQUFTLEtBQUssUUFBUSxrQ0FBVyxVQUFVO0FBQ2pELFFBQU0sV0FBVyxHQUFHLFlBQVksTUFBTSxFQUFFLElBQUksT0FBSyxTQUFTLE1BQU0sQ0FBQyxFQUFFLE9BQU8sT0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBRTtBQUM3RyxRQUFNLE1BQU07QUFBQTtBQUFBO0FBQUEsSUFHVixNQUFNO0FBQUEsTUFDSixTQUFVLENBQUMsa0RBQWtEO0FBQUEsTUFDN0QsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLElBQ1g7QUFBQSxJQUNBLFNBQVMsU0FBUyxPQUFPLENBQUMsS0FBSyxRQUFRO0FBQ3JDLFVBQUksS0FBSyxNQUFNLEdBQUcsYUFBYSxNQUFNLGlCQUFpQixPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxRQUFRLEtBQUssS0FBSztBQUMvRixhQUFPO0FBQUEsSUFDVCxHQUFHLENBQUMsQ0FBQztBQUFBLEVBQ1A7QUFFQSxTQUFPO0FBQ1Q7OztBRGxDQSxJQUFNQSxvQ0FBbUM7QUFJekMsSUFBTyx3QkFBUSxhQUFhLFdBQVdDLGlDQUFTLENBQUM7IiwKICAibmFtZXMiOiBbIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIl0KfQo=
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.as = as;
7
- exports.asCollectable = asCollectable;
8
- exports.asOption = asOption;
9
- exports.makeAwesome = makeAwesome;
10
- exports.makeAwesomeCollect = makeAwesomeCollect;
11
- var _core = require("@effect-app/core");
12
- var Optic = _interopRequireWildcard(require("@effect-app/core/Optic"));
13
- var _client = require("./client.cjs");
14
- var _utils = require("./utils.cjs");
15
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
- /* eslint-disable @typescript-eslint/no-explicit-any */
18
-
19
- /**
20
- * @tsplus getter function asCollectable
21
- */
22
- function asCollectable(refinement) {
23
- return _core.Option.liftPredicate(refinement);
24
- }
25
- /**
26
- * @tsplus fluent function as
27
- */
28
- function as(refinement, name) {
29
- return (0, _core.flow)(asCollectable(refinement), _ => _core.Either.fromOption(_, () => new _client.InvalidStateError(`Cannot be ${name}`)));
30
- }
31
- /**
32
- * @tsplus fluent function refinements
33
- */
34
- function makeAwesome(refinement, name) {
35
- const _as = as(refinement, name);
36
- const validate = {
37
- is: refinement,
38
- collect: asCollectable(refinement),
39
- as: _as,
40
- lens: Optic.id()
41
- };
42
- function validatei(item) {
43
- return {
44
- get collect() {
45
- return validate.collect(item);
46
- },
47
- get as() {
48
- return validate.as(item);
49
- }
50
- };
51
- }
52
- return {
53
- ...validate,
54
- $item: validatei
55
- };
56
- }
57
- /**
58
- * @tsplus fluent function as
59
- */
60
- function asOption(collect, name) {
61
- return (0, _core.flow)(collect, _core.Either.fromOption(() => new _client.InvalidStateError({
62
- message: `Cannot be ${name}`
63
- })));
64
- }
65
- /**
66
- * @tsplus fluent function refinements
67
- */
68
- function makeAwesomeCollect(collect, name) {
69
- const _as = asOption(collect, name);
70
- function is(item) {
71
- return _core.Option.isSome(collect(item));
72
- }
73
- const validate = {
74
- collect,
75
- is,
76
- as: _as,
77
- lens: Optic.id(),
78
- copy: (item, _copy) => (0, _utils.copy)(item, _copy),
79
- clone: (item, cloned) => (0, _utils.clone)(item, cloned)
80
- };
81
- function validatei(item) {
82
- return {
83
- get collect() {
84
- return validate.collect(item);
85
- },
86
- get as() {
87
- return validate.as(item);
88
- }
89
- };
90
- }
91
- return {
92
- ...validate,
93
- $item: validatei
94
- };
95
- }
96
- //# sourceMappingURL=refinements.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refinements.cjs","names":["_core","require","Optic","_interopRequireWildcard","_client","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","asCollectable","refinement","Option","liftPredicate","as","name","flow","_","Either","fromOption","InvalidStateError","makeAwesome","_as","validate","is","collect","lens","id","validatei","item","$item","asOption","message","makeAwesomeCollect","isSome","copy","_copy","clone","cloned"],"sources":["../src/refinements.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { Either, type Equal, Option } from "@effect-app/core";
2
- import type { Refinement } from "@effect-app/core/Function";
3
- import * as Optic from "@effect-app/core/Optic";
4
- import type { Clone } from "@fp-ts/optic";
5
- import { InvalidStateError } from "./client.js";
6
- /**
7
- * @tsplus getter function asCollectable
8
- */
9
- export declare function asCollectable<T, T2 extends T>(refinement: Refinement<T, T2>): (a: T) => Option.Option<T2>;
10
- /**
11
- * @tsplus fluent function as
12
- */
13
- export declare function as<T, T2 extends T>(refinement: Refinement<T, T2>, name: string): (a: T) => Either.Either<T2, InvalidStateError>;
14
- /**
15
- * @tsplus fluent function refinements
16
- */
17
- export declare function makeAwesome<T, T2 extends T>(refinement: Refinement<T, T2>, name: string): {
18
- $item: (item: T) => {
19
- readonly collect: Option.Option<T2>;
20
- readonly as: Either.Either<T2, InvalidStateError>;
21
- };
22
- is: Refinement<T, T2>;
23
- collect: (a: T) => Option.Option<T2>;
24
- as: (a: T) => Either.Either<T2, InvalidStateError>;
25
- lens: Optic.Iso<T2, T2>;
26
- };
27
- export interface Collect<A, B extends A> {
28
- (a: A): Option<B>;
29
- }
30
- /**
31
- * @tsplus fluent function as
32
- */
33
- export declare function asOption<T, T2 extends T>(collect: Collect<T, T2>, name: string): (a: T) => Either.Either<T2, InvalidStateError>;
34
- /**
35
- * @tsplus fluent function refinements
36
- */
37
- export declare function makeAwesomeCollect<T extends Object, T2 extends T>(collect: Collect<T, T2>, name: string): {
38
- $item: (item: T) => {
39
- readonly collect: Option<T2>;
40
- readonly as: Either.Either<T2, InvalidStateError>;
41
- };
42
- collect: Collect<T, T2>;
43
- is: (item: T) => item is T2;
44
- as: (a: T) => Either.Either<T2, InvalidStateError>;
45
- lens: Optic.Iso<T2, T2>;
46
- copy: (item: T2, _copy: Partial<Omit<T2, keyof Clone | keyof Equal>>) => Omit<T2, typeof Optic.cloneTrait | keyof Equal.Equal>;
47
- clone: (item: T, cloned: T) => T;
48
- };
49
- export type GetCollectedType<T> = T extends {
50
- collect: Collect<any, infer U>;
51
- } ? U : never;
52
- //# sourceMappingURL=refinements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refinements.d.ts","sourceRoot":"","sources":["../src/refinements.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAQ,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,wBAAwB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,+BAE3E;AAED;;GAEG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,kDAK9E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM;kBAQ7D,CAAC;;;;;;;;EAc3B;AAGD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;IACrC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;CAClB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,kDAE9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM;kBAa7E,CAAC;;;;;eAXR,CAAC;;;iBAQJ,EAAE,SAAS,QAAQ,KAAK,EAAE,EAAE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC;kBACtD,CAAC,UAAU,CAAC;EAgB7B;AACD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA"}
@@ -1,81 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Either, flow, Option } from "@effect-app/core";
3
- import * as Optic from "@effect-app/core/Optic";
4
- import { InvalidStateError } from "./client.js";
5
- import { clone, copy } from "./utils.js";
6
- /**
7
- * @tsplus getter function asCollectable
8
- */
9
- export function asCollectable(refinement) {
10
- return Option.liftPredicate(refinement);
11
- }
12
- /**
13
- * @tsplus fluent function as
14
- */
15
- export function as(refinement, name) {
16
- return flow(asCollectable(refinement), (_) => Either.fromOption(_, () => new InvalidStateError(`Cannot be ${name}`)));
17
- }
18
- /**
19
- * @tsplus fluent function refinements
20
- */
21
- export function makeAwesome(refinement, name) {
22
- const _as = as(refinement, name);
23
- const validate = {
24
- is: refinement,
25
- collect: asCollectable(refinement),
26
- as: _as,
27
- lens: Optic.id()
28
- };
29
- function validatei(item) {
30
- return {
31
- get collect() {
32
- return validate.collect(item);
33
- },
34
- get as() {
35
- return validate.as(item);
36
- }
37
- };
38
- }
39
- return {
40
- ...validate,
41
- $item: validatei
42
- };
43
- }
44
- /**
45
- * @tsplus fluent function as
46
- */
47
- export function asOption(collect, name) {
48
- return flow(collect, Either.fromOption(() => new InvalidStateError({ message: `Cannot be ${name}` })));
49
- }
50
- /**
51
- * @tsplus fluent function refinements
52
- */
53
- export function makeAwesomeCollect(collect, name) {
54
- const _as = asOption(collect, name);
55
- function is(item) {
56
- return Option.isSome(collect(item));
57
- }
58
- const validate = {
59
- collect,
60
- is,
61
- as: _as,
62
- lens: Optic.id(),
63
- copy: (item, _copy) => copy(item, _copy),
64
- clone: (item, cloned) => clone(item, cloned)
65
- };
66
- function validatei(item) {
67
- return {
68
- get collect() {
69
- return validate.collect(item);
70
- },
71
- get as() {
72
- return validate.as(item);
73
- }
74
- };
75
- }
76
- return {
77
- ...validate,
78
- $item: validatei
79
- };
80
- }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmaW5lbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVmaW5lbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQWMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRW5FLE9BQU8sS0FBSyxLQUFLLE1BQU0sd0JBQXdCLENBQUE7QUFFL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBa0IsVUFBNkI7SUFDMUUsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxFQUFFLENBQWtCLFVBQTZCLEVBQUUsSUFBWTtJQUM3RSxPQUFPLElBQUksQ0FDVCxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQ3pCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUM5RSxDQUFBO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBa0IsVUFBNkIsRUFBRSxJQUFZO0lBQ3RGLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDaEMsTUFBTSxRQUFRLEdBQUc7UUFDZixFQUFFLEVBQUUsVUFBVTtRQUNkLE9BQU8sRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ2xDLEVBQUUsRUFBRSxHQUFHO1FBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQU07S0FDckIsQ0FBQTtJQUNELFNBQVMsU0FBUyxDQUFDLElBQU87UUFDeEIsT0FBTztZQUNMLElBQUksT0FBTztnQkFDVCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDL0IsQ0FBQztZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDMUIsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTztRQUNMLEdBQUcsUUFBUTtRQUNYLEtBQUssRUFBRSxTQUFTO0tBQ2pCLENBQUE7QUFDSCxDQUFDO0FBT0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFrQixPQUF1QixFQUFFLElBQVk7SUFDN0UsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDeEcsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFpQyxPQUF1QixFQUFFLElBQVk7SUFDdEcsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNuQyxTQUFTLEVBQUUsQ0FBQyxJQUFPO1FBQ2pCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUc7UUFDZixPQUFPO1FBQ1AsRUFBRTtRQUNGLEVBQUUsRUFBRSxHQUFHO1FBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQU07UUFDcEIsSUFBSSxFQUFFLENBQUMsSUFBUSxFQUFFLEtBQW1ELEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1FBQzFGLEtBQUssRUFBRSxDQUFDLElBQU8sRUFBRSxNQUFTLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0tBQ25ELENBQUE7SUFDRCxTQUFTLFNBQVMsQ0FBQyxJQUFPO1FBQ3hCLE9BQU87WUFDTCxJQUFJLE9BQU87Z0JBQ1QsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9CLENBQUM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzFCLENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELE9BQU87UUFDTCxHQUFHLFFBQVE7UUFDWCxLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFBO0FBQ0gsQ0FBQyJ9
@@ -1,96 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Either, type Equal, flow, Option } from "@effect-app/core"
3
- import type { Refinement } from "@effect-app/core/Function"
4
- import * as Optic from "@effect-app/core/Optic"
5
- import type { Clone } from "@fp-ts/optic"
6
- import { InvalidStateError } from "./client.js"
7
- import { clone, copy } from "./utils.js"
8
-
9
- /**
10
- * @tsplus getter function asCollectable
11
- */
12
- export function asCollectable<T, T2 extends T>(refinement: Refinement<T, T2>) {
13
- return Option.liftPredicate(refinement)
14
- }
15
-
16
- /**
17
- * @tsplus fluent function as
18
- */
19
- export function as<T, T2 extends T>(refinement: Refinement<T, T2>, name: string) {
20
- return flow(
21
- asCollectable(refinement),
22
- (_) => Either.fromOption(_, () => new InvalidStateError(`Cannot be ${name}`))
23
- )
24
- }
25
-
26
- /**
27
- * @tsplus fluent function refinements
28
- */
29
- export function makeAwesome<T, T2 extends T>(refinement: Refinement<T, T2>, name: string) {
30
- const _as = as(refinement, name)
31
- const validate = {
32
- is: refinement,
33
- collect: asCollectable(refinement),
34
- as: _as,
35
- lens: Optic.id<T2>()
36
- }
37
- function validatei(item: T) {
38
- return {
39
- get collect() {
40
- return validate.collect(item)
41
- },
42
- get as() {
43
- return validate.as(item)
44
- }
45
- }
46
- }
47
- return {
48
- ...validate,
49
- $item: validatei
50
- }
51
- }
52
-
53
- // The idea is that such refinements are dynamic
54
- export interface Collect<A, B extends A> {
55
- (a: A): Option<B>
56
- }
57
-
58
- /**
59
- * @tsplus fluent function as
60
- */
61
- export function asOption<T, T2 extends T>(collect: Collect<T, T2>, name: string) {
62
- return flow(collect, Either.fromOption(() => new InvalidStateError({ message: `Cannot be ${name}` })))
63
- }
64
-
65
- /**
66
- * @tsplus fluent function refinements
67
- */
68
- export function makeAwesomeCollect<T extends Object, T2 extends T>(collect: Collect<T, T2>, name: string) {
69
- const _as = asOption(collect, name)
70
- function is(item: T): item is T2 {
71
- return Option.isSome(collect(item))
72
- }
73
- const validate = {
74
- collect,
75
- is,
76
- as: _as,
77
- lens: Optic.id<T2>(),
78
- copy: (item: T2, _copy: Partial<Omit<T2, keyof Clone | keyof Equal>>) => copy(item, _copy),
79
- clone: (item: T, cloned: T) => clone(item, cloned)
80
- }
81
- function validatei(item: T) {
82
- return {
83
- get collect() {
84
- return validate.collect(item)
85
- },
86
- get as() {
87
- return validate.as(item)
88
- }
89
- }
90
- }
91
- return {
92
- ...validate,
93
- $item: validatei
94
- }
95
- }
96
- export type GetCollectedType<T> = T extends { collect: Collect<any, infer U> } ? U : never
@@ -1,23 +0,0 @@
1
- // vitest.config.ts
2
- import { defineConfig } from "file:///Users/patrickroza/Projects/Personal/effect-ts-app/libs/node_modules/.pnpm/vite@4.0.0_@types+node@18.11.12/node_modules/vite/dist/node/index.js";
3
-
4
- // ../../vite.config.base.ts
5
- import { tsPlugin } from "file:///Users/patrickroza/Projects/Personal/effect-ts-app/libs/packages/compiler/dist/vitePlugin.js";
6
- function makeConfig() {
7
- return {
8
- plugins: [tsPlugin({})],
9
- test: {
10
- include: ["./_src/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
11
- exclude: ["./_test/**/*"],
12
- reporters: "verbose",
13
- globals: true
14
- }
15
- };
16
- }
17
-
18
- // vitest.config.ts
19
- var vitest_config_default = defineConfig(makeConfig());
20
- export {
21
- vitest_config_default as default
22
- };
23
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZXN0LmNvbmZpZy50cyIsICIuLi8uLi92aXRlLmNvbmZpZy5iYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlicy9wYWNrYWdlcy9ib2lsZXJwbGF0ZS1wcmVsdWRlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvUHJvamVjdHMvUGVyc29uYWwvZWZmZWN0LXRzLWFwcC9saWJzL3BhY2thZ2VzL2JvaWxlcnBsYXRlLXByZWx1ZGUvdml0ZXN0LmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvcGF0cmlja3JvemEvUHJvamVjdHMvUGVyc29uYWwvZWZmZWN0LXRzLWFwcC9saWJzL3BhY2thZ2VzL2JvaWxlcnBsYXRlLXByZWx1ZGUvdml0ZXN0LmNvbmZpZy50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBtYWtlQ29uZmlnIGZyb20gXCIuLi8uLi92aXRlLmNvbmZpZy5iYXNlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKG1ha2VDb25maWcoKSlcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlic1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9Qcm9qZWN0cy9QZXJzb25hbC9lZmZlY3QtdHMtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IHRzUGx1Z2luIH0gZnJvbSBcIkBlZmZlY3QtdHMtYXBwL2NvbXBpbGVyL3ZpdGVQbHVnaW5cIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFrZUNvbmZpZygpIHtcbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgIHBsdWdpbnM6IFt0c1BsdWdpbih7fSldLFxuICAgIHRlc3Q6IHtcbiAgICAgIGluY2x1ZGU6IFtcIi4vX3NyYy8qKi8qLnRlc3Que2pzLG1qcyxjanMsdHMsbXRzLGN0cyxqc3gsdHN4fVwiXSxcbiAgICAgIGV4Y2x1ZGU6IFtcIi4vX3Rlc3QvKiovKlwiXSxcbiAgICAgIHJlcG9ydGVyczogXCJ2ZXJib3NlXCIsXG4gICAgICBnbG9iYWxzOiB0cnVlXG4gICAgfSxcbiAgICAvLyByZXNvbHZlOiB7XG4gICAgLy8gICBhbGlhczoge1xuICAgIC8vICAgICBcIkBlZmZlY3QvaW8vdGVzdFwiOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcIi90ZXN0XCIpLFxuICAgIC8vICAgICBcIkBlZmZlY3QvaW9cIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCIvc3JjXCIpXG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixTQUFTLGdCQUFnQjtBQUNWLFNBQVIsYUFBOEI7QUFDbkMsU0FBTztBQUFBLElBRUwsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUN0QixNQUFNO0FBQUEsTUFDSixTQUFTLENBQUMsa0RBQWtEO0FBQUEsTUFDNUQsU0FBUyxDQUFDLGNBQWM7QUFBQSxNQUN4QixXQUFXO0FBQUEsTUFDWCxTQUFTO0FBQUEsSUFDWDtBQUFBLEVBT0Y7QUFDRjs7O0FEZkEsSUFBTyx3QkFBUSxhQUFhLFdBQVcsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K