@effect-app/infra 3.4.3 → 3.5.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 (57) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/Model/Repository/ext.d.ts +3 -4
  3. package/dist/Model/Repository/ext.d.ts.map +1 -1
  4. package/dist/Model/Repository/ext.js +1 -2
  5. package/dist/Model/Repository/internal/internal.d.ts +9 -9
  6. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  7. package/dist/Model/Repository/internal/internal.js +12 -1
  8. package/dist/Model/Repository/makeRepo.d.ts +1 -1
  9. package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
  10. package/dist/Model/Repository/service.d.ts +1 -0
  11. package/dist/Model/Repository/service.d.ts.map +1 -1
  12. package/dist/Model/query/new-kid-interpreter.d.ts +2 -2
  13. package/dist/Model/query.d.ts +0 -1
  14. package/dist/Model/query.d.ts.map +1 -1
  15. package/dist/Operations.d.ts +3 -3
  16. package/dist/QueueMaker/SQLQueue.d.ts +1 -1
  17. package/dist/QueueMaker/memQueue.d.ts +1 -1
  18. package/dist/QueueMaker/sbqueue.d.ts +2 -2
  19. package/dist/Store/ContextMapContainer.d.ts +1 -1
  20. package/dist/Store/Cosmos/query.d.ts +1 -1
  21. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  22. package/dist/Store/Cosmos/query.js +3 -4
  23. package/dist/Store/Cosmos.d.ts.map +1 -1
  24. package/dist/Store/Cosmos.js +16 -10
  25. package/dist/Store/Disk.d.ts.map +1 -1
  26. package/dist/Store/Disk.js +3 -1
  27. package/dist/Store/Memory.d.ts.map +1 -1
  28. package/dist/Store/Memory.js +20 -1
  29. package/dist/Store/service.d.ts +3 -2
  30. package/dist/Store/service.d.ts.map +1 -1
  31. package/dist/Store/service.js +1 -1
  32. package/dist/api/internal/RequestContextMiddleware.d.ts +1 -1
  33. package/dist/api/setupRequest.d.ts +2 -2
  34. package/package.json +2 -2
  35. package/src/Model/Repository/ext.ts +0 -1
  36. package/src/Model/Repository/internal/internal.ts +19 -7
  37. package/src/Model/Repository/makeRepo.ts +1 -1
  38. package/src/Model/Repository/service.ts +2 -0
  39. package/src/Model/query.ts +1 -1
  40. package/src/Store/Cosmos/query.ts +1 -3
  41. package/src/Store/Cosmos.ts +20 -9
  42. package/src/Store/Disk.ts +5 -0
  43. package/src/Store/Memory.ts +33 -0
  44. package/src/Store/service.ts +4 -1
  45. package/test/dist/controller/test2.test.d.ts.map +0 -1
  46. package/test/dist/controller.legacy2.test.d.ts.map +0 -1
  47. package/test/dist/controller.legacy3.test.d.ts.map +0 -1
  48. package/test/dist/controller.test copy.js +0 -129
  49. package/test/dist/controller5.test.d.ts.map +0 -1
  50. package/test/dist/controller6.test.d.ts.map +0 -1
  51. package/test/dist/controller7.test.d.ts.map +0 -1
  52. package/test/dist/dynamicContext.test.d.ts.map +0 -1
  53. package/test/dist/filterApi.test.d.ts.map +0 -1
  54. package/test/dist/middleware-api.test.d.ts.map +0 -1
  55. package/test/dist/requires.d.ts +0 -21
  56. package/test/dist/requires.d.ts.map +0 -1
  57. package/test/dist/requires.js +0 -27
@@ -57,7 +57,7 @@ export function makeRepoInternal<
57
57
  schemaContext?: Context.Context<RCtx>
58
58
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
59
59
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
60
- partitionValue?: (a: Encoded) => string
60
+ partitionValue?: (e?: Encoded) => string
61
61
  }
62
62
  }
63
63
  : {
@@ -65,7 +65,7 @@ export function makeRepoInternal<
65
65
  publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect.Effect<void, never, RPublish>
66
66
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
67
67
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
68
- partitionValue?: (a: Encoded) => string
68
+ partitionValue?: (e?: Encoded) => string
69
69
  }
70
70
  }
71
71
  ) {
@@ -125,6 +125,7 @@ export function makeRepoInternal<
125
125
  : s.pipe(S.pick(idKey as any))
126
126
  })
127
127
  const encodeId = flow(S.encode(i), provideRctx)
128
+ const encodeIdOnly = (id: string) => encodeId({ [idKey]: id } as any).pipe(Effect.map((_) => _[idKey]))
128
129
  const findEId = Effect.fnUntraced(function*(id: Encoded[IdKey]) {
129
130
  yield* Effect.annotateCurrentSpan({ itemId: id })
130
131
 
@@ -210,6 +211,16 @@ export function makeRepoInternal<
210
211
  yield* changeFeed.publish([it, "remove"])
211
212
  })
