@oomol-lab/open-flow 0.1.0-beta.72 → 0.1.0-beta.74

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 (432) hide show
  1. package/LICENSE +36 -0
  2. package/NOTICE +7 -0
  3. package/README.md +40 -0
  4. package/dist/browser/{createResourceDialog-BWJkjiOO.js → createResourceDialog-DI9pL-Yr.js} +2 -2
  5. package/dist/browser/{dialog-CUy_fwx9.js → dialog-BYJGvItc.js} +54 -19
  6. package/dist/browser/{flowChanges-CgSnSqqP.js → flowChanges-RL-H4CjD.js} +306 -48
  7. package/dist/browser/{flowWorkspace-Bf7H-r0t.js → flowWorkspace-BkDsETj0.js} +20745 -20186
  8. package/dist/browser/preview.css +73 -3
  9. package/dist/browser/preview.js +21410 -20607
  10. package/dist/browser/{typeScriptSession-B0hC-C8y.js → typeScriptSession-CSRwWmZm.js} +1 -1
  11. package/dist/browser/ui.css +72 -2
  12. package/dist/browser/workbench.css +73 -3
  13. package/dist/browser/workbench.js +14 -76
  14. package/dist/browser/{workbenchSelect-C3e4J93X.js → workbenchSelect-BcWPWGzw.js} +1 -1
  15. package/dist/command/index.js +34 -34
  16. package/dist/common/authoring.d.ts +1 -1
  17. package/dist/common/authoringFields.d.ts +1 -1
  18. package/dist/common/authoringSchema.d.ts +28 -4
  19. package/dist/common/connector-proxy.d.ts +1 -1
  20. package/dist/common/control-api-conformance.d.ts +1 -1
  21. package/dist/common/control-api-conformance.js +61 -24
  22. package/dist/common/control-api.d.ts +4 -3
  23. package/dist/common/control-api.js +90 -42
  24. package/dist/common/control-requests.d.ts +2 -1
  25. package/dist/common/control-requests.js +204 -42
  26. package/dist/common/cron-trigger.d.ts +1 -1
  27. package/dist/common/decision.d.ts +1 -1
  28. package/dist/common/draftOperations.d.ts +1 -1
  29. package/dist/common/engine-contract.d.ts +3 -2
  30. package/dist/common/event-source-definition.d.ts +1 -1
  31. package/dist/common/flow-agent.d.ts +1 -1
  32. package/dist/{browser → common}/flow-authoring-node.d.ts +3 -3
  33. package/dist/{browser → common}/flow-authoring.js +75 -23
  34. package/dist/{browser → common}/flow-change-schema.d.ts +177 -6
  35. package/dist/{browser → common}/flow-change.d.ts +35 -15
  36. package/dist/{browser → common}/flow-change.js +77 -25
  37. package/dist/common/flow-connectionUsage.d.ts +1 -1
  38. package/dist/common/flow-encoding.d.ts +1 -1
  39. package/dist/common/flow-encoding.js +34 -16
  40. package/dist/common/flow-errorHandling.d.ts +1 -1
  41. package/dist/common/flow-graph.d.ts +1 -1
  42. package/dist/common/flow-modules.d.ts +1 -1
  43. package/dist/common/flow-promptTemplate.d.ts +1 -1
  44. package/dist/common/flow-retry.d.ts +1 -1
  45. package/dist/common/flow-semantics.d.ts +1 -1
  46. package/dist/common/flow-semantics.js +151 -32
  47. package/dist/common/flow-workflowFile.d.ts +1 -1
  48. package/dist/common/flowInspection.d.ts +3 -3
  49. package/dist/common/integration-trigger.d.ts +1 -1
  50. package/dist/common/licenses.md +118 -1
  51. package/dist/common/liveDetails.d.ts +1 -1
  52. package/dist/common/mcp.d.ts +2 -1
  53. package/dist/common/mcp.js +59 -22
  54. package/dist/common/openapi.d.ts +1 -1
  55. package/dist/common/poll-trigger.d.ts +1 -1
  56. package/dist/common/run-results.d.ts +8 -1
  57. package/dist/common/runtime-contract.d.ts +8 -2
  58. package/dist/common/runtime-contract.js +22 -5
  59. package/dist/common/scheduler-checkpoint.d.ts +1 -1
  60. package/dist/common/scheduler-dependencies.d.ts +1 -1
  61. package/dist/common/scheduler-node-execution.d.ts +1 -1
  62. package/dist/common/scheduler.d.ts +2 -2
  63. package/dist/common/scheduler.js +31 -12
  64. package/dist/common/trigger-catalog.d.ts +1 -1
  65. package/dist/common/trigger-config-options.d.ts +1 -1
  66. package/dist/common/trigger-config.d.ts +1 -1
  67. package/dist/common/trigger-contract.d.ts +2 -2
  68. package/dist/common/trigger-localization.d.ts +1 -1
  69. package/dist/common/webhook-response.d.ts +1 -1
  70. package/dist/common/webhook-trigger.d.ts +1 -1
  71. package/dist/common/workflow.d.ts +17 -1
  72. package/dist/common/workflow.js +68 -22
  73. package/dist/index.d.ts +6 -3
  74. package/package.json +7 -6
  75. package/src/base/common/json.ts +90 -0
  76. package/src/canvas/common/commands.ts +15 -0
  77. package/src/connector/common/actionSchema.ts +168 -0
  78. package/src/connector/common/proxy.ts +44 -0
  79. package/src/control/common/api.ts +1505 -0
  80. package/src/control/common/authoring.ts +912 -0
  81. package/src/control/common/authoringCondition.ts +110 -0
  82. package/src/control/common/authoringDiagnosticFields.ts +136 -0
  83. package/src/control/common/authoringExamples.ts +192 -0
  84. package/src/control/common/authoringFields.ts +53 -0
  85. package/src/control/common/authoringLlm.ts +70 -0
  86. package/src/control/common/authoringOpenApi.ts +129 -0
  87. package/src/control/common/authoringSchema.ts +404 -0
  88. package/src/control/common/authoringTools.ts +123 -0
  89. package/src/control/common/authoringTriggers.ts +26 -0
  90. package/src/control/common/checkDecoders.ts +65 -0
  91. package/src/control/common/conformance.ts +1989 -0
  92. package/src/control/common/connectorDecoders.ts +370 -0
  93. package/src/control/common/connectorQueries.ts +61 -0
  94. package/src/control/common/decoding.ts +60 -0
  95. package/src/control/common/draftOperations.ts +61 -0
  96. package/src/control/common/errors.ts +114 -0
  97. package/src/control/common/eventSourceSchemas.ts +13 -0
  98. package/src/control/common/eventSources.ts +186 -0
  99. package/src/control/common/flowDecoders.ts +153 -0
  100. package/src/control/common/flowInspection.ts +181 -0
  101. package/src/control/common/flowNotifications.ts +37 -0
  102. package/src/control/common/liveDetails.ts +124 -0
  103. package/src/control/common/mcp.ts +241 -0
  104. package/src/control/common/mcpConformance.ts +142 -0
  105. package/src/control/common/providerAccess.ts +28 -0
  106. package/src/control/common/providerIconSprite.ts +42 -0
  107. package/src/control/common/publicationDecoders.ts +98 -0
  108. package/src/control/common/random.ts +16 -0
  109. package/src/control/common/requests.ts +112 -0
  110. package/src/control/common/resultQuery.ts +8 -0
  111. package/src/control/common/results.ts +176 -0
  112. package/src/control/common/revisionDecoders.ts +52 -0
  113. package/src/control/common/runDecoders.ts +240 -0
  114. package/src/control/common/triggerCatalog.ts +89 -0
  115. package/src/control/common/triggerDecoders.ts +175 -0
  116. package/src/decision/common/decision.ts +168 -0
  117. package/src/event-source/common/catalog.generated.json +65 -0
  118. package/src/event-source/common/definition.ts +66 -0
  119. package/src/event-source/common/index.ts +99 -0
  120. package/src/execution/common/checkpoint.ts +311 -0
  121. package/src/execution/common/dependencies.ts +440 -0
  122. package/src/execution/common/engineContract.ts +80 -0
  123. package/src/execution/common/events.ts +328 -0
  124. package/src/execution/common/node-execution.ts +467 -0
  125. package/src/execution/common/runLifecycle.ts +250 -0
  126. package/src/execution/common/runtime.ts +563 -0
  127. package/src/execution/common/scheduler.ts +696 -0
  128. package/src/execution/common/wait.ts +36 -0
  129. package/src/flow/common/agent.ts +305 -0
  130. package/src/flow/common/authoring.ts +30 -0
  131. package/src/flow/common/change.ts +1036 -0
  132. package/src/flow/common/changeSchema.ts +783 -0
  133. package/src/flow/common/codePermissions.ts +2 -0
  134. package/src/flow/common/condition.ts +265 -0
  135. package/src/flow/common/connectionUsage.ts +131 -0
  136. package/src/flow/common/edgeChanges.ts +35 -0
  137. package/src/flow/common/encoding.ts +437 -0
  138. package/src/flow/common/errorHandling.ts +34 -0
  139. package/src/flow/common/graph.ts +892 -0
  140. package/src/flow/common/inputValue.ts +16 -0
  141. package/src/flow/common/json.ts +8 -0
  142. package/src/flow/common/moduleChanges.ts +31 -0
  143. package/src/flow/common/modules.ts +292 -0
  144. package/src/flow/common/nodeChanges.ts +762 -0
  145. package/src/flow/common/portChanges.ts +36 -0
  146. package/src/flow/common/promptTemplate.ts +15 -0
  147. package/src/flow/common/retry.ts +20 -0
  148. package/src/flow/common/schema.ts +162 -0
  149. package/src/flow/common/schemaCompare.ts +176 -0
  150. package/src/flow/common/schemaComparer.ts +178 -0
  151. package/src/flow/common/schemaKeywords.ts +53 -0
  152. package/src/flow/common/semantics.ts +474 -0
  153. package/src/flow/common/sourceField.ts +35 -0
  154. package/src/flow/common/triggerScheduleSchema.ts +8 -0
  155. package/src/flow/common/wait.ts +30 -0
  156. package/src/flow/common/webhookMethod.ts +7 -0
  157. package/src/flow/common/webhookResponse.ts +75 -0
  158. package/src/flow/common/workflowFile.ts +97 -0
  159. package/src/json-schema-subset/checker/array.ts +142 -0
  160. package/src/json-schema-subset/checker/cache.ts +57 -0
  161. package/src/json-schema-subset/checker/checker.ts +230 -0
  162. package/src/json-schema-subset/checker/enumAndConst.ts +113 -0
  163. package/src/json-schema-subset/checker/equals.ts +93 -0
  164. package/src/json-schema-subset/checker/numeric/checker.ts +50 -0
  165. package/src/json-schema-subset/checker/numeric/float.ts +121 -0
  166. package/src/json-schema-subset/checker/numeric/index.ts +1 -0
  167. package/src/json-schema-subset/checker/numeric/integer.ts +119 -0
  168. package/src/json-schema-subset/checker/numeric/integerNormalizer.ts +72 -0
  169. package/src/json-schema-subset/checker/object.ts +354 -0
  170. package/src/json-schema-subset/checker/range.ts +91 -0
  171. package/src/json-schema-subset/checker/string.ts +60 -0
  172. package/src/json-schema-subset/checker/tools/index.ts +3 -0
  173. package/src/json-schema-subset/checker/tools/mark.ts +82 -0
  174. package/src/json-schema-subset/checker/tools/quantum.ts +106 -0
  175. package/src/json-schema-subset/checker/tools/range.ts +210 -0
  176. package/src/json-schema-subset/checker/validator.ts +23 -0
  177. package/src/json-schema-subset/compiler/array.ts +163 -0
  178. package/src/json-schema-subset/compiler/combination.ts +109 -0
  179. package/src/json-schema-subset/compiler/common.ts +99 -0
  180. package/src/json-schema-subset/compiler/compiler.ts +188 -0
  181. package/src/json-schema-subset/compiler/enumAndConst.ts +75 -0
  182. package/src/json-schema-subset/compiler/index.ts +11 -0
  183. package/src/json-schema-subset/compiler/object.ts +411 -0
  184. package/src/json-schema-subset/compiler/primitive.ts +144 -0
  185. package/src/json-schema-subset/compiler/utils.ts +24 -0
  186. package/src/json-schema-subset/compiler/wrapper.ts +192 -0
  187. package/src/json-schema-subset/error.ts +55 -0
  188. package/src/json-schema-subset/expression/calculator.ts +442 -0
  189. package/src/json-schema-subset/expression/combination.ts +49 -0
  190. package/src/json-schema-subset/expression/expression.ts +191 -0
  191. package/src/json-schema-subset/expression/index.ts +25 -0
  192. package/src/json-schema-subset/expression/result.ts +88 -0
  193. package/src/json-schema-subset/expression/types.ts +36 -0
  194. package/src/json-schema-subset/extends/extendsContext.ts +89 -0
  195. package/src/json-schema-subset/extends/index.ts +2 -0
  196. package/src/json-schema-subset/extends/types.ts +12 -0
  197. package/src/json-schema-subset/global.ts +60 -0
  198. package/src/json-schema-subset/index.ts +8 -0
  199. package/src/json-schema-subset/preprocessing.ts +74 -0
  200. package/src/json-schema-subset/types.ts +8 -0
  201. package/src/json-schema-subset/utils.ts +95 -0
  202. package/src/localization/common/languages.ts +118 -0
  203. package/src/localization/common/timeZone.ts +25 -0
  204. package/src/openapi/common/authBindings.ts +12 -0
  205. package/src/openapi/common/openapi.ts +459 -0
  206. package/src/trigger/common/config.ts +56 -0
  207. package/src/trigger/common/configOptions.ts +15 -0
  208. package/src/trigger/common/configSchema.ts +8 -0
  209. package/src/trigger/common/contract.ts +132 -0
  210. package/src/trigger/common/cron.ts +151 -0
  211. package/src/trigger/common/integration.ts +498 -0
  212. package/src/trigger/common/poll.ts +187 -0
  213. package/src/trigger/common/webhook.ts +412 -0
  214. package/src/trigger/providers/airtable/locales/fr.json +18 -0
  215. package/src/trigger/providers/airtable/locales/ja.json +18 -0
  216. package/src/trigger/providers/airtable/locales/ko.json +18 -0
  217. package/src/trigger/providers/airtable/locales/ru.json +18 -0
  218. package/src/trigger/providers/airtable/locales/zh-CN.json +18 -0
  219. package/src/trigger/providers/airtable/locales/zh-TW.json +18 -0
  220. package/src/trigger/providers/asana/locales/fr.json +15 -0
  221. package/src/trigger/providers/asana/locales/ja.json +15 -0
  222. package/src/trigger/providers/asana/locales/ko.json +15 -0
  223. package/src/trigger/providers/asana/locales/ru.json +15 -0
  224. package/src/trigger/providers/asana/locales/zh-CN.json +15 -0
  225. package/src/trigger/providers/asana/locales/zh-TW.json +15 -0
  226. package/src/trigger/providers/calendly/locales/fr.json +16 -0
  227. package/src/trigger/providers/calendly/locales/ja.json +16 -0
  228. package/src/trigger/providers/calendly/locales/ko.json +16 -0
  229. package/src/trigger/providers/calendly/locales/ru.json +16 -0
  230. package/src/trigger/providers/calendly/locales/zh-CN.json +16 -0
  231. package/src/trigger/providers/calendly/locales/zh-TW.json +16 -0
  232. package/src/trigger/providers/catalog.generated.json +4996 -0
  233. package/src/trigger/providers/clickup/locales/fr.json +16 -0
  234. package/src/trigger/providers/clickup/locales/ja.json +16 -0
  235. package/src/trigger/providers/clickup/locales/ko.json +16 -0
  236. package/src/trigger/providers/clickup/locales/ru.json +16 -0
  237. package/src/trigger/providers/clickup/locales/zh-CN.json +16 -0
  238. package/src/trigger/providers/clickup/locales/zh-TW.json +16 -0
  239. package/src/trigger/providers/definitions.ts +19 -0
  240. package/src/trigger/providers/feishu/locales/fr.json +20 -0
  241. package/src/trigger/providers/feishu/locales/ja.json +20 -0
  242. package/src/trigger/providers/feishu/locales/ko.json +20 -0
  243. package/src/trigger/providers/feishu/locales/ru.json +20 -0
  244. package/src/trigger/providers/feishu/locales/zh-CN.json +20 -0
  245. package/src/trigger/providers/feishu/locales/zh-TW.json +20 -0
  246. package/src/trigger/providers/fieldDescriptions.ts +392 -0
  247. package/src/trigger/providers/fieldLabels.ts +256 -0
  248. package/src/trigger/providers/fireflies/locales/fr.json +17 -0
  249. package/src/trigger/providers/fireflies/locales/ja.json +17 -0
  250. package/src/trigger/providers/fireflies/locales/ko.json +17 -0
  251. package/src/trigger/providers/fireflies/locales/ru.json +17 -0
  252. package/src/trigger/providers/fireflies/locales/zh-CN.json +17 -0
  253. package/src/trigger/providers/fireflies/locales/zh-TW.json +17 -0
  254. package/src/trigger/providers/github/locales/fr.json +30 -0
  255. package/src/trigger/providers/github/locales/ja.json +30 -0
  256. package/src/trigger/providers/github/locales/ko.json +30 -0
  257. package/src/trigger/providers/github/locales/ru.json +30 -0
  258. package/src/trigger/providers/github/locales/zh-CN.json +30 -0
  259. package/src/trigger/providers/github/locales/zh-TW.json +30 -0
  260. package/src/trigger/providers/gitlab/locales/fr.json +18 -0
  261. package/src/trigger/providers/gitlab/locales/ja.json +18 -0
  262. package/src/trigger/providers/gitlab/locales/ko.json +18 -0
  263. package/src/trigger/providers/gitlab/locales/ru.json +18 -0
  264. package/src/trigger/providers/gitlab/locales/zh-CN.json +18 -0
  265. package/src/trigger/providers/gitlab/locales/zh-TW.json +18 -0
  266. package/src/trigger/providers/gmail/locales/fr.json +18 -0
  267. package/src/trigger/providers/gmail/locales/ja.json +18 -0
  268. package/src/trigger/providers/gmail/locales/ko.json +18 -0
  269. package/src/trigger/providers/gmail/locales/ru.json +18 -0
  270. package/src/trigger/providers/gmail/locales/zh-CN.json +18 -0
  271. package/src/trigger/providers/gmail/locales/zh-TW.json +18 -0
  272. package/src/trigger/providers/google-calendar/locales/fr.json +15 -0
  273. package/src/trigger/providers/google-calendar/locales/ja.json +15 -0
  274. package/src/trigger/providers/google-calendar/locales/ko.json +15 -0
  275. package/src/trigger/providers/google-calendar/locales/ru.json +15 -0
  276. package/src/trigger/providers/google-calendar/locales/zh-CN.json +15 -0
  277. package/src/trigger/providers/google-calendar/locales/zh-TW.json +15 -0
  278. package/src/trigger/providers/google-drive/locales/fr.json +48 -0
  279. package/src/trigger/providers/google-drive/locales/ja.json +48 -0
  280. package/src/trigger/providers/google-drive/locales/ko.json +48 -0
  281. package/src/trigger/providers/google-drive/locales/ru.json +48 -0
  282. package/src/trigger/providers/google-drive/locales/zh-CN.json +48 -0
  283. package/src/trigger/providers/google-drive/locales/zh-TW.json +48 -0
  284. package/src/trigger/providers/google-sheets/locales/fr.json +19 -0
  285. package/src/trigger/providers/google-sheets/locales/ja.json +19 -0
  286. package/src/trigger/providers/google-sheets/locales/ko.json +19 -0
  287. package/src/trigger/providers/google-sheets/locales/ru.json +19 -0
  288. package/src/trigger/providers/google-sheets/locales/zh-CN.json +19 -0
  289. package/src/trigger/providers/google-sheets/locales/zh-TW.json +19 -0
  290. package/src/trigger/providers/intercom/locales/fr.json +17 -0
  291. package/src/trigger/providers/intercom/locales/ja.json +17 -0
  292. package/src/trigger/providers/intercom/locales/ko.json +17 -0
  293. package/src/trigger/providers/intercom/locales/ru.json +17 -0
  294. package/src/trigger/providers/intercom/locales/zh-CN.json +17 -0
  295. package/src/trigger/providers/intercom/locales/zh-TW.json +17 -0
  296. package/src/trigger/providers/jira/locales/fr.json +17 -0
  297. package/src/trigger/providers/jira/locales/ja.json +17 -0
  298. package/src/trigger/providers/jira/locales/ko.json +17 -0
  299. package/src/trigger/providers/jira/locales/ru.json +17 -0
  300. package/src/trigger/providers/jira/locales/zh-CN.json +17 -0
  301. package/src/trigger/providers/jira/locales/zh-TW.json +17 -0
  302. package/src/trigger/providers/linear/locales/fr.json +13 -0
  303. package/src/trigger/providers/linear/locales/ja.json +13 -0
  304. package/src/trigger/providers/linear/locales/ko.json +13 -0
  305. package/src/trigger/providers/linear/locales/ru.json +13 -0
  306. package/src/trigger/providers/linear/locales/zh-CN.json +13 -0
  307. package/src/trigger/providers/linear/locales/zh-TW.json +13 -0
  308. package/src/trigger/providers/locales/fr.ts +71 -0
  309. package/src/trigger/providers/locales/ja.ts +71 -0
  310. package/src/trigger/providers/locales/ko.ts +71 -0
  311. package/src/trigger/providers/locales/ru.ts +71 -0
  312. package/src/trigger/providers/locales/zh-CN.ts +71 -0
  313. package/src/trigger/providers/locales/zh-TW.ts +71 -0
  314. package/src/trigger/providers/localization.ts +59 -0
  315. package/src/trigger/providers/notion/locales/fr.json +16 -0
  316. package/src/trigger/providers/notion/locales/ja.json +16 -0
  317. package/src/trigger/providers/notion/locales/ko.json +16 -0
  318. package/src/trigger/providers/notion/locales/ru.json +16 -0
  319. package/src/trigger/providers/notion/locales/zh-CN.json +16 -0
  320. package/src/trigger/providers/notion/locales/zh-TW.json +16 -0
  321. package/src/trigger/providers/one-drive/locales/fr.json +16 -0
  322. package/src/trigger/providers/one-drive/locales/ja.json +16 -0
  323. package/src/trigger/providers/one-drive/locales/ko.json +16 -0
  324. package/src/trigger/providers/one-drive/locales/ru.json +16 -0
  325. package/src/trigger/providers/one-drive/locales/zh-CN.json +16 -0
  326. package/src/trigger/providers/one-drive/locales/zh-TW.json +16 -0
  327. package/src/trigger/providers/outlook/locales/fr.json +18 -0
  328. package/src/trigger/providers/outlook/locales/ja.json +18 -0
  329. package/src/trigger/providers/outlook/locales/ko.json +18 -0
  330. package/src/trigger/providers/outlook/locales/ru.json +18 -0
  331. package/src/trigger/providers/outlook/locales/zh-CN.json +18 -0
  332. package/src/trigger/providers/outlook/locales/zh-TW.json +18 -0
  333. package/src/trigger/providers/pandadoc/locales/fr.json +12 -0
  334. package/src/trigger/providers/pandadoc/locales/ja.json +12 -0
  335. package/src/trigger/providers/pandadoc/locales/ko.json +12 -0
  336. package/src/trigger/providers/pandadoc/locales/ru.json +12 -0
  337. package/src/trigger/providers/pandadoc/locales/zh-CN.json +12 -0
  338. package/src/trigger/providers/pandadoc/locales/zh-TW.json +12 -0
  339. package/src/trigger/providers/pipedrive/locales/fr.json +15 -0
  340. package/src/trigger/providers/pipedrive/locales/ja.json +15 -0
  341. package/src/trigger/providers/pipedrive/locales/ko.json +15 -0
  342. package/src/trigger/providers/pipedrive/locales/ru.json +15 -0
  343. package/src/trigger/providers/pipedrive/locales/zh-CN.json +15 -0
  344. package/src/trigger/providers/pipedrive/locales/zh-TW.json +15 -0
  345. package/src/trigger/providers/remote.ts +163 -0
  346. package/src/trigger/providers/resend/locales/fr.json +16 -0
  347. package/src/trigger/providers/resend/locales/ja.json +16 -0
  348. package/src/trigger/providers/resend/locales/ko.json +16 -0
  349. package/src/trigger/providers/resend/locales/ru.json +16 -0
  350. package/src/trigger/providers/resend/locales/zh-CN.json +16 -0
  351. package/src/trigger/providers/resend/locales/zh-TW.json +16 -0
  352. package/src/trigger/providers/sentry/locales/fr.json +19 -0
  353. package/src/trigger/providers/sentry/locales/ja.json +19 -0
  354. package/src/trigger/providers/sentry/locales/ko.json +19 -0
  355. package/src/trigger/providers/sentry/locales/ru.json +19 -0
  356. package/src/trigger/providers/sentry/locales/zh-CN.json +19 -0
  357. package/src/trigger/providers/sentry/locales/zh-TW.json +19 -0
  358. package/src/trigger/providers/shopify/locales/fr.json +18 -0
  359. package/src/trigger/providers/shopify/locales/ja.json +18 -0
  360. package/src/trigger/providers/shopify/locales/ko.json +18 -0
  361. package/src/trigger/providers/shopify/locales/ru.json +18 -0
  362. package/src/trigger/providers/shopify/locales/zh-CN.json +18 -0
  363. package/src/trigger/providers/shopify/locales/zh-TW.json +18 -0
  364. package/src/trigger/providers/slack/locales/fr.json +18 -0
  365. package/src/trigger/providers/slack/locales/ja.json +18 -0
  366. package/src/trigger/providers/slack/locales/ko.json +18 -0
  367. package/src/trigger/providers/slack/locales/ru.json +18 -0
  368. package/src/trigger/providers/slack/locales/zh-CN.json +18 -0
  369. package/src/trigger/providers/slack/locales/zh-TW.json +18 -0
  370. package/src/trigger/providers/slackbot/locales/fr.json +23 -0
  371. package/src/trigger/providers/slackbot/locales/ja.json +23 -0
  372. package/src/trigger/providers/slackbot/locales/ko.json +23 -0
  373. package/src/trigger/providers/slackbot/locales/ru.json +23 -0
  374. package/src/trigger/providers/slackbot/locales/zh-CN.json +23 -0
  375. package/src/trigger/providers/slackbot/locales/zh-TW.json +23 -0
  376. package/src/trigger/providers/source-events.ts +25 -0
  377. package/src/trigger/providers/stripe/locales/fr.json +17 -0
  378. package/src/trigger/providers/stripe/locales/ja.json +17 -0
  379. package/src/trigger/providers/stripe/locales/ko.json +17 -0
  380. package/src/trigger/providers/stripe/locales/ru.json +17 -0
  381. package/src/trigger/providers/stripe/locales/zh-CN.json +17 -0
  382. package/src/trigger/providers/stripe/locales/zh-TW.json +17 -0
  383. package/src/trigger/providers/tally/locales/fr.json +12 -0
  384. package/src/trigger/providers/tally/locales/ja.json +12 -0
  385. package/src/trigger/providers/tally/locales/ko.json +12 -0
  386. package/src/trigger/providers/tally/locales/ru.json +12 -0
  387. package/src/trigger/providers/tally/locales/zh-CN.json +12 -0
  388. package/src/trigger/providers/tally/locales/zh-TW.json +12 -0
  389. package/src/trigger/providers/telegram/locales/fr.json +17 -0
  390. package/src/trigger/providers/telegram/locales/ja.json +17 -0
  391. package/src/trigger/providers/telegram/locales/ko.json +17 -0
  392. package/src/trigger/providers/telegram/locales/ru.json +17 -0
  393. package/src/trigger/providers/telegram/locales/zh-CN.json +17 -0
  394. package/src/trigger/providers/telegram/locales/zh-TW.json +17 -0
  395. package/src/trigger/providers/typeform/locales/fr.json +12 -0
  396. package/src/trigger/providers/typeform/locales/ja.json +12 -0
  397. package/src/trigger/providers/typeform/locales/ko.json +12 -0
  398. package/src/trigger/providers/typeform/locales/ru.json +12 -0
  399. package/src/trigger/providers/typeform/locales/zh-CN.json +12 -0
  400. package/src/trigger/providers/typeform/locales/zh-TW.json +12 -0
  401. package/src/trigger/providers/vercel/locales/fr.json +18 -0
  402. package/src/trigger/providers/vercel/locales/ja.json +18 -0
  403. package/src/trigger/providers/vercel/locales/ko.json +18 -0
  404. package/src/trigger/providers/vercel/locales/ru.json +18 -0
  405. package/src/trigger/providers/vercel/locales/zh-CN.json +18 -0
  406. package/src/trigger/providers/vercel/locales/zh-TW.json +18 -0
  407. package/src/trigger/providers/woocommerce/locales/fr.json +19 -0
  408. package/src/trigger/providers/woocommerce/locales/ja.json +19 -0
  409. package/src/trigger/providers/woocommerce/locales/ko.json +19 -0
  410. package/src/trigger/providers/woocommerce/locales/ru.json +19 -0
  411. package/src/trigger/providers/woocommerce/locales/zh-CN.json +19 -0
  412. package/src/trigger/providers/woocommerce/locales/zh-TW.json +19 -0
  413. package/src/trigger/providers/zendesk/locales/fr.json +15 -0
  414. package/src/trigger/providers/zendesk/locales/ja.json +15 -0
  415. package/src/trigger/providers/zendesk/locales/ko.json +15 -0
  416. package/src/trigger/providers/zendesk/locales/ru.json +15 -0
  417. package/src/trigger/providers/zendesk/locales/zh-CN.json +15 -0
  418. package/src/trigger/providers/zendesk/locales/zh-TW.json +15 -0
  419. package/src/trigger/providers/zoom/locales/fr.json +17 -0
  420. package/src/trigger/providers/zoom/locales/ja.json +17 -0
  421. package/src/trigger/providers/zoom/locales/ko.json +17 -0
  422. package/src/trigger/providers/zoom/locales/ru.json +17 -0
  423. package/src/trigger/providers/zoom/locales/zh-CN.json +17 -0
  424. package/src/trigger/providers/zoom/locales/zh-TW.json +17 -0
  425. package/src/types/index.ts +112 -0
  426. package/src/workflow/common/workflow.ts +273 -0
  427. package/dist/browser/lib-DrKav3HG.js +0 -11403
  428. /package/dist/{browser → common}/flow-authoring-edge.d.ts +0 -0
  429. /package/dist/{browser → common}/flow-authoring-module.d.ts +0 -0
  430. /package/dist/{browser → common}/flow-authoring.d.ts +0 -0
  431. /package/dist/{browser → common}/flow-input-value.d.ts +0 -0
  432. /package/dist/{browser → common}/webhook-method.d.ts +0 -0
