@takeshape/schema 9.47.0 → 9.49.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 (448) hide show
  1. package/dist/content-schema-transform.d.ts +6 -6
  2. package/dist/content-schema-transform.d.ts.map +1 -1
  3. package/dist/create-input-schema.d.ts +2 -2
  4. package/dist/create-input-schema.d.ts.map +1 -1
  5. package/dist/flatten-templates.d.ts +2 -2
  6. package/dist/flatten-templates.d.ts.map +1 -1
  7. package/dist/get-is-leaf.d.ts +2 -2
  8. package/dist/get-is-leaf.d.ts.map +1 -1
  9. package/dist/interfaces.d.ts +6 -6
  10. package/dist/interfaces.d.ts.map +1 -1
  11. package/dist/layers/layers.d.ts +3 -3
  12. package/dist/layers/layers.d.ts.map +1 -1
  13. package/dist/layers/refs.d.ts +4 -4
  14. package/dist/layers/refs.d.ts.map +1 -1
  15. package/dist/migration/index.d.ts +43 -42
  16. package/dist/migration/index.d.ts.map +1 -1
  17. package/dist/migration/index.js +4 -1
  18. package/dist/migration/to/utils/v3.34.0-utils.d.ts +1 -0
  19. package/dist/migration/to/utils/v3.34.0-utils.d.ts.map +1 -0
  20. package/dist/migration/to/utils/v3.34.0-utils.js +1 -0
  21. package/dist/migration/to/v3.0.0.d.ts +2 -2
  22. package/dist/migration/to/v3.0.0.d.ts.map +1 -1
  23. package/dist/migration/to/v3.1.0.d.ts +2 -2
  24. package/dist/migration/to/v3.1.0.d.ts.map +1 -1
  25. package/dist/migration/to/v3.10.0.d.ts +2 -2
  26. package/dist/migration/to/v3.10.0.d.ts.map +1 -1
  27. package/dist/migration/to/v3.11.0.d.ts +2 -2
  28. package/dist/migration/to/v3.11.0.d.ts.map +1 -1
  29. package/dist/migration/to/v3.12.0.d.ts +2 -2
  30. package/dist/migration/to/v3.12.0.d.ts.map +1 -1
  31. package/dist/migration/to/v3.12.1.d.ts +2 -2
  32. package/dist/migration/to/v3.12.1.d.ts.map +1 -1
  33. package/dist/migration/to/v3.12.2.d.ts +2 -2
  34. package/dist/migration/to/v3.12.2.d.ts.map +1 -1
  35. package/dist/migration/to/v3.12.3.d.ts +2 -2
  36. package/dist/migration/to/v3.12.3.d.ts.map +1 -1
  37. package/dist/migration/to/v3.13.0.d.ts +2 -2
  38. package/dist/migration/to/v3.13.0.d.ts.map +1 -1
  39. package/dist/migration/to/v3.14.0.d.ts +2 -2
  40. package/dist/migration/to/v3.14.0.d.ts.map +1 -1
  41. package/dist/migration/to/v3.15.0.d.ts +2 -2
  42. package/dist/migration/to/v3.15.0.d.ts.map +1 -1
  43. package/dist/migration/to/v3.16.0.d.ts +2 -2
  44. package/dist/migration/to/v3.16.0.d.ts.map +1 -1
  45. package/dist/migration/to/v3.17.0.d.ts +2 -2
  46. package/dist/migration/to/v3.17.0.d.ts.map +1 -1
  47. package/dist/migration/to/v3.17.1.d.ts +2 -2
  48. package/dist/migration/to/v3.17.1.d.ts.map +1 -1
  49. package/dist/migration/to/v3.18.0.d.ts +2 -2
  50. package/dist/migration/to/v3.18.0.d.ts.map +1 -1
  51. package/dist/migration/to/v3.18.1.d.ts +2 -2
  52. package/dist/migration/to/v3.18.1.d.ts.map +1 -1
  53. package/dist/migration/to/v3.18.2.d.ts +2 -2
  54. package/dist/migration/to/v3.18.2.d.ts.map +1 -1
  55. package/dist/migration/to/v3.19.0.d.ts +2 -2
  56. package/dist/migration/to/v3.19.0.d.ts.map +1 -1
  57. package/dist/migration/to/v3.2.0.d.ts +2 -2
  58. package/dist/migration/to/v3.2.0.d.ts.map +1 -1
  59. package/dist/migration/to/v3.20.0.d.ts +2 -2
  60. package/dist/migration/to/v3.20.0.d.ts.map +1 -1
  61. package/dist/migration/to/v3.21.0.d.ts +2 -2
  62. package/dist/migration/to/v3.21.0.d.ts.map +1 -1
  63. package/dist/migration/to/v3.22.0.d.ts +2 -2
  64. package/dist/migration/to/v3.22.0.d.ts.map +1 -1
  65. package/dist/migration/to/v3.23.0.d.ts +2 -2
  66. package/dist/migration/to/v3.23.0.d.ts.map +1 -1
  67. package/dist/migration/to/v3.24.0.d.ts +2 -2
  68. package/dist/migration/to/v3.24.0.d.ts.map +1 -1
  69. package/dist/migration/to/v3.25.0.d.ts +2 -2
  70. package/dist/migration/to/v3.25.0.d.ts.map +1 -1
  71. package/dist/migration/to/v3.26.0.d.ts +2 -2
  72. package/dist/migration/to/v3.26.0.d.ts.map +1 -1
  73. package/dist/migration/to/v3.27.0.d.ts +2 -2
  74. package/dist/migration/to/v3.27.0.d.ts.map +1 -1
  75. package/dist/migration/to/v3.28.0.d.ts +2 -2
  76. package/dist/migration/to/v3.28.0.d.ts.map +1 -1
  77. package/dist/migration/to/v3.29.0.d.ts +2 -2
  78. package/dist/migration/to/v3.29.0.d.ts.map +1 -1
  79. package/dist/migration/to/v3.3.0.d.ts +2 -2
  80. package/dist/migration/to/v3.3.0.d.ts.map +1 -1
  81. package/dist/migration/to/v3.30.0.d.ts +2 -2
  82. package/dist/migration/to/v3.30.0.d.ts.map +1 -1
  83. package/dist/migration/to/v3.31.0.d.ts +2 -2
  84. package/dist/migration/to/v3.31.0.d.ts.map +1 -1
  85. package/dist/migration/to/v3.32.0.d.ts +2 -2
  86. package/dist/migration/to/v3.32.0.d.ts.map +1 -1
  87. package/dist/migration/to/v3.33.0.d.ts +2 -2
  88. package/dist/migration/to/v3.33.0.d.ts.map +1 -1
  89. package/dist/migration/to/v3.34.0.d.ts +4 -4
  90. package/dist/migration/to/v3.34.0.d.ts.map +1 -1
  91. package/dist/migration/to/v3.34.0.js +28 -6
  92. package/dist/migration/to/v3.35.0.d.ts +5 -0
  93. package/dist/migration/to/v3.35.0.d.ts.map +1 -0
  94. package/dist/migration/to/v3.35.0.js +18 -0
  95. package/dist/migration/to/v3.4.0.d.ts +2 -2
  96. package/dist/migration/to/v3.4.0.d.ts.map +1 -1
  97. package/dist/migration/to/v3.5.0.d.ts +2 -2
  98. package/dist/migration/to/v3.5.0.d.ts.map +1 -1
  99. package/dist/migration/to/v3.5.1.d.ts +2 -2
  100. package/dist/migration/to/v3.5.1.d.ts.map +1 -1
  101. package/dist/migration/to/v3.6.0.d.ts +2 -2
  102. package/dist/migration/to/v3.6.0.d.ts.map +1 -1
  103. package/dist/migration/to/v3.7.0.d.ts +2 -2
  104. package/dist/migration/to/v3.7.0.d.ts.map +1 -1
  105. package/dist/migration/to/v3.8.0.d.ts +2 -2
  106. package/dist/migration/to/v3.8.0.d.ts.map +1 -1
  107. package/dist/migration/to/v3.9.0.d.ts +2 -2
  108. package/dist/migration/to/v3.9.0.d.ts.map +1 -1
  109. package/dist/migration/types.d.ts +6 -6
  110. package/dist/migration/types.d.ts.map +1 -1
  111. package/dist/mocks.d.ts +5 -5
  112. package/dist/mocks.d.ts.map +1 -1
  113. package/dist/models/project-schema.d.ts +36 -0
  114. package/dist/models/project-schema.d.ts.map +1 -0
  115. package/dist/models/project-schema.js +132 -0
  116. package/dist/models/query.d.ts +18 -0
  117. package/dist/models/query.d.ts.map +1 -0
  118. package/dist/models/query.js +44 -0
  119. package/dist/models/service.d.ts +13 -0
  120. package/dist/models/service.d.ts.map +1 -0
  121. package/dist/models/service.js +34 -0
  122. package/dist/models/shape.d.ts +42 -0
  123. package/dist/models/shape.d.ts.map +1 -0
  124. package/dist/models/shape.js +116 -0
  125. package/dist/project-schema/index.d.ts +94 -91
  126. package/dist/project-schema/index.d.ts.map +1 -1
  127. package/dist/project-schema/index.js +154 -137
  128. package/dist/project-schema/latest.d.ts +145 -126
  129. package/dist/project-schema/latest.d.ts.map +1 -1
  130. package/dist/project-schema/migrate.d.ts +3 -3
  131. package/dist/project-schema/migrate.d.ts.map +1 -1
  132. package/dist/project-schema/migrate.js +49 -45
  133. package/dist/project-schema/v1.0.0.d.ts +13 -13
  134. package/dist/project-schema/v1.0.0.d.ts.map +1 -1
  135. package/dist/project-schema/v3.0.0.d.ts +23 -23
  136. package/dist/project-schema/v3.0.0.d.ts.map +1 -1
  137. package/dist/project-schema/v3.1.0.d.ts +35 -35
  138. package/dist/project-schema/v3.1.0.d.ts.map +1 -1
  139. package/dist/project-schema/v3.10.0.d.ts +104 -104
  140. package/dist/project-schema/v3.10.0.d.ts.map +1 -1
  141. package/dist/project-schema/v3.11.0.d.ts +104 -104
  142. package/dist/project-schema/v3.11.0.d.ts.map +1 -1
  143. package/dist/project-schema/v3.12.0.d.ts +104 -104
  144. package/dist/project-schema/v3.12.0.d.ts.map +1 -1
  145. package/dist/project-schema/v3.12.1.d.ts +110 -110
  146. package/dist/project-schema/v3.12.1.d.ts.map +1 -1
  147. package/dist/project-schema/v3.12.2.d.ts +111 -111
  148. package/dist/project-schema/v3.12.2.d.ts.map +1 -1
  149. package/dist/project-schema/v3.12.3.d.ts +114 -114
  150. package/dist/project-schema/v3.12.3.d.ts.map +1 -1
  151. package/dist/project-schema/v3.13.0.d.ts +115 -115
  152. package/dist/project-schema/v3.13.0.d.ts.map +1 -1
  153. package/dist/project-schema/v3.14.0.d.ts +116 -116
  154. package/dist/project-schema/v3.14.0.d.ts.map +1 -1
  155. package/dist/project-schema/v3.15.0.d.ts +119 -119
  156. package/dist/project-schema/v3.15.0.d.ts.map +1 -1
  157. package/dist/project-schema/v3.16.0.d.ts +119 -119
  158. package/dist/project-schema/v3.16.0.d.ts.map +1 -1
  159. package/dist/project-schema/v3.17.0.d.ts +119 -119
  160. package/dist/project-schema/v3.17.0.d.ts.map +1 -1
  161. package/dist/project-schema/v3.17.1.d.ts +119 -119
  162. package/dist/project-schema/v3.17.1.d.ts.map +1 -1
  163. package/dist/project-schema/v3.18.0.d.ts +117 -117
  164. package/dist/project-schema/v3.18.0.d.ts.map +1 -1
  165. package/dist/project-schema/v3.18.1.d.ts +117 -117
  166. package/dist/project-schema/v3.18.1.d.ts.map +1 -1
  167. package/dist/project-schema/v3.18.2.d.ts +117 -117
  168. package/dist/project-schema/v3.18.2.d.ts.map +1 -1
  169. package/dist/project-schema/v3.19.0.d.ts +117 -117
  170. package/dist/project-schema/v3.19.0.d.ts.map +1 -1
  171. package/dist/project-schema/v3.2.0.d.ts +36 -36
  172. package/dist/project-schema/v3.2.0.d.ts.map +1 -1
  173. package/dist/project-schema/v3.20.0.d.ts +117 -117
  174. package/dist/project-schema/v3.20.0.d.ts.map +1 -1
  175. package/dist/project-schema/v3.21.0.d.ts +117 -117
  176. package/dist/project-schema/v3.21.0.d.ts.map +1 -1
  177. package/dist/project-schema/v3.22.0.d.ts +118 -118
  178. package/dist/project-schema/v3.22.0.d.ts.map +1 -1
  179. package/dist/project-schema/v3.23.0.d.ts +120 -120
  180. package/dist/project-schema/v3.23.0.d.ts.map +1 -1
  181. package/dist/project-schema/v3.24.0.d.ts +120 -120
  182. package/dist/project-schema/v3.24.0.d.ts.map +1 -1
  183. package/dist/project-schema/v3.25.0.d.ts +120 -120
  184. package/dist/project-schema/v3.25.0.d.ts.map +1 -1
  185. package/dist/project-schema/v3.26.0.d.ts +121 -121
  186. package/dist/project-schema/v3.26.0.d.ts.map +1 -1
  187. package/dist/project-schema/v3.27.0.d.ts +122 -122
  188. package/dist/project-schema/v3.27.0.d.ts.map +1 -1
  189. package/dist/project-schema/v3.28.0.d.ts +123 -123
  190. package/dist/project-schema/v3.28.0.d.ts.map +1 -1
  191. package/dist/project-schema/v3.29.0.d.ts +124 -124
  192. package/dist/project-schema/v3.29.0.d.ts.map +1 -1
  193. package/dist/project-schema/v3.3.0.d.ts +36 -36
  194. package/dist/project-schema/v3.3.0.d.ts.map +1 -1
  195. package/dist/project-schema/v3.30.0.d.ts +123 -123
  196. package/dist/project-schema/v3.30.0.d.ts.map +1 -1
  197. package/dist/project-schema/v3.31.0.d.ts +125 -125
  198. package/dist/project-schema/v3.31.0.d.ts.map +1 -1
  199. package/dist/project-schema/v3.32.0.d.ts +124 -124
  200. package/dist/project-schema/v3.32.0.d.ts.map +1 -1
  201. package/dist/project-schema/v3.33.0.d.ts +125 -125
  202. package/dist/project-schema/v3.33.0.d.ts.map +1 -1
  203. package/dist/project-schema/v3.34.0.d.ts +125 -125
  204. package/dist/project-schema/v3.34.0.d.ts.map +1 -1
  205. package/dist/project-schema/v3.35.0.d.ts +1465 -0
  206. package/dist/project-schema/v3.35.0.d.ts.map +1 -0
  207. package/dist/project-schema/v3.35.0.js +5 -0
  208. package/dist/project-schema/v3.4.0.d.ts +36 -36
  209. package/dist/project-schema/v3.4.0.d.ts.map +1 -1
  210. package/dist/project-schema/v3.5.0.d.ts +36 -36
  211. package/dist/project-schema/v3.5.0.d.ts.map +1 -1
  212. package/dist/project-schema/v3.5.1.d.ts +36 -36
  213. package/dist/project-schema/v3.5.1.d.ts.map +1 -1
  214. package/dist/project-schema/v3.6.0.d.ts +37 -37
  215. package/dist/project-schema/v3.6.0.d.ts.map +1 -1
  216. package/dist/project-schema/v3.7.0.d.ts +37 -37
  217. package/dist/project-schema/v3.7.0.d.ts.map +1 -1
  218. package/dist/project-schema/v3.8.0.d.ts +39 -39
  219. package/dist/project-schema/v3.8.0.d.ts.map +1 -1
  220. package/dist/project-schema/v3.9.0.d.ts +39 -39
  221. package/dist/project-schema/v3.9.0.d.ts.map +1 -1
  222. package/dist/project-schema/v4.0.0.d.ts +113 -113
  223. package/dist/project-schema/v4.0.0.d.ts.map +1 -1
  224. package/dist/refs.d.ts +16 -13
  225. package/dist/refs.d.ts.map +1 -1
  226. package/dist/refs.js +21 -0
  227. package/dist/relationships.d.ts +5 -5
  228. package/dist/relationships.d.ts.map +1 -1
  229. package/dist/schema-util.d.ts +46 -40
  230. package/dist/schema-util.d.ts.map +1 -1
  231. package/dist/schema-util.js +34 -29
  232. package/dist/schemas/index.d.ts +2 -2
  233. package/dist/schemas/index.d.ts.map +1 -1
  234. package/dist/schemas/index.js +6 -4
  235. package/dist/schemas/index.ts +4 -2
  236. package/dist/schemas/project-schema/latest.json +42 -7
  237. package/dist/schemas/project-schema/meta-schema-v3.0.0.json +1 -1
  238. package/dist/schemas/project-schema/meta-schema-v3.1.0.json +1 -1
  239. package/dist/schemas/project-schema/meta-schema-v3.2.0.json +1 -1
  240. package/dist/schemas/project-schema/meta-schema-v3.3.0.json +1 -1
  241. package/dist/schemas/project-schema/meta-schema-v3.4.0.json +1 -1
  242. package/dist/schemas/project-schema/meta-schema-v3.5.0.json +1 -1
  243. package/dist/schemas/project-schema/meta-schema-v3.5.1.json +1 -1
  244. package/dist/schemas/project-schema/meta-schema-v3.6.0.json +1 -1
  245. package/dist/schemas/project-schema/meta-schema-v3.7.0.json +1 -1
  246. package/dist/schemas/project-schema/meta-schema-v3.8.0.json +1 -1
  247. package/dist/schemas/project-schema/meta-schema-v3.9.0.json +1 -1
  248. package/dist/schemas/project-schema/v1.0.0.json +1 -1
  249. package/dist/schemas/project-schema/v3.0.0.json +2 -2
  250. package/dist/schemas/project-schema/v3.1.0.json +4 -4
  251. package/dist/schemas/project-schema/v3.10.0.json +5 -5
  252. package/dist/schemas/project-schema/v3.11.0.json +5 -5
  253. package/dist/schemas/project-schema/v3.12.0.json +5 -5
  254. package/dist/schemas/project-schema/v3.12.1.json +5 -5
  255. package/dist/schemas/project-schema/v3.12.2.json +5 -5
  256. package/dist/schemas/project-schema/v3.12.3.json +5 -5
  257. package/dist/schemas/project-schema/v3.13.0.json +5 -5
  258. package/dist/schemas/project-schema/v3.14.0.json +5 -5
  259. package/dist/schemas/project-schema/v3.15.0.json +5 -5
  260. package/dist/schemas/project-schema/v3.16.0.json +5 -5
  261. package/dist/schemas/project-schema/v3.17.0.json +5 -5
  262. package/dist/schemas/project-schema/v3.17.1.json +5 -5
  263. package/dist/schemas/project-schema/v3.18.0.json +5 -5
  264. package/dist/schemas/project-schema/v3.18.1.json +5 -5
  265. package/dist/schemas/project-schema/v3.18.2.json +5 -5
  266. package/dist/schemas/project-schema/v3.19.0.json +5 -5
  267. package/dist/schemas/project-schema/v3.2.0.json +4 -4
  268. package/dist/schemas/project-schema/v3.20.0.json +5 -5
  269. package/dist/schemas/project-schema/v3.21.0.json +5 -5
  270. package/dist/schemas/project-schema/v3.22.0.json +5 -5
  271. package/dist/schemas/project-schema/v3.23.0.json +5 -5
  272. package/dist/schemas/project-schema/v3.24.0.json +5 -5
  273. package/dist/schemas/project-schema/v3.25.0.json +5 -5
  274. package/dist/schemas/project-schema/v3.26.0.json +6 -6
  275. package/dist/schemas/project-schema/v3.27.0.json +6 -6
  276. package/dist/schemas/project-schema/v3.28.0.json +5 -5
  277. package/dist/schemas/project-schema/v3.29.0.json +5 -5
  278. package/dist/schemas/project-schema/v3.3.0.json +4 -4
  279. package/dist/schemas/project-schema/v3.30.0.json +5 -5
  280. package/dist/schemas/project-schema/v3.31.0.json +6 -6
  281. package/dist/schemas/project-schema/v3.32.0.json +6 -6
  282. package/dist/schemas/project-schema/v3.33.0.json +6 -6
  283. package/dist/schemas/project-schema/v3.34.0.json +5 -5
  284. package/dist/schemas/project-schema/v3.35.0.json +3123 -0
  285. package/dist/schemas/project-schema/v3.4.0.json +4 -4
  286. package/dist/schemas/project-schema/v3.5.0.json +4 -4
  287. package/dist/schemas/project-schema/v3.5.1.json +4 -4
  288. package/dist/schemas/project-schema/v3.6.0.json +4 -4
  289. package/dist/schemas/project-schema/v3.7.0.json +4 -4
  290. package/dist/schemas/project-schema/v3.8.0.json +4 -4
  291. package/dist/schemas/project-schema/v3.9.0.json +4 -4
  292. package/dist/schemas/project-schema/v4.0.0.json +5 -5
  293. package/dist/schemas/project-schema.json +3 -0
  294. package/dist/services.d.ts +12 -12
  295. package/dist/services.d.ts.map +1 -1
  296. package/dist/services.js +3 -3
  297. package/dist/taxonomies.d.ts +4 -4
  298. package/dist/taxonomies.d.ts.map +1 -1
  299. package/dist/template-shapes/index.d.ts +2 -2
  300. package/dist/template-shapes/index.d.ts.map +1 -1
  301. package/dist/template-shapes/templates.d.ts +21 -21
  302. package/dist/template-shapes/templates.d.ts.map +1 -1
  303. package/dist/template-shapes/types.d.ts +3 -3
  304. package/dist/template-shapes/types.d.ts.map +1 -1
  305. package/dist/template-shapes/where.d.ts +6 -6
  306. package/dist/template-shapes/where.d.ts.map +1 -1
  307. package/dist/types/types.d.ts +10 -9
  308. package/dist/types/types.d.ts.map +1 -1
  309. package/dist/types/utils.d.ts +5 -4
  310. package/dist/types/utils.d.ts.map +1 -1
  311. package/dist/types/utils.js +5 -0
  312. package/dist/unions.d.ts +8 -8
  313. package/dist/unions.d.ts.map +1 -1
  314. package/dist/util/api-indexing.d.ts +4 -4
  315. package/dist/util/api-indexing.d.ts.map +1 -1
  316. package/dist/util/detect-cycles.d.ts +3 -3
  317. package/dist/util/detect-cycles.d.ts.map +1 -1
  318. package/dist/util/find-shape-at-path.d.ts +3 -3
  319. package/dist/util/find-shape-at-path.d.ts.map +1 -1
  320. package/dist/util/form-config.d.ts +3 -3
  321. package/dist/util/form-config.d.ts.map +1 -1
  322. package/dist/util/get-conflicting-properties.d.ts +2 -2
  323. package/dist/util/get-conflicting-properties.d.ts.map +1 -1
  324. package/dist/util/get-return-shape.d.ts +4 -2
  325. package/dist/util/get-return-shape.d.ts.map +1 -1
  326. package/dist/util/get-return-shape.js +5 -0
  327. package/dist/util/has-arg.d.ts +2 -2
  328. package/dist/util/has-arg.d.ts.map +1 -1
  329. package/dist/util/merge.d.ts +3 -3
  330. package/dist/util/merge.d.ts.map +1 -1
  331. package/dist/util/patch-schema.d.ts +2 -2
  332. package/dist/util/patch-schema.d.ts.map +1 -1
  333. package/dist/validate.d.ts +3 -3
  334. package/dist/validate.d.ts.map +1 -1
  335. package/dist/validate.js +84 -5
  336. package/dist/workflows.d.ts +3 -3
  337. package/dist/workflows.d.ts.map +1 -1
  338. package/es/migration/index.js +3 -1
  339. package/es/migration/to/utils/v3.34.0-utils.js +0 -0
  340. package/es/migration/to/v3.34.0.js +28 -7
  341. package/es/migration/to/v3.35.0.js +10 -0
  342. package/es/models/project-schema.js +116 -0
  343. package/es/models/query.js +35 -0
  344. package/es/models/service.js +25 -0
  345. package/es/models/shape.js +105 -0
  346. package/es/project-schema/index.js +47 -45
  347. package/es/project-schema/migrate.js +50 -46
  348. package/es/project-schema/v3.35.0.js +1 -0
  349. package/es/refs.js +15 -0
  350. package/es/schema-util.js +32 -29
  351. package/es/schemas/index.js +4 -3
  352. package/es/schemas/index.ts +4 -2
  353. package/es/schemas/project-schema/latest.json +42 -7
  354. package/es/schemas/project-schema/meta-schema-v3.0.0.json +1 -1
  355. package/es/schemas/project-schema/meta-schema-v3.1.0.json +1 -1
  356. package/es/schemas/project-schema/meta-schema-v3.2.0.json +1 -1
  357. package/es/schemas/project-schema/meta-schema-v3.3.0.json +1 -1
  358. package/es/schemas/project-schema/meta-schema-v3.4.0.json +1 -1
  359. package/es/schemas/project-schema/meta-schema-v3.5.0.json +1 -1
  360. package/es/schemas/project-schema/meta-schema-v3.5.1.json +1 -1
  361. package/es/schemas/project-schema/meta-schema-v3.6.0.json +1 -1
  362. package/es/schemas/project-schema/meta-schema-v3.7.0.json +1 -1
  363. package/es/schemas/project-schema/meta-schema-v3.8.0.json +1 -1
  364. package/es/schemas/project-schema/meta-schema-v3.9.0.json +1 -1
  365. package/es/schemas/project-schema/v1.0.0.json +1 -1
  366. package/es/schemas/project-schema/v3.0.0.json +2 -2
  367. package/es/schemas/project-schema/v3.1.0.json +4 -4
  368. package/es/schemas/project-schema/v3.10.0.json +5 -5
  369. package/es/schemas/project-schema/v3.11.0.json +5 -5
  370. package/es/schemas/project-schema/v3.12.0.json +5 -5
  371. package/es/schemas/project-schema/v3.12.1.json +5 -5
  372. package/es/schemas/project-schema/v3.12.2.json +5 -5
  373. package/es/schemas/project-schema/v3.12.3.json +5 -5
  374. package/es/schemas/project-schema/v3.13.0.json +5 -5
  375. package/es/schemas/project-schema/v3.14.0.json +5 -5
  376. package/es/schemas/project-schema/v3.15.0.json +5 -5
  377. package/es/schemas/project-schema/v3.16.0.json +5 -5
  378. package/es/schemas/project-schema/v3.17.0.json +5 -5
  379. package/es/schemas/project-schema/v3.17.1.json +5 -5
  380. package/es/schemas/project-schema/v3.18.0.json +5 -5
  381. package/es/schemas/project-schema/v3.18.1.json +5 -5
  382. package/es/schemas/project-schema/v3.18.2.json +5 -5
  383. package/es/schemas/project-schema/v3.19.0.json +5 -5
  384. package/es/schemas/project-schema/v3.2.0.json +4 -4
  385. package/es/schemas/project-schema/v3.20.0.json +5 -5
  386. package/es/schemas/project-schema/v3.21.0.json +5 -5
  387. package/es/schemas/project-schema/v3.22.0.json +5 -5
  388. package/es/schemas/project-schema/v3.23.0.json +5 -5
  389. package/es/schemas/project-schema/v3.24.0.json +5 -5
  390. package/es/schemas/project-schema/v3.25.0.json +5 -5
  391. package/es/schemas/project-schema/v3.26.0.json +6 -6
  392. package/es/schemas/project-schema/v3.27.0.json +6 -6
  393. package/es/schemas/project-schema/v3.28.0.json +5 -5
  394. package/es/schemas/project-schema/v3.29.0.json +5 -5
  395. package/es/schemas/project-schema/v3.3.0.json +4 -4
  396. package/es/schemas/project-schema/v3.30.0.json +5 -5
  397. package/es/schemas/project-schema/v3.31.0.json +6 -6
  398. package/es/schemas/project-schema/v3.32.0.json +6 -6
  399. package/es/schemas/project-schema/v3.33.0.json +6 -6
  400. package/es/schemas/project-schema/v3.34.0.json +5 -5
  401. package/es/schemas/project-schema/v3.35.0.json +3123 -0
  402. package/es/schemas/project-schema/v3.4.0.json +4 -4
  403. package/es/schemas/project-schema/v3.5.0.json +4 -4
  404. package/es/schemas/project-schema/v3.5.1.json +4 -4
  405. package/es/schemas/project-schema/v3.6.0.json +4 -4
  406. package/es/schemas/project-schema/v3.7.0.json +4 -4
  407. package/es/schemas/project-schema/v3.8.0.json +4 -4
  408. package/es/schemas/project-schema/v3.9.0.json +4 -4
  409. package/es/schemas/project-schema/v4.0.0.json +5 -5
  410. package/es/schemas/project-schema.json +3 -0
  411. package/es/services.js +3 -3
  412. package/es/types/utils.js +3 -0
  413. package/es/util/get-return-shape.js +3 -0
  414. package/es/validate.js +85 -6
  415. package/examples/latest/betzino.json +1 -1
  416. package/examples/latest/blog-schema.json +1 -1
  417. package/examples/latest/brewery-schema.json +1 -1
  418. package/examples/latest/complex-project-schema.json +1 -1
  419. package/examples/latest/complex-schema.json +1 -1
  420. package/examples/latest/fabric-ecommerce.json +1 -1
  421. package/examples/latest/frank-and-fred-schema.json +1 -1
  422. package/examples/latest/klirr-schema.json +1 -1
  423. package/examples/latest/massive-schema.json +1 -1
  424. package/examples/latest/mill-components-schema.json +1 -1
  425. package/examples/latest/one-earth.json +1 -1
  426. package/examples/latest/pet-oneof-array.json +1 -1
  427. package/examples/latest/post-schema.json +1 -1
  428. package/examples/latest/pruned-shopify-product-schema.json +1 -1
  429. package/examples/latest/real-world-schema.json +1 -1
  430. package/examples/latest/recursive-repeater-schema.json +1 -1
  431. package/examples/latest/recursive-schema.json +1 -1
  432. package/examples/latest/rick-and-morty-ast.json +1 -1
  433. package/examples/latest/rick-and-morty-graphql.json +1 -1
  434. package/examples/latest/rick-and-morty-rest.json +1 -1
  435. package/examples/latest/schema-with-repeater-draftjs.json +1 -1
  436. package/examples/latest/shape-books-v3_2_0.json +1 -1
  437. package/examples/latest/shape-books.json +1 -1
  438. package/examples/latest/shape-editor-schema-edited.json +2 -2
  439. package/examples/latest/shape-editor-schema-initial.json +1 -1
  440. package/examples/latest/shopify-lookbook.json +1 -1
  441. package/examples/latest/shopify-product-2022-07.json +1 -1
  442. package/examples/latest/shopify-product-2023-04.json +1 -1
  443. package/examples/latest/shopify-store-with-widget.json +1 -1
  444. package/examples/latest/stripe-product-runtime-schema.json +1 -1
  445. package/examples/latest/stripe-starter-resolved.json +1 -1
  446. package/examples/latest/user-schema-no-required.json +1 -1
  447. package/examples/latest/user-schema-with-defaults.json +1 -1
  448. package/package.json +5 -5