212
213
 
214
+ const removeById = Effect.fn("removeById")(function*(...ids: NonEmptyReadonlyArray<T[IdKey]>) {
215
+ const { set } = yield* cms
216
+ const eids = yield* Effect.forEach(ids, (_) => encodeIdOnly(_ as any)).pipe(Effect.orDie)
217
+ yield* store.batchRemove(eids)
218
+ for (const id of eids) {
219
+ set(id, undefined)
220
+ }
221
+ yield* changeFeed.publish([[], "remove"])
222
+ })
223
+
213
224
  const parseMany = (items: readonly PM[]) =>
214
225
  Effect
215
226
  .flatMap(cms, (cm) =>
@@ -311,6 +322,7 @@ export function makeRepoInternal<
311
322
  all,
312
323
  saveAndPublish,
313
324
  removeAndPublish,
325
+ removeById,
314
326
  queryRaw(schema, q) {
315
327
  const dec = S.decode(S.Array(schema))
316
328
  return store.queryRaw(q).pipe(Effect.flatMap(dec))
@@ -392,7 +404,7 @@ export function makeStore<Encoded extends FieldValues>() {
392
404
  function makeStore<RInitial = never, EInitial = never>(
393
405
  makeInitial?: Effect.Effect<readonly T[], EInitial, RInitial>,
394
406
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
395
- partitionValue?: (a: Encoded) => string
407
+ partitionValue?: (e?: Encoded) => string
396
408
  }
397
409
  ) {
398
410
  function encodeToEncoded() {
@@ -454,14 +466,14 @@ export interface Repos<
454
466
  args: [Evt] extends [never] ? {
455
467
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
456
468
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
457
- partitionValue?: (a: Encoded) => string
469
+ partitionValue?: (e?: Encoded) => string
458
470
  }
459
471
  }
460
472
  : {
461
473
  publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect.Effect<void, never, R2>
462
474
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
463
475
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
464
- partitionValue?: (a: Encoded) => string
476
+ partitionValue?: (e?: Encoded) => string
465
477
  }
466
478
  }
467
479
  ): Effect.Effect<Repository<T, Encoded, Evt, ItemType, IdKey, RSchema, RPublish>, E, StoreMaker | RInitial | R2>
@@ -469,14 +481,14 @@ export interface Repos<
469
481
  args: [Evt] extends [never] ? {
470
482
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
471
483
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
472
- partitionValue?: (a: Encoded) => string
484
+ partitionValue?: (e?: Encoded) => string
473
485
  }
474
486
  }
475
487
  : {
476
488
  publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect.Effect<void, never, R2>
477
489
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
478
490
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
479
- partitionValue?: (a: Encoded) => string
491
+ partitionValue?: (e?: Encoded) => string
480
492
  }
481
493
  },
482
494
  f: (r: Repository<T, Encoded, Evt, ItemType, IdKey, RSchema, RPublish>) => Out
@@ -38,7 +38,7 @@ export interface RepositoryOptions<
38
38
  */
39
39
  jitM?: (pm: Encoded) => Encoded
40
40
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
41
- partitionValue?: (a: Encoded) => string
41
+ partitionValue?: (e?: Encoded) => string
42
42
  }
