@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,345 @@
1
+ import type {
2
+ SetTypeSubArg,
3
+ SecondaryIndexIrShape,
4
+ } from '@aws-amplify/data-schema-types';
5
+ import { Brand, brand } from './util';
6
+ import { ModelField, InternalField } from './ModelField';
7
+ import type {
8
+ ModelRelationalField,
9
+ InternalRelationalField,
10
+ ModelRelationalFieldParamShape,
11
+ } from './ModelRelationalField';
12
+ import { AllowModifier, Authorization, allow } from './Authorization';
13
+ import { RefType } from './RefType';
14
+ import { EnumType, EnumTypeParamShape } from './EnumType';
15
+ import { CustomType, CustomTypeParamShape } from './CustomType';
16
+ import {
17
+ ModelIndexType,
18
+ InternalModelIndexType,
19
+ modelIndex,
20
+ } from './ModelIndex';
21
+ import { SecondaryIndexToIR } from './MappedTypes/MapSecondaryIndexes';
22
+
23
+ const brandName = 'modelType';
24
+
25
+ type ModelFields = Record<
26
+ string,
27
+ | ModelField<any, any, any>
28
+ | ModelRelationalField<any, string, any, any>
29
+ | RefType<any, any, any>
30
+ | EnumType<EnumTypeParamShape>
31
+ | CustomType<CustomTypeParamShape>
32
+ >;
33
+
34
+ type InternalModelFields = Record<
35
+ string,
36
+ InternalField | InternalRelationalField
37
+ >;
38
+
39
+ type ModelData = {
40
+ fields: ModelFields;
41
+ identifier: string[];
42
+ secondaryIndexes: ReadonlyArray<ModelIndexType<any, any, any, any, any>>;
43
+ authorization: Authorization<any, any, any>[];
44
+ };
45
+
46
+ type InternalModelData = ModelData & {
47
+ fields: InternalModelFields;
48
+ identifier: string[];
49
+ secondaryIndexes: ReadonlyArray<InternalModelIndexType>;
50
+ authorization: Authorization<any, any, any>[];
51
+ };
52
+
53
+ export type ModelTypeParamShape = {
54
+ fields: ModelFields;
55
+ identifier: string[];
56
+ secondaryIndexes: ReadonlyArray<SecondaryIndexIrShape>;
57
+ authorization: Authorization<any, any, any>[];
58
+ };
59
+
60
+ // Extract field names that can be used to define a secondary index PK or SK
61
+ // i.e., nullable string or nullable number fields
62
+ type SecondaryIndexFields<T extends Record<string, unknown>> = keyof {
63
+ [Field in keyof T as NonNullable<T[Field]> extends string | number
64
+ ? Field
65
+ : never]: T[Field];
66
+ } &
67
+ string;
68
+
69
+ type ExtractType<T extends ModelTypeParamShape> = {
70
+ [FieldProp in keyof T['fields'] as T['fields'][FieldProp] extends ModelField<
71
+ any,
72
+ any,
73
+ any
74
+ >
75
+ ? FieldProp
76
+ : never]: T['fields'][FieldProp] extends ModelField<infer R, any, any>
77
+ ? R
78
+ : never;
79
+ };
80
+
81
+ type GetRequiredFields<T> = {
82
+ [FieldProp in keyof T as T[FieldProp] extends NonNullable<T[FieldProp]>
83
+ ? FieldProp
84
+ : never]: T[FieldProp];
85
+ };
86
+
87
+ type IdentifierMap<T extends ModelTypeParamShape> = GetRequiredFields<
88
+ ExtractType<T>
89
+ >;
90
+
91
+ // extracts model fields that CAN BE used as identifiers (scalar, non-nullable fields)
92
+ // TODO: make this also filter out all non-scalars e.g., model fields and custom types
93
+ type IdentifierFields<T extends ModelTypeParamShape> = keyof IdentifierMap<T> &
94
+ string;
95
+
96
+ type IdentifierType<
97
+ T extends ModelTypeParamShape,
98
+ Fields extends string = IdentifierFields<T>,
99
+ > = Array<Fields>;
100
+
101
+ /**
102
+ * For a given ModelTypeParamShape, produces a map of Authorization rules
103
+ * that would *conflict* with the given type.
104
+ *
105
+ * E.g.,
106
+ *
107
+ * ```
108
+ * const test = {
109
+ * fields: {
110
+ * title: fields.string(),
111
+ * otherfield: fields.string().array(),
112
+ * numfield: fields.integer(),
113
+ * },
114
+ * identifier: [],
115
+ * authorization: [],
116
+ * };
117
+ *
118
+ * ConflictingAuthRulesMap<typeof test> === {
119
+ * title: Authorization<"title", true>;
120
+ * otherfield: Authorization<"otherfield", false>;
121
+ * numfield: Authorization<"numfield", true> | Authorization<"numfield", false>;
122
+ * }
123
+ * ```
124
+ */
125
+ type ConflictingAuthRulesMap<T extends ModelTypeParamShape> = {
126
+ [K in keyof ExtractType<T>]: K extends string
127
+ ? string extends ExtractType<T>[K]
128
+ ? Authorization<any, K, true>
129
+ : string[] extends ExtractType<T>[K]
130
+ ? Authorization<any, K, false>
131
+ : Authorization<any, K, true> | Authorization<any, K, false>
132
+ : never;
133
+ };
134
+
135
+ export type AddRelationshipFieldsToModelTypeFields<
136
+ Model,
137
+ RelationshipFields extends Record<
138
+ string,
139
+ ModelRelationalField<ModelRelationalFieldParamShape, string, any, any>
140
+ >,
141
+ > =
142
+ Model extends ModelType<
143
+ infer ModelParam extends ModelTypeParamShape,
144
+ infer HiddenKeys
145
+ >
146
+ ? ModelType<
147
+ SetTypeSubArg<
148
+ ModelParam,
149
+ 'fields',
150
+ ModelParam['fields'] & RelationshipFields
151
+ >,
152
+ HiddenKeys
153
+ >
154
+ : never;
155
+
156
+ /**
157
+ * For a given ModelTypeParamShape, produces a union of Authorization rules
158
+ * that would *conflict* with the given type.
159
+ *
160
+ * E.g.,
161
+ *
162
+ * ```
163
+ * const test = {
164
+ * fields: {
165
+ * title: fields.string(),
166
+ * otherfield: fields.string().array(),
167
+ * numfield: fields.integer(),
168
+ * },
169
+ * identifier: [],
170
+ * authorization: [],
171
+ * };
172
+ *
173
+ * ConflictingAuthRules<typeof test> ===
174
+ * Authorization<"title", true>
175
+ * | Authorization<"otherfield", false>
176
+ * | Authorization<"numfield", true> | Authorization<"numfield", false>
177
+ * ;
178
+ * ```
179
+ */
180
+ type _ConflictingAuthRules<T extends ModelTypeParamShape> =
181
+ ConflictingAuthRulesMap<T>[keyof ConflictingAuthRulesMap<T>];
182
+
183
+ export type ModelType<
184
+ T extends ModelTypeParamShape,
185
+ K extends keyof ModelType<T> = never,
186
+ > = Omit<
187
+ {
188
+ identifier<ID extends IdentifierType<T> = []>(
189
+ identifier: ID,
190
+ ): ModelType<SetTypeSubArg<T, 'identifier', ID>, K | 'identifier'>;
191
+ secondaryIndexes<
192
+ const SecondaryIndexPKPool extends string = SecondaryIndexFields<
193
+ ExtractType<T>
194
+ >,
195
+ const Indexes extends readonly ModelIndexType<
196
+ string,
197
+ string,
198
+ unknown,
199
+ readonly [],
200
+ any
201
+ >[] = readonly [],
202
+ const IndexesIR extends readonly any[] = SecondaryIndexToIR<
203
+ Indexes,
204
+ ExtractType<T>
205
+ >,
206
+ >(
207
+ callback: (
208
+ index: <PK extends SecondaryIndexPKPool>(
209
+ pk: PK,
210
+ ) => ModelIndexType<
211
+ SecondaryIndexPKPool,
212
+ PK,
213
+ ReadonlyArray<Exclude<SecondaryIndexPKPool, PK>>
214
+ >,
215
+ ) => Indexes,
216
+ ): ModelType<
217
+ SetTypeSubArg<T, 'secondaryIndexes', IndexesIR>,
218
+ K | 'secondaryIndexes'
219
+ >;
220
+ authorization<AuthRuleType extends Authorization<any, any, any>>(
221
+ callback: (allow: Omit<AllowModifier, 'resource'>) => AuthRuleType | AuthRuleType[],
222
+ ): ModelType<
223
+ SetTypeSubArg<T, 'authorization', AuthRuleType[]>,
224
+ K | 'authorization'
225
+ >;
226
+ },
227
+ K
228
+ > &
229
+ Brand<typeof brandName>;
230
+
231
+ /**
232
+ * External representation of Model Type that exposes the `addRelationships` modifier.
233
+ * Used on the complete schema object.
234
+ */
235
+ export type SchemaModelType<
236
+ T extends ModelType<ModelTypeParamShape, never | 'identifier'> = ModelType<
237
+ ModelTypeParamShape,
238
+ never | 'identifier'
239
+ >,
240
+ ModelName extends string = string,
241
+ IsRDS extends boolean = false,
242
+ > = IsRDS extends true
243
+ ? T & {
244
+ addRelationships<
245
+ Param extends Record<
246
+ string,
247
+ ModelRelationalField<any, string, any, any>
248
+ > = Record<never, never>,
249
+ >(
250
+ relationships: Param,
251
+ ): Record<ModelName, Param>;
252
+ fields: T extends ModelType<infer R extends ModelTypeParamShape, any>
253
+ ? R['fields']
254
+ : never;
255
+ }
256
+ : T;
257
+
258
+ /**
259
+ * Internal representation of Model Type that exposes the `data` property.
260
+ * Used at buildtime.
261
+ */
262
+ export type InternalModel = SchemaModelType<
263
+ ModelType<ModelTypeParamShape>,
264
+ string,
265
+ true
266
+ > & {
267
+ data: InternalModelData;
268
+ };
269
+
270
+ function _model<T extends ModelTypeParamShape>(fields: T['fields']) {
271
+ const data: ModelData = {
272
+ fields,
273
+ identifier: ['id'],
274
+ secondaryIndexes: [],
275
+ authorization: [],
276
+ };
277
+
278
+ const builder = {
279
+ identifier(identifier) {
280
+ data.identifier = identifier;
281
+
282
+ return this;
283
+ },
284
+ secondaryIndexes(callback) {
285
+ data.secondaryIndexes = callback(modelIndex);
286
+
287
+ return this;
288
+ },
289
+ authorization(callback) {
290
+ const { resource: _, ...rest } = allow;
291
+ const rules = callback(rest);
292
+ data.authorization = Array.isArray(rules) ? rules : [rules];
293
+
294
+ return this;
295
+ },
296
+ ...brand(brandName),
297
+ } as ModelType<T>;
298
+
299
+ return {
300
+ ...builder,
301
+ data,
302
+ addRelationships(relationships) {
303
+ data.fields = { ...data.fields, ...relationships };
304
+ },
305
+ fields: data.fields,
306
+ } as InternalModel as ModelType<T>;
307
+ }
308
+
309
+ /**
310
+ * Model Type type guard
311
+ * @param modelType - api-next ModelType
312
+ * @returns true if the given value is a ModelSchema
313
+ */
314
+ export const isSchemaModelType = (
315
+ modelType: any | SchemaModelType,
316
+ ): modelType is SchemaModelType => {
317
+ const internalType = modelType as InternalModel;
318
+ return (
319
+ typeof internalType === 'object' &&
320
+ internalType.data !== undefined &&
321
+ internalType.data.fields !== undefined &&
322
+ internalType.data.authorization !== undefined &&
323
+ internalType.data.identifier !== undefined &&
324
+ internalType.data.secondaryIndexes !== undefined &&
325
+ typeof internalType.addRelationships === 'function'
326
+ );
327
+ };
328
+
329
+ /**
330
+ * A data model that creates a matching Amazon DynamoDB table and provides create, read (list and get), update,
331
+ * delete, and subscription APIs.
332
+ *
333
+ * @param fields database table fields. Supports scalar types and relationship types.
334
+ * @returns a data model definition
335
+ */
336
+ export function model<T extends ModelFields>(
337
+ fields: T,
338
+ ): ModelType<{
339
+ fields: T;
340
+ identifier: Array<'id'>;
341
+ secondaryIndexes: [];
342
+ authorization: [];
343
+ }> {
344
+ return _model(fields);
345
+ }
package/src/RefType.ts ADDED
@@ -0,0 +1,139 @@
1
+ import { SetTypeSubArg } from '@aws-amplify/data-schema-types';
2
+ import { Brand } from './util';
3
+ import { AllowModifier, Authorization, allow } from './Authorization';
4
+ import { __auth } from './ModelField';
5
+
6
+ const brandName = 'ref';
7
+
8
+ type RefTypeData = {
9
+ type: 'ref';
10
+ link: string;
11
+ valueRequired: boolean;
12
+ array: boolean;
13
+ arrayRequired: boolean;
14
+ mutationOperations: MutationOperations[];
15
+ authorization: Authorization<any, any, any>[];
16
+ };
17
+
18
+ export type RefTypeParamShape = {
19
+ type: 'ref';
20
+ link: string;
21
+ valueRequired: boolean;
22
+ array: boolean;
23
+ arrayRequired: boolean;
24
+ authorization: Authorization<any, any, any>[];
25
+ };
26
+
27
+ type MutationOperations = 'create' | 'update' | 'delete';
28
+
29
+ export type RefType<
30
+ T extends RefTypeParamShape,
31
+ K extends keyof RefType<T> = never,
32
+ Auth = undefined,
33
+ // Branding the exported type allows us to detect it
34
+ // nominally in our mapped types, ignoring structural overlap with other types
35
+ > = Omit<
36
+ {
37
+ /**
38
+ * Marks a field as required.
39
+ */
40
+ required(): RefType<
41
+ SetTypeSubArg<
42
+ T,
43
+ T['array'] extends true ? 'arrayRequired' : 'valueRequired',
44
+ true
45
+ >,
46
+ K | 'required'
47
+ >;
48
+ /**
49
+ * Marks a field as an array of the specified ref type.
50
+ */
51
+ array(): RefType<
52
+ SetTypeSubArg<T, 'array', true>,
53
+ Exclude<K, 'required'> | 'array'
54
+ >;
55
+ /**
56
+ * Configures field-level authorization rules. Pass in an array of authorizations `(a.allow.____)` to mix and match
57
+ * multiple authorization rules for this field.
58
+ */
59
+ authorization<AuthRuleType extends Authorization<any, any, any>>(
60
+ callback: (allow: AllowModifier) => AuthRuleType | AuthRuleType[],
61
+ ): RefType<T, K | 'authorization', AuthRuleType>;
62
+
63
+ mutations(operations: MutationOperations[]): RefType<T, K | 'mutations'>;
64
+ },
65
+ K
66
+ > & {
67
+ // This is a lie. This property is never set at runtime. It's just used to smuggle auth types through.
68
+ [__auth]?: Auth;
69
+ } & Brand<typeof brandName>;
70
+
71
+ function brandedBuilder<T extends RefTypeParamShape>(
72
+ builder: Record<keyof RefType<T> & string, any>,
73
+ ): RefType<T> {
74
+ return builder as RefType<T>;
75
+ }
76
+
77
+ /**
78
+ * Internal representation of Ref that exposes the `data` property.
79
+ * Used at buildtime.
80
+ */
81
+ export type InternalRef = RefType<RefTypeParamShape> & {
82
+ data: RefTypeData;
83
+ };
84
+
85
+ function _ref<T extends RefTypeParamShape>(link: T['link']) {
86
+ const data: RefTypeData = {
87
+ type: 'ref',
88
+ link,
89
+ valueRequired: false,
90
+ array: false,
91
+ arrayRequired: false,
92
+ mutationOperations: [],
93
+ authorization: [],
94
+ };
95
+
96
+ const builder: RefType<T> = brandedBuilder({
97
+ required() {
98
+ if (data.array) {
99
+ data.arrayRequired = true;
100
+ } else {
101
+ data.valueRequired = true;
102
+ }
103
+
104
+ return this;
105
+ },
106
+ array() {
107
+ data.array = true;
108
+
109
+ return this;
110
+ },
111
+ authorization<AuthRuleType extends Authorization<any, any, any>>(
112
+ callback: (allow: AllowModifier) => AuthRuleType | AuthRuleType[],
113
+ ) {
114
+ const rules = callback(allow);
115
+ data.authorization = Array.isArray(rules) ? rules : [rules];
116
+
117
+ return this;
118
+ },
119
+ mutations(operations: MutationOperations[]) {
120
+ data.mutationOperations = operations;
121
+ return this;
122
+ },
123
+ });
124
+
125
+ return { ...builder, data } as InternalRef as RefType<T>;
126
+ }
127
+
128
+ type RefTypeArgFactory<Link extends string> = {
129
+ type: 'ref';
130
+ link: Link;
131
+ valueRequired: false;
132
+ array: false;
133
+ arrayRequired: false;
134
+ authorization: [];
135
+ };
136
+
137
+ export function ref<Value extends string, T extends Value>(link: T) {
138
+ return _ref<RefTypeArgFactory<T>>(link);
139
+ }