@takeshape/schema 12.1.1 → 12.1.5

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 (514) hide show
  1. package/dist/agents.d.ts +62 -0
  2. package/dist/agents.js +346 -0
  3. package/dist/api-version.d.ts +5 -0
  4. package/dist/api-version.js +17 -0
  5. package/dist/auth-schemas.d.ts +144 -0
  6. package/dist/auth-schemas.js +7 -0
  7. package/dist/auth-utils.d.ts +19 -0
  8. package/dist/auth-utils.js +26 -0
  9. package/dist/builtin-schema.d.ts +18 -0
  10. package/dist/builtin-schema.js +710 -0
  11. package/dist/constants.d.ts +1 -0
  12. package/dist/constants.js +1 -0
  13. package/dist/content-schema-transform.d.ts +35 -0
  14. package/dist/content-schema-transform.js +162 -0
  15. package/dist/create-input-schema.d.ts +9 -0
  16. package/dist/create-input-schema.js +68 -0
  17. package/dist/enum.d.ts +2 -0
  18. package/dist/enum.js +9 -0
  19. package/dist/flatten-templates.d.ts +2 -0
  20. package/dist/flatten-templates.js +20 -0
  21. package/dist/get-is-leaf.d.ts +3 -0
  22. package/dist/get-is-leaf.js +56 -0
  23. package/dist/index.d.ts +64 -0
  24. package/dist/index.js +61 -0
  25. package/dist/interfaces.d.ts +14 -0
  26. package/dist/interfaces.js +86 -0
  27. package/dist/layers/layers.d.ts +26 -0
  28. package/dist/layers/layers.js +301 -0
  29. package/dist/layers/refs.d.ts +102 -0
  30. package/dist/layers/refs.js +220 -0
  31. package/dist/layers/type-utils.d.ts +59 -0
  32. package/dist/layers/type-utils.js +118 -0
  33. package/dist/layers/visitor.d.ts +5 -0
  34. package/dist/layers/visitor.js +38 -0
  35. package/dist/migration/index.d.ts +79 -0
  36. package/dist/migration/index.js +110 -0
  37. package/dist/migration/to/v3.0.0.d.ts +4 -0
  38. package/dist/migration/to/v3.0.0.js +212 -0
  39. package/dist/migration/to/v3.1.0.d.ts +4 -0
  40. package/dist/migration/to/v3.1.0.js +194 -0
  41. package/dist/migration/to/v3.10.0.d.ts +4 -0
  42. package/dist/migration/to/v3.10.0.js +67 -0
  43. package/dist/migration/to/v3.11.0.d.ts +4 -0
  44. package/dist/migration/to/v3.11.0.js +85 -0
  45. package/dist/migration/to/v3.12.3.d.ts +4 -0
  46. package/dist/migration/to/v3.12.3.js +87 -0
  47. package/dist/migration/to/v3.13.0.d.ts +4 -0
  48. package/dist/migration/to/v3.13.0.js +17 -0
  49. package/dist/migration/to/v3.17.0.d.ts +4 -0
  50. package/dist/migration/to/v3.17.0.js +22 -0
  51. package/dist/migration/to/v3.18.0.d.ts +4 -0
  52. package/dist/migration/to/v3.18.0.js +64 -0
  53. package/dist/migration/to/v3.18.1.d.ts +4 -0
  54. package/dist/migration/to/v3.18.1.js +12 -0
  55. package/dist/migration/to/v3.18.2.d.ts +4 -0
  56. package/dist/migration/to/v3.18.2.js +19 -0
  57. package/dist/migration/to/v3.20.0.d.ts +4 -0
  58. package/dist/migration/to/v3.20.0.js +24 -0
  59. package/dist/migration/to/v3.22.0.d.ts +4 -0
  60. package/dist/migration/to/v3.22.0.js +25 -0
  61. package/dist/migration/to/v3.24.0.d.ts +4 -0
  62. package/dist/migration/to/v3.24.0.js +11 -0
  63. package/dist/migration/to/v3.25.0.d.ts +4 -0
  64. package/dist/migration/to/v3.25.0.js +11 -0
  65. package/dist/migration/to/v3.3.0.d.ts +4 -0
  66. package/dist/migration/to/v3.3.0.js +13 -0
  67. package/dist/migration/to/v3.31.0.d.ts +4 -0
  68. package/dist/migration/to/v3.31.0.js +38 -0
  69. package/dist/migration/to/v3.32.0.d.ts +4 -0
  70. package/dist/migration/to/v3.32.0.js +59 -0
  71. package/dist/migration/to/v3.34.0.d.ts +6 -0
  72. package/dist/migration/to/v3.34.0.js +111 -0
  73. package/dist/migration/to/v3.36.0.d.ts +4 -0
  74. package/dist/migration/to/v3.36.0.js +22 -0
  75. package/dist/migration/to/v3.39.0.d.ts +4 -0
  76. package/dist/migration/to/v3.39.0.js +45 -0
  77. package/dist/migration/to/v3.40.0.d.ts +4 -0
  78. package/dist/migration/to/v3.40.0.js +26 -0
  79. package/dist/migration/to/v3.46.0.d.ts +4 -0
  80. package/dist/migration/to/v3.46.0.js +35 -0
  81. package/dist/migration/to/v3.57.0.d.ts +4 -0
  82. package/dist/migration/to/v3.57.0.js +18 -0
  83. package/dist/migration/to/v3.60.0.d.ts +4 -0
  84. package/dist/migration/to/v3.60.0.js +129 -0
  85. package/dist/migration/to/v3.9.0.d.ts +4 -0
  86. package/dist/migration/to/v3.9.0.js +79 -0
  87. package/dist/migration/types.d.ts +26 -0
  88. package/dist/migration/types.js +3 -0
  89. package/dist/migration/utils.d.ts +2 -0
  90. package/dist/migration/utils.js +6 -0
  91. package/dist/mocks.d.ts +14 -0
  92. package/dist/mocks.js +58 -0
  93. package/dist/models/agent.d.ts +3 -0
  94. package/dist/models/agent.js +73 -0
  95. package/dist/models/project-schema.d.ts +28 -0
  96. package/dist/models/project-schema.js +186 -0
  97. package/dist/models/query.d.ts +3 -0
  98. package/dist/models/query.js +46 -0
  99. package/dist/models/runtime-schema.d.ts +9 -0
  100. package/dist/models/runtime-schema.js +20 -0
  101. package/dist/models/shape.d.ts +4 -0
  102. package/dist/models/shape.js +36 -0
  103. package/dist/models/tool.d.ts +4 -0
  104. package/dist/models/tool.js +147 -0
  105. package/dist/models/types.d.ts +97 -0
  106. package/dist/models/types.js +1 -0
  107. package/dist/models/user-schema.d.ts +7 -0
  108. package/dist/models/user-schema.js +9 -0
  109. package/dist/patterns.d.ts +12 -0
  110. package/dist/patterns.js +1 -0
  111. package/dist/project-schema/index.d.ts +229 -0
  112. package/dist/project-schema/index.js +89 -0
  113. package/dist/project-schema/latest.d.ts +2762 -0
  114. package/dist/project-schema/latest.js +7 -0
  115. package/dist/project-schema/migrate.d.ts +4 -0
  116. package/dist/project-schema/migrate.js +236 -0
  117. package/dist/project-schema/v1.0.0.d.ts +299 -0
  118. package/dist/project-schema/v1.0.0.js +7 -0
  119. package/dist/project-schema/v3.0.0.d.ts +478 -0
  120. package/dist/project-schema/v3.0.0.js +7 -0
  121. package/dist/project-schema/v3.1.0.d.ts +621 -0
  122. package/dist/project-schema/v3.1.0.js +7 -0
  123. package/dist/project-schema/v3.10.0.d.ts +1201 -0
  124. package/dist/project-schema/v3.10.0.js +7 -0
  125. package/dist/project-schema/v3.11.0.d.ts +1210 -0
  126. package/dist/project-schema/v3.11.0.js +7 -0
  127. package/dist/project-schema/v3.12.0.d.ts +1214 -0
  128. package/dist/project-schema/v3.12.0.js +7 -0
  129. package/dist/project-schema/v3.12.1.d.ts +1273 -0
  130. package/dist/project-schema/v3.12.1.js +7 -0
  131. package/dist/project-schema/v3.12.2.d.ts +1283 -0
  132. package/dist/project-schema/v3.12.2.js +7 -0
  133. package/dist/project-schema/v3.12.3.d.ts +1306 -0
  134. package/dist/project-schema/v3.12.3.js +7 -0
  135. package/dist/project-schema/v3.13.0.d.ts +1317 -0
  136. package/dist/project-schema/v3.13.0.js +7 -0
  137. package/dist/project-schema/v3.13.1.d.ts +1412 -0
  138. package/dist/project-schema/v3.13.1.js +7 -0
  139. package/dist/project-schema/v3.14.0.d.ts +1436 -0
  140. package/dist/project-schema/v3.14.0.js +7 -0
  141. package/dist/project-schema/v3.15.0.d.ts +1458 -0
  142. package/dist/project-schema/v3.15.0.js +7 -0
  143. package/dist/project-schema/v3.16.0.d.ts +1470 -0
  144. package/dist/project-schema/v3.16.0.js +7 -0
  145. package/dist/project-schema/v3.17.0.d.ts +1467 -0
  146. package/dist/project-schema/v3.17.0.js +7 -0
  147. package/dist/project-schema/v3.17.1.d.ts +1468 -0
  148. package/dist/project-schema/v3.17.1.js +7 -0
  149. package/dist/project-schema/v3.18.0.d.ts +1333 -0
  150. package/dist/project-schema/v3.18.0.js +7 -0
  151. package/dist/project-schema/v3.18.1.d.ts +1332 -0
  152. package/dist/project-schema/v3.18.1.js +7 -0
  153. package/dist/project-schema/v3.18.2.d.ts +1332 -0
  154. package/dist/project-schema/v3.18.2.js +7 -0
  155. package/dist/project-schema/v3.19.0.d.ts +1336 -0
  156. package/dist/project-schema/v3.19.0.js +7 -0
  157. package/dist/project-schema/v3.2.0.d.ts +632 -0
  158. package/dist/project-schema/v3.2.0.js +7 -0
  159. package/dist/project-schema/v3.20.0.d.ts +1336 -0
  160. package/dist/project-schema/v3.20.0.js +7 -0
  161. package/dist/project-schema/v3.21.0.d.ts +1338 -0
  162. package/dist/project-schema/v3.21.0.js +7 -0
  163. package/dist/project-schema/v3.22.0.d.ts +1344 -0
  164. package/dist/project-schema/v3.22.0.js +7 -0
  165. package/dist/project-schema/v3.23.0.d.ts +1376 -0
  166. package/dist/project-schema/v3.23.0.js +7 -0
  167. package/dist/project-schema/v3.24.0.d.ts +1364 -0
  168. package/dist/project-schema/v3.24.0.js +7 -0
  169. package/dist/project-schema/v3.25.0.d.ts +1363 -0
  170. package/dist/project-schema/v3.25.0.js +7 -0
  171. package/dist/project-schema/v3.26.0.d.ts +1388 -0
  172. package/dist/project-schema/v3.26.0.js +7 -0
  173. package/dist/project-schema/v3.27.0.d.ts +1397 -0
  174. package/dist/project-schema/v3.27.0.js +7 -0
  175. package/dist/project-schema/v3.28.0.d.ts +1416 -0
  176. package/dist/project-schema/v3.28.0.js +7 -0
  177. package/dist/project-schema/v3.29.0.d.ts +1423 -0
  178. package/dist/project-schema/v3.29.0.js +7 -0
  179. package/dist/project-schema/v3.3.0.d.ts +632 -0
  180. package/dist/project-schema/v3.3.0.js +7 -0
  181. package/dist/project-schema/v3.30.0.d.ts +1416 -0
  182. package/dist/project-schema/v3.30.0.js +7 -0
  183. package/dist/project-schema/v3.31.0.d.ts +1448 -0
  184. package/dist/project-schema/v3.31.0.js +7 -0
  185. package/dist/project-schema/v3.32.0.d.ts +1439 -0
  186. package/dist/project-schema/v3.32.0.js +7 -0
  187. package/dist/project-schema/v3.33.0.d.ts +1445 -0
  188. package/dist/project-schema/v3.33.0.js +7 -0
  189. package/dist/project-schema/v3.34.0.d.ts +1445 -0
  190. package/dist/project-schema/v3.34.0.js +7 -0
  191. package/dist/project-schema/v3.35.0.d.ts +1464 -0
  192. package/dist/project-schema/v3.35.0.js +7 -0
  193. package/dist/project-schema/v3.36.0.d.ts +1470 -0
  194. package/dist/project-schema/v3.36.0.js +7 -0
  195. package/dist/project-schema/v3.37.0.d.ts +1522 -0
  196. package/dist/project-schema/v3.37.0.js +7 -0
  197. package/dist/project-schema/v3.38.0.d.ts +1522 -0
  198. package/dist/project-schema/v3.38.0.js +7 -0
  199. package/dist/project-schema/v3.39.0.d.ts +1529 -0
  200. package/dist/project-schema/v3.39.0.js +7 -0
  201. package/dist/project-schema/v3.4.0.d.ts +624 -0
  202. package/dist/project-schema/v3.4.0.js +7 -0
  203. package/dist/project-schema/v3.40.0.d.ts +1530 -0
  204. package/dist/project-schema/v3.40.0.js +7 -0
  205. package/dist/project-schema/v3.41.0.d.ts +1530 -0
  206. package/dist/project-schema/v3.41.0.js +7 -0
  207. package/dist/project-schema/v3.42.0.d.ts +1534 -0
  208. package/dist/project-schema/v3.42.0.js +7 -0
  209. package/dist/project-schema/v3.43.0.d.ts +1536 -0
  210. package/dist/project-schema/v3.43.0.js +7 -0
  211. package/dist/project-schema/v3.44.0.d.ts +1621 -0
  212. package/dist/project-schema/v3.44.0.js +7 -0
  213. package/dist/project-schema/v3.45.0.d.ts +1650 -0
  214. package/dist/project-schema/v3.45.0.js +7 -0
  215. package/dist/project-schema/v3.46.0.d.ts +1703 -0
  216. package/dist/project-schema/v3.46.0.js +7 -0
  217. package/dist/project-schema/v3.47.0.d.ts +1736 -0
  218. package/dist/project-schema/v3.47.0.js +7 -0
  219. package/dist/project-schema/v3.48.0.d.ts +2208 -0
  220. package/dist/project-schema/v3.48.0.js +7 -0
  221. package/dist/project-schema/v3.49.0.d.ts +2217 -0
  222. package/dist/project-schema/v3.49.0.js +7 -0
  223. package/dist/project-schema/v3.5.0.d.ts +649 -0
  224. package/dist/project-schema/v3.5.0.js +7 -0
  225. package/dist/project-schema/v3.5.1.d.ts +649 -0
  226. package/dist/project-schema/v3.5.1.js +7 -0
  227. package/dist/project-schema/v3.50.0.d.ts +2269 -0
  228. package/dist/project-schema/v3.50.0.js +7 -0
  229. package/dist/project-schema/v3.51.0.d.ts +2269 -0
  230. package/dist/project-schema/v3.51.0.js +7 -0
  231. package/dist/project-schema/v3.52.0.d.ts +2269 -0
  232. package/dist/project-schema/v3.52.0.js +7 -0
  233. package/dist/project-schema/v3.53.0.d.ts +2350 -0
  234. package/dist/project-schema/v3.53.0.js +7 -0
  235. package/dist/project-schema/v3.54.0.d.ts +2369 -0
  236. package/dist/project-schema/v3.54.0.js +7 -0
  237. package/dist/project-schema/v3.55.0.d.ts +2369 -0
  238. package/dist/project-schema/v3.55.0.js +7 -0
  239. package/dist/project-schema/v3.56.0.d.ts +2405 -0
  240. package/dist/project-schema/v3.56.0.js +7 -0
  241. package/dist/project-schema/v3.57.0.d.ts +2601 -0
  242. package/dist/project-schema/v3.57.0.js +7 -0
  243. package/dist/project-schema/v3.58.0.d.ts +2601 -0
  244. package/dist/project-schema/v3.58.0.js +7 -0
  245. package/dist/project-schema/v3.59.0.d.ts +2650 -0
  246. package/dist/project-schema/v3.59.0.js +7 -0
  247. package/dist/project-schema/v3.6.0.d.ts +658 -0
  248. package/dist/project-schema/v3.6.0.js +7 -0
  249. package/dist/project-schema/v3.60.0.d.ts +2678 -0
  250. package/dist/project-schema/v3.60.0.js +7 -0
  251. package/dist/project-schema/v3.61.0.d.ts +2678 -0
  252. package/dist/project-schema/v3.61.0.js +7 -0
  253. package/dist/project-schema/v3.62.0.d.ts +2693 -0
  254. package/dist/project-schema/v3.62.0.js +7 -0
  255. package/dist/project-schema/v3.63.0.d.ts +2701 -0
  256. package/dist/project-schema/v3.63.0.js +7 -0
  257. package/dist/project-schema/v3.64.0.d.ts +2710 -0
  258. package/dist/project-schema/v3.64.0.js +7 -0
  259. package/dist/project-schema/v3.65.0.d.ts +2762 -0
  260. package/dist/project-schema/v3.65.0.js +7 -0
  261. package/dist/project-schema/v3.7.0.d.ts +961 -0
  262. package/dist/project-schema/v3.7.0.js +7 -0
  263. package/dist/project-schema/v3.8.0.d.ts +979 -0
  264. package/dist/project-schema/v3.8.0.js +7 -0
  265. package/dist/project-schema/v3.9.0.d.ts +1178 -0
  266. package/dist/project-schema/v3.9.0.js +7 -0
  267. package/dist/project-schema/v4.0.0.d.ts +1328 -0
  268. package/dist/project-schema/v4.0.0.js +7 -0
  269. package/dist/refs.d.ts +220 -0
  270. package/dist/refs.js +648 -0
  271. package/dist/relationships.d.ts +40 -0
  272. package/dist/relationships.js +302 -0
  273. package/dist/resolvers/ai/abort-agent-message-args.d.ts +16 -0
  274. package/dist/resolvers/ai/abort-agent-message-args.js +13 -0
  275. package/dist/resolvers/ai/abort-agent-message-response.d.ts +39 -0
  276. package/dist/resolvers/ai/abort-agent-message-response.js +19 -0
  277. package/dist/resolvers/ai/agent-attachment.d.ts +27 -0
  278. package/dist/resolvers/ai/agent-attachment.js +22 -0
  279. package/dist/resolvers/ai/agent-chat-args.d.ts +62 -0
  280. package/dist/resolvers/ai/agent-chat-args.js +30 -0
  281. package/dist/resolvers/ai/agent-chat-payload.d.ts +35 -0
  282. package/dist/resolvers/ai/agent-chat-payload.js +26 -0
  283. package/dist/resolvers/ai/agent-chat-response.d.ts +366 -0
  284. package/dist/resolvers/ai/agent-chat-response.js +21 -0
  285. package/dist/resolvers/ai/agent-generate-args.d.ts +62 -0
  286. package/dist/resolvers/ai/agent-generate-args.js +30 -0
  287. package/dist/resolvers/ai/agent-message-input.d.ts +73 -0
  288. package/dist/resolvers/ai/agent-message-input.js +39 -0
  289. package/dist/resolvers/ai/agent-message-output.d.ts +169 -0
  290. package/dist/resolvers/ai/agent-message-output.js +77 -0
  291. package/dist/resolvers/ai/agent-message-payload.d.ts +849 -0
  292. package/dist/resolvers/ai/agent-message-payload.js +167 -0
  293. package/dist/resolvers/ai/agent-run-mode.d.ts +8 -0
  294. package/dist/resolvers/ai/agent-run-mode.js +9 -0
  295. package/dist/resolvers/ai/agent-session-payload.d.ts +840 -0
  296. package/dist/resolvers/ai/agent-session-payload.js +218 -0
  297. package/dist/resolvers/ai/ai-usage-item.d.ts +70 -0
  298. package/dist/resolvers/ai/ai-usage-item.js +70 -0
  299. package/dist/resolvers/ai/create-agent-session-response.d.ts +276 -0
  300. package/dist/resolvers/ai/create-agent-session-response.js +9 -0
  301. package/dist/resolvers/ai/embedding-search.d.ts +54 -0
  302. package/dist/resolvers/ai/embedding-search.js +46 -0
  303. package/dist/resolvers/ai/get-agent-message-args.d.ts +16 -0
  304. package/dist/resolvers/ai/get-agent-message-args.js +13 -0
  305. package/dist/resolvers/ai/get-agent-message-response.d.ts +1253 -0
  306. package/dist/resolvers/ai/get-agent-message-response.js +79 -0
  307. package/dist/resolvers/ai/inspect-agent-args.d.ts +16 -0
  308. package/dist/resolvers/ai/inspect-agent-args.js +13 -0
  309. package/dist/resolvers/ai/inspect-agent-response.d.ts +631 -0
  310. package/dist/resolvers/ai/inspect-agent-response.js +48 -0
  311. package/dist/resolvers/ai/send-agent-feedback-args.d.ts +52 -0
  312. package/dist/resolvers/ai/send-agent-feedback-args.js +16 -0
  313. package/dist/resolvers/ai/send-agent-message-args.d.ts +48 -0
  314. package/dist/resolvers/ai/send-agent-message-args.js +36 -0
  315. package/dist/resolvers/ai/send-agent-message-response.d.ts +432 -0
  316. package/dist/resolvers/ai/send-agent-message-response.js +51 -0
  317. package/dist/resolvers/ai/types.d.ts +8 -0
  318. package/dist/resolvers/ai/types.js +1 -0
  319. package/dist/resolvers/takeshape/assets/asset-image-meta.d.ts +79 -0
  320. package/dist/resolvers/takeshape/assets/asset-image-meta.js +98 -0
  321. package/dist/resolvers/takeshape/assets/asset-image-params.d.ts +901 -0
  322. package/dist/resolvers/takeshape/assets/asset-image-params.js +726 -0
  323. package/dist/resolvers/takeshape/assets/asset-image.d.ts +17 -0
  324. package/dist/resolvers/takeshape/assets/asset-image.js +15 -0
  325. package/dist/resolvers/takeshape/assets/asset.d.ts +125 -0
  326. package/dist/resolvers/takeshape/assets/asset.js +107 -0
  327. package/dist/resolvers/takeshape/assets/constants.d.ts +11 -0
  328. package/dist/resolvers/takeshape/assets/constants.js +11 -0
  329. package/dist/resolvers/takeshape/builtins/constants.d.ts +1 -0
  330. package/dist/resolvers/takeshape/builtins/constants.js +1 -0
  331. package/dist/runtime-schema.d.ts +6 -0
  332. package/dist/runtime-schema.js +85 -0
  333. package/dist/scalars.d.ts +2 -0
  334. package/dist/scalars.js +4 -0
  335. package/dist/schema-transform.d.ts +19 -0
  336. package/dist/schema-transform.js +74 -0
  337. package/dist/schema-util.d.ts +266 -0
  338. package/dist/schema-util.js +1127 -0
  339. package/dist/schemas/auth-schemas.json +400 -0
  340. package/dist/schemas/index.d.ts +4 -0
  341. package/dist/schemas/index.js +182 -0
  342. package/dist/schemas/project-schema/experimental-2025-07.json +1297 -0
  343. package/dist/schemas/project-schema/latest.d.ts +245 -0
  344. package/dist/schemas/project-schema/latest.js +25 -0
  345. package/dist/schemas/project-schema/latest.json +5109 -0
  346. package/dist/schemas/project-schema/meta-schema-v1.0.0.json +193 -0
  347. package/dist/schemas/project-schema/meta-schema-v3.0.0.json +608 -0
  348. package/dist/schemas/project-schema/meta-schema-v3.1.0.json +608 -0
  349. package/dist/schemas/project-schema/meta-schema-v3.2.0.json +612 -0
  350. package/dist/schemas/project-schema/meta-schema-v3.3.0.json +612 -0
  351. package/dist/schemas/project-schema/meta-schema-v3.4.0.json +637 -0
  352. package/dist/schemas/project-schema/meta-schema-v3.5.0.json +626 -0
  353. package/dist/schemas/project-schema/meta-schema-v3.5.1.json +626 -0
  354. package/dist/schemas/project-schema/meta-schema-v3.6.0.json +629 -0
  355. package/dist/schemas/project-schema/meta-schema-v3.7.0.json +1137 -0
  356. package/dist/schemas/project-schema/meta-schema-v3.8.0.json +1137 -0
  357. package/dist/schemas/project-schema/meta-schema-v3.9.0.json +1477 -0
  358. package/dist/schemas/project-schema/v1.0.0.json +321 -0
  359. package/dist/schemas/project-schema/v3.0.0.json +414 -0
  360. package/dist/schemas/project-schema/v3.1.0.json +572 -0
  361. package/dist/schemas/project-schema/v3.10.0.json +2097 -0
  362. package/dist/schemas/project-schema/v3.11.0.json +2141 -0
  363. package/dist/schemas/project-schema/v3.12.0.json +2144 -0
  364. package/dist/schemas/project-schema/v3.12.1.json +2282 -0
  365. package/dist/schemas/project-schema/v3.12.2.json +2304 -0
  366. package/dist/schemas/project-schema/v3.12.3.json +2357 -0
  367. package/dist/schemas/project-schema/v3.13.0.json +2377 -0
  368. package/dist/schemas/project-schema/v3.14.0.json +2385 -0
  369. package/dist/schemas/project-schema/v3.15.0.json +2365 -0
  370. package/dist/schemas/project-schema/v3.16.0.json +2373 -0
  371. package/dist/schemas/project-schema/v3.17.0.json +2378 -0
  372. package/dist/schemas/project-schema/v3.17.1.json +2380 -0
  373. package/dist/schemas/project-schema/v3.18.0.json +2356 -0
  374. package/dist/schemas/project-schema/v3.18.1.json +2357 -0
  375. package/dist/schemas/project-schema/v3.18.2.json +2357 -0
  376. package/dist/schemas/project-schema/v3.19.0.json +2369 -0
  377. package/dist/schemas/project-schema/v3.2.0.json +580 -0
  378. package/dist/schemas/project-schema/v3.20.0.json +2369 -0
  379. package/dist/schemas/project-schema/v3.21.0.json +2376 -0
  380. package/dist/schemas/project-schema/v3.22.0.json +2381 -0
  381. package/dist/schemas/project-schema/v3.23.0.json +2456 -0
  382. package/dist/schemas/project-schema/v3.24.0.json +2556 -0
  383. package/dist/schemas/project-schema/v3.25.0.json +2552 -0
  384. package/dist/schemas/project-schema/v3.26.0.json +2599 -0
  385. package/dist/schemas/project-schema/v3.27.0.json +2611 -0
  386. package/dist/schemas/project-schema/v3.28.0.json +2656 -0
  387. package/dist/schemas/project-schema/v3.29.0.json +2670 -0
  388. package/dist/schemas/project-schema/v3.3.0.json +581 -0
  389. package/dist/schemas/project-schema/v3.30.0.json +2656 -0
  390. package/dist/schemas/project-schema/v3.31.0.json +2714 -0
  391. package/dist/schemas/project-schema/v3.32.0.json +2708 -0
  392. package/dist/schemas/project-schema/v3.33.0.json +2715 -0
  393. package/dist/schemas/project-schema/v3.34.0.json +2715 -0
  394. package/dist/schemas/project-schema/v3.35.0.json +2748 -0
  395. package/dist/schemas/project-schema/v3.36.0.json +2756 -0
  396. package/dist/schemas/project-schema/v3.37.0.json +2821 -0
  397. package/dist/schemas/project-schema/v3.38.0.json +2819 -0
  398. package/dist/schemas/project-schema/v3.39.0.json +2827 -0
  399. package/dist/schemas/project-schema/v3.4.0.json +571 -0
  400. package/dist/schemas/project-schema/v3.40.0.json +2830 -0
  401. package/dist/schemas/project-schema/v3.41.0.json +2830 -0
  402. package/dist/schemas/project-schema/v3.42.0.json +2835 -0
  403. package/dist/schemas/project-schema/v3.43.0.json +2841 -0
  404. package/dist/schemas/project-schema/v3.44.0.json +3013 -0
  405. package/dist/schemas/project-schema/v3.45.0.json +3064 -0
  406. package/dist/schemas/project-schema/v3.46.0.json +3136 -0
  407. package/dist/schemas/project-schema/v3.47.0.json +3189 -0
  408. package/dist/schemas/project-schema/v3.48.0.json +3196 -0
  409. package/dist/schemas/project-schema/v3.49.0.json +3239 -0
  410. package/dist/schemas/project-schema/v3.5.0.json +571 -0
  411. package/dist/schemas/project-schema/v3.5.1.json +571 -0
  412. package/dist/schemas/project-schema/v3.50.0.json +3320 -0
  413. package/dist/schemas/project-schema/v3.51.0.json +3326 -0
  414. package/dist/schemas/project-schema/v3.52.0.json +3326 -0
  415. package/dist/schemas/project-schema/v3.53.0.json +3476 -0
  416. package/dist/schemas/project-schema/v3.54.0.json +3512 -0
  417. package/dist/schemas/project-schema/v3.55.0.json +3515 -0
  418. package/dist/schemas/project-schema/v3.56.0.json +3530 -0
  419. package/dist/schemas/project-schema/v3.57.0.json +4815 -0
  420. package/dist/schemas/project-schema/v3.58.0.json +4815 -0
  421. package/dist/schemas/project-schema/v3.59.0.json +4912 -0
  422. package/dist/schemas/project-schema/v3.6.0.json +587 -0
  423. package/dist/schemas/project-schema/v3.60.0.json +4974 -0
  424. package/dist/schemas/project-schema/v3.61.0.json +4974 -0
  425. package/dist/schemas/project-schema/v3.62.0.json +5007 -0
  426. package/dist/schemas/project-schema/v3.63.0.json +5020 -0
  427. package/dist/schemas/project-schema/v3.64.0.json +5032 -0
  428. package/dist/schemas/project-schema/v3.65.0.json +5109 -0
  429. package/dist/schemas/project-schema/v3.7.0.json +587 -0
  430. package/dist/schemas/project-schema/v3.8.0.json +604 -0
  431. package/dist/schemas/project-schema/v3.9.0.json +604 -0
  432. package/dist/schemas/project-schema/v4.0.0.json +2316 -0
  433. package/dist/schemas/project-schema.json +232 -0
  434. package/dist/service-dependencies.d.ts +13 -0
  435. package/dist/service-dependencies.js +165 -0
  436. package/dist/services/services.d.ts +31 -0
  437. package/dist/services/services.js +145 -0
  438. package/dist/services/types.d.ts +11 -0
  439. package/dist/services/types.js +1 -0
  440. package/dist/services/util.d.ts +16 -0
  441. package/dist/services/util.js +36 -0
  442. package/dist/shape-paths.d.ts +7 -0
  443. package/dist/shape-paths.js +40 -0
  444. package/dist/taxonomies.d.ts +15 -0
  445. package/dist/taxonomies.js +24 -0
  446. package/dist/template-shapes/index.d.ts +7 -0
  447. package/dist/template-shapes/index.js +33 -0
  448. package/dist/template-shapes/names.d.ts +10 -0
  449. package/dist/template-shapes/names.js +21 -0
  450. package/dist/template-shapes/templates.d.ts +32 -0
  451. package/dist/template-shapes/templates.js +316 -0
  452. package/dist/template-shapes/types.d.ts +15 -0
  453. package/dist/template-shapes/types.js +7 -0
  454. package/dist/template-shapes/where.d.ts +37 -0
  455. package/dist/template-shapes/where.js +415 -0
  456. package/dist/types/index.d.ts +3 -0
  457. package/dist/types/index.js +2 -0
  458. package/dist/types/transforms.d.ts +15 -0
  459. package/dist/types/transforms.js +1 -0
  460. package/dist/types/types.d.ts +206 -0
  461. package/dist/types/types.js +10 -0
  462. package/dist/types/utils.d.ts +112 -0
  463. package/dist/types/utils.js +269 -0
  464. package/dist/unions.d.ts +14 -0
  465. package/dist/unions.js +77 -0
  466. package/dist/util/agent-utils.d.ts +2 -0
  467. package/dist/util/agent-utils.js +7 -0
  468. package/dist/util/api-indexing.d.ts +9 -0
  469. package/dist/util/api-indexing.js +57 -0
  470. package/dist/util/coerce-value.d.ts +9 -0
  471. package/dist/util/coerce-value.js +32 -0
  472. package/dist/util/detect-cycles.d.ts +7 -0
  473. package/dist/util/detect-cycles.js +45 -0
  474. package/dist/util/expressions.d.ts +34 -0
  475. package/dist/util/expressions.js +350 -0
  476. package/dist/util/find-shape-at-path.d.ts +21 -0
  477. package/dist/util/find-shape-at-path.js +53 -0
  478. package/dist/util/form-config.d.ts +11 -0
  479. package/dist/util/form-config.js +62 -0
  480. package/dist/util/get-conflicting-properties.d.ts +6 -0
  481. package/dist/util/get-conflicting-properties.js +55 -0
  482. package/dist/util/get-return-shape.d.ts +4 -0
  483. package/dist/util/get-return-shape.js +30 -0
  484. package/dist/util/graphql-string.d.ts +6 -0
  485. package/dist/util/graphql-string.js +75 -0
  486. package/dist/util/has-arg.d.ts +6 -0
  487. package/dist/util/has-arg.js +25 -0
  488. package/dist/util/is-asset-property.d.ts +3 -0
  489. package/dist/util/is-asset-property.js +11 -0
  490. package/dist/util/merge.d.ts +17 -0
  491. package/dist/util/merge.js +278 -0
  492. package/dist/util/patch-schema.d.ts +13 -0
  493. package/dist/util/patch-schema.js +89 -0
  494. package/dist/util/query-field-path.d.ts +9 -0
  495. package/dist/util/query-field-path.js +23 -0
  496. package/dist/util/shapes.d.ts +5 -0
  497. package/dist/util/shapes.js +22 -0
  498. package/dist/util/tools.d.ts +10 -0
  499. package/dist/util/tools.js +39 -0
  500. package/dist/validate/ai.d.ts +6 -0
  501. package/dist/validate/ai.js +221 -0
  502. package/dist/validate/errors.d.ts +3 -0
  503. package/dist/validate/errors.js +20 -0
  504. package/dist/validate/types.d.ts +43 -0
  505. package/dist/validate/types.js +1 -0
  506. package/dist/validate/util.d.ts +9 -0
  507. package/dist/validate/util.js +62 -0
  508. package/dist/validate/validate.d.ts +41 -0
  509. package/dist/validate/validate.js +1042 -0
  510. package/dist/versions.d.ts +4 -0
  511. package/dist/versions.js +4 -0
  512. package/dist/workflows.d.ts +14 -0
  513. package/dist/workflows.js +66 -0
  514. package/package.json +6 -6
