@effect-app/infra 2.0.2 → 2.1.1

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 (110) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/api/internal/events.cjs +2 -2
  3. package/_cjs/api/internal/events.cjs.map +1 -1
  4. package/_cjs/fileUtil.cjs +48 -0
  5. package/_cjs/fileUtil.cjs.map +1 -0
  6. package/_cjs/services/CUPS.cjs +121 -0
  7. package/_cjs/services/CUPS.cjs.map +1 -0
  8. package/_cjs/services/QueueMaker/SQLQueue.cjs +1 -1
  9. package/_cjs/services/QueueMaker/SQLQueue.cjs.map +1 -1
  10. package/_cjs/services/QueueMaker/memQueue.cjs +1 -1
  11. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  12. package/_cjs/services/QueueMaker/sbqueue.cjs +1 -1
  13. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  14. package/_cjs/services/Store/Cosmos.cjs +1 -1
  15. package/_cjs/services/Store/Cosmos.cjs.map +1 -1
  16. package/_cjs/services/Store/Disk.cjs +1 -1
  17. package/_cjs/services/adapters/SQL/Model.cjs +500 -0
  18. package/_cjs/services/adapters/SQL/Model.cjs.map +1 -0
  19. package/_cjs/services/adapters/SQL.cjs +11 -0
  20. package/_cjs/services/adapters/SQL.cjs.map +1 -0
  21. package/_cjs/services/adapters/ServiceBus.cjs +76 -0
  22. package/_cjs/services/adapters/ServiceBus.cjs.map +1 -0
  23. package/_cjs/services/adapters/cosmos-client.cjs +18 -0
  24. package/_cjs/services/adapters/cosmos-client.cjs.map +1 -0
  25. package/_cjs/services/adapters/index.cjs +6 -0
  26. package/_cjs/services/adapters/index.cjs.map +1 -0
  27. package/_cjs/services/adapters/logger.cjs +9 -0
  28. package/_cjs/services/adapters/logger.cjs.map +1 -0
  29. package/_cjs/services/adapters/memQueue.cjs +31 -0
  30. package/_cjs/services/adapters/memQueue.cjs.map +1 -0
  31. package/_cjs/services/adapters/mongo-client.cjs +20 -0
  32. package/_cjs/services/adapters/mongo-client.cjs.map +1 -0
  33. package/_cjs/services/adapters/redis-client.cjs +83 -0
  34. package/_cjs/services/adapters/redis-client.cjs.map +1 -0
  35. package/dist/api/internal/events.d.ts.map +1 -1
  36. package/dist/api/internal/events.js +3 -3
  37. package/dist/fileUtil.d.ts +23 -0
  38. package/dist/fileUtil.d.ts.map +1 -0
  39. package/dist/fileUtil.js +41 -0
  40. package/dist/services/CUPS.d.ts +29 -0
  41. package/dist/services/CUPS.d.ts.map +1 -0
  42. package/dist/services/CUPS.js +116 -0
  43. package/dist/services/QueueMaker/SQLQueue.d.ts.map +1 -1
  44. package/dist/services/QueueMaker/SQLQueue.js +2 -2
  45. package/dist/services/QueueMaker/memQueue.d.ts +1 -1
  46. package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
  47. package/dist/services/QueueMaker/memQueue.js +2 -2
  48. package/dist/services/QueueMaker/sbqueue.d.ts +3 -3
  49. package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
  50. package/dist/services/QueueMaker/sbqueue.js +2 -2
  51. package/dist/services/Repository/ext.d.ts +11 -11
  52. package/dist/services/RepositoryBase.d.ts +6 -6
  53. package/dist/services/Store/Cosmos.d.ts.map +1 -1
  54. package/dist/services/Store/Cosmos.js +2 -2
  55. package/dist/services/Store/Disk.js +2 -2
  56. package/dist/services/adapters/SQL/Model.d.ts +538 -0
  57. package/dist/services/adapters/SQL/Model.d.ts.map +1 -0
  58. package/dist/services/adapters/SQL/Model.js +508 -0
  59. package/dist/services/adapters/SQL.d.ts +2 -0
  60. package/dist/services/adapters/SQL.d.ts.map +1 -0
  61. package/dist/services/adapters/SQL.js +2 -0
  62. package/dist/services/adapters/ServiceBus.d.ts +50 -0
  63. package/dist/services/adapters/ServiceBus.d.ts.map +1 -0
  64. package/dist/services/adapters/ServiceBus.js +73 -0
  65. package/dist/services/adapters/cosmos-client.d.ts +10 -0
  66. package/dist/services/adapters/cosmos-client.d.ts.map +1 -0
  67. package/dist/services/adapters/cosmos-client.js +8 -0
  68. package/dist/services/adapters/index.d.ts +2 -0
  69. package/dist/services/adapters/index.d.ts.map +1 -0
  70. package/dist/services/adapters/index.js +2 -0
  71. package/dist/services/adapters/logger.d.ts +8 -0
  72. package/dist/services/adapters/logger.d.ts.map +1 -0
  73. package/dist/services/adapters/logger.js +3 -0
  74. package/dist/services/adapters/memQueue.d.ts +34 -0
  75. package/dist/services/adapters/memQueue.d.ts.map +1 -0
  76. package/dist/services/adapters/memQueue.js +24 -0
  77. package/dist/services/adapters/mongo-client.d.ts +10 -0
  78. package/dist/services/adapters/mongo-client.d.ts.map +1 -0
  79. package/dist/services/adapters/mongo-client.js +12 -0
  80. package/dist/services/adapters/redis-client.d.ts +29 -0
  81. package/dist/services/adapters/redis-client.d.ts.map +1 -0
  82. package/dist/services/adapters/redis-client.js +93 -0
  83. package/package.json +128 -12
  84. package/src/api/internal/events.ts +2 -2
  85. package/src/fileUtil.ts +85 -0
  86. package/src/services/CUPS.ts +158 -0
  87. package/src/services/QueueMaker/SQLQueue.ts +1 -1
  88. package/src/services/QueueMaker/memQueue.ts +1 -1
  89. package/src/services/QueueMaker/sbqueue.ts +7 -7
  90. package/src/services/Store/Cosmos.ts +1 -1
  91. package/src/services/Store/Disk.ts +1 -1
  92. package/src/services/adapters/SQL/Model.ts +939 -0
  93. package/src/services/adapters/SQL.ts +1 -0
  94. package/src/services/adapters/ServiceBus.ts +140 -0
  95. package/src/services/adapters/cosmos-client.ts +16 -0
  96. package/src/services/adapters/index.ts +0 -0
  97. package/src/services/adapters/logger.ts +3 -0
  98. package/src/services/adapters/memQueue.ts +26 -0
  99. package/src/services/adapters/mongo-client.ts +23 -0
  100. package/src/services/adapters/redis-client.ts +123 -0
  101. package/tsconfig.src.json +0 -3
  102. package/src/services/Store/Redis.ts.bak +0 -88
  103. package/src/services/simpledb/cosmosdb.ts.bak +0 -149
  104. package/src/services/simpledb/diskdb.ts.bak +0 -165
  105. package/src/services/simpledb/index.ts.bak +0 -6
  106. package/src/services/simpledb/memdb.ts.bak +0 -78
  107. package/src/services/simpledb/mongodb.ts.bak +0 -107
  108. package/src/services/simpledb/redisdb.ts.bak +0 -202
  109. package/src/services/simpledb/shared.ts.bak +0 -117
  110. package/src/services/simpledb/simpledb.ts.bak +0 -121
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.makeRepository = exports.makeDataLoaders = exports.fields = exports.fieldFromKey = exports.fieldEvolve = exports.extract = exports.Union = exports.Struct = exports.Sensitive = exports.Override = exports.JsonFromString = exports.GeneratedByApp = exports.Generated = exports.FieldOption = exports.FieldOnly = exports.FieldExcept = exports.Field = exports.DateWithNow = exports.DateTimeWithNow = exports.DateTimeUpdateFromNumber = exports.DateTimeUpdateFromDate = exports.DateTimeUpdate = exports.DateTimeInsertFromNumber = exports.DateTimeInsertFromDate = exports.DateTimeInsert = exports.DateTimeFromNumberWithNow = exports.DateTimeFromDateWithNow = exports.DateTimeFromDate = exports.Date = exports.Class = void 0;
7
+ var RRX = _interopRequireWildcard(require("@effect/experimental/RequestResolver"));
8
+ var VariantSchema = _interopRequireWildcard(require("@effect/experimental/VariantSchema"));
9
+ var _SqlClient = require("@effect/sql/SqlClient");
10
+ var SqlResolver = _interopRequireWildcard(require("@effect/sql/SqlResolver"));
11
+ var SqlSchema = _interopRequireWildcard(require("@effect/sql/SqlSchema"));
12
+ var _crypto = require("crypto");
13
+ var DateTime = _interopRequireWildcard(require("effect/DateTime"));
14
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
15
+ var Option = _interopRequireWildcard(require("effect/Option"));
16
+ var ParseResult = _interopRequireWildcard(require("effect/ParseResult"));
17
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
18
+ 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); }
19
+ 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; }
20
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
21
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
22
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
23
+ /* eslint-disable @typescript-eslint/no-explicit-any */
24
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
25
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+
30
+ // TODO
31
+
32
+ const {
33
+ Class,
34
+ Field,
35
+ FieldExcept,
36
+ FieldOnly,
37
+ Struct,
38
+ Union,
39
+ extract,
40
+ fieldEvolve,
41
+ fieldFromKey
42
+ } = VariantSchema.make({
43
+ variants: ["select", "insert", "update", "json", "jsonCreate", "jsonUpdate"],
44
+ defaultVariant: "select"
45
+ });
46
+ exports.fieldFromKey = fieldFromKey;
47
+ exports.fieldEvolve = fieldEvolve;
48
+ exports.extract = extract;
49
+ exports.Union = Union;
50
+ exports.Struct = Struct;
51
+ exports.FieldOnly = FieldOnly;
52
+ exports.FieldExcept = FieldExcept;
53
+ exports.Field = Field;
54
+ exports.Class = Class;
55
+ /**
56
+ * @since 1.0.0
57
+ * @category fields
58
+ */
59
+ const fields = exports.fields = VariantSchema.fields;
60
+ /**
61
+ * @since 1.0.0
62
+ * @category overrideable
63
+ */
64
+ const Override = exports.Override = VariantSchema.Override;
65
+ /**
66
+ * A field that represents a column that is generated by the database.
67
+ *
68
+ * It is available for selection and update, but not for insertion.
69
+ *
70
+ * @since 1.0.0
71
+ * @category generated
72
+ */
73
+ const Generated = schema => Field({
74
+ select: schema,
75
+ update: schema,
76
+ json: schema
77
+ });
78
+ /**
79
+ * A field that represents a column that is generated by the application.
80
+ *
81
+ * It is required by the database, but not by the JSON variants.
82
+ *
83
+ * @since 1.0.0
84
+ * @category generated
85
+ */
86
+ exports.Generated = Generated;
87
+ const GeneratedByApp = schema => Field({
88
+ select: schema,
89
+ insert: schema,
90
+ update: schema,
91
+ json: schema
92
+ });
93
+ /**
94
+ * A field that represents a sensitive value that should not be exposed in the
95
+ * JSON variants.
96
+ *
97
+ * @since 1.0.0
98
+ * @category sensitive
99
+ */
100
+ exports.GeneratedByApp = GeneratedByApp;
101
+ const Sensitive = schema => Field({
102
+ select: schema,
103
+ insert: schema,
104
+ update: schema
105
+ });
106
+ /**
107
+ * Convert a field to one that is optional for all variants.
108
+ *
109
+ * For the database variants, it will accept `null`able values.
110
+ * For the JSON variants, it will also accept missing keys.
111
+ *
112
+ * @since 1.0.0
113
+ * @category optional
114
+ */
115
+ exports.Sensitive = Sensitive;
116
+ const FieldOption = exports.FieldOption = fieldEvolve({
117
+ select: Schema.OptionFromNullOr,
118
+ insert: Schema.OptionFromNullOr,
119
+ update: Schema.OptionFromNullOr,
120
+ json: Schema.optionalWith({
121
+ as: "Option"
122
+ }),
123
+ jsonCreate: Schema.optionalWith({
124
+ as: "Option",
125
+ nullable: true
126
+ }),
127
+ jsonUpdate: Schema.optionalWith({
128
+ as: "Option",
129
+ nullable: true
130
+ })
131
+ });
132
+ /**
133
+ * @since 1.0.0
134
+ * @category date & time
135
+ */
136
+ const DateTimeFromDate = exports.DateTimeFromDate = Schema.transform(Schema.ValidDateFromSelf, Schema.DateTimeUtcFromSelf, {
137
+ decode: DateTime.unsafeFromDate,
138
+ encode: DateTime.toDateUtc
139
+ });
140
+ /**
141
+ * A schema for a `DateTime.Utc` that is serialized as a date string in the
142
+ * format `YYYY-MM-DD`.
143
+ *
144
+ * @since 1.0.0
145
+ * @category date & time
146
+ */
147
+ const Date = exports.Date = Schema.transformOrFail(Schema.String, Schema.DateTimeUtcFromSelf, {
148
+ decode: (s, _, ast) => DateTime.make(s).pipe(Option.map(DateTime.removeTime), Option.match({
149
+ onNone: () => ParseResult.fail(new ParseResult.Type(ast, s)),
150
+ onSome: dt => ParseResult.succeed(dt)
151
+ })),
152
+ encode: dt => ParseResult.succeed(DateTime.formatIsoDate(dt))
153
+ });
154
+ /**
155
+ * @since 1.0.0
156
+ * @category date & time
157
+ */
158
+ const DateWithNow = exports.DateWithNow = VariantSchema.Overrideable(Date, Schema.DateTimeUtcFromSelf, {
159
+ generate: Option.match({
160
+ onNone: () => Effect.map(DateTime.now, DateTime.removeTime),
161
+ onSome: dt => Effect.succeed(DateTime.removeTime(dt))
162
+ })
163
+ });
164
+ /**
165
+ * @since 1.0.0
166
+ * @category date & time
167
+ */
168
+ const DateTimeWithNow = exports.DateTimeWithNow = VariantSchema.Overrideable(Schema.String, Schema.DateTimeUtcFromSelf, {
169
+ generate: Option.match({
170
+ onNone: () => Effect.map(DateTime.now, DateTime.formatIso),
171
+ onSome: dt => Effect.succeed(DateTime.formatIso(dt))
172
+ })
173
+ });
174
+ /**
175
+ * @since 1.0.0
176
+ * @category date & time
177
+ */
178
+ const DateTimeFromDateWithNow = exports.DateTimeFromDateWithNow = VariantSchema.Overrideable(Schema.DateFromSelf, Schema.DateTimeUtcFromSelf, {
179
+ generate: Option.match({
180
+ onNone: () => Effect.map(DateTime.now, DateTime.toDateUtc),
181
+ onSome: dt => Effect.succeed(DateTime.toDateUtc(dt))
182
+ })
183
+ });
184
+ /**
185
+ * @since 1.0.0
186
+ * @category date & time
187
+ */
188
+ const DateTimeFromNumberWithNow = exports.DateTimeFromNumberWithNow = VariantSchema.Overrideable(Schema.Number, Schema.DateTimeUtcFromSelf, {
189
+ generate: Option.match({
190
+ onNone: () => Effect.map(DateTime.now, DateTime.toEpochMillis),
191
+ onSome: dt => Effect.succeed(DateTime.toEpochMillis(dt))
192
+ })
193
+ });
194
+ /**
195
+ * A field that represents a date-time value that is inserted as the current
196
+ * `DateTime.Utc`. It is serialized as a string for the database.
197
+ *
198
+ * It is omitted from updates and is available for selection.
199
+ *
200
+ * @since 1.0.0
201
+ * @category date & time
202
+ */
203
+ const DateTimeInsert = exports.DateTimeInsert = Field({
204
+ select: Schema.DateTimeUtc,
205
+ insert: DateTimeWithNow,
206
+ json: Schema.DateTimeUtc
207
+ });
208
+ /**
209
+ * A field that represents a date-time value that is inserted as the current
210
+ * `DateTime.Utc`. It is serialized as a `Date` for the database.
211
+ *
212
+ * It is omitted from updates and is available for selection.
213
+ *
214
+ * @since 1.0.0
215
+ * @category date & time
216
+ */
217
+ const DateTimeInsertFromDate = exports.DateTimeInsertFromDate = Field({
218
+ select: DateTimeFromDate,
219
+ insert: DateTimeFromDateWithNow,
220
+ json: Schema.DateTimeUtc
221
+ });
222
+ /**
223
+ * A field that represents a date-time value that is inserted as the current
224
+ * `DateTime.Utc`. It is serialized as a `number`.
225
+ *
226
+ * It is omitted from updates and is available for selection.
227
+ *
228
+ * @since 1.0.0
229
+ * @category date & time
230
+ */
231
+ const DateTimeInsertFromNumber = exports.DateTimeInsertFromNumber = Field({
232
+ select: Schema.DateTimeUtcFromNumber,
233
+ insert: DateTimeFromNumberWithNow,
234
+ json: Schema.DateTimeUtcFromNumber
235
+ });
236
+ /**
237
+ * A field that represents a date-time value that is updated as the current
238
+ * `DateTime.Utc`. It is serialized as a string for the database.
239
+ *
240
+ * It is set to the current `DateTime.Utc` on updates and inserts and is
241
+ * available for selection.
242
+ *
243
+ * @since 1.0.0
244
+ * @category date & time
245
+ */
246
+ const DateTimeUpdate = exports.DateTimeUpdate = Field({
247
+ select: Schema.DateTimeUtc,
248
+ insert: DateTimeWithNow,
249
+ update: DateTimeWithNow,
250
+ json: Schema.DateTimeUtc
251
+ });
252
+ /**
253
+ * A field that represents a date-time value that is updated as the current
254
+ * `DateTime.Utc`. It is serialized as a `Date` for the database.
255
+ *
256
+ * It is set to the current `DateTime.Utc` on updates and inserts and is
257
+ * available for selection.
258
+ *
259
+ * @since 1.0.0
260
+ * @category date & time
261
+ */
262
+ const DateTimeUpdateFromDate = exports.DateTimeUpdateFromDate = Field({
263
+ select: DateTimeFromDate,
264
+ insert: DateTimeFromDateWithNow,
265
+ update: DateTimeFromDateWithNow,
266
+ json: Schema.DateTimeUtc
267
+ });
268
+ /**
269
+ * A field that represents a date-time value that is updated as the current
270
+ * `DateTime.Utc`. It is serialized as a `number`.
271
+ *
272
+ * It is set to the current `DateTime.Utc` on updates and inserts and is
273
+ * available for selection.
274
+ *
275
+ * @since 1.0.0
276
+ * @category date & time
277
+ */
278
+ const DateTimeUpdateFromNumber = exports.DateTimeUpdateFromNumber = Field({
279
+ select: Schema.DateTimeUtcFromNumber,
280
+ insert: DateTimeFromNumberWithNow,
281
+ update: DateTimeFromNumberWithNow,
282
+ json: Schema.DateTimeUtcFromNumber
283
+ });
284
+ /**
285
+ * A field that represents a JSON value stored as text in the database.
286
+ *
287
+ * The "json" variants will use the object schema directly.
288
+ *
289
+ * @since 1.0.0
290
+ * @category json
291
+ */
292
+ const JsonFromString = schema => {
293
+ const parsed = Schema.parseJson(schema);
294
+ return Field({
295
+ select: parsed,
296
+ insert: parsed,
297
+ update: parsed,
298
+ json: schema,
299
+ jsonCreate: schema,
300
+ jsonUpdate: schema
301
+ });
302
+ };
303
+ /**
304
+ * Create a simple CRUD repository from a model.
305
+ *
306
+ * @since 1.0.0
307
+ * @category repository
308
+ */
309
+ exports.JsonFromString = JsonFromString;
310
+ const makeRepository = (Model, options) => Effect.gen(function* () {
311
+ const sql = yield* _SqlClient.SqlClient;
312
+ const idSchema = Model.fields[options.idColumn];
313
+ const idColumn = options.idColumn;
314
+ const versionColumn = options.versionColumn;
315
+ // TODO: insert version automatically...
316
+ // I guess we should hide the versionColumn and insert it in the schema instead
317
+ const insertSchema = SqlSchema.single({
318
+ Request: Model.insert,
319
+ Result: Model,
320
+ execute: request => sql.onDialectOrElse({
321
+ mysql: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request)};
322
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID();`.unprepared.pipe(Effect.map(([, results]) => results)),
323
+ orElse: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request).returning("*")}`
324
+ })
325
+ });
326
+ const insert = insert => insertSchema(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insert`, {
327
+ captureStackTrace: false,
328
+ attributes: {
329
+ insert
330
+ }
331
+ }));
332
+ const insertVoidSchema = SqlSchema.void({
333
+ Request: Model.insert,
334
+ execute: request => sql`insert into ${sql(options.tableName)} ${sql.insert(request)}`
335
+ });
336
+ const insertVoid = insert => insertVoidSchema(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insertVoid`, {
337
+ captureStackTrace: false,
338
+ attributes: {
339
+ insert
340
+ }
341
+ }));
342
+ const updateSchema = SqlSchema.single({
343
+ Request: Model.update,
344
+ Result: Model,
345
+ execute: versionColumn ? request => sql.onDialectOrElse({
346
+ mysql: () => sql`update ${sql(options.tableName)} set ${sql.update({
347
+ ...request,
348
+ [versionColumn]: (0, _crypto.randomUUID)()
349
+ }, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} and ${sql(versionColumn)} = ${request[versionColumn]};
350
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idColumn]};`.unprepared.pipe(Effect.map(([, results]) => results)),
351
+ orElse: () => sql`update ${sql(options.tableName)} set ${sql.update({
352
+ ...request,
353
+ [versionColumn]: (0, _crypto.randomUUID)()
354
+ }, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} and ${sql(versionColumn)} = ${request[versionColumn]} returning *`
355
+ }) : request => sql.onDialectOrElse({
356
+ mysql: () => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]};
357
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${request[idColumn]};`.unprepared.pipe(Effect.map(([, results]) => results)),
358
+ orElse: () => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} returning *`
359
+ })
360
+ });
361
+ const update = update => updateSchema(update).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.update`, {
362
+ captureStackTrace: false,
363
+ attributes: {
364
+ update
365
+ }
366
+ }));
367
+ const updateVoidSchema = SqlSchema.void({
368
+ Request: Model.update,
369
+ execute: versionColumn ? request => sql`update ${sql(options.tableName)} set ${sql.update({
370
+ ...request,
371
+ [versionColumn]: (0, _crypto.randomUUID)()
372
+ }, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]} and ${sql(versionColumn)} = ${request[versionColumn]}` : request => sql`update ${sql(options.tableName)} set ${sql.update(request, [idColumn])} where ${sql(idColumn)} = ${request[idColumn]}`
373
+ });
374
+ const updateVoid = update => updateVoidSchema(update).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.updateVoid`, {
375
+ captureStackTrace: false,
376
+ attributes: {
377
+ update
378
+ }
379
+ }));
380
+ const findByIdSchema = SqlSchema.findOne({
381
+ Request: idSchema,
382
+ Result: Model,
383
+ execute: id => sql`select * from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
384
+ });
385
+ const findById = id => findByIdSchema(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.findById`, {
386
+ captureStackTrace: false,
387
+ attributes: {
388
+ id
389
+ }
390
+ }));
391
+ const deleteSchema = SqlSchema.void({
392
+ Request: idSchema,
393
+ execute: id => sql`delete from ${sql(options.tableName)} where ${sql(idColumn)} = ${id}`
394
+ });
395
+ const delete_ = id => deleteSchema(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.delete`, {
396
+ captureStackTrace: false,
397
+ attributes: {
398
+ id
399
+ }
400
+ }));
401
+ return {
402
+ insert,
403
+ insertVoid,
404
+ update,
405
+ updateVoid,
406
+ findById,
407
+ delete: delete_
408
+ };
409
+ });
410
+ /**
411
+ * Create some simple data loaders from a model.
412
+ *
413
+ * @since 1.0.0
414
+ * @category repository
415
+ */
416
+ exports.makeRepository = makeRepository;
417
+ const makeDataLoaders = (Model, options) => Effect.gen(function* () {
418
+ const sql = yield* _SqlClient.SqlClient;
419
+ const idSchema = Model.fields[options.idColumn];
420
+ const idColumn = options.idColumn;
421
+ const insertResolver = yield* SqlResolver.ordered(`${options.spanPrefix}/insert`, {
422
+ Request: Model.insert,
423
+ Result: Model,
424
+ execute: request => sql.onDialectOrElse({
425
+ mysql: () => Effect.forEach(request, request => sql`insert into ${sql(options.tableName)} ${sql.insert(request)};
426
+ select * from ${sql(options.tableName)} where ${sql(idColumn)} = LAST_INSERT_ID();`.unprepared.pipe(Effect.map(([, results]) => results)), {
427
+ concurrency: 10
428
+ }),
429
+ orElse: () => sql`insert into ${sql(options.tableName)} ${sql.insert(request).returning("*")}`
430
+ })
431
+ });
432
+ const insertLoader = yield* RRX.dataLoader(insertResolver, {
433
+ window: options.window,
434
+ maxBatchSize: options.maxBatchSize
435
+ });
436
+ const insertExecute = insertResolver.makeExecute(insertLoader);
437
+ const insert = insert => insertExecute(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insert`, {
438
+ captureStackTrace: false,
439
+ attributes: {
440
+ insert
441
+ }
442
+ }));
443
+ const insertVoidResolver = yield* SqlResolver.void(`${options.spanPrefix}/insertVoid`, {
444
+ Request: Model.insert,
445
+ execute: request => sql`insert into ${sql(options.tableName)} ${sql.insert(request)}`
446
+ });
447
+ const insertVoidLoader = yield* RRX.dataLoader(insertVoidResolver, {
448
+ window: options.window,
449
+ maxBatchSize: options.maxBatchSize
450
+ });
451
+ const insertVoidExecute = insertVoidResolver.makeExecute(insertVoidLoader);
452
+ const insertVoid = insert => insertVoidExecute(insert).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.insertVoid`, {
453
+ captureStackTrace: false,
454
+ attributes: {
455
+ insert
456
+ }
457
+ }));
458
+ const findByIdResolver = yield* SqlResolver.findById(`${options.spanPrefix}/findById`, {
459
+ Id: idSchema,
460
+ Result: Model,
461
+ ResultId(request) {
462
+ return request[idColumn];
463
+ },
464
+ execute: ids => sql`select * from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}`
465
+ });
466
+ const findByIdLoader = yield* RRX.dataLoader(findByIdResolver, {
467
+ window: options.window,
468
+ maxBatchSize: options.maxBatchSize
469
+ });
470
+ const findByIdExecute = findByIdResolver.makeExecute(findByIdLoader);
471
+ const findById = id => findByIdExecute(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.findById`, {
472
+ captureStackTrace: false,
473
+ attributes: {
474
+ id
475
+ }
476
+ }));
477
+ const deleteResolver = yield* SqlResolver.void(`${options.spanPrefix}/delete`, {
478
+ Request: idSchema,
479
+ execute: ids => sql`delete from ${sql(options.tableName)} where ${sql.in(idColumn, ids)}`
480
+ });
481
+ const deleteLoader = yield* RRX.dataLoader(deleteResolver, {
482
+ window: options.window,
483
+ maxBatchSize: options.maxBatchSize
484
+ });
485
+ const deleteExecute = deleteResolver.makeExecute(deleteLoader);
486
+ const delete_ = id => deleteExecute(id).pipe(Effect.orDie, Effect.withSpan(`${options.spanPrefix}.delete`, {
487
+ captureStackTrace: false,
488
+ attributes: {
489
+ id
490
+ }
491
+ }));
492
+ return {
493
+ insert,
494
+ insertVoid,
495
+ findById,
496
+ delete: delete_
497
+ };
498
+ });
499
+ exports.makeDataLoaders = makeDataLoaders;
500
+ //# sourceMappingURL=Model.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Model.cjs","names":["RRX","_interopRequireWildcard","require","VariantSchema","_SqlClient","SqlResolver","SqlSchema","_crypto","DateTime","Effect","Option","ParseResult","Schema","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Class","Field","FieldExcept","FieldOnly","Struct","Union","extract","fieldEvolve","fieldFromKey","make","variants","defaultVariant","exports","fields","Override","Generated","schema","select","update","json","GeneratedByApp","insert","Sensitive","FieldOption","OptionFromNullOr","optionalWith","as","jsonCreate","nullable","jsonUpdate","DateTimeFromDate","transform","ValidDateFromSelf","DateTimeUtcFromSelf","decode","unsafeFromDate","encode","toDateUtc","Date","transformOrFail","String","s","_","ast","pipe","map","removeTime","match","onNone","fail","Type","onSome","dt","succeed","formatIsoDate","DateWithNow","Overrideable","generate","now","DateTimeWithNow","formatIso","DateTimeFromDateWithNow","DateFromSelf","DateTimeFromNumberWithNow","Number","toEpochMillis","DateTimeInsert","DateTimeUtc","DateTimeInsertFromDate","DateTimeInsertFromNumber","DateTimeUtcFromNumber","DateTimeUpdate","DateTimeUpdateFromDate","DateTimeUpdateFromNumber","JsonFromString","parsed","parseJson","makeRepository","Model","options","gen","sql","SqlClient","idSchema","idColumn","versionColumn","insertSchema","single","Request","Result","execute","request","onDialectOrElse","mysql","tableName","unprepared","results","orElse","returning","orDie","withSpan","spanPrefix","captureStackTrace","attributes","insertVoidSchema","void","insertVoid","updateSchema","randomUUID","updateVoidSchema","updateVoid","findByIdSchema","findOne","id","findById","deleteSchema","delete_","delete","makeDataLoaders","insertResolver","ordered","forEach","concurrency","insertLoader","dataLoader","window","maxBatchSize","insertExecute","makeExecute","insertVoidResolver","insertVoidLoader","insertVoidExecute","findByIdResolver","Id","ResultId","ids","in","findByIdLoader","findByIdExecute","deleteResolver","deleteLoader","deleteExecute"],"sources":["../../../../src/services/adapters/SQL/Model.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Model = void 0;
7
+ var _Model = _interopRequireWildcard(require("./SQL/Model.cjs"));
8
+ exports.Model = _Model;
9
+ 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); }
10
+ 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; }
11
+ //# sourceMappingURL=SQL.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQL.cjs","names":[],"sources":["../../../src/services/adapters/SQL.ts"],"sourcesContent":[null],"mappings":"","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LiveSender = LiveSender;
7
+ exports.ServiceBusReceiverFactory = exports.Sender = exports.LiveServiceBusClient = void 0;
8
+ exports.sendMessages = sendMessages;
9
+ exports.subscribe = subscribe;
10
+ var _serviceBus = require("@azure/service-bus");
11
+ var _effectApp = require("effect-app");
12
+ var _logger = require("./logger.cjs");
13
+ function makeClient(url) {
14
+ return _effectApp.Effect.acquireRelease(_effectApp.Effect.sync(() => new _serviceBus.ServiceBusClient(url)), client => _effectApp.Effect.promise(() => client.close()));
15
+ }
16
+ const Client = _effectApp.Context.GenericTag("@services/Client");
17
+ const LiveServiceBusClient = url => _effectApp.Layer.scoped(Client)(makeClient(url));
18
+ exports.LiveServiceBusClient = LiveServiceBusClient;
19
+ function makeSender(queueName) {
20
+ return _effectApp.Effect.gen(function* () {
21
+ const serviceBusClient = yield* Client;
22
+ return yield* _effectApp.Effect.acquireRelease(_effectApp.Effect.sync(() => serviceBusClient.createSender(queueName)), subscription => _effectApp.Effect.promise(() => subscription.close()));
23
+ });
24
+ }
25
+ const Sender = exports.Sender = _effectApp.Context.GenericTag("@services/Sender");
26
+ function LiveSender(queueName) {
27
+ return _effectApp.Layer.scoped(Sender, makeSender(queueName));
28
+ }
29
+ function makeReceiver(queueName, waitTillEmpty, sessionId) {
30
+ return _effectApp.Effect.gen(function* () {
31
+ const serviceBusClient = yield* Client;
32
+ return yield* _effectApp.Effect.acquireRelease(sessionId ? _effectApp.Effect.promise(() => serviceBusClient.acceptSession(queueName, sessionId)) : _effectApp.Effect.sync(() => serviceBusClient.createReceiver(queueName)), r => waitTillEmpty.pipe(_effectApp.Effect.andThen(_effectApp.Effect.promise(() => r.close()))));
33
+ });
34
+ }
35
+ class ServiceBusReceiverFactory extends _effectApp.Context.TagId("ServiceBusReceiverFactory")() {
36
+ static Live = queueName => this.toLayer(Client.pipe(_effectApp.Effect.andThen(cl => ({
37
+ make: waitTillEmpty => makeReceiver(queueName, waitTillEmpty).pipe(_effectApp.Effect.provideService(Client, cl)),
38
+ makeSession: (sessionId, waitTillEmpty) => makeReceiver(queueName, waitTillEmpty, sessionId).pipe(_effectApp.Effect.provideService(Client, cl))
39
+ }))));
40
+ }
41
+ exports.ServiceBusReceiverFactory = ServiceBusReceiverFactory;
42
+ function sendMessages(messages, options) {
43
+ return _effectApp.Effect.gen(function* () {
44
+ const s = yield* Sender;
45
+ return yield* _effectApp.Effect.promise(() => s.sendMessages(messages, options));
46
+ });
47
+ }
48
+ function subscribe(hndlr, sessionId) {
49
+ return _effectApp.Effect.gen(function* () {
50
+ const rf = yield* ServiceBusReceiverFactory;
51
+ const fs = yield* _effectApp.FiberSet.make();
52
+ const fr = yield* _effectApp.FiberSet.runtime(fs)();
53
+ const wait = _effectApp.Effect.gen(function* () {
54
+ if ((yield* _effectApp.FiberSet.size(fs)) > 0) {
55
+ yield* _logger.InfraLogger.logDebug("Waiting ServiceBusFiberSet to be empty: " + (yield* _effectApp.FiberSet.size(fs)));
56
+ }
57
+ while ((yield* _effectApp.FiberSet.size(fs)) > 0) yield* _effectApp.Effect.sleep("250 millis");
58
+ });
59
+ const r = yield* sessionId ? rf.makeSession(sessionId, wait) : rf.make(wait);
60
+ const runEffect = effect => new Promise((resolve, reject) => fr(effect).addObserver(exit => {
61
+ if (_effectApp.Exit.isSuccess(exit)) {
62
+ resolve(exit.value);
63
+ } else {
64
+ reject(_effectApp.Cause.pretty(exit.cause, {
65
+ renderErrorCause: true
66
+ }));
67
+ }
68
+ }));
69
+ yield* _effectApp.Effect.acquireRelease(_effectApp.Effect.sync(() => r.subscribe({
70
+ processError: err => runEffect(hndlr.processError(err).pipe(_effectApp.Effect.catchAllCause(cause => _effectApp.Effect.logError("ServiceBus Error", cause)))),
71
+ processMessage: msg => runEffect(hndlr.processMessage(msg))
72
+ // DO NOT CATCH ERRORS here as they should return to the queue!
73
+ })), subscription => _effectApp.Effect.promise(() => subscription.close()));
74
+ });
75
+ }
76
+ //# sourceMappingURL=ServiceBus.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceBus.cjs","names":["_serviceBus","require","_effectApp","_logger","makeClient","url","Effect","acquireRelease","sync","ServiceBusClient","client","promise","close","Client","Context","GenericTag","LiveServiceBusClient","Layer","scoped","exports","makeSender","queueName","gen","serviceBusClient","createSender","subscription","Sender","LiveSender","makeReceiver","waitTillEmpty","sessionId","acceptSession","createReceiver","r","pipe","andThen","ServiceBusReceiverFactory","TagId","Live","toLayer","cl","make","provideService","makeSession","sendMessages","messages","options","s","subscribe","hndlr","rf","fs","FiberSet","fr","runtime","wait","size","InfraLogger","logDebug","sleep","runEffect","effect","Promise","resolve","reject","addObserver","exit","Exit","isSuccess","value","Cause","pretty","cause","renderErrorCause","processError","err","catchAllCause","logError","processMessage","msg"],"sources":["../../../src/services/adapters/ServiceBus.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.makeCosmosClient = exports.db = exports.CosmosClientLayer = exports.CosmosClient = void 0;
7
+ var _cosmos = require("@azure/cosmos");
8
+ var _effectApp = require("effect-app");
9
+ const withClient = url => _effectApp.Effect.sync(() => new _cosmos.CosmosClient(url));
10
+ const makeCosmosClient = (url, dbName) => _effectApp.Effect.map(withClient(url), x => ({
11
+ db: x.database(dbName)
12
+ }));
13
+ exports.makeCosmosClient = makeCosmosClient;
14
+ const CosmosClient = exports.CosmosClient = _effectApp.Context.GenericTag("@services/CosmosClient");
15
+ const db = exports.db = _effectApp.Effect.map(CosmosClient, _ => _.db);
16
+ const CosmosClientLayer = (cosmosUrl, dbName) => _effectApp.Layer.effect(CosmosClient, makeCosmosClient(cosmosUrl, dbName));
17
+ exports.CosmosClientLayer = CosmosClientLayer;
18
+ //# sourceMappingURL=cosmos-client.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosmos-client.cjs","names":["_cosmos","require","_effectApp","withClient","url","Effect","sync","ComosClient_","makeCosmosClient","dbName","map","x","db","database","exports","CosmosClient","Context","GenericTag","_","CosmosClientLayer","cosmosUrl","Layer","effect"],"sources":["../../../src/services/adapters/cosmos-client.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAIC,GAAW,IAAKC,iBAAM,CAACC,IAAI,CAAC,MAAM,IAAIC,oBAAY,CAACH,GAAG,CAAC,CAAC;AAErE,MAAMI,gBAAgB,GAAGA,CAACJ,GAAW,EAAEK,MAAc,KAC1DJ,iBAAM,CAACK,GAAG,CAACP,UAAU,CAACC,GAAG,CAAC,EAAGO,CAAC,KAAM;EAAEC,EAAE,EAAED,CAAC,CAACE,QAAQ,CAACJ,MAAM;AAAC,CAAE,CAAC,CAAC;AAAAK,OAAA,CAAAN,gBAAA,GAAAA,gBAAA;AAI3D,MAAMO,YAAY,GAAAD,OAAA,CAAAC,YAAA,GAAGC,kBAAO,CAACC,UAAU,CAAe,wBAAwB,CAAC;AAE/E,MAAML,EAAE,GAAAE,OAAA,CAAAF,EAAA,GAAGP,iBAAM,CAACK,GAAG,CAACK,YAAY,EAAGG,CAAC,IAAKA,CAAC,CAACN,EAAE,CAAC;AAEhD,MAAMO,iBAAiB,GAAGA,CAACC,SAAiB,EAAEX,MAAc,KACjEY,gBAAK,CAACC,MAAM,CAACP,YAAY,EAAEP,gBAAgB,CAACY,SAAS,EAAEX,MAAM,CAAC,CAAC;AAAAK,OAAA,CAAAK,iBAAA,GAAAA,iBAAA","ignoreList":[]}