@effect-app/infra 2.51.0 → 2.52.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 +6 -0
- package/dist/Model/Repository/service.d.ts +16 -2
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/filter/types/path/eager.d.ts +4 -1
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
- package/dist/Model/filter/types/path/eager.js +2 -1
- package/dist/Model/query/dsl.d.ts +3 -1
- package/dist/Model/query/dsl.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/Model/Repository/service.ts +47 -2
- package/src/Model/filter/types/path/eager.ts +22 -1
- package/src/Model/query/dsl.ts +1 -1
- package/test/dist/controller.test copy.d.ts +169 -0
- package/test/dist/controller.test copy.d.ts.map +1 -0
- package/test/dist/controller.test copy.js +46 -23
- package/test/dist/controller6.test.d.ts.map +1 -1
- package/test/dist/controller7.test.d.ts.map +1 -1
- package/test/query.test.ts +130 -0
- package/test/dist/controller5.test.d.ts.map +0 -1
- package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
- package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
- package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
- package/vitest.config.ts.timestamp-1711744615239-dcf257a844e01.mjs +0 -37
package/test/query.test.ts
CHANGED
|
@@ -928,3 +928,133 @@ it("distribution over union", () =>
|
|
|
928
928
|
>()
|
|
929
929
|
})
|
|
930
930
|
.pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
931
|
+
|
|
932
|
+
it("refine nested union", () =>
|
|
933
|
+
Effect
|
|
934
|
+
.gen(function*() {
|
|
935
|
+
class TestNested extends S.Class<TestNested>()({ id: S.String, nested: TestUnion }) {}
|
|
936
|
+
|
|
937
|
+
const repo = yield* makeRepo("test", TestNested, {})
|
|
938
|
+
|
|
939
|
+
const base = make<TestNested>()
|
|
940
|
+
|
|
941
|
+
const res_query = base.pipe(
|
|
942
|
+
where("nested._tag", Math.random() > 0.5 ? "animal" : "person")
|
|
943
|
+
)
|
|
944
|
+
|
|
945
|
+
expectTypeOf(res_query).toEqualTypeOf<
|
|
946
|
+
QueryWhere<TestNested, {
|
|
947
|
+
readonly id: string
|
|
948
|
+
readonly nested: {
|
|
949
|
+
readonly _tag: "person"
|
|
950
|
+
readonly id: string
|
|
951
|
+
readonly surname: string
|
|
952
|
+
} | {
|
|
953
|
+
readonly _tag: "animal"
|
|
954
|
+
readonly id: string
|
|
955
|
+
readonly surname: string
|
|
956
|
+
}
|
|
957
|
+
}, false>
|
|
958
|
+
>()
|
|
959
|
+
|
|
960
|
+
const res = yield* repo.query(
|
|
961
|
+
() => res_query
|
|
962
|
+
)
|
|
963
|
+
|
|
964
|
+
expectTypeOf(res).toEqualTypeOf<
|
|
965
|
+
readonly {
|
|
966
|
+
readonly id: string
|
|
967
|
+
readonly nested: Person | Animal
|
|
968
|
+
}[]
|
|
969
|
+
>()
|
|
970
|
+
})
|
|
971
|
+
.pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
972
|
+
|
|
973
|
+
it("refine union with nested union", () =>
|
|
974
|
+
Effect
|
|
975
|
+
.gen(function*() {
|
|
976
|
+
class A extends S.TaggedClass<A>()("A", {
|
|
977
|
+
a: S.String
|
|
978
|
+
}) {}
|
|
979
|
+
|
|
980
|
+
class B extends S.TaggedClass<B>()("B", {
|
|
981
|
+
b: S.String
|
|
982
|
+
}) {}
|
|
983
|
+
|
|
984
|
+
class C extends S.TaggedClass<C>()("C", {
|
|
985
|
+
c: S.String
|
|
986
|
+
}) {}
|
|
987
|
+
|
|
988
|
+
class D extends S.TaggedClass<D>()("D", {
|
|
989
|
+
d: S.String
|
|
990
|
+
}) {}
|
|
991
|
+
|
|
992
|
+
class E extends S.TaggedClass<E>()("E", {
|
|
993
|
+
e: S.String
|
|
994
|
+
}) {}
|
|
995
|
+
|
|
996
|
+
class Container1 extends S.TaggedClass<Container1>()("Container1", {
|
|
997
|
+
id: S.String,
|
|
998
|
+
nested: S.Union(A, B, C)
|
|
999
|
+
}) {}
|
|
1000
|
+
|
|
1001
|
+
class Container2 extends S.TaggedClass<Container2>()("Container2", {
|
|
1002
|
+
id: S.String,
|
|
1003
|
+
nested: S.Union(B, C, D)
|
|
1004
|
+
}) {}
|
|
1005
|
+
|
|
1006
|
+
class Container3 extends S.TaggedClass<Container3>()("Container3", {
|
|
1007
|
+
id: S.String,
|
|
1008
|
+
nested: S.Union(C, D, E)
|
|
1009
|
+
}) {}
|
|
1010
|
+
|
|
1011
|
+
const Containers = S.Union(Container1, Container2, Container3)
|
|
1012
|
+
type Containers = typeof Containers.Type
|
|
1013
|
+
|
|
1014
|
+
const repo = yield* makeRepo("containers", Containers, {})
|
|
1015
|
+
|
|
1016
|
+
const base = make<Containers>()
|
|
1017
|
+
|
|
1018
|
+
const res_query = base.pipe(
|
|
1019
|
+
where("nested._tag", "D")
|
|
1020
|
+
)
|
|
1021
|
+
|
|
1022
|
+
expectTypeOf(res_query).toEqualTypeOf<
|
|
1023
|
+
QueryWhere<
|
|
1024
|
+
Containers,
|
|
1025
|
+
{
|
|
1026
|
+
readonly id: string
|
|
1027
|
+
readonly _tag: "Container2"
|
|
1028
|
+
readonly nested: {
|
|
1029
|
+
readonly _tag: "D"
|
|
1030
|
+
readonly d: string
|
|
1031
|
+
}
|
|
1032
|
+
} | {
|
|
1033
|
+
readonly id: string
|
|
1034
|
+
readonly _tag: "Container3"
|
|
1035
|
+
readonly nested: {
|
|
1036
|
+
readonly _tag: "D"
|
|
1037
|
+
readonly d: string
|
|
1038
|
+
}
|
|
1039
|
+
},
|
|
1040
|
+
false
|
|
1041
|
+
>
|
|
1042
|
+
>()
|
|
1043
|
+
|
|
1044
|
+
const res = yield* repo.query(
|
|
1045
|
+
() => res_query
|
|
1046
|
+
)
|
|
1047
|
+
|
|
1048
|
+
expectTypeOf(res).toEqualTypeOf<
|
|
1049
|
+
readonly ({
|
|
1050
|
+
readonly _tag: "Container2"
|
|
1051
|
+
readonly id: string
|
|
1052
|
+
readonly nested: D
|
|
1053
|
+
} | {
|
|
1054
|
+
readonly _tag: "Container3"
|
|
1055
|
+
readonly id: string
|
|
1056
|
+
readonly nested: D
|
|
1057
|
+
})[]
|
|
1058
|
+
>()
|
|
1059
|
+
})
|
|
1060
|
+
.pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller5.test.d.ts","sourceRoot":"","sources":["../controller5.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAI/G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAK9D,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAvElB,MACZ,CA8BO,MA9BA;mBAEqB,MAC9B,CA2BS,GA3BL,KA2BK,MA3BM,CAAC,MAAM;mBACR,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CA0BhC,MAjBD,CAiBC,MAjBM;mBAiBN,MAhBI,CAgBJ,GAhBQ,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUT,MAAM,CAAC,MAAM;mBAAuC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MACjG;;;;;;6CAciB,MAAM,CAAC,MAAM;;;;;6CAMF,MAAM,CAAC,MAAM;;;CA4B3C,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAM,MAAM,KAmBjB,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// packages/infra/vitest.config.ts
|
|
2
|
-
import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.2.6_@types+node@20.11.30/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: {
|
|
20
|
-
alias: packages.reduce((acc, cur) => {
|
|
21
|
-
acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, cur.endsWith("core") ? "dist" : "src");
|
|
22
|
-
return acc;
|
|
23
|
-
}, {})
|
|
24
|
-
// "@effect-app/core/Prelude": path.join(__dirname, "packages/core/src/Prelude.code.ts")
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
console.log(cfg);
|
|
28
|
-
return cfg;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// packages/infra/vitest.config.ts
|
|
32
|
-
var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/infra";
|
|
33
|
-
var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
|
|
34
|
-
export {
|
|
35
|
-
vitest_config_default as default
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvaW5mcmEvdml0ZXN0LmNvbmZpZy50cyIsICJ2aXRlLmNvbmZpZy5iYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy9wYWNrYWdlcy9pbmZyYVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy9wYWNrYWdlcy9pbmZyYS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvaW5mcmEvdml0ZXN0LmNvbmZpZy50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBtYWtlQ29uZmlnIGZyb20gXCIuLi8uLi92aXRlLmNvbmZpZy5iYXNlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKG1ha2VDb25maWcoX19kaXJuYW1lKSlcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlic1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IEF1dG9JbXBvcnQgZnJvbSBcInVucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGVcIlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVzdC9jb25maWdcIlxuXG4vLyBjb25zdCBhdXRvSW1wb3J0ID0gQXV0b0ltcG9ydCh7XG4vLyAgIGR0czogXCIuL3Rlc3QvYXV0by1pbXBvcnRzLmQudHNcIixcbi8vICAgLy8gaW5jbHVkZTogW1xuLy8gICAvLyAgIC9cXC50ZXN0XFwuW3RqXXN4PyQvIC8vIC50cywgLnRzeCwgLmpzLCAuanN4XG4vLyAgIC8vIF0sXG4vLyAgIGltcG9ydHM6IFtcbi8vICAgICBcInZpdGVzdFwiXG4vLyAgIF1cbi8vIH0pXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1ha2VDb25maWcoZGlyTmFtZT86IHN0cmluZykge1xuICBjb25zdCBwcmVmaXggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcInBhY2thZ2VzXCIpXG4gIGNvbnN0IHBhY2thZ2VzID0gZnMucmVhZGRpclN5bmMocHJlZml4KS5tYXAoZiA9PiBwcmVmaXggKyBcIi9cIiArIGYpLmZpbHRlcihmID0+IGZzLmxzdGF0U3luYyhmKS5pc0RpcmVjdG9yeSgpIClcbiAgY29uc3QgY2ZnID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgLy9wbHVnaW5zOiBbYXV0b0ltcG9ydF0sXG4gICAgdGVzdDoge1xuICAgICAgaW5jbHVkZTogIFtcIi4vdGVzdC8qKi8qLnRlc3Que2pzLG1qcyxjanMsdHMsbXRzLGN0cyxqc3gsdHN4fVwiXSxcbiAgICAgIHJlcG9ydGVyczogXCJ2ZXJib3NlXCIsXG4gICAgICBnbG9iYWxzOiB0cnVlXG4gICAgfSxcbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczogcGFja2FnZXMucmVkdWNlKChhY2MsIGN1cikgPT4geyAvLyB3b3JrYXJvdW5kIGZvciAvUHJlbHVkZSBpc3N1ZVxuICAgICAgYWNjW0pTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGN1ciArIFwiL3BhY2thZ2UuanNvblwiLCBcInV0Zi04XCIpKS5uYW1lXSA9IHBhdGgucmVzb2x2ZShjdXIsIGN1ci5lbmRzV2l0aChcImNvcmVcIikgPyBcImRpc3RcIiA6IFwic3JjXCIpXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwgeyB9KSAvLyBcIkBlZmZlY3QtYXBwL2NvcmUvUHJlbHVkZVwiOiBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInBhY2thZ2VzL2NvcmUvc3JjL1ByZWx1ZGUuY29kZS50c1wiKVxuICB9XG4gIH1cbiAgY29uc29sZS5sb2coY2ZnKVxuICByZXR1cm4gY2ZnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixPQUFPLFVBQVU7QUFDakIsT0FBTyxRQUFRO0FBRmYsSUFBTSxtQ0FBbUM7QUFnQjFCLFNBQVIsV0FBNEIsU0FBa0I7QUFDbkQsUUFBTSxTQUFTLEtBQUssUUFBUSxrQ0FBVyxVQUFVO0FBQ2pELFFBQU0sV0FBVyxHQUFHLFlBQVksTUFBTSxFQUFFLElBQUksT0FBSyxTQUFTLE1BQU0sQ0FBQyxFQUFFLE9BQU8sT0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBRTtBQUM3RyxRQUFNLE1BQU07QUFBQTtBQUFBO0FBQUEsSUFHVixNQUFNO0FBQUEsTUFDSixTQUFVLENBQUMsa0RBQWtEO0FBQUEsTUFDN0QsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLElBQ1g7QUFBQSxJQUNBLFNBQVM7QUFBQSxNQUNQLE9BQU8sU0FBUyxPQUFPLENBQUMsS0FBSyxRQUFRO0FBQ3JDLFlBQUksS0FBSyxNQUFNLEdBQUcsYUFBYSxNQUFNLGlCQUFpQixPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxRQUFRLEtBQUssSUFBSSxTQUFTLE1BQU0sSUFBSSxTQUFTLEtBQUs7QUFDL0gsZUFBTztBQUFBLE1BQ1QsR0FBRyxDQUFFLENBQUM7QUFBQTtBQUFBLElBQ1I7QUFBQSxFQUNBO0FBQ0EsVUFBUSxJQUFJLEdBQUc7QUFDZixTQUFPO0FBQ1Q7OztBRHBDQSxJQUFNQSxvQ0FBbUM7QUFJekMsSUFBTyx3QkFBUSxhQUFhLFdBQVdDLGlDQUFTLENBQUM7IiwKICAibmFtZXMiOiBbIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIl0KfQo=
|