package/dist/validate.js CHANGED
@@ -491,6 +491,78 @@ async function validateQueryConfigs(context, projectSchema) {
491
491
  return (0, _lodash.flatten)(await Promise.all(promises));
492
492
  }
493
493
 
494
+ function listShapeJoins(projectSchema) {
495
+ const joins = [];
496
+
497
+ for (const shapeKey of Object.keys(projectSchema.shapes)) {
498
+ const shape = projectSchema.shapes[shapeKey];
499
+
500
+ if ('joins' in shape) {
501
+ for (const joinRef of Object.keys(shape.joins)) {
502
+ const join = shape.joins[joinRef];
503
+ joins.push({
504
+ ref: joinRef,
505
+ path: ['shapes', shapeKey, 'joins', joinRef],
506
+ join
507
+ });
508
+ }
509
+ }
510
+ }
511
+
512
+ return joins;
513
+ }
514
+
515
+ function validateLocalShapeJoinRef(projectSchema, item) {
516
+ const refItem = (0, _refs.atRefToRefItem)(projectSchema, item.ref);
517
+
518
+ if (refItem.serviceKey === 'local') {
519
+ const shape = (0, _refs.refItemToShape)(projectSchema, refItem);
520
+
521
+ if (!shape) {
522
+ return [{
523
+ type: 'notFound',
524
+ path: item.path,
525
+ message: `Invalid join "${item.ref}" not found`
526
+ }];
527
+ }
528
+ }
529
+
530
+ return [];
531
+ }
532
+
533
+ function validateLocalShapeJoins(projectSchema) {
534
+ return listShapeJoins(projectSchema).flatMap(item => validateLocalShapeJoinRef(projectSchema, item).concat(validateResolver(projectSchema, item.path.concat('resolver'), item.join.resolver)));
535
+ }
536
+
537
+ async function validateShapeJoinRef(context, projectSchema, item) {
538
+ const refItem = (0, _refs.atRefToRefItem)(projectSchema, item.ref);
539
+
540
+ if (refItem) {
541
+ const layer = await context.resolveLayer(refItem.serviceKey);
542
+ const valid = isValidRef(context, projectSchema, layer, refItem);
543
+
544
+ if (!valid) {
545
+ return [{
546
+ type: 'notFound',
547
+ path: item.path,
548
+ message: `Invalid join "${item.ref}" not found`
549
+ }];
550
+ }
551
+ }
552
+
553
+ return [];
554
+ }
555
+
556
+ async function validateShapeJoins(context, projectSchema) {
557
+ const promises = [];
558
+
559
+ for (const item of listShapeJoins(projectSchema)) {
560
+ promises.push(validateShapeJoinRef(context, projectSchema, item), validateResolverReferences(context, projectSchema, item.path, item.join.resolver));
561
+ }
562
+
563
+ return (0, _lodash.flatten)(await Promise.all(promises));
564
+ }
565
+
494
566
  function validateIndexedShapeConfig(projectSchema, shapeName, config) {
495
567
  var _config$queries;
496
568
 
@@ -686,6 +758,15 @@ function validateLocalRefs(projectSchema) {
686
758
  return errors;
687
759
  }
688
760
 
761
+ function isValidRef(context, projectSchema, layer, item) {
762
+ const {
763
+ serviceKey: layerId
764
+ } = item;
765
+ const shapeName = (0, _refs.refItemToShapeName)(item);
766
+ const localShapeExists = Boolean(projectSchema.shapes[shapeName]) || builtInShapeNames.has(shapeName);
767
+ return layerId === 'local' ? localShapeExists : localShapeExists || isValidShapeReference(context, layer, shapeName);
768
+ }
769
+
689
770
  async function validateRefs(context, projectSchema) {
690
771
  const {
691
772
  resolveLayer
@@ -714,9 +795,7 @@ async function validateRefs(context, projectSchema) {
714
795
  const {
715
796
  serviceKey: layerId
716
797
  } = item;
717
- const shapeName = (0, _refs.refItemToShapeName)(item);
718
- const localShapeExists = Boolean(projectSchema.shapes[shapeName]) || builtInShapeNames.has(shapeName);
719
- const valid = layerId === 'local' ? localShapeExists : localShapeExists || isValidShapeReference(context, layersById[layerId], shapeName);
798
+ const valid = isValidRef(context, projectSchema, layersById[layerId], item);
720
799
 
721
800
  if (!valid) {
722
801
  errors.push({
@@ -1076,13 +1155,13 @@ const validators = [{
1076
1155
  validateSyntax(schemaVersion, context, obj) {
1077
1156
  const schema = obj;
1078
1157
  let errors = [];
1079
- errors = errors.concat(checkShapeNames(schema.shapes)).concat(checkShapeIds(schema.shapes)).concat(validateWorkflowsV3(schema)).concat(validateLocalQueryConfigs(schema)).concat(validateLocalRefs(schema)).concat(validateDirectives(schema)).concat(validateLocales(schema)).concat(checkWorkflowStepNames(schema.workflows)).concat(checkWorkflowStepKeys(schema.workflows)).concat(validateOneOfs(schema)).concat(validateIndexedShapes(schema)).concat(validateInterfaces(schema)).concat(validateInterfaceImplementations(schema));
1158
+ errors = errors.concat(checkShapeNames(schema.shapes)).concat(checkShapeIds(schema.shapes)).concat(validateWorkflowsV3(schema)).concat(validateLocalQueryConfigs(schema)).concat(validateLocalRefs(schema)).concat(validateLocalShapeJoins(schema)).concat(validateDirectives(schema)).concat(validateLocales(schema)).concat(checkWorkflowStepNames(schema.workflows)).concat(checkWorkflowStepKeys(schema.workflows)).concat(validateOneOfs(schema)).concat(validateIndexedShapes(schema)).concat(validateInterfaces(schema)).concat(validateInterfaceImplementations(schema));
1080
1159
  return formatValidationResult(context, errors, schema);
1081
1160
  },
1082
1161
 
1083
1162
  async validateReferences(schemaVersion, context, obj) {
1084
1163
  const schema = obj;
1085
- const errors = (0, _lodash.flatten)(await Promise.all([validateRefs(context, schema), validateQueryConfigs(context, schema)]));
1164
+ const errors = (0, _lodash.flatten)(await Promise.all([validateRefs(context, schema), validateQueryConfigs(context, schema), validateShapeJoins(context, schema)]));
1086
1165
  return formatValidationResult(context, errors, schema);
1087
1166
  }
1088
1167
 
@@ -1,13 +1,13 @@
1
- import { ProjectSchema, PropertySchema, Workflow, WorkflowMap, WorkflowStep, Shape } from './project-schema';
1
+ import { ProjectSchemaJSON, PropertySchema, Workflow, WorkflowMap, WorkflowStep, ShapeJSON } from './project-schema';
2
2
  export declare const defaultWorkflow: Workflow;
3
- export declare function getWorkflow(projectSchema: ProjectSchema, shapeId: string): Workflow;
3
+ export declare function getWorkflow(projectSchema: ProjectSchemaJSON, shapeId: string): Workflow;
4
4
  export interface StepContext {
5
5
  index: number;
6
6
  step: WorkflowStep;
7
7
  }
8
8
  export declare function statusFallback(workflow: Workflow, enabled: boolean): WorkflowStep;
9
9
  export declare function findWorkflowStep(workflow: Workflow, keyOrName: string): StepContext | undefined;
10
- export declare function getStatusField(workflows: WorkflowMap, shape: Shape): PropertySchema;
10
+ export declare function getStatusField(workflows: WorkflowMap, shape: ShapeJSON): PropertySchema;
11
11
  export type WorkflowComparisonOperatorKey = 'lt' | 'lte' | 'gte' | 'gt' | 'eq' | 'in';
12
12
  export declare function getStepRange(steps: WorkflowStep[], index: number, op: WorkflowComparisonOperatorKey): WorkflowStep[];
13
13
  export declare function getWorkflowStepKeys(workflow: Workflow, stepKey: string, op: WorkflowComparisonOperatorKey): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAG3G,eAAO,MAAM,eAAe,EAAE,QAmB7B,CAAC;AAEF,wBAAgB,WAAW,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAQnF;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAEjF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAG/F;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,cAAc,CAOnF;AAED,MAAM,MAAM,6BAA6B,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,6BAA6B,GAAG,YAAY,EAAE,CASpH;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,6BAA6B,GAAG,MAAM,EAAE,CAQpH;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAE5D"}
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAGnH,eAAO,MAAM,eAAe,EAAE,QAmB7B,CAAC;AAEF,wBAAgB,WAAW,CAAC,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAQvF;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAEjF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAG/F;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,cAAc,CAOvF;AAED,MAAM,MAAM,6BAA6B,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,6BAA6B,GAAG,YAAY,EAAE,CASpH;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,6BAA6B,GAAG,MAAM,EAAE,CAQpH;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAE5D"}
@@ -40,6 +40,7 @@ import migrateToV3_31_0 from './to/v3.31.0';
40
40
  import migrateToV3_32_0 from './to/v3.32.0';
41
41
  import migrateToV3_33_0 from './to/v3.33.0';
42
42
  import migrateToV3_34_0 from './to/v3.34.0';
43
+ import migrateToV3_35_0 from './to/v3.35.0';
43
44
  export const migrateTo = {
44
45
  'v3.0.0': migrateToV3_0_0,
45
46
  'v3.1.0': migrateToV3_1_0,
@@ -82,7 +83,8 @@ export const migrateTo = {
82
83
  'v3.31.0': migrateToV3_31_0,
83
84
  'v3.32.0': migrateToV3_32_0,
84
85
  'v3.33.0': migrateToV3_33_0,
85
- 'v3.34.0': migrateToV3_34_0
86
+ 'v3.34.0': migrateToV3_34_0,
87
+ 'v3.35.0': migrateToV3_35_0
86
88
  };
87
89
  export * from './utils';
88
90
  export const listTypePrefix = 'PaginatedList';
File without changes
@@ -4,7 +4,8 @@ import { getRefOrItemsRef } from '../../refs';
4
4
  import upperFirst from 'lodash/upperFirst';
5
5
  import set from 'lodash/fp/set';
6
6
  import unset from 'lodash/fp/unset';
7
- import { getServiceObjectFields } from '../../services'; // Inline utilities for posterity
7
+ import { getServiceObjectFields } from '../../services';
8
+ import { CURRENT_SCHEMA_VERSION } from '../../schemas'; // Inline utilities for posterity
8
9
 
9
10
  function refItemToShapeName(refItem) {
10
11
  const {
@@ -84,9 +85,12 @@ export function migrateInterfaceShapes(projectSchema) {
84
85
  for (const shape of Object.values(projectSchema.shapes)) {
85
86
  if (!shape.model) {
86
87
  continue;
87
- }
88
+ } // Set the schema version to the current to appease type check this line will eventually break as the schema diverges
89
+
88
90
 
89
- const serviceObjectFields = getServiceObjectFields(projectSchema, shape, 'shopify');
91
+ const serviceObjectFields = getServiceObjectFields({ ...projectSchema,
92
+ schemaVersion: CURRENT_SCHEMA_VERSION
93
+ }, shape, 'shopify');
90
94
 
91
95
  for (const field of serviceObjectFields) {
92
96
  const {
@@ -130,11 +134,28 @@ export function migrateInterfaceShapes(projectSchema) {
130
134
  }
131
135
 
132
136
  const migrate = async (_, projectSchema) => {
133
- const forms = normalizeForms(projectSchema);
134
- return migrateInterfaceShapes({ ...projectSchema,
135
- forms,
137
+ let normalized = projectSchema;
138
+
139
+ try {
140
+ normalized = { ...projectSchema,
141
+ forms: normalizeForms(projectSchema)
142
+ };
143
+ } catch (e) {
144
+ // TODO remove console.log when a formal warning mechanism is added https://app.shortcut.com/takeshape/story/11533/return-warnings-from-schema-migration
145
+ // eslint-disable-next-line no-console
146
+ console.log(`v3.34.0 migration warning: Failed to normalize forms`, e.message);
147
+ }
148
+
149
+ try {
150
+ normalized = migrateInterfaceShapes(normalized);
151
+ } catch (e) {
152
+ // eslint-disable-next-line no-console
153
+ console.log(`v3.34.0 migration warning: Failed to migrate interface shapes`, e.message);
154
+ }
155
+
156
+ return { ...normalized,
136
157
  schemaVersion: '3.34.0'
137
- });
158
+ };
138
159
  };
139
160
 
140
161
  export default migrate;
@@ -0,0 +1,10 @@
1
+ const migrate = async (_, projectSchema) => {
2
+ /**
3
+ * No migration needed all changes are backwards compatible.
4
+ */
5
+ return { ...projectSchema,
6
+ schemaVersion: '3.35.0'
7
+ };
8
+ };
9
+
10
+ export default migrate;
@@ -0,0 +1,116 @@
1
+ import { atRefToRefItem, getRef, shapeNameToRef, shapeNameToRefItem, shapeToRefItem } from '../refs';
2
+ import { getAllRefs, getShape, getShapeById } from '../schema-util';
3
+ import omit from 'lodash/omit';
4
+ import { ShapeModel } from './shape';
5
+ import { QueryModel } from './query';
6
+ import { ServiceConfig } from './service';
7
+
8
+ /**
9
+ * Model object representing a ProjectSchema.
10
+ * Intended to help make it easier to find the right utils
11
+ * and avoid direct schema json access where a util would be preferred.
12
+ */
13
+ export class ProjectSchema {
14
+ _cache = {};
15
+
16
+ constructor(unfilteredProjectSchema) {
17
+ // You can pass a ProjectSchemaCompat in here, but we remove its values so they don't get passed through to getJSON.
18
+ // If you need to use this metadata it should be stored separately.
19
+ this._projectSchemaJSON = omit(unfilteredProjectSchema, ['created', 'updated', 'version']);
20
+ }
21
+
22
+ get json() {
23
+ return this._projectSchemaJSON;
24
+ }
25
+
26
+ get projectId() {
27
+ return this.json.projectId;
28
+ }
29
+
30
+ get $schema() {
31
+ return this.json.$schema;
32
+ }
33
+
34
+ get author() {
35
+ return this.json.author;
36
+ }
37
+
38
+ getShapeByName(shapeName) {
39
+ const shapeJSON = getShape(this.json, shapeName);
40
+
41
+ if (!shapeJSON) {
42
+ return undefined;
43
+ }
44
+
45
+ const shapeRefItem = shapeToRefItem(this.json, shapeJSON);
46
+ return new ShapeModel(this, shapeRefItem);
47
+ }
48
+
49
+ getShapeById(shapeId) {
50
+ const shapeJSON = getShapeById(this.json, shapeId);
51
+
52
+ if (!shapeJSON) {
53
+ return undefined;
54
+ }
55
+
56
+ const shapeRefItem = shapeToRefItem(this.json, shapeJSON);
57
+ return new ShapeModel(this, shapeRefItem);
58
+ }
59
+
60
+ getShapeByRef(shapeRef) {
61
+ return new ShapeModel(this, shapeRef);
62
+ }
63
+
64
+ get shapes() {
65
+ this._cache.shapes = this._cache.shapes ?? Object.keys(this.json.shapes).map(name => new ShapeModel(this, shapeNameToRef(this.json, name)));
66
+ return this._cache.shapes;
67
+ }
68
+
69
+ get refs() {
70
+ this._cache.refs = this._cache.refs ?? getAllRefs(this.json);
71
+ return this._cache.refs;
72
+ }
73
+
74
+ getQueryByName(queryName) {
75
+ return new QueryModel(this, 'query', queryName);
76
+ }
77
+
78
+ get queries() {
79
+ this._cache.queries = this._cache.queries ?? Object.keys(this.json.queries).map(name => new QueryModel(this, 'query', name));
80
+ return this._cache.queries;
81
+ }
82
+
83
+ getMutationByName(mutationName) {
84
+ return new QueryModel(this, 'mutation', mutationName);
85
+ }
86
+
87
+ get mutations() {
88
+ this._cache.mutations = Object.keys(this.json.mutations).map(name => new QueryModel(this, 'mutation', name));
89
+ return this._cache.mutations;
90
+ }
91
+
92
+ getServiceById(serviceId) {
93
+ return new ServiceConfig(this, serviceId);
94
+ }
95
+
96
+ atRefToRefItem(atRef, template) {
97
+ return atRefToRefItem(this.json, atRef, template);
98
+ }
99
+
100
+ refItemToShape(refItem) {
101
+ return new ShapeModel(this, refItem);
102
+ }
103
+
104
+ getRef(refSchema) {
105
+ return getRef(this.json, refSchema);
106
+ }
107
+
108
+ shapeNameToRef(shapeName) {
109
+ return shapeNameToRef(this.json, shapeName);
110
+ }
111
+
112
+ shapeNameToRefItem(shapeName) {
113
+ return shapeNameToRefItem(this.json, shapeName);
114
+ }
115
+
116
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Create a model object representing a query or mutation.
3
+ */
4
+ export class QueryModel {
5
+ constructor(projectSchemaModel, _queryType, _queryName) {
6
+ this._queryType = _queryType;
7
+ this._queryName = _queryName;
8
+ this._rawQuery = projectSchemaModel.json[_queryType === 'query' ? 'queries' : 'mutations'][_queryName];
9
+ }
10
+
11
+ get queryType() {
12
+ return this._queryType;
13
+ }
14
+
15
+ get name() {
16
+ return this._queryName;
17
+ }
18
+
19
+ get json() {
20
+ return this._rawQuery;
21
+ }
22
+
23
+ get description() {
24
+ return this.json.description;
25
+ }
26
+
27
+ get resolver() {
28
+ return this.json.resolver;
29
+ }
30
+
31
+ get returnShape() {
32
+ return this.json.shape;
33
+ }
34
+
35
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Create a model object representing a service configuration.
3
+ */
4
+ export class ServiceConfig {
5
+ constructor(projectSchemaModel, _serviceId) {
6
+ var _projectSchemaModel$j;
7
+
8
+ this._serviceId = _serviceId;
9
+
10
+ if (!((_projectSchemaModel$j = projectSchemaModel.json.services) !== null && _projectSchemaModel$j !== void 0 && _projectSchemaModel$j[_serviceId])) {
11
+ throw new Error(`Could not create service model for ${_serviceId}`);
12
+ }
13
+
14
+ this._storedServiceConfig = projectSchemaModel.json.services[_serviceId];
15
+ }
16
+
17
+ get id() {
18
+ return this._serviceId;
19
+ }
20
+
21
+ get json() {
22
+ return this._storedServiceConfig;
23
+ }
24
+
25
+ }
@@ -0,0 +1,105 @@
1
+ import { refItemToShape } from '../refs';
2
+ import { createSchemaPropertyAccessor, createSchemaPropertyList, getShapeByRef, isCachedShape, isModelShape } from '../schema-util';
3
+ import { isInterfaceShape } from '../interfaces';
4
+ /**
5
+ * Create a shape model from either a ref item or a ref string such as `rick:Character`
6
+ */
7
+
8
+ export class ShapeModel {
9
+ constructor(_projectSchemaModel, refArg) {
10
+ this._projectSchemaModel = _projectSchemaModel;
11
+
12
+ if (typeof refArg === 'string') {
13
+ const rawShape = getShapeByRef(_projectSchemaModel.json, refArg);
14
+
15
+ if (!rawShape) {
16
+ throw new Error(`Error creating shape model: ${refArg} is not in project schema`);
17
+ }
18
+
19
+ this._rawShape = rawShape;
20
+ this._shapeRefItem = _projectSchemaModel.atRefToRefItem(refArg);
21
+ this._shapeAtRef = refArg;
22
+ } else {
23
+ const rawShape = refItemToShape(_projectSchemaModel.json, refArg);
24
+
25
+ if (!rawShape) {
26
+ throw new Error(`Error creating shape model: ref item argument could not be resolved to a shape`);
27
+ }
28
+
29
+ this._rawShape = rawShape;
30
+ this._shapeRefItem = refArg;
31
+ this._shapeAtRef = `${refArg.serviceKey}:${refArg.typeName}`;
32
+ }
33
+ }
34
+
35
+ get json() {
36
+ return this._rawShape;
37
+ }
38
+
39
+ get id() {
40
+ return this._rawShape.id;
41
+ }
42
+
43
+ get name() {
44
+ return this._rawShape.name;
45
+ }
46
+
47
+ get title() {
48
+ return this._rawShape.title;
49
+ }
50
+
51
+ get description() {
52
+ return this._rawShape.description;
53
+ }
54
+
55
+ get schema() {
56
+ return this._rawShape.schema;
57
+ }
58
+
59
+ get schemaPropertyList() {
60
+ return createSchemaPropertyList(this._projectSchemaModel.json, this._rawShape);
61
+ }
62
+
63
+ get schemaPropertyAccessor() {
64
+ return createSchemaPropertyAccessor(this._projectSchemaModel.json, this._rawShape);
65
+ }
66
+
67
+ get refString() {
68
+ return this._shapeAtRef;
69
+ }
70
+
71
+ get refItem() {
72
+ return this._shapeRefItem;
73
+ }
74
+
75
+ get serviceId() {
76
+ return this._shapeRefItem.serviceKey;
77
+ }
78
+
79
+ get modelType() {
80
+ var _this$_rawShape$model;
81
+
82
+ return (_this$_rawShape$model = this._rawShape.model) === null || _this$_rawShape$model === void 0 ? void 0 : _this$_rawShape$model.type;
83
+ }
84
+
85
+ get interfaces() {
86
+ return this._rawShape.interfaces;
87
+ }
88
+
89
+ get isModel() {
90
+ return isModelShape(this._rawShape);
91
+ }
92
+
93
+ get isCached() {
94
+ return isCachedShape(this._rawShape);
95
+ }
96
+
97
+ get isAsset() {
98
+ return this._rawShape.id === 'ASSET';
99
+ }
100
+
101
+ get isInterfaceShape() {
102
+ return isInterfaceShape(this._rawShape);
103
+ }
104
+
105
+ }
@@ -43,6 +43,7 @@ export * from './v3.31.0';
43
43
  export * from './v3.32.0';
44
44
  export * from './v3.33.0';
45
45
  export * from './v3.34.0';
46
+ export * from './v3.35.0';
46
47
  export * from './v4.0.0';
47
48
 
48
49
  // Schema type utilities
@@ -64,48 +65,49 @@ function createVersionPredicate(expectedVersion) {
64
65
  };
65
66
  }
66
67
 
67
- export const isProjectSchemaV1_0_0 = createVersionPredicate('1.0.0');
68
- export const isProjectSchemaV3_0_0 = createVersionPredicate('3.0.0');
69
- export const isProjectSchemaV3_1_0 = createVersionPredicate('3.1.0');
70
- export const isProjectSchemaV3_2_0 = createVersionPredicate('3.2.0');
71
- export const isProjectSchemaV3_3_0 = createVersionPredicate('3.3.0');
72
- export const isProjectSchemaV3_4_0 = createVersionPredicate('3.4.0');
73
- export const isProjectSchemaV3_5_0 = createVersionPredicate('3.5.0');
74
- export const isProjectSchemaV3_5_1 = createVersionPredicate('3.5.1');
75
- export const isProjectSchemaV3_6_0 = createVersionPredicate('3.6.0');
76
- export const isProjectSchemaV3_7_0 = createVersionPredicate('3.7.0');
77
- export const isProjectSchemaV3_8_0 = createVersionPredicate('3.8.0');
78
- export const isProjectSchemaV3_9_0 = createVersionPredicate('3.9.0');
79
- export const isProjectSchemaV3_10_0 = createVersionPredicate('3.10.0');
80
- export const isProjectSchemaV3_11_0 = createVersionPredicate('3.11.0');
81
- export const isProjectSchemaV3_12_0 = createVersionPredicate('3.12.0');
82
- export const isProjectSchemaV3_12_1 = createVersionPredicate('3.12.1');
83
- export const isProjectSchemaV3_12_2 = createVersionPredicate('3.12.2');
84
- export const isProjectSchemaV3_12_3 = createVersionPredicate('3.12.3');
85
- export const isProjectSchemaV3_13_0 = createVersionPredicate('3.13.0');
86
- export const isProjectSchemaV3_14_0 = createVersionPredicate('3.14.0');
87
- export const isProjectSchemaV3_15_0 = createVersionPredicate('3.15.0');
88
- export const isProjectSchemaV3_16_0 = createVersionPredicate('3.16.0');
89
- export const isProjectSchemaV3_17_0 = createVersionPredicate('3.17.0');
90
- export const isProjectSchemaV3_17_1 = createVersionPredicate('3.17.1');
91
- export const isProjectSchemaV3_18_0 = createVersionPredicate('3.18.0');
92
- export const isProjectSchemaV3_18_1 = createVersionPredicate('3.18.1');
93
- export const isProjectSchemaV3_18_2 = createVersionPredicate('3.18.2');
94
- export const isProjectSchemaV3_19_0 = createVersionPredicate('3.19.0');
95
- export const isProjectSchemaV3_20_0 = createVersionPredicate('3.20.0');
96
- export const isProjectSchemaV3_21_0 = createVersionPredicate('3.21.0');
97
- export const isProjectSchemaV3_22_0 = createVersionPredicate('3.22.0');
98
- export const isProjectSchemaV3_23_0 = createVersionPredicate('3.23.0');
99
- export const isProjectSchemaV3_24_0 = createVersionPredicate('3.24.0');
100
- export const isProjectSchemaV3_25_0 = createVersionPredicate('3.25.0');
101
- export const isProjectSchemaV3_26_0 = createVersionPredicate('3.26.0');
102
- export const isProjectSchemaV3_27_0 = createVersionPredicate('3.27.0');
103
- export const isProjectSchemaV3_28_0 = createVersionPredicate('3.28.0');
104
- export const isProjectSchemaV3_29_0 = createVersionPredicate('3.29.0');
105
- export const isProjectSchemaV3_30_0 = createVersionPredicate('3.30.0');
106
- export const isProjectSchemaV3_31_0 = createVersionPredicate('3.31.0');
107
- export const isProjectSchemaV3_32_0 = createVersionPredicate('3.32.0');
108
- export const isProjectSchemaV3_33_0 = createVersionPredicate('3.33.0');
109
- export const isProjectSchemaV3_34_0 = createVersionPredicate('3.34.0');
110
- export const isLatestProjectSchema = createVersionPredicate('3.34.0');
111
- export const isProjectSchemaV4_0_0 = createVersionPredicate('4.0.0');
68
+ export const isProjectSchemaJSONV1_0_0 = createVersionPredicate('1.0.0');
69
+ export const isProjectSchemaJSONV3_0_0 = createVersionPredicate('3.0.0');
70
+ export const isProjectSchemaJSONV3_1_0 = createVersionPredicate('3.1.0');
71
+ export const isProjectSchemaJSONV3_2_0 = createVersionPredicate('3.2.0');
72
+ export const isProjectSchemaJSONV3_3_0 = createVersionPredicate('3.3.0');
73
+ export const isProjectSchemaJSONV3_4_0 = createVersionPredicate('3.4.0');
74
+ export const isProjectSchemaJSONV3_5_0 = createVersionPredicate('3.5.0');
75
+ export const isProjectSchemaJSONV3_5_1 = createVersionPredicate('3.5.1');
76
+ export const isProjectSchemaJSONV3_6_0 = createVersionPredicate('3.6.0');
77
+ export const isProjectSchemaJSONV3_7_0 = createVersionPredicate('3.7.0');
78
+ export const isProjectSchemaJSONV3_8_0 = createVersionPredicate('3.8.0');
79
+ export const isProjectSchemaJSONV3_9_0 = createVersionPredicate('3.9.0');
80
+ export const isProjectSchemaJSONV3_10_0 = createVersionPredicate('3.10.0');
81
+ export const isProjectSchemaJSONV3_11_0 = createVersionPredicate('3.11.0');
82
+ export const isProjectSchemaJSONV3_12_0 = createVersionPredicate('3.12.0');
83
+ export const isProjectSchemaJSONV3_12_1 = createVersionPredicate('3.12.1');
84
+ export const isProjectSchemaJSONV3_12_2 = createVersionPredicate('3.12.2');
85
+ export const isProjectSchemaJSONV3_12_3 = createVersionPredicate('3.12.3');
86
+ export const isProjectSchemaJSONV3_13_0 = createVersionPredicate('3.13.0');
87
+ export const isProjectSchemaJSONV3_14_0 = createVersionPredicate('3.14.0');
88
+ export const isProjectSchemaJSONV3_15_0 = createVersionPredicate('3.15.0');
89
+ export const isProjectSchemaJSONV3_16_0 = createVersionPredicate('3.16.0');
90
+ export const isProjectSchemaJSONV3_17_0 = createVersionPredicate('3.17.0');
91
+ export const isProjectSchemaJSONV3_17_1 = createVersionPredicate('3.17.1');
92
+ export const isProjectSchemaJSONV3_18_0 = createVersionPredicate('3.18.0');
93
+ export const isProjectSchemaJSONV3_18_1 = createVersionPredicate('3.18.1');
94
+ export const isProjectSchemaJSONV3_18_2 = createVersionPredicate('3.18.2');
95
+ export const isProjectSchemaJSONV3_19_0 = createVersionPredicate('3.19.0');
96
+ export const isProjectSchemaJSONV3_20_0 = createVersionPredicate('3.20.0');
97
+ export const isProjectSchemaJSONV3_21_0 = createVersionPredicate('3.21.0');
98
+ export const isProjectSchemaJSONV3_22_0 = createVersionPredicate('3.22.0');
99
+ export const isProjectSchemaJSONV3_23_0 = createVersionPredicate('3.23.0');
100
+ export const isProjectSchemaJSONV3_24_0 = createVersionPredicate('3.24.0');
101
+ export const isProjectSchemaJSONV3_25_0 = createVersionPredicate('3.25.0');
102
+ export const isProjectSchemaJSONV3_26_0 = createVersionPredicate('3.26.0');
103
+ export const isProjectSchemaJSONV3_27_0 = createVersionPredicate('3.27.0');
104
+ export const isProjectSchemaJSONV3_28_0 = createVersionPredicate('3.28.0');
105
+ export const isProjectSchemaJSONV3_29_0 = createVersionPredicate('3.29.0');
106
+ export const isProjectSchemaJSONV3_30_0 = createVersionPredicate('3.30.0');
107
+ export const isProjectSchemaJSONV3_31_0 = createVersionPredicate('3.31.0');
108
+ export const isProjectSchemaJSONV3_32_0 = createVersionPredicate('3.32.0');
109
+ export const isProjectSchemaJSONV3_33_0 = createVersionPredicate('3.33.0');
110
+ export const isProjectSchemaJSONV3_34_0 = createVersionPredicate('3.34.0');
111
+ export const isProjectSchemaJSONV3_35_0 = createVersionPredicate('3.35.0');
112
+ export const isLatestProjectSchemaJSON = createVersionPredicate('3.35.0');
113
+ export const isProjectSchemaJSONV4_0_0 = createVersionPredicate('4.0.0');