43
43
  /**
44
44
  * Optional handler to be able to publish events after successfull save.
@@ -29,6 +29,8 @@ export interface Repository<
29
29
  events?: Iterable<Evt>
30
30
  ) => Effect.Effect<void, never, RSchema | RPublish>
31
31
 
32
+ readonly removeById: (...id: readonly T[IdKey][]) => Effect.Effect<void, never, RSchema>
33
+
32
34
  readonly queryRaw: <T, Out, R>(
33
35
  schema: S.Schema<T, Out, R>,
34
36
  raw: RawQuery<Encoded, Out>
@@ -2,7 +2,7 @@ export * from "./query/dsl.js"
2
2
  export * from "./query/new-kid-interpreter.js"
3
3
 
4
4
  export interface RawQuery<Encoded, Out> {
5
- cosmos: (vals: { importedMarkerId: string; name: string }) => {
5
+ cosmos: (vals: { name: string }) => {
6
6
  query: string
7
7
  parameters: {
8
8
  name: string
@@ -39,7 +39,6 @@ export function buildWhereCosmosQuery3(
39
39
  idKey: PropertyKey,
40
40
  filter: readonly FilterResult[],
41
41
  name: string,
42
- importedMarkerId: string,
43
42
  defaultValues: Record<string, unknown>,
44
43
  select?: NonEmptyReadonlyArray<string | { key: string; subKeys: readonly string[] }>,
45
44
  order?: NonEmptyReadonlyArray<{ key: string; direction: "ASC" | "DESC" }>,
@@ -294,11 +293,10 @@ export function buildWhereCosmosQuery3(
294
293
  }
295
294
  FROM ${name} f
296
295
 
297
- WHERE f.id != @id ${filter.length ? `AND (${print(filter, values.map((_) => _.value), null, false)})` : ""}
296
+ ${filter.length ? `WHERE (${print(filter, values.map((_) => _.value), null, false)})` : ""}
298
297
  ${order ? `ORDER BY ${order.map((_) => `${dottedToAccess(`f.${_.key}`)} ${_.direction}`).join(", ")}` : ""}
299
298
  ${skip !== undefined || limit !== undefined ? `OFFSET ${skip ?? 0} LIMIT ${limit ?? 999999}` : ""}`,
300
299
  parameters: [
301
- { name: "@id", value: importedMarkerId },
302
300
  ...values
303
301
  .flatMap((x, i) =>
304
302
  [{
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { Array, Chunk, Duration, Effect, Layer, type NonEmptyReadonlyArray, Option, pipe, Redacted, Struct } from "effect-app"
4
4
  import { toNonEmptyArray } from "effect-app/Array"
5
- import { dropUndefinedT } from "effect-app/utils"
5
+ import { dropUndefinedT, mutable } from "effect-app/utils"
6
6
  import { CosmosClient, CosmosClientLayer } from "../adapters/cosmos-client.js"
7
7
  import { OptimisticConcurrencyException } from "../errors.js"
8
8
  import { InfraLogger } from "../logger.js"
@@ -50,6 +50,8 @@ function makeCosmosStore({ prefix }: StorageConfig) {
50
50
  }))
51
51
  )
52
52
 
53
+ const mainPartitionKey = config?.partitionValue() ?? "primary"
54
+
53
55
  const defaultValues = config?.defaultValues ?? {}
54
56
  const container = db.container(containerId)
55
57
  const bulk = container.items.bulk.bind(container.items)
@@ -228,14 +230,14 @@ function makeCosmosStore({ prefix }: StorageConfig) {
228
230
  const s: Store<IdKey, Encoded> = {
229
231
  queryRaw: <Out>(query: RawQuery<Encoded, Out>) =>
230
232
  Effect
231
- .sync(() => query.cosmos({ importedMarkerId, name }))
233
+ .sync(() => query.cosmos({ name }))
232
234
  .pipe(
233
235
  Effect.tap((q) => logQuery(q)),
234
236
  Effect.flatMap((q) =>
235
237
  Effect.promise(() =>
236
238
  container
237
239
  .items
238
- .query<Out>(q, { partitionKey: "primary" })
240
+ .query<Out>(q, { partitionKey: mainPartitionKey })
239
241
  .fetchAll()
240
242
  .then(({ resources }) =>
241
243
  resources.map(
@@ -250,10 +252,20 @@ function makeCosmosStore({ prefix }: StorageConfig) {
250
252
  attributes: { "repository.container_id": containerId, "repository.model_name": name }
251
253
  })
252
254
  ),
255
+ batchRemove: (ids) =>
256
+ Effect.promise(() =>
257
+ execBatch(mutable(ids.map((id) =>
258
+ dropUndefinedT({
259
+ operationType: "Delete" as const,
260
+ id,
261
+ partitionKey: config?.partitionValue({ [idKey]: id } as Encoded)
262
+ })
263
+ )))
264
+ ),
253
265
  all: Effect
254
266
  .sync(() => ({
255
- query: `SELECT * FROM ${name} f WHERE f.id != @id`,
256
- parameters: [{ name: "@id", value: importedMarkerId }]
267
+ query: `SELECT * FROM ${name}`,
268
+ parameters: []
257
269
  }))
258
270
  .pipe(
259
271
  Effect.tap((q) => logQuery(q)),
@@ -261,7 +273,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
261
273
  Effect.promise(() =>
262
274
  container
263
275
  .items
264
- .query<PMCosmos>(q)
276
+ .query<PMCosmos>(q, { partitionKey: mainPartitionKey })
265
277
  .fetchAll()
266
278
  .then(({ resources }) =>
267
279
  resources.map(
@@ -292,7 +304,6 @@ function makeCosmosStore({ prefix }: StorageConfig) {
292
304
  idKey,
293
305
  filter ? [{ t: "where-scope", result: filter, relation: "some" }] : [],
294
306
  name,
295
- importedMarkerId,
296
307
  defaultValues,
297
308
  f.select as NonEmptyReadonlyArray<string | { key: string; subKeys: readonly string[] }> | undefined,
298
309
  f.order as NonEmptyReadonlyArray<{ key: string; direction: "ASC" | "DESC" }> | undefined,
@@ -308,7 +319,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
308
319
  f.select
309
320
  ? container
310
321
  .items
311
- .query<M>(q)
322
+ .query<M>(q, { partitionKey: mainPartitionKey })
312
323
  .fetchAll()
313
324
  .then(({ resources }) =>
314
325
  resources.map((_) =>
@@ -323,7 +334,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
323
334
  )
324
335
  : container
325
336
  .items
326
- .query<{ f: M }>(q)
337
+ .query<{ f: M }>(q, { partitionKey: mainPartitionKey })
327
338
  .fetchAll()
328
339
  .then(({ resources }) =>
329
340
  resources.map(({ f }) => ({ ...defaultValues, ...mapReverseId(f as any) }) as any)
package/src/Store/Disk.ts CHANGED
@@ -97,6 +97,10 @@ function makeDiskStoreInt<IdKey extends keyof Encoded, Encoded extends FieldValu
97
97
  store.batchSet,
98
98
  Effect.tap(flushToDiskInBackground)
99
99
  ),
100
+ batchRemove: flow(
101
+ store.batchRemove,
102
+ Effect.tap(flushToDiskInBackground)
103
+ ),
100
104
  bulkSet: flow(
101
105
  store.bulkSet,
102
106
  Effect.tap(flushToDiskInBackground)
@@ -173,6 +177,7 @@ export function makeDiskStore({ prefix }: StorageConfig, dir: string) {
173
177
  set: (...args) => Effect.flatMap(getStore, (_) => _.set(...args)),
174
178
  batchSet: (...args) => Effect.flatMap(getStore, (_) => _.batchSet(...args)),
175
179
  bulkSet: (...args) => Effect.flatMap(getStore, (_) => _.bulkSet(...args)),
180
+ batchRemove: (...args) => Effect.flatMap(getStore, (_) => _.batchRemove(...args)),
176
181
  remove: (...args) => Effect.flatMap(getStore, (_) => _.remove(...args)),
177
182
  queryRaw: (...args) => Effect.flatMap(getStore, (_) => _.queryRaw(...args))
178
183
  }
@@ -137,6 +137,23 @@ export function makeMemoryStoreInt<IdKey extends keyof Encoded, Encoded extends
137
137
  .map((_) => _),
138
138
  withPermit
139
139
  )
140
+
141
+ const batchRemove = (items: NonEmptyReadonlyArray<Encoded[IdKey]>) =>
142
+ Ref
143
+ .get(store)
144
+ .pipe(
145
+ Effect
146
+ .map((m) => {
147
+ const mut = m as Map<string, PM>
148
+ items.forEach((e) => mut.delete(e[idKey]))
149
+ return mut
150
+ }),
151
+ Effect
152
+ .flatMap((_) => Ref.set(store, _))
153
+ )
154
+ .pipe(
155
+ withPermit
156
+ )
140
157
  const s: Store<IdKey, Encoded> = {
141
158
  queryRaw: (query) =>
142
159
  all
@@ -199,6 +216,21 @@ export function makeMemoryStoreInt<IdKey extends keyof Encoded, Encoded extends
199
216
  attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
200
217
  })
201
218
  ),
219
+ batchRemove: (items: NonEmptyReadonlyArray<Encoded[IdKey]>) =>
220
+ pipe(
221
+ Effect
222
+ .sync(() => items)
223
+ // align with CosmosDB
224
+ .pipe(
225
+ Effect.filterOrDieMessage((_) => _.length <= 100, "BatchRemove: a batch may not exceed 100 items"),
226
+ Effect.andThen(batchRemove),
227
+ Effect
228
+ .withSpan("Memory.batchRemove [effect-app/infra/Store]", {
229
+ captureStackTrace: false,
230
+ attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
231
+ })
232
+ )
233
+ ),
202
234
  batchSet: (items: readonly [PM, ...PM[]]) =>
203
235
  pipe(
204
236
  Effect
@@ -286,6 +318,7 @@ export const makeMemoryStore = () => ({
286
318
  set: (...args) => Effect.flatMap(getStore, (_) => _.set(...args)),
287
319
  batchSet: (...args) => Effect.flatMap(getStore, (_) => _.batchSet(...args)),
288
320
  bulkSet: (...args) => Effect.flatMap(getStore, (_) => _.bulkSet(...args)),
321
+ batchRemove: (...args) => Effect.flatMap(getStore, (_) => _.batchRemove(...args)),
289
322
  remove: (...args) => Effect.flatMap(getStore, (_) => _.remove(...args))
290
323
  }
291
324
  return s
@@ -8,7 +8,7 @@ import type { FieldPath } from "../Model/filter/types/path/index.js"
8
8
  import { type RawQuery } from "../Model/query.js"
9
9
 
10
10
  export interface StoreConfig<E> {
11
- partitionValue: (e: E) => string | undefined
11
+ partitionValue: (e?: E) => string
12
12
  /**
13
13
  * Primarily used for testing, creating namespaces in the database to separate data e.g to run multiple tests in isolation within the same database
14
14
  * currently only supported in disk/memory. CosmosDB is TODO.
@@ -89,6 +89,9 @@ export interface Store<
89
89
  * Requires the Encoded type, not Id, because various stores may need to calculate e.g partition keys.
90
90
  */