@@ -0,0 +1,210 @@
1
+ export type Range = readonly [Point, Point]
2
+ export type Point = {
3
+ readonly num: number
4
+ readonly exclusive: boolean
5
+ }
6
+
7
+ export type Splitter = {
8
+ readonly left?: SplitterSide
9
+ readonly right?: SplitterSide
10
+ readonly center?: Range
11
+ }
12
+
13
+ export type SplitterSide = {
14
+ readonly fromLeft: boolean
15
+ readonly range: Range
16
+ }
17
+
18
+ export function splitRange(range1: Range, range2: Range): Splitter {
19
+ const [min1] = range1
20
+ const [min2] = range2
21
+
22
+ if (min1.num < min2.num) {
23
+ return splitRangeLessBranch(range1, range2)
24
+ } else if (min1.num > min2.num) {
25
+ return splitRangeGreaterBranch(range1, range2)
26
+ } else {
27
+ return splitRangeEqualsBranch(range1, range2)
28
+ }
29
+ }
30
+
31
+ function splitRangeLessBranch(range1: Range, range2: Range): Splitter {
32
+ const [min1, max1] = range1
33
+ const [min2, max2] = range2
34
+
35
+ if (max1.num <= min2.num) {
36
+ const exclusive1 = max1.exclusive
37
+ const exclusive2 = min2.exclusive
38
+ if (max1.num < min2.num || exclusive1 || exclusive2) {
39
+ return {
40
+ left: { fromLeft: true, range: range1 },
41
+ right: { fromLeft: false, range: range2 },
42
+ }
43
+ }
44
+ }
45
+ if (max1.num <= max2.num) {
46
+ let hasRight = true
47
+ let isLeftRangeOverride = false
48
+
49
+ if (max1.num === max2.num) {
50
+ const exclusive1 = max1.exclusive
51
+ const exclusive2 = max2.exclusive
52
+ hasRight = exclusive1 !== exclusive2
53
+ isLeftRangeOverride = !exclusive1 && exclusive2
54
+ }
55
+ if (!isLeftRangeOverride) {
56
+ let right: SplitterSide | undefined
57
+ if (hasRight) {
58
+ right = {
59
+ fromLeft: false,
60
+ range: [reversalExclusive(max1), max2],
61
+ }
62
+ }
63
+ return {
64
+ left: {
65
+ fromLeft: true,
66
+ range: [min1, reversalExclusive(min2)],
67
+ },
68
+ center: [min2, max1],
69
+ right,
70
+ }
71
+ }
72
+ }
73
+ // if (max1.num > max2.num || (max1.num === max2.num && max1.exclusive === false && max2.exclusive === true))
74
+ {
75
+ return {
76
+ left: {
77
+ fromLeft: true,
78
+ range: [min1, reversalExclusive(min2)],
79
+ },
80
+ center: [min2, max2],
81
+ right: {
82
+ fromLeft: true,
83
+ range: [reversalExclusive(max2), max1],
84
+ },
85
+ }
86
+ }
87
+ }
88
+
89
+ function splitRangeGreaterBranch(range1: Range, range2: Range): Splitter {
90
+ const [min1, max1] = range1
91
+ const [min2, max2] = range2
92
+
93
+ if (min1.num >= max2.num) {
94
+ const exclusive1 = max2.exclusive
95
+ const exclusive2 = min1.exclusive
96
+ if (min1.num > max2.num || exclusive1 || exclusive2) {
97
+ return {
98
+ left: { fromLeft: false, range: range2 },
99
+ right: { fromLeft: true, range: range1 },
100
+ }
101
+ }
102
+ }
103
+ if (max2.num <= max1.num) {
104
+ let hasRight = true
105
+ let isRightRangeOverride = false
106
+
107
+ if (max1.num === max2.num) {
108
+ const exclusive1 = max2.exclusive
109
+ const exclusive2 = max1.exclusive
110
+ hasRight = exclusive1 !== exclusive2
111
+ isRightRangeOverride = !exclusive1 && exclusive2
112
+ }
113
+ if (!isRightRangeOverride) {
114
+ let right: SplitterSide | undefined
115
+ if (hasRight) {
116
+ right = {
117
+ fromLeft: true,
118
+ range: [reversalExclusive(max2), max1],
119
+ }
120
+ }
121
+ return {
122
+ left: {
123
+ fromLeft: false,
124
+ range: [min2, reversalExclusive(min1)],
125
+ },
126
+ center: [min1, max2],
127
+ right,
128
+ }
129
+ }
130
+ }
131
+ // if (max2.num > max1.num || (max2.num === max1.num && max2.exclusive === false && max1.exclusive === true))
132
+ {
133
+ return {
134
+ left: {
135
+ fromLeft: false,
136
+ range: [min2, reversalExclusive(min1)],
137
+ },
138
+ center: [min1, max1],
139
+ right: {
140
+ fromLeft: false,
141
+ range: [reversalExclusive(max1), max2],
142
+ },
143
+ }
144
+ }
145
+ }
146
+
147
+ function splitRangeEqualsBranch(range1: Range, range2: Range): Splitter {
148
+ const [min1, max1] = range1
149
+ const [min2, max2] = range2
150
+ const exclusive1 = min1.exclusive
151
+ const exclusive2 = min2.exclusive
152
+
153
+ let left: SplitterSide | undefined
154
+ let centerBegin = min1
155
+
156
+ if (!exclusive1 && exclusive2) {
157
+ centerBegin = min2
158
+ left = {
159
+ fromLeft: true,
160
+ range: [min1, reversalExclusive(min2)],
161
+ }
162
+ } else if (exclusive1 && !exclusive2) {
163
+ left = {
164
+ fromLeft: false,
165
+ range: [min2, reversalExclusive(min1)],
166
+ }
167
+ }
168
+ if (max1.num <= max2.num) {
169
+ let hasRight = true
170
+ let isLeftRangeOverride = false
171
+ if (max1.num === max2.num) {
172
+ const maxExclusive1 = max1.exclusive
173
+ const maxExclusive2 = max2.exclusive
174
+ hasRight = maxExclusive1 !== maxExclusive2
175
+ isLeftRangeOverride = !maxExclusive1 && maxExclusive2
176
+ }
177
+ if (!isLeftRangeOverride) {
178
+ let right: SplitterSide | undefined
179
+ if (hasRight) {
180
+ right = {
181
+ fromLeft: false,
182
+ range: [reversalExclusive(max1), max2],
183
+ }
184
+ }
185
+ return {
186
+ left,
187
+ center: [centerBegin, max1],
188
+ right,
189
+ }
190
+ }
191
+ }
192
+ // if (max1.num > max2.num || (max1.num === max2.num && max1.exclusive === false && max2.exclusive === true))
193
+ {
194
+ return {
195
+ left,
196
+ center: [centerBegin, max2],
197
+ right: {
198
+ fromLeft: true,
199
+ range: [reversalExclusive(max2), max1],
200
+ },
201
+ }
202
+ }
203
+ }
204
+
205
+ function reversalExclusive(point: Point): Point {
206
+ return {
207
+ num: point.num,
208
+ exclusive: !point.exclusive,
209
+ }
210
+ }
@@ -0,0 +1,23 @@
1
+ import type { CompiledSchema } from '../compiler/index.ts'
2
+
3
+ export const ValidResult = Object.freeze({
4
+ Valid: 0,
5
+ Invalid: 1,
6
+ Unknown: 2,
7
+ })
8
+
9
+ export type ValidResult = (typeof ValidResult)[keyof typeof ValidResult]
10
+
11
+ export function valid<E>(compiledSchema: CompiledSchema<E>, value: unknown): ValidResult {
12
+ const isValid = compiledSchema.isValid
13
+ if (isValid) {
14
+ const result = isValid(value)
15
+ if (result === true) {
16
+ return ValidResult.Valid
17
+ } else {
18
+ return ValidResult.Invalid
19
+ }
20
+ } else {
21
+ return ValidResult.Unknown
22
+ }
23
+ }
@@ -0,0 +1,163 @@
1
+ import type { JSONSchema7, JSONSchema7Definition } from 'json-schema'
2
+ import type { JSONDelegate } from '../types.ts'
3
+ import type { Schema } from '../types.ts'
4
+ import type { Context } from './common.ts'
5
+ import type { InputSchema } from './compiler.ts'
6
+ import type { CompiledSchema } from './wrapper.ts'
7
+
8
+ import { joinPath, recordWarn, unwrapJSONSchema7Definition } from './common.ts'
9
+ import { compileSchema } from './compiler.ts'
10
+ import { cleanEmptyValues } from './utils.ts'
11
+ import { wrapCompiledSchema, CompiledKind, getKind, toNever, isCompiledSchema } from './wrapper.ts'
12
+
13
+ export function compileArraySchema<E>(context: Context<E>, schema: InputSchema): CompiledSchema<E> | null {
14
+ let items = compileItems(context, schema)
15
+ let maxItems = getItemsLimit(context, 'maxItems', schema)
16
+ const minItems = getItemsLimit(context, 'minItems', schema)
17
+ const contains = compileContains(context, schema)
18
+ const uniqueItems = schema.uniqueItems
19
+
20
+ // Undefined means no value is required, while null represents a compilation error.
21
+ let additionalItems: Schema<E> | false | null | undefined
22
+
23
+ if (Array.isArray(items)) {
24
+ additionalItems = compileAdditionalItems(context, schema)
25
+ } else if (schema.additionalItems) {
26
+ // Additional items are ignored when items is not an array.
27
+ // See https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-validation-01#section-6.4.2.
28
+ recordWarn(context, 'it is needless when items is not array', 'additionalItems')
29
+ }
30
+ if (!items || !contains || additionalItems === null) {
31
+ return null
32
+ }
33
+ let isNever = false
34
+ let updateMaxItems = false
35
+
36
+ if (Array.isArray(items)) {
37
+ if (maxItems !== undefined && maxItems <= items.length) {
38
+ items = items.splice(maxItems)
39
+ additionalItems = variableToNever(additionalItems, context.delegate)
40
+ }
41
+ const firstNeverItemIndex = items.findIndex((item) => getKind(item) === CompiledKind.Never)
42
+
43
+ if (firstNeverItemIndex !== -1) {
44
+ items = items.splice(firstNeverItemIndex)
45
+ additionalItems = variableToNever(additionalItems, context.delegate)
46
+ if (maxItems === undefined) {
47
+ maxItems = items.length
48
+ updateMaxItems = true
49
+ }
50
+ }
51
+ if (minItems !== undefined && items.length < minItems) {
52
+ recordWarn(context, `length(${items.length}) of items if less than minItems(${minItems})`)
53
+ isNever = true
54
+ }
55
+ if (items.length === 0 && additionalItems && getKind(additionalItems) === CompiledKind.Never) {
56
+ isNever = true
57
+ }
58
+ } else if (getKind(items) === CompiledKind.Never) {
59
+ isNever = true
60
+ }
61
+ if (maxItems !== undefined && minItems !== undefined && maxItems < minItems) {
62
+ if (!updateMaxItems) {
63
+ recordWarn(context, `maxItems(${maxItems}) is less than minItems(${minItems})`)
64
+ }
65
+ isNever = true
66
+ }
67
+ const kind = isNever ? CompiledKind.Never : CompiledKind.Array
68
+ const mergedSchema = cleanEmptyValues({
69
+ type: 'array',
70
+ items,
71
+ contains,
72
+ uniqueItems,
73
+ maxItems,
74
+ minItems,
75
+ additionalItems: additionalItems!,
76
+ })
77
+ return wrapCompiledSchema(kind, mergedSchema as JSONSchema7, context.delegate, context.path)
78
+ }
79
+
80
+ function compileItems<E>(context: Context<E>, { items }: InputSchema): Schema<E> | Schema<E>[] | null {
81
+ if (!items) {
82
+ return wrapCompiledSchema(CompiledKind.Any, {}, context.delegate, context.path)
83
+ }
84
+ if (Array.isArray(items)) {
85
+ const schemas: Schema<E>[] = []
86
+ let hasAnyError = false
87
+ for (const [i, item] of items.entries()) {
88
+ const subContext = joinPath(context, 'items', i)
89
+ const schema = compileSchema(subContext, unwrapJSONSchema7Definition(item))
90
+ if (!schema) {
91
+ hasAnyError = true
92
+ continue
93
+ }
94
+ schemas.push(schema)
95
+ }
96
+ if (hasAnyError) {
97
+ return null
98
+ }
99
+ return schemas
100
+ } else {
101
+ const subContext = joinPath(context, 'items')
102
+ const itemsSchema = unwrapJSONSchema7Definition(items as JSONSchema7Definition)
103
+ const schema = compileSchema(subContext, itemsSchema)
104
+
105
+ return schema
106
+ }
107
+ }
108
+
109
+ function getItemsLimit<E>(context: Context<E>, name: 'maxItems' | 'minItems', schema: InputSchema): number | undefined {
110
+ const propertiesLimit = schema[name]
111
+ if (propertiesLimit === undefined) {
112
+ return undefined
113
+ }
114
+ if (Number.isNaN(propertiesLimit)) {
115
+ recordWarn(context, 'find NaN', name)
116
+ return undefined
117
+ }
118
+ if (propertiesLimit < 0) {
119
+ recordWarn(context, `find invalid number ${propertiesLimit}`, name)
120
+ return undefined
121
+ }
122
+ return propertiesLimit
123
+ }
124
+
125
+ function compileContains<E>(context: Context<E>, { contains }: InputSchema): Schema<E> | null {
126
+ if (!contains) {
127
+ return wrapCompiledSchema(CompiledKind.Any, {}, context.delegate, context.path)
128
+ }
129
+ const subContext = joinPath(context, 'contains')
130
+ const containsSchema = unwrapJSONSchema7Definition(contains)
131
+
132
+ return compileSchema(subContext, containsSchema)
133
+ }
134
+
135
+ function compileAdditionalItems<E>(context: Context<E>, { additionalItems }: InputSchema): Schema<E> | false | null {
136
+ switch (typeof additionalItems) {
137
+ case 'boolean': {
138
+ if (additionalItems) {
139
+ return wrapCompiledSchema(CompiledKind.Any, {}, context.delegate, context.path)
140
+ } else {
141
+ return false
142
+ }
143
+ }
144
+ case 'object': {
145
+ const subContext = joinPath(context, 'additionalItems')
146
+ const compiledSchema = compileSchema(subContext, additionalItems)
147
+ return compiledSchema
148
+ }
149
+ default: {
150
+ return wrapCompiledSchema(CompiledKind.Any, {}, context.delegate, context.path)
151
+ }
152
+ }
153
+ }
154
+
155
+ function variableToNever<T, E>(schema: Schema<E> | T | undefined, delegate?: JSONDelegate<E>): Schema<E> | T {
156
+ if (schema === undefined) {
157
+ return wrapCompiledSchema(CompiledKind.Never, { type: 'string', maxLength: 0, minLength: 1 }, delegate)
158
+ } else if (isCompiledSchema(schema)) {
159
+ return getKind(schema) === CompiledKind.Never ? schema : toNever(schema as CompiledSchema<E>)
160
+ } else {
161
+ return schema
162
+ }
163
+ }
@@ -0,0 +1,109 @@
1
+ import type { JSONSchema7Definition } from 'json-schema'
2
+ import type { Schema } from '../types.ts'
3
+ import type { JSONDelegate } from '../types.ts'
4
+ import type { DeepReadonly } from '../utils.ts'
5
+ import type { Context } from './common.ts'
6
+ import type { CompiledSchema } from './wrapper.ts'
7
+
8
+ import { joinPath, unwrapJSONSchema7Definition, recordError } from './common.ts'
9
+ import { compileSchema } from './compiler.ts'
10
+ import { getKind, CompiledKind, wrapCompiledSchema } from './wrapper.ts'
11
+
12
+ export type CombinationKeys = 'allOf' | 'anyOf' | 'oneOf'
13
+ export const COMBINATION_KEYS: readonly CombinationKeys[] = Object.freeze(['allOf', 'anyOf', 'oneOf'])
14
+
15
+ export function compileCombinationSchema<E>(
16
+ context: Context<E>,
17
+ key: CombinationKeys,
18
+ combinationList: DeepReadonly<JSONSchema7Definition[]>,
19
+ delegate?: JSONDelegate<E>,
20
+ ): CompiledSchema<E> | null {
21
+ if (combinationList.length === 0) {
22
+ recordError(context, 'disable empty list', key)
23
+ return null
24
+ }
25
+ const compiledCombinationList: Schema<E>[] = []
26
+
27
+ for (const [i, element] of combinationList.entries()) {
28
+ const subContext = joinPath(context, key, i)
29
+ const schema = unwrapJSONSchema7Definition(element)
30
+ const compiledSchema = compileSchema(subContext, schema)
31
+ if (compiledSchema) {
32
+ compiledCombinationList.push(compiledSchema)
33
+ }
34
+ }
35
+ if (compiledCombinationList.length < combinationList.length) {
36
+ return null
37
+ }
38
+ let anyCount = 0
39
+ let neverCount = 0
40
+
41
+ for (const compiledSchema of compiledCombinationList) {
42
+ switch (getKind(compiledSchema)) {
43
+ case CompiledKind.Any: {
44
+ anyCount += 1
45
+ break
46
+ }
47
+ case CompiledKind.Never: {
48
+ neverCount += 1
49
+ break
50
+ }
51
+ }
52
+ }
53
+ let kind: CompiledKind = CompiledKind.Combination
54
+
55
+ switch (key) {
56
+ case 'allOf': {
57
+ if (neverCount > 0) {
58
+ kind = CompiledKind.Never
59
+ } else if (anyCount === compiledCombinationList.length) {
60
+ kind = CompiledKind.Any
61
+ } else if (!areAllTypesTheSame(compiledCombinationList)) {
62
+ kind = CompiledKind.Never
63
+ }
64
+ break
65
+ }
66
+ case 'anyOf': {
67
+ if (anyCount > 0) {
68
+ kind = CompiledKind.Any
69
+ } else if (neverCount === compiledCombinationList.length) {
70
+ kind = CompiledKind.Never
71
+ }
72
+ break
73
+ }
74
+ case 'oneOf': {
75
+ if (anyCount > 1) {
76
+ // More than one unconstrained branch violates oneOf because at least two branches will match.
77
+ kind = CompiledKind.Never
78
+ } else if (neverCount === compiledCombinationList.length) {
79
+ kind = CompiledKind.Never
80
+ } else if (anyCount === 1 && neverCount === compiledCombinationList.length - 1) {
81
+ kind = CompiledKind.Any
82
+ }
83
+ break
84
+ }
85
+ }
86
+ return wrapCompiledSchema(kind, { [key]: compiledCombinationList }, delegate, context.path)
87
+ }
88
+
89
+ function areAllTypesTheSame<E>(combinationList: Schema<E>[]): boolean {
90
+ let lastKind: CompiledKind | null = null
91
+ for (const schema of combinationList) {
92
+ const kind = getKind(schema)
93
+ switch (kind) {
94
+ case CompiledKind.Any:
95
+ case CompiledKind.Never: {
96
+ break
97
+ }
98
+ default: {
99
+ if (lastKind === null) {
100
+ lastKind = kind
101
+ } else if (lastKind !== kind) {
102
+ return false
103
+ }
104
+ break
105
+ }
106
+ }
107
+ }
108
+ return true
109
+ }
@@ -0,0 +1,99 @@
1
+ import type { JSONSchema7, JSONSchema7Definition } from 'json-schema'
2
+ import type { SchemaErrorItem } from '../error.ts'
3
+ import type { ExtendsContext } from '../extends/index.ts'
4
+ import type { JSONDelegate } from '../types.ts'
5
+
6
+ import { SchemaErrorItemKind } from '../error.ts'
7
+
8
+ const jsonSchemaKeys: Set<string> = new Set([
9
+ 'type',
10
+ 'enum',
11
+ 'const',
12
+ 'multipleOf',
13
+ 'maximum',
14
+ 'exclusiveMaximum',
15
+ 'minimum',
16
+ 'exclusiveMinimum',
17
+ 'maxLength',
18
+ 'minLength',
19
+ 'pattern',
20
+ 'items',
21
+ 'additionalItems',
22
+ 'maxItems',
23
+ 'minItems',
24
+ 'uniqueItems',
25
+ 'contains',
26
+ 'maxProperties',
27
+ 'minProperties',
28
+ 'required',
29
+ 'properties',
30
+ 'patternProperties',
31
+ 'additionalProperties',
32
+ 'dependencies',
33
+ 'propertyNames',
34
+ 'if',
35
+ 'then',
36
+ 'else',
37
+ 'allOf',
38
+ 'anyOf',
39
+ 'oneOf',
40
+ 'not',
41
+ 'format',
42
+ 'contentMediaType',
43
+ 'contentEncoding',
44
+ 'definitions',
45
+ ])
46
+
47
+ export function isJSONSchemaKey(key: string): key is keyof JSONSchema7 {
48
+ return jsonSchemaKeys.has(key)
49
+ }
50
+
51
+ export function isLogicEmptyObject(object: object): boolean {
52
+ for (const key in object) {
53
+ if (isJSONSchemaKey(key)) {
54
+ return false
55
+ }
56
+ }
57
+ return true
58
+ }
59
+
60
+ export type Context<E> = {
61
+ readonly delegate?: JSONDelegate<E>
62
+ readonly payload?: unknown
63
+ readonly extends: ExtendsContext
64
+ readonly path: readonly (string | number)[]
65
+ readonly errors: SchemaErrorItem<E>[]
66
+ readonly warns: SchemaErrorItem<E>[]
67
+ }
68
+
69
+ export function joinPath<E>(context: Context<E>, ...extraPath: (string | number)[]): Context<E> {
70
+ return {
71
+ ...context,
72
+ path: [...context.path, ...extraPath],
73
+ }
74
+ }
75
+
76
+ export function unwrapJSONSchema7Definition<T>(schema: T): T extends JSONSchema7Definition ? JSONSchema7 : T {
77
+ if (typeof schema === 'boolean') {
78
+ // This compiler deliberately rejects boolean schemas even though JSONSchema7Definition includes them.
79
+ throw new Error('JSONSchema7Definition cannot be boolean')
80
+ }
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ return schema as any
83
+ }
84
+
85
+ export function recordError<E>({ path, errors }: Context<E>, message: string, ...extraPath: (string | number)[]): void {
86
+ errors.push(createSchemaError(path, extraPath, message))
87
+ }
88
+
89
+ export function recordWarn<E>({ path, warns }: Context<E>, message: string, ...extraPath: (string | number)[]): void {
90
+ warns.push(createSchemaError(path, extraPath, message))
91
+ }
92
+
93
+ function createSchemaError<E>(path: readonly (string | number)[], extraPath: (string | number)[], message: string): SchemaErrorItem<E> {
94
+ return {
95
+ kind: SchemaErrorItemKind.Compiled,
96
+ message,
97
+ path: [...path, ...extraPath],
98
+ }
99
+ }