@futdevpro/fsm-dynamo 1.20.73 → 1.20.78

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.
@@ -26,9 +26,13 @@
26
26
  export type DyFM_DBFilter<T> = DyFM_DBFilterSimple<T> | DyFM_DBFilterOR<T> | DyFM_DBFilterNOR<T>;
27
27
  /**
28
28
  * A simple filter for a DynamoDB query.
29
+ *
30
+ * `null` is accepted on every field: in Mongo `{ field: null }` matches a null OR a MISSING field. Without it a
31
+ * `strictNullChecks` consumer could not write `{ _deleted: null }` or `{ $elemMatch: { emailSentAt: null } }` on an
32
+ * optional field without a cast (measured: ccap-revisioned, fdp-credit-service — BFR-FDPTOKENSERVICE-053).
29
33
  */
30
34
  export type DyFM_DBFilterSimple<T> = {
31
- [K in keyof T]?: T[K] | DyFM_DBFilterExpressions<T[K] | boolean>;
35
+ [K in keyof T]?: T[K] | null | DyFM_DBFilterExpressions<T[K] | boolean>;
32
36
  } & {
33
37
  [path: string]: any;
34
38
  };
@@ -79,7 +83,22 @@ export type DyFM_DBFilterExpressions<T> = {
79
83
  * Selects documents if a field is of the specified type.
80
84
  */
81
85
  $type?: string;
86
+ /**
87
+ * Matches documents where ONE element of an ARRAY field satisfies ALL the given conditions together.
88
+ *
89
+ * Separate dotted keys (`'items.sentAt': null, 'items.no': 'X'`) may be satisfied by DIFFERENT elements; `$elemMatch`
90
+ * binds them to the same element — needed e.g. for an element-level atomic claim with the positional `$` update.
91
+ * Only offered on array fields (`never` otherwise). BFR-FDPTOKENSERVICE-053.
92
+ * @example
93
+ * { correctiveInvoices: { $elemMatch: { invoiceNumber: no, emailSentAt: null, emailAttemptedAt: { $exists: false } } } }
94
+ */
95
+ $elemMatch?: DyFM_DBElemMatch<T>;
82
96
  };
97
+ /**
98
+ * The `$elemMatch` condition of an array field (`never` for a non-array field): a field filter on an OBJECT element,
99
+ * an operator expression (`{ $gt: 5 }`) on a PRIMITIVE element.
100
+ */
101
+ export type DyFM_DBElemMatch<T> = T extends readonly (infer E)[] ? (E extends object ? DyFM_DBFilterSimple<E> : DyFM_DBFilterExpressions<E>) : never;
83
102
  /**
84
103
  * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.
85
104
  */
@@ -1 +1 @@
1
- {"version":3,"file":"db-filter.type.d.ts","sourceRoot":"","sources":["../../../src/_models/types/db-filter.type.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IACzB,mBAAmB,CAAC,CAAC,CAAC,GACtB,eAAe,CAAC,CAAC,CAAC,GAClB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;KAClC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACjE,GAAG;IACF,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI;IACxC;;OAEG;IACH,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,CAAC,CAAC;IACR;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;IACV;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC1B,CAAC;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC;;OAEG;IACH,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;CAChC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B;;OAEG;IACH,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;CAC/B,CAAA"}
1
+ {"version":3,"file":"db-filter.type.d.ts","sourceRoot":"","sources":["../../../src/_models/types/db-filter.type.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IACzB,mBAAmB,CAAC,CAAC,CAAC,GACtB,eAAe,CAAC,CAAC,CAAC,GAClB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;KAClC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACxE,GAAG;IACF,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI;IACxC;;OAEG;IACH,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,CAAC,CAAC;IACR;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;IACV;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KAC1B,CAAC;IACF;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GAC5D,CAAC,CAAC,SAAS,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,GACzE,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC;;OAEG;IACH,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;CAChC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B;;OAEG;IACH,GAAG,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;CAC/B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fsm-dynamo",
3
- "version": "1.20.73",
3
+ "version": "1.20.78",
4
4
  "description": "Full Stack Model Collection for Dynamic (NodeJS-Typescript) Framework called Dynamo, by Future Development Ltd.",
5
5
  "DyBu_settings": {
6
6
  "packageType": "full-stack-package",