@metabase/client 0.0.0-stage → 0.1.1

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 (337) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE +661 -0
  3. package/README.md +490 -2
  4. package/dist/api-key-DJeN1-7G.d.ts +46 -0
  5. package/dist/auth/credential.d.ts +2 -0
  6. package/dist/auth/credential.js +61 -0
  7. package/dist/auth/oauth-login.d.ts +2 -0
  8. package/dist/auth/oauth-login.js +2 -0
  9. package/dist/auth/oauth-session.d.ts +2 -0
  10. package/dist/auth/oauth-session.js +31 -0
  11. package/dist/card-BxBzr5Uj.d.ts +1392 -0
  12. package/dist/card-DN0sLkCG.d.ts +33 -0
  13. package/dist/client-DdXLlH1B.d.ts +3380 -0
  14. package/dist/client.d.ts +2 -0
  15. package/dist/client.js +99 -0
  16. package/dist/collection-DGnTvD6R.d.ts +294 -0
  17. package/dist/collection-fFahL-ub.d.ts +53 -0
  18. package/dist/content-translation-zfUkE_OG.d.ts +8 -0
  19. package/dist/credential-6aOEGqMH.d.ts +30 -0
  20. package/dist/cron-DThzerR6.d.ts +9 -0
  21. package/dist/csv-upload--K35QedP.d.ts +8 -0
  22. package/dist/dashboard-CM7RmNeE.d.ts +38 -0
  23. package/dist/dashboard-DtLXVgtf.d.ts +978 -0
  24. package/dist/data-action-CkXVrOUH.d.ts +97 -0
  25. package/dist/data-app-CqP5_fpB.d.ts +76 -0
  26. package/dist/database-B0JNZjDN.d.ts +27 -0
  27. package/dist/database-BxqDmfcj.d.ts +997 -0
  28. package/dist/dataset-BBNGPVec.d.ts +4144 -0
  29. package/dist/dataset-BUirJ1rO.d.ts +23 -0
  30. package/dist/dependency-CzpXmeu7.d.ts +299 -0
  31. package/dist/dependency-arB8Cr2H.d.ts +879 -0
  32. package/dist/document-tLd6pYWe.d.ts +115 -0
  33. package/dist/domain/api-key.d.ts +2 -0
  34. package/dist/domain/api-key.js +31 -0
  35. package/dist/domain/card.d.ts +2 -0
  36. package/dist/domain/card.js +140 -0
  37. package/dist/domain/collection.d.ts +2 -0
  38. package/dist/domain/collection.js +137 -0
  39. package/dist/domain/content-translation.d.ts +2 -0
  40. package/dist/domain/content-translation.js +5 -0
  41. package/dist/domain/cron.d.ts +2 -0
  42. package/dist/domain/cron.js +5 -0
  43. package/dist/domain/dashboard.d.ts +2 -0
  44. package/dist/domain/dashboard.js +211 -0
  45. package/dist/domain/data-action.d.ts +2 -0
  46. package/dist/domain/data-action.js +91 -0
  47. package/dist/domain/data-app.d.ts +2 -0
  48. package/dist/domain/data-app.js +52 -0
  49. package/dist/domain/database.d.ts +2 -0
  50. package/dist/domain/database.js +56 -0
  51. package/dist/domain/dataset.d.ts +2 -0
  52. package/dist/domain/dataset.js +56 -0
  53. package/dist/domain/dependency.d.ts +2 -0
  54. package/dist/domain/dependency.js +168 -0
  55. package/dist/domain/document.d.ts +2 -0
  56. package/dist/domain/document.js +94 -0
  57. package/dist/domain/eid-translation.d.ts +2 -0
  58. package/dist/domain/eid-translation.js +36 -0
  59. package/dist/domain/embedding.d.ts +2 -0
  60. package/dist/domain/embedding.js +9 -0
  61. package/dist/domain/erd.d.ts +2 -0
  62. package/dist/domain/erd.js +45 -0
  63. package/dist/domain/field.d.ts +2 -0
  64. package/dist/domain/field.js +274 -0
  65. package/dist/domain/git-sync.d.ts +2 -0
  66. package/dist/domain/git-sync.js +147 -0
  67. package/dist/domain/glossary.d.ts +2 -0
  68. package/dist/domain/glossary.js +30 -0
  69. package/dist/domain/library.d.ts +2 -0
  70. package/dist/domain/library.js +89 -0
  71. package/dist/domain/measure.d.ts +2 -0
  72. package/dist/domain/measure.js +43 -0
  73. package/dist/domain/metric.d.ts +2 -0
  74. package/dist/domain/metric.js +139 -0
  75. package/dist/domain/moderation-review.d.ts +2 -0
  76. package/dist/domain/moderation-review.js +31 -0
  77. package/dist/domain/notification.d.ts +2 -0
  78. package/dist/domain/notification.js +143 -0
  79. package/dist/domain/parameter.d.ts +2 -0
  80. package/dist/domain/parameter.js +109 -0
  81. package/dist/domain/permission.d.ts +2 -0
  82. package/dist/domain/permission.js +36 -0
  83. package/dist/domain/pulse.d.ts +2 -0
  84. package/dist/domain/pulse.js +140 -0
  85. package/dist/domain/query.d.ts +2 -0
  86. package/dist/domain/query.js +13 -0
  87. package/dist/domain/replacement.d.ts +2 -0
  88. package/dist/domain/replacement.js +93 -0
  89. package/dist/domain/revision.d.ts +2 -0
  90. package/dist/domain/revision.js +90 -0
  91. package/dist/domain/search.d.ts +2 -0
  92. package/dist/domain/search.js +63 -0
  93. package/dist/domain/segment.d.ts +2 -0
  94. package/dist/domain/segment.js +46 -0
  95. package/dist/domain/session-properties.d.ts +2 -0
  96. package/dist/domain/session-properties.js +14 -0
  97. package/dist/domain/setting.d.ts +2 -0
  98. package/dist/domain/setting.js +22 -0
  99. package/dist/domain/setup.d.ts +2 -0
  100. package/dist/domain/setup.js +21 -0
  101. package/dist/domain/snippet.d.ts +2 -0
  102. package/dist/domain/snippet.js +38 -0
  103. package/dist/domain/table.d.ts +2 -0
  104. package/dist/domain/table.js +187 -0
  105. package/dist/domain/text.d.ts +5 -0
  106. package/dist/domain/text.js +6 -0
  107. package/dist/domain/timeline.d.ts +2 -0
  108. package/dist/domain/timeline.js +97 -0
  109. package/dist/domain/transform-dag-run.d.ts +2 -0
  110. package/dist/domain/transform-dag-run.js +19 -0
  111. package/dist/domain/transform-inspector.d.ts +2 -0
  112. package/dist/domain/transform-inspector.js +142 -0
  113. package/dist/domain/transform-job.d.ts +2 -0
  114. package/dist/domain/transform-job.js +115 -0
  115. package/dist/domain/transform-python.d.ts +2 -0
  116. package/dist/domain/transform-python.js +51 -0
  117. package/dist/domain/transform-tag.d.ts +2 -0
  118. package/dist/domain/transform-tag.js +17 -0
  119. package/dist/domain/transform-test.d.ts +2 -0
  120. package/dist/domain/transform-test.js +176 -0
  121. package/dist/domain/transform.d.ts +2 -0
  122. package/dist/domain/transform.js +304 -0
  123. package/dist/domain/upload.d.ts +2 -0
  124. package/dist/domain/upload.js +13 -0
  125. package/dist/domain/user.d.ts +2 -0
  126. package/dist/domain/user.js +16 -0
  127. package/dist/eid-translation-CH6NPWd-.d.ts +143 -0
  128. package/dist/embedding-oU3gqfgX.d.ts +10 -0
  129. package/dist/erd-BdeFEeSy.d.ts +842 -0
  130. package/dist/erd-CbV7xvAc.d.ts +51 -0
  131. package/dist/errors-DdMlaXqq.js +330 -0
  132. package/dist/errors.d.ts +2 -0
  133. package/dist/errors.js +189 -0
  134. package/dist/features-SMSfJhB6.d.ts +295 -0
  135. package/dist/field-D1Pfk-0S.d.ts +50 -0
  136. package/dist/field-p9Rme2zB.d.ts +2549 -0
  137. package/dist/git-sync-BTf1aYHr.d.ts +205 -0
  138. package/dist/git-sync-C99SVdJ9.d.ts +258 -0
  139. package/dist/glossary-CHK3elPj.d.ts +35 -0
  140. package/dist/glossary-DFvnz-E5.d.ts +15 -0
  141. package/dist/http/errors.d.ts +2 -0
  142. package/dist/http/errors.js +2 -0
  143. package/dist/http/oauth.d.ts +2 -0
  144. package/dist/http/oauth.js +201 -0
  145. package/dist/http/retry.d.ts +19 -0
  146. package/dist/http/retry.js +33 -0
  147. package/dist/http/transport.d.ts +2 -0
  148. package/dist/http/transport.js +2 -0
  149. package/dist/index.d.ts +62 -0
  150. package/dist/index.js +64 -0
  151. package/dist/input-gate-registry-Dai7SfXb.js +14 -0
  152. package/dist/input-gates-DwKoTJVQ.d.ts +28 -0
  153. package/dist/json-BksZpXDC.d.ts +19 -0
  154. package/dist/json-pointer.d.ts +5 -0
  155. package/dist/json-pointer.js +10 -0
  156. package/dist/json.d.ts +2 -0
  157. package/dist/json.js +44 -0
  158. package/dist/known-range-DTOBgTEC.d.ts +7 -0
  159. package/dist/library-B9pEq7qP.d.ts +230 -0
  160. package/dist/list-BT_bBm9Z.d.ts +7 -0
  161. package/dist/list.d.ts +2 -0
  162. package/dist/list.js +1 -0
  163. package/dist/measure-CgH14YQZ.d.ts +44 -0
  164. package/dist/measure-lPz8qnwz.d.ts +108 -0
  165. package/dist/metric-DcYloqOQ.d.ts +2655 -0
  166. package/dist/moderation-review-B4RUTZ6_.d.ts +56 -0
  167. package/dist/network-error-5g4U1iul.js +62 -0
  168. package/dist/notification-Cp5GJErS.d.ts +22 -0
  169. package/dist/notification-D1MThyKE.d.ts +443 -0
  170. package/dist/oauth-C4ordeoJ.d.ts +59 -0
  171. package/dist/oauth-login-CJsT_3EE.d.ts +19 -0
  172. package/dist/oauth-login-D734Jvbq.js +179 -0
  173. package/dist/oauth-session-BlIlcd8Q.d.ts +6 -0
  174. package/dist/paginate-COuL0Gzl.d.ts +24 -0
  175. package/dist/paginate.d.ts +2 -0
  176. package/dist/paginate.js +49 -0
  177. package/dist/parameter-ak-J-IOj.d.ts +190 -0
  178. package/dist/permission-BnCQw5Kp.d.ts +149 -0
  179. package/dist/poll-CIwnee7h.d.ts +15 -0
  180. package/dist/poll.d.ts +2 -0
  181. package/dist/poll.js +47 -0
  182. package/dist/predicates.d.ts +10 -0
  183. package/dist/predicates.js +18 -0
  184. package/dist/pulse-0LG3K6qO.d.ts +598 -0
  185. package/dist/pulse-BzKmz3Yn.d.ts +18 -0
  186. package/dist/query-Xsin530u.d.ts +23 -0
  187. package/dist/refusal-B9aeHMc9.js +130 -0
  188. package/dist/replacement-BGyggp-G.d.ts +2467 -0
  189. package/dist/replacement-CVebCuNp.d.ts +128 -0
  190. package/dist/requirement-check-glU7wqhQ.d.ts +17 -0
  191. package/dist/requirements-Dx_ZVzl7.d.ts +227 -0
  192. package/dist/resources/api-key.d.ts +11 -0
  193. package/dist/resources/api-key.js +35 -0
  194. package/dist/resources/card.d.ts +2 -0
  195. package/dist/resources/card.js +103 -0
  196. package/dist/resources/collection.d.ts +2 -0
  197. package/dist/resources/collection.js +134 -0
  198. package/dist/resources/content-translation.d.ts +11 -0
  199. package/dist/resources/content-translation.js +27 -0
  200. package/dist/resources/csv-upload.d.ts +2 -0
  201. package/dist/resources/csv-upload.js +9 -0
  202. package/dist/resources/dashboard.d.ts +2 -0
  203. package/dist/resources/dashboard.js +221 -0
  204. package/dist/resources/data-action.d.ts +60 -0
  205. package/dist/resources/data-action.js +79 -0
  206. package/dist/resources/data-app.d.ts +112 -0
  207. package/dist/resources/data-app.js +75 -0
  208. package/dist/resources/database.d.ts +2 -0
  209. package/dist/resources/database.js +103 -0
  210. package/dist/resources/dataset.d.ts +2 -0
  211. package/dist/resources/dataset.js +81 -0
  212. package/dist/resources/dependency.d.ts +2 -0
  213. package/dist/resources/dependency.js +156 -0
  214. package/dist/resources/document.d.ts +55 -0
  215. package/dist/resources/document.js +60 -0
  216. package/dist/resources/eid-translation.d.ts +8 -0
  217. package/dist/resources/eid-translation.js +19 -0
  218. package/dist/resources/erd.d.ts +2 -0
  219. package/dist/resources/erd.js +26 -0
  220. package/dist/resources/field.d.ts +2 -0
  221. package/dist/resources/field.js +99 -0
  222. package/dist/resources/git-sync.d.ts +2 -0
  223. package/dist/resources/git-sync.js +362 -0
  224. package/dist/resources/glossary.d.ts +2 -0
  225. package/dist/resources/glossary.js +51 -0
  226. package/dist/resources/library.d.ts +85 -0
  227. package/dist/resources/library.js +90 -0
  228. package/dist/resources/measure.d.ts +2 -0
  229. package/dist/resources/measure.js +57 -0
  230. package/dist/resources/metric.d.ts +2 -0
  231. package/dist/resources/metric.js +50 -0
  232. package/dist/resources/moderation-review.d.ts +23 -0
  233. package/dist/resources/moderation-review.js +24 -0
  234. package/dist/resources/notification.d.ts +2 -0
  235. package/dist/resources/notification.js +93 -0
  236. package/dist/resources/optional-parsed.d.ts +7 -0
  237. package/dist/resources/optional-parsed.js +14 -0
  238. package/dist/resources/permission.d.ts +10 -0
  239. package/dist/resources/permission.js +31 -0
  240. package/dist/resources/pivot-export.d.ts +10 -0
  241. package/dist/resources/pivot-export.js +16 -0
  242. package/dist/resources/pulse.d.ts +2 -0
  243. package/dist/resources/pulse.js +76 -0
  244. package/dist/resources/replacement.d.ts +2 -0
  245. package/dist/resources/replacement.js +82 -0
  246. package/dist/resources/request-body.d.ts +9 -0
  247. package/dist/resources/request-body.js +13 -0
  248. package/dist/resources/revision.d.ts +70 -0
  249. package/dist/resources/revision.js +46 -0
  250. package/dist/resources/search.d.ts +2 -0
  251. package/dist/resources/search.js +78 -0
  252. package/dist/resources/segment.d.ts +2 -0
  253. package/dist/resources/segment.js +55 -0
  254. package/dist/resources/setting.d.ts +11 -0
  255. package/dist/resources/setting.js +43 -0
  256. package/dist/resources/setup.d.ts +8 -0
  257. package/dist/resources/setup.js +18 -0
  258. package/dist/resources/snippet.d.ts +2 -0
  259. package/dist/resources/snippet.js +52 -0
  260. package/dist/resources/table.d.ts +2 -0
  261. package/dist/resources/table.js +274 -0
  262. package/dist/resources/timeline-event.d.ts +12 -0
  263. package/dist/resources/timeline-event.js +51 -0
  264. package/dist/resources/timeline.d.ts +2 -0
  265. package/dist/resources/timeline.js +82 -0
  266. package/dist/resources/transform-dag-run.d.ts +22 -0
  267. package/dist/resources/transform-dag-run.js +32 -0
  268. package/dist/resources/transform-inspector.d.ts +214 -0
  269. package/dist/resources/transform-inspector.js +47 -0
  270. package/dist/resources/transform-job.d.ts +2 -0
  271. package/dist/resources/transform-job.js +90 -0
  272. package/dist/resources/transform-python.d.ts +59 -0
  273. package/dist/resources/transform-python.js +57 -0
  274. package/dist/resources/transform-tag.d.ts +35 -0
  275. package/dist/resources/transform-tag.js +47 -0
  276. package/dist/resources/transform-test.d.ts +2 -0
  277. package/dist/resources/transform-test.js +75 -0
  278. package/dist/resources/transform.d.ts +2 -0
  279. package/dist/resources/transform.js +227 -0
  280. package/dist/resources/upload.d.ts +2 -0
  281. package/dist/resources/upload.js +48 -0
  282. package/dist/resources/user.d.ts +8 -0
  283. package/dist/resources/user.js +11 -0
  284. package/dist/revision-Dyl-8p7d.d.ts +106 -0
  285. package/dist/search-Cm5IxKss.d.ts +92 -0
  286. package/dist/search-Cten2h0I.d.ts +26 -0
  287. package/dist/segment-CbAgVO-5.d.ts +47 -0
  288. package/dist/segment-DQLX6r1E.d.ts +16 -0
  289. package/dist/session-properties-COtlxAcK.d.ts +15 -0
  290. package/dist/setting-DXuQGXGF.d.ts +25 -0
  291. package/dist/setup-JqcJ2unJ.d.ts +26 -0
  292. package/dist/signal.d.ts +8 -0
  293. package/dist/signal.js +25 -0
  294. package/dist/snippet-C_Ilx7tR.d.ts +41 -0
  295. package/dist/snippet-Djn0rL21.d.ts +16 -0
  296. package/dist/table-CDZbLNow.d.ts +176 -0
  297. package/dist/table-Od6uvDVW.d.ts +3234 -0
  298. package/dist/tag-qzjGGci8.d.ts +48 -0
  299. package/dist/timeline-BK45hy-h.d.ts +218 -0
  300. package/dist/timeline-BTs6fuRp.d.ts +21 -0
  301. package/dist/transform-C5thnJwW.d.ts +559 -0
  302. package/dist/transform-WASQAXeA.d.ts +652 -0
  303. package/dist/transform-dag-run-BgZwv1yx.d.ts +49 -0
  304. package/dist/transform-inspector-CMCh8WKV.d.ts +374 -0
  305. package/dist/transform-job-D8jTQtdX.d.ts +98 -0
  306. package/dist/transform-job-DmTwKxhc.d.ts +237 -0
  307. package/dist/transform-python-DtL3xxMj.d.ts +101 -0
  308. package/dist/transform-tag-C6j5EUkX.d.ts +25 -0
  309. package/dist/transform-test-CR_i54IV.d.ts +412 -0
  310. package/dist/transform-test-CeMzDpUC.d.ts +346 -0
  311. package/dist/transport-BsXqRujn.d.ts +476 -0
  312. package/dist/transport-HP7cyo9N.js +397 -0
  313. package/dist/upload-B5YjVkSW.d.ts +12 -0
  314. package/dist/upload-UPfZFdbH.d.ts +22 -0
  315. package/dist/url-CI0pxHOc.d.ts +7 -0
  316. package/dist/url.d.ts +2 -0
  317. package/dist/url.js +34 -0
  318. package/dist/user-Sqqv7rqh.d.ts +18 -0
  319. package/dist/version/capability-error.d.ts +2 -0
  320. package/dist/version/capability-error.js +42 -0
  321. package/dist/version/features.d.ts +2 -0
  322. package/dist/version/features.js +171 -0
  323. package/dist/version/input-gates.d.ts +2 -0
  324. package/dist/version/input-gates.js +13 -0
  325. package/dist/version/known-range.d.ts +2 -0
  326. package/dist/version/known-range.js +7 -0
  327. package/dist/version/probe.d.ts +2 -0
  328. package/dist/version/probe.js +30 -0
  329. package/dist/version/profile.d.ts +2 -0
  330. package/dist/version/profile.js +64 -0
  331. package/dist/version/requirement-check.d.ts +2 -0
  332. package/dist/version/requirement-check.js +62 -0
  333. package/dist/version/requirements.d.ts +2 -0
  334. package/dist/version/requirements.js +229 -0
  335. package/dist/version/tag.d.ts +2 -0
  336. package/dist/version/tag.js +52 -0
  337. package/package.json +66 -4
