@effect-app/infra 2.32.2 → 2.34.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 +22 -0
- package/package.json +174 -632
- package/_cjs/CUPS.cjs +0 -120
- package/_cjs/CUPS.cjs.map +0 -1
- package/_cjs/Emailer/Sendgrid.cjs +0 -109
- package/_cjs/Emailer/Sendgrid.cjs.map +0 -1
- package/_cjs/Emailer/fake.cjs +0 -17
- package/_cjs/Emailer/fake.cjs.map +0 -1
- package/_cjs/Emailer/service.cjs +0 -12
- package/_cjs/Emailer/service.cjs.map +0 -1
- package/_cjs/Emailer.cjs +0 -17
- package/_cjs/Emailer.cjs.map +0 -1
- package/_cjs/MainFiberSet.cjs +0 -61
- package/_cjs/MainFiberSet.cjs.map +0 -1
- package/_cjs/Model/Repository/ext.cjs +0 -68
- package/_cjs/Model/Repository/ext.cjs.map +0 -1
- package/_cjs/Model/Repository/internal/internal.cjs +0 -245
- package/_cjs/Model/Repository/internal/internal.cjs.map +0 -1
- package/_cjs/Model/Repository/legacy.cjs +0 -6
- package/_cjs/Model/Repository/legacy.cjs.map +0 -1
- package/_cjs/Model/Repository/makeRepo.cjs +0 -34
- package/_cjs/Model/Repository/makeRepo.cjs.map +0 -1
- package/_cjs/Model/Repository/service.cjs +0 -6
- package/_cjs/Model/Repository/service.cjs.map +0 -1
- package/_cjs/Model/Repository.cjs +0 -52
- package/_cjs/Model/Repository.cjs.map +0 -1
- package/_cjs/Model/dsl.cjs +0 -54
- package/_cjs/Model/dsl.cjs.map +0 -1
- package/_cjs/Model/filter/filterApi.cjs +0 -6
- package/_cjs/Model/filter/filterApi.cjs.map +0 -1
- package/_cjs/Model/filter/types/errors.cjs +0 -6
- package/_cjs/Model/filter/types/errors.cjs.map +0 -1
- package/_cjs/Model/filter/types/fields.cjs +0 -6
- package/_cjs/Model/filter/types/fields.cjs.map +0 -1
- package/_cjs/Model/filter/types/path/common.cjs +0 -6
- package/_cjs/Model/filter/types/path/common.cjs.map +0 -1
- package/_cjs/Model/filter/types/path/eager.cjs +0 -37
- package/_cjs/Model/filter/types/path/eager.cjs.map +0 -1
- package/_cjs/Model/filter/types/path/index.cjs +0 -6
- package/_cjs/Model/filter/types/path/index.cjs.map +0 -1
- package/_cjs/Model/filter/types/utils.cjs +0 -6
- package/_cjs/Model/filter/types/utils.cjs.map +0 -1
- package/_cjs/Model/filter/types/validator.cjs +0 -6
- package/_cjs/Model/filter/types/validator.cjs.map +0 -1
- package/_cjs/Model/filter/types.cjs +0 -50
- package/_cjs/Model/filter/types.cjs.map +0 -1
- package/_cjs/Model/query/dsl.cjs +0 -133
- package/_cjs/Model/query/dsl.cjs.map +0 -1
- package/_cjs/Model/query/new-kid-interpreter.cjs +0 -162
- package/_cjs/Model/query/new-kid-interpreter.cjs.map +0 -1
- package/_cjs/Model/query.cjs +0 -28
- package/_cjs/Model/query.cjs.map +0 -1
- package/_cjs/Model.cjs +0 -34
- package/_cjs/Model.cjs.map +0 -1
- package/_cjs/Operations.cjs +0 -105
- package/_cjs/Operations.cjs.map +0 -1
- package/_cjs/OperationsRepo.cjs +0 -21
- package/_cjs/OperationsRepo.cjs.map +0 -1
- package/_cjs/QueueMaker/SQLQueue.cjs +0 -149
- package/_cjs/QueueMaker/SQLQueue.cjs.map +0 -1
- package/_cjs/QueueMaker/errors.cjs +0 -29
- package/_cjs/QueueMaker/errors.cjs.map +0 -1
- package/_cjs/QueueMaker/memQueue.cjs +0 -90
- package/_cjs/QueueMaker/memQueue.cjs.map +0 -1
- package/_cjs/QueueMaker/sbqueue.cjs +0 -107
- package/_cjs/QueueMaker/sbqueue.cjs.map +0 -1
- package/_cjs/QueueMaker/service.cjs +0 -10
- package/_cjs/QueueMaker/service.cjs.map +0 -1
- package/_cjs/RequestContext.cjs +0 -54
- package/_cjs/RequestContext.cjs.map +0 -1
- package/_cjs/RequestFiberSet.cjs +0 -85
- package/_cjs/RequestFiberSet.cjs.map +0 -1
- package/_cjs/Store/ContextMapContainer.cjs +0 -19
- package/_cjs/Store/ContextMapContainer.cjs.map +0 -1
- package/_cjs/Store/Cosmos/query.cjs +0 -170
- package/_cjs/Store/Cosmos/query.cjs.map +0 -1
- package/_cjs/Store/Cosmos.cjs +0 -302
- package/_cjs/Store/Cosmos.cjs.map +0 -1
- package/_cjs/Store/Disk.cjs +0 -118
- package/_cjs/Store/Disk.cjs.map +0 -1
- package/_cjs/Store/Memory.cjs +0 -174
- package/_cjs/Store/Memory.cjs.map +0 -1
- package/_cjs/Store/codeFilter.cjs +0 -128
- package/_cjs/Store/codeFilter.cjs.map +0 -1
- package/_cjs/Store/index.cjs +0 -46
- package/_cjs/Store/index.cjs.map +0 -1
- package/_cjs/Store/service.cjs +0 -73
- package/_cjs/Store/service.cjs.map +0 -1
- package/_cjs/Store/utils.cjs +0 -70
- package/_cjs/Store/utils.cjs.map +0 -1
- package/_cjs/Store.cjs +0 -17
- package/_cjs/Store.cjs.map +0 -1
- package/_cjs/adapters/SQL/Model.cjs +0 -501
- package/_cjs/adapters/SQL/Model.cjs.map +0 -1
- package/_cjs/adapters/SQL.cjs +0 -11
- package/_cjs/adapters/SQL.cjs.map +0 -1
- package/_cjs/adapters/ServiceBus.cjs +0 -76
- package/_cjs/adapters/ServiceBus.cjs.map +0 -1
- package/_cjs/adapters/cosmos-client.cjs +0 -18
- package/_cjs/adapters/cosmos-client.cjs.map +0 -1
- package/_cjs/adapters/index.cjs +0 -6
- package/_cjs/adapters/index.cjs.map +0 -1
- package/_cjs/adapters/logger.cjs +0 -9
- package/_cjs/adapters/logger.cjs.map +0 -1
- package/_cjs/adapters/memQueue.cjs +0 -27
- package/_cjs/adapters/memQueue.cjs.map +0 -1
- package/_cjs/adapters/mongo-client.cjs +0 -20
- package/_cjs/adapters/mongo-client.cjs.map +0 -1
- package/_cjs/adapters/redis-client.cjs +0 -83
- package/_cjs/adapters/redis-client.cjs.map +0 -1
- package/_cjs/api/codec.cjs +0 -13
- package/_cjs/api/codec.cjs.map +0 -1
- package/_cjs/api/internal/RequestContextMiddleware.cjs +0 -41
- package/_cjs/api/internal/RequestContextMiddleware.cjs.map +0 -1
- package/_cjs/api/internal/auth.cjs +0 -58
- package/_cjs/api/internal/auth.cjs.map +0 -1
- package/_cjs/api/internal/events.cjs +0 -34
- package/_cjs/api/internal/events.cjs.map +0 -1
- package/_cjs/api/internal/health.cjs +0 -13
- package/_cjs/api/internal/health.cjs.map +0 -1
- package/_cjs/api/internal/middlewares.cjs +0 -197
- package/_cjs/api/internal/middlewares.cjs.map +0 -1
- package/_cjs/api/middlewares.cjs +0 -115
- package/_cjs/api/middlewares.cjs.map +0 -1
- package/_cjs/api/reportError.cjs +0 -29
- package/_cjs/api/reportError.cjs.map +0 -1
- package/_cjs/api/routing/DynamicMiddleware.cjs +0 -19
- package/_cjs/api/routing/DynamicMiddleware.cjs.map +0 -1
- package/_cjs/api/routing/schema/jwt.cjs +0 -21
- package/_cjs/api/routing/schema/jwt.cjs.map +0 -1
- package/_cjs/api/routing/utils.cjs +0 -53
- package/_cjs/api/routing/utils.cjs.map +0 -1
- package/_cjs/api/routing.cjs +0 -228
- package/_cjs/api/routing.cjs.map +0 -1
- package/_cjs/api/routing.legacy.cjs +0 -191
- package/_cjs/api/routing.legacy.cjs.map +0 -1
- package/_cjs/api/routing.legacy2.cjs +0 -210
- package/_cjs/api/routing.legacy2.cjs.map +0 -1
- package/_cjs/api/routing.legacy3.cjs +0 -214
- package/_cjs/api/routing.legacy3.cjs.map +0 -1
- package/_cjs/api/setupRequest.cjs +0 -58
- package/_cjs/api/setupRequest.cjs.map +0 -1
- package/_cjs/api/util.cjs +0 -17
- package/_cjs/api/util.cjs.map +0 -1
- package/_cjs/arbs.cjs +0 -25
- package/_cjs/arbs.cjs.map +0 -1
- package/_cjs/errorReporter.cjs +0 -74
- package/_cjs/errorReporter.cjs.map +0 -1
- package/_cjs/errors.cjs +0 -17
- package/_cjs/errors.cjs.map +0 -1
- package/_cjs/fileUtil.cjs +0 -48
- package/_cjs/fileUtil.cjs.map +0 -1
- package/_cjs/index.cjs +0 -11
- package/_cjs/index.cjs.map +0 -1
- package/_cjs/logger/jsonLogger.cjs +0 -43
- package/_cjs/logger/jsonLogger.cjs.map +0 -1
- package/_cjs/logger/logFmtLogger.cjs +0 -25
- package/_cjs/logger/logFmtLogger.cjs.map +0 -1
- package/_cjs/logger/shared.cjs +0 -30
- package/_cjs/logger/shared.cjs.map +0 -1
- package/_cjs/logger.cjs +0 -9
- package/_cjs/logger.cjs.map +0 -1
- package/_cjs/rateLimit.cjs +0 -76
- package/_cjs/rateLimit.cjs.map +0 -1
- package/_cjs/test.cjs +0 -77
- package/_cjs/test.cjs.map +0 -1
- package/_cjs/vitest.cjs +0 -28
- package/_cjs/vitest.cjs.map +0 -1
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.buildWhereCosmosQuery3 = buildWhereCosmosQuery3;
|
|
7
|
-
exports.logQuery = logQuery;
|
|
8
|
-
var _effectApp = require("effect-app");
|
|
9
|
-
var _utils = require("effect-app/utils");
|
|
10
|
-
var _logger = require("../../logger.cjs");
|
|
11
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
12
|
-
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
13
|
-
|
|
14
|
-
function logQuery(q) {
|
|
15
|
-
return _logger.InfraLogger.logDebug("cosmos query").pipe(_effectApp.Effect.annotateLogs({
|
|
16
|
-
query: q.query,
|
|
17
|
-
parameters: JSON.stringify(q.parameters.reduce((acc, v) => {
|
|
18
|
-
acc[v.name] = v.value;
|
|
19
|
-
return acc;
|
|
20
|
-
}, {}), undefined, 2)
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, defaultValues, select, order, skip, limit) {
|
|
24
|
-
const statement = (x, i, values) => {
|
|
25
|
-
if (x.path === idKey) {
|
|
26
|
-
x = {
|
|
27
|
-
...x,
|
|
28
|
-
path: "id"
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
let k = x.path.includes(".-1.") ? `${x.path.split(".-1.")[0]}.${x.path.split(".-1.")[1]}` : `f.${x.path}`;
|
|
32
|
-
// would have to map id, but shouldnt allow id in defaultValues anyway..
|
|
33
|
-
k = x.path in defaultValues ? `(${k} ?? ${JSON.stringify(defaultValues[x.path])})` : k;
|
|
34
|
-
const v = "@v" + i;
|
|
35
|
-
const realValue = values[i];
|
|
36
|
-
switch (x.op) {
|
|
37
|
-
case "in":
|
|
38
|
-
return `ARRAY_CONTAINS(${v}, ${k})`;
|
|
39
|
-
case "notIn":
|
|
40
|
-
return `(NOT ARRAY_CONTAINS(${v}, ${k}))`;
|
|
41
|
-
case "includes":
|
|
42
|
-
return `ARRAY_CONTAINS(${k}, ${v})`;
|
|
43
|
-
case "notIncludes":
|
|
44
|
-
return `(NOT ARRAY_CONTAINS(${k}, ${v}))`;
|
|
45
|
-
case "includes-any":
|
|
46
|
-
return `ARRAY_CONTAINS_ANY(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")})`;
|
|
47
|
-
case "notIncludes-any":
|
|
48
|
-
return `(NOT ARRAY_CONTAINS_ANY(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")}))`;
|
|
49
|
-
case "includes-all":
|
|
50
|
-
return `ARRAY_CONTAINS_ALL(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")})`;
|
|
51
|
-
case "notIncludes-all":
|
|
52
|
-
return `(NOT ARRAY_CONTAINS_ALL(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")}))`;
|
|
53
|
-
case "contains":
|
|
54
|
-
return `CONTAINS(${k}, ${v}, true)`;
|
|
55
|
-
case "startsWith":
|
|
56
|
-
return `STARTSWITH(${k}, ${v}, true)`;
|
|
57
|
-
case "endsWith":
|
|
58
|
-
return `ENDSWITH(${k}, ${v}, true)`;
|
|
59
|
-
case "notContains":
|
|
60
|
-
return `NOT(CONTAINS(${k}, ${v}, true))`;
|
|
61
|
-
case "notStartsWith":
|
|
62
|
-
return `NOT(STARTSWITH(${k}, ${v}, true))`;
|
|
63
|
-
case "notEndsWith":
|
|
64
|
-
return `NOT(ENDSWITH(${k}, ${v}, true))`;
|
|
65
|
-
}
|
|
66
|
-
switch (x.op) {
|
|
67
|
-
case "lt":
|
|
68
|
-
return `${k} < ${v}`;
|
|
69
|
-
case "lte":
|
|
70
|
-
return `${k} <= ${v}`;
|
|
71
|
-
case "gt":
|
|
72
|
-
return `${k} > ${v}`;
|
|
73
|
-
case "gte":
|
|
74
|
-
return `${k} >= ${v}`;
|
|
75
|
-
case "neq":
|
|
76
|
-
return x.value === null ? `IS_NULL(${k}) = false` : `${k} <> ${v}`;
|
|
77
|
-
case undefined:
|
|
78
|
-
case "eq":
|
|
79
|
-
return x.value === null ? `IS_NULL(${k}) = true` : `${k} = ${v}`;
|
|
80
|
-
default:
|
|
81
|
-
{
|
|
82
|
-
return (0, _utils.assertUnreachable)(x.op);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
let i = 0;
|
|
87
|
-
const print = (state, values) => {
|
|
88
|
-
let s = "";
|
|
89
|
-
let l = 0;
|
|
90
|
-
const printN = n => {
|
|
91
|
-
return n === 0 ? "" : _effectApp.Array.range(1, n).map(() => " ").join("");
|
|
92
|
-
};
|
|
93
|
-
for (const e of state) {
|
|
94
|
-
switch (e.t) {
|
|
95
|
-
case "where":
|
|
96
|
-
s += statement(e, i++, values);
|
|
97
|
-
break;
|
|
98
|
-
case "or":
|
|
99
|
-
s += ` OR ${statement(e, i++, values)}`;
|
|
100
|
-
break;
|
|
101
|
-
case "and":
|
|
102
|
-
s += ` AND ${statement(e, i++, values)}`;
|
|
103
|
-
break;
|
|
104
|
-
case "or-scope":
|
|
105
|
-
{
|
|
106
|
-
++l;
|
|
107
|
-
s += ` OR (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`;
|
|
108
|
-
--l;
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
case "and-scope":
|
|
112
|
-
{
|
|
113
|
-
++l;
|
|
114
|
-
s += ` AND (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`;
|
|
115
|
-
--l;
|
|
116
|
-
break;
|
|
117
|
-
}
|
|
118
|
-
case "where-scope":
|
|
119
|
-
{
|
|
120
|
-
// ;++l
|
|
121
|
-
s += `(\n${printN(l + 1)}${print(e.result, values)}\n)`;
|
|
122
|
-
// ;--l
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return s;
|
|
128
|
-
};
|
|
129
|
-
// const fff = (filter: readonly FilterR[], mode: "AND" | "OR") =>
|
|
130
|
-
// "(" + filter
|
|
131
|
-
// .map((_) =>
|
|
132
|
-
// _.path.includes(".-1.")
|
|
133
|
-
// ? { ..._, f: _.path.split(".-1.")[0], key: _.path.split(".-1.")[1]! }
|
|
134
|
-
// : { ..._, f: "f" }
|
|
135
|
-
// )
|
|
136
|
-
// .map(
|
|
137
|
-
// (x, i) => {
|
|
138
|
-
// const k = `${x.f}.${x.path}`
|
|
139
|
-
// const v = `@v${i}`
|
|
140
|
-
// return statement(x, k, v)
|
|
141
|
-
// }
|
|
142
|
-
// )
|
|
143
|
-
// .join(mode === "OR" ? " OR " : " AND ") + ")"
|
|
144
|
-
const getValues = filter => filter.flatMap(_ => _.t === "and-scope" || _.t === "or-scope" || _.t === "where-scope" ? getValues(_.result) : [_]);
|
|
145
|
-
const values = getValues(filter);
|
|
146
|
-
return {
|
|
147
|
-
query: `
|
|
148
|
-
SELECT ${select ? `${select.map(_ => _ === idKey ? "id" : _).map(_ => `f.${_}`).join(", ")}` : "f"}
|
|
149
|
-
FROM ${name} f
|
|
150
|
-
|
|
151
|
-
${(0, _effectApp.pipe)(values.filter(_ => _.path.includes(".-1.")).map(_ => _.path.split(".-1.")[0]).map(_ => `JOIN ${_} IN f.${_}`), _effectApp.Array.dedupeWith(_effectApp.Equivalence.string)).join("\n")}
|
|
152
|
-
|
|
153
|
-
WHERE f.id != @id ${filter.length ? `AND (${print(filter, values.map(_ => _.value))})` : ""}
|
|
154
|
-
${order ? `ORDER BY ${order.map(_ => `f.${_.key} ${_.direction}`).join(", ")}` : ""}
|
|
155
|
-
${skip !== undefined || limit !== undefined ? `OFFSET ${skip ?? 0} LIMIT ${limit ?? 999999}` : ""}`,
|
|
156
|
-
parameters: [{
|
|
157
|
-
name: "@id",
|
|
158
|
-
value: importedMarkerId
|
|
159
|
-
}, ...values.flatMap((x, i) => [{
|
|
160
|
-
name: `@v${i}`,
|
|
161
|
-
value: x.value
|
|
162
|
-
}]
|
|
163
|
-
// TODO: only for arrays that are used with _ANY or _ALL
|
|
164
|
-
.concat(_effectApp.Array.isArray(x.value) ? x.value.map((_, i2) => ({
|
|
165
|
-
name: `@v${i}__${i2}`,
|
|
166
|
-
value: _
|
|
167
|
-
})) : []))]
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=query.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query.cjs","names":["_effectApp","require","_utils","_logger","logQuery","q","InfraLogger","logDebug","pipe","Effect","annotateLogs","query","parameters","JSON","stringify","reduce","acc","v","name","value","undefined","buildWhereCosmosQuery3","idKey","filter","importedMarkerId","defaultValues","select","order","skip","limit","statement","x","i","values","path","k","includes","split","realValue","op","map","_","join","assertUnreachable","print","state","s","l","printN","n","Array","range","e","t","result","getValues","flatMap","dedupeWith","Equivalence","string","length","key","direction","concat","isArray","i2"],"sources":["../../../src/Store/Cosmos/query.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/_cjs/Store/Cosmos.cjs
DELETED
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.CosmosStoreLayer = CosmosStoreLayer;
|
|
7
|
-
var _effectApp = require("effect-app");
|
|
8
|
-
var _Array = require("effect-app/Array");
|
|
9
|
-
var _utils = require("effect-app/utils");
|
|
10
|
-
var _cosmosClient = require("../adapters/cosmos-client.cjs");
|
|
11
|
-
var _errors = require("../errors.cjs");
|
|
12
|
-
var _logger = require("../logger.cjs");
|
|
13
|
-
var _query = require("./Cosmos/query.cjs");
|
|
14
|
-
var _service = require("./service.cjs");
|
|
15
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
16
|
-
|
|
17
|
-
const makeMapId = idKey => ({
|
|
18
|
-
[idKey]: id,
|
|
19
|
-
...e
|
|
20
|
-
}) => ({
|
|
21
|
-
...e,
|
|
22
|
-
id
|
|
23
|
-
});
|
|
24
|
-
const makeReverseMapId = idKey => ({
|
|
25
|
-
id,
|
|
26
|
-
...t
|
|
27
|
-
}) => ({
|
|
28
|
-
...t,
|
|
29
|
-
[idKey]: id
|
|
30
|
-
});
|
|
31
|
-
class CosmosDbOperationError {
|
|
32
|
-
message;
|
|
33
|
-
constructor(message) {
|
|
34
|
-
this.message = message;
|
|
35
|
-
}
|
|
36
|
-
} // TODO: Retry operation when running into RU limit.
|
|
37
|
-
function makeCosmosStore({
|
|
38
|
-
prefix
|
|
39
|
-
}) {
|
|
40
|
-
return _effectApp.Effect.gen(function* () {
|
|
41
|
-
const {
|
|
42
|
-
db
|
|
43
|
-
} = yield* _cosmosClient.CosmosClient;
|
|
44
|
-
return {
|
|
45
|
-
make: (name, idKey, seed, config) => _effectApp.Effect.gen(function* () {
|
|
46
|
-
const mapId = makeMapId(idKey);
|
|
47
|
-
const mapReverseId = makeReverseMapId(idKey);
|
|
48
|
-
const containerId = `${prefix}${name}`;
|
|
49
|
-
yield* _effectApp.Effect.promise(() => db.containers.createIfNotExists((0, _utils.dropUndefinedT)({
|
|
50
|
-
id: containerId,
|
|
51
|
-
uniqueKeyPolicy: config?.uniqueKeys ? {
|
|
52
|
-
uniqueKeys: config.uniqueKeys
|
|
53
|
-
} : undefined
|
|
54
|
-
})));
|
|
55
|
-
const defaultValues = config?.defaultValues ?? {};
|
|
56
|
-
const container = db.container(containerId);
|
|
57
|
-
const bulk = container.items.bulk.bind(container.items);
|
|
58
|
-
const execBatch = container.items.batch.bind(container.items);
|
|
59
|
-
const importedMarkerId = containerId;
|
|
60
|
-
const bulkSet = items => _effectApp.Effect.gen(function* () {
|
|
61
|
-
// TODO: disable batching if need atomicity
|
|
62
|
-
// we delay and batch to keep low amount of RUs
|
|
63
|
-
const b = [...items].map(x => [x, _effectApp.Option.match(_effectApp.Option.fromNullable(x._etag), {
|
|
64
|
-
onNone: () => (0, _utils.dropUndefinedT)({
|
|
65
|
-
operationType: "Create",
|
|
66
|
-
resourceBody: {
|
|
67
|
-
..._effectApp.Struct.omit(x, "_etag", idKey),
|
|
68
|
-
id: x[idKey],
|
|
69
|
-
_partitionKey: config?.partitionValue(x)
|
|
70
|
-
},
|
|
71
|
-
partitionKey: config?.partitionValue(x)
|
|
72
|
-
}),
|
|
73
|
-
onSome: eTag => (0, _utils.dropUndefinedT)({
|
|
74
|
-
operationType: "Replace",
|
|
75
|
-
id: x[idKey],
|
|
76
|
-
resourceBody: {
|
|
77
|
-
..._effectApp.Struct.omit(x, "_etag", idKey),
|
|
78
|
-
id: x[idKey],
|
|
79
|
-
_partitionKey: config?.partitionValue(x)
|
|
80
|
-
},
|
|
81
|
-
ifMatch: eTag,
|
|
82
|
-
partitionKey: config?.partitionValue(x)
|
|
83
|
-
})
|
|
84
|
-
})]);
|
|
85
|
-
const batches = _effectApp.Chunk.toReadonlyArray(_effectApp.Array.chunk_(b, config?.maxBulkSize ?? 10));
|
|
86
|
-
const batchResult = yield* _effectApp.Effect.forEach(batches.map((x, i) => [i, x]), ([i, batch]) => _effectApp.Effect.promise(() => bulk(batch.map(([, op]) => op))).pipe(_effectApp.Effect.delay(_effectApp.Duration.millis(i === 0 ? 0 : 1100)), _effectApp.Effect.flatMap(responses => _effectApp.Effect.gen(function* () {
|
|
87
|
-
const r = responses.find(x => x.statusCode === 412 || x.statusCode === 404 || x.statusCode === 409);
|
|
88
|
-
if (r) {
|
|
89
|
-
return yield* _effectApp.Effect.fail(new _errors.OptimisticConcurrencyException({
|
|
90
|
-
type: name,
|
|
91
|
-
id: JSON.stringify(r.resourceBody?.["id"]),
|
|
92
|
-
code: r.statusCode
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
const r2 = responses.find(x => x.statusCode > 299 || x.statusCode < 200);
|
|
96
|
-
if (r2) {
|
|
97
|
-
return yield* _effectApp.Effect.die(new CosmosDbOperationError("not able to update record: " + r2.statusCode));
|
|
98
|
-
}
|
|
99
|
-
return batch.map(([e], i) => ({
|
|
100
|
-
...e,
|
|
101
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
102
|
-
_etag: responses[i].eTag
|
|
103
|
-
}));
|
|
104
|
-
}))));
|
|
105
|
-
return batchResult.flat();
|
|
106
|
-
}).pipe(_effectApp.Effect.withSpan("Cosmos.bulkSet [effect-app/infra/Store]", {
|
|
107
|
-
captureStackTrace: false,
|
|
108
|
-
attributes: {
|
|
109
|
-
"repository.container_id": containerId,
|
|
110
|
-
"repository.model_name": name
|
|
111
|
-
}
|
|
112
|
-
}));
|
|
113
|
-
const batchSet = items => {
|
|
114
|
-
return _effectApp.Effect.suspend(() => {
|
|
115
|
-
const batch = [...items].map(x => [x, _effectApp.Option.match(_effectApp.Option.fromNullable(x._etag), {
|
|
116
|
-
onNone: () => ({
|
|
117
|
-
operationType: "Create",
|
|
118
|
-
resourceBody: {
|
|
119
|
-
..._effectApp.Struct.omit(x, "_etag", idKey),
|
|
120
|
-
id: x[idKey],
|
|
121
|
-
_partitionKey: config?.partitionValue(x)
|
|
122
|
-
}
|
|
123
|
-
}),
|
|
124
|
-
onSome: eTag => ({
|
|
125
|
-
operationType: "Replace",
|
|
126
|
-
id: x[idKey],
|
|
127
|
-
resourceBody: {
|
|
128
|
-
..._effectApp.Struct.omit(x, "_etag", idKey),
|
|
129
|
-
id: x[idKey],
|
|
130
|
-
_partitionKey: config?.partitionValue(x)
|
|
131
|
-
},
|
|
132
|
-
ifMatch: eTag
|
|
133
|
-
})
|
|
134
|
-
})]);
|
|
135
|
-
const ex = batch.map(([, c]) => c);
|
|
136
|
-
return _effectApp.Effect.promise(() => execBatch(ex, ex[0]?.resourceBody._partitionKey)).pipe(_effectApp.Effect.flatMap(x => _effectApp.Effect.gen(function* () {
|
|
137
|
-
const result = x.result ?? [];
|
|
138
|
-
const firstFailed = result.find(x => x.statusCode > 299 || x.statusCode < 200);
|
|
139
|
-
if (firstFailed) {
|
|
140
|
-
const code = firstFailed.statusCode ?? 0;
|
|
141
|
-
if (code === 412 || code === 404 || code === 409) {
|
|
142
|
-
return yield* new _errors.OptimisticConcurrencyException({
|
|
143
|
-
type: name,
|
|
144
|
-
id: "batch",
|
|
145
|
-
code
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
return yield* _effectApp.Effect.die(new CosmosDbOperationError("not able to update record: " + code));
|
|
149
|
-
}
|
|
150
|
-
return batch.map(([e], i) => ({
|
|
151
|
-
...e,
|
|
152
|
-
_etag: result[i]?.eTag
|
|
153
|
-
}));
|
|
154
|
-
})));
|
|
155
|
-
}).pipe(_effectApp.Effect.withSpan("Cosmos.batchSet [effect-app/infra/Store]", {
|
|
156
|
-
captureStackTrace: false,
|
|
157
|
-
attributes: {
|
|
158
|
-
"repository.container_id": containerId,
|
|
159
|
-
"repository.model_name": name
|
|
160
|
-
}
|
|
161
|
-
}));
|
|
162
|
-
};
|
|
163
|
-
const s = {
|
|
164
|
-
all: _effectApp.Effect.sync(() => ({
|
|
165
|
-
query: `SELECT * FROM ${name} f WHERE f.id != @id`,
|
|
166
|
-
parameters: [{
|
|
167
|
-
name: "@id",
|
|
168
|
-
value: importedMarkerId
|
|
169
|
-
}]
|
|
170
|
-
})).pipe(_effectApp.Effect.tap(q => (0, _query.logQuery)(q)), _effectApp.Effect.flatMap(q => _effectApp.Effect.promise(() => container.items.query(q).fetchAll().then(({
|
|
171
|
-
resources
|
|
172
|
-
}) => resources.map(_ => ({
|
|
173
|
-
...defaultValues,
|
|
174
|
-
...mapReverseId(_)
|
|
175
|
-
}))))), _effectApp.Effect.withSpan("Cosmos.all [effect-app/infra/Store]", {
|
|
176
|
-
captureStackTrace: false,
|
|
177
|
-
attributes: {
|
|
178
|
-
"repository.container_id": containerId,
|
|
179
|
-
"repository.model_name": name
|
|
180
|
-
}
|
|
181
|
-
})),
|
|
182
|
-
/**
|
|
183
|
-
* May return duplicate results for "join_find", when matching more than once.
|
|
184
|
-
*/
|
|
185
|
-
filter: f => {
|
|
186
|
-
const skip = f?.skip;
|
|
187
|
-
const limit = f?.limit;
|
|
188
|
-
const filter = f.filter;
|
|
189
|
-
return _effectApp.Effect.sync(() => (0, _query.buildWhereCosmosQuery3)(idKey, filter ?? [], name, importedMarkerId, defaultValues, f.select, f.order, skip, limit)).pipe(_effectApp.Effect.tap(q => (0, _query.logQuery)(q)), _effectApp.Effect.flatMap(q => _effectApp.Effect.promise(() => f.select ? container.items.query(q).fetchAll().then(({
|
|
190
|
-
resources
|
|
191
|
-
}) => resources.map(_ => ({
|
|
192
|
-
...(0, _effectApp.pipe)(defaultValues, _effectApp.Struct.pick(...f.select)),
|
|
193
|
-
...mapReverseId(_)
|
|
194
|
-
}))) : container.items.query(q).fetchAll().then(({
|
|
195
|
-
resources
|
|
196
|
-
}) => resources.map(({
|
|
197
|
-
f
|
|
198
|
-
}) => ({
|
|
199
|
-
...defaultValues,
|
|
200
|
-
...mapReverseId(f)
|
|
201
|
-
})))))).pipe(_effectApp.Effect.withSpan("Cosmos.filter [effect-app/infra/Store]", {
|
|
202
|
-
captureStackTrace: false,
|
|
203
|
-
attributes: {
|
|
204
|
-
"repository.container_id": containerId,
|
|
205
|
-
"repository.model_name": name
|
|
206
|
-
}
|
|
207
|
-
}));
|
|
208
|
-
},
|
|
209
|
-
find: id => _effectApp.Effect.promise(() => container.item(id, config?.partitionValue({
|
|
210
|
-
[idKey]: id
|
|
211
|
-
})).read().then(({
|
|
212
|
-
resource
|
|
213
|
-
}) => _effectApp.Option.fromNullable(resource).pipe(_effectApp.Option.map(_ => ({
|
|
214
|
-
...defaultValues,
|
|
215
|
-
...mapReverseId(_)
|
|
216
|
-
}))))).pipe(_effectApp.Effect.withSpan("Cosmos.find [effect-app/infra/Store]", {
|
|
217
|
-
captureStackTrace: false,
|
|
218
|
-
attributes: {
|
|
219
|
-
"repository.container_id": containerId,
|
|
220
|
-
"repository.model_name": name,
|
|
221
|
-
partitionValue: config?.partitionValue({
|
|
222
|
-
[idKey]: id
|
|
223
|
-
}),
|
|
224
|
-
id
|
|
225
|
-
}
|
|
226
|
-
})),
|
|
227
|
-
set: e => _effectApp.Option.match(_effectApp.Option.fromNullable(e._etag), {
|
|
228
|
-
onNone: () => _effectApp.Effect.promise(() => container.items.create({
|
|
229
|
-
...mapId(e),
|
|
230
|
-
_partitionKey: config?.partitionValue(e)
|
|
231
|
-
})),
|
|
232
|
-
onSome: eTag => _effectApp.Effect.promise(() => container.item(e[idKey], config?.partitionValue(e)).replace({
|
|
233
|
-
...mapId(e),
|
|
234
|
-
_partitionKey: config?.partitionValue(e)
|
|
235
|
-
}, {
|
|
236
|
-
accessCondition: {
|
|
237
|
-
type: "IfMatch",
|
|
238
|
-
condition: eTag
|
|
239
|
-
}
|
|
240
|
-
}))
|
|
241
|
-
}).pipe(_effectApp.Effect.flatMap(x => {
|
|
242
|
-
if (x.statusCode === 412 || x.statusCode === 404 || x.statusCode === 409) {
|
|
243
|
-
return new _errors.OptimisticConcurrencyException({
|
|
244
|
-
type: name,
|
|
245
|
-
id: e[idKey],
|
|
246
|
-
code: x.statusCode
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
if (x.statusCode > 299 || x.statusCode < 200) {
|
|
250
|
-
return _effectApp.Effect.die(new CosmosDbOperationError("not able to update record: " + x.statusCode));
|
|
251
|
-
}
|
|
252
|
-
return _effectApp.Effect.sync(() => ({
|
|
253
|
-
...e,
|
|
254
|
-
_etag: x.etag
|
|
255
|
-
}));
|
|
256
|
-
}), _effectApp.Effect.withSpan("Cosmos.set [effect-app/infra/Store]", {
|
|
257
|
-
captureStackTrace: false,
|
|
258
|
-
attributes: {
|
|
259
|
-
"repository.container_id": containerId,
|
|
260
|
-
"repository.model_name": name,
|
|
261
|
-
id: e[idKey]
|
|
262
|
-
}
|
|
263
|
-
})),
|
|
264
|
-
batchSet,
|
|
265
|
-
bulkSet,
|
|
266
|
-
remove: e => _effectApp.Effect.promise(() => container.item(e[idKey], config?.partitionValue(e)).delete()).pipe(_effectApp.Effect.withSpan("Cosmos.remove [effect-app/infra/Store]", {
|
|
267
|
-
captureStackTrace: false,
|
|
268
|
-
attributes: {
|
|
269
|
-
"repository.container_id": containerId,
|
|
270
|
-
"repository.model_name": name,
|
|
271
|
-
id: e[idKey]
|
|
272
|
-
}
|
|
273
|
-
}))
|
|
274
|
-
};
|
|
275
|
-
// handle mock data
|
|
276
|
-
const marker = yield* _effectApp.Effect.promise(() => container.item(importedMarkerId, importedMarkerId).read().then(({
|
|
277
|
-
resource
|
|
278
|
-
}) => _effectApp.Option.fromNullable(resource)));
|
|
279
|
-
if (!_effectApp.Option.isSome(marker)) {
|
|
280
|
-
yield* _logger.InfraLogger.logInfo("Creating mock data for " + name);
|
|
281
|
-
if (seed) {
|
|
282
|
-
const m = yield* seed;
|
|
283
|
-
yield* _effectApp.Effect.flatMapOption(_effectApp.Effect.succeed((0, _Array.toNonEmptyArray)([...m])), a => s.bulkSet(a).pipe(_effectApp.Effect.orDie, _effectApp.Effect
|
|
284
|
-
// we delay extra here, so that initial creation between Companies/POs also have an interval between them.
|
|
285
|
-
.delay(_effectApp.Duration.millis(1100))));
|
|
286
|
-
}
|
|
287
|
-
// Mark as imported
|
|
288
|
-
yield* _effectApp.Effect.promise(() => container.items.create({
|
|
289
|
-
_partitionKey: importedMarkerId,
|
|
290
|
-
id: importedMarkerId,
|
|
291
|
-
ttl: -1
|
|
292
|
-
}));
|
|
293
|
-
}
|
|
294
|
-
return s;
|
|
295
|
-
})
|
|
296
|
-
};
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
function CosmosStoreLayer(cfg) {
|
|
300
|
-
return _service.StoreMaker.toLayer(makeCosmosStore(cfg)).pipe(_effectApp.Layer.provide((0, _cosmosClient.CosmosClientLayer)(_effectApp.Redacted.value(cfg.url), cfg.dbName)));
|
|
301
|
-
}
|
|
302
|
-
//# sourceMappingURL=Cosmos.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Cosmos.cjs","names":["_effectApp","require","_Array","_utils","_cosmosClient","_errors","_logger","_query","_service","makeMapId","idKey","id","e","makeReverseMapId","t","CosmosDbOperationError","message","constructor","makeCosmosStore","prefix","Effect","gen","db","CosmosClient","make","name","seed","config","mapId","mapReverseId","containerId","promise","containers","createIfNotExists","dropUndefinedT","uniqueKeyPolicy","uniqueKeys","undefined","defaultValues","container","bulk","items","bind","execBatch","batch","importedMarkerId","bulkSet","b","map","x","Option","match","fromNullable","_etag","onNone","operationType","resourceBody","Struct","omit","_partitionKey","partitionValue","partitionKey","onSome","eTag","ifMatch","batches","Chunk","toReadonlyArray","Array","chunk_","maxBulkSize","batchResult","forEach","i","op","pipe","delay","Duration","millis","flatMap","responses","r","find","statusCode","fail","OptimisticConcurrencyException","type","JSON","stringify","code","r2","die","flat","withSpan","captureStackTrace","attributes","batchSet","suspend","ex","c","result","firstFailed","s","all","sync","query","parameters","value","tap","q","logQuery","fetchAll","then","resources","_","filter","f","skip","limit","buildWhereCosmosQuery3","select","order","pick","item","read","resource","set","create","replace","accessCondition","condition","etag","remove","delete","marker","isSome","InfraLogger","logInfo","m","flatMapOption","succeed","toNonEmptyArray","a","orDie","ttl","CosmosStoreLayer","cfg","StoreMaker","toLayer","Layer","provide","CosmosClientLayer","Redacted","url","dbName"],"sources":["../../src/Store/Cosmos.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/_cjs/Store/Disk.cjs
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.DiskStoreLayer = DiskStoreLayer;
|
|
7
|
-
exports.makeDiskStore = makeDiskStore;
|
|
8
|
-
var fu = _interopRequireWildcard(require("../fileUtil.cjs"));
|
|
9
|
-
var _fs = _interopRequireDefault(require("fs"));
|
|
10
|
-
var _effectApp = require("effect-app");
|
|
11
|
-
var _Memory = require("./Memory.cjs");
|
|
12
|
-
var _service = require("./service.cjs");
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
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); }
|
|
15
|
-
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 && {}.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; }
|
|
16
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
17
|
-
|
|
18
|
-
function makeDiskStoreInt(prefix, idKey, namespace, dir, name, seed, defaultValues) {
|
|
19
|
-
return _effectApp.Effect.gen(function* () {
|
|
20
|
-
if (namespace !== "primary") {
|
|
21
|
-
dir = dir + "/" + namespace;
|
|
22
|
-
if (!_fs.default.existsSync(dir)) {
|
|
23
|
-
_fs.default.mkdirSync(dir);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
const file = dir + "/" + prefix + name + ".json";
|
|
27
|
-
const fsStore = {
|
|
28
|
-
get: fu.readTextFile(file).pipe(_effectApp.Effect.withSpan("Disk.read.readFile [effect-app/infra/Store]", {
|
|
29
|
-
captureStackTrace: false
|
|
30
|
-
}), _effectApp.Effect.flatMap(x => _effectApp.Effect.sync(() => JSON.parse(x)).pipe(_effectApp.Effect.withSpan("Disk.read.parse [effect-app/infra/Store]", {
|
|
31
|
-
captureStackTrace: false
|
|
32
|
-
}))), _effectApp.Effect.orDie, _effectApp.Effect.withSpan("Disk.read [effect-app/infra/Store]", {
|
|
33
|
-
captureStackTrace: false,
|
|
34
|
-
attributes: {
|
|
35
|
-
"disk.file": file
|
|
36
|
-
}
|
|
37
|
-
})),
|
|
38
|
-
setRaw: v => _effectApp.Effect.sync(() => JSON.stringify([...v], undefined, 2)).pipe(_effectApp.Effect.withSpan("Disk.stringify [effect-app/infra/Store]", {
|
|
39
|
-
captureStackTrace: false,
|
|
40
|
-
attributes: {
|
|
41
|
-
"disk.file": file
|
|
42
|
-
}
|
|
43
|
-
}), _effectApp.Effect.flatMap(json => fu.writeTextFile(file, json).pipe(_effectApp.Effect.withSpan("Disk.write.writeFile [effect-app/infra/Store]", {
|
|
44
|
-
captureStackTrace: false,
|
|
45
|
-
attributes: {
|
|
46
|
-
"disk.file_size": json.length
|
|
47
|
-
}
|
|
48
|
-
}))), _effectApp.Effect.withSpan("Disk.write [effect-app/infra/Store]", {
|
|
49
|
-
captureStackTrace: false,
|
|
50
|
-
attributes: {
|
|
51
|
-
"disk.file": file
|
|
52
|
-
}
|
|
53
|
-
}))
|
|
54
|
-
};
|
|
55
|
-
const store = yield* (0, _Memory.makeMemoryStoreInt)(name, idKey, namespace, !_fs.default.existsSync(file) ? seed : fsStore.get, defaultValues);
|
|
56
|
-
yield* store.all.pipe(_effectApp.Effect.flatMap(fsStore.setRaw));
|
|
57
|
-
const sem = _effectApp.Effect.unsafeMakeSemaphore(1);
|
|
58
|
-
const withPermit = sem.withPermits(1);
|
|
59
|
-
const flushToDisk = _effectApp.Effect.flatMap(store.all, fsStore.setRaw).pipe(withPermit);
|
|
60
|
-
const flushToDiskInBackground = flushToDisk.pipe(_effectApp.Effect.tapErrorCause(_effectApp.Console.error), _effectApp.Effect.uninterruptible, _effectApp.Effect.forkDaemon);
|
|
61
|
-
return {
|
|
62
|
-
...store,
|
|
63
|
-
batchSet: (0, _effectApp.flow)(store.batchSet, _effectApp.Effect.tap(flushToDiskInBackground)),
|
|
64
|
-
bulkSet: (0, _effectApp.flow)(store.bulkSet, _effectApp.Effect.tap(flushToDiskInBackground)),
|
|
65
|
-
set: (0, _effectApp.flow)(store.set, _effectApp.Effect.tap(flushToDiskInBackground)),
|
|
66
|
-
remove: (0, _effectApp.flow)(store.remove, _effectApp.Effect.tap(flushToDiskInBackground))
|
|
67
|
-
};
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* The Disk-backed store, flushes writes in background, but keeps the data in memory
|
|
72
|
-
* and should therefore be as fast as the Memory Store.
|
|
73
|
-
*/
|
|
74
|
-
function makeDiskStore({
|
|
75
|
-
prefix
|
|
76
|
-
}, dir) {
|
|
77
|
-
return _effectApp.Effect.sync(() => {
|
|
78
|
-
if (!_fs.default.existsSync(dir)) {
|
|
79
|
-
_fs.default.mkdirSync(dir);
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
make: (name, idKey, seed, config) => _effectApp.Effect.gen(function* () {
|
|
83
|
-
const storesSem = _effectApp.Effect.unsafeMakeSemaphore(1);
|
|
84
|
-
const primary = yield* makeDiskStoreInt(prefix, idKey, "primary", dir, name, seed, config?.defaultValues);
|
|
85
|
-
const stores = new Map([["primary", primary]]);
|
|
86
|
-
const ctx = yield* _effectApp.Effect.context();
|
|
87
|
-
const getStore = !config?.allowNamespace ? _effectApp.Effect.succeed(primary) : _effectApp.FiberRef.get(_Memory.storeId).pipe(_effectApp.Effect.flatMap(namespace => {
|
|
88
|
-
const store = stores.get(namespace);
|
|
89
|
-
if (store) {
|
|
90
|
-
return _effectApp.Effect.succeed(store);
|
|
91
|
-
}
|
|
92
|
-
if (!config.allowNamespace(namespace)) {
|
|
93
|
-
throw new Error(`Namespace ${namespace} not allowed!`);
|
|
94
|
-
}
|
|
95
|
-
return storesSem.withPermits(1)(_effectApp.Effect.suspend(() => {
|
|
96
|
-
const existing = stores.get(namespace);
|
|
97
|
-
if (existing) return _effectApp.Effect.sync(() => existing);
|
|
98
|
-
return makeDiskStoreInt(prefix, idKey, namespace, dir, name, seed, config?.defaultValues).pipe(_effectApp.Effect.orDie, _effectApp.Effect.provide(ctx), _effectApp.Effect.tap(store => _effectApp.Effect.sync(() => stores.set(namespace, store))));
|
|
99
|
-
}));
|
|
100
|
-
}));
|
|
101
|
-
const s = {
|
|
102
|
-
all: _effectApp.Effect.flatMap(getStore, _ => _.all),
|
|
103
|
-
find: (...args) => _effectApp.Effect.flatMap(getStore, _ => _.find(...args)),
|
|
104
|
-
filter: (...args) => _effectApp.Effect.flatMap(getStore, _ => _.filter(...args)),
|
|
105
|
-
set: (...args) => _effectApp.Effect.flatMap(getStore, _ => _.set(...args)),
|
|
106
|
-
batchSet: (...args) => _effectApp.Effect.flatMap(getStore, _ => _.batchSet(...args)),
|
|
107
|
-
bulkSet: (...args) => _effectApp.Effect.flatMap(getStore, _ => _.bulkSet(...args)),
|
|
108
|
-
remove: (...args) => _effectApp.Effect.flatMap(getStore, _ => _.remove(...args))
|
|
109
|
-
};
|
|
110
|
-
return s;
|
|
111
|
-
})
|
|
112
|
-
};
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
function DiskStoreLayer(config, dir) {
|
|
116
|
-
return _service.StoreMaker.toLayer(makeDiskStore(config, dir));
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=Disk.cjs.map
|
package/_cjs/Store/Disk.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Disk.cjs","names":["fu","_interopRequireWildcard","require","_fs","_interopRequireDefault","_effectApp","_Memory","_service","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeDiskStoreInt","prefix","idKey","namespace","dir","name","seed","defaultValues","Effect","gen","fs","existsSync","mkdirSync","file","fsStore","readTextFile","pipe","withSpan","captureStackTrace","flatMap","x","sync","JSON","parse","orDie","attributes","setRaw","v","stringify","undefined","json","writeTextFile","length","store","makeMemoryStoreInt","all","sem","unsafeMakeSemaphore","withPermit","withPermits","flushToDisk","flushToDiskInBackground","tapErrorCause","Console","error","uninterruptible","forkDaemon","batchSet","flow","tap","bulkSet","remove","makeDiskStore","make","config","storesSem","primary","stores","Map","ctx","context","getStore","allowNamespace","succeed","FiberRef","storeId","Error","suspend","existing","provide","s","_","find","args","filter","DiskStoreLayer","StoreMaker","toLayer"],"sources":["../../src/Store/Disk.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|