@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,923 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import {
4
+ DeepReadOnlyObject,
5
+ UnwrapArray,
6
+ UnionToIntersection,
7
+ Prettify,
8
+ Equal,
9
+ __modelMeta__,
10
+ ExtractModelMeta,
11
+ } from '@aws-amplify/data-schema-types';
12
+ import type { Observable } from 'rxjs';
13
+
14
+ // temporarily export symbols from `data-schema-types` because in case part of the
15
+ // problem with the runtime -> data-schema migration comes down to a mismatch
16
+ // around this symbol and it's extractor.
17
+ //
18
+ // before switching to declare these here, we need to prove it won't break any
19
+ // customer experiences. this *might* need to happen as a breaking change.
20
+ //
21
+ // export declare const __modelMeta__: unique symbol;
22
+ // export type ExtractModelMeta<T extends Record<any, any>> =
23
+ // T[typeof __modelMeta__];
24
+
25
+ export {
26
+ __modelMeta__,
27
+ ExtractModelMeta,
28
+ } from '@aws-amplify/data-schema-types';
29
+
30
+ type Model = Record<string, any>;
31
+
32
+ // #region Return Value Mapped Types
33
+
34
+ /**
35
+ * Currently this omits any object-type fields. Update this when we add custom types/enums.
36
+ */
37
+ type NonRelationalFields<M extends Model> = {
38
+ [Field in keyof M as UnwrapArray<M[Field]> extends Record<string, unknown>
39
+ ? never
40
+ : Field]: M[Field];
41
+ };
42
+
43
+ /**
44
+ * Selection set-aware CRUDL operation return value type
45
+ *
46
+ * @returns model type as-is with default selection set; otherwise generates return type from custonm sel. set
47
+ */
48
+ type ReturnValue<
49
+ M extends Model,
50
+ FlatModel extends Model,
51
+ Paths extends ReadonlyArray<ModelPath<FlatModel>>,
52
+ > = Paths extends undefined | never[]
53
+ ? M
54
+ : CustomSelectionSetReturnValue<FlatModel, Paths[number]>;
55
+
56
+ /**
57
+ * This mapped type traverses the SelectionSetReturnValue result and the original FlatModel, restoring array types
58
+ * that were flattened in DeepPickFromPath
59
+ *
60
+ */
61
+ type RestoreArrays<Result, FlatModel> = {
62
+ [K in keyof Result]: K extends keyof FlatModel
63
+ ? FlatModel[K] extends Array<any>
64
+ ? Array<RestoreArrays<Result[K], UnwrapArray<FlatModel[K]>>>
65
+ : FlatModel[K] extends Record<string, any>
66
+ ? RestoreArrays<Result[K], FlatModel[K]>
67
+ : Result[K]
68
+ : never;
69
+ };
70
+
71
+ /**
72
+ * Generates flattened, readonly return type using specified custom sel. set
73
+ */
74
+ type CustomSelectionSetReturnValue<
75
+ FlatModel extends Model,
76
+ Paths extends string,
77
+ > = Prettify<
78
+ DeepReadOnlyObject<
79
+ RestoreArrays<
80
+ UnionToIntersection<DeepPickFromPath<FlatModel, Paths>>,
81
+ FlatModel
82
+ >
83
+ >
84
+ >;
85
+
86
+ /**
87
+ * Picks object properties that match provided dot-separated Path
88
+ *
89
+ * @typeParam FlatModel
90
+ * @typeParam Path - string union of dot-separated paths
91
+ *
92
+ * @returns union of object slices
93
+ *
94
+ * @example
95
+ * ### Given
96
+ * ```ts
97
+ * FlatModel = {
98
+ title: string;
99
+ description?: string | null;
100
+ comments: {
101
+ content: string;
102
+ readonly id: string;
103
+ readonly createdAt: string;
104
+ readonly updatedAt: string;
105
+ }[];
106
+ readonly id: string;
107
+ readonly createdAt: string;
108
+ readonly updatedAt: string;
109
+ }
110
+
111
+ Path = 'title' | 'comments.id' | 'comments.content'
112
+ * ```
113
+ * ### Returns
114
+ * ```ts
115
+ * { title: string } | { comments: { id: string} } | { comments: { content: string} }
116
+ * ```
117
+ *
118
+ * @privateRemarks
119
+ *
120
+ * Intersections on arrays have unexpected behavior in TypeScript:
121
+ * see: https://github.com/microsoft/TypeScript/issues/41874 and https://github.com/microsoft/TypeScript/issues/39693
122
+ *
123
+ * To work around this limitation, DeepPickFromPath flattens Arrays of Models (e.g. { comments: { id: string}[] } => { comments: { id: string} })
124
+ * Arrays are then restored downstream in RestoreArrays
125
+ */
126
+ type DeepPickFromPath<
127
+ FlatModel extends Model,
128
+ Path extends string,
129
+ > = FlatModel extends undefined
130
+ ? DeepPickFromPath<NonNullable<FlatModel>, Path> | undefined
131
+ : FlatModel extends null
132
+ ? DeepPickFromPath<NonNullable<FlatModel>, Path> | null
133
+ : FlatModel extends any[]
134
+ ? DeepPickFromPath<UnwrapArray<FlatModel>, Path>
135
+ : Path extends `${infer Head}.${infer Tail}`
136
+ ? Head extends keyof FlatModel
137
+ ? Tail extends '*'
138
+ ? { [k in Head]: NonRelationalFields<UnwrapArray<FlatModel[Head]>> }
139
+ : { [k in Head]: DeepPickFromPath<FlatModel[Head], Tail> }
140
+ : never
141
+ : Path extends keyof FlatModel
142
+ ? { [K in Path]: FlatModel[Path] }
143
+ : never;
144
+
145
+ /**
146
+ * Generates custom selection set type with up to 6 levels of nested fields
147
+ *
148
+ * @returns string[] where each string is a field in the model
149
+ * recurses over nested objects - such as relationships and custom types - generating a `field.*` type value to select all fields in that nested type,
150
+ * as well as a dot-delimited set of fields for fine-grained selection of particular fields in the nested type (see example below)
151
+ *
152
+ * @example
153
+ * ```ts
154
+ * FlatModel = {
155
+ * id: string
156
+ * title: string
157
+ * comments: {
158
+ * id:: string
159
+ * content: string
160
+ * }[]
161
+ * }
162
+ *```
163
+ *
164
+ * ### Result
165
+ * ```
166
+ * 'id' | 'title' | 'comments.*' | 'comments.id' | 'comments.content'
167
+ * ```
168
+ *
169
+ * @privateRemarks
170
+ *
171
+ * explicit recursion depth pattern ref: https://github.com/microsoft/TypeScript/blob/main/src/lib/es2019.array.d.ts#L1-L5
172
+ *
173
+ * this pattern puts an upper bound on the levels of recursion in our mapped type
174
+ *
175
+ * it guards against infinite recursion when generating the selection set type for deeply-nested models
176
+ * and especially for bi-directional relationships which are infinitely recursable by their nature
177
+ *
178
+ */
179
+ export type ModelPath<
180
+ FlatModel extends Record<string, unknown>,
181
+ // actual recursive Depth is 6, since we decrement down to 0
182
+ Depth extends number = 5, // think of this as the initialization expr. in a for loop (e.g. `let depth = 5`)
183
+ RecursionLoop extends number[] = [-1, 0, 1, 2, 3, 4],
184
+ Field = keyof FlatModel,
185
+ > = {
186
+ done: Field extends string ? `${Field}.*` : never;
187
+ recur: Field extends string
188
+ ? NonNullable<UnwrapArray<FlatModel[Field]>> extends Record<string, unknown>
189
+ ?
190
+ | `${Field}.${ModelPath<
191
+ NonNullable<UnwrapArray<FlatModel[Field]>>,
192
+ // this decrements `Depth` by 1 in each recursive call; it's equivalent to the update expr. afterthought in a for loop (e.g. `depth -= 1`)
193
+ RecursionLoop[Depth]
194
+ >}`
195
+ | `${Field}.*`
196
+ : `${Field}`
197
+ : never;
198
+ // this is equivalent to the condition expr. in a for loop (e.g. `depth !== -1`)
199
+ }[Depth extends -1 ? 'done' : 'recur'];
200
+
201
+ /**
202
+ * Flattens model instance type and unwraps async functions into resolved GraphQL shape
203
+ *
204
+ * This type is used for generating the base shape for custom selection set input and its return value
205
+ * Uses same pattern as above to limit recursion depth to maximum usable for selection set.
206
+ *
207
+ * @example
208
+ * ### Given
209
+ * ```ts
210
+ * Model = {
211
+ title: string;
212
+ comments: () => ListReturnValue<({
213
+ content: string;
214
+ readonly id: string;
215
+ readonly createdAt: string;
216
+ readonly updatedAt: string;
217
+ } | null | undefined)[]>;
218
+ readonly id: string;
219
+ readonly createdAt: string;
220
+ readonly updatedAt: string;
221
+ description?: string | ... 1 more ... | undefined;
222
+ }
223
+ * ```
224
+ * ### Returns
225
+ * ```ts
226
+ * {
227
+ title: string;
228
+ comments: {
229
+ content: string;
230
+ readonly id: string;
231
+ readonly createdAt: string;
232
+ readonly updatedAt: string;
233
+ }[];
234
+ readonly id: string;
235
+ readonly createdAt: string;
236
+ readonly updatedAt: string;
237
+ description: string | null | undefined;
238
+ }
239
+ *
240
+ * ```
241
+ */
242
+ // TODO: temporarily exported for troubleshooting
243
+ export type ResolvedModel<
244
+ Model extends Record<string, unknown>,
245
+ Depth extends number = 7,
246
+ RecursionLoop extends number[] = [-1, 0, 1, 2, 3, 4, 5, 6],
247
+ > = {
248
+ done: NonRelationalFields<Model>;
249
+ recur: {
250
+ [Field in keyof Model]: Model[Field] extends (
251
+ ...args: any
252
+ ) => ListReturnValue<infer M>
253
+ ? NonNullable<M> extends Record<string, any>
254
+ ? ResolvedModel<NonNullable<M>, RecursionLoop[Depth]>[]
255
+ : never
256
+ : Model[Field] extends (...args: any) => SingularReturnValue<infer M>
257
+ ? NonNullable<M> extends Record<string, any>
258
+ ? ResolvedModel<NonNullable<M>, RecursionLoop[Depth]>
259
+ : never
260
+ : Model[Field];
261
+ };
262
+ }[Depth extends -1 ? 'done' : 'recur'];
263
+
264
+ export type SelectionSet<
265
+ Model extends Record<string, unknown>,
266
+ Path extends ReadonlyArray<ModelPath<FlatModel>>,
267
+ FlatModel extends Record<string, unknown> = ResolvedModel<Model>,
268
+ > = CustomSelectionSetReturnValue<FlatModel, Path[number]>;
269
+ // #endregion
270
+
271
+ // #region Input mapped types
272
+ export type ModelIdentifier<Model extends Record<any, any>> = Prettify<
273
+ Record<Model['identifier'] & string, string>
274
+ >;
275
+
276
+ type IfEquals<X, Y, A = X, B = never> =
277
+ (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? A : B;
278
+
279
+ // Excludes readonly fields from Record type
280
+ type WritableKeys<T> = {
281
+ [P in keyof T]-?: IfEquals<
282
+ { [Q in P]: T[P] },
283
+ { -readonly [Q in P]: T[P] },
284
+ P
285
+ >;
286
+ }[keyof T];
287
+
288
+ /**
289
+ * All required fields and relational fields, exclude readonly fields
290
+ */
291
+ type MutationInput<
292
+ Fields,
293
+ WritableFields = Pick<Fields, WritableKeys<Fields>>,
294
+ > = {
295
+ [Prop in keyof WritableFields as WritableFields[Prop] extends (
296
+ ...args: any
297
+ ) => any
298
+ ? never
299
+ : Prop]: WritableFields[Prop];
300
+ };
301
+
302
+ /**
303
+ * All identifiers and fields used to create a model
304
+ */
305
+ type CreateModelInput<
306
+ Model extends Record<string, unknown>,
307
+ ModelMeta extends Record<string, unknown>,
308
+ > =
309
+ Equal<ModelIdentifier<ModelMeta>, { id: string }> extends true
310
+ ? Partial<ModelIdentifier<ModelMeta>> & Omit<MutationInput<Model>, 'id'>
311
+ : MutationInput<Model>;
312
+
313
+ // #endregion
314
+
315
+ // #region Interfaces copied from `graphql` package
316
+ // From https://github.com/graphql/graphql-js/blob/main/src/error/GraphQLError.ts
317
+
318
+ /**
319
+ * See: https://spec.graphql.org/draft/#sec-Errors
320
+ */
321
+ export interface GraphQLFormattedError {
322
+ /**
323
+ * A short, human-readable summary of the problem that **SHOULD NOT** change
324
+ * from occurrence to occurrence of the problem, except for purposes of
325
+ * localization.
326
+ */
327
+ readonly message: string;
328
+ /**
329
+ * The AppSync exception category. Indicates the source of the error.
330
+ */
331
+ readonly errorType: string;
332
+ /**
333
+ * Additional error metadata that can be surfaced via error handling resolver utils:
334
+ * * JS - https://docs.aws.amazon.com/appsync/latest/devguide/built-in-util-js.html#utility-helpers-in-error-js
335
+ * * VTL - https://docs.aws.amazon.com/appsync/latest/devguide/utility-helpers-in-util.html#utility-helpers-in-error
336
+ */
337
+ readonly errorInfo: null | { [key: string]: unknown };
338
+ /**
339
+ * If an error can be associated to a particular point in the requested
340
+ * GraphQL document, it should contain a list of locations.
341
+ */
342
+ readonly locations?: ReadonlyArray<SourceLocation>;
343
+ /**
344
+ * If an error can be associated to a particular field in the GraphQL result,
345
+ * it _must_ contain an entry with the key `path` that details the path of
346
+ * the response field which experienced the error. This allows clients to
347
+ * identify whether a null result is intentional or caused by a runtime error.
348
+ */
349
+ readonly path?: ReadonlyArray<string | number>;
350
+ /**
351
+ * Reserved for implementors to extend the protocol however they see fit,
352
+ * and hence there are no additional restrictions on its contents.
353
+ */
354
+ readonly extensions?: { [key: string]: unknown };
355
+ }
356
+
357
+ /**
358
+ * Represents a location in a Source.
359
+ */
360
+ export interface SourceLocation {
361
+ readonly line: number;
362
+ readonly column: number;
363
+ }
364
+
365
+ // #endregion
366
+
367
+ export type SingularReturnValue<T> = Promise<{
368
+ data: T;
369
+ errors?: GraphQLFormattedError[];
370
+ extensions?: {
371
+ [key: string]: any;
372
+ };
373
+ }>;
374
+
375
+ export type ListReturnValue<T> = Promise<{
376
+ data: Array<T>;
377
+ nextToken?: string | null;
378
+ errors?: GraphQLFormattedError[];
379
+ extensions?: {
380
+ [key: string]: any;
381
+ };
382
+ }>;
383
+
384
+ export type ObservedReturnValue<T> = Observable<T>;
385
+
386
+ export type ObserveQueryReturnValue<T> = Observable<{
387
+ items: T[];
388
+ isSynced: boolean;
389
+ }>;
390
+
391
+ export type LazyLoader<Model, IsArray extends boolean> = (
392
+ options?: IsArray extends true
393
+ ? {
394
+ authMode?: AuthMode;
395
+ authToken?: string;
396
+ limit?: number;
397
+ nextToken?: string | null;
398
+ headers?: CustomHeaders;
399
+ }
400
+ : {
401
+ authMode?: AuthMode;
402
+ authToken?: string;
403
+ headers?: CustomHeaders;
404
+ },
405
+ ) => IsArray extends true
406
+ ? ListReturnValue<Prettify<NonNullable<Model>>>
407
+ : SingularReturnValue<Prettify<Model>>;
408
+
409
+ export type AuthMode =
410
+ | 'apiKey'
411
+ | 'iam'
412
+ | 'oidc'
413
+ | 'userPool'
414
+ | 'lambda'
415
+ | 'none';
416
+
417
+ type LogicalFilters<Model extends Record<any, any>> = {
418
+ and?: ModelFilter<Model> | ModelFilter<Model>[];
419
+ or?: ModelFilter<Model> | ModelFilter<Model>[];
420
+ not?: ModelFilter<Model>;
421
+ };
422
+
423
+ /**
424
+ * Filter options that can be used on fields where size checks are supported.
425
+ */
426
+ type SizeFilter = {
427
+ between?: [number, number];
428
+ eq?: number;
429
+ ge?: number;
430
+ gt?: number;
431
+ le?: number;
432
+ lt?: number;
433
+ ne?: number;
434
+ };
435
+
436
+ /**
437
+ * Not actually sure if/how customer can pass this through as variables yet.
438
+ * Leaving it out for now:
439
+ *
440
+ * attributeType: "binary" | "binarySet" | "bool" | "list" | "map" | "number" | "numberSet" | "string" | "stringSet" | "_null"
441
+ */
442
+
443
+ /**
444
+ * Filters options that can be used on string-like fields.
445
+ */
446
+ type StringFilter = {
447
+ attributeExists?: boolean;
448
+ beginsWith?: string;
449
+ between?: [string, string];
450
+ contains?: string;
451
+ eq?: string;
452
+ ge?: string;
453
+ gt?: string;
454
+ le?: string;
455
+ lt?: string;
456
+ ne?: string;
457
+ notContains?: string;
458
+ size?: SizeFilter;
459
+ };
460
+
461
+ type NumericFilter = {
462
+ attributeExists?: boolean;
463
+ between?: [number, number];
464
+ eq?: number;
465
+ ge?: number;
466
+ gt?: number;
467
+ le?: number;
468
+ lt?: number;
469
+ ne?: number;
470
+ };
471
+
472
+ type BooleanFilters = {
473
+ attributeExists?: boolean;
474
+ eq?: boolean;
475
+ ne?: boolean;
476
+ };
477
+
478
+ type ModelFilter<Model extends Record<any, any>> = LogicalFilters<Model> & {
479
+ [K in keyof Model as Model[K] extends LazyLoader<any, any>
480
+ ? never
481
+ : K]?: Model[K] extends boolean
482
+ ? BooleanFilters
483
+ : Model[K] extends number
484
+ ? NumericFilter
485
+ : StringFilter;
486
+ };
487
+
488
+ export type ModelSortDirection = 'ASC' | 'DESC';
489
+
490
+ type ModelMetaShape = {
491
+ secondaryIndexes: SecondaryIndexIrShape[];
492
+ identifier: string;
493
+ };
494
+
495
+ // TODO: remove export. added for debugging.
496
+ export type ModelTypesClient<
497
+ Model extends Record<string, unknown>,
498
+ ModelMeta extends ModelMetaShape,
499
+ FlatModel extends Record<string, unknown> = ResolvedModel<Model>,
500
+ > = IndexQueryMethodsFromIR<ModelMeta['secondaryIndexes'], Model> & {
501
+ create: (
502
+ model: Prettify<CreateModelInput<Model, ModelMeta>>,
503
+ options?: {
504
+ authMode?: AuthMode;
505
+ authToken?: string;
506
+ headers?: CustomHeaders;
507
+ },
508
+ ) => SingularReturnValue<Model>;
509
+ update: (
510
+ model: Prettify<ModelIdentifier<ModelMeta> & Partial<MutationInput<Model>>>,
511
+ options?: {
512
+ authMode?: AuthMode;
513
+ authToken?: string;
514
+ headers?: CustomHeaders;
515
+ },
516
+ ) => SingularReturnValue<Model>;
517
+ delete: (
518
+ identifier: ModelIdentifier<ModelMeta>,
519
+ options?: {
520
+ authMode?: AuthMode;
521
+ authToken?: string;
522
+ headers?: CustomHeaders;
523
+ },
524
+ ) => SingularReturnValue<Model>;
525
+ get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
526
+ identifier: ModelIdentifier<ModelMeta>,
527
+ options?: {
528
+ selectionSet?: SelectionSet;
529
+ authMode?: AuthMode;
530
+ authToken?: string;
531
+ headers?: CustomHeaders;
532
+ },
533
+ ): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
534
+ list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
535
+ options?: Partial<ModelIdentifier<ModelMeta>> & {
536
+ filter?: ModelFilter<Model>;
537
+ sortDirection?: ModelSortDirection;
538
+ limit?: number;
539
+ nextToken?: string | null;
540
+ selectionSet?: SelectionSet;
541
+ authMode?: AuthMode;
542
+ authToken?: string;
543
+ headers?: CustomHeaders;
544
+ },
545
+ ): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
546
+ onCreate<
547
+ SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
548
+ >(options?: {
549
+ filter?: ModelFilter<Model>;
550
+ selectionSet?: SelectionSet;
551
+ authMode?: AuthMode;
552
+ authToken?: string;
553
+ headers?: CustomHeaders;
554
+ }): ObservedReturnValue<
555
+ Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
556
+ >;
557
+ onUpdate<
558
+ SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
559
+ >(options?: {
560
+ filter?: ModelFilter<Model>;
561
+ selectionSet?: SelectionSet;
562
+ authMode?: AuthMode;
563
+ authToken?: string;
564
+ headers?: CustomHeaders;
565
+ }): ObservedReturnValue<
566
+ Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
567
+ >;
568
+ onDelete<
569
+ SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
570
+ >(options?: {
571
+ filter?: ModelFilter<Model>;
572
+ selectionSet?: SelectionSet;
573
+ authMode?: AuthMode;
574
+ authToken?: string;
575
+ headers?: CustomHeaders;
576
+ }): ObservedReturnValue<
577
+ Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
578
+ >;
579
+ observeQuery<
580
+ SelectionSet extends ModelPath<FlatModel>[] = never[],
581
+ >(options?: {
582
+ filter?: ModelFilter<Model>;
583
+ selectionSet?: SelectionSet;
584
+ authMode?: AuthMode;
585
+ authToken?: string;
586
+ }): ObserveQueryReturnValue<
587
+ Prettify<ReturnValue<Model, FlatModel, SelectionSet>>
588
+ >;
589
+ };
590
+
591
+ type ModelTypesSSRCookies<
592
+ Model extends Record<string, unknown>,
593
+ ModelMeta extends ModelMetaShape,
594
+ FlatModel extends Record<string, unknown> = ResolvedModel<Model>,
595
+ > = IndexQueryMethodsFromIR<ModelMeta['secondaryIndexes'], Model> & {
596
+ create: (
597
+ model: Prettify<CreateModelInput<Model, ModelMeta>>,
598
+ options?: {
599
+ authMode?: AuthMode;
600
+ authToken?: string;
601
+ headers?: CustomHeaders;
602
+ },
603
+ ) => SingularReturnValue<Model>;
604
+ update: (
605
+ model: Prettify<ModelIdentifier<ModelMeta> & Partial<MutationInput<Model>>>,
606
+ options?: {
607
+ authMode?: AuthMode;
608
+ authToken?: string;
609
+ headers?: CustomHeaders;
610
+ },
611
+ ) => SingularReturnValue<Model>;
612
+ delete: (
613
+ identifier: ModelIdentifier<ModelMeta>,
614
+ options?: {
615
+ authMode?: AuthMode;
616
+ authToken?: string;
617
+ headers?: CustomHeaders;
618
+ },
619
+ ) => SingularReturnValue<Model>;
620
+ get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
621
+ identifier: ModelIdentifier<ModelMeta>,
622
+ options?: {
623
+ selectionSet?: SelectionSet;
624
+ authMode?: AuthMode;
625
+ authToken?: string;
626
+ headers?: CustomHeaders;
627
+ },
628
+ ): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
629
+ list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
630
+ options?: Partial<ModelIdentifier<ModelMeta>> & {
631
+ filter?: ModelFilter<Model>;
632
+ sortDirection?: ModelSortDirection;
633
+ limit?: number;
634
+ nextToken?: string | null;
635
+ selectionSet?: SelectionSet;
636
+ authMode?: AuthMode;
637
+ authToken?: string;
638
+ headers?: CustomHeaders;
639
+ },
640
+ ): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
641
+ };
642
+
643
+ type ModelTypesSSRRequest<
644
+ Model extends Record<string, unknown>,
645
+ ModelMeta extends ModelMetaShape,
646
+ FlatModel extends Record<string, unknown> = ResolvedModel<Model>,
647
+ > = IndexQueryMethodsFromIR<ModelMeta['secondaryIndexes'], Model> & {
648
+ create: (
649
+ // TODO: actual type
650
+ contextSpec: any,
651
+ model: Prettify<CreateModelInput<Model, ModelMeta>>,
652
+ options?: {
653
+ authMode?: AuthMode;
654
+ authToken?: string;
655
+ headers?: CustomHeaders;
656
+ },
657
+ ) => SingularReturnValue<Model>;
658
+ update: (
659
+ contextSpec: any,
660
+ model: Prettify<ModelIdentifier<ModelMeta> & Partial<MutationInput<Model>>>,
661
+ options?: {
662
+ authMode?: AuthMode;
663
+ authToken?: string;
664
+ headers?: CustomHeaders;
665
+ },
666
+ ) => SingularReturnValue<Model>;
667
+ delete: (
668
+ contextSpec: any,
669
+ identifier: ModelIdentifier<ModelMeta>,
670
+ options?: {
671
+ authMode?: AuthMode;
672
+ authToken?: string;
673
+ headers?: CustomHeaders;
674
+ },
675
+ ) => SingularReturnValue<Model>;
676
+ get<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
677
+ contextSpec: any,
678
+ identifier: ModelIdentifier<ModelMeta>,
679
+ options?: {
680
+ selectionSet?: SelectionSet;
681
+ authMode?: AuthMode;
682
+ authToken?: string;
683
+ headers?: CustomHeaders;
684
+ },
685
+ ): SingularReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
686
+ list<SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[]>(
687
+ contextSpec: any,
688
+ options?: Partial<ModelIdentifier<ModelMeta>> & {
689
+ filter?: ModelFilter<Model>;
690
+ sortDirection?: ModelSortDirection;
691
+ limit?: number;
692
+ nextToken?: string | null;
693
+ selectionSet?: SelectionSet;
694
+ authMode?: AuthMode;
695
+ authToken?: string;
696
+ headers?: CustomHeaders;
697
+ },
698
+ ): ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
699
+ };
700
+
701
+ type ContextType = 'CLIENT' | 'COOKIES' | 'REQUEST';
702
+
703
+ export type ModelTypes<
704
+ Schema extends Record<any, any>,
705
+ Context extends ContextType = 'CLIENT',
706
+ ModelMeta extends Record<any, any> = ExtractModelMeta<Schema>,
707
+ > = {
708
+ [ModelName in Exclude<
709
+ keyof Schema,
710
+ keyof CustomOperations<
711
+ Schema,
712
+ 'Mutation' | 'Query' | 'Subscription',
713
+ Context,
714
+ ModelMeta
715
+ >
716
+ >]: ModelName extends string
717
+ ? Schema[ModelName] extends Record<string, unknown>
718
+ ? Context extends 'CLIENT'
719
+ ? ModelTypesClient<Schema[ModelName], ModelMeta[ModelName]>
720
+ : Context extends 'COOKIES'
721
+ ? ModelTypesSSRCookies<Schema[ModelName], ModelMeta[ModelName]>
722
+ : Context extends 'REQUEST'
723
+ ? ModelTypesSSRRequest<Schema[ModelName], ModelMeta[ModelName]>
724
+ : never
725
+ : never
726
+ : never;
727
+ };
728
+
729
+ export type CustomQueries<
730
+ Schema extends Record<any, any>,
731
+ Context extends ContextType = 'CLIENT',
732
+ ModelMeta extends Record<any, any> = ExtractModelMeta<Schema>,
733
+ > = CustomOperations<Schema, 'Query', Context, ModelMeta>;
734
+
735
+ export type CustomMutations<
736
+ Schema extends Record<any, any>,
737
+ Context extends ContextType = 'CLIENT',
738
+ ModelMeta extends Record<any, any> = ExtractModelMeta<Schema>,
739
+ > = CustomOperations<Schema, 'Mutation', Context, ModelMeta>;
740
+
741
+ export type CustomSubscriptions<
742
+ Schema extends Record<any, any>,
743
+ Context extends ContextType = 'CLIENT',
744
+ ModelMeta extends Record<any, any> = ExtractModelMeta<Schema>,
745
+ > = CustomOperations<Schema, 'Subscription', Context, ModelMeta>;
746
+
747
+ type CustomOperationMethodOptions = {
748
+ // selectionSet?: SelectionSet;
749
+ authMode?: AuthMode;
750
+ authToken?: string;
751
+ headers?: CustomHeaders;
752
+ };
753
+
754
+ /**
755
+ * Generates Custom Operations function params based on whether .arguments() were specified in the schema builder
756
+ */
757
+ type CustomOperationFnParams<Args extends Record<string, unknown> | never> = [
758
+ Args,
759
+ ] extends [never]
760
+ ? [CustomOperationMethodOptions?]
761
+ : [Args, CustomOperationMethodOptions?];
762
+
763
+ export type CustomOperations<
764
+ Schema extends Record<any, any>,
765
+ OperationType extends 'Query' | 'Mutation' | 'Subscription',
766
+ Context extends ContextType = 'CLIENT',
767
+ ModelMeta extends Record<any, any> = ExtractModelMeta<Schema>,
768
+ > = {
769
+ [OpName in keyof ModelMeta['customOperations'] as ModelMeta['customOperations'][OpName]['typeName'] extends OperationType
770
+ ? OpName
771
+ : never]: {
772
+ CLIENT: (
773
+ ...params: CustomOperationFnParams<
774
+ ModelMeta['customOperations'][OpName]['arguments']
775
+ >
776
+ ) => // we only generate subscriptions on the clientside; so this isn't applied to COOKIES | REQUEST
777
+ ModelMeta['customOperations'][OpName]['typeName'] extends 'Subscription'
778
+ ? ObservedReturnValue<ModelMeta['customOperations'][OpName]['returnType']>
779
+ : SingularReturnValue<
780
+ ModelMeta['customOperations'][OpName]['returnType']
781
+ >;
782
+ COOKIES: (
783
+ ...params: CustomOperationFnParams<
784
+ ModelMeta['customOperations'][OpName]['arguments']
785
+ >
786
+ ) => SingularReturnValue<
787
+ ModelMeta['customOperations'][OpName]['returnType']
788
+ >;
789
+ REQUEST: (
790
+ contextSpec: any,
791
+ ...params: CustomOperationFnParams<
792
+ ModelMeta['customOperations'][OpName]['arguments']
793
+ >
794
+ ) => SingularReturnValue<
795
+ ModelMeta['customOperations'][OpName]['returnType']
796
+ >;
797
+ }[Context];
798
+ };
799
+
800
+ /**
801
+ * The utility type that is used to infer the type (interface) of the generated
802
+ * `client.enums` property.
803
+ *
804
+ * @example
805
+ * // The schema:
806
+ * {
807
+ * TodoStatus: a.enum(['Planned' | 'InProgress' | 'Completed']),
808
+ * }
809
+ *
810
+ * // The inferred interface of the `client.enums`:
811
+ * {
812
+ * TodoStatus: {
813
+ * values: () => Array<'Planned' | 'InProgress' | 'Completed'>;
814
+ * }
815
+ * }
816
+ */
817
+ export type EnumTypes<
818
+ Schema extends Record<any, any>,
819
+ ModelMeta extends Record<any, any> = ExtractModelMeta<Schema>,
820
+ > = {
821
+ [EnumName in keyof ModelMeta['enums']]: {
822
+ values: () => Array<ModelMeta['enums'][EnumName]>;
823
+ };
824
+ };
825
+
826
+ /**
827
+ * Request options that are passed to custom header functions.
828
+ * `method` and `headers` are not included in custom header functions passed to
829
+ * subscriptions.
830
+ */
831
+ export type RequestOptions = {
832
+ url: string;
833
+ queryString: string;
834
+ method?: string;
835
+ };
836
+
837
+ /**
838
+ * Custom headers that can be passed either to the client or to individual
839
+ * model operations, either as a static object or a function that returns a
840
+ * promise.
841
+ */
842
+ export type CustomHeaders =
843
+ | Record<string, string>
844
+ | ((requestOptions?: RequestOptions) => Promise<Record<string, string>>);
845
+
846
+ /**
847
+ * SecondaryIndex index types and query methods
848
+ */
849
+ export type SecondaryIndexIrShape = {
850
+ queryField: string;
851
+ pk: { [key: string]: string | number };
852
+ sk: { [key: string]: string | number };
853
+ };
854
+
855
+ type IndexQueryMethodsFromIR<
856
+ SecondaryIdxTuple extends SecondaryIndexIrShape[],
857
+ Model extends Record<string, unknown>,
858
+ Res = unknown, // defaulting `unknown` because it gets absorbed in an intersection, e.g. `{a: 1} & unknown` => `{a: 1}`
859
+ > = SecondaryIdxTuple extends [
860
+ infer A extends SecondaryIndexIrShape,
861
+ ...infer B extends SecondaryIndexIrShape[],
862
+ ]
863
+ ? IndexQueryMethodsFromIR<B, Model, IndexQueryMethodSignature<A, Model> & Res>
864
+ : Res;
865
+
866
+ type IndexQueryMethodSignature<
867
+ Idx extends SecondaryIndexIrShape,
868
+ Model extends Record<string, unknown>,
869
+ > = {
870
+ [K in Idx['queryField'] & string]: <
871
+ FlatModel extends Record<string, unknown> = ResolvedModel<Model>,
872
+ SelectionSet extends ReadonlyArray<ModelPath<FlatModel>> = never[],
873
+ >(
874
+ input: Idx['pk'] & {
875
+ [SKField in keyof Idx['sk']]+?: string extends Idx['sk'][SKField]
876
+ ? StringFilter
877
+ : NumericFilter;
878
+ },
879
+ options?: {
880
+ filter?: ModelFilter<Model>;
881
+ sortDirection?: ModelSortDirection;
882
+ limit?: number;
883
+ nextToken?: string | null;
884
+ selectionSet?: SelectionSet;
885
+ authMode?: AuthMode;
886
+ authToken?: string;
887
+ headers?: CustomHeaders;
888
+ },
889
+ ) => ListReturnValue<Prettify<ReturnValue<Model, FlatModel, SelectionSet>>>;
890
+ };
891
+
892
+ type FilteredKeys<T> = {
893
+ [P in keyof T]: T[P] extends never ? never : P;
894
+ }[keyof T];
895
+
896
+ type ExcludeNeverFields<O> = {
897
+ [K in FilteredKeys<O>]: O[K];
898
+ };
899
+
900
+ export type ClientExtensions<T extends Record<any, any> = never> =
901
+ ExcludeNeverFields<{
902
+ models: ModelTypes<T, 'CLIENT'>;
903
+ enums: EnumTypes<T>;
904
+ queries: CustomQueries<T, 'CLIENT'>;
905
+ mutations: CustomMutations<T, 'CLIENT'>;
906
+ subscriptions: CustomSubscriptions<T, 'CLIENT'>;
907
+ }>;
908
+
909
+ export type ClientExtensionsSSRRequest<T extends Record<any, any> = never> =
910
+ ExcludeNeverFields<{
911
+ models: ModelTypes<T, 'REQUEST'>;
912
+ enums: EnumTypes<T>;
913
+ queries: CustomQueries<T, 'REQUEST'>;
914
+ mutations: CustomMutations<T, 'REQUEST'>;
915
+ }>;
916
+
917
+ export type ClientExtensionsSSRCookies<T extends Record<any, any> = never> =
918
+ ExcludeNeverFields<{
919
+ models: ModelTypes<T, 'COOKIES'>;
920
+ enums: EnumTypes<T>;
921
+ queries: CustomQueries<T, 'COOKIES'>;
922
+ mutations: CustomMutations<T, 'COOKIES'>;
923
+ }>;