@aws-amplify/datastore 5.0.1-unstable.cfbde4c.0 → 5.0.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 (209) hide show
  1. package/{lib → dist/cjs}/authModeStrategies/defaultAuthStrategy.js +3 -1
  2. package/dist/cjs/authModeStrategies/defaultAuthStrategy.js.map +1 -0
  3. package/{lib → dist/cjs}/authModeStrategies/index.js +3 -1
  4. package/dist/cjs/authModeStrategies/index.js.map +1 -0
  5. package/{lib → dist/cjs}/authModeStrategies/multiAuthStrategy.js +3 -3
  6. package/dist/cjs/authModeStrategies/multiAuthStrategy.js.map +1 -0
  7. package/{lib → dist/cjs}/datastore/datastore.js +5 -3
  8. package/dist/cjs/datastore/datastore.js.map +1 -0
  9. package/{lib → dist/cjs}/index.js +5 -16
  10. package/dist/cjs/index.js.map +1 -0
  11. package/{lib → dist/cjs}/predicates/index.js +3 -1
  12. package/dist/cjs/predicates/index.js.map +1 -0
  13. package/{lib → dist/cjs}/predicates/next.js +3 -1
  14. package/dist/cjs/predicates/next.js.map +1 -0
  15. package/{lib → dist/cjs}/predicates/sort.js +4 -3
  16. package/dist/cjs/predicates/sort.js.map +1 -0
  17. package/{lib → dist/cjs}/storage/adapter/AsyncStorageAdapter.js +5 -5
  18. package/dist/cjs/storage/adapter/AsyncStorageAdapter.js.map +1 -0
  19. package/{lib → dist/cjs}/storage/adapter/AsyncStorageDatabase.js +3 -1
  20. package/dist/cjs/storage/adapter/AsyncStorageDatabase.js.map +1 -0
  21. package/{lib → dist/cjs}/storage/adapter/InMemoryStore.js +3 -1
  22. package/dist/cjs/storage/adapter/InMemoryStore.js.map +1 -0
  23. package/{lib → dist/cjs}/storage/adapter/InMemoryStore.native.js +5 -5
  24. package/dist/cjs/storage/adapter/InMemoryStore.native.js.map +1 -0
  25. package/{lib → dist/cjs}/storage/adapter/IndexedDBAdapter.js +5 -25
  26. package/dist/cjs/storage/adapter/IndexedDBAdapter.js.map +1 -0
  27. package/{lib → dist/cjs}/storage/adapter/StorageAdapterBase.js +3 -1
  28. package/dist/cjs/storage/adapter/StorageAdapterBase.js.map +1 -0
  29. package/{lib → dist/cjs}/storage/adapter/getDefaultAdapter/index.js +6 -6
  30. package/dist/cjs/storage/adapter/getDefaultAdapter/index.js.map +1 -0
  31. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js +10 -0
  32. package/dist/cjs/storage/adapter/getDefaultAdapter/index.native.js.map +1 -0
  33. package/{lib → dist/cjs}/storage/adapter/index.js +3 -1
  34. package/dist/cjs/storage/adapter/index.js.map +1 -0
  35. package/{lib → dist/cjs}/storage/relationship.js +3 -1
  36. package/dist/cjs/storage/relationship.js.map +1 -0
  37. package/{lib → dist/cjs}/storage/storage.js +5 -5
  38. package/dist/cjs/storage/storage.js.map +1 -0
  39. package/{lib → dist/cjs}/sync/datastoreConnectivity.js +4 -2
  40. package/dist/cjs/sync/datastoreConnectivity.js.map +1 -0
  41. package/{lib → dist/cjs}/sync/datastoreReachability/index.js +3 -1
  42. package/dist/cjs/sync/datastoreReachability/index.js.map +1 -0
  43. package/{lib → dist/cjs}/sync/datastoreReachability/index.native.js +3 -1
  44. package/dist/cjs/sync/datastoreReachability/index.native.js.map +1 -0
  45. package/{lib → dist/cjs}/sync/index.js +6 -7
  46. package/dist/cjs/sync/index.js.map +1 -0
  47. package/{lib → dist/cjs}/sync/merger.js +3 -1
  48. package/dist/cjs/sync/merger.js.map +1 -0
  49. package/{lib → dist/cjs}/sync/outbox.js +3 -1
  50. package/dist/cjs/sync/outbox.js.map +1 -0
  51. package/{lib → dist/cjs}/sync/processors/errorMaps.js +4 -4
  52. package/dist/cjs/sync/processors/errorMaps.js.map +1 -0
  53. package/{lib → dist/cjs}/sync/processors/mutation.js +3 -1
  54. package/dist/cjs/sync/processors/mutation.js.map +1 -0
  55. package/{lib → dist/cjs}/sync/processors/subscription.js +4 -4
  56. package/dist/cjs/sync/processors/subscription.js.map +1 -0
  57. package/{lib → dist/cjs}/sync/processors/sync.js +3 -1
  58. package/dist/cjs/sync/processors/sync.js.map +1 -0
  59. package/{lib → dist/cjs}/sync/utils.js +3 -1
  60. package/dist/cjs/sync/utils.js.map +1 -0
  61. package/{lib → dist/cjs}/types.js +12 -21
  62. package/dist/cjs/types.js.map +1 -0
  63. package/{lib → dist/cjs}/util.js +3 -1
  64. package/dist/cjs/util.js.map +1 -0
  65. package/{lib-esm/authModeStrategies/defaultAuthStrategy.js → dist/esm/authModeStrategies/defaultAuthStrategy.mjs} +4 -1
  66. package/dist/esm/authModeStrategies/defaultAuthStrategy.mjs.map +1 -0
  67. package/dist/esm/authModeStrategies/index.mjs +3 -0
  68. package/dist/esm/authModeStrategies/index.mjs.map +1 -0
  69. package/{lib-esm/authModeStrategies/multiAuthStrategy.js → dist/esm/authModeStrategies/multiAuthStrategy.mjs} +7 -5
  70. package/dist/esm/authModeStrategies/multiAuthStrategy.mjs.map +1 -0
  71. package/{lib-esm/datastore/datastore.js → dist/esm/datastore/datastore.mjs} +30 -26
  72. package/dist/esm/datastore/datastore.mjs.map +1 -0
  73. package/dist/esm/index.mjs +19 -0
  74. package/dist/esm/index.mjs.map +1 -0
  75. package/{lib-esm/predicates/index.js → dist/esm/predicates/index.mjs} +10 -7
  76. package/dist/esm/predicates/index.mjs.map +1 -0
  77. package/{lib-esm/predicates/next.js → dist/esm/predicates/next.mjs} +15 -11
  78. package/dist/esm/predicates/next.mjs.map +1 -0
  79. package/{lib-esm/predicates/sort.js → dist/esm/predicates/sort.mjs} +3 -2
  80. package/dist/esm/predicates/sort.mjs.map +1 -0
  81. package/{lib-esm/storage/adapter/AsyncStorageAdapter.js → dist/esm/storage/adapter/AsyncStorageAdapter.mjs} +10 -6
  82. package/dist/esm/storage/adapter/AsyncStorageAdapter.mjs.map +1 -0
  83. package/{lib-esm/storage/adapter/AsyncStorageDatabase.js → dist/esm/storage/adapter/AsyncStorageDatabase.mjs} +7 -4
  84. package/dist/esm/storage/adapter/AsyncStorageDatabase.mjs.map +1 -0
  85. package/{lib-esm/storage/adapter/InMemoryStore.js → dist/esm/storage/adapter/InMemoryStore.mjs} +5 -2
  86. package/dist/esm/storage/adapter/InMemoryStore.mjs.map +1 -0
  87. package/{lib-esm/storage/adapter/InMemoryStore.native.js → dist/esm/storage/adapter/InMemoryStore.native.mjs} +6 -2
  88. package/dist/esm/storage/adapter/InMemoryStore.native.mjs.map +1 -0
  89. package/{lib-esm/storage/adapter/IndexedDBAdapter.js → dist/esm/storage/adapter/IndexedDBAdapter.mjs} +10 -6
  90. package/dist/esm/storage/adapter/IndexedDBAdapter.mjs.map +1 -0
  91. package/{lib-esm/storage/adapter/StorageAdapterBase.js → dist/esm/storage/adapter/StorageAdapterBase.mjs} +9 -5
  92. package/dist/esm/storage/adapter/StorageAdapterBase.mjs.map +1 -0
  93. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs +13 -0
  94. package/dist/esm/storage/adapter/getDefaultAdapter/index.mjs.map +1 -0
  95. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs +8 -0
  96. package/dist/esm/storage/adapter/getDefaultAdapter/index.native.mjs.map +1 -0
  97. package/dist/esm/storage/adapter/index.mjs +2 -0
  98. package/dist/esm/storage/adapter/index.mjs.map +1 -0
  99. package/{lib-esm/storage/relationship.js → dist/esm/storage/relationship.mjs} +6 -2
  100. package/dist/esm/storage/relationship.mjs.map +1 -0
  101. package/{lib-esm/storage/storage.js → dist/esm/storage/storage.mjs} +11 -8
  102. package/dist/esm/storage/storage.mjs.map +1 -0
  103. package/{lib-esm/sync/datastoreConnectivity.js → dist/esm/sync/datastoreConnectivity.mjs} +9 -5
  104. package/dist/esm/sync/datastoreConnectivity.mjs.map +1 -0
  105. package/dist/esm/sync/datastoreReachability/index.d.ts +1 -0
  106. package/{lib-esm/sync/datastoreReachability/index.js → dist/esm/sync/datastoreReachability/index.mjs} +6 -2
  107. package/dist/esm/sync/datastoreReachability/index.mjs.map +1 -0
  108. package/dist/esm/sync/datastoreReachability/index.native.d.ts +1 -0
  109. package/{lib-esm/sync/datastoreReachability/index.native.js → dist/esm/sync/datastoreReachability/index.native.mjs} +7 -3
  110. package/dist/esm/sync/datastoreReachability/index.native.mjs.map +1 -0
  111. package/{lib-esm/sync/index.js → dist/esm/sync/index.mjs} +24 -21
  112. package/dist/esm/sync/index.mjs.map +1 -0
  113. package/{lib-esm/sync/merger.js → dist/esm/sync/merger.mjs} +5 -2
  114. package/dist/esm/sync/merger.mjs.map +1 -0
  115. package/{lib-esm/sync/outbox.js → dist/esm/sync/outbox.mjs} +7 -4
  116. package/dist/esm/sync/outbox.mjs.map +1 -0
  117. package/{lib-esm/sync/processors/errorMaps.js → dist/esm/sync/processors/errorMaps.mjs} +13 -11
  118. package/dist/esm/sync/processors/errorMaps.mjs.map +1 -0
  119. package/{lib → dist/esm}/sync/processors/mutation.d.ts +1 -1
  120. package/{lib-esm/sync/processors/mutation.js → dist/esm/sync/processors/mutation.mjs} +10 -7
  121. package/dist/esm/sync/processors/mutation.mjs.map +1 -0
  122. package/{lib-esm/sync/processors/subscription.js → dist/esm/sync/processors/subscription.mjs} +18 -17
  123. package/dist/esm/sync/processors/subscription.mjs.map +1 -0
  124. package/{lib-esm/sync/processors/sync.js → dist/esm/sync/processors/sync.mjs} +8 -5
  125. package/dist/esm/sync/processors/sync.mjs.map +1 -0
  126. package/{lib-esm/sync/utils.js → dist/esm/sync/utils.mjs} +30 -26
  127. package/dist/esm/sync/utils.mjs.map +1 -0
  128. package/{lib-esm/types.js → dist/esm/types.mjs} +34 -30
  129. package/dist/esm/types.mjs.map +1 -0
  130. package/{lib-esm/util.js → dist/esm/util.mjs} +61 -57
  131. package/dist/esm/util.mjs.map +1 -0
  132. package/package.json +133 -137
  133. package/lib/authModeStrategies/defaultAuthStrategy.d.ts +0 -2
  134. package/lib/authModeStrategies/index.d.ts +0 -2
  135. package/lib/authModeStrategies/multiAuthStrategy.d.ts +0 -13
  136. package/lib/datastore/datastore.d.ts +0 -231
  137. package/lib/index.d.ts +0 -16
  138. package/lib/predicates/index.d.ts +0 -100
  139. package/lib/predicates/next.d.ts +0 -317
  140. package/lib/predicates/sort.d.ts +0 -8
  141. package/lib/ssr/index.d.ts +0 -3
  142. package/lib/ssr/index.js +0 -18
  143. package/lib/storage/adapter/AsyncStorageAdapter.d.ts +0 -40
  144. package/lib/storage/adapter/AsyncStorageDatabase.d.ts +0 -39
  145. package/lib/storage/adapter/InMemoryStore.d.ts +0 -11
  146. package/lib/storage/adapter/InMemoryStore.native.d.ts +0 -1
  147. package/lib/storage/adapter/IndexedDBAdapter.d.ts +0 -70
  148. package/lib/storage/adapter/StorageAdapterBase.d.ts +0 -134
  149. package/lib/storage/adapter/getDefaultAdapter/index.d.ts +0 -3
  150. package/lib/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -3
  151. package/lib/storage/adapter/getDefaultAdapter/index.native.js +0 -10
  152. package/lib/storage/adapter/index.d.ts +0 -9
  153. package/lib/storage/relationship.d.ts +0 -149
  154. package/lib/storage/storage.d.ts +0 -50
  155. package/lib/sync/datastoreConnectivity.d.ts +0 -16
  156. package/lib/sync/datastoreReachability/index.d.ts +0 -1
  157. package/lib/sync/datastoreReachability/index.native.d.ts +0 -1
  158. package/lib/sync/index.d.ts +0 -103
  159. package/lib/sync/merger.d.ts +0 -17
  160. package/lib/sync/outbox.d.ts +0 -27
  161. package/lib/sync/processors/errorMaps.d.ts +0 -17
  162. package/lib/sync/processors/subscription.d.ts +0 -42
  163. package/lib/sync/processors/sync.d.ts +0 -28
  164. package/lib/sync/utils.d.ts +0 -107
  165. package/lib/tsconfig.tsbuildinfo +0 -1
  166. package/lib/types.d.ts +0 -641
  167. package/lib/util.d.ts +0 -196
  168. package/lib-esm/authModeStrategies/index.js +0 -4
  169. package/lib-esm/index.js +0 -14
  170. package/lib-esm/ssr/index.d.ts +0 -3
  171. package/lib-esm/ssr/index.js +0 -13
  172. package/lib-esm/storage/adapter/getDefaultAdapter/index.js +0 -10
  173. package/lib-esm/storage/adapter/getDefaultAdapter/index.native.js +0 -5
  174. package/lib-esm/storage/adapter/index.js +0 -1
  175. package/lib-esm/sync/datastoreReachability/index.d.ts +0 -1
  176. package/lib-esm/sync/datastoreReachability/index.native.d.ts +0 -1
  177. package/lib-esm/sync/processors/mutation.d.ts +0 -67
  178. package/lib-esm/tsconfig.tsbuildinfo +0 -1
  179. package/src/ssr/index.ts +0 -27
  180. package/ssr/package.json +0 -8
  181. /package/{lib-esm → dist/esm}/authModeStrategies/defaultAuthStrategy.d.ts +0 -0
  182. /package/{lib-esm → dist/esm}/authModeStrategies/index.d.ts +0 -0
  183. /package/{lib-esm → dist/esm}/authModeStrategies/multiAuthStrategy.d.ts +0 -0
  184. /package/{lib-esm → dist/esm}/datastore/datastore.d.ts +0 -0
  185. /package/{lib-esm → dist/esm}/index.d.ts +0 -0
  186. /package/{lib-esm → dist/esm}/predicates/index.d.ts +0 -0
  187. /package/{lib-esm → dist/esm}/predicates/next.d.ts +0 -0
  188. /package/{lib-esm → dist/esm}/predicates/sort.d.ts +0 -0
  189. /package/{lib-esm → dist/esm}/storage/adapter/AsyncStorageAdapter.d.ts +0 -0
  190. /package/{lib-esm → dist/esm}/storage/adapter/AsyncStorageDatabase.d.ts +0 -0
  191. /package/{lib-esm → dist/esm}/storage/adapter/InMemoryStore.d.ts +0 -0
  192. /package/{lib-esm → dist/esm}/storage/adapter/InMemoryStore.native.d.ts +0 -0
  193. /package/{lib-esm → dist/esm}/storage/adapter/IndexedDBAdapter.d.ts +0 -0
  194. /package/{lib-esm → dist/esm}/storage/adapter/StorageAdapterBase.d.ts +0 -0
  195. /package/{lib-esm → dist/esm}/storage/adapter/getDefaultAdapter/index.d.ts +0 -0
  196. /package/{lib-esm → dist/esm}/storage/adapter/getDefaultAdapter/index.native.d.ts +0 -0
  197. /package/{lib-esm → dist/esm}/storage/adapter/index.d.ts +0 -0
  198. /package/{lib-esm → dist/esm}/storage/relationship.d.ts +0 -0
  199. /package/{lib-esm → dist/esm}/storage/storage.d.ts +0 -0
  200. /package/{lib-esm → dist/esm}/sync/datastoreConnectivity.d.ts +0 -0
  201. /package/{lib-esm → dist/esm}/sync/index.d.ts +0 -0
  202. /package/{lib-esm → dist/esm}/sync/merger.d.ts +0 -0
  203. /package/{lib-esm → dist/esm}/sync/outbox.d.ts +0 -0
  204. /package/{lib-esm → dist/esm}/sync/processors/errorMaps.d.ts +0 -0
  205. /package/{lib-esm → dist/esm}/sync/processors/subscription.d.ts +0 -0
  206. /package/{lib-esm → dist/esm}/sync/processors/sync.d.ts +0 -0
  207. /package/{lib-esm → dist/esm}/sync/utils.d.ts +0 -0
  208. /package/{lib-esm → dist/esm}/types.d.ts +0 -0
  209. /package/{lib-esm → dist/esm}/util.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.js","sources":["../../../src/predicates/next.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.predicateFor = exports.recursivePredicateFor = exports.GroupCondition = exports.FieldCondition = exports.internals = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst types_1 = require(\"../types\");\nconst index_1 = require(\"./index\");\nconst relationship_1 = require(\"../storage/relationship\");\nconst util_1 = require(\"../util\");\nconst ops = [...index_1.comparisonKeys];\n/**\n * A map from keys (exposed to customers) to the internal predicate data\n * structures invoking code should not muck with.\n */\nconst predicateInternalsMap = new Map();\n/**\n * Creates a link between a key (and generates a key if needed) and an internal\n * `GroupCondition`, which allows us to return a key object instead of the gory\n * conditions details to customers/invoking code.\n *\n * @param condition The internal condition to keep hidden.\n * @param key The object DataStore will use to find the internal condition.\n * If no key is given, an empty one is created.\n */\nconst registerPredicateInternals = (condition, key) => {\n const finalKey = key || new types_1.PredicateInternalsKey();\n predicateInternalsMap.set(finalKey, condition);\n return finalKey;\n};\n/**\n * Takes a key object from `registerPredicateInternals()` to fetch an internal\n * `GroupCondition` object, which can then be used to query storage or\n * test/match objects.\n *\n * This indirection exists to hide `GroupCondition` from public interfaces, since\n * `GroupCondition` contains extra methods and properties that public callers\n * should not use.\n *\n * @param key A key object previously returned by `registerPredicateInternals()`\n */\nconst internals = (key) => {\n if (!predicateInternalsMap.has(key)) {\n throw new Error(\"Invalid predicate. Terminate your predicate with a valid condition (e.g., `p => p.field.eq('value')`) or pass `Predicates.ALL`.\");\n }\n return predicateInternalsMap.get(key);\n};\nexports.internals = internals;\n/**\n * Maps operators to negated operators.\n * Used to facilitate propagation of negation down a tree of conditions.\n */\nconst negations = {\n and: 'or',\n or: 'and',\n not: 'and',\n eq: 'ne',\n ne: 'eq',\n gt: 'le',\n ge: 'lt',\n lt: 'ge',\n le: 'gt',\n contains: 'notContains',\n notContains: 'contains',\n};\n/**\n * A condition that can operate against a single \"primitive\" field of a model or item.\n * @member field The field of *some record* to test against.\n * @member operator The equality or comparison operator to use.\n * @member operands The operands for the equality/comparison check.\n */\nclass FieldCondition {\n constructor(field, operator, operands) {\n this.field = field;\n this.operator = operator;\n this.operands = operands;\n this.validate();\n }\n /**\n * Creates a copy of self.\n * @param extract Not used. Present only to fulfill the `UntypedCondition` interface.\n * @returns A new, identitical `FieldCondition`.\n */\n copy(extract) {\n return [\n new FieldCondition(this.field, this.operator, [...this.operands]),\n undefined,\n ];\n }\n /**\n * Produces a tree structure similar to a graphql condition. The returned\n * structure is \"dumb\" and is intended for another query/condition\n * generation mechanism to interpret, such as the cloud or storage query\n * builders.\n *\n * E.g.,\n *\n * ```json\n * {\n * \t\"name\": {\n * \t\t\"eq\": \"robert\"\n * \t}\n * }\n * ```\n */\n toAST() {\n return {\n [this.field]: {\n [this.operator]: this.operator === 'between'\n ? [this.operands[0], this.operands[1]]\n : this.operands[0],\n },\n };\n }\n /**\n * Produces a new condition (`FieldCondition` or `GroupCondition`) that\n * matches the opposite of this condition.\n *\n * Intended to be used when applying De Morgan's Law, which can be done to\n * produce more efficient queries against the storage layer if a negation\n * appears in the query tree.\n *\n * For example:\n *\n * 1. `name.eq('robert')` becomes `name.ne('robert')`\n * 2. `price.between(100, 200)` becomes `m => m.or(m => [m.price.lt(100), m.price.gt(200)])`\n *\n * @param model The model meta to use when construction a new `GroupCondition`\n * for cases where the negation requires multiple `FieldCondition`'s.\n */\n negated(model) {\n if (this.operator === 'between') {\n return new GroupCondition(model, undefined, undefined, 'or', [\n new FieldCondition(this.field, 'lt', [this.operands[0]]),\n new FieldCondition(this.field, 'gt', [this.operands[1]]),\n ]);\n }\n else if (this.operator === 'beginsWith') {\n // beginsWith negation doesn't have a good, safe optimation right now.\n // just re-wrap it in negation. The adapter will have to scan-and-filter,\n // as is likely optimal for negated beginsWith conditions *anyway*.\n return new GroupCondition(model, undefined, undefined, 'not', [\n new FieldCondition(this.field, 'beginsWith', [this.operands[0]]),\n ]);\n }\n else {\n return new FieldCondition(this.field, negations[this.operator], this.operands);\n }\n }\n /**\n * Not implemented. Not needed. GroupCondition instead consumes FieldConditions and\n * transforms them into legacy predicates. (*For now.*)\n * @param storage N/A. If ever implemented, the storage adapter to query.\n * @returns N/A. If ever implemented, return items from `storage` that match.\n */\n async fetch(storage) {\n return Promise.reject('No implementation needed [yet].');\n }\n /**\n * Determins whether a given item matches the expressed condition.\n * @param item The item to test.\n * @returns `Promise<boolean>`, `true` if matches; `false` otherwise.\n */\n async matches(item) {\n const v = item[this.field];\n const operations = {\n eq: () => v === this.operands[0],\n ne: () => v !== this.operands[0],\n gt: () => v > this.operands[0],\n ge: () => v >= this.operands[0],\n lt: () => v < this.operands[0],\n le: () => v <= this.operands[0],\n contains: () => v?.indexOf(this.operands[0]) > -1,\n notContains: () => (!v ? true : v.indexOf(this.operands[0]) === -1),\n beginsWith: () => v?.startsWith(this.operands[0]),\n between: () => v >= this.operands[0] && v <= this.operands[1],\n };\n const operation = operations[this.operator];\n if (operation) {\n const result = operation();\n return result;\n }\n else {\n throw new Error(`Invalid operator given: ${this.operator}`);\n }\n }\n /**\n * Checks `this.operands` for compatibility with `this.operator`.\n */\n validate() {\n /**\n * Creates a validator that checks for a particular `operands` count.\n * Throws an exception if the `count` disagrees with `operands.length`.\n * @param count The number of `operands` expected.\n */\n const argumentCount = count => {\n const argsClause = count === 1 ? 'argument is' : 'arguments are';\n return () => {\n if (this.operands.length !== count) {\n return `Exactly ${count} ${argsClause} required.`;\n }\n };\n };\n // NOTE: validations should return a message on failure.\n // hence, they should be \"joined\" together with logical OR's\n // as seen in the `between:` entry.\n const validations = {\n eq: argumentCount(1),\n ne: argumentCount(1),\n gt: argumentCount(1),\n ge: argumentCount(1),\n lt: argumentCount(1),\n le: argumentCount(1),\n contains: argumentCount(1),\n notContains: argumentCount(1),\n beginsWith: argumentCount(1),\n between: () => argumentCount(2)() ||\n (this.operands[0] > this.operands[1]\n ? 'The first argument must be less than or equal to the second argument.'\n : null),\n };\n const validate = validations[this.operator];\n if (validate) {\n const e = validate();\n if (typeof e === 'string')\n throw new Error(`Incorrect usage of \\`${this.operator}()\\`: ${e}`);\n }\n else {\n throw new Error(`Non-existent operator: \\`${this.operator}()\\``);\n }\n }\n}\nexports.FieldCondition = FieldCondition;\n/**\n * Small utility function to generate a monotonically increasing ID.\n * Used by GroupCondition to help keep track of which group is doing what,\n * when, and where during troubleshooting.\n */\nconst getGroupId = (() => {\n let seed = 1;\n return () => `group_${seed++}`;\n})();\n/**\n * A set of sub-conditions to operate against a model, optionally scoped to\n * a specific field, combined with the given operator (one of `and`, `or`, or `not`).\n * @member groupId Used to distinguish between GroupCondition instances for\n * debugging and troublehsooting.\n * @member model A metadata object that tells GroupCondition what to query and how.\n * @member field The field on the model that the sub-conditions apply to.\n * @member operator How to group child conditions together.\n * @member operands The child conditions.\n */\nclass GroupCondition {\n constructor(\n /**\n * The `ModelMeta` of the model to query and/or filter against.\n * Expected to contain:\n *\n * ```js\n * {\n * \tbuilder: ModelConstructor,\n * \tschema: SchemaModel,\n * \tpkField: string[]\n * }\n * ```\n */\n model, \n /**\n * If populated, this group specifices a condition on a relationship.\n *\n * If `field` does *not* point to a related model, that's an error. It\n * could indicate that the `GroupCondition` was instantiated with bad\n * data, or that the model metadata is incorrect.\n */\n field, \n /**\n * If a `field` is given, whether the relationship is a `HAS_ONE`,\n * 'HAS_MANY`, or `BELONGS_TO`.\n *\n * TODO: Remove this and replace with derivation using\n * `ModelRelationship.from(this.model, this.field).relationship`;\n */\n relationshipType, \n /**\n *\n */\n operator, \n /**\n *\n */\n operands, \n /**\n * Whether this GroupCondition is the result of an optimize call.\n *\n * This is used to guard against infinitely fetch -> optimize -> fetch\n * recursion.\n */\n isOptimized = false) {\n this.model = model;\n this.field = field;\n this.relationshipType = relationshipType;\n this.operator = operator;\n this.operands = operands;\n this.isOptimized = isOptimized;\n // `groupId` was used for development/debugging.\n // Should we leave this in for future troubleshooting?\n this.groupId = getGroupId();\n }\n /**\n * Returns a copy of a GroupCondition, which also returns the copy of a\n * given reference node to \"extract\".\n * @param extract A node of interest. Its copy will *also* be returned if the node exists.\n * @returns [The full copy, the copy of `extract` | undefined]\n */\n copy(extract) {\n const copied = new GroupCondition(this.model, this.field, this.relationshipType, this.operator, []);\n let extractedCopy = extract === this ? copied : undefined;\n this.operands.forEach(o => {\n const [operandCopy, extractedFromOperand] = o.copy(extract);\n copied.operands.push(operandCopy);\n extractedCopy = extractedCopy || extractedFromOperand;\n });\n return [copied, extractedCopy];\n }\n /**\n * Creates a new `GroupCondition` that contains only the local field conditions,\n * omitting related model conditions. That resulting `GroupCondition` can be\n * used to produce predicates that are compatible with the storage adapters and\n * Cloud storage.\n *\n * @param negate Whether the condition tree should be negated according\n * to De Morgan's law.\n */\n withFieldConditionsOnly(negate) {\n const negateChildren = negate !== (this.operator === 'not');\n return new GroupCondition(this.model, undefined, undefined, (negate ? negations[this.operator] : this.operator), this.operands\n .filter(o => o instanceof FieldCondition)\n .map(o => negateChildren ? o.negated(this.model) : o));\n }\n /**\n * Returns a version of the predicate tree with unnecessary logical groups\n * condensed and merged together. This is intended to create a dense tree\n * with leaf nodes (`FieldCondition`'s) aggregated under as few group conditions\n * as possible for the most efficient fetching possible -- it allows `fetch()`.\n *\n * E.g. a grouping like this:\n *\n * ```yaml\n * and:\n * \tand:\n * \t\tid:\n * \t\t\teq: \"abc\"\n * \tand:\n * \t\tname:\n * \t\t\teq: \"xyz\"\n * ```\n *\n * Will become this:\n *\n * ```yaml\n * and:\n * \tid:\n * \t\teq: \"abc\"\n * \tname:\n * \t\teq: \"xyz\"\n * ```\n *\n * This allows `fetch()` to pass both the `id` and `name` conditions to the adapter\n * together, which can then decide what index to use based on both fields together.\n *\n * @param preserveNode Whether to preserve the current node and to explicitly not eliminate\n * it during optimization. Used internally to preserve the root node and children of\n * `not` groups. `not` groups will always have a single child, so there's nothing to\n * optimize below a `not` (for now), and it makes the query logic simpler later.\n */\n optimized(preserveNode = true) {\n const operands = this.operands.map(o => o instanceof GroupCondition ? o.optimized(this.operator === 'not') : o);\n // we're only collapsing and/or groups that contains a single child for now,\n // because they're much more common and much more trivial to collapse. basically,\n // an `and`/`or` that contains a single child doesn't require the layer of\n // logical grouping.\n if (!preserveNode &&\n ['and', 'or'].includes(this.operator) &&\n !this.field &&\n operands.length === 1) {\n const operand = operands[0];\n if (operand instanceof FieldCondition) {\n // between conditions should NOT be passed up the chain. if they\n // need to be *negated* later, it is important that they be properly\n // contained in an AND group. when de morgan's law is applied, the\n // conditions are reversed and the AND group flips to an OR. this\n // doesn't work right if the a `between` doesn't live in an AND group.\n if (operand.operator !== 'between') {\n return operand;\n }\n }\n else {\n return operand;\n }\n }\n return new GroupCondition(this.model, this.field, this.relationshipType, this.operator, operands, true);\n }\n /**\n * Fetches matching records from a given storage adapter using legacy predicates (for now).\n * @param storage The storage adapter this predicate will query against.\n * @param breadcrumb For debugging/troubleshooting. A list of the `groupId`'s this\n * GroupdCondition.fetch is nested within.\n * @param negate Whether to match on the `NOT` of `this`.\n * @returns An `Promise` of `any[]` from `storage` matching the child conditions.\n */\n async fetch(storage, breadcrumb = [], negate = false) {\n if (!this.isOptimized) {\n return this.optimized().fetch(storage);\n }\n const resultGroups = [];\n const operator = (negate ? negations[this.operator] : this.operator);\n const negateChildren = negate !== (this.operator === 'not');\n /**\n * Conditions that must be branched out and used to generate a base, \"candidate\"\n * result set.\n *\n * If `field` is populated, these groups select *related* records, and the base,\n * candidate results are selected to match those.\n */\n const groups = this.operands.filter(op => op instanceof GroupCondition);\n /**\n * Simple conditions that must match the target model of `this`.\n */\n const conditions = this.operands.filter(op => op instanceof FieldCondition);\n for (const g of groups) {\n const relatives = await g.fetch(storage, [...breadcrumb, this.groupId], negateChildren);\n // no relatives -> no need to attempt to perform a \"join\" query for\n // candidate results:\n //\n // select a.* from a,b where b.id in EMPTY_SET ==> EMPTY_SET\n //\n // Additionally, the entire (sub)-query can be short-circuited if\n // the operator is `AND`. Illustrated in SQL:\n //\n // select a.* from a where\n // id in [a,b,c]\n // AND <\n // id in EMTPY_SET <<< Look!\n // AND <\n // id in [x,y,z]\n //\n // YIELDS: EMPTY_SET // <-- Easy peasy. Lemon squeezy.\n //\n if (relatives.length === 0) {\n // aggressively short-circuit as soon as we know the group condition will fail\n if (operator === 'and') {\n return [];\n }\n // less aggressive short-circuit if we know the relatives will produce no\n // candidate results; but aren't sure yet how this affects the group condition.\n resultGroups.push([]);\n continue;\n }\n if (g.field) {\n // `relatives` are actual relatives. We'll skim them for FK query values.\n // Use the relatives to add candidate result sets (`resultGroups`)\n const relationship = relationship_1.ModelRelationship.from(this.model, g.field);\n if (relationship) {\n const allJoinConditions = [];\n for (const relative of relatives) {\n const relativeConditions = [];\n for (let i = 0; i < relationship.localJoinFields.length; i++) {\n relativeConditions.push({\n [relationship.localJoinFields[i]]: {\n eq: relative[relationship.remoteJoinFields[i]],\n },\n });\n }\n allJoinConditions.push({ and: relativeConditions });\n }\n const predicate = index_1.ModelPredicateCreator.createFromAST(this.model.schema, {\n or: allJoinConditions,\n });\n resultGroups.push(await storage.query(this.model.builder, predicate));\n }\n else {\n throw new Error('Missing field metadata.');\n }\n }\n else {\n // relatives are not actually relatives. they're candidate results.\n resultGroups.push(relatives);\n }\n }\n // if conditions is empty at this point, child predicates found no matches.\n // i.e., we can stop looking and return empty.\n if (conditions.length > 0) {\n const predicate = this.withFieldConditionsOnly(negateChildren).toStoragePredicate();\n resultGroups.push(await storage.query(this.model.builder, predicate));\n }\n else if (conditions.length === 0 && resultGroups.length === 0) {\n resultGroups.push(await storage.query(this.model.builder));\n }\n // PK might be a single field, like `id`, or it might be several fields.\n // so, we'll need to extract the list of PK fields from an object\n // and stringify the list for easy comparison / merging.\n const getPKValue = item => JSON.stringify(this.model.pkField.map(name => item[name]));\n // will be used for intersecting or unioning results\n let resultIndex;\n if (operator === 'and') {\n if (resultGroups.length === 0) {\n return [];\n }\n // for each group, we intersect, removing items from the result index\n // that aren't present in each subsequent group.\n for (const group of resultGroups) {\n if (resultIndex === undefined) {\n resultIndex = new Map(group.map(item => [getPKValue(item), item]));\n }\n else {\n const intersectWith = new Map(group.map(item => [getPKValue(item), item]));\n for (const k of resultIndex.keys()) {\n if (!intersectWith.has(k)) {\n resultIndex.delete(k);\n }\n }\n }\n }\n }\n else if (operator === 'or' || operator === 'not') {\n // it's OK to handle NOT here, because NOT must always only negate\n // a single child predicate. NOT logic will have been distributed down\n // to the leaf conditions already.\n resultIndex = new Map();\n // just merge the groups, performing DISTINCT-ification by ID.\n for (const group of resultGroups) {\n for (const item of group) {\n resultIndex.set(getPKValue(item), item);\n }\n }\n }\n return Array.from(resultIndex?.values() || []);\n }\n /**\n * Determines whether a single item matches the conditions of `this`.\n * When checking the target `item`'s properties, each property will be `await`'d\n * to ensure lazy-loading is respected where applicable.\n * @param item The item to match against.\n * @param ignoreFieldName Tells `match()` that the field name has already been dereferenced.\n * (Used for iterating over children on HAS_MANY checks.)\n * @returns A boolean (promise): `true` if matched, `false` otherwise.\n */\n async matches(item, ignoreFieldName = false) {\n const itemToCheck = this.field && !ignoreFieldName ? await item[this.field] : item;\n // if there is no item to check, we can stop recursing immediately.\n // a condition cannot match against an item that does not exist. this\n // can occur when `item.field` is optional in the schema.\n if (!itemToCheck) {\n return false;\n }\n if (this.relationshipType === 'HAS_MANY' &&\n typeof itemToCheck[Symbol.asyncIterator] === 'function') {\n for await (const singleItem of itemToCheck) {\n if (await this.matches(singleItem, true)) {\n return true;\n }\n }\n return false;\n }\n if (this.operator === 'or') {\n return (0, util_1.asyncSome)(this.operands, c => c.matches(itemToCheck));\n }\n else if (this.operator === 'and') {\n return (0, util_1.asyncEvery)(this.operands, c => c.matches(itemToCheck));\n }\n else if (this.operator === 'not') {\n if (this.operands.length !== 1) {\n throw new Error('Invalid arguments! `not()` accepts exactly one predicate expression.');\n }\n return !(await this.operands[0].matches(itemToCheck));\n }\n else {\n throw new Error('Invalid group operator!');\n }\n }\n /**\n * Tranfsorm to a AppSync GraphQL compatible AST.\n * (Does not support filtering in nested types.)\n */\n toAST() {\n if (this.field)\n throw new Error('Nested type conditions are not supported!');\n return {\n [this.operator]: this.operands.map(operand => operand.toAST()),\n };\n }\n /**\n * Turn this predicate group into something a storage adapter\n * understands how to use.\n */\n toStoragePredicate() {\n return index_1.ModelPredicateCreator.createFromAST(this.model.schema, this.toAST());\n }\n /**\n * A JSON representation that's good for debugging.\n */\n toJSON() {\n return {\n ...this,\n model: this.model.schema.name,\n };\n }\n}\nexports.GroupCondition = GroupCondition;\n/**\n * Creates a \"seed\" predicate that can be used to build an executable condition.\n * This is used in `query()`, for example, to seed customer- E.g.,\n *\n * ```\n * const p = predicateFor({builder: modelConstructor, schema: modelSchema, pkField: string[]});\n * p.and(child => [\n * child.field.eq('whatever'),\n * child.childModel.childField.eq('whatever else'),\n * child.childModel.or(child => [\n * child.otherField.contains('x'),\n * child.otherField.contains('y'),\n * child.otherField.contains('z'),\n * ])\n * ])\n * ```\n *\n * `predicateFor()` returns objecst with recursive getters. To facilitate this,\n * a `query` and `tail` can be provided to \"accumulate\" nested conditions.\n *\n * @param ModelType The ModelMeta used to build child properties.\n * @param field Scopes the query branch to a field.\n * @param query A base query to build on. Omit to start a new query.\n * @param tail The point in an existing `query` to attach new conditions to.\n * @returns A ModelPredicate (builder) that customers can create queries with.\n * (As shown in function description.)\n */\nfunction recursivePredicateFor(ModelType, allowRecursion = true, field, query, tail) {\n // to be used if we don't have a base query or tail to build onto\n const starter = new GroupCondition(ModelType, field, undefined, 'and', []);\n const baseCondition = query && tail ? query : starter;\n const tailCondition = query && tail ? tail : starter;\n // our eventual return object, which can be built upon.\n // next steps will be to add or(), and(), not(), and field.op() methods.\n const link = {};\n // so it can be looked up later with in the internals when processing conditions.\n registerPredicateInternals(baseCondition, link);\n const copyLink = () => {\n const [query, newTail] = baseCondition.copy(tailCondition);\n const newLink = recursivePredicateFor(ModelType, allowRecursion, undefined, query, newTail);\n return { query, newTail, newLink };\n };\n // Adds .or() and .and() methods to the link.\n // TODO: If revisiting this code, consider writing a Proxy instead.\n ['and', 'or'].forEach(op => {\n link[op] = (builder) => {\n // or() and and() will return a copy of the original link\n // to head off mutability concerns.\n const { query, newTail } = copyLink();\n const childConditions = builder(recursivePredicateFor(ModelType, allowRecursion));\n if (!Array.isArray(childConditions)) {\n throw new Error(`Invalid predicate. \\`${op}\\` groups must return an array of child conditions.`);\n }\n // the customer will supply a child predicate, which apply to the `model.field`\n // of the tail GroupCondition.\n newTail?.operands.push(new GroupCondition(ModelType, field, undefined, op, childConditions.map(c => (0, exports.internals)(c))));\n // FinalPredicate\n return registerPredicateInternals(query);\n };\n });\n // TODO: If revisiting this code, consider proxy.\n link.not = (builder) => {\n // not() will return a copy of the original link\n // to head off mutability concerns.\n const { query, newTail } = copyLink();\n // unlike and() and or(), the customer will supply a \"singular\" child predicate.\n // the difference being: not() does not accept an array of predicate-like objects.\n // it negates only a *single* predicate subtree.\n newTail?.operands.push(new GroupCondition(ModelType, field, undefined, 'not', [\n (0, exports.internals)(builder(recursivePredicateFor(ModelType, allowRecursion))),\n ]));\n // A `FinalModelPredicate`.\n // Return a thing that can no longer be extended, but instead used to `async filter(items)`\n // or query storage: `.__query.fetch(storage)`.\n return registerPredicateInternals(query);\n };\n // For each field on the model schema, we want to add a getter\n // that creates the appropriate new `link` in the query chain.\n // TODO: If revisiting, consider a proxy.\n for (const fieldName in ModelType.schema.allFields) {\n Object.defineProperty(link, fieldName, {\n enumerable: true,\n get: () => {\n const def = ModelType.schema.allFields[fieldName];\n if (!def.association) {\n // we're looking at a value field. we need to return a\n // \"field matcher object\", which contains all of the comparison\n // functions ('eq', 'ne', 'gt', etc.), scoped to operate\n // against the target field (fieldName).\n return ops.reduce((fieldMatcher, operator) => {\n return {\n ...fieldMatcher,\n // each operator on the fieldMatcher objcect is a function.\n // when the customer calls the function, it returns a new link\n // in the chain -- for now -- this is the \"leaf\" link that\n // cannot be further extended.\n [operator]: (...operands) => {\n // build off a fresh copy of the existing `link`, just in case\n // the same link is being used elsewhere by the customer.\n const { query, newTail } = copyLink();\n // normalize operands. if any of the values are `undefiend`, use\n // `null` instead, because that's what will be stored cross-platform.\n const normalizedOperands = operands.map(o => o === undefined ? null : o);\n // add the given condition to the link's TAIL node.\n // remember: the base link might go N nodes deep! e.g.,\n newTail?.operands.push(new FieldCondition(fieldName, operator, normalizedOperands));\n // A `FinalModelPredicate`.\n // Return a thing that can no longer be extended, but instead used to `async filter(items)`\n // or query storage: `.__query.fetch(storage)`.\n return registerPredicateInternals(query);\n },\n };\n }, {});\n }\n else {\n if (!allowRecursion) {\n throw new Error('Predication on releated models is not supported in this context.');\n }\n else if (def.association.connectionType === 'BELONGS_TO' ||\n def.association.connectionType === 'HAS_ONE' ||\n def.association.connectionType === 'HAS_MANY') {\n // the use has just typed '.someRelatedModel'. we need to given them\n // back a predicate chain.\n const relatedMeta = def.type.modelConstructor;\n if (!relatedMeta) {\n throw new Error('Related model metadata is missing. This is a bug! Please report it.');\n }\n // `Model.reletedModelField` returns a copy of the original link,\n // and will contains copies of internal GroupConditions\n // to head off mutability concerns.\n const [newquery, oldtail] = baseCondition.copy(tailCondition);\n const newtail = new GroupCondition(relatedMeta, fieldName, def.association.connectionType, 'and', []);\n // `oldtail` here refers to the *copy* of the old tail.\n // so, it's safe to modify at this point. and we need to modify\n // it to push the *new* tail onto the end of it.\n oldtail.operands.push(newtail);\n const newlink = recursivePredicateFor(relatedMeta, allowRecursion, undefined, newquery, newtail);\n return newlink;\n }\n else {\n throw new Error(\"Related model definition doesn't have a typedef. This is a bug! Please report it.\");\n }\n }\n },\n });\n }\n return link;\n}\nexports.recursivePredicateFor = recursivePredicateFor;\nfunction predicateFor(ModelType) {\n // the cast here is just a cheap way to reduce the surface area from\n // the recursive type.\n return recursivePredicateFor(ModelType, false);\n}\nexports.predicateFor = predicateFor;\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- "use strict";
1
+ 'use strict';
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.ModelSortPredicateCreator = void 0;
4
5
  class ModelSortPredicateCreator {
5
6
  static createPredicateBuilder(modelDefinition) {
6
7
  const { name: modelName } = modelDefinition;
7
8
  const fieldNames = new Set(Object.keys(modelDefinition.fields));
8
- let handler;
9
- const predicate = new Proxy({}, (handler = {
9
+ const predicate = new Proxy({}, ({
10
10
  get(_target, propertyKey, receiver) {
11
11
  const field = propertyKey;
12
12
  if (!fieldNames.has(field)) {
@@ -50,3 +50,4 @@ class ModelSortPredicateCreator {
50
50
  }
51
51
  ModelSortPredicateCreator.sortPredicateGroupsMap = new WeakMap();
52
52
  exports.ModelSortPredicateCreator = ModelSortPredicateCreator;
53
+ //# sourceMappingURL=sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.js","sources":["../../../src/predicates/sort.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ModelSortPredicateCreator = void 0;\nclass ModelSortPredicateCreator {\n static createPredicateBuilder(modelDefinition) {\n const { name: modelName } = modelDefinition;\n const fieldNames = new Set(Object.keys(modelDefinition.fields));\n let handler;\n const predicate = new Proxy({}, (handler = {\n get(_target, propertyKey, receiver) {\n const field = propertyKey;\n if (!fieldNames.has(field)) {\n throw new Error(`Invalid field for model. field: ${String(field)}, model: ${modelName}`);\n }\n const result = (sortDirection) => {\n ModelSortPredicateCreator.sortPredicateGroupsMap\n .get(receiver)\n ?.push({ field, sortDirection });\n return receiver;\n };\n return result;\n },\n }));\n ModelSortPredicateCreator.sortPredicateGroupsMap.set(predicate, []);\n return predicate;\n }\n static isValidPredicate(predicate) {\n return ModelSortPredicateCreator.sortPredicateGroupsMap.has(predicate);\n }\n static getPredicates(predicate, throwOnInvalid = true) {\n if (throwOnInvalid &&\n !ModelSortPredicateCreator.isValidPredicate(predicate)) {\n throw new Error('The predicate is not valid');\n }\n const predicateGroup = ModelSortPredicateCreator.sortPredicateGroupsMap.get(predicate);\n if (predicateGroup) {\n return predicateGroup;\n }\n else {\n throw new Error('Predicate group not found');\n }\n }\n // transforms cb-style predicate into Proxy\n static createFromExisting(modelDefinition, existing) {\n if (!existing || !modelDefinition) {\n return undefined;\n }\n return existing(ModelSortPredicateCreator.createPredicateBuilder(modelDefinition));\n }\n}\nModelSortPredicateCreator.sortPredicateGroupsMap = new WeakMap();\nexports.ModelSortPredicateCreator = ModelSortPredicateCreator;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC;AAC3C,MAAM,yBAAyB,CAAC;AAChC,IAAI,OAAO,sBAAsB,CAAC,eAAe,EAAE;AACnD,QAAQ,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC;AACpD,QAAQ,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAExE,QAAQ,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,EAAE,GAAa;AACnD,YAAY,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE;AAChD,gBAAgB,MAAM,KAAK,GAAG,WAAW,CAAC;AAC1C,gBAAgB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5C,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7G,iBAAiB;AACjB,gBAAgB,MAAM,MAAM,GAAG,CAAC,aAAa,KAAK;AAClD,oBAAoB,yBAAyB,CAAC,sBAAsB;AACpE,yBAAyB,GAAG,CAAC,QAAQ,CAAC;AACtC,0BAA0B,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;AACzD,oBAAoB,OAAO,QAAQ,CAAC;AACpC,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,SAAS,EAAE,CAAC;AACZ,QAAQ,yBAAyB,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC5E,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,gBAAgB,CAAC,SAAS,EAAE;AACvC,QAAQ,OAAO,yBAAyB,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,EAAE;AAC3D,QAAQ,IAAI,cAAc;AAC1B,YAAY,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;AACpE,YAAY,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,yBAAyB,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/F,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,OAAO,cAAc,CAAC;AAClC,SAAS;AACT,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACzD,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,kBAAkB,CAAC,eAAe,EAAE,QAAQ,EAAE;AACzD,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC3C,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL,CAAC;AACD,yBAAyB,CAAC,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;AACjE,OAAO,CAAC,yBAAyB,GAAG,yBAAyB;;"}
@@ -1,12 +1,11 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
1
+ 'use strict';
2
+
5
3
  Object.defineProperty(exports, "__esModule", { value: true });
6
4
  exports.AsyncStorageAdapter = void 0;
5
+ const tslib_1 = require("tslib");
7
6
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
8
7
  // SPDX-License-Identifier: Apache-2.0
9
- const AsyncStorageDatabase_1 = __importDefault(require("./AsyncStorageDatabase"));
8
+ const AsyncStorageDatabase_1 = tslib_1.__importDefault(require("./AsyncStorageDatabase"));
10
9
  const types_1 = require("../../types");
11
10
  const util_1 = require("../../util");
12
11
  const StorageAdapterBase_1 = require("./StorageAdapterBase");
@@ -143,3 +142,4 @@ class AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {
143
142
  }
144
143
  exports.AsyncStorageAdapter = AsyncStorageAdapter;
145
144
  exports.default = new AsyncStorageAdapter();
145
+ //# sourceMappingURL=AsyncStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncStorageAdapter.js","sources":["../../../../src/storage/adapter/AsyncStorageAdapter.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncStorageAdapter = void 0;\nconst tslib_1 = require(\"tslib\");\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst AsyncStorageDatabase_1 = tslib_1.__importDefault(require(\"./AsyncStorageDatabase\"));\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst StorageAdapterBase_1 = require(\"./StorageAdapterBase\");\nclass AsyncStorageAdapter extends StorageAdapterBase_1.StorageAdapterBase {\n // no-ops for this adapter\n async preSetUpChecks() { }\n async preOpCheck() { }\n /**\n * Open AsyncStorage database\n * Create new DB if one doesn't exist\n *\n * Called by `StorageAdapterBase.setUp()`\n *\n * @returns AsyncStorageDatabase instance\n */\n async initDb() {\n const db = new AsyncStorageDatabase_1.default();\n await db.init();\n return db;\n }\n async clear() {\n await this.db.clear();\n this.db = undefined;\n this.initPromise = undefined;\n }\n async batchSave(modelConstructor, items) {\n if (items.length === 0) {\n return [];\n }\n const modelName = modelConstructor.name;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const storeName = (0, util_1.getStorename)(namespaceName, modelName);\n const keys = (0, util_1.getIndexKeys)(this.schema.namespaces[namespaceName], modelName);\n const batch = [];\n for (const item of items) {\n const model = this.modelInstanceCreator(modelConstructor, item);\n const connectedModels = (0, util_1.traverseModel)(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);\n const keyValuesPath = this.getIndexKeyValuesPath(model);\n const { instance } = connectedModels.find(({ instance }) => {\n const instanceKeyValuesPath = this.getIndexKeyValuesPath(instance);\n return (0, util_1.keysEqual)([instanceKeyValuesPath], [keyValuesPath]);\n });\n batch.push(instance);\n }\n return await this.db.batchSave(storeName, batch, keys);\n }\n async _get(storeName, keyArr) {\n const itemKeyValuesPath = keyArr.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n return await this.db.get(itemKeyValuesPath, storeName);\n }\n async save(model, condition) {\n const { storeName, connectionStoreNames, modelKeyValues } = this.saveMetadata(model);\n const fromDB = await this._get(storeName, modelKeyValues);\n this.validateSaveCondition(condition, fromDB);\n const result = [];\n for await (const resItem of connectionStoreNames) {\n const { storeName, item, instance, keys } = resItem;\n const itemKeyValues = keys.map(key => item[key]);\n const fromDB = await this._get(storeName, itemKeyValues);\n const opType = fromDB ? types_1.OpType.UPDATE : types_1.OpType.INSERT;\n if ((0, util_1.keysEqual)(itemKeyValues, modelKeyValues) ||\n opType === types_1.OpType.INSERT) {\n await this.db.save(item, storeName, keys, itemKeyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR));\n result.push([instance, opType]);\n }\n }\n return result;\n }\n async query(modelConstructor, predicate, pagination) {\n const { storeName, namespaceName, queryByKey, predicates, hasSort, hasPagination, } = this.queryMetadata(modelConstructor, predicate, pagination);\n const records = (await (async () => {\n if (queryByKey) {\n const keyValues = queryByKey.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n const record = await this.getByKey(storeName, keyValues);\n return record ? [record] : [];\n }\n if (predicates) {\n const filtered = await this.filterOnPredicate(storeName, predicates);\n return this.inMemoryPagination(filtered, pagination);\n }\n if (hasSort || hasPagination) {\n const all = await this.getAll(storeName);\n return this.inMemoryPagination(all, pagination);\n }\n return this.getAll(storeName);\n })());\n return await this.load(namespaceName, modelConstructor.name, records);\n }\n async getByKey(storeName, keyValuePath) {\n return await this.db.get(keyValuePath, storeName);\n }\n async getAll(storeName) {\n return await this.db.getAll(storeName);\n }\n async filterOnPredicate(storeName, predicates) {\n const { predicates: predicateObjs, type } = predicates;\n const all = await this.getAll(storeName);\n const filtered = predicateObjs\n ? all.filter(m => (0, util_1.validatePredicate)(m, type, predicateObjs))\n : all;\n return filtered;\n }\n inMemoryPagination(records, pagination) {\n return (0, util_1.inMemoryPagination)(records, pagination);\n }\n async queryOne(modelConstructor, firstOrLast = types_1.QueryOne.FIRST) {\n const storeName = this.getStorenameForModel(modelConstructor);\n const result = await this.db.getOne(firstOrLast, storeName);\n return result && this.modelInstanceCreator(modelConstructor, result);\n }\n async deleteItem(deleteQueue) {\n for await (const deleteItem of deleteQueue) {\n const { storeName, items } = deleteItem;\n for await (const item of items) {\n if (item) {\n if (typeof item === 'object') {\n const keyValuesPath = this.getIndexKeyValuesPath(item);\n await this.db.delete(keyValuesPath, storeName);\n }\n }\n }\n }\n }\n //#region platform-specific helper methods\n /**\n * Retrieves concatenated primary key values from a model\n *\n * @param model\n * @returns\n */\n getIndexKeyValuesPath(model) {\n return this.getIndexKeyValuesFromModel(model).join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n }\n}\nexports.AsyncStorageAdapter = AsyncStorageAdapter;\nexports.default = new AsyncStorageAdapter();\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- "use strict";
1
+ 'use strict';
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  const types_1 = require("../../types");
4
5
  const util_1 = require("../../util");
@@ -259,3 +260,4 @@ class AsyncStorageDatabase {
259
260
  }
260
261
  }
261
262
  exports.default = AsyncStorageDatabase;
263
+ //# sourceMappingURL=AsyncStorageDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncStorageDatabase.js","sources":["../../../../src/storage/adapter/AsyncStorageDatabase.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst InMemoryStore_1 = require(\"./InMemoryStore\");\nconst DB_NAME = '@AmplifyDatastore';\nconst COLLECTION = 'Collection';\nconst DATA = 'Data';\nconst monotonicFactoriesMap = new Map();\nclass AsyncStorageDatabase {\n constructor() {\n /**\n * Maps storeNames to a map of ulid->id\n */\n this._collectionInMemoryIndex = new Map();\n this.storage = (0, InMemoryStore_1.createInMemoryStore)();\n }\n /**\n * Collection index is map of stores (i.e. sync, metadata, mutation event, and data)\n * @param storeName {string} - Name of the store\n * @returns Map of ulid->id\n */\n getCollectionIndex(storeName) {\n if (!this._collectionInMemoryIndex.has(storeName)) {\n this._collectionInMemoryIndex.set(storeName, new Map());\n }\n return this._collectionInMemoryIndex.get(storeName);\n }\n /**\n * Return ULID for store if it exists, otherwise create a new one\n * @param storeName {string} - Name of the store\n * @returns ulid\n */\n getMonotonicFactory(storeName) {\n if (!monotonicFactoriesMap.has(storeName)) {\n monotonicFactoriesMap.set(storeName, (0, util_1.monotonicUlidFactory)());\n }\n return monotonicFactoriesMap.get(storeName);\n }\n async init() {\n this._collectionInMemoryIndex.clear();\n const allKeys = await this.storage.getAllKeys();\n const keysForCollectionEntries = [];\n for (const key of allKeys) {\n const [dbName, storeName, recordType, ulidOrId, id] = key.split('::');\n if (dbName === DB_NAME) {\n if (recordType === DATA) {\n let ulid;\n if (id === undefined) {\n // It is an old entry (without ulid). Need to migrate to new key format\n const id = ulidOrId;\n const newUlid = this.getMonotonicFactory(storeName)();\n const oldKey = this.getLegacyKeyForItem(storeName, id);\n const newKey = this.getKeyForItem(storeName, id, newUlid);\n const item = await this.storage.getItem(oldKey);\n await this.storage.setItem(newKey, item);\n await this.storage.removeItem(oldKey);\n ulid = newUlid;\n }\n else {\n ulid = ulidOrId;\n }\n this.getCollectionIndex(storeName).set(id, ulid);\n }\n else if (recordType === COLLECTION) {\n keysForCollectionEntries.push(key);\n }\n }\n }\n if (keysForCollectionEntries.length > 0) {\n await this.storage.multiRemove(keysForCollectionEntries);\n }\n }\n async save(item, storeName, keys, keyValuesPath) {\n const idxName = (0, util_1.indexNameFromKeys)(keys);\n const ulid = this.getCollectionIndex(storeName)?.get(idxName) ||\n this.getMonotonicFactory(storeName)();\n // Retrieve db key for item\n const itemKey = this.getKeyForItem(storeName, keyValuesPath, ulid);\n // Set key in collection index\n this.getCollectionIndex(storeName)?.set(keyValuesPath, ulid);\n // Save item in db\n await this.storage.setItem(itemKey, JSON.stringify(item));\n }\n async batchSave(storeName, items, keys) {\n if (items.length === 0) {\n return [];\n }\n const result = [];\n const collection = this.getCollectionIndex(storeName);\n const keysToDelete = new Set();\n const keysToSave = new Set();\n const allItemsKeys = [];\n const itemsMap = {};\n /* Populate allItemKeys, keysToDelete, and keysToSave */\n for (const item of items) {\n // Extract keys from concatenated key path, map to item values\n const keyValues = keys.map(field => item[field]);\n const { _deleted } = item;\n // If id is in the store, retrieve, otherwise generate new ULID\n const ulid = collection.get(keyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR)) ||\n this.getMonotonicFactory(storeName)();\n // Generate the \"longer key\" for the item\n const key = this.getKeyForItem(storeName, keyValues.join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR), ulid);\n allItemsKeys.push(key);\n itemsMap[key] = { ulid, model: item };\n if (_deleted) {\n keysToDelete.add(key);\n }\n else {\n keysToSave.add(key);\n }\n }\n const existingRecordsMap = await this.storage.multiGet(allItemsKeys);\n const existingRecordsKeys = existingRecordsMap\n .filter(([, v]) => !!v)\n .reduce((set, [k]) => set.add(k), new Set());\n // Delete\n await new Promise((resolve, reject) => {\n if (keysToDelete.size === 0) {\n resolve();\n return;\n }\n const keysToDeleteArray = Array.from(keysToDelete);\n keysToDeleteArray.forEach(key => {\n // key: full db key\n // keys: PK and/or SK keys\n const primaryKeyValues = keys\n .map(field => itemsMap[key].model[field])\n .join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n collection.delete(primaryKeyValues);\n });\n this.storage.multiRemove(keysToDeleteArray, (errors) => {\n if (errors && errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n });\n });\n // Save\n await new Promise((resolve, reject) => {\n if (keysToSave.size === 0) {\n resolve();\n return;\n }\n const entriesToSet = Array.from(keysToSave).map(key => [\n key,\n JSON.stringify(itemsMap[key].model),\n ]);\n keysToSave.forEach(key => {\n const { model, ulid } = itemsMap[key];\n // Retrieve values from model, use as key for collection index\n const keyValues = keys\n .map(field => model[field])\n .join(util_1.DEFAULT_PRIMARY_KEY_VALUE_SEPARATOR);\n collection.set(keyValues, ulid);\n });\n this.storage.multiSet(entriesToSet, (errors) => {\n if (errors && errors.length > 0) {\n reject(errors);\n }\n else {\n resolve();\n }\n });\n });\n for (const key of allItemsKeys) {\n if (keysToDelete.has(key) && existingRecordsKeys.has(key)) {\n result.push([itemsMap[key].model, types_1.OpType.DELETE]);\n }\n else if (keysToSave.has(key)) {\n result.push([\n itemsMap[key].model,\n existingRecordsKeys.has(key) ? types_1.OpType.UPDATE : types_1.OpType.INSERT,\n ]);\n }\n }\n return result;\n }\n async get(keyValuePath, storeName) {\n const ulid = this.getCollectionIndex(storeName).get(keyValuePath);\n const itemKey = this.getKeyForItem(storeName, keyValuePath, ulid);\n const recordAsString = await this.storage.getItem(itemKey);\n const record = recordAsString && JSON.parse(recordAsString);\n return record;\n }\n async getOne(firstOrLast, storeName) {\n const collection = this.getCollectionIndex(storeName);\n const [itemId, ulid] = firstOrLast === types_1.QueryOne.FIRST\n ? (() => {\n let id, ulid;\n for ([id, ulid] of collection)\n break; // Get first element of the set\n return [id, ulid];\n })()\n : (() => {\n let id, ulid;\n for ([id, ulid] of collection)\n ; // Get last element of the set\n return [id, ulid];\n })();\n const itemKey = this.getKeyForItem(storeName, itemId, ulid);\n const itemString = itemKey && (await this.storage.getItem(itemKey));\n const result = itemString ? JSON.parse(itemString) || undefined : undefined;\n return result;\n }\n /**\n * This function gets all the records stored in async storage for a particular storeName\n * It then loads all the records for that filtered set of keys using multiGet()\n */\n async getAll(storeName, pagination) {\n const collection = this.getCollectionIndex(storeName);\n const { page = 0, limit = 0 } = pagination || {};\n const start = Math.max(0, page * limit) || 0;\n const end = limit > 0 ? start + limit : undefined;\n const keysForStore = [];\n let count = 0;\n for (const [id, ulid] of collection) {\n count++;\n if (count <= start) {\n continue;\n }\n keysForStore.push(this.getKeyForItem(storeName, id, ulid));\n if (count === end) {\n break;\n }\n }\n const storeRecordStrings = await this.storage.multiGet(keysForStore);\n const records = storeRecordStrings\n .filter(([, value]) => value)\n .map(([, value]) => JSON.parse(value));\n return records;\n }\n async delete(key, storeName) {\n const ulid = this.getCollectionIndex(storeName).get(key);\n const itemKey = this.getKeyForItem(storeName, key, ulid);\n this.getCollectionIndex(storeName).delete(key);\n await this.storage.removeItem(itemKey);\n }\n /**\n * Clear the AsyncStorage of all DataStore entries\n */\n async clear() {\n const allKeys = await this.storage.getAllKeys();\n const allDataStoreKeys = allKeys.filter(key => key.startsWith(DB_NAME));\n await this.storage.multiRemove(allDataStoreKeys);\n this._collectionInMemoryIndex.clear();\n }\n getKeyForItem(storeName, id, ulid) {\n return `${this.getKeyPrefixForStoreItems(storeName)}::${ulid}::${id}`;\n }\n getLegacyKeyForItem(storeName, id) {\n return `${this.getKeyPrefixForStoreItems(storeName)}::${id}`;\n }\n getKeyPrefixForStoreItems(storeName) {\n return `${DB_NAME}::${storeName}::${DATA}`;\n }\n}\nexports.default = AsyncStorageDatabase;\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- "use strict";
1
+ 'use strict';
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.createInMemoryStore = exports.InMemoryStore = void 0;
4
5
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
@@ -38,3 +39,4 @@ function createInMemoryStore() {
38
39
  return new InMemoryStore();
39
40
  }
40
41
  exports.createInMemoryStore = createInMemoryStore;
42
+ //# sourceMappingURL=InMemoryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryStore.js","sources":["../../../../src/storage/adapter/InMemoryStore.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInMemoryStore = exports.InMemoryStore = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nclass InMemoryStore {\n constructor() {\n this.db = new Map();\n this.getAllKeys = async () => {\n return Array.from(this.db.keys());\n };\n this.multiGet = async (keys) => {\n return keys.reduce((res, k) => (res.push([k, this.db.get(k)]), res), []);\n };\n this.multiRemove = async (keys, callback) => {\n keys.forEach(k => this.db.delete(k));\n typeof callback === 'function' && callback();\n };\n this.multiSet = async (entries, callback) => {\n entries.forEach(([key, value]) => {\n this.setItem(key, value);\n });\n typeof callback === 'function' && callback();\n };\n this.setItem = async (key, value) => {\n return this.db.set(key, value);\n };\n this.removeItem = async (key) => {\n return this.db.delete(key);\n };\n this.getItem = async (key) => {\n return this.db.get(key);\n };\n }\n}\nexports.InMemoryStore = InMemoryStore;\nfunction createInMemoryStore() {\n return new InMemoryStore();\n}\nexports.createInMemoryStore = createInMemoryStore;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AAC7D;AACA;AACA,MAAM,aAAa,CAAC;AACpB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,YAAY;AACtC,YAAY,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,KAAK;AACxC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACrF,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO,IAAI,EAAE,QAAQ,KAAK;AACrD,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;AACzD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,OAAO,EAAE,QAAQ,KAAK;AACrD,YAAY,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAC9C,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,EAAE,CAAC;AACzD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,KAAK,KAAK;AAC7C,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,KAAK;AACzC,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,KAAK;AACtC,YAAY,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,SAAS,CAAC;AACV,KAAK;AACL,CAAC;AACD,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;AACtC,SAAS,mBAAmB,GAAG;AAC/B,IAAI,OAAO,IAAI,aAAa,EAAE,CAAC;AAC/B,CAAC;AACD,OAAO,CAAC,mBAAmB,GAAG,mBAAmB;;"}
@@ -1,14 +1,14 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
1
+ 'use strict';
2
+
5
3
  Object.defineProperty(exports, "__esModule", { value: true });
6
4
  exports.createInMemoryStore = void 0;
5
+ const tslib_1 = require("tslib");
7
6
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
8
7
  // SPDX-License-Identifier: Apache-2.0
9
- const async_storage_1 = __importDefault(require("@react-native-async-storage/async-storage"));
8
+ const async_storage_1 = tslib_1.__importDefault(require("@react-native-async-storage/async-storage"));
10
9
  // See: https://react-native-async-storage.github.io/async-storage/
11
10
  function createInMemoryStore() {
12
11
  return async_storage_1.default;
13
12
  }
14
13
  exports.createInMemoryStore = createInMemoryStore;
14
+ //# sourceMappingURL=InMemoryStore.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryStore.native.js","sources":["../../../../src/storage/adapter/InMemoryStore.native.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInMemoryStore = void 0;\nconst tslib_1 = require(\"tslib\");\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst async_storage_1 = tslib_1.__importDefault(require(\"@react-native-async-storage/async-storage\"));\n// See: https://react-native-async-storage.github.io/async-storage/\nfunction createInMemoryStore() {\n return async_storage_1.default;\n}\nexports.createInMemoryStore = createInMemoryStore;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACrC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC;AACA;AACA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,CAAC;AACtG;AACA,SAAS,mBAAmB,GAAG;AAC/B,IAAI,OAAO,eAAe,CAAC,OAAO,CAAC;AACnC,CAAC;AACD,OAAO,CAAC,mBAAmB,GAAG,mBAAmB;;"}
@@ -1,31 +1,10 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
1
+ 'use strict';
2
+
25
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
26
5
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
27
6
  // SPDX-License-Identifier: Apache-2.0
28
- const idb = __importStar(require("idb"));
7
+ const idb = tslib_1.__importStar(require("idb"));
29
8
  const types_1 = require("../../types");
30
9
  const util_1 = require("../../util");
31
10
  const StorageAdapterBase_1 = require("./StorageAdapterBase");
@@ -567,3 +546,4 @@ class IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {
567
546
  }
568
547
  }
569
548
  exports.default = new IndexedDBAdapter();
549
+ //# sourceMappingURL=IndexedDBAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDBAdapter.js","sources":["../../../../src/storage/adapter/IndexedDBAdapter.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst idb = tslib_1.__importStar(require(\"idb\"));\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst StorageAdapterBase_1 = require(\"./StorageAdapterBase\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst logger = new core_1.ConsoleLogger('DataStore');\n/**\n * The point after which queries composed of multiple simple OR conditions\n * should scan-and-filter instead of individual queries for each condition.\n *\n * At some point, this should be configurable and/or dynamic based on table\n * size and possibly even on observed average seek latency. For now, it's\n * based on an manual \"binary search\" for the breakpoint as measured in the\n * unit test suite. This isn't necessarily optimal. But, it's at least derived\n * empirically, rather than theoretically and without any verification!\n *\n * REMEMBER! If you run more realistic benchmarks and update this value, update\n * this comment so the validity and accuracy of future query tuning exercises\n * can be compared to the methods used to derive the current value. E.g.,\n *\n * 1. In browser benchmark > unit test benchmark\n * 2. Multi-browser benchmark > single browser benchmark\n * 3. Benchmarks of various table sizes > static table size benchmark\n *\n * etc...\n *\n */\nconst MULTI_OR_CONDITION_SCAN_BREAKPOINT = 7;\n//\nconst DB_VERSION = 3;\nclass IndexedDBAdapter extends StorageAdapterBase_1.StorageAdapterBase {\n constructor() {\n super(...arguments);\n this.safariCompatabilityMode = false;\n /**\n * Checks the given path against the browser's IndexedDB implementation for\n * necessary compatibility transformations, applying those transforms if needed.\n *\n * @param `keyArr` strings to compatibilize for browser-indexeddb index operations\n * @returns An array or string, depending on and given key,\n * that is ensured to be compatible with the IndexedDB implementation's nuances.\n */\n this.canonicalKeyPath = (keyArr) => {\n if (this.safariCompatabilityMode) {\n return keyArr.length > 1 ? keyArr : keyArr[0];\n }\n return keyArr;\n };\n //#endregion\n }\n // checks are called by StorageAdapterBase class\n async preSetUpChecks() {\n await this.checkPrivate();\n await this.setSafariCompatabilityMode();\n }\n async preOpCheck() {\n await this.checkPrivate();\n }\n /**\n * Initialize IndexedDB database\n * Create new DB if one doesn't exist\n * Upgrade outdated DB\n *\n * Called by `StorageAdapterBase.setUp()`\n *\n * @returns IDB Database instance\n */\n async initDb() {\n return await idb.openDB(this.dbName, DB_VERSION, {\n upgrade: async (db, oldVersion, newVersion, txn) => {\n // create new database\n if (oldVersion === 0) {\n Object.keys(this.schema.namespaces).forEach(namespaceName => {\n const namespace = this.schema.namespaces[namespaceName];\n Object.keys(namespace.models).forEach(modelName => {\n const storeName = (0, util_1.getStorename)(namespaceName, modelName);\n this.createObjectStoreForModel(db, namespaceName, storeName, modelName);\n });\n });\n return;\n }\n // migrate existing database to latest schema\n if ((oldVersion === 1 || oldVersion === 2) && newVersion === 3) {\n try {\n for (const storeName of txn.objectStoreNames) {\n const origStore = txn.objectStore(storeName);\n // rename original store\n const tmpName = `tmp_${storeName}`;\n origStore.name = tmpName;\n const { namespaceName, modelName } = this.getNamespaceAndModelFromStorename(storeName);\n const modelInCurrentSchema = modelName in this.schema.namespaces[namespaceName].models;\n if (!modelInCurrentSchema) {\n // delete original\n db.deleteObjectStore(tmpName);\n continue;\n }\n const newStore = this.createObjectStoreForModel(db, namespaceName, storeName, modelName);\n let cursor = await origStore.openCursor();\n let count = 0;\n // Copy data from original to new\n while (cursor && cursor.value) {\n // we don't pass key, since they are all new entries in the new store\n await newStore.put(cursor.value);\n cursor = await cursor.continue();\n count++;\n }\n // delete original\n db.deleteObjectStore(tmpName);\n logger.debug(`${count} ${storeName} records migrated`);\n }\n // add new models created after IndexedDB, but before migration\n // this case may happen when a user has not opened an app for\n // some time and a new model is added during that time\n Object.keys(this.schema.namespaces).forEach(namespaceName => {\n const namespace = this.schema.namespaces[namespaceName];\n const objectStoreNames = new Set(txn.objectStoreNames);\n Object.keys(namespace.models)\n .map(modelName => {\n return [modelName, (0, util_1.getStorename)(namespaceName, modelName)];\n })\n .filter(([, storeName]) => !objectStoreNames.has(storeName))\n .forEach(([modelName, storeName]) => {\n this.createObjectStoreForModel(db, namespaceName, storeName, modelName);\n });\n });\n }\n catch (error) {\n logger.error('Error migrating IndexedDB data', error);\n txn.abort();\n throw error;\n }\n return;\n }\n },\n });\n }\n async _get(storeOrStoreName, keyArr) {\n let index;\n if (typeof storeOrStoreName === 'string') {\n const storeName = storeOrStoreName;\n index = this.db.transaction(storeName, 'readonly').store.index('byPk');\n }\n else {\n const store = storeOrStoreName;\n index = store.index('byPk');\n }\n const result = await index.get(this.canonicalKeyPath(keyArr));\n return result;\n }\n async clear() {\n await this.checkPrivate();\n this.db?.close();\n await idb.deleteDB(this.dbName);\n this.db = undefined;\n this.initPromise = undefined;\n }\n async save(model, condition) {\n await this.checkPrivate();\n const { storeName, set, connectionStoreNames, modelKeyValues } = this.saveMetadata(model);\n const tx = this.db.transaction([storeName, ...Array.from(set.values())], 'readwrite');\n const store = tx.objectStore(storeName);\n const fromDB = await this._get(store, modelKeyValues);\n this.validateSaveCondition(condition, fromDB);\n const result = [];\n for await (const resItem of connectionStoreNames) {\n const { storeName, item, instance, keys } = resItem;\n const store = tx.objectStore(storeName);\n const itemKeyValues = keys.map(key => item[key]);\n const fromDB = await this._get(store, itemKeyValues);\n const opType = fromDB ? types_1.OpType.UPDATE : types_1.OpType.INSERT;\n if ((0, util_1.keysEqual)(itemKeyValues, modelKeyValues) ||\n opType === types_1.OpType.INSERT) {\n const key = await store\n .index('byPk')\n .getKey(this.canonicalKeyPath(itemKeyValues));\n await store.put(item, key);\n result.push([instance, opType]);\n }\n }\n await tx.done;\n return result;\n }\n async query(modelConstructor, predicate, pagination) {\n await this.checkPrivate();\n const { storeName, namespaceName, queryByKey, predicates, hasSort, hasPagination, } = this.queryMetadata(modelConstructor, predicate, pagination);\n const records = (await (async () => {\n //\n // NOTE: @svidgen explored removing this and letting query() take care of automatic\n // index leveraging. This would eliminate some amount of very similar code.\n // But, getAll is slightly slower than get()\n //\n // On Chrome:\n // ~700ms vs ~1175ms per 10k reads.\n //\n // You can (and should) check my work here:\n // \thttps://gist.github.com/svidgen/74e55d573b19c3e5432b1b5bdf0f4d96\n //\n if (queryByKey) {\n const record = await this.getByKey(storeName, queryByKey);\n return record ? [record] : [];\n }\n if (predicates) {\n const filtered = await this.filterOnPredicate(storeName, predicates);\n return this.inMemoryPagination(filtered, pagination);\n }\n if (hasSort) {\n const all = await this.getAll(storeName);\n return this.inMemoryPagination(all, pagination);\n }\n if (hasPagination) {\n return this.enginePagination(storeName, pagination);\n }\n return this.getAll(storeName);\n })());\n return await this.load(namespaceName, modelConstructor.name, records);\n }\n async queryOne(modelConstructor, firstOrLast = types_1.QueryOne.FIRST) {\n await this.checkPrivate();\n const storeName = this.getStorenameForModel(modelConstructor);\n const cursor = await this.db\n .transaction([storeName], 'readonly')\n .objectStore(storeName)\n .openCursor(undefined, firstOrLast === types_1.QueryOne.FIRST ? 'next' : 'prev');\n const result = cursor ? cursor.value : undefined;\n return result && this.modelInstanceCreator(modelConstructor, result);\n }\n async batchSave(modelConstructor, items) {\n await this.checkPrivate();\n if (items.length === 0) {\n return [];\n }\n const modelName = modelConstructor.name;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const storeName = this.getStorenameForModel(modelConstructor);\n const result = [];\n const txn = this.db.transaction(storeName, 'readwrite');\n const store = txn.store;\n for (const item of items) {\n const model = this.modelInstanceCreator(modelConstructor, item);\n const connectedModels = (0, util_1.traverseModel)(modelName, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);\n const keyValues = this.getIndexKeyValuesFromModel(model);\n const { _deleted } = item;\n const index = store.index('byPk');\n const key = await index.getKey(this.canonicalKeyPath(keyValues));\n if (!_deleted) {\n const { instance } = connectedModels.find(({ instance }) => {\n const instanceKeyValues = this.getIndexKeyValuesFromModel(instance);\n return (0, util_1.keysEqual)(instanceKeyValues, keyValues);\n });\n result.push([\n instance,\n key ? types_1.OpType.UPDATE : types_1.OpType.INSERT,\n ]);\n await store.put(instance, key);\n }\n else {\n result.push([item, types_1.OpType.DELETE]);\n if (key) {\n await store.delete(key);\n }\n }\n }\n await txn.done;\n return result;\n }\n async deleteItem(deleteQueue) {\n const connectionStoreNames = deleteQueue.map(({ storeName }) => {\n return storeName;\n });\n const tx = this.db.transaction([...connectionStoreNames], 'readwrite');\n for await (const deleteItem of deleteQueue) {\n const { storeName, items } = deleteItem;\n const store = tx.objectStore(storeName);\n for await (const item of items) {\n if (item) {\n let key;\n if (typeof item === 'object') {\n const keyValues = this.getIndexKeyValuesFromModel(item);\n key = await store\n .index('byPk')\n .getKey(this.canonicalKeyPath(keyValues));\n }\n else {\n const itemKey = item.toString();\n key = await store.index('byPk').getKey(itemKey);\n }\n if (key !== undefined) {\n await store.delete(key);\n }\n }\n }\n }\n }\n //#region platform-specific helper methods\n async checkPrivate() {\n const isPrivate = await (0, util_1.isPrivateMode)().then(isPrivate => {\n return isPrivate;\n });\n if (isPrivate) {\n logger.error(\"IndexedDB not supported in this browser's private mode\");\n return Promise.reject(\"IndexedDB not supported in this browser's private mode\");\n }\n else {\n return Promise.resolve();\n }\n }\n /**\n * Whether the browser's implementation of IndexedDB is coercing single-field\n * indexes to a scalar key.\n *\n * If this returns `true`, we need to treat indexes containing a single field\n * as scalars.\n *\n * See PR description for reference:\n * https://github.com/aws-amplify/amplify-js/pull/10527\n */\n async setSafariCompatabilityMode() {\n this.safariCompatabilityMode = await (0, util_1.isSafariCompatabilityMode)();\n if (this.safariCompatabilityMode === true) {\n logger.debug('IndexedDB Adapter is running in Safari Compatability Mode');\n }\n }\n getNamespaceAndModelFromStorename(storeName) {\n const [namespaceName, ...modelNameArr] = storeName.split('_');\n return {\n namespaceName,\n modelName: modelNameArr.join('_'),\n };\n }\n createObjectStoreForModel(db, namespaceName, storeName, modelName) {\n const store = db.createObjectStore(storeName, {\n autoIncrement: true,\n });\n const { indexes } = this.schema.namespaces[namespaceName].relationships[modelName];\n indexes.forEach(([idxName, keyPath, options]) => {\n store.createIndex(idxName, keyPath, options);\n });\n return store;\n }\n async getByKey(storeName, keyValue) {\n return await this._get(storeName, keyValue);\n }\n async getAll(storeName) {\n return await this.db.getAll(storeName);\n }\n /**\n * Tries to generate an index fetcher for the given predicates. Assumes\n * that the given predicate conditions are contained by an AND group and\n * should therefore all match a single record.\n *\n * @param storeName The table to query.\n * @param predicates The predicates to try to AND together.\n * @param transaction\n */\n matchingIndexQueries(storeName, predicates, transaction) {\n // could be expanded later to include `exec()` and a `cardinality` estimate?\n const queries = [];\n const predicateIndex = new Map();\n for (const predicate of predicates) {\n predicateIndex.set(String(predicate.field), predicate);\n }\n const store = transaction.objectStore(storeName);\n for (const name of store.indexNames) {\n const idx = store.index(name);\n const keypath = Array.isArray(idx.keyPath) ? idx.keyPath : [idx.keyPath];\n const matchingPredicateValues = [];\n for (const field of keypath) {\n const p = predicateIndex.get(field);\n if (p && p.operand !== null && p.operand !== undefined) {\n matchingPredicateValues.push(p.operand);\n }\n else {\n break;\n }\n }\n // if we have a matching predicate field for each component of this index,\n // we can build a query for it. otherwise, we can't.\n if (matchingPredicateValues.length === keypath.length) {\n // re-create a transaction, because the transaction used to fetch the\n // indexes may no longer be active.\n queries.push(() => this.db\n .transaction(storeName)\n .objectStore(storeName)\n .index(name)\n .getAll(this.canonicalKeyPath(matchingPredicateValues)));\n }\n }\n return queries;\n }\n async baseQueryIndex(storeName, predicates, transaction) {\n let { predicates: predicateObjs, type } = predicates;\n // the predicate objects we care about tend to be nested at least\n // one level down: `{and: {or: {and: { <the predicates we want> }}}}`\n // so, we unpack and/or groups until we find a group with more than 1\n // child OR a child that is not a group (and is therefore a predicate \"object\").\n while (predicateObjs.length === 1 &&\n (0, types_1.isPredicateGroup)(predicateObjs[0]) &&\n predicateObjs[0].type !== 'not') {\n type = predicateObjs[0].type;\n predicateObjs = predicateObjs[0].predicates;\n }\n const fieldPredicates = predicateObjs.filter(p => (0, types_1.isPredicateObj)(p) && p.operator === 'eq');\n // several sub-queries could occur here. explicitly start a txn here to avoid\n // opening/closing multiple txns.\n const txn = transaction || this.db.transaction(storeName);\n let result = {};\n // `or` conditions, if usable, need to generate multiple queries. this is unlike\n // `and` conditions, which should just be combined.\n if (type === 'or') {\n /**\n * Base queries for each child group.\n *\n * For each child group, if it's an AND condition that results in a single\n * subordinate \"base query\", we can use it. if it's any more complicated\n * than that, it's not a simple join condition we want to use.\n */\n const groupQueries = await Promise.all(predicateObjs\n .filter(o => (0, types_1.isPredicateGroup)(o) && o.type === 'and')\n .map(o => this.baseQueryIndex(storeName, o, txn))).then(queries => queries\n .filter(q => q.indexedQueries.length === 1)\n .map(i => i.indexedQueries));\n /**\n * Base queries for each simple child \"object\" (field condition).\n */\n const objectQueries = predicateObjs\n .filter(o => (0, types_1.isPredicateObj)(o))\n .map(o => this.matchingIndexQueries(storeName, [o], txn));\n const indexedQueries = [...groupQueries, ...objectQueries]\n .map(q => q[0])\n .filter(i => i);\n // if, after hunting for base queries, we don't have exactly 1 base query\n // for each child group + object, stop trying to optimize. we're not dealing\n // with a simple query that fits the intended optimization path.\n if (predicateObjs.length > indexedQueries.length) {\n result = {\n groupType: null,\n indexedQueries: [],\n };\n }\n else {\n result = {\n groupType: 'or',\n indexedQueries,\n };\n }\n }\n else if (type === 'and') {\n // our potential indexes or lacks thereof.\n // note that we're only optimizing for `eq` right now.\n result = {\n groupType: type,\n indexedQueries: this.matchingIndexQueries(storeName, fieldPredicates, txn),\n };\n }\n else {\n result = {\n groupType: null,\n indexedQueries: [],\n };\n }\n // Explicitly wait for txns from index queries to complete before proceding.\n // This helps ensure IndexedDB is in a stable, ready state. Else, subseqeuent\n // qeuries can sometimes appear to deadlock (at least in FakeIndexedDB).\n // (Unless we were *given* the transaction -- we'll assume the parent handles it.)\n if (!transaction)\n await txn.done;\n return result;\n }\n async filterOnPredicate(storeName, predicates) {\n const { predicates: predicateObjs, type } = predicates;\n const { groupType, indexedQueries } = await this.baseQueryIndex(storeName, predicates);\n // where we'll accumulate candidate results, which will be filtered at the end.\n let candidateResults;\n // semi-naive implementation:\n if (groupType === 'and' && indexedQueries.length > 0) {\n // each condition must be satsified, we can form a base set with any\n // ONE of those conditions and then filter.\n candidateResults = await indexedQueries[0]();\n }\n else if (groupType === 'or' &&\n indexedQueries.length > 0 &&\n indexedQueries.length <= MULTI_OR_CONDITION_SCAN_BREAKPOINT) {\n // NOTE: each condition implies a potentially distinct set. we only benefit\n // from using indexes here if EVERY condition uses an index. if any one\n // index requires a table scan, we gain nothing from the indexes.\n // NOTE: results must be DISTINCT-ified if we leverage indexes.\n const distinctResults = new Map();\n for (const query of indexedQueries) {\n const resultGroup = await query();\n for (const item of resultGroup) {\n const distinctificationString = JSON.stringify(item);\n distinctResults.set(distinctificationString, item);\n }\n }\n // we could conceivably check for special conditions and return early here.\n // but, this is simpler and has not yet had a measurable performance impact.\n candidateResults = Array.from(distinctResults.values());\n }\n else {\n // nothing intelligent we can do with `not` groups unless or until we start\n // smashing comparison operators against indexes -- at which point we could\n // perform some reversal here.\n candidateResults = await this.getAll(storeName);\n }\n const filtered = predicateObjs\n ? candidateResults.filter(m => (0, util_1.validatePredicate)(m, type, predicateObjs))\n : candidateResults;\n return filtered;\n }\n inMemoryPagination(records, pagination) {\n return (0, util_1.inMemoryPagination)(records, pagination);\n }\n async enginePagination(storeName, pagination) {\n let result;\n if (pagination) {\n const { page = 0, limit = 0 } = pagination;\n const initialRecord = Math.max(0, page * limit) || 0;\n let cursor = await this.db\n .transaction(storeName)\n .objectStore(storeName)\n .openCursor();\n if (cursor && initialRecord > 0) {\n await cursor.advance(initialRecord);\n }\n const pageResults = [];\n const hasLimit = typeof limit === 'number' && limit > 0;\n while (cursor && cursor.value) {\n pageResults.push(cursor.value);\n if (hasLimit && pageResults.length === limit) {\n break;\n }\n cursor = await cursor.continue();\n }\n result = pageResults;\n }\n else {\n result = await this.db.getAll(storeName);\n }\n return result;\n }\n}\nexports.default = new IndexedDBAdapter();\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- "use strict";
1
+ 'use strict';
2
+
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.StorageAdapterBase = void 0;
4
5
  const predicates_1 = require("../../predicates");
@@ -289,3 +290,4 @@ class StorageAdapterBase {
289
290
  }
290
291
  }
291
292
  exports.StorageAdapterBase = StorageAdapterBase;
293
+ //# sourceMappingURL=StorageAdapterBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageAdapterBase.js","sources":["../../../../src/storage/adapter/StorageAdapterBase.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StorageAdapterBase = void 0;\nconst predicates_1 = require(\"../../predicates\");\nconst types_1 = require(\"../../types\");\nconst util_1 = require(\"../../util\");\nconst relationship_1 = require(\"../relationship\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst logger = new core_1.ConsoleLogger('DataStore');\nconst DB_NAME = 'amplify-datastore';\nclass StorageAdapterBase {\n constructor() {\n this.dbName = DB_NAME;\n }\n /**\n * Initializes local DB\n *\n * @param theSchema\n * @param namespaceResolver\n * @param modelInstanceCreator\n * @param getModelConstructorByModelName\n * @param sessionId\n */\n async setUp(theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName, sessionId) {\n await this.preSetUpChecks();\n if (!this.initPromise) {\n this.initPromise = new Promise((res, rej) => {\n this.resolve = res;\n this.reject = rej;\n });\n }\n else {\n await this.initPromise;\n return;\n }\n if (sessionId) {\n this.dbName = `${DB_NAME}-${sessionId}`;\n }\n this.schema = theSchema;\n this.namespaceResolver = namespaceResolver;\n this.modelInstanceCreator = modelInstanceCreator;\n this.getModelConstructorByModelName = getModelConstructorByModelName;\n try {\n if (!this.db) {\n this.db = await this.initDb();\n this.resolve();\n }\n }\n catch (error) {\n this.reject(error);\n }\n }\n /**\n * @param modelConstructor\n * @returns local DB table name\n */\n getStorenameForModel(modelConstructor) {\n const namespace = this.namespaceResolver(modelConstructor);\n const { name: modelName } = modelConstructor;\n return (0, util_1.getStorename)(namespace, modelName);\n }\n /**\n *\n * @param model - instantiated model record\n * @returns the record's primary key values\n */\n getIndexKeyValuesFromModel(model) {\n const modelConstructor = Object.getPrototypeOf(model)\n .constructor;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const keys = (0, util_1.getIndexKeys)(this.schema.namespaces[namespaceName], modelConstructor.name);\n return (0, util_1.extractPrimaryKeyValues)(model, keys);\n }\n /**\n * Common metadata for `save` operation\n * used by individual storage adapters\n *\n * @param model\n */\n saveMetadata(model) {\n const modelConstructor = Object.getPrototypeOf(model)\n .constructor;\n const storeName = this.getStorenameForModel(modelConstructor);\n const namespaceName = this.namespaceResolver(modelConstructor);\n const connectedModels = (0, util_1.traverseModel)(modelConstructor.name, model, this.schema.namespaces[namespaceName], this.modelInstanceCreator, this.getModelConstructorByModelName);\n const set = new Set();\n const connectionStoreNames = Object.values(connectedModels).map(({ modelName, item, instance }) => {\n const storeName = (0, util_1.getStorename)(namespaceName, modelName);\n set.add(storeName);\n const keys = (0, util_1.getIndexKeys)(this.schema.namespaces[namespaceName], modelName);\n return { storeName, item, instance, keys };\n });\n const modelKeyValues = this.getIndexKeyValuesFromModel(model);\n return { storeName, set, connectionStoreNames, modelKeyValues };\n }\n /**\n * Enforces conditional save. Throws if condition is not met.\n * used by individual storage adapters\n *\n * @param model\n */\n validateSaveCondition(condition, fromDB) {\n if (!(condition && fromDB)) {\n return;\n }\n const predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);\n const { predicates: predicateObjs, type } = predicates;\n const isValid = (0, util_1.validatePredicate)(fromDB, type, predicateObjs);\n if (!isValid) {\n const msg = 'Conditional update failed';\n logger.error(msg, { model: fromDB, condition: predicateObjs });\n throw new Error(msg);\n }\n }\n /**\n * Instantiate models from POJO records returned from the database\n *\n * @param namespaceName - string model namespace\n * @param srcModelName - string model name\n * @param records - array of uninstantiated records\n * @returns\n */\n async load(namespaceName, srcModelName, records) {\n const namespace = this.schema.namespaces[namespaceName];\n const relations = namespace.relationships[srcModelName].relationTypes;\n const connectionStoreNames = relations.map(({ modelName }) => {\n return (0, util_1.getStorename)(namespaceName, modelName);\n });\n const modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);\n if (connectionStoreNames.length === 0) {\n return records.map(record => this.modelInstanceCreator(modelConstructor, record));\n }\n return records.map(record => this.modelInstanceCreator(modelConstructor, record));\n }\n /**\n * Extracts operands from a predicate group into an array of key values\n * Used in the query method\n *\n * @param predicates - predicate group\n * @param keyPath - string array of key names ['id', 'sortKey']\n * @returns string[] of key values\n *\n * @example\n * ```js\n * { and:[{ id: { eq: 'abc' }}, { sortKey: { eq: 'def' }}] }\n * ```\n * Becomes\n * ```\n * ['abc', 'def']\n * ```\n */\n keyValueFromPredicate(predicates, keyPath) {\n const { predicates: predicateObjs } = predicates;\n if (predicateObjs.length !== keyPath.length) {\n return;\n }\n const keyValues = [];\n for (const key of keyPath) {\n const predicateObj = predicateObjs.find(p => \n // it's a relevant predicate object only if it's an equality\n // operation for a key field from the key:\n (0, types_1.isPredicateObj)(p) &&\n p.field === key &&\n p.operator === 'eq' &&\n p.operand !== null &&\n p.operand !== undefined);\n predicateObj && keyValues.push(predicateObj.operand);\n }\n return keyValues.length === keyPath.length ? keyValues : undefined;\n }\n /**\n * Common metadata for `query` operation\n * used by individual storage adapters\n *\n * @param modelConstructor\n * @param predicate\n * @param pagination\n */\n queryMetadata(modelConstructor, predicate, pagination) {\n const storeName = this.getStorenameForModel(modelConstructor);\n const namespaceName = this.namespaceResolver(modelConstructor);\n const predicates = predicate && predicates_1.ModelPredicateCreator.getPredicates(predicate);\n const keyPath = (0, util_1.getIndexKeys)(this.schema.namespaces[namespaceName], modelConstructor.name);\n const queryByKey = predicates && this.keyValueFromPredicate(predicates, keyPath);\n const hasSort = pagination && pagination.sort;\n const hasPagination = pagination && pagination.limit;\n return {\n storeName,\n namespaceName,\n queryByKey,\n predicates,\n hasSort,\n hasPagination,\n };\n }\n /**\n * Delete record\n * Cascades to related records (for Has One and Has Many relationships)\n *\n * @param modelOrModelConstructor\n * @param condition\n * @returns\n */\n async delete(modelOrModelConstructor, condition) {\n await this.preOpCheck();\n const deleteQueue = [];\n if ((0, util_1.isModelConstructor)(modelOrModelConstructor)) {\n const modelConstructor = modelOrModelConstructor;\n const namespace = this.namespaceResolver(modelConstructor);\n const models = await this.query(modelConstructor, condition);\n if (condition !== undefined) {\n await this.deleteTraverse(models, modelConstructor, namespace, deleteQueue);\n await this.deleteItem(deleteQueue);\n const deletedModels = deleteQueue.reduce((acc, { items }) => acc.concat(items), []);\n return [models, deletedModels];\n }\n else {\n await this.deleteTraverse(models, modelConstructor, namespace, deleteQueue);\n await this.deleteItem(deleteQueue);\n const deletedModels = deleteQueue.reduce((acc, { items }) => acc.concat(items), []);\n return [models, deletedModels];\n }\n }\n else {\n const model = modelOrModelConstructor;\n const modelConstructor = Object.getPrototypeOf(model)\n .constructor;\n const namespaceName = this.namespaceResolver(modelConstructor);\n const storeName = this.getStorenameForModel(modelConstructor);\n if (condition) {\n const keyValues = this.getIndexKeyValuesFromModel(model);\n const fromDB = await this._get(storeName, keyValues);\n if (fromDB === undefined) {\n const msg = 'Model instance not found in storage';\n logger.warn(msg, { model });\n return [[model], []];\n }\n const predicates = predicates_1.ModelPredicateCreator.getPredicates(condition);\n const { predicates: predicateObjs, type } = predicates;\n const isValid = (0, util_1.validatePredicate)(fromDB, type, predicateObjs);\n if (!isValid) {\n const msg = 'Conditional update failed';\n logger.error(msg, { model: fromDB, condition: predicateObjs });\n throw new Error(msg);\n }\n await this.deleteTraverse([model], modelConstructor, namespaceName, deleteQueue);\n }\n else {\n await this.deleteTraverse([model], modelConstructor, namespaceName, deleteQueue);\n }\n await this.deleteItem(deleteQueue);\n const deletedModels = deleteQueue.reduce((acc, { items }) => acc.concat(items), []);\n return [[model], deletedModels];\n }\n }\n /**\n * Recursively traverse relationship graph and add\n * all Has One and Has Many relations to `deleteQueue` param\n *\n * Actual deletion of records added to `deleteQueue` occurs in the `delete` method\n *\n * @param models\n * @param modelConstructor\n * @param namespace\n * @param deleteQueue\n */\n async deleteTraverse(models, modelConstructor, namespace, deleteQueue) {\n const cascadingRelationTypes = ['HAS_ONE', 'HAS_MANY'];\n for await (const model of models) {\n const modelDefinition = this.schema.namespaces[namespace].models[modelConstructor.name];\n const modelMeta = {\n builder: modelConstructor,\n schema: modelDefinition,\n pkField: (0, util_1.extractPrimaryKeyFieldNames)(modelDefinition),\n };\n const relationships = relationship_1.ModelRelationship.allFrom(modelMeta).filter(r => cascadingRelationTypes.includes(r.type));\n for await (const r of relationships) {\n const queryObject = r.createRemoteQueryObject(model);\n if (queryObject !== null) {\n const relatedRecords = await this.query(r.remoteModelConstructor, predicates_1.ModelPredicateCreator.createFromFlatEqualities(r.remoteDefinition, queryObject));\n await this.deleteTraverse(relatedRecords, r.remoteModelConstructor, namespace, deleteQueue);\n }\n }\n }\n deleteQueue.push({\n storeName: (0, util_1.getStorename)(namespace, modelConstructor.name),\n items: models,\n });\n }\n}\nexports.StorageAdapterBase = StorageAdapterBase;\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
1
+ 'use strict';
2
+
5
3
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const IndexedDBAdapter_1 = __importDefault(require("../IndexedDBAdapter"));
7
- const AsyncStorageAdapter_1 = __importDefault(require("../AsyncStorageAdapter"));
4
+ const tslib_1 = require("tslib");
5
+ const IndexedDBAdapter_1 = tslib_1.__importDefault(require("../IndexedDBAdapter"));
6
+ const AsyncStorageAdapter_1 = tslib_1.__importDefault(require("../AsyncStorageAdapter"));
8
7
  const utils_1 = require("@aws-amplify/core/internals/utils");
9
8
  const getDefaultAdapter = () => {
10
9
  if ((utils_1.isBrowser && window.indexedDB) || ((0, utils_1.isWebWorker)() && self.indexedDB)) {
@@ -13,3 +12,4 @@ const getDefaultAdapter = () => {
13
12
  return AsyncStorageAdapter_1.default;
14
13
  };
15
14
  exports.default = getDefaultAdapter;
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/storage/adapter/getDefaultAdapter/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\nconst IndexedDBAdapter_1 = tslib_1.__importDefault(require(\"../IndexedDBAdapter\"));\nconst AsyncStorageAdapter_1 = tslib_1.__importDefault(require(\"../AsyncStorageAdapter\"));\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst getDefaultAdapter = () => {\n if ((utils_1.isBrowser && window.indexedDB) || ((0, utils_1.isWebWorker)() && self.indexedDB)) {\n return IndexedDBAdapter_1.default;\n }\n return AsyncStorageAdapter_1.default;\n};\nexports.default = getDefaultAdapter;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,MAAM,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACnF,MAAM,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACzF,MAAM,OAAO,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC;AAC7D,MAAM,iBAAiB,GAAG,MAAM;AAChC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE;AACnG,QAAQ,OAAO,kBAAkB,CAAC,OAAO,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,qBAAqB,CAAC,OAAO,CAAC;AACzC,CAAC,CAAC;AACF,OAAO,CAAC,OAAO,GAAG,iBAAiB;;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const AsyncStorageAdapter_1 = tslib_1.__importDefault(require("../AsyncStorageAdapter"));
6
+ const getDefaultAdapter = () => {
7
+ return AsyncStorageAdapter_1.default;
8
+ };
9
+ exports.default = getDefaultAdapter;
10
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.native.js","sources":["../../../../../src/storage/adapter/getDefaultAdapter/index.native.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\nconst AsyncStorageAdapter_1 = tslib_1.__importDefault(require(\"../AsyncStorageAdapter\"));\nconst getDefaultAdapter = () => {\n return AsyncStorageAdapter_1.default;\n};\nexports.default = getDefaultAdapter;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,MAAM,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACzF,MAAM,iBAAiB,GAAG,MAAM;AAChC,IAAI,OAAO,qBAAqB,CAAC,OAAO,CAAC;AACzC,CAAC,CAAC;AACF,OAAO,CAAC,OAAO,GAAG,iBAAiB;;"}