91
91
  remove: (e: Encoded) => Effect.Effect<void>
92
+ batchRemove: (ids: NonEmptyReadonlyArray<Encoded[IdKey]>) => Effect.Effect<void>
93
+ // TODO: only accept where filter, nothing else
94
+ // filterRemove: FilterFunc<Encoded>
92
95
 
93
96
  queryRaw: <Out>(query: RawQuery<Encoded, Out>) => Effect.Effect<readonly Out[]>
94
97
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"test2.test.d.ts","sourceRoot":"","sources":["../../controller/test2.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAA8B,MAAM,+BAA+B,CAAA;AAC7G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAClI,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;;;;;;;;AAE9C,cAAM,WAAY,SAAQ,gBAIzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;AAKL,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;;AAExF,qBAAa,YAAa,SAAQ,iBAQhC;CAAG;AAEL,MAAM,MAAM,MAAM,GAAG;IACnB,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,gBAAgB,CAAC,CAAA;IAE3F,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAsGD,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/B,CAAA;;;;;;;;;;AAEF,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;AAEtE,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;AAE1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;AAItC,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAE,QAAQ;;;;;2HAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qFAAiC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.legacy2.test.d.ts","sourceRoot":"","sources":["../controller.legacy2.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.legacy3.test.d.ts","sourceRoot":"","sources":["../controller.legacy3.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;gBA0EgwD,MAAO,KAAK;;;;;;GA1E1wD,QAAQ;;;;;;iDA0Eq0F,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAg1D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAg1D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAg1D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAA2yD,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CA1E1oU,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;yCAxEL,EAAG,MAAM,CAAC,MAAM;iBAgClC,EA/BK,MACb,CA8BQ,GA9BJ,GA8BI,EA9BC,MAEV,CA4BS,MA5BF;iBAAuB,EAAE,MAC9B,CA2BO,GA3BH,GA2BG,EA3BG,MAAK,CAAC,MAAM;;;;;;2CASkB,EAAG,MAAM,CAAC,MAAM;iBAkBjD,EAAA,MAjBA,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAiBtB,EAPO,MAAC,CAAC,MAAM;iBACA,EAAG,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAc1C,EAAA,MAAL,CAAK,MAAE;;;;;2CAMqC,EAAG,MAAM,CAAC,MAAM;;;;;CA6BnE,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
@@ -1,129 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
2
- import { Rpc } from "@effect/rpc";
3
- import { Context, Effect, FiberRef, Layer, S, Schedule } from "effect-app";
4
- import { makeRpcClient, UnauthorizedError } from "effect-app/client";
5
- import { HttpHeaders, HttpServerRequest } from "effect-app/http";
6
- import { makeMiddleware, makeRouter } from "../src/api/routing5.js";
7
- const optimisticConcurrencySchedule = Schedule.once
8
- && Schedule.recurWhile((a) => a?._tag === "OptimisticConcurrencyException");
9
- const middleware = makeMiddleware({
10
- contextMap: null,
11
- // helper to deal with nested generic lmitations
12
- context: null,
13
- execute: Effect.gen(function* () {
14
- return (schema, handler, moduleName) => (req) => Effect
15
- .gen(function* () {
16
- const headers = yield* Rpc.currentHeaders;
17
- const ctx = Context.empty();
18
- const config = "config" in schema ? schema.config : undefined;
19
- // Check JWT
20
- // TODO
21
- // if (!fakeLogin && !request.allowAnonymous) {
22
- // yield* Effect.catchAll(
23
- // checkJWTI({
24
- // ...authConfig,
25
- // issuer: authConfig.issuer + "/",
26
- // jwksUri: `${authConfig.issuer}/.well-known/jwks.json`
27
- // }),
28
- // (err) => Effect.fail(new JWTError({ error: err }))
29
- // )
30
- // }
31
- // const fakeLogin = true
32
- // const r = (fakeLogin
33
- // ? makeUserProfileFromUserHeader(headers["x-user"])
34
- // : makeUserProfileFromAuthorizationHeader(
35
- // headers["authorization"]
36
- // ))
37
- // .pipe(Effect.exit, basicRuntime.runSync)
38
- // if (!Exit.isSuccess(r)) {
39
- // yield* Effect.logWarning("Parsing userInfo failed").pipe(Effect.annotateLogs("r", r))
40
- // }
41
- // const userProfile = Option.fromNullable(Exit.isSuccess(r) ? r.value : undefined)
42
- // if (Option.isSome(userProfile)) {
43
- // // yield* rcc.update((_) => ({ ..._, userPorfile: userProfile.value }))
44
- // ctx = ctx.pipe(Context.add(UserProfile, userProfile.value))
45
- // } else if (!config?.allowAnonymous) {
46
- // return yield* new NotLoggedInError({ message: "no auth" })
47
- // }
48
- // if (config?.requireRoles) {
49
- // // TODO
50
- // if (
51
- // !userProfile.value
52
- // || !config.requireRoles.every((role: any) => userProfile.value!.roles.includes(role))
53
- // ) {
54
- // return yield* new UnauthorizedError()
55
- // }
56
- // }
57
- return yield* handler(req).pipe(Effect.retry(optimisticConcurrencySchedule), Effect.provide(ctx));
58
- })
59
- .pipe(Effect.provide(Effect
60
- .gen(function* () {
61
- yield* Effect.annotateCurrentSpan("request.name", moduleName ? `${moduleName}.${req._tag}` : req._tag);
62
- // yield* RequestContextContainer.update((_) => ({
63
- // ..._,
64
- // name: NonEmptyString255(moduleName ? `${moduleName}.${req._tag}` : req._tag)
65
- // }))
66
- const httpReq = yield* HttpServerRequest.HttpServerRequest;
67
- // TODO: only pass Authentication etc, or move headers to actual Rpc Headers
68
- yield* FiberRef.update(Rpc.currentHeaders, (headers) => HttpHeaders.merge(httpReq.headers, headers));
69
- })
70
- .pipe(Layer.effectDiscard)));
71
- // .pipe(Effect.provide(RequestCacheLayers)) as any
72
- })
73
- });
74
- export const { matchAll, matchFor } = makeRouter(middleware, true);
75
- export const { TaggedRequest: Req } = makeRpcClient({
76
- // allowAnonymous: NotLoggedInError,
77
- requireRoles: UnauthorizedError
78
- });
79
- export class GetSomething extends Req()("GetSomething", {
80
- id: S.String
81
- }, { success: S.Void }) {
82
- }
83
- export class GetSomethingElse extends Req()("GetSomethingElse", {
84
- id: S.String
85
- }, { success: S.String }) {
86
- }
87
- const Something = { GetSomething, GetSomethingElse, meta: { moduleName: "Something" } };
88
- export class SomethingService extends Effect.Service()("SomethingService", {
89
- dependencies: [],
90
- effect: Effect.gen(function* () {
91
- return {};
92
- })
93
- }) {
94
- }
95
- const c = a({ a: 5 });
96
- export class SomethingRepo extends Effect.Service()("SomethingRepo", {
97
- dependencies: [SomethingService.Default],
98
- effect: Effect.gen(function* () {
99
- const smth = yield* SomethingService;
100
- return {};
101
- })
102
- }) {
103
- }
104
- export class SomethingService2 extends Effect.Service()("SomethingService2", {
105
- dependencies: [],
106
- effect: Effect.gen(function* () {
107
- return {};
108
- })
109
- }) {
110
- }
111
- const { handle, routes } = matchFor(Something);
112
- const d = handle({
113
- dependencies: [
114
- SomethingRepo.Default,
115
- SomethingService.Default
116
- // SomethingService2.Default
117
- ],
118
- effect: Effect.gen(function* () {
119
- const repo = yield* SomethingRepo;
120
- const smth = yield* SomethingService;
121
- const smth2 = yield* SomethingService2;
122
- const { GetSomething, GetSomethingElse } = routes;
123
- return {
124
- GetSomething: GetSomething(Effect.void),
125
- GetSomethingElse: GetSomethingElse(Effect.succeed("12"))
126
- };
127
- })
128
- });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlci50ZXN0IGNvcHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9jb250cm9sbGVyLnRlc3QgY29weS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUUsT0FBTyxFQUF5QixhQUFhLEVBQXNCLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0csT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFHbkUsTUFBTSw2QkFBNkIsR0FBRyxRQUFRLENBQUMsSUFBSTtPQUM5QyxRQUFRLENBQUMsVUFBVSxDQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLGdDQUFnQyxDQUFDLENBQUE7QUFXbEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ2hDLFVBQVUsRUFBRSxJQUF5QjtJQUNyQyxnREFBZ0Q7SUFDaEQsT0FBTyxFQUFFLElBQWtEO0lBQzNELE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUMzQixPQUFPLENBQ0wsTUFBcUMsRUFDckMsT0FBaUgsRUFDakgsVUFBbUIsRUFDbkIsRUFBRSxDQUNKLENBQ0UsR0FBUSxFQU1SLEVBQUUsQ0FDRixNQUFNO2FBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUE7WUFDekMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtB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
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller5.test.d.ts","sourceRoot":"","sources":["../controller5.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAI/G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAK9D,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ,OAAE,QAAQ,KAAiC,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAvElB,MACZ,CA8BO,MA9BA;mBAEqB,MAC9B,CA2BS,GA3BL,KA2BK,MA3BM,CAAC,MAAM;mBACR,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CA0BhC,MAjBD,CAiBC,MAjBM;mBAiBN,MAhBI,CAgBJ,GAhBQ,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUT,MAAM,CAAC,MAAM;mBAAuC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MACjG;;;;;;6CAciB,MAAM,CAAC,MAAM;;;;;6CAMF,MAAM,CAAC,MAAM;;;CA4B3C,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAM,MAAM,KAmBjB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller6.test.d.ts","sourceRoot":"","sources":["../controller6.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;gBA0EqxD,MAAO,KAAK;;;;;;GA1E/xD,QAAQ;;;;;;iDA0E01F,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAAk0D,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;iDAA6xD,MAAM,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CA1EvmU,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;yCAxEE,EAAG,MAAM,CAAC,MAAM;iBAgCzC,EAAA,MA9BD,CA8BC,GA9BG,GA8BH,EAAA,MA5BF,CA4BE,MA5BK;iBA4BL,EAAA,MA3BA,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CASkB,EAAG,MAAM,CAAC,MAAM;iBAkBxD,EAjBC,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAUtB,EAAE,MAAM,CAAC,MAAM;iBACA,EAAG,MAAM,CAAC,GAAG,GAAE,EAAG,MAAM,CAAC,MAAM;;;;;;2CAcjD,EAAA,MAAE,CAAC,MAAM;;;;;2CAMqC,EAAG,MAAM,CAAC,MACrE;;;;;CA4BC,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller7.test.d.ts","sourceRoot":"","sources":["../controller7.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dynamicContext.test.d.ts","sourceRoot":"","sources":["../dynamicContext.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AA8E7C,eAAO,MAAM,mBAAmB;;CAkB9B,CAAA;AACF,eAAO,MAAM,sBAAsB;;CAkBjC,CAAA;AAMF,eAAO,MAAM,gBAAgB;;CAA0B,CAAA;AACvD,eAAO,MAAM,gBAAgB,0NAA2C,CAAA;AAIxE,eAAO,MAAM,mBAAmB;;CAA6B,CAAA;AAC7D,eAAO,MAAM,mBAAmB,0NAA8C,CAAA;AAQ9E,eAAO,MAAM,iBAAiB;;CAA2B,CAAA;AACzD,eAAO,MAAM,iBAAiB,qOAA+D,CAAA;AAI7F,eAAO,MAAM,oBAAoB;;CAA8B,CAAA;AAC/D,eAAO,MAAM,oBAAoB,qOAAqE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filterApi.test.d.ts","sourceRoot":"","sources":["../filterApi.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware-api.test.d.ts","sourceRoot":"","sources":["../middleware-api.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAyB,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAA4D,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC5G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,gBAAgB,CAAC,CAAA;IAC5E,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACnF,CAAA;;;;;;;;;AAED,qBAAa,cAAe,SAAQ,mBAoBlC;CAAG;AAyBL,eAAO,MAAM,UAAU;;;;;CAQd,CAAA"}
@@ -1,21 +0,0 @@
1
- import { type RPCContextMap } from "effect-app/client";
2
- import { type DynamicMiddlewareMaker, type GenericMiddlewareMaker, type makeMiddlewareBasic, type RequestContextMapProvider } from "../src/api/routing.js";
3
- export interface MiddlewareM<RequestContext extends Record<string, RPCContextMap.Any>, Provided extends keyof RequestContext, Middlewares extends ReadonlyArray<GenericMiddlewareMaker>, DynamicMiddlewareProviders, MiddlewareR = never> {
4
- middleware: <MW extends GenericMiddlewareMaker>(mw: MW) => DynamicMiddlewareMakerrsss<RequestContext, Provided, [
5
- ...Middlewares,
6
- MW
7
- ], DynamicMiddlewareProviders, GenericMiddlewareMaker.ApplyServices<MW, MiddlewareR>>;
8
- }
9
- export interface Dynamic<RequestContext extends Record<string, RPCContextMap.Any>, Provided extends keyof RequestContext, Middlewares extends ReadonlyArray<GenericMiddlewareMaker>, DynamicMiddlewareProviders, out MiddlewareR> extends MiddlewareM<RequestContext, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> {
10
- middleware: <MW extends DynamicMiddlewareMaker<RequestContext> | GenericMiddlewareMaker>(mw: MW) => MW extends DynamicMiddlewareMaker<RequestContext> ? DynamicMiddlewareMakerrsss<RequestContext, Provided | MW["dynamic"]["key"], Middlewares, DynamicMiddlewareProviders & {
11
- [K in MW["dynamic"]["key"]]: MW;
12
- }, GenericMiddlewareMaker.ApplyServices<MW, MiddlewareR>> : DynamicMiddlewareMakerrsss<RequestContext, Provided, [
13
- ...Middlewares,
14
- MW
15
- ], DynamicMiddlewareProviders, GenericMiddlewareMaker.ApplyServices<MW, MiddlewareR>>;
16
- }
17
- type GetDynamicMiddleware<T, RequestContext extends Record<string, RPCContextMap.Any>> = T extends RequestContextMapProvider<RequestContext> ? T : never;
18
- type DynamicMiddlewareMakerrsss<RequestContext extends Record<string, RPCContextMap.Any>, Provided extends keyof RequestContext = never, Middlewares extends ReadonlyArray<GenericMiddlewareMaker> = [], DynamicMiddlewareProviders = unknown, MiddlewareR = never> = keyof Omit<RequestContext, Provided> extends never ? [MiddlewareR] extends [never] ? ReturnType<typeof makeMiddlewareBasic<RequestContext, GetDynamicMiddleware<DynamicMiddlewareProviders, RequestContext>, Middlewares>> & MiddlewareM<RequestContext, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> : MiddlewareM<RequestContext, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR> : Dynamic<RequestContext, Provided, Middlewares, DynamicMiddlewareProviders, MiddlewareR>;
19
- export declare const makeNewMiddleware: <RequestContextMap extends Record<string, RPCContextMap.Any>>() => DynamicMiddlewareMakerrsss<RequestContextMap>;
20
- export {};
21
- //# sourceMappingURL=requires.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requires.d.ts","sourceRoot":"","sources":["../requires.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { Array, Either } from "effect-app";
2
- import { makeMiddleware } from "../src/api/routing.js";
3
- export const makeNewMiddleware = () => {
4
- const make = makeMiddleware();
5
- let capturedMiddlewares = [];
6
- const it = {
7
- middleware: (...middlewares) => {
8
- for (const mw of middlewares) {
9
- capturedMiddlewares = [mw, ...capturedMiddlewares];
10
- if (mw.dynamic) {
11
- console.log("Adding dynamic middleware", mw.key, mw.dynamic.key);
12
- }
13
- else {
14
- console.log("Adding generic middleware", mw.key);
15
- }
16
- }
17
- const [genericMiddlewares, dyn] = Array.partitionMap(capturedMiddlewares, (mw) => "dynamic" in mw && mw.dynamic
18
- ? Either.right(mw)
19
- : Either.left(mw));
20
- const dynamicMiddlewares = dyn.reduce((prev, cur) => ({ ...prev, [cur.dynamic.key]: cur }), {});
21
- // TODO: support dynamic and generic intertwined. treat them as one
22
- return Object.assign(make({ genericMiddlewares, dynamicMiddlewares }), it);
23
- }
24
- };
25
- return it;
26
- };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9yZXF1aXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUxQyxPQUFPLEVBQTRELGNBQWMsRUFBNEQsTUFBTSx1QkFBdUIsQ0FBQTtBQWtIMUssTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBRXlCLEdBQUcsRUFBRTtJQUMxRCxNQUFNLElBQUksR0FBRyxjQUFjLEVBQU8sQ0FBQTtJQUNsQyxJQUFJLG1CQUFtQixHQUE2RCxFQUFFLENBQUE7SUFDdEYsTUFBTSxFQUFFLEdBQUc7UUFDVCxVQUFVLEVBQUUsQ0FBQyxHQUFHLFdBQWtCLEVBQUUsRUFBRTtZQUNwQyxLQUFLLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUM3QixtQkFBbUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLG1CQUFtQixDQUFDLENBQUE7Z0JBQ2xELElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNsRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2xELENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQ2xELG1CQUFtQixFQUNuQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsU0FBUyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTztnQkFDM0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBaUMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBNEIsQ0FBQyxDQUNoRCxDQUFBO1lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUNuQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFDcEQsRUFBeUIsQ0FDMUIsQ0FBQTtZQUNELG1FQUFtRTtZQUNuRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzVFLENBQUM7S0FDRixDQUFBO0lBQ0QsT0FBTyxFQUFTLENBQUE7QUFDbEIsQ0FBQyxDQUFBIn0=