@@ -0,0 +1,171 @@
1
+ import { KNOWN_RANGE } from "./known-range.js";
2
+ import { z } from "zod";
3
+ //#region src/version/features.ts
4
+ const FEATURE_RULES = {
5
+ dataActionCollections: { since: 65 },
6
+ dataActionsWithoutModel: { since: 65 },
7
+ dataApps: {
8
+ since: 65,
9
+ tokenFeature: "data-apps"
10
+ },
11
+ transforms: { since: 59 },
12
+ transformJobActivation: { since: 61 },
13
+ measures: { since: 59 },
14
+ collectionItemMeasures: { since: 61 },
15
+ explorations: { since: 65 },
16
+ tableFromDefinition: { since: 64 },
17
+ library: {
18
+ since: 59,
19
+ tokenFeature: "library"
20
+ },
21
+ libraryDashboards: { since: 65 },
22
+ tablePublishTargetCollection: { since: 62 },
23
+ remoteSync: {
24
+ since: 58,
25
+ tokenFeature: "remote_sync"
26
+ },
27
+ remoteSyncRemoteChanges: {
28
+ since: 59,
29
+ tokenFeature: "remote_sync"
30
+ },
31
+ remoteSyncCollectionsOnlyUpdate: { since: 60 },
32
+ remoteSyncExportPreflight: {
33
+ since: 63,
34
+ tokenFeature: "remote_sync"
35
+ },
36
+ remoteSyncBranchGuard: { since: 63 },
37
+ remoteSyncMerge: {
38
+ since: 63,
39
+ tokenFeature: "remote_sync"
40
+ },
41
+ contentTranslation: {
42
+ since: 58,
43
+ tokenFeature: "content_translation"
44
+ },
45
+ contentVerification: {
46
+ since: 58,
47
+ tokenFeature: "content_verification"
48
+ },
49
+ transformTargetTableId: { since: 61 },
50
+ transformSourceTablesAsList: { since: 60 },
51
+ transformTargetTableLinkedOnCreate: {
52
+ since: 61,
53
+ until: 61
54
+ },
55
+ transformJobRunIdIsNumeric: { since: 64 },
56
+ transformCheckpointReset: { since: 60 },
57
+ fieldDataSensitivity: { since: 64 },
58
+ fieldRemappingAppendsDisplayColumns: {
59
+ since: 58,
60
+ until: 59
61
+ },
62
+ transformDagRuns: { since: 64 },
63
+ unifiedTransformRuns: { since: 64 },
64
+ transformTests: {
65
+ since: 65,
66
+ tokenFeature: "transforms-testing"
67
+ },
68
+ libraryChildrenCarryType: { since: 62 },
69
+ collectionItemsTotalOnEmptyPage: { since: 64 },
70
+ invalidMbqlIsBadRequest: { since: 59 },
71
+ boxplotDisplay: { since: 59 },
72
+ nativeTableTemplateTag: { since: 59 },
73
+ smartLinkMeasureModel: { since: 60 },
74
+ dashboardSubscriptionFilters: {
75
+ since: 58,
76
+ tokenFeature: "dashboard_subscription_filters"
77
+ },
78
+ dependencyGraph: {
79
+ since: 58,
80
+ tokenFeature: "dependencies"
81
+ },
82
+ dependencyItemListings: {
83
+ since: 59,
84
+ tokenFeature: "dependencies"
85
+ },
86
+ dependencyAsyncBackfill: {
87
+ since: 60,
88
+ tokenFeature: "dependencies"
89
+ },
90
+ measureDependencyGraph: { since: 59 },
91
+ actionDependencyGraph: { since: 65 },
92
+ tableListAccessFilters: { since: 59 },
93
+ tableListTransformTargets: { since: 60 },
94
+ tableListPublishedFilter: { since: 63 },
95
+ tableUnusedFilter: {
96
+ since: 58,
97
+ tokenFeature: "dependencies"
98
+ },
99
+ tableDataLayerTiers: { since: 59 },
100
+ bulkTableEdit: { since: 59 },
101
+ tableUserValueWithdrawal: { since: 64 },
102
+ bulkTableSync: { since: 59 },
103
+ erd: {
104
+ since: 62,
105
+ tokenFeature: "schema-viewer"
106
+ },
107
+ documentCopy: { since: 59 },
108
+ transformInspector: {
109
+ since: 60,
110
+ tokenFeature: "transforms-python"
111
+ },
112
+ pythonLibrary: {
113
+ since: 58,
114
+ tokenFeature: "transforms-python"
115
+ },
116
+ pythonTestRun: {
117
+ since: 58,
118
+ tokenFeature: "transforms-python"
119
+ },
120
+ sourceReplacement: {
121
+ since: 60,
122
+ tokenFeature: "dependencies"
123
+ },
124
+ metricDefinitionQuery: { since: 60 },
125
+ metricDimensionListing: { since: 64 },
126
+ oauthFullAccessScopeUnadvertised: { since: 64 },
127
+ exportCsvByteOrderMark: { since: 63 }
128
+ };
129
+ function isFeatureName(name) {
130
+ return Object.hasOwn(FEATURE_RULES, name);
131
+ }
132
+ const FEATURE_NAMES = Object.keys(FEATURE_RULES).filter(isFeatureName);
133
+ const Features = z.record(z.enum(FEATURE_NAMES), z.boolean());
134
+ /**
135
+ * Which servers hold `feature`, as a reader says it: the majors its rule spans and the token
136
+ * feature it needs, each left out where every supported server meets it.
137
+ */
138
+ function featureAvailability(feature) {
139
+ const rule = FEATURE_RULES[feature];
140
+ const token = rule.tokenFeature === void 0 ? null : `token ${rule.tokenFeature}`;
141
+ const parts = [majorSpan(rule), token].filter((part) => part !== null);
142
+ if (parts.length === 0) throw new Error(`${feature} holds on every supported server, so it gates nothing`);
143
+ return parts.join(", ");
144
+ }
145
+ function majorSpan(rule) {
146
+ const floor = rule.since > KNOWN_RANGE.min ? `v${rule.since}` : null;
147
+ if (rule.until === void 0) return floor === null ? null : `${floor}+`;
148
+ if (floor === null) return `up to v${rule.until}`;
149
+ return rule.since === rule.until ? `${floor} only` : `${floor}-v${rule.until}`;
150
+ }
151
+ function evaluateFeatures(major, tokenFeatures) {
152
+ const entries = FEATURE_NAMES.map((name) => [name, ruleHolds(FEATURE_RULES[name], major, tokenFeatures)]);
153
+ return Features.parse(Object.fromEntries(entries));
154
+ }
155
+ function ruleHolds(rule, major, tokenFeatures) {
156
+ return ruleGap(rule, major, tokenFeatures) === null;
157
+ }
158
+ function ruleGap(rule, major, tokenFeatures) {
159
+ if (!versionHolds(rule, major)) return { kind: "version" };
160
+ if (rule.tokenFeature === void 0) return null;
161
+ return tokenFeatures !== null && tokenFeatures[rule.tokenFeature] === true ? null : {
162
+ kind: "token",
163
+ tokenFeature: rule.tokenFeature
164
+ };
165
+ }
166
+ function versionHolds(rule, major) {
167
+ if (major === "development") return rule.until === void 0;
168
+ return major >= rule.since && (rule.until === void 0 || major <= rule.until);
169
+ }
170
+ //#endregion
171
+ export { FEATURE_NAMES, FEATURE_RULES, Features, evaluateFeatures, featureAvailability, isFeatureName, ruleGap };
@@ -0,0 +1,2 @@
1
+ import { a as PresentTrigger, c as inputGatesOf, i as NonEmptyTrigger, n as GateTrigger, o as ValuesTrigger, r as InputGate, s as gateTriggered, t as GateEffect } from "../input-gates-DwKoTJVQ.js";
2
+ export { GateEffect, GateTrigger, InputGate, NonEmptyTrigger, PresentTrigger, ValuesTrigger, gateTriggered, inputGatesOf };
@@ -0,0 +1,13 @@
1
+ import { n as inputGatesOf } from "../input-gate-registry-Dai7SfXb.js";
2
+ //#region src/version/input-gates.ts
3
+ /** Whether `value`, as a caller passes it for the gated field, is one the gate applies to. */
4
+ function gateTriggered(gate, value) {
5
+ const { when } = gate;
6
+ switch (when.kind) {
7
+ case "present": return value !== void 0;
8
+ case "values": return when.values.some((gated) => gated === value);
9
+ case "nonEmpty": return Array.isArray(value) && value.length > 0;
10
+ }
11
+ }
12
+ //#endregion
13
+ export { gateTriggered, inputGatesOf };
@@ -0,0 +1,2 @@
1
+ import { t as KNOWN_RANGE } from "../known-range-DTOBgTEC.js";
2
+ export { KNOWN_RANGE };
@@ -0,0 +1,7 @@
1
+ //#region src/version/known-range.ts
2
+ const KNOWN_RANGE = {
3
+ min: 58,
4
+ max: 64
5
+ };
6
+ //#endregion
7
+ export { KNOWN_RANGE };
@@ -0,0 +1,2 @@
1
+ import { At as profileFromProperties, Ct as PROBE_PATH, Dt as ServerInfo, Et as ProbeOptions, Ot as probeBudget, Tt as ProbeBudget, jt as serverInfoFromProperties, kt as probeServer, wt as PROBE_TIMEOUT_MS } from "../transport-BsXqRujn.js";
2
+ export { PROBE_PATH, PROBE_TIMEOUT_MS, ProbeBudget, ProbeOptions, ServerInfo, probeBudget, probeServer, profileFromProperties, serverInfoFromProperties };
@@ -0,0 +1,30 @@
1
+ import { SessionProperties } from "../domain/session-properties.js";
2
+ import { editionFromTag, parseTag } from "./tag.js";
3
+ import { createServerProfile } from "./profile.js";
4
+ //#region src/version/probe.ts
5
+ const PROBE_PATH = "/api/session/properties";
6
+ const PROBE_TIMEOUT_MS = 1e4;
7
+ async function probeServer(client, opts = {}) {
8
+ return serverInfoFromProperties(await client.requestParsed(SessionProperties, PROBE_PATH, probeBudget(opts)));
9
+ }
10
+ function probeBudget(opts) {
11
+ return {
12
+ timeoutMs: opts.timeoutMs ?? 1e4,
13
+ retries: opts.retries ?? 0
14
+ };
15
+ }
16
+ function serverInfoFromProperties(properties) {
17
+ const { tag } = properties.version;
18
+ return {
19
+ version: parseTag(tag),
20
+ edition: editionFromTag(tag),
21
+ date: properties.version.date ?? null,
22
+ hash: properties.version.hash ?? null,
23
+ tokenFeatures: properties["token-features"] ?? null
24
+ };
25
+ }
26
+ function profileFromProperties(properties) {
27
+ return createServerProfile(serverInfoFromProperties(properties));
28
+ }
29
+ //#endregion
30
+ export { PROBE_PATH, PROBE_TIMEOUT_MS, probeBudget, probeServer, profileFromProperties, serverInfoFromProperties };
@@ -0,0 +1,2 @@
1
+ import { St as featureGap, bt as Skew, xt as createServerProfile, yt as ServerProfile } from "../transport-BsXqRujn.js";
2
+ export { ServerProfile, Skew, createServerProfile, featureGap };
@@ -0,0 +1,64 @@
1
+ import { TokenFeatures } from "../domain/session-properties.js";
2
+ import { KNOWN_RANGE } from "./known-range.js";
3
+ import { FEATURE_RULES, Features, evaluateFeatures, ruleGap } from "./features.js";
4
+ import { Edition, ServerVersion } from "./tag.js";
5
+ import { z } from "zod";
6
+ //#region src/version/profile.ts
7
+ const Skew = z.enum([
8
+ "supported",
9
+ "older-than-known",
10
+ "newer-than-known",
11
+ "development"
12
+ ]);
13
+ const ServerProfile = z.object({
14
+ version: ServerVersion,
15
+ buildDate: z.string().nullable(),
16
+ hash: z.string().nullable(),
17
+ edition: Edition,
18
+ tokenFeatures: TokenFeatures.nullable(),
19
+ features: Features,
20
+ skew: Skew
21
+ });
22
+ function createServerProfile(info) {
23
+ const placement = place(info.version);
24
+ return {
25
+ version: info.version,
26
+ buildDate: info.date,
27
+ hash: info.hash,
28
+ edition: detectEdition(info),
29
+ tokenFeatures: info.tokenFeatures,
30
+ features: evaluateFeatures(placement.major, info.tokenFeatures),
31
+ skew: placement.skew
32
+ };
33
+ }
34
+ function featureGap(profile, feature) {
35
+ const placement = place(profile.version);
36
+ return ruleGap(FEATURE_RULES[feature], placement.major, profile.tokenFeatures);
37
+ }
38
+ function place(version) {
39
+ if (version.kind === "development") return {
40
+ major: "development",
41
+ skew: "development"
42
+ };
43
+ if (version.major > KNOWN_RANGE.max) return {
44
+ major: KNOWN_RANGE.max + 1,
45
+ skew: "newer-than-known"
46
+ };
47
+ if (version.major < KNOWN_RANGE.min) return {
48
+ major: version.major,
49
+ skew: "older-than-known"
50
+ };
51
+ return {
52
+ major: version.major,
53
+ skew: "supported"
54
+ };
55
+ }
56
+ function detectEdition(info) {
57
+ if (info.edition !== null) return info.edition;
58
+ return grantsAnyFeature(info.tokenFeatures) ? "ee" : "oss";
59
+ }
60
+ function grantsAnyFeature(tokenFeatures) {
61
+ return tokenFeatures !== null && Object.values(tokenFeatures).some((enabled) => enabled);
62
+ }
63
+ //#endregion
64
+ export { ServerProfile, Skew, createServerProfile, featureGap };
@@ -0,0 +1,2 @@
1
+ import { n as featureFailures, r as supersedingFeature, t as checkFeatures } from "../requirement-check-glU7wqhQ.js";
2
+ export { checkFeatures, featureFailures, supersedingFeature };
@@ -0,0 +1,62 @@
1
+ import { FEATURE_RULES } from "./features.js";
2
+ import { missingTokenFeatureMessage, versionTooOldMessage } from "./capability-error.js";
3
+ import { describeVersion } from "./tag.js";
4
+ import { featureGap } from "./profile.js";
5
+ //#region src/version/requirement-check.ts
6
+ /** The first of `features` the profile lacks, or `null` when it has every one. */
7
+ function checkFeatures(features, profile) {
8
+ for (const feature of features) {
9
+ const gap = featureGap(profile, feature);
10
+ if (gap !== null) return describeGap(gap, feature, profile);
11
+ }
12
+ return null;
13
+ }
14
+ /**
15
+ * The verdict that the profile has `feature`, which takes the value `detail` describes out of the
16
+ * server's vocabulary, or `null` when the profile lacks it.
17
+ */
18
+ function supersedingFeature(feature, profile, detail) {
19
+ if (featureGap(profile, feature) !== null) return null;
20
+ const rule = FEATURE_RULES[feature];
21
+ return {
22
+ reason: "superseded-by-feature",
23
+ detail,
24
+ feature,
25
+ since: rule.since,
26
+ tokenFeature: rule.tokenFeature ?? null,
27
+ serverVersion: profile.version.tag
28
+ };
29
+ }
30
+ /**
31
+ * Every one of `features` the profile lacks, each once and in the order given, so a caller that
32
+ * goes on past the first still hears of the rest.
33
+ */
34
+ function featureFailures(features, profile) {
35
+ return [...new Set(features)].flatMap((feature) => {
36
+ const failure = checkFeatures([feature], profile);
37
+ return failure === null ? [] : [failure];
38
+ });
39
+ }
40
+ function describeGap(gap, feature, profile) {
41
+ const rule = FEATURE_RULES[feature];
42
+ const serverVersion = profile.version.tag;
43
+ const tokenFeature = rule.tokenFeature ?? null;
44
+ if (gap.kind === "token") return {
45
+ reason: "missing-token-feature",
46
+ detail: missingTokenFeatureMessage(gap.tokenFeature),
47
+ feature,
48
+ since: rule.since,
49
+ tokenFeature,
50
+ serverVersion
51
+ };
52
+ return {
53
+ reason: "version-too-old",
54
+ detail: versionTooOldMessage(rule.since, describeVersion(profile.version)),
55
+ feature,
56
+ since: rule.since,
57
+ tokenFeature,
58
+ serverVersion
59
+ };
60
+ }
61
+ //#endregion
62
+ export { checkFeatures, featureFailures, supersedingFeature };
@@ -0,0 +1,2 @@
1
+ import { a as methodRequirements, i as isMethodKey, n as METHOD_REQUIREMENTS, r as MethodKey, t as METHOD_KEYS } from "../requirements-Dx_ZVzl7.js";
2
+ export { METHOD_KEYS, METHOD_REQUIREMENTS, MethodKey, isMethodKey, methodRequirements };
@@ -0,0 +1,229 @@
1
+ //#region src/version/requirements.ts
2
+ const METHOD_REQUIREMENTS = {
3
+ "apiKey.list": [],
4
+ "apiKey.create": [],
5
+ "apiKey.delete": [],
6
+ "card.list": [],
7
+ "card.get": [],
8
+ "card.create": [],
9
+ "card.update": [],
10
+ "card.archive": [],
11
+ "card.query": [],
12
+ "card.exportQuery": [],
13
+ "card.queryMetadata": [],
14
+ "collection.list": [],
15
+ "collection.get": [],
16
+ "collection.create": [],
17
+ "collection.update": [],
18
+ "collection.archive": [],
19
+ "collection.itemPages": [],
20
+ "collection.tree": [],
21
+ "contentTranslation.download": ["contentTranslation"],
22
+ "contentTranslation.upload": ["contentTranslation"],
23
+ "dashboard.list": [],
24
+ "dashboard.get": [],
25
+ "dashboard.create": [],
26
+ "dashboard.update": [],
27
+ "dashboard.archive": [],
28
+ "dashboard.copy": [],
29
+ "dashboard.updateDashcard": [],
30
+ "dashboard.checkCardReferences": [],
31
+ "dashboard.parameterValues": [],
32
+ "dashboard.searchParameterValues": [],
33
+ "dataAction.list": [],
34
+ "dataAction.get": [],
35
+ "dataAction.create": ["dataActionsWithoutModel"],
36
+ "dataAction.update": [],
37
+ "dataAction.archive": [],
38
+ "dataAction.delete": [],
39
+ "dataAction.execute": [],
40
+ "dataApp.list": ["dataApps"],
41
+ "dataApp.get": ["dataApps"],
42
+ "dataApp.create": ["dataApps"],
43
+ "dataApp.update": ["dataApps"],
44
+ "dataApp.replaceBundle": ["dataApps"],
45
+ "dataApp.typedSchema": ["dataApps"],
46
+ "dataApp.delete": ["dataApps"],
47
+ "database.list": [],
48
+ "database.get": [],
49
+ "database.update": [],
50
+ "database.schemas": [],
51
+ "database.schemaTables": [],
52
+ "database.syncSchema": [],
53
+ "database.rescanValues": [],
54
+ "dataset.query": [],
55
+ "dataset.native": [],
56
+ "dataset.queryMetadata": [],
57
+ "dataset.exportQuery": [],
58
+ "dependency.breakingPages": ["dependencyItemListings"],
59
+ "dependency.broken": ["dependencyItemListings"],
60
+ "dependency.dependents": ["dependencyItemListings"],
61
+ "dependency.graph": ["dependencyGraph"],
62
+ "dependency.unreferencedPages": ["dependencyItemListings"],
63
+ "document.list": [],
64
+ "document.get": [],
65
+ "document.create": [],
66
+ "document.update": [],
67
+ "document.archive": [],
68
+ "document.copy": ["documentCopy"],
69
+ "eidTranslation.translate": [],
70
+ "erd.get": ["erd"],
71
+ "field.get": [],
72
+ "field.update": [],
73
+ "field.setDataSensitivity": ["fieldDataSensitivity"],
74
+ "field.search": [],
75
+ "field.remapping": [],
76
+ "field.summary": [],
77
+ "field.values": [],
78
+ "gitSync.currentTask": ["remoteSync"],
79
+ "gitSync.cancelTask": ["remoteSync"],
80
+ "gitSync.isDirty": ["remoteSync"],
81
+ "gitSync.dirty": ["remoteSync"],
82
+ "gitSync.hasRemoteChanges": ["remoteSyncRemoteChanges"],
83
+ "gitSync.import": ["remoteSync"],
84
+ "gitSync.export": ["remoteSync"],
85
+ "gitSync.exportPreflight": ["remoteSyncExportPreflight"],
86
+ "gitSync.stash": ["remoteSync"],
87
+ "gitSync.branches": ["remoteSync"],
88
+ "gitSync.createBranch": ["remoteSync"],
89
+ "gitSync.setCollectionSynced": ["remoteSync"],
90
+ "gitSync.syncedCollections": ["remoteSync"],
91
+ "gitSync.remoteUrl": [],
92
+ "gitSync.branch": ["remoteSync"],
93
+ "gitSync.remote": ["remoteSync"],
94
+ "gitSync.trackedBranch": ["remoteSync"],
95
+ "gitSync.waitForTask": ["remoteSync"],
96
+ "glossary.list": [],
97
+ "glossary.create": [],
98
+ "glossary.update": [],
99
+ "glossary.delete": [],
100
+ "library.get": ["library"],
101
+ "library.create": ["library"],
102
+ "library.ensureDataCollectionId": ["library"],
103
+ "library.publishTables": ["library"],
104
+ "library.unpublishTables": ["library"],
105
+ "metric.query": ["metricDefinitionQuery"],
106
+ "metric.breakoutValues": ["metricDefinitionQuery"],
107
+ "metric.dimensions": ["metricDimensionListing"],
108
+ "measure.list": ["measures"],
109
+ "measure.get": ["measures"],
110
+ "measure.create": ["measures"],
111
+ "measure.update": ["measures"],
112
+ "measure.archive": ["measures"],
113
+ "moderationReview.create": ["contentVerification"],
114
+ "notification.list": [],
115
+ "notification.get": [],
116
+ "notification.create": [],
117
+ "notification.update": [],
118
+ "notification.archive": [],
119
+ "notification.send": [],
120
+ "permission.graph": [],
121
+ "permission.databaseGraph": [],
122
+ "permission.groupGraph": [],
123
+ "pulse.list": [],
124
+ "pulse.get": [],
125
+ "pulse.create": [],
126
+ "pulse.update": [],
127
+ "pulse.archive": [],
128
+ "replacement.checkReplaceSource": ["sourceReplacement"],
129
+ "replacement.replaceSource": ["sourceReplacement"],
130
+ "replacement.replaceModelWithTransform": ["sourceReplacement"],
131
+ "replacement.listRuns": ["sourceReplacement"],
132
+ "replacement.getRun": ["sourceReplacement"],
133
+ "replacement.cancelRun": ["sourceReplacement"],
134
+ "revision.list": [],
135
+ "revision.revert": [],
136
+ "search.query": [],
137
+ "segment.list": [],
138
+ "segment.get": [],
139
+ "segment.create": [],
140
+ "segment.update": [],
141
+ "segment.archive": [],
142
+ "setting.list": [],
143
+ "setting.get": [],
144
+ "setting.set": [],
145
+ "setup.create": [],
146
+ "snippet.list": [],
147
+ "snippet.get": [],
148
+ "snippet.create": [],
149
+ "snippet.update": [],
150
+ "snippet.archive": [],
151
+ "table.list": [],
152
+ "table.get": [],
153
+ "table.update": [],
154
+ "table.queryMetadata": [],
155
+ "table.fks": [],
156
+ "table.syncSchema": [],
157
+ "table.rescanValues": [],
158
+ "table.discardValues": [],
159
+ "table.bulkEdit": ["bulkTableEdit"],
160
+ "table.bulkSyncSchema": ["bulkTableSync"],
161
+ "table.bulkRescanValues": ["bulkTableSync"],
162
+ "table.bulkDiscardValues": ["bulkTableSync"],
163
+ "table.appendCsv": [],
164
+ "table.replaceCsv": [],
165
+ "timeline.list": [],
166
+ "timeline.get": [],
167
+ "timeline.events": [],
168
+ "timeline.create": [],
169
+ "timeline.update": [],
170
+ "timeline.archive": [],
171
+ "timeline.delete": [],
172
+ "timelineEvent.get": [],
173
+ "timelineEvent.create": [],
174
+ "timelineEvent.update": [],
175
+ "timelineEvent.archive": [],
176
+ "timelineEvent.delete": [],
177
+ "transform.list": ["transforms"],
178
+ "transform.get": ["transforms"],
179
+ "transform.create": ["transforms"],
180
+ "transform.update": ["transforms"],
181
+ "transform.delete": ["transforms"],
182
+ "transform.deleteTable": ["transforms"],
183
+ "transform.dependencies": ["transforms"],
184
+ "transform.cancel": ["transforms"],
185
+ "transform.getRun": ["transforms"],
186
+ "transform.runPages": ["transforms"],
187
+ "transform.runSummaryPages": ["unifiedTransformRuns", "transforms"],
188
+ "transform.resetCheckpoint": ["transformCheckpointReset", "transforms"],
189
+ "transform.runDag": ["transformDagRuns", "transforms"],
190
+ "transform.dagTransforms": ["transformDagRuns", "transforms"],
191
+ "transform.run": ["transforms"],
192
+ "transformDagRun.transformRuns": ["transformDagRuns", "transforms"],
193
+ "transformDagRun.cancel": ["transformDagRuns", "transforms"],
194
+ "transformInspector.discover": ["transformInspector"],
195
+ "transformInspector.lens": ["transformInspector"],
196
+ "transformInspector.query": ["transformInspector"],
197
+ "transformJob.list": ["transforms"],
198
+ "transformJob.get": ["transforms"],
199
+ "transformJob.create": ["transforms"],
200
+ "transformJob.update": ["transforms"],
201
+ "transformJob.delete": ["transforms"],
202
+ "transformJob.run": ["transforms"],
203
+ "transformJob.transforms": ["transforms"],
204
+ "transformJob.setActive": ["transformJobActivation", "transforms"],
205
+ "transformPython.getLibrary": ["pythonLibrary"],
206
+ "transformPython.updateLibrary": ["pythonLibrary"],
207
+ "transformPython.testRun": ["pythonTestRun"],
208
+ "transformTag.list": ["transforms"],
209
+ "transformTag.create": ["transforms"],
210
+ "transformTag.update": ["transforms"],
211
+ "transformTag.delete": ["transforms"],
212
+ "transformTest.list": ["transformTests"],
213
+ "transformTest.get": ["transformTests"],
214
+ "transformTest.create": ["transformTests"],
215
+ "transformTest.update": ["transformTests"],
216
+ "transformTest.delete": ["transformTests"],
217
+ "transformTest.run": ["transformTests"],
218
+ "upload.createFromCsv": [],
219
+ "user.current": []
220
+ };
221
+ function isMethodKey(key) {
222
+ return Object.hasOwn(METHOD_REQUIREMENTS, key);
223
+ }
224
+ const METHOD_KEYS = Object.keys(METHOD_REQUIREMENTS).filter(isMethodKey);
225
+ function methodRequirements(key) {
226
+ return METHOD_REQUIREMENTS[key];
227
+ }
228
+ //#endregion
229
+ export { METHOD_KEYS, METHOD_REQUIREMENTS, isMethodKey, methodRequirements };
@@ -0,0 +1,2 @@
1
+ import { a as StoredServerVersion, c as parseTag, i as ServerVersion, n as Edition, o as describeVersion, r as ReleaseVersion, s as editionFromTag, t as DevelopmentBuild } from "../tag-qzjGGci8.js";
2
+ export { DevelopmentBuild, Edition, ReleaseVersion, ServerVersion, StoredServerVersion, describeVersion, editionFromTag, parseTag };
@@ -0,0 +1,52 @@
1
+ import { z } from "zod";
2
+ //#region src/version/tag.ts
3
+ const ReleaseVersion = z.object({
4
+ kind: z.literal("release"),
5
+ tag: z.string(),
6
+ major: z.number().int().nonnegative(),
7
+ patch: z.number().int().nonnegative()
8
+ });
9
+ const DevelopmentBuild = z.object({
10
+ kind: z.literal("development"),
11
+ tag: z.string()
12
+ });
13
+ const ServerVersion = z.discriminatedUnion("kind", [ReleaseVersion, DevelopmentBuild]);
14
+ const Edition = z.enum(["oss", "ee"]);
15
+ const TAG = /^v?([01])\.(\d+)\.(\d+)(?:\.\d+)?(?:-([0-9A-Za-z.-]+))?$/;
16
+ const OSS_EDITION_NUMBER = "0";
17
+ const DEV_BUILD_SUFFIX = "SNAPSHOT";
18
+ function tagParts(tag) {
19
+ const match = TAG.exec(tag);
20
+ if (match === null) return null;
21
+ const [, editionNumber, major, patch, prerelease] = match;
22
+ if (editionNumber === void 0 || major === void 0 || patch === void 0) return null;
23
+ return {
24
+ edition: editionNumber === OSS_EDITION_NUMBER ? "oss" : "ee",
25
+ major: Number(major),
26
+ patch: Number(patch),
27
+ prerelease: prerelease ?? null
28
+ };
29
+ }
30
+ function parseTag(tag) {
31
+ const parts = tagParts(tag);
32
+ if (parts === null || parts.prerelease === DEV_BUILD_SUFFIX) return {
33
+ kind: "development",
34
+ tag
35
+ };
36
+ return {
37
+ kind: "release",
38
+ tag,
39
+ major: parts.major,
40
+ patch: parts.patch
41
+ };
42
+ }
43
+ function editionFromTag(tag) {
44
+ const parts = tagParts(tag);
45
+ return parts === null ? null : parts.edition;
46
+ }
47
+ function describeVersion(version) {
48
+ return version.kind === "release" ? version.tag : `development build ${version.tag}`;
49
+ }
50
+ const StoredServerVersion = z.object({ tag: z.string() }).loose().transform(({ tag }) => parseTag(tag));
51
+ //#endregion
52
+ export { DevelopmentBuild, Edition, ReleaseVersion, ServerVersion, StoredServerVersion, describeVersion, editionFromTag, parseTag };