@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.
Files changed (168) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/package.json +174 -632
  3. package/_cjs/CUPS.cjs +0 -120
  4. package/_cjs/CUPS.cjs.map +0 -1
  5. package/_cjs/Emailer/Sendgrid.cjs +0 -109
  6. package/_cjs/Emailer/Sendgrid.cjs.map +0 -1
  7. package/_cjs/Emailer/fake.cjs +0 -17
  8. package/_cjs/Emailer/fake.cjs.map +0 -1
  9. package/_cjs/Emailer/service.cjs +0 -12
  10. package/_cjs/Emailer/service.cjs.map +0 -1
  11. package/_cjs/Emailer.cjs +0 -17
  12. package/_cjs/Emailer.cjs.map +0 -1
  13. package/_cjs/MainFiberSet.cjs +0 -61
  14. package/_cjs/MainFiberSet.cjs.map +0 -1
  15. package/_cjs/Model/Repository/ext.cjs +0 -68
  16. package/_cjs/Model/Repository/ext.cjs.map +0 -1
  17. package/_cjs/Model/Repository/internal/internal.cjs +0 -245
  18. package/_cjs/Model/Repository/internal/internal.cjs.map +0 -1
  19. package/_cjs/Model/Repository/legacy.cjs +0 -6
  20. package/_cjs/Model/Repository/legacy.cjs.map +0 -1
  21. package/_cjs/Model/Repository/makeRepo.cjs +0 -34
  22. package/_cjs/Model/Repository/makeRepo.cjs.map +0 -1
  23. package/_cjs/Model/Repository/service.cjs +0 -6
  24. package/_cjs/Model/Repository/service.cjs.map +0 -1
  25. package/_cjs/Model/Repository.cjs +0 -52
  26. package/_cjs/Model/Repository.cjs.map +0 -1
  27. package/_cjs/Model/dsl.cjs +0 -54
  28. package/_cjs/Model/dsl.cjs.map +0 -1
  29. package/_cjs/Model/filter/filterApi.cjs +0 -6
  30. package/_cjs/Model/filter/filterApi.cjs.map +0 -1
  31. package/_cjs/Model/filter/types/errors.cjs +0 -6
  32. package/_cjs/Model/filter/types/errors.cjs.map +0 -1
  33. package/_cjs/Model/filter/types/fields.cjs +0 -6
  34. package/_cjs/Model/filter/types/fields.cjs.map +0 -1
  35. package/_cjs/Model/filter/types/path/common.cjs +0 -6
  36. package/_cjs/Model/filter/types/path/common.cjs.map +0 -1
  37. package/_cjs/Model/filter/types/path/eager.cjs +0 -37
  38. package/_cjs/Model/filter/types/path/eager.cjs.map +0 -1
  39. package/_cjs/Model/filter/types/path/index.cjs +0 -6
  40. package/_cjs/Model/filter/types/path/index.cjs.map +0 -1
  41. package/_cjs/Model/filter/types/utils.cjs +0 -6
  42. package/_cjs/Model/filter/types/utils.cjs.map +0 -1
  43. package/_cjs/Model/filter/types/validator.cjs +0 -6
  44. package/_cjs/Model/filter/types/validator.cjs.map +0 -1
  45. package/_cjs/Model/filter/types.cjs +0 -50
  46. package/_cjs/Model/filter/types.cjs.map +0 -1
  47. package/_cjs/Model/query/dsl.cjs +0 -133
  48. package/_cjs/Model/query/dsl.cjs.map +0 -1
  49. package/_cjs/Model/query/new-kid-interpreter.cjs +0 -162
  50. package/_cjs/Model/query/new-kid-interpreter.cjs.map +0 -1
  51. package/_cjs/Model/query.cjs +0 -28
  52. package/_cjs/Model/query.cjs.map +0 -1
  53. package/_cjs/Model.cjs +0 -34
  54. package/_cjs/Model.cjs.map +0 -1
  55. package/_cjs/Operations.cjs +0 -105
  56. package/_cjs/Operations.cjs.map +0 -1
  57. package/_cjs/OperationsRepo.cjs +0 -21
  58. package/_cjs/OperationsRepo.cjs.map +0 -1
  59. package/_cjs/QueueMaker/SQLQueue.cjs +0 -149
  60. package/_cjs/QueueMaker/SQLQueue.cjs.map +0 -1
  61. package/_cjs/QueueMaker/errors.cjs +0 -29
  62. package/_cjs/QueueMaker/errors.cjs.map +0 -1
  63. package/_cjs/QueueMaker/memQueue.cjs +0 -90
  64. package/_cjs/QueueMaker/memQueue.cjs.map +0 -1
  65. package/_cjs/QueueMaker/sbqueue.cjs +0 -107
  66. package/_cjs/QueueMaker/sbqueue.cjs.map +0 -1
  67. package/_cjs/QueueMaker/service.cjs +0 -10
  68. package/_cjs/QueueMaker/service.cjs.map +0 -1
  69. package/_cjs/RequestContext.cjs +0 -54
  70. package/_cjs/RequestContext.cjs.map +0 -1
  71. package/_cjs/RequestFiberSet.cjs +0 -85
  72. package/_cjs/RequestFiberSet.cjs.map +0 -1
  73. package/_cjs/Store/ContextMapContainer.cjs +0 -19
  74. package/_cjs/Store/ContextMapContainer.cjs.map +0 -1
  75. package/_cjs/Store/Cosmos/query.cjs +0 -170
  76. package/_cjs/Store/Cosmos/query.cjs.map +0 -1
  77. package/_cjs/Store/Cosmos.cjs +0 -302
  78. package/_cjs/Store/Cosmos.cjs.map +0 -1
  79. package/_cjs/Store/Disk.cjs +0 -118
  80. package/_cjs/Store/Disk.cjs.map +0 -1
  81. package/_cjs/Store/Memory.cjs +0 -174
  82. package/_cjs/Store/Memory.cjs.map +0 -1
  83. package/_cjs/Store/codeFilter.cjs +0 -128
  84. package/_cjs/Store/codeFilter.cjs.map +0 -1
  85. package/_cjs/Store/index.cjs +0 -46
  86. package/_cjs/Store/index.cjs.map +0 -1
  87. package/_cjs/Store/service.cjs +0 -73
  88. package/_cjs/Store/service.cjs.map +0 -1
  89. package/_cjs/Store/utils.cjs +0 -70
  90. package/_cjs/Store/utils.cjs.map +0 -1
  91. package/_cjs/Store.cjs +0 -17
  92. package/_cjs/Store.cjs.map +0 -1
  93. package/_cjs/adapters/SQL/Model.cjs +0 -501
  94. package/_cjs/adapters/SQL/Model.cjs.map +0 -1
  95. package/_cjs/adapters/SQL.cjs +0 -11
  96. package/_cjs/adapters/SQL.cjs.map +0 -1
  97. package/_cjs/adapters/ServiceBus.cjs +0 -76
  98. package/_cjs/adapters/ServiceBus.cjs.map +0 -1
  99. package/_cjs/adapters/cosmos-client.cjs +0 -18
  100. package/_cjs/adapters/cosmos-client.cjs.map +0 -1
  101. package/_cjs/adapters/index.cjs +0 -6
  102. package/_cjs/adapters/index.cjs.map +0 -1
  103. package/_cjs/adapters/logger.cjs +0 -9
  104. package/_cjs/adapters/logger.cjs.map +0 -1
  105. package/_cjs/adapters/memQueue.cjs +0 -27
  106. package/_cjs/adapters/memQueue.cjs.map +0 -1
  107. package/_cjs/adapters/mongo-client.cjs +0 -20
  108. package/_cjs/adapters/mongo-client.cjs.map +0 -1
  109. package/_cjs/adapters/redis-client.cjs +0 -83
  110. package/_cjs/adapters/redis-client.cjs.map +0 -1
  111. package/_cjs/api/codec.cjs +0 -13
  112. package/_cjs/api/codec.cjs.map +0 -1
  113. package/_cjs/api/internal/RequestContextMiddleware.cjs +0 -41
  114. package/_cjs/api/internal/RequestContextMiddleware.cjs.map +0 -1
  115. package/_cjs/api/internal/auth.cjs +0 -58
  116. package/_cjs/api/internal/auth.cjs.map +0 -1
  117. package/_cjs/api/internal/events.cjs +0 -34
  118. package/_cjs/api/internal/events.cjs.map +0 -1
  119. package/_cjs/api/internal/health.cjs +0 -13
  120. package/_cjs/api/internal/health.cjs.map +0 -1
  121. package/_cjs/api/internal/middlewares.cjs +0 -197
  122. package/_cjs/api/internal/middlewares.cjs.map +0 -1
  123. package/_cjs/api/middlewares.cjs +0 -115
  124. package/_cjs/api/middlewares.cjs.map +0 -1
  125. package/_cjs/api/reportError.cjs +0 -29
  126. package/_cjs/api/reportError.cjs.map +0 -1
  127. package/_cjs/api/routing/DynamicMiddleware.cjs +0 -19
  128. package/_cjs/api/routing/DynamicMiddleware.cjs.map +0 -1
  129. package/_cjs/api/routing/schema/jwt.cjs +0 -21
  130. package/_cjs/api/routing/schema/jwt.cjs.map +0 -1
  131. package/_cjs/api/routing/utils.cjs +0 -53
  132. package/_cjs/api/routing/utils.cjs.map +0 -1
  133. package/_cjs/api/routing.cjs +0 -228
  134. package/_cjs/api/routing.cjs.map +0 -1
  135. package/_cjs/api/routing.legacy.cjs +0 -191
  136. package/_cjs/api/routing.legacy.cjs.map +0 -1
  137. package/_cjs/api/routing.legacy2.cjs +0 -210
  138. package/_cjs/api/routing.legacy2.cjs.map +0 -1
  139. package/_cjs/api/routing.legacy3.cjs +0 -214
  140. package/_cjs/api/routing.legacy3.cjs.map +0 -1
  141. package/_cjs/api/setupRequest.cjs +0 -58
  142. package/_cjs/api/setupRequest.cjs.map +0 -1
  143. package/_cjs/api/util.cjs +0 -17
  144. package/_cjs/api/util.cjs.map +0 -1
  145. package/_cjs/arbs.cjs +0 -25
  146. package/_cjs/arbs.cjs.map +0 -1
  147. package/_cjs/errorReporter.cjs +0 -74
  148. package/_cjs/errorReporter.cjs.map +0 -1
  149. package/_cjs/errors.cjs +0 -17
  150. package/_cjs/errors.cjs.map +0 -1
  151. package/_cjs/fileUtil.cjs +0 -48
  152. package/_cjs/fileUtil.cjs.map +0 -1
  153. package/_cjs/index.cjs +0 -11
  154. package/_cjs/index.cjs.map +0 -1
  155. package/_cjs/logger/jsonLogger.cjs +0 -43
  156. package/_cjs/logger/jsonLogger.cjs.map +0 -1
  157. package/_cjs/logger/logFmtLogger.cjs +0 -25
  158. package/_cjs/logger/logFmtLogger.cjs.map +0 -1
  159. package/_cjs/logger/shared.cjs +0 -30
  160. package/_cjs/logger/shared.cjs.map +0 -1
  161. package/_cjs/logger.cjs +0 -9
  162. package/_cjs/logger.cjs.map +0 -1
  163. package/_cjs/rateLimit.cjs +0 -76
  164. package/_cjs/rateLimit.cjs.map +0 -1
  165. package/_cjs/test.cjs +0 -77
  166. package/_cjs/test.cjs.map +0 -1
  167. package/_cjs/vitest.cjs +0 -28
  168. 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":[]}
@@ -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":[]}
@@ -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
@@ -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":[]}