@@ -0,0 +1,232 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://schema.takeshape.io/project-schema#",
4
+ "title": "Any Project Schema",
5
+ "oneOf": [
6
+ {
7
+ "$ref": "https://schema.takeshape.io/project-schema/v1.0.0#"
8
+ },
9
+ {
10
+ "$ref": "https://schema.takeshape.io/project-schema/v3.0.0#"
11
+ },
12
+ {
13
+ "$ref": "https://schema.takeshape.io/project-schema/v3.1.0#"
14
+ },
15
+ {
16
+ "$ref": "https://schema.takeshape.io/project-schema/v3.2.0#"
17
+ },
18
+ {
19
+ "$ref": "https://schema.takeshape.io/project-schema/v3.3.0#"
20
+ },
21
+ {
22
+ "$ref": "https://schema.takeshape.io/project-schema/v3.4.0#"
23
+ },
24
+ {
25
+ "$ref": "https://schema.takeshape.io/project-schema/v3.5.0#"
26
+ },
27
+ {
28
+ "$ref": "https://schema.takeshape.io/project-schema/v3.5.1#"
29
+ },
30
+ {
31
+ "$ref": "https://schema.takeshape.io/project-schema/v3.6.0#"
32
+ },
33
+ {
34
+ "$ref": "https://schema.takeshape.io/project-schema/v3.7.0#"
35
+ },
36
+ {
37
+ "$ref": "https://schema.takeshape.io/project-schema/v3.8.0#"
38
+ },
39
+ {
40
+ "$ref": "https://schema.takeshape.io/project-schema/v3.9.0#"
41
+ },
42
+ {
43
+ "$ref": "https://schema.takeshape.io/project-schema/v3.10.0#"
44
+ },
45
+ {
46
+ "$ref": "https://schema.takeshape.io/project-schema/v3.11.0#"
47
+ },
48
+ {
49
+ "$ref": "https://schema.takeshape.io/project-schema/v3.12.0#"
50
+ },
51
+ {
52
+ "$ref": "https://schema.takeshape.io/project-schema/v3.12.1#"
53
+ },
54
+ {
55
+ "$ref": "https://schema.takeshape.io/project-schema/v3.12.2#"
56
+ },
57
+ {
58
+ "$ref": "https://schema.takeshape.io/project-schema/v3.12.3#"
59
+ },
60
+ {
61
+ "$ref": "https://schema.takeshape.io/project-schema/v3.13.0#"
62
+ },
63
+ {
64
+ "$ref": "https://schema.takeshape.io/project-schema/v3.14.0#"
65
+ },
66
+ {
67
+ "$ref": "https://schema.takeshape.io/project-schema/v3.15.0#"
68
+ },
69
+ {
70
+ "$ref": "https://schema.takeshape.io/project-schema/v3.16.0#"
71
+ },
72
+ {
73
+ "$ref": "https://schema.takeshape.io/project-schema/v3.17.0#"
74
+ },
75
+ {
76
+ "$ref": "https://schema.takeshape.io/project-schema/v3.17.1#"
77
+ },
78
+ {
79
+ "$ref": "https://schema.takeshape.io/project-schema/v3.18.0#"
80
+ },
81
+ {
82
+ "$ref": "https://schema.takeshape.io/project-schema/v3.18.1#"
83
+ },
84
+ {
85
+ "$ref": "https://schema.takeshape.io/project-schema/v3.18.2#"
86
+ },
87
+ {
88
+ "$ref": "https://schema.takeshape.io/project-schema/v3.19.0#"
89
+ },
90
+ {
91
+ "$ref": "https://schema.takeshape.io/project-schema/v3.20.0#"
92
+ },
93
+ {
94
+ "$ref": "https://schema.takeshape.io/project-schema/v3.21.0#"
95
+ },
96
+ {
97
+ "$ref": "https://schema.takeshape.io/project-schema/v3.22.0#"
98
+ },
99
+ {
100
+ "$ref": "https://schema.takeshape.io/project-schema/v3.23.0#"
101
+ },
102
+ {
103
+ "$ref": "https://schema.takeshape.io/project-schema/v3.24.0#"
104
+ },
105
+ {
106
+ "$ref": "https://schema.takeshape.io/project-schema/v3.25.0#"
107
+ },
108
+ {
109
+ "$ref": "https://schema.takeshape.io/project-schema/v3.26.0#"
110
+ },
111
+ {
112
+ "$ref": "https://schema.takeshape.io/project-schema/v3.27.0#"
113
+ },
114
+ {
115
+ "$ref": "https://schema.takeshape.io/project-schema/v3.28.0#"
116
+ },
117
+ {
118
+ "$ref": "https://schema.takeshape.io/project-schema/v3.29.0#"
119
+ },
120
+ {
121
+ "$ref": "https://schema.takeshape.io/project-schema/v3.30.0#"
122
+ },
123
+ {
124
+ "$ref": "https://schema.takeshape.io/project-schema/v3.31.0#"
125
+ },
126
+ {
127
+ "$ref": "https://schema.takeshape.io/project-schema/v3.32.0#"
128
+ },
129
+ {
130
+ "$ref": "https://schema.takeshape.io/project-schema/v3.33.0#"
131
+ },
132
+ {
133
+ "$ref": "https://schema.takeshape.io/project-schema/v3.34.0#"
134
+ },
135
+ {
136
+ "$ref": "https://schema.takeshape.io/project-schema/v3.35.0#"
137
+ },
138
+ {
139
+ "$ref": "https://schema.takeshape.io/project-schema/v3.36.0#"
140
+ },
141
+ {
142
+ "$ref": "https://schema.takeshape.io/project-schema/v3.37.0#"
143
+ },
144
+ {
145
+ "$ref": "https://schema.takeshape.io/project-schema/v3.38.0#"
146
+ },
147
+ {
148
+ "$ref": "https://schema.takeshape.io/project-schema/v3.39.0#"
149
+ },
150
+ {
151
+ "$ref": "https://schema.takeshape.io/project-schema/v3.40.0#"
152
+ },
153
+ {
154
+ "$ref": "https://schema.takeshape.io/project-schema/v3.41.0#"
155
+ },
156
+ {
157
+ "$ref": "https://schema.takeshape.io/project-schema/v3.42.0#"
158
+ },
159
+ {
160
+ "$ref": "https://schema.takeshape.io/project-schema/v3.43.0#"
161
+ },
162
+ {
163
+ "$ref": "https://schema.takeshape.io/project-schema/v3.44.0#"
164
+ },
165
+ {
166
+ "$ref": "https://schema.takeshape.io/project-schema/v3.45.0#"
167
+ },
168
+ {
169
+ "$ref": "https://schema.takeshape.io/project-schema/v3.46.0#"
170
+ },
171
+ {
172
+ "$ref": "https://schema.takeshape.io/project-schema/v3.47.0#"
173
+ },
174
+ {
175
+ "$ref": "https://schema.takeshape.io/project-schema/v3.48.0#"
176
+ },
177
+ {
178
+ "$ref": "https://schema.takeshape.io/project-schema/v3.49.0#"
179
+ },
180
+ {
181
+ "$ref": "https://schema.takeshape.io/project-schema/v3.50.0#"
182
+ },
183
+ {
184
+ "$ref": "https://schema.takeshape.io/project-schema/v3.51.0#"
185
+ },
186
+ {
187
+ "$ref": "https://schema.takeshape.io/project-schema/v3.52.0#"
188
+ },
189
+ {
190
+ "$ref": "https://schema.takeshape.io/project-schema/v3.53.0#"
191
+ },
192
+ {
193
+ "$ref": "https://schema.takeshape.io/project-schema/v3.54.0#"
194
+ },
195
+ {
196
+ "$ref": "https://schema.takeshape.io/project-schema/v3.55.0#"
197
+ },
198
+ {
199
+ "$ref": "https://schema.takeshape.io/project-schema/v3.56.0#"
200
+ },
201
+ {
202
+ "$ref": "https://schema.takeshape.io/project-schema/v3.57.0#"
203
+ },
204
+ {
205
+ "$ref": "https://schema.takeshape.io/project-schema/v3.58.0#"
206
+ },
207
+ {
208
+ "$ref": "https://schema.takeshape.io/project-schema/v3.59.0#"
209
+ },
210
+ {
211
+ "$ref": "https://schema.takeshape.io/project-schema/v3.60.0#"
212
+ },
213
+ {
214
+ "$ref": "https://schema.takeshape.io/project-schema/v3.61.0#"
215
+ },
216
+ {
217
+ "$ref": "https://schema.takeshape.io/project-schema/v3.62.0#"
218
+ },
219
+ {
220
+ "$ref": "https://schema.takeshape.io/project-schema/v3.63.0#"
221
+ },
222
+ {
223
+ "$ref": "https://schema.takeshape.io/project-schema/v3.64.0#"
224
+ },
225
+ {
226
+ "$ref": "https://schema.takeshape.io/project-schema/v3.65.0#"
227
+ },
228
+ {
229
+ "$ref": "https://schema.takeshape.io/project-schema/v4.0.0#"
230
+ }
231
+ ]
232
+ }
@@ -0,0 +1,13 @@
1
+ import type { ProjectSchemaJSON, PropertySchema } from './project-schema/index.ts';
2
+ import { type ServicesContext } from './refs.ts';
3
+ import { type ServiceLayers } from './types/index.ts';
4
+ /**
5
+ * Add all referenced shape names to the refSet meant to be used as a callback to visitSchemaProperties
6
+ */
7
+ export declare function collectReferencedShapeNames(context: ServicesContext, shapeNames: Set<string>): (schema: PropertySchema) => void;
8
+ /**
9
+ * Returns a schema with all of its dependencies resolved.
10
+ * SHOULD only return the minimum set of remote dependencies required to enable
11
+ * the local shape definitions.
12
+ */
13
+ export declare function resolveSchemaShapeDependencies(projectSchema: ProjectSchemaJSON, serviceLayers: ServiceLayers): ProjectSchemaJSON;
@@ -0,0 +1,165 @@
1
+ import { addAll, deepClone, mapSet } from '@takeshape/util';
2
+ import get from 'lodash/get.js';
3
+ import isObject from 'lodash/isObject.js';
4
+ import pick from 'lodash/pick.js';
5
+ import set from 'lodash/set.js';
6
+ import { getImplementationShapeNameMap, isInterfaceShape, pruneUnusedInterfaces } from "./interfaces.js";
7
+ import { createGetNamespace, dereferenceObjectSchema, getAllPropertyRefs, getRef, getRefShapeName, isValidRefItem, propertyRefItemToPath, refExpressionToNamespacedName, refItemToNamespacedShapeName } from "./refs.js";
8
+ import { getAllNamespaceShapes, getAllRefsInQuery, getArgsReference, visitSchemaProperties } from "./schema-util.js";
9
+ import { isExtendsSchema, isObjectSchema, isProjectSchemaWithServices } from "./types/index.js";
10
+ function getGraphQLServiceShapeMap(layers) {
11
+ return Object.assign({}, ...Object.values(layers).map((layer) => layer.schema?.shapes ?? {}));
12
+ }
13
+ function schemaExtendsShape(context, shapeName, schema) {
14
+ return (isExtendsSchema(schema) &&
15
+ schema.extends.some((item) => getRefShapeName(context, item) === shapeName));
16
+ }
17
+ function getMissingPropertyRefs(projectSchema, getNamespace) {
18
+ const propertyRefs = getAllPropertyRefs(projectSchema);
19
+ return propertyRefs.filter((ref) => {
20
+ const path = propertyRefItemToPath(getNamespace, ref);
21
+ return !get(projectSchema, path);
22
+ });
23
+ }
24
+ function refToQuery(serviceSchemas, ref) {
25
+ const serviceSchema = serviceSchemas[ref.layerId]?.schema;
26
+ if (serviceSchema) {
27
+ if (ref.shapeName === 'Query' || ref.shapeName === 'Mutation') {
28
+ const operation = ref.shapeName === 'Query' ? 'queries' : 'mutations';
29
+ return serviceSchema[operation][ref.propertyName];
30
+ }
31
+ }
32
+ }
33
+ function getShapeRefs(services, serviceSchemas, propertyRefs) {
34
+ const results = [];
35
+ for (const ref of propertyRefs) {
36
+ const query = refToQuery(serviceSchemas, ref);
37
+ const layerSchema = serviceSchemas[ref.layerId]?.schema;
38
+ if (query && layerSchema) {
39
+ const layerWithService = {
40
+ ...layerSchema,
41
+ services: pick(services, [ref.layerId]) // include own service so refs have isValidService: true
42
+ };
43
+ results.push(...getAllRefsInQuery(layerWithService, [], query));
44
+ }
45
+ }
46
+ return results;
47
+ }
48
+ function interfacesToShapeNames(projectSchema, shapeRefArray) {
49
+ return shapeRefArray.map((shapeRef) => refExpressionToNamespacedName(projectSchema, shapeRef));
50
+ }
51
+ /**
52
+ * Add all referenced shape names to the refSet meant to be used as a callback to visitSchemaProperties
53
+ */
54
+ export function collectReferencedShapeNames(context, shapeNames) {
55
+ const addRef = (refItem) => {
56
+ shapeNames.add(refItemToNamespacedShapeName(context, refItem));
57
+ };
58
+ const collect = (schema) => {
59
+ const args = schema['@args'];
60
+ if (args && isObject(args) && isObjectSchema(args)) {
61
+ Object.values(args.properties).forEach(collect);
62
+ }
63
+ const argsRefItem = getArgsReference(context, schema);
64
+ if (argsRefItem) {
65
+ addRef(argsRefItem);
66
+ }
67
+ const refItem = getRef(context, schema);
68
+ if (refItem) {
69
+ addRef(refItem);
70
+ }
71
+ };
72
+ return collect;
73
+ }
74
+ /**
75
+ * Returns a schema with all of its dependencies resolved.
76
+ * SHOULD only return the minimum set of remote dependencies required to enable
77
+ * the local shape definitions.
78
+ */
79
+ export function resolveSchemaShapeDependencies(projectSchema, serviceLayers) {
80
+ const newSchema = deepClone(projectSchema);
81
+ if (isProjectSchemaWithServices(projectSchema)) {
82
+ const newShapeMap = {};
83
+ const requiredShapeNames = new Set(getAllNamespaceShapes(projectSchema));
84
+ const getNamespace = createGetNamespace(projectSchema);
85
+ const missingPropertyRefs = getMissingPropertyRefs(projectSchema, getNamespace);
86
+ if (requiredShapeNames.size || missingPropertyRefs.length) {
87
+ const remoteShapeMap = getGraphQLServiceShapeMap(serviceLayers);
88
+ // Add shape references from queries
89
+ addAll(requiredShapeNames, getShapeRefs(projectSchema.services, serviceLayers, missingPropertyRefs)
90
+ .filter(isValidRefItem(projectSchema))
91
+ .map((item) => refItemToNamespacedShapeName(projectSchema, item)));
92
+ // Add referenced queries and mutations
93
+ for (const ref of missingPropertyRefs) {
94
+ const query = refToQuery(serviceLayers, ref);
95
+ if (query) {
96
+ set(newSchema, propertyRefItemToPath(getNamespace, ref), query);
97
+ }
98
+ }
99
+ // Gather all the remote dependencies that our local schema requires.
100
+ // If the required shape exists in the remote shape map, visit the
101
+ // properties on the remote shape's schema and ensure they are required
102
+ // as well.
103
+ const collectDependencies = (shapeNames) => {
104
+ for (const name of shapeNames) {
105
+ const localShape = newSchema.shapes[name];
106
+ const remoteShape = remoteShapeMap[name];
107
+ // Don't check for dependencies if the shape is already in our schema unless it extends a remote shape
108
+ // getNamespacedShapeNameList already collected those dependencies
109
+ if ((!localShape || (localShape && schemaExtendsShape(projectSchema, name, localShape.schema))) &&
110
+ remoteShape) {
111
+ visitSchemaProperties(remoteShape.schema, [remoteShape.name, 'schema'], collectReferencedShapeNames({ services: newSchema.services }, shapeNames));
112
+ }
113
+ }
114
+ };
115
+ collectDependencies(requiredShapeNames);
116
+ // Collect interfaces that requiredShapeNames implement
117
+ const interfaceNames = new Set();
118
+ const requiredShapes = mapSet(requiredShapeNames, (shapeName) => newSchema.shapes[shapeName] ?? remoteShapeMap[shapeName]);
119
+ for (const shape of requiredShapes) {
120
+ if (shape?.interfaces) {
121
+ addAll(interfaceNames, interfacesToShapeNames(projectSchema, shape.interfaces));
122
+ }
123
+ }
124
+ // Collect implementations for interfaces in requiredShapeNames
125
+ const implementationNames = new Set();
126
+ const implementations = getImplementationShapeNameMap({
127
+ ...newSchema.shapes,
128
+ ...remoteShapeMap
129
+ });
130
+ for (const shape of requiredShapes) {
131
+ if (isInterfaceShape(shape) && implementations[shape.name]) {
132
+ addAll(implementationNames, implementations[shape.name]);
133
+ }
134
+ }
135
+ // Collect the dependencies for the interfaces and implementations
136
+ collectDependencies(interfaceNames);
137
+ collectDependencies(implementationNames);
138
+ addAll(requiredShapeNames, interfaceNames);
139
+ addAll(requiredShapeNames, implementationNames);
140
+ // Populate a ShapeMap with the remote shapes we've gathered
141
+ // A combined context which prefers remote shapes for use when merging/inlining
142
+ const mergingContext = {
143
+ services: newSchema.services,
144
+ shapes: { ...newSchema.shapes, ...remoteShapeMap }
145
+ };
146
+ for (const name of requiredShapeNames) {
147
+ const localShape = newSchema.shapes[name];
148
+ const remoteShape = remoteShapeMap[name];
149
+ if (localShape && remoteShape && schemaExtendsShape(mergingContext, name, localShape.schema)) {
150
+ // Merge and inline combined shape when a local shape extends a remote shape
151
+ newShapeMap[name] = {
152
+ ...localShape,
153
+ schema: dereferenceObjectSchema(mergingContext, newSchema.shapes[name].schema)
154
+ };
155
+ }
156
+ else if (localShape ?? remoteShape) {
157
+ newShapeMap[name] = localShape ?? remoteShape;
158
+ }
159
+ }
160
+ }
161
+ // Assign remote shapes to the new schema, mutating the new schema
162
+ Object.assign(newSchema.shapes, pruneUnusedInterfaces(newSchema, newShapeMap));
163
+ }
164
+ return newSchema;
165
+ }
@@ -0,0 +1,31 @@
1
+ import type { Overwrite } from '@takeshape/util';
2
+ import { SERVICE_OBJECT_PATTERN_NAME } from '../constants.ts';
3
+ import type { ProjectSchemaJSON, ServiceConfig, ServiceConfigJSON, ServiceMapJSON, ShapeJSON } from '../project-schema/index.ts';
4
+ import type { PatternGenerator, ServiceConfigUpdate, ServiceInfo, ServiceMap } from '../types/types.ts';
5
+ import type { DecryptFn, EncryptFn } from './types.ts';
6
+ /**
7
+ * Given a `StoredServiceConfig` returns a usable `ServiceConfig` with the
8
+ * authentication object decrypted.
9
+ */
10
+ export declare function decryptServiceConfig(decryptFn: DecryptFn, storedServiceConfig: ServiceConfigJSON): ServiceConfig;
11
+ /**
12
+ * Given a `ServiceMapJSON` returns a usable `ServiceMap` with all the
13
+ * authentication objects decrypted.
14
+ */
15
+ export declare function decryptServiceMap(decryptFn: DecryptFn, ServiceMapJSON: ServiceMapJSON): Promise<ServiceMap>;
16
+ /**
17
+ * Validates a `ServiceConfig` validator based on the JSON-schema.
18
+ */
19
+ export declare function validateServiceConfig(maybeServiceConfig: unknown): ServiceConfigJSON;
20
+ /**
21
+ * Prepare a `ServiceConfig` object update, validating the overall structure
22
+ * and encrypting the `ServiceAuthentication` object.
23
+ */
24
+ export declare function prepareServiceUpdate(encryptFn: EncryptFn, decryptFn: DecryptFn, projectSchema: ProjectSchemaJSON, serviceConfigUpdate: ServiceConfigUpdate, serviceKey: string): ServiceConfigJSON;
25
+ export type ServiceInfoWithServiceObject = Overwrite<ServiceInfo, {
26
+ generators: {
27
+ [SERVICE_OBJECT_PATTERN_NAME]: PatternGenerator;
28
+ };
29
+ }>;
30
+ export declare function getServiceObjectFields(projectSchema: ProjectSchemaJSON, shape: ShapeJSON, provider: string): ServiceInfoWithServiceObject[];
31
+ export declare function getServiceInfo(projectSchema: ProjectSchemaJSON, shape: ShapeJSON): Record<string, ServiceInfo[]>;
@@ -0,0 +1,145 @@
1
+ import { SchemaValidationError } from '@takeshape/errors';
2
+ import { createAjv } from '@takeshape/json-schema';
3
+ import { mergeWithArrayMerge } from '@takeshape/util';
4
+ import isEqual from 'lodash/isEqual.js';
5
+ import isNull from 'lodash/isNull.js';
6
+ import { SERVICE_OBJECT_PATTERN_NAME } from "../constants.js";
7
+ import { createSchemaPropertyList, getGeneratorVersion, getServiceIdFieldName, getShapeDependencies, pathBetween } from "../schema-util.js";
8
+ import { latestSchemaJson } from "../schemas/index.js";
9
+ import { isEncryptedServiceConfig, isServiceAuthentication, isServiceResolver } from "../types/utils.js";
10
+ import { formatError } from "../validate/errors.js";
11
+ import { getStoredServiceConfig } from "./util.js";
12
+ /**
13
+ * Given a `StoredServiceConfig` returns a usable `ServiceConfig` with the
14
+ * authentication object decrypted.
15
+ */
16
+ export function decryptServiceConfig(decryptFn, storedServiceConfig) {
17
+ let authentication;
18
+ if (isEncryptedServiceConfig(storedServiceConfig)) {
19
+ const decrypted = decryptFn(storedServiceConfig.authentication);
20
+ if (isServiceAuthentication(decrypted)) {
21
+ authentication = decrypted;
22
+ }
23
+ }
24
+ return {
25
+ ...storedServiceConfig,
26
+ authentication
27
+ };
28
+ }
29
+ /**
30
+ * Given a `ServiceMapJSON` returns a usable `ServiceMap` with all the
31
+ * authentication objects decrypted.
32
+ */
33
+ export async function decryptServiceMap(decryptFn, ServiceMapJSON) {
34
+ return Object.entries(ServiceMapJSON).reduce((result, [serviceKey, serviceConfig]) => {
35
+ return result.set(serviceKey, decryptServiceConfig(decryptFn, serviceConfig));
36
+ }, new Map());
37
+ }
38
+ function createServiceConfigValidator() {
39
+ const validator = createAjv();
40
+ const { serviceConfig, ...definitions } = latestSchemaJson.definitions;
41
+ return validator.compile({
42
+ $id: 'ServiceConfig',
43
+ definitions,
44
+ ...serviceConfig
45
+ });
46
+ }
47
+ const serviceConfigValidator = createServiceConfigValidator();
48
+ /**
49
+ * Validates a `ServiceConfig` validator based on the JSON-schema.
50
+ */
51
+ export function validateServiceConfig(maybeServiceConfig) {
52
+ if (serviceConfigValidator(maybeServiceConfig)) {
53
+ return maybeServiceConfig;
54
+ }
55
+ throw new SchemaValidationError('ServiceConfig was invalid', serviceConfigValidator.errors?.map(formatError));
56
+ }
57
+ /**
58
+ * Prepare a `ServiceConfig` object update, validating the overall structure
59
+ * and encrypting the `ServiceAuthentication` object.
60
+ */
61
+ export function prepareServiceUpdate(encryptFn, decryptFn, projectSchema, serviceConfigUpdate, serviceKey) {
62
+ const storedServiceConfig = getStoredServiceConfig(projectSchema, serviceKey);
63
+ let newServiceConfig = serviceConfigUpdate;
64
+ if (storedServiceConfig) {
65
+ const existingServiceConfig = decryptServiceConfig(decryptFn, storedServiceConfig);
66
+ newServiceConfig = mergeWithArrayMerge(existingServiceConfig, serviceConfigUpdate);
67
+ }
68
+ const { authentication, authenticationType } = newServiceConfig;
69
+ if (authenticationType === 'none' || isNull(authentication)) {
70
+ // biome-ignore lint/performance/noDelete: Property presence may matter here
71
+ delete newServiceConfig.authentication;
72
+ }
73
+ else if (authentication !== undefined) {
74
+ // Add the discriminator to the authentication object, set authenticationType
75
+ // to ensure the update is correct for the auth type.
76
+ newServiceConfig.authentication = {
77
+ ...authentication,
78
+ type: authenticationType
79
+ };
80
+ }
81
+ validateServiceConfig(newServiceConfig);
82
+ let serviceConfig;
83
+ if (newServiceConfig.authentication) {
84
+ serviceConfig = {
85
+ ...newServiceConfig,
86
+ authentication: encryptFn(newServiceConfig.authentication)
87
+ };
88
+ }
89
+ else {
90
+ serviceConfig = newServiceConfig;
91
+ }
92
+ return serviceConfig;
93
+ }
94
+ export function getServiceObjectFields(projectSchema, shape, provider) {
95
+ return (getServiceInfo(projectSchema, shape)[provider] ?? []).filter((serviceInfo) => serviceInfo.generators[SERVICE_OBJECT_PATTERN_NAME]);
96
+ }
97
+ // Returns info for all services found in shape, keyed by provider
98
+ export function getServiceInfo(projectSchema, shape) {
99
+ const result = {};
100
+ // Get inline dependencies by not following refs with @resolver
101
+ const inlineDepShapes = getShapeDependencies(projectSchema, shape, (prop) => !prop['@resolver']).map((name) => projectSchema.shapes[name]);
102
+ const shapesToCheck = [shape, ...inlineDepShapes];
103
+ for (const thisShape of shapesToCheck) {
104
+ // biome-ignore lint/complexity/noForEach: Types for createSchemaPropertyList do not include the iterator
105
+ createSchemaPropertyList(projectSchema, thisShape).forEach(([key, value]) => {
106
+ const resolver = value['@resolver'];
107
+ if (!isServiceResolver(resolver)) {
108
+ return;
109
+ }
110
+ const serviceConfig = getStoredServiceConfig(projectSchema, resolver.service);
111
+ if (!serviceConfig) {
112
+ return;
113
+ }
114
+ const { provider } = serviceConfig;
115
+ const generators = {};
116
+ const tag = value['@tag'];
117
+ if (tag?.startsWith(SERVICE_OBJECT_PATTERN_NAME)) {
118
+ const idFieldName = getServiceIdFieldName(key);
119
+ const version = tag.substr(Number(tag.lastIndexOf(':')) + 1);
120
+ generators[SERVICE_OBJECT_PATTERN_NAME] = {
121
+ version,
122
+ currentVersion: getGeneratorVersion(SERVICE_OBJECT_PATTERN_NAME),
123
+ idFieldName,
124
+ serviceObjectType: resolver.fieldName
125
+ };
126
+ }
127
+ const serviceInfo = {
128
+ service: resolver.service,
129
+ fieldName: key,
130
+ path: pathBetween(shape, thisShape, projectSchema),
131
+ generators
132
+ };
133
+ if (Array.isArray(result[provider])) {
134
+ // Dedupe service info
135
+ if (!result[provider].find((existingServiceInfo) => isEqual(existingServiceInfo, serviceInfo))) {
136
+ result[provider].push(serviceInfo);
137
+ }
138
+ }
139
+ else {
140
+ result[provider] = [serviceInfo];
141
+ }
142
+ });
143
+ }
144
+ return result;
145
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Decrypt an encrypted authentication JSON string
3
+ * Throws an error if decryption fails
4
+ */
5
+ export type DecryptFn = (authentication: string) => object;
6
+ /**
7
+ * Decrypt an encrypted authentication JSON string
8
+ * Returns undefined if decryption fails
9
+ */
10
+ export type SafeDecryptFn = (authentication: string) => object | undefined;
11
+ export type EncryptFn = (authentication: object) => string;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { ProjectSchemaJSON, Resolver, ServiceConfig, ServiceConfigJSON } from '../project-schema/index.ts';
2
+ import type { ServiceKey } from '../types/types.ts';
3
+ /**
4
+ * Get a service config from a project schema.
5
+ */
6
+ export declare function getStoredServiceConfig(projectSchema: ProjectSchemaJSON, serviceKey: ServiceKey): ServiceConfigJSON | undefined;
7
+ /**
8
+ * Get a `Map` keyed with all the service namespaces.
9
+ *
10
+ * @param context A partial project schema
11
+ *
12
+ * @returns A `Map` with namespaces as keys, and service keys as values.
13
+ */
14
+ export declare function getServiceNamespaces(context: Pick<ProjectSchemaJSON, 'services'>): Map<string, string>;
15
+ export declare function isMissingAuth(service: Pick<ServiceConfig | ServiceConfigJSON, 'authenticationType' | 'authentication'>): boolean;
16
+ export declare function getResolverServices(resolver: Resolver): string[];
@@ -0,0 +1,36 @@
1
+ import { isDefined } from '@takeshape/util';
2
+ import isEmpty from 'lodash/isEmpty.js';
3
+ import uniq from 'lodash/uniq.js';
4
+ /**
5
+ * Get a service config from a project schema.
6
+ */
7
+ export function getStoredServiceConfig(projectSchema, serviceKey) {
8
+ return projectSchema.services?.[serviceKey];
9
+ }
10
+ /**
11
+ * Get a `Map` keyed with all the service namespaces.
12
+ *
13
+ * @param context A partial project schema
14
+ *
15
+ * @returns A `Map` with namespaces as keys, and service keys as values.
16
+ */
17
+ export function getServiceNamespaces(context) {
18
+ const namespaces = new Map();
19
+ const { services } = context;
20
+ if (services) {
21
+ for (const serviceKey of Object.keys(services)) {
22
+ const namespace = services[serviceKey]?.namespace;
23
+ if (namespace) {
24
+ namespaces.set(namespace, serviceKey);
25
+ }
26
+ }
27
+ }
28
+ return namespaces;
29
+ }
30
+ export function isMissingAuth(service) {
31
+ return service.authenticationType !== 'none' && isEmpty(service.authentication);
32
+ }
33
+ export function getResolverServices(resolver) {
34
+ const resolverArray = 'compose' in resolver ? resolver.compose : [resolver];
35
+ return uniq(resolverArray.map((resolver) => ('service' in resolver ? resolver.service : undefined)).filter(isDefined));
36
+ }
@@ -0,0 +1,7 @@
1
+ import type { ProjectSchemaJSON, ShapeJSON } from './project-schema/latest.ts';
2
+ export interface GetShapePathsArgs {
3
+ includeRoot?: boolean;
4
+ prefix?: string;
5
+ depthLimit?: number;
6
+ }
7
+ export declare function getShapePaths(projectSchema: ProjectSchemaJSON, shape: ShapeJSON, args?: GetShapePathsArgs): string[];