@aws-amplify/data-schema 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/{lib-esm/src → dist/cjs}/Authorization.js +149 -31
  2. package/dist/cjs/Authorization.js.map +1 -0
  3. package/{lib-esm/src → dist/cjs}/ClientSchema.js +3 -1
  4. package/dist/cjs/ClientSchema.js.map +1 -0
  5. package/{lib-esm/src → dist/cjs}/CombineSchema.js +3 -2
  6. package/dist/cjs/CombineSchema.js.map +1 -0
  7. package/{lib-esm/src → dist/cjs}/CustomOperation.js +7 -3
  8. package/dist/cjs/CustomOperation.js.map +1 -0
  9. package/{lib-esm/src → dist/cjs}/CustomType.js +3 -1
  10. package/dist/cjs/CustomType.js.map +1 -0
  11. package/{lib-esm/src → dist/cjs}/EnumType.js +3 -1
  12. package/dist/cjs/EnumType.js.map +1 -0
  13. package/{lib-esm/src → dist/cjs}/Handler.js +3 -1
  14. package/dist/cjs/Handler.js.map +1 -0
  15. package/{lib-esm/src → dist/cjs}/MappedTypes/CustomOperations.js +3 -1
  16. package/dist/cjs/MappedTypes/CustomOperations.js.map +1 -0
  17. package/dist/cjs/MappedTypes/ExtractNonModelTypes.js +4 -0
  18. package/dist/cjs/MappedTypes/ExtractNonModelTypes.js.map +1 -0
  19. package/dist/cjs/MappedTypes/ImplicitFieldInjector.js +4 -0
  20. package/dist/cjs/MappedTypes/ImplicitFieldInjector.js.map +1 -0
  21. package/{lib-esm/src → dist/cjs}/MappedTypes/MapSecondaryIndexes.js +3 -1
  22. package/dist/cjs/MappedTypes/MapSecondaryIndexes.js.map +1 -0
  23. package/{lib-esm/src → dist/cjs}/MappedTypes/ModelMetadata.js +3 -1
  24. package/dist/cjs/MappedTypes/ModelMetadata.js.map +1 -0
  25. package/dist/cjs/MappedTypes/ResolveFieldProperties.js +4 -0
  26. package/dist/cjs/MappedTypes/ResolveFieldProperties.js.map +1 -0
  27. package/{lib-esm/src → dist/cjs}/MappedTypes/ResolveSchema.js +3 -1
  28. package/dist/cjs/MappedTypes/ResolveSchema.js.map +1 -0
  29. package/{lib-esm/src → dist/cjs}/ModelField.js +8 -3
  30. package/dist/cjs/ModelField.js.map +1 -0
  31. package/{lib-esm/src → dist/cjs}/ModelIndex.js +3 -1
  32. package/dist/cjs/ModelIndex.js.map +1 -0
  33. package/{lib-esm/src → dist/cjs}/ModelRelationalField.js +7 -10
  34. package/dist/cjs/ModelRelationalField.js.map +1 -0
  35. package/{lib-esm/src → dist/cjs}/ModelSchema.js +10 -5
  36. package/dist/cjs/ModelSchema.js.map +1 -0
  37. package/{lib-esm/src → dist/cjs}/ModelType.js +8 -3
  38. package/dist/cjs/ModelType.js.map +1 -0
  39. package/{lib-esm/src → dist/cjs}/RefType.js +8 -5
  40. package/dist/cjs/RefType.js.map +1 -0
  41. package/{lib-esm/src → dist/cjs}/SchemaProcessor.js +15 -61
  42. package/dist/cjs/SchemaProcessor.js.map +1 -0
  43. package/{lib-esm/src/index.js → dist/cjs/a.js} +4 -4
  44. package/dist/cjs/a.js.map +1 -0
  45. package/dist/cjs/index.js +8 -0
  46. package/dist/cjs/index.js.map +1 -0
  47. package/{lib-esm/src → dist/cjs}/internals/index.js +3 -1
  48. package/dist/cjs/internals/index.js.map +1 -0
  49. package/dist/cjs/runtime/addSchemaToClient.js +17 -0
  50. package/dist/cjs/runtime/addSchemaToClient.js.map +1 -0
  51. package/dist/cjs/runtime/addSchemaToClientWithInstance.js +22 -0
  52. package/dist/cjs/runtime/addSchemaToClientWithInstance.js.map +1 -0
  53. package/dist/cjs/runtime/bridge-types.js +15 -0
  54. package/dist/cjs/runtime/bridge-types.js.map +1 -0
  55. package/dist/cjs/runtime/client/index.js +17 -0
  56. package/dist/cjs/runtime/client/index.js.map +1 -0
  57. package/dist/cjs/runtime/client/index.v3.js +7 -0
  58. package/dist/cjs/runtime/client/index.v3.js.map +1 -0
  59. package/dist/cjs/runtime/index.js +13 -0
  60. package/dist/cjs/runtime/index.js.map +1 -0
  61. package/dist/cjs/runtime/index.v3.js +13 -0
  62. package/dist/cjs/runtime/index.v3.js.map +1 -0
  63. package/dist/cjs/runtime/internals/APIClient.js +740 -0
  64. package/dist/cjs/runtime/internals/APIClient.js.map +1 -0
  65. package/dist/cjs/runtime/internals/clientUtils.js +29 -0
  66. package/dist/cjs/runtime/internals/clientUtils.js.map +1 -0
  67. package/dist/cjs/runtime/internals/generateCustomOperationsProperty.js +49 -0
  68. package/dist/cjs/runtime/internals/generateCustomOperationsProperty.js.map +1 -0
  69. package/dist/cjs/runtime/internals/index.js +21 -0
  70. package/dist/cjs/runtime/internals/index.js.map +1 -0
  71. package/dist/cjs/runtime/internals/operations/custom.js +356 -0
  72. package/dist/cjs/runtime/internals/operations/custom.js.map +1 -0
  73. package/dist/cjs/runtime/internals/operations/get.js +62 -0
  74. package/dist/cjs/runtime/internals/operations/get.js.map +1 -0
  75. package/dist/cjs/runtime/internals/operations/indexQuery.js +75 -0
  76. package/dist/cjs/runtime/internals/operations/indexQuery.js.map +1 -0
  77. package/dist/cjs/runtime/internals/operations/list.js +74 -0
  78. package/dist/cjs/runtime/internals/operations/list.js.map +1 -0
  79. package/dist/cjs/runtime/internals/operations/observeQuery.js +121 -0
  80. package/dist/cjs/runtime/internals/operations/observeQuery.js.map +1 -0
  81. package/dist/cjs/runtime/internals/operations/subscription.js +31 -0
  82. package/dist/cjs/runtime/internals/operations/subscription.js.map +1 -0
  83. package/dist/cjs/runtime/internals/server/generateModelsProperty.js +53 -0
  84. package/dist/cjs/runtime/internals/server/generateModelsProperty.js.map +1 -0
  85. package/dist/cjs/runtime/internals/server/index.js +8 -0
  86. package/dist/cjs/runtime/internals/server/index.js.map +1 -0
  87. package/dist/cjs/runtime/internals/utils/clientProperties/generateEnumsProperty.js +21 -0
  88. package/dist/cjs/runtime/internals/utils/clientProperties/generateEnumsProperty.js.map +1 -0
  89. package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js +45 -0
  90. package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js.map +1 -0
  91. package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.js +11 -0
  92. package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.js.map +1 -0
  93. package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.js +11 -0
  94. package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.js.map +1 -0
  95. package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.js +15 -0
  96. package/dist/cjs/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.js.map +1 -0
  97. package/dist/cjs/runtime/utils/findIndexByFields.js +25 -0
  98. package/dist/cjs/runtime/utils/findIndexByFields.js.map +1 -0
  99. package/dist/cjs/runtime/utils/index.js +11 -0
  100. package/dist/cjs/runtime/utils/index.js.map +1 -0
  101. package/dist/cjs/runtime/utils/resolveOwnerFields.js +48 -0
  102. package/dist/cjs/runtime/utils/resolveOwnerFields.js.map +1 -0
  103. package/dist/cjs/runtime/utils/resolvePKFields.js +17 -0
  104. package/dist/cjs/runtime/utils/resolvePKFields.js.map +1 -0
  105. package/{lib-esm/src → dist/cjs}/util/Brand.js +3 -1
  106. package/dist/cjs/util/Brand.js.map +1 -0
  107. package/{lib-esm/src → dist/cjs}/util/IndexLimit.js +3 -1
  108. package/dist/cjs/util/IndexLimit.js.map +1 -0
  109. package/{lib-esm/src → dist/cjs}/util/SpreadTuple.js +3 -1
  110. package/dist/cjs/util/SpreadTuple.js.map +1 -0
  111. package/{lib-esm/src → dist/cjs}/util/index.js +3 -1
  112. package/dist/cjs/util/index.js.map +1 -0
  113. package/{lib-esm/src → dist/esm}/Authorization.d.ts +105 -31
  114. package/dist/esm/Authorization.mjs +446 -0
  115. package/dist/esm/Authorization.mjs.map +1 -0
  116. package/{lib-esm/src → dist/esm}/ClientSchema.d.ts +1 -2
  117. package/dist/esm/ClientSchema.mjs +2 -0
  118. package/dist/esm/ClientSchema.mjs.map +1 -0
  119. package/{lib-esm/src → dist/esm}/CombineSchema.d.ts +0 -1
  120. package/dist/esm/CombineSchema.mjs +39 -0
  121. package/dist/esm/CombineSchema.mjs.map +1 -0
  122. package/{lib-esm/src → dist/esm}/CustomOperation.d.ts +2 -3
  123. package/dist/esm/CustomOperation.mjs +67 -0
  124. package/dist/esm/CustomOperation.mjs.map +1 -0
  125. package/{lib-esm/src → dist/esm}/CustomType.d.ts +0 -1
  126. package/dist/esm/CustomType.mjs +13 -0
  127. package/dist/esm/CustomType.mjs.map +1 -0
  128. package/{lib-esm/src → dist/esm}/EnumType.d.ts +0 -1
  129. package/dist/esm/EnumType.mjs +16 -0
  130. package/dist/esm/EnumType.mjs.map +1 -0
  131. package/{lib-esm/src → dist/esm}/Handler.d.ts +0 -1
  132. package/dist/esm/Handler.mjs +48 -0
  133. package/dist/esm/Handler.mjs.map +1 -0
  134. package/{lib-esm/src → dist/esm}/MappedTypes/CustomOperations.d.ts +0 -1
  135. package/dist/esm/MappedTypes/CustomOperations.mjs +2 -0
  136. package/dist/esm/MappedTypes/CustomOperations.mjs.map +1 -0
  137. package/{lib-esm/src → dist/esm}/MappedTypes/ExtractNonModelTypes.d.ts +0 -1
  138. package/dist/esm/MappedTypes/ExtractNonModelTypes.mjs +2 -0
  139. package/dist/esm/MappedTypes/ExtractNonModelTypes.mjs.map +1 -0
  140. package/{lib-esm/src → dist/esm}/MappedTypes/ImplicitFieldInjector.d.ts +0 -1
  141. package/dist/esm/MappedTypes/ImplicitFieldInjector.mjs +2 -0
  142. package/dist/esm/MappedTypes/ImplicitFieldInjector.mjs.map +1 -0
  143. package/{lib-esm/src → dist/esm}/MappedTypes/MapSecondaryIndexes.d.ts +0 -1
  144. package/dist/esm/MappedTypes/MapSecondaryIndexes.mjs +2 -0
  145. package/dist/esm/MappedTypes/MapSecondaryIndexes.mjs.map +1 -0
  146. package/{lib-esm/src → dist/esm}/MappedTypes/ModelMetadata.d.ts +0 -1
  147. package/dist/esm/MappedTypes/ModelMetadata.mjs +2 -0
  148. package/dist/esm/MappedTypes/ModelMetadata.mjs.map +1 -0
  149. package/{lib-esm/src → dist/esm}/MappedTypes/ResolveFieldProperties.d.ts +0 -1
  150. package/dist/esm/MappedTypes/ResolveFieldProperties.mjs +2 -0
  151. package/dist/esm/MappedTypes/ResolveFieldProperties.mjs.map +1 -0
  152. package/{lib-esm/src → dist/esm}/MappedTypes/ResolveSchema.d.ts +0 -1
  153. package/dist/esm/MappedTypes/ResolveSchema.mjs +2 -0
  154. package/dist/esm/MappedTypes/ResolveSchema.mjs.map +1 -0
  155. package/{lib-esm/src → dist/esm}/ModelField.d.ts +2 -3
  156. package/dist/esm/ModelField.mjs +199 -0
  157. package/dist/esm/ModelField.mjs.map +1 -0
  158. package/{lib-esm/src → dist/esm}/ModelIndex.d.ts +0 -1
  159. package/dist/esm/ModelIndex.mjs +33 -0
  160. package/dist/esm/ModelIndex.mjs.map +1 -0
  161. package/{lib-esm/src → dist/esm}/ModelRelationalField.d.ts +3 -4
  162. package/dist/esm/ModelRelationalField.mjs +88 -0
  163. package/dist/esm/ModelRelationalField.mjs.map +1 -0
  164. package/{lib-esm/src → dist/esm}/ModelSchema.d.ts +3 -4
  165. package/dist/esm/ModelSchema.mjs +163 -0
  166. package/dist/esm/ModelSchema.mjs.map +1 -0
  167. package/{lib-esm/src → dist/esm}/ModelType.d.ts +2 -3
  168. package/dist/esm/ModelType.mjs +66 -0
  169. package/dist/esm/ModelType.mjs.map +1 -0
  170. package/{lib-esm/src → dist/esm}/RefType.d.ts +2 -3
  171. package/dist/esm/RefType.mjs +48 -0
  172. package/dist/esm/RefType.mjs.map +1 -0
  173. package/{lib-esm/src → dist/esm}/SchemaProcessor.d.ts +0 -1
  174. package/dist/esm/SchemaProcessor.mjs +926 -0
  175. package/dist/esm/SchemaProcessor.mjs.map +1 -0
  176. package/{lib-esm/src/index.d.ts → dist/esm/a.d.ts} +1 -3
  177. package/dist/esm/a.mjs +11 -0
  178. package/dist/esm/a.mjs.map +1 -0
  179. package/dist/esm/index.d.ts +4 -0
  180. package/dist/esm/index.mjs +3 -0
  181. package/dist/esm/index.mjs.map +1 -0
  182. package/dist/esm/internals/index.d.ts +2 -0
  183. package/dist/esm/internals/index.mjs +2 -0
  184. package/dist/esm/internals/index.mjs.map +1 -0
  185. package/dist/esm/runtime/addSchemaToClient.d.ts +3 -0
  186. package/dist/esm/runtime/addSchemaToClient.mjs +17 -0
  187. package/dist/esm/runtime/addSchemaToClient.mjs.map +1 -0
  188. package/dist/esm/runtime/addSchemaToClientWithInstance.d.ts +3 -0
  189. package/dist/esm/runtime/addSchemaToClientWithInstance.mjs +22 -0
  190. package/dist/esm/runtime/addSchemaToClientWithInstance.mjs.map +1 -0
  191. package/dist/esm/runtime/bridge-types.d.ts +281 -0
  192. package/dist/esm/runtime/bridge-types.mjs +13 -0
  193. package/dist/esm/runtime/bridge-types.mjs.map +1 -0
  194. package/dist/esm/runtime/client/index.d.ts +571 -0
  195. package/dist/esm/runtime/client/index.mjs +2 -0
  196. package/dist/esm/runtime/client/index.mjs.map +1 -0
  197. package/dist/esm/runtime/client/index.v3.d.ts +15 -0
  198. package/dist/esm/runtime/client/index.v3.mjs +2 -0
  199. package/dist/esm/runtime/client/index.v3.mjs.map +1 -0
  200. package/dist/esm/runtime/index.d.ts +4 -0
  201. package/dist/esm/runtime/index.mjs +4 -0
  202. package/dist/esm/runtime/index.mjs.map +1 -0
  203. package/dist/esm/runtime/index.v3.d.ts +4 -0
  204. package/dist/esm/runtime/index.v3.mjs +4 -0
  205. package/dist/esm/runtime/index.v3.mjs.map +1 -0
  206. package/dist/esm/runtime/internals/APIClient.d.ts +125 -0
  207. package/dist/esm/runtime/internals/APIClient.mjs +728 -0
  208. package/dist/esm/runtime/internals/APIClient.mjs.map +1 -0
  209. package/dist/esm/runtime/internals/clientUtils.d.ts +6 -0
  210. package/dist/esm/runtime/internals/clientUtils.mjs +26 -0
  211. package/dist/esm/runtime/internals/clientUtils.mjs.map +1 -0
  212. package/dist/esm/runtime/internals/generateCustomOperationsProperty.d.ts +8 -0
  213. package/dist/esm/runtime/internals/generateCustomOperationsProperty.mjs +44 -0
  214. package/dist/esm/runtime/internals/generateCustomOperationsProperty.mjs.map +1 -0
  215. package/dist/esm/runtime/internals/index.d.ts +6 -0
  216. package/dist/esm/runtime/internals/index.mjs +7 -0
  217. package/dist/esm/runtime/internals/index.mjs.map +1 -0
  218. package/dist/esm/runtime/internals/operations/custom.d.ts +61 -0
  219. package/dist/esm/runtime/internals/operations/custom.mjs +354 -0
  220. package/dist/esm/runtime/internals/operations/custom.mjs.map +1 -0
  221. package/dist/esm/runtime/internals/operations/get.d.ts +3 -0
  222. package/dist/esm/runtime/internals/operations/get.mjs +60 -0
  223. package/dist/esm/runtime/internals/operations/get.mjs.map +1 -0
  224. package/dist/esm/runtime/internals/operations/indexQuery.d.ts +7 -0
  225. package/dist/esm/runtime/internals/operations/indexQuery.mjs +73 -0
  226. package/dist/esm/runtime/internals/operations/indexQuery.mjs.map +1 -0
  227. package/dist/esm/runtime/internals/operations/list.d.ts +2 -0
  228. package/dist/esm/runtime/internals/operations/list.mjs +72 -0
  229. package/dist/esm/runtime/internals/operations/list.mjs.map +1 -0
  230. package/dist/esm/runtime/internals/operations/observeQuery.d.ts +3 -0
  231. package/dist/esm/runtime/internals/operations/observeQuery.mjs +120 -0
  232. package/dist/esm/runtime/internals/operations/observeQuery.mjs.map +1 -0
  233. package/dist/esm/runtime/internals/operations/subscription.d.ts +3 -0
  234. package/dist/esm/runtime/internals/operations/subscription.mjs +29 -0
  235. package/dist/esm/runtime/internals/operations/subscription.mjs.map +1 -0
  236. package/dist/esm/runtime/internals/server/generateModelsProperty.d.ts +3 -0
  237. package/dist/esm/runtime/internals/server/generateModelsProperty.mjs +51 -0
  238. package/dist/esm/runtime/internals/server/generateModelsProperty.mjs.map +1 -0
  239. package/dist/esm/runtime/internals/server/index.d.ts +1 -0
  240. package/dist/esm/runtime/internals/server/index.mjs +2 -0
  241. package/dist/esm/runtime/internals/server/index.mjs.map +1 -0
  242. package/dist/esm/runtime/internals/utils/clientProperties/generateEnumsProperty.d.ts +3 -0
  243. package/dist/esm/runtime/internals/utils/clientProperties/generateEnumsProperty.mjs +18 -0
  244. package/dist/esm/runtime/internals/utils/clientProperties/generateEnumsProperty.mjs.map +1 -0
  245. package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.d.ts +3 -0
  246. package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs +43 -0
  247. package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs.map +1 -0
  248. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.d.ts +2 -0
  249. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.mjs +8 -0
  250. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.mjs.map +1 -0
  251. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.d.ts +8 -0
  252. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.mjs +8 -0
  253. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.mjs.map +1 -0
  254. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.d.ts +2 -0
  255. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.mjs +12 -0
  256. package/dist/esm/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.mjs.map +1 -0
  257. package/dist/esm/runtime/utils/findIndexByFields.d.ts +9 -0
  258. package/dist/esm/runtime/utils/findIndexByFields.mjs +22 -0
  259. package/dist/esm/runtime/utils/findIndexByFields.mjs.map +1 -0
  260. package/dist/esm/runtime/utils/index.d.ts +2 -0
  261. package/dist/esm/runtime/utils/index.mjs +3 -0
  262. package/dist/esm/runtime/utils/index.mjs.map +1 -0
  263. package/dist/esm/runtime/utils/resolveOwnerFields.d.ts +12 -0
  264. package/dist/esm/runtime/utils/resolveOwnerFields.mjs +45 -0
  265. package/dist/esm/runtime/utils/resolveOwnerFields.mjs.map +1 -0
  266. package/dist/esm/runtime/utils/resolvePKFields.d.ts +13 -0
  267. package/dist/esm/runtime/utils/resolvePKFields.mjs +14 -0
  268. package/dist/esm/runtime/utils/resolvePKFields.mjs.map +1 -0
  269. package/{lib-esm/src → dist/esm}/util/Brand.d.ts +0 -1
  270. package/dist/esm/util/Brand.mjs +30 -0
  271. package/dist/esm/util/Brand.mjs.map +1 -0
  272. package/{lib-esm/src → dist/esm}/util/IndexLimit.d.ts +0 -1
  273. package/dist/esm/util/IndexLimit.mjs +2 -0
  274. package/dist/esm/util/IndexLimit.mjs.map +1 -0
  275. package/{lib-esm/src → dist/esm}/util/SpreadTuple.d.ts +0 -1
  276. package/dist/esm/util/SpreadTuple.mjs +2 -0
  277. package/dist/esm/util/SpreadTuple.mjs.map +1 -0
  278. package/{lib-esm/src → dist/esm}/util/index.d.ts +0 -1
  279. package/dist/esm/util/index.mjs +2 -0
  280. package/dist/esm/util/index.mjs.map +1 -0
  281. package/dist/meta/cjs.tsbuildinfo +1 -0
  282. package/internals/package.json +7 -5
  283. package/package.json +31 -14
  284. package/runtime/package.json +8 -0
  285. package/src/Authorization.ts +684 -0
  286. package/src/ClientSchema.ts +118 -0
  287. package/src/CombineSchema.ts +58 -0
  288. package/src/CustomOperation.ts +286 -0
  289. package/src/CustomType.ts +67 -0
  290. package/src/EnumType.ts +36 -0
  291. package/src/Handler.ts +127 -0
  292. package/src/MappedTypes/CustomOperations.ts +256 -0
  293. package/src/MappedTypes/ExtractNonModelTypes.ts +154 -0
  294. package/src/MappedTypes/ImplicitFieldInjector.ts +69 -0
  295. package/src/MappedTypes/MapSecondaryIndexes.ts +100 -0
  296. package/src/MappedTypes/ModelMetadata.ts +87 -0
  297. package/src/MappedTypes/ResolveFieldProperties.ts +254 -0
  298. package/src/MappedTypes/ResolveSchema.ts +148 -0
  299. package/src/ModelField.ts +304 -0
  300. package/src/ModelIndex.ts +91 -0
  301. package/src/ModelRelationalField.ts +263 -0
  302. package/src/ModelSchema.ts +437 -0
  303. package/src/ModelType.ts +345 -0
  304. package/src/RefType.ts +139 -0
  305. package/src/SchemaProcessor.ts +1516 -0
  306. package/src/a.ts +58 -0
  307. package/src/index.ts +6 -0
  308. package/src/internals/index.ts +2 -0
  309. package/src/runtime/addSchemaToClient.ts +45 -0
  310. package/src/runtime/addSchemaToClientWithInstance.ts +46 -0
  311. package/src/runtime/bridge-types.ts +382 -0
  312. package/src/runtime/client/index.ts +923 -0
  313. package/src/runtime/client/index.v3.ts +52 -0
  314. package/src/runtime/index.ts +7 -0
  315. package/src/runtime/index.v3.ts +7 -0
  316. package/src/runtime/internals/APIClient.ts +1082 -0
  317. package/src/runtime/internals/clientUtils.ts +37 -0
  318. package/src/runtime/internals/generateCustomOperationsProperty.ts +116 -0
  319. package/src/runtime/internals/index.ts +12 -0
  320. package/src/runtime/internals/operations/custom.ts +497 -0
  321. package/src/runtime/internals/operations/get.ts +150 -0
  322. package/src/runtime/internals/operations/indexQuery.ts +178 -0
  323. package/src/runtime/internals/operations/list.ts +143 -0
  324. package/src/runtime/internals/operations/observeQuery.ts +146 -0
  325. package/src/runtime/internals/operations/subscription.ts +78 -0
  326. package/src/runtime/internals/server/generateModelsProperty.ts +94 -0
  327. package/src/runtime/internals/server/index.ts +4 -0
  328. package/src/runtime/internals/utils/clientProperties/generateEnumsProperty.ts +34 -0
  329. package/src/runtime/internals/utils/clientProperties/generateModelsProperty.ts +88 -0
  330. package/src/runtime/internals/utils/runtimeTypeGuards/isApiGraphQLProviderConfig.ts +10 -0
  331. package/src/runtime/internals/utils/runtimeTypeGuards/isConfigureEventWithResourceConfig.ts +13 -0
  332. package/src/runtime/internals/utils/runtimeTypeGuards/isGraphQLResponseWithErrors.ts +15 -0
  333. package/src/runtime/utils/findIndexByFields.ts +31 -0
  334. package/src/runtime/utils/index.ts +5 -0
  335. package/src/runtime/utils/resolveOwnerFields.ts +77 -0
  336. package/src/runtime/utils/resolvePKFields.ts +23 -0
  337. package/src/util/Brand.ts +45 -0
  338. package/src/util/IndexLimit.ts +12 -0
  339. package/src/util/SpreadTuple.ts +10 -0
  340. package/src/util/index.ts +3 -0
  341. package/lib-esm/index.d.ts +0 -5
  342. package/lib-esm/index.d.ts.map +0 -1
  343. package/lib-esm/index.js +0 -28
  344. package/lib-esm/src/Authorization.d.ts.map +0 -1
  345. package/lib-esm/src/ClientSchema.d.ts.map +0 -1
  346. package/lib-esm/src/CombineSchema.d.ts.map +0 -1
  347. package/lib-esm/src/CustomOperation.d.ts.map +0 -1
  348. package/lib-esm/src/CustomType.d.ts.map +0 -1
  349. package/lib-esm/src/EnumType.d.ts.map +0 -1
  350. package/lib-esm/src/Handler.d.ts.map +0 -1
  351. package/lib-esm/src/MappedTypes/CustomOperations.d.ts.map +0 -1
  352. package/lib-esm/src/MappedTypes/ExtractNonModelTypes.d.ts.map +0 -1
  353. package/lib-esm/src/MappedTypes/ExtractNonModelTypes.js +0 -2
  354. package/lib-esm/src/MappedTypes/ImplicitFieldInjector.d.ts.map +0 -1
  355. package/lib-esm/src/MappedTypes/ImplicitFieldInjector.js +0 -2
  356. package/lib-esm/src/MappedTypes/MapSecondaryIndexes.d.ts.map +0 -1
  357. package/lib-esm/src/MappedTypes/ModelMetadata.d.ts.map +0 -1
  358. package/lib-esm/src/MappedTypes/ResolveFieldProperties.d.ts.map +0 -1
  359. package/lib-esm/src/MappedTypes/ResolveFieldProperties.js +0 -2
  360. package/lib-esm/src/MappedTypes/ResolveSchema.d.ts.map +0 -1
  361. package/lib-esm/src/ModelField.d.ts.map +0 -1
  362. package/lib-esm/src/ModelIndex.d.ts.map +0 -1
  363. package/lib-esm/src/ModelRelationalField.d.ts.map +0 -1
  364. package/lib-esm/src/ModelSchema.d.ts.map +0 -1
  365. package/lib-esm/src/ModelType.d.ts.map +0 -1
  366. package/lib-esm/src/RefType.d.ts.map +0 -1
  367. package/lib-esm/src/SchemaProcessor.d.ts.map +0 -1
  368. package/lib-esm/src/index.d.ts.map +0 -1
  369. package/lib-esm/src/internals/index.d.ts +0 -2
  370. package/lib-esm/src/internals/index.d.ts.map +0 -1
  371. package/lib-esm/src/util/Brand.d.ts.map +0 -1
  372. package/lib-esm/src/util/IndexLimit.d.ts.map +0 -1
  373. package/lib-esm/src/util/SpreadTuple.d.ts.map +0 -1
  374. package/lib-esm/src/util/index.d.ts.map +0 -1
  375. package/lib-esm/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,150 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import {
4
+ AmplifyServer,
5
+ AuthModeParams,
6
+ BaseClient,
7
+ BaseBrowserClient,
8
+ BaseSSRClient,
9
+ ClientInternalsGetter,
10
+ GraphQLOptions,
11
+ GraphQLResult,
12
+ ListArgs,
13
+ ModelIntrospectionSchema,
14
+ SchemaModel,
15
+ QueryArgs,
16
+ } from '../../bridge-types';
17
+
18
+ import {
19
+ ModelOperation,
20
+ authModeParams,
21
+ buildGraphQLVariables,
22
+ flattenItems,
23
+ generateGraphQLDocument,
24
+ getCustomHeaders,
25
+ initializeModel,
26
+ } from '../APIClient';
27
+
28
+ export function getFactory(
29
+ client: BaseClient,
30
+ modelIntrospection: ModelIntrospectionSchema,
31
+ model: SchemaModel,
32
+ operation: ModelOperation,
33
+ getInternals: ClientInternalsGetter,
34
+ useContext = false,
35
+ ) {
36
+ const getWithContext = async (
37
+ contextSpec: AmplifyServer.ContextSpec & GraphQLOptions,
38
+ arg?: any,
39
+ options?: any,
40
+ ) => {
41
+ return _get(
42
+ client,
43
+ modelIntrospection,
44
+ model,
45
+ arg,
46
+ options,
47
+ operation,
48
+ getInternals,
49
+ contextSpec,
50
+ );
51
+ };
52
+
53
+ const get = async (arg?: any, options?: any) => {
54
+ return _get(
55
+ client,
56
+ modelIntrospection,
57
+ model,
58
+ arg,
59
+ options,
60
+ operation,
61
+ getInternals,
62
+ );
63
+ };
64
+
65
+ return useContext ? getWithContext : get;
66
+ }
67
+
68
+ async function _get(
69
+ client: BaseClient,
70
+ modelIntrospection: ModelIntrospectionSchema,
71
+ model: SchemaModel,
72
+ arg: QueryArgs,
73
+ options: AuthModeParams & ListArgs,
74
+ operation: ModelOperation,
75
+ getInternals: ClientInternalsGetter,
76
+ context?: AmplifyServer.ContextSpec,
77
+ ) {
78
+ const { name } = model;
79
+
80
+ const query = generateGraphQLDocument(
81
+ modelIntrospection,
82
+ name,
83
+ operation,
84
+ options,
85
+ );
86
+ const variables = buildGraphQLVariables(
87
+ model,
88
+ operation,
89
+ arg,
90
+ modelIntrospection,
91
+ );
92
+
93
+ try {
94
+ const auth = authModeParams(client, getInternals, options);
95
+
96
+ const headers = getCustomHeaders(client, getInternals, options?.headers);
97
+
98
+ const { data, extensions } = context
99
+ ? ((await (client as BaseSSRClient).graphql(
100
+ context,
101
+ {
102
+ ...auth,
103
+ query,
104
+ variables,
105
+ },
106
+ headers,
107
+ )) as GraphQLResult)
108
+ : ((await (client as BaseBrowserClient).graphql(
109
+ {
110
+ ...auth,
111
+ query,
112
+ variables,
113
+ },
114
+ headers,
115
+ )) as GraphQLResult);
116
+
117
+ // flatten response
118
+ if (data) {
119
+ const [key] = Object.keys(data);
120
+ const flattenedResult = flattenItems(data)[key];
121
+
122
+ if (options?.selectionSet) {
123
+ return { data: flattenedResult, extensions };
124
+ } else {
125
+ // TODO: refactor to avoid destructuring here
126
+ const [initialized] = initializeModel(
127
+ client,
128
+ name,
129
+ [flattenedResult],
130
+ modelIntrospection,
131
+ auth.authMode,
132
+ auth.authToken,
133
+ !!context,
134
+ );
135
+
136
+ return { data: initialized, extensions };
137
+ }
138
+ } else {
139
+ return { data: null, extensions };
140
+ }
141
+ } catch (error: any) {
142
+ if (error.errors) {
143
+ // graphql errors pass through
144
+ return error as any;
145
+ } else {
146
+ // non-graphql errors re re-thrown
147
+ throw error;
148
+ }
149
+ }
150
+ }
@@ -0,0 +1,178 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import {
4
+ AmplifyServer,
5
+ AuthModeParams,
6
+ BaseClient,
7
+ ClientInternalsGetter,
8
+ GraphQLResult,
9
+ ListArgs,
10
+ ModelIntrospectionSchema,
11
+ SchemaModel,
12
+ QueryArgs,
13
+ } from '../../bridge-types';
14
+
15
+ import {
16
+ authModeParams,
17
+ buildGraphQLVariables,
18
+ flattenItems,
19
+ generateGraphQLDocument,
20
+ getCustomHeaders,
21
+ initializeModel,
22
+ } from '../APIClient';
23
+
24
+ export interface IndexMeta {
25
+ queryField: string;
26
+ pk: string;
27
+ sk?: string[];
28
+ }
29
+
30
+ export function indexQueryFactory(
31
+ client: BaseClient,
32
+ modelIntrospection: ModelIntrospectionSchema,
33
+ model: SchemaModel,
34
+ indexMeta: IndexMeta,
35
+ getInternals: ClientInternalsGetter,
36
+ context = false,
37
+ ) {
38
+ const indexQueryWithContext = async (
39
+ contextSpec: AmplifyServer.ContextSpec,
40
+ args: QueryArgs,
41
+ options?: ListArgs,
42
+ ) => {
43
+ return _indexQuery(
44
+ client,
45
+ modelIntrospection,
46
+ model,
47
+ indexMeta,
48
+ getInternals,
49
+ {
50
+ ...args,
51
+ ...options,
52
+ },
53
+ contextSpec,
54
+ );
55
+ };
56
+
57
+ const indexQuery = async (args: QueryArgs, options?: ListArgs) => {
58
+ return _indexQuery(
59
+ client,
60
+ modelIntrospection,
61
+ model,
62
+ indexMeta,
63
+ getInternals,
64
+ {
65
+ ...args,
66
+ ...options,
67
+ },
68
+ );
69
+ };
70
+
71
+ return context ? indexQueryWithContext : indexQuery;
72
+ }
73
+
74
+ function processGraphQlResponse(
75
+ result: GraphQLResult,
76
+ selectionSet: undefined | string[],
77
+ modelInitializer: (flattenedResult: any[]) => any[],
78
+ ) {
79
+ const { data, extensions } = result;
80
+
81
+ const [key] = Object.keys(data);
82
+
83
+ if (data[key].items) {
84
+ const flattenedResult = flattenItems(data)[key];
85
+
86
+ return {
87
+ data: selectionSet ? flattenedResult : modelInitializer(flattenedResult),
88
+ nextToken: data[key].nextToken,
89
+ extensions,
90
+ };
91
+ }
92
+
93
+ return {
94
+ data: data[key],
95
+ nextToken: data[key].nextToken,
96
+ extensions,
97
+ };
98
+ }
99
+
100
+ function handleGraphQlError(error: any) {
101
+ if (error.errors) {
102
+ // graphql errors pass through
103
+ return error as any;
104
+ } else {
105
+ // non-graphql errors re re-thrown
106
+ throw error;
107
+ }
108
+ }
109
+
110
+ async function _indexQuery(
111
+ client: BaseClient,
112
+ modelIntrospection: ModelIntrospectionSchema,
113
+ model: SchemaModel,
114
+ indexMeta: IndexMeta,
115
+ getInternals: ClientInternalsGetter,
116
+ args?: ListArgs & AuthModeParams,
117
+ contextSpec?: AmplifyServer.ContextSpec,
118
+ ) {
119
+ const { name } = model;
120
+
121
+ const query = generateGraphQLDocument(
122
+ modelIntrospection,
123
+ name,
124
+ 'INDEX_QUERY',
125
+ args,
126
+ indexMeta,
127
+ );
128
+ const variables = buildGraphQLVariables(
129
+ model,
130
+ 'INDEX_QUERY',
131
+ args,
132
+ modelIntrospection,
133
+ indexMeta,
134
+ );
135
+
136
+ const auth = authModeParams(client, getInternals, args);
137
+
138
+ const modelInitializer = (flattenedResult: any[]) =>
139
+ initializeModel(
140
+ client,
141
+ name,
142
+ flattenedResult,
143
+ modelIntrospection,
144
+ auth.authMode,
145
+ auth.authToken,
146
+ !!contextSpec,
147
+ );
148
+
149
+ try {
150
+ const headers = getCustomHeaders(client, getInternals, args?.headers);
151
+
152
+ const graphQlParams = {
153
+ ...auth,
154
+ query,
155
+ variables,
156
+ };
157
+
158
+ const requestArgs: [any, any] = [graphQlParams, headers];
159
+
160
+ if (contextSpec !== undefined) {
161
+ requestArgs.unshift(contextSpec);
162
+ }
163
+
164
+ const response = (await (client as BaseClient).graphql(
165
+ ...requestArgs,
166
+ )) as GraphQLResult;
167
+
168
+ if (response.data !== undefined) {
169
+ return processGraphQlResponse(
170
+ response,
171
+ args?.selectionSet,
172
+ modelInitializer,
173
+ );
174
+ }
175
+ } catch (error: any) {
176
+ return handleGraphQlError(error);
177
+ }
178
+ }
@@ -0,0 +1,143 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import {
4
+ AmplifyServer,
5
+ AuthModeParams,
6
+ BaseClient,
7
+ BaseBrowserClient,
8
+ BaseSSRClient,
9
+ ClientInternalsGetter,
10
+ GraphQLResult,
11
+ ListArgs,
12
+ ModelIntrospectionSchema,
13
+ SchemaModel,
14
+ } from '../../bridge-types';
15
+
16
+ import {
17
+ authModeParams,
18
+ buildGraphQLVariables,
19
+ flattenItems,
20
+ generateGraphQLDocument,
21
+ getCustomHeaders,
22
+ initializeModel,
23
+ } from '../APIClient';
24
+
25
+ export function listFactory(
26
+ client: BaseClient,
27
+ modelIntrospection: ModelIntrospectionSchema,
28
+ model: SchemaModel,
29
+ getInternals: ClientInternalsGetter,
30
+ context = false,
31
+ ) {
32
+ const listWithContext = async (
33
+ contextSpec: AmplifyServer.ContextSpec,
34
+ args?: ListArgs,
35
+ ) => {
36
+ return _list(
37
+ client,
38
+ modelIntrospection,
39
+ model,
40
+ getInternals,
41
+ args,
42
+ contextSpec,
43
+ );
44
+ };
45
+
46
+ const list = async (args?: Record<string, any>) => {
47
+ return _list(client, modelIntrospection, model, getInternals, args);
48
+ };
49
+
50
+ return context ? listWithContext : list;
51
+ }
52
+
53
+ async function _list(
54
+ client: BaseClient,
55
+ modelIntrospection: ModelIntrospectionSchema,
56
+ model: SchemaModel,
57
+ getInternals: ClientInternalsGetter,
58
+ args?: ListArgs & AuthModeParams,
59
+ contextSpec?: AmplifyServer.ContextSpec,
60
+ ) {
61
+ const { name } = model;
62
+
63
+ const query = generateGraphQLDocument(modelIntrospection, name, 'LIST', args);
64
+ const variables = buildGraphQLVariables(
65
+ model,
66
+ 'LIST',
67
+ args,
68
+ modelIntrospection,
69
+ );
70
+
71
+ try {
72
+ const auth = authModeParams(client, getInternals, args);
73
+
74
+ const headers = getCustomHeaders(client, getInternals, args?.headers);
75
+
76
+ const { data, extensions } = contextSpec
77
+ ? ((await (client as BaseSSRClient).graphql(
78
+ contextSpec,
79
+ {
80
+ ...auth,
81
+ query,
82
+ variables,
83
+ },
84
+ headers,
85
+ )) as GraphQLResult)
86
+ : ((await (client as BaseBrowserClient).graphql(
87
+ {
88
+ ...auth,
89
+ query,
90
+ variables,
91
+ },
92
+ headers,
93
+ )) as GraphQLResult);
94
+
95
+ // flatten response
96
+ if (data !== undefined) {
97
+ const [key] = Object.keys(data);
98
+
99
+ if (data[key].items) {
100
+ const flattenedResult = flattenItems(data)[key];
101
+
102
+ // don't init if custom selection set
103
+ if (args?.selectionSet) {
104
+ return {
105
+ data: flattenedResult,
106
+ nextToken: data[key].nextToken,
107
+ extensions,
108
+ };
109
+ } else {
110
+ const initialized = initializeModel(
111
+ client,
112
+ name,
113
+ flattenedResult,
114
+ modelIntrospection,
115
+ auth.authMode,
116
+ auth.authToken,
117
+ !!contextSpec,
118
+ );
119
+
120
+ return {
121
+ data: initialized,
122
+ nextToken: data[key].nextToken,
123
+ extensions,
124
+ };
125
+ }
126
+ }
127
+
128
+ return {
129
+ data: data[key],
130
+ nextToken: data[key].nextToken,
131
+ extensions,
132
+ };
133
+ }
134
+ } catch (error: any) {
135
+ if (error.errors) {
136
+ // graphql errors pass through
137
+ return error as any;
138
+ } else {
139
+ // non-graphql errors re re-thrown
140
+ throw error;
141
+ }
142
+ }
143
+ }
@@ -0,0 +1,146 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { Observable } from 'rxjs';
4
+ import { SchemaModel } from '../../bridge-types';
5
+
6
+ import { findIndexByFields, resolvePKFields } from '../../utils';
7
+
8
+ export function observeQueryFactory(models: any, model: SchemaModel) {
9
+ const { name } = model;
10
+
11
+ const observeQuery = (arg?: any) =>
12
+ new Observable((subscriber) => {
13
+ // what we'll be sending to our subscribers
14
+ const items: object[] = [];
15
+
16
+ // To enqueue subscription messages while we collect our initial
17
+ // result set.
18
+ const messageQueue = [] as {
19
+ type: 'create' | 'update' | 'delete';
20
+ item: object;
21
+ }[];
22
+
23
+ // operation to take when message(s) arrive.
24
+ // this operation will be swapped out once initial "sync" is complete
25
+ // to immediately ingest messsages.
26
+ let receiveMessages = (...messages: typeof messageQueue) => {
27
+ return messageQueue.push(...messages);
28
+ };
29
+
30
+ // start subscriptions
31
+ const onCreateSub = models[name].onCreate(arg).subscribe({
32
+ next(item: object) {
33
+ receiveMessages({ item, type: 'create' });
34
+ },
35
+ error(error: any) {
36
+ subscriber.error({ type: 'onCreate', error });
37
+ },
38
+ });
39
+ const onUpdateSub = models[name].onUpdate(arg).subscribe({
40
+ next(item: object) {
41
+ receiveMessages({ item, type: 'update' });
42
+ },
43
+ error(error: any) {
44
+ subscriber.error({ type: 'onUpdate', error });
45
+ },
46
+ });
47
+ const onDeleteSub = models[name].onDelete(arg).subscribe({
48
+ next(item: object) {
49
+ receiveMessages({ item, type: 'delete' });
50
+ },
51
+ error(error: any) {
52
+ subscriber.error({ type: 'onDelete', error });
53
+ },
54
+ });
55
+
56
+ // consumes a list of messages and sends a snapshot
57
+ function ingestMessages(messages: typeof messageQueue) {
58
+ for (const message of messages) {
59
+ const idx = findIndexByFields(message.item, items, pkFields as any);
60
+ switch (message.type) {
61
+ case 'create':
62
+ if (idx < 0) items.push(message.item);
63
+ break;
64
+ case 'update':
65
+ if (idx >= 0) items[idx] = message.item;
66
+ break;
67
+ case 'delete':
68
+ if (idx >= 0) items.splice(idx, 1);
69
+ break;
70
+ default:
71
+ console.error('Unrecognized message in observeQuery.', message);
72
+ }
73
+ }
74
+ subscriber.next({
75
+ items,
76
+ isSynced: true,
77
+ });
78
+ }
79
+
80
+ const pkFields = resolvePKFields(model);
81
+
82
+ // initial results
83
+ (async () => {
84
+ let firstPage = true;
85
+ let nextToken: string | null = null;
86
+ while (!subscriber.closed && (firstPage || nextToken)) {
87
+ firstPage = false;
88
+
89
+ const {
90
+ data: page,
91
+ errors,
92
+ nextToken: _nextToken,
93
+ }: {
94
+ data: any;
95
+ errors: any;
96
+ nextToken: string | null;
97
+ } = await models[name].list({ ...arg, nextToken });
98
+ nextToken = _nextToken;
99
+
100
+ items.push(...page);
101
+
102
+ // if there are no more pages and no items we already know about
103
+ // that need to be merged in from sub, we're "synced"
104
+ const isSynced =
105
+ messageQueue.length === 0 &&
106
+ (nextToken === null || nextToken === undefined);
107
+
108
+ subscriber.next({
109
+ items,
110
+ isSynced,
111
+ });
112
+
113
+ if (Array.isArray(errors)) {
114
+ for (const error of errors) {
115
+ subscriber.error(error);
116
+ }
117
+ }
118
+ }
119
+
120
+ // play through the queue
121
+ if (messageQueue.length > 0) {
122
+ ingestMessages(messageQueue);
123
+ }
124
+
125
+ // switch the queue to write directly to the items collection
126
+ receiveMessages = (...messages: typeof messageQueue) => {
127
+ ingestMessages(messages);
128
+
129
+ return items.length;
130
+ };
131
+ })();
132
+
133
+ // when subscriber unsubscribes, tear down internal subs
134
+ return () => {
135
+ // 1. tear down internal subs
136
+ onCreateSub.unsubscribe();
137
+ onUpdateSub.unsubscribe();
138
+ onDeleteSub.unsubscribe();
139
+
140
+ // 2. there is no need to explicitly stop paging. instead, we
141
+ // just check `subscriber.closed` above before fetching each page.
142
+ };
143
+ });
144
+
145
+ return observeQuery;
146
+ }
@@ -0,0 +1,78 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { map } from 'rxjs';
5
+ import {
6
+ BaseBrowserClient,
7
+ ClientInternalsGetter,
8
+ GraphqlSubscriptionResult,
9
+ ModelIntrospectionSchema,
10
+ SchemaModel,
11
+ } from '../../bridge-types';
12
+
13
+ import {
14
+ ModelOperation,
15
+ authModeParams,
16
+ buildGraphQLVariables,
17
+ generateGraphQLDocument,
18
+ getCustomHeaders,
19
+ initializeModel,
20
+ } from '../APIClient';
21
+
22
+ export function subscriptionFactory(
23
+ client: BaseBrowserClient,
24
+ modelIntrospection: ModelIntrospectionSchema,
25
+ model: SchemaModel,
26
+ operation: ModelOperation,
27
+ getInternals: ClientInternalsGetter,
28
+ ) {
29
+ const { name } = model as any;
30
+
31
+ const subscription = (args?: Record<string, any>) => {
32
+ const query = generateGraphQLDocument(
33
+ modelIntrospection,
34
+ name,
35
+ operation,
36
+ args,
37
+ );
38
+
39
+ const variables = buildGraphQLVariables(
40
+ model,
41
+ operation,
42
+ args,
43
+ modelIntrospection,
44
+ );
45
+
46
+ const auth = authModeParams(client, getInternals, args);
47
+
48
+ const headers = getCustomHeaders(client, getInternals, args?.headers);
49
+
50
+ const observable = client.graphql(
51
+ {
52
+ ...auth,
53
+ query,
54
+ variables,
55
+ },
56
+ headers,
57
+ ) as GraphqlSubscriptionResult;
58
+
59
+ return observable.pipe(
60
+ map((value) => {
61
+ const [key] = Object.keys(value.data);
62
+ const data = (value.data as any)[key];
63
+ const [initialized] = initializeModel(
64
+ client,
65
+ name,
66
+ [data],
67
+ modelIntrospection,
68
+ auth.authMode,
69
+ auth.authToken,
70
+ );
71
+
72
+ return initialized;
73
+ }),
74
+ );
75
+ };
76
+
77
+ return subscription;
78
+ }