@platformatic/watt-extra 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +87 -0
  2. package/app.js +124 -0
  3. package/cli.js +141 -0
  4. package/clients/compliance/compliance-types.d.ts +887 -0
  5. package/clients/compliance/compliance.mjs +1049 -0
  6. package/clients/compliance/compliance.openapi.json +6127 -0
  7. package/clients/control-plane/control-plane-types.d.ts +2696 -0
  8. package/clients/control-plane/control-plane.mjs +3051 -0
  9. package/clients/control-plane/control-plane.openapi.json +13693 -0
  10. package/clients/cron/cron-types.d.ts +1479 -0
  11. package/clients/cron/cron.mjs +872 -0
  12. package/clients/cron/cron.openapi.json +9330 -0
  13. package/compliance/index.js +21 -0
  14. package/compliance/rules/dependencies.js +76 -0
  15. package/compliance/rules/utils.js +12 -0
  16. package/eslint.config.js +11 -0
  17. package/help/start.txt +12 -0
  18. package/help/watt-extra.txt +12 -0
  19. package/index.js +45 -0
  20. package/lib/banner.js +22 -0
  21. package/lib/errors.js +34 -0
  22. package/lib/utils.js +34 -0
  23. package/lib/wattpro.js +580 -0
  24. package/package.json +50 -0
  25. package/plugins/alerts.js +115 -0
  26. package/plugins/auth.js +89 -0
  27. package/plugins/compliancy.js +70 -0
  28. package/plugins/env.js +58 -0
  29. package/plugins/flamegraphs.js +100 -0
  30. package/plugins/init.js +70 -0
  31. package/plugins/metadata.js +84 -0
  32. package/plugins/scheduler.js +48 -0
  33. package/plugins/update.js +128 -0
  34. package/renovate.json +6 -0
  35. package/test/alerts.test.js +607 -0
  36. package/test/auth.test.js +128 -0
  37. package/test/auto-cache.test.js +401 -0
  38. package/test/cli.test.js +75 -0
  39. package/test/compliancy.test.js +87 -0
  40. package/test/fixtures/runtime-domains/alpha/package.json +5 -0
  41. package/test/fixtures/runtime-domains/alpha/platformatic.json +6 -0
  42. package/test/fixtures/runtime-domains/alpha/plugin.js +16 -0
  43. package/test/fixtures/runtime-domains/beta/package.json +5 -0
  44. package/test/fixtures/runtime-domains/beta/platformatic.json +6 -0
  45. package/test/fixtures/runtime-domains/beta/plugin.js +7 -0
  46. package/test/fixtures/runtime-domains/composer/package.json +5 -0
  47. package/test/fixtures/runtime-domains/composer/platformatic.json +19 -0
  48. package/test/fixtures/runtime-domains/package.json +1 -0
  49. package/test/fixtures/runtime-domains/platformatic.json +27 -0
  50. package/test/fixtures/runtime-health/package.json +20 -0
  51. package/test/fixtures/runtime-health/platformatic.json +16 -0
  52. package/test/fixtures/runtime-health/services/service-1/package.json +17 -0
  53. package/test/fixtures/runtime-health/services/service-1/platformatic.json +16 -0
  54. package/test/fixtures/runtime-health/services/service-1/plugins/example.js +6 -0
  55. package/test/fixtures/runtime-health/services/service-1/routes/root.cjs +8 -0
  56. package/test/fixtures/runtime-health/services/service-2/package.json +17 -0
  57. package/test/fixtures/runtime-health/services/service-2/platformatic.json +16 -0
  58. package/test/fixtures/runtime-health/services/service-2/plugins/example.js +6 -0
  59. package/test/fixtures/runtime-health/services/service-2/routes/root.cjs +8 -0
  60. package/test/fixtures/runtime-next/package.json +5 -0
  61. package/test/fixtures/runtime-next/platformatic.json +9 -0
  62. package/test/fixtures/runtime-next/web/next/next.config.js +2 -0
  63. package/test/fixtures/runtime-next/web/next/package.json +7 -0
  64. package/test/fixtures/runtime-next/web/next/platformatic.json +9 -0
  65. package/test/fixtures/runtime-next/web/next/src/app/direct/route.js +3 -0
  66. package/test/fixtures/runtime-next/web/next/src/app/layout.jsx +7 -0
  67. package/test/fixtures/runtime-next/web/next/src/app/page.jsx +3 -0
  68. package/test/fixtures/runtime-scheduler/main/package.json +5 -0
  69. package/test/fixtures/runtime-scheduler/main/platformatic.json +9 -0
  70. package/test/fixtures/runtime-scheduler/main/routes/root.cjs +11 -0
  71. package/test/fixtures/runtime-scheduler/package.json +1 -0
  72. package/test/fixtures/runtime-scheduler/platformatic.json +27 -0
  73. package/test/fixtures/runtime-service/main/package.json +5 -0
  74. package/test/fixtures/runtime-service/main/platformatic.json +12 -0
  75. package/test/fixtures/runtime-service/main/routes/root.cjs +11 -0
  76. package/test/fixtures/runtime-service/package.json +1 -0
  77. package/test/fixtures/runtime-service/platformatic.json +19 -0
  78. package/test/fixtures/service-1/package.json +7 -0
  79. package/test/fixtures/service-1/platformatic.json +18 -0
  80. package/test/fixtures/service-1/routes/root.cjs +48 -0
  81. package/test/fixtures/service-2/platformatic.json +21 -0
  82. package/test/fixtures/service-2/routes/root.cjs +5 -0
  83. package/test/fixtures/service-3/package.json +5 -0
  84. package/test/fixtures/service-3/platformatic.json +21 -0
  85. package/test/fixtures/service-3/routes/root.cjs +8 -0
  86. package/test/health.test.js +44 -0
  87. package/test/helper.js +274 -0
  88. package/test/init.test.js +243 -0
  89. package/test/patch-config.test.js +434 -0
  90. package/test/scheduler.test.js +71 -0
  91. package/test/send-to-icc-retry.test.js +138 -0
  92. package/test/shared-context.test.js +82 -0
  93. package/test/spawn.test.js +110 -0
  94. package/test/trigger-flamegraphs.test.js +226 -0
  95. package/test/update.test.js +519 -0
@@ -0,0 +1,872 @@
1
+ // This client was generated by Platformatic from an OpenAPI specification.
2
+
3
+ // The base URL for the API. This can be overridden by calling `setBaseUrl`.
4
+ let baseUrl = ''
5
+ // The default headers to send within each request. This can be overridden by calling `setDefaultHeaders`.
6
+ let defaultHeaders = {}
7
+ // The additional parameters you want to pass to the `fetch` instance.
8
+ let defaultFetchParams = {}
9
+ const defaultJsonType = { 'Content-type': 'application/json; charset=utf-8' }
10
+
11
+ function sanitizeUrl(url) {
12
+ if (url.endsWith('/')) { return url.slice(0, -1) } else { return url }
13
+ }
14
+ /** @type {import('./cron-types.d.ts').Cron['setBaseUrl']} */
15
+ export const setBaseUrl = (newUrl) => { baseUrl = sanitizeUrl(newUrl) }
16
+
17
+ /** @type {import('./cron-types.d.ts').Cron['setDefaultHeaders']} */
18
+ export const setDefaultHeaders = (headers) => { defaultHeaders = headers }
19
+
20
+ /** @type {import('./cron-types.d.ts').Cron['setDefaultFetchParams']} */
21
+ export const setDefaultFetchParams = (fetchParams) => { defaultFetchParams = fetchParams }
22
+
23
+ function headersToJSON(headers) {
24
+ const output = {}
25
+ headers.forEach((value, key) => {
26
+ output[key] = value
27
+ })
28
+ return output
29
+ }
30
+
31
+ async function _getJobs (url, request) {
32
+ const queryParameters = ['limit', 'offset', 'totalCount', 'fields', 'where.applicationId.eq', 'where.applicationId.neq', 'where.applicationId.gt', 'where.applicationId.gte', 'where.applicationId.lt', 'where.applicationId.lte', 'where.applicationId.like', 'where.applicationId.ilike', 'where.applicationId.in', 'where.applicationId.nin', 'where.applicationId.contains', 'where.applicationId.contained', 'where.applicationId.overlaps', 'where.body.eq', 'where.body.neq', 'where.body.gt', 'where.body.gte', 'where.body.lt', 'where.body.lte', 'where.body.like', 'where.body.ilike', 'where.body.in', 'where.body.nin', 'where.body.contains', 'where.body.contained', 'where.body.overlaps', 'where.callbackUrl.eq', 'where.callbackUrl.neq', 'where.callbackUrl.gt', 'where.callbackUrl.gte', 'where.callbackUrl.lt', 'where.callbackUrl.lte', 'where.callbackUrl.like', 'where.callbackUrl.ilike', 'where.callbackUrl.in', 'where.callbackUrl.nin', 'where.callbackUrl.contains', 'where.callbackUrl.contained', 'where.callbackUrl.overlaps', 'where.createdAt.eq', 'where.createdAt.neq', 'where.createdAt.gt', 'where.createdAt.gte', 'where.createdAt.lt', 'where.createdAt.lte', 'where.createdAt.like', 'where.createdAt.ilike', 'where.createdAt.in', 'where.createdAt.nin', 'where.createdAt.contains', 'where.createdAt.contained', 'where.createdAt.overlaps', 'where.deletedAt.eq', 'where.deletedAt.neq', 'where.deletedAt.gt', 'where.deletedAt.gte', 'where.deletedAt.lt', 'where.deletedAt.lte', 'where.deletedAt.like', 'where.deletedAt.ilike', 'where.deletedAt.in', 'where.deletedAt.nin', 'where.deletedAt.contains', 'where.deletedAt.contained', 'where.deletedAt.overlaps', 'where.headers.eq', 'where.headers.neq', 'where.headers.gt', 'where.headers.gte', 'where.headers.lt', 'where.headers.lte', 'where.headers.like', 'where.headers.ilike', 'where.headers.in', 'where.headers.nin', 'where.headers.contains', 'where.headers.contained', 'where.headers.overlaps', 'where.id.eq', 'where.id.neq', 'where.id.gt', 'where.id.gte', 'where.id.lt', 'where.id.lte', 'where.id.like', 'where.id.ilike', 'where.id.in', 'where.id.nin', 'where.id.contains', 'where.id.contained', 'where.id.overlaps', 'where.jobType.eq', 'where.jobType.neq', 'where.jobType.gt', 'where.jobType.gte', 'where.jobType.lt', 'where.jobType.lte', 'where.jobType.like', 'where.jobType.ilike', 'where.jobType.in', 'where.jobType.nin', 'where.jobType.contains', 'where.jobType.contained', 'where.jobType.overlaps', 'where.lastRunAt.eq', 'where.lastRunAt.neq', 'where.lastRunAt.gt', 'where.lastRunAt.gte', 'where.lastRunAt.lt', 'where.lastRunAt.lte', 'where.lastRunAt.like', 'where.lastRunAt.ilike', 'where.lastRunAt.in', 'where.lastRunAt.nin', 'where.lastRunAt.contains', 'where.lastRunAt.contained', 'where.lastRunAt.overlaps', 'where.maxRetries.eq', 'where.maxRetries.neq', 'where.maxRetries.gt', 'where.maxRetries.gte', 'where.maxRetries.lt', 'where.maxRetries.lte', 'where.maxRetries.like', 'where.maxRetries.ilike', 'where.maxRetries.in', 'where.maxRetries.nin', 'where.maxRetries.contains', 'where.maxRetries.contained', 'where.maxRetries.overlaps', 'where.method.eq', 'where.method.neq', 'where.method.gt', 'where.method.gte', 'where.method.lt', 'where.method.lte', 'where.method.like', 'where.method.ilike', 'where.method.in', 'where.method.nin', 'where.method.contains', 'where.method.contained', 'where.method.overlaps', 'where.name.eq', 'where.name.neq', 'where.name.gt', 'where.name.gte', 'where.name.lt', 'where.name.lte', 'where.name.like', 'where.name.ilike', 'where.name.in', 'where.name.nin', 'where.name.contains', 'where.name.contained', 'where.name.overlaps', 'where.nextRunAt.eq', 'where.nextRunAt.neq', 'where.nextRunAt.gt', 'where.nextRunAt.gte', 'where.nextRunAt.lt', 'where.nextRunAt.lte', 'where.nextRunAt.like', 'where.nextRunAt.ilike', 'where.nextRunAt.in', 'where.nextRunAt.nin', 'where.nextRunAt.contains', 'where.nextRunAt.contained', 'where.nextRunAt.overlaps', 'where.paused.eq', 'where.paused.neq', 'where.paused.gt', 'where.paused.gte', 'where.paused.lt', 'where.paused.lte', 'where.paused.like', 'where.paused.ilike', 'where.paused.in', 'where.paused.nin', 'where.paused.contains', 'where.paused.contained', 'where.paused.overlaps', 'where.protected.eq', 'where.protected.neq', 'where.protected.gt', 'where.protected.gte', 'where.protected.lt', 'where.protected.lte', 'where.protected.like', 'where.protected.ilike', 'where.protected.in', 'where.protected.nin', 'where.protected.contains', 'where.protected.contained', 'where.protected.overlaps', 'where.schedule.eq', 'where.schedule.neq', 'where.schedule.gt', 'where.schedule.gte', 'where.schedule.lt', 'where.schedule.lte', 'where.schedule.like', 'where.schedule.ilike', 'where.schedule.in', 'where.schedule.nin', 'where.schedule.contains', 'where.schedule.contained', 'where.schedule.overlaps', 'where.status.eq', 'where.status.neq', 'where.status.gt', 'where.status.gte', 'where.status.lt', 'where.status.lte', 'where.status.like', 'where.status.ilike', 'where.status.in', 'where.status.nin', 'where.status.contains', 'where.status.contained', 'where.status.overlaps', 'where.updatedAt.eq', 'where.updatedAt.neq', 'where.updatedAt.gt', 'where.updatedAt.gte', 'where.updatedAt.lt', 'where.updatedAt.lte', 'where.updatedAt.like', 'where.updatedAt.ilike', 'where.updatedAt.in', 'where.updatedAt.nin', 'where.updatedAt.contains', 'where.updatedAt.contained', 'where.updatedAt.overlaps', 'where.or', 'orderby.applicationId', 'orderby.body', 'orderby.callbackUrl', 'orderby.createdAt', 'orderby.deletedAt', 'orderby.headers', 'orderby.id', 'orderby.jobType', 'orderby.lastRunAt', 'orderby.maxRetries', 'orderby.method', 'orderby.name', 'orderby.nextRunAt', 'orderby.paused', 'orderby.protected', 'orderby.schedule', 'orderby.status', 'orderby.updatedAt']
33
+ const searchParams = new URLSearchParams()
34
+ if (request) {
35
+ queryParameters.forEach((qp) => {
36
+ const queryValue = request?.[qp]
37
+ if (queryValue) {
38
+ if (Array.isArray(queryValue)) {
39
+ queryValue.forEach((p) => searchParams.append(qp, p))
40
+ } else {
41
+ searchParams.append(qp, queryValue.toString())
42
+ }
43
+ }
44
+ delete request?.[qp]
45
+ })
46
+ }
47
+
48
+ const headers = {
49
+ ...defaultHeaders
50
+ }
51
+
52
+ const response = await fetch(`${url}/jobs/?${searchParams.toString()}`, {
53
+ headers,
54
+ ...defaultFetchParams
55
+ })
56
+
57
+ if (!response.ok) {
58
+ throw new Error(await response.text())
59
+ }
60
+
61
+ return await response.json()
62
+ }
63
+
64
+ /** @type {import('./cron-types.d.ts').Cron['getJobs']} */
65
+ export const getJobs = async (request) => {
66
+ return await _getJobs(baseUrl, request)
67
+ }
68
+ async function _createJob (url, request) {
69
+ const body = request
70
+ const isFormData = body instanceof FormData
71
+ const headers = {
72
+ ...defaultHeaders,
73
+ ...(isFormData ? {} : defaultJsonType)
74
+ }
75
+
76
+ const response = await fetch(`${url}/jobs/`, {
77
+ method: 'POST',
78
+ body: isFormData ? body : JSON.stringify(body),
79
+ headers,
80
+ ...defaultFetchParams
81
+ })
82
+
83
+ if (!response.ok) {
84
+ throw new Error(await response.text())
85
+ }
86
+
87
+ return await response.json()
88
+ }
89
+
90
+ /** @type {import('./cron-types.d.ts').Cron['createJob']} */
91
+ export const createJob = async (request) => {
92
+ return await _createJob(baseUrl, request)
93
+ }
94
+ async function _updateJobs (url, request) {
95
+ const queryParameters = ['fields', 'where.applicationId.eq', 'where.applicationId.neq', 'where.applicationId.gt', 'where.applicationId.gte', 'where.applicationId.lt', 'where.applicationId.lte', 'where.applicationId.like', 'where.applicationId.ilike', 'where.applicationId.in', 'where.applicationId.nin', 'where.applicationId.contains', 'where.applicationId.contained', 'where.applicationId.overlaps', 'where.body.eq', 'where.body.neq', 'where.body.gt', 'where.body.gte', 'where.body.lt', 'where.body.lte', 'where.body.like', 'where.body.ilike', 'where.body.in', 'where.body.nin', 'where.body.contains', 'where.body.contained', 'where.body.overlaps', 'where.callbackUrl.eq', 'where.callbackUrl.neq', 'where.callbackUrl.gt', 'where.callbackUrl.gte', 'where.callbackUrl.lt', 'where.callbackUrl.lte', 'where.callbackUrl.like', 'where.callbackUrl.ilike', 'where.callbackUrl.in', 'where.callbackUrl.nin', 'where.callbackUrl.contains', 'where.callbackUrl.contained', 'where.callbackUrl.overlaps', 'where.createdAt.eq', 'where.createdAt.neq', 'where.createdAt.gt', 'where.createdAt.gte', 'where.createdAt.lt', 'where.createdAt.lte', 'where.createdAt.like', 'where.createdAt.ilike', 'where.createdAt.in', 'where.createdAt.nin', 'where.createdAt.contains', 'where.createdAt.contained', 'where.createdAt.overlaps', 'where.deletedAt.eq', 'where.deletedAt.neq', 'where.deletedAt.gt', 'where.deletedAt.gte', 'where.deletedAt.lt', 'where.deletedAt.lte', 'where.deletedAt.like', 'where.deletedAt.ilike', 'where.deletedAt.in', 'where.deletedAt.nin', 'where.deletedAt.contains', 'where.deletedAt.contained', 'where.deletedAt.overlaps', 'where.headers.eq', 'where.headers.neq', 'where.headers.gt', 'where.headers.gte', 'where.headers.lt', 'where.headers.lte', 'where.headers.like', 'where.headers.ilike', 'where.headers.in', 'where.headers.nin', 'where.headers.contains', 'where.headers.contained', 'where.headers.overlaps', 'where.id.eq', 'where.id.neq', 'where.id.gt', 'where.id.gte', 'where.id.lt', 'where.id.lte', 'where.id.like', 'where.id.ilike', 'where.id.in', 'where.id.nin', 'where.id.contains', 'where.id.contained', 'where.id.overlaps', 'where.jobType.eq', 'where.jobType.neq', 'where.jobType.gt', 'where.jobType.gte', 'where.jobType.lt', 'where.jobType.lte', 'where.jobType.like', 'where.jobType.ilike', 'where.jobType.in', 'where.jobType.nin', 'where.jobType.contains', 'where.jobType.contained', 'where.jobType.overlaps', 'where.lastRunAt.eq', 'where.lastRunAt.neq', 'where.lastRunAt.gt', 'where.lastRunAt.gte', 'where.lastRunAt.lt', 'where.lastRunAt.lte', 'where.lastRunAt.like', 'where.lastRunAt.ilike', 'where.lastRunAt.in', 'where.lastRunAt.nin', 'where.lastRunAt.contains', 'where.lastRunAt.contained', 'where.lastRunAt.overlaps', 'where.maxRetries.eq', 'where.maxRetries.neq', 'where.maxRetries.gt', 'where.maxRetries.gte', 'where.maxRetries.lt', 'where.maxRetries.lte', 'where.maxRetries.like', 'where.maxRetries.ilike', 'where.maxRetries.in', 'where.maxRetries.nin', 'where.maxRetries.contains', 'where.maxRetries.contained', 'where.maxRetries.overlaps', 'where.method.eq', 'where.method.neq', 'where.method.gt', 'where.method.gte', 'where.method.lt', 'where.method.lte', 'where.method.like', 'where.method.ilike', 'where.method.in', 'where.method.nin', 'where.method.contains', 'where.method.contained', 'where.method.overlaps', 'where.name.eq', 'where.name.neq', 'where.name.gt', 'where.name.gte', 'where.name.lt', 'where.name.lte', 'where.name.like', 'where.name.ilike', 'where.name.in', 'where.name.nin', 'where.name.contains', 'where.name.contained', 'where.name.overlaps', 'where.nextRunAt.eq', 'where.nextRunAt.neq', 'where.nextRunAt.gt', 'where.nextRunAt.gte', 'where.nextRunAt.lt', 'where.nextRunAt.lte', 'where.nextRunAt.like', 'where.nextRunAt.ilike', 'where.nextRunAt.in', 'where.nextRunAt.nin', 'where.nextRunAt.contains', 'where.nextRunAt.contained', 'where.nextRunAt.overlaps', 'where.paused.eq', 'where.paused.neq', 'where.paused.gt', 'where.paused.gte', 'where.paused.lt', 'where.paused.lte', 'where.paused.like', 'where.paused.ilike', 'where.paused.in', 'where.paused.nin', 'where.paused.contains', 'where.paused.contained', 'where.paused.overlaps', 'where.protected.eq', 'where.protected.neq', 'where.protected.gt', 'where.protected.gte', 'where.protected.lt', 'where.protected.lte', 'where.protected.like', 'where.protected.ilike', 'where.protected.in', 'where.protected.nin', 'where.protected.contains', 'where.protected.contained', 'where.protected.overlaps', 'where.schedule.eq', 'where.schedule.neq', 'where.schedule.gt', 'where.schedule.gte', 'where.schedule.lt', 'where.schedule.lte', 'where.schedule.like', 'where.schedule.ilike', 'where.schedule.in', 'where.schedule.nin', 'where.schedule.contains', 'where.schedule.contained', 'where.schedule.overlaps', 'where.status.eq', 'where.status.neq', 'where.status.gt', 'where.status.gte', 'where.status.lt', 'where.status.lte', 'where.status.like', 'where.status.ilike', 'where.status.in', 'where.status.nin', 'where.status.contains', 'where.status.contained', 'where.status.overlaps', 'where.updatedAt.eq', 'where.updatedAt.neq', 'where.updatedAt.gt', 'where.updatedAt.gte', 'where.updatedAt.lt', 'where.updatedAt.lte', 'where.updatedAt.like', 'where.updatedAt.ilike', 'where.updatedAt.in', 'where.updatedAt.nin', 'where.updatedAt.contains', 'where.updatedAt.contained', 'where.updatedAt.overlaps', 'where.or']
96
+ const searchParams = new URLSearchParams()
97
+ if (request) {
98
+ queryParameters.forEach((qp) => {
99
+ const queryValue = request?.[qp]
100
+ if (queryValue) {
101
+ if (Array.isArray(queryValue)) {
102
+ queryValue.forEach((p) => searchParams.append(qp, p))
103
+ } else {
104
+ searchParams.append(qp, queryValue.toString())
105
+ }
106
+ }
107
+ delete request?.[qp]
108
+ })
109
+ }
110
+
111
+ const body = request
112
+ const isFormData = body instanceof FormData
113
+ const headers = {
114
+ ...defaultHeaders,
115
+ ...(isFormData ? {} : defaultJsonType)
116
+ }
117
+
118
+ const response = await fetch(`${url}/jobs/?${searchParams.toString()}`, {
119
+ method: 'PUT',
120
+ body: isFormData ? body : JSON.stringify(body),
121
+ headers,
122
+ ...defaultFetchParams
123
+ })
124
+
125
+ if (!response.ok) {
126
+ throw new Error(await response.text())
127
+ }
128
+
129
+ return await response.json()
130
+ }
131
+
132
+ /** @type {import('./cron-types.d.ts').Cron['updateJobs']} */
133
+ export const updateJobs = async (request) => {
134
+ return await _updateJobs(baseUrl, request)
135
+ }
136
+ async function _getJobById (url, request) {
137
+ const queryParameters = ['fields']
138
+ const searchParams = new URLSearchParams()
139
+ if (request) {
140
+ queryParameters.forEach((qp) => {
141
+ const queryValue = request?.[qp]
142
+ if (queryValue) {
143
+ if (Array.isArray(queryValue)) {
144
+ queryValue.forEach((p) => searchParams.append(qp, p))
145
+ } else {
146
+ searchParams.append(qp, queryValue.toString())
147
+ }
148
+ }
149
+ delete request?.[qp]
150
+ })
151
+ }
152
+
153
+ const headers = {
154
+ ...defaultHeaders
155
+ }
156
+
157
+ const response = await fetch(`${url}/jobs/${request['id']}?${searchParams.toString()}`, {
158
+ headers,
159
+ ...defaultFetchParams
160
+ })
161
+
162
+ if (!response.ok) {
163
+ throw new Error(await response.text())
164
+ }
165
+
166
+ return await response.json()
167
+ }
168
+
169
+ /** @type {import('./cron-types.d.ts').Cron['getJobById']} */
170
+ export const getJobById = async (request) => {
171
+ return await _getJobById(baseUrl, request)
172
+ }
173
+ async function _updateJob (url, request) {
174
+ const queryParameters = ['fields']
175
+ const searchParams = new URLSearchParams()
176
+ if (request) {
177
+ queryParameters.forEach((qp) => {
178
+ const queryValue = request?.[qp]
179
+ if (queryValue) {
180
+ if (Array.isArray(queryValue)) {
181
+ queryValue.forEach((p) => searchParams.append(qp, p))
182
+ } else {
183
+ searchParams.append(qp, queryValue.toString())
184
+ }
185
+ }
186
+ delete request?.[qp]
187
+ })
188
+ }
189
+
190
+ const body = request
191
+ const isFormData = body instanceof FormData
192
+ const headers = {
193
+ ...defaultHeaders,
194
+ ...(isFormData ? {} : defaultJsonType)
195
+ }
196
+
197
+ const response = await fetch(`${url}/jobs/${request['id']}?${searchParams.toString()}`, {
198
+ method: 'PUT',
199
+ body: isFormData ? body : JSON.stringify(body),
200
+ headers,
201
+ ...defaultFetchParams
202
+ })
203
+
204
+ if (!response.ok) {
205
+ throw new Error(await response.text())
206
+ }
207
+
208
+ return await response.json()
209
+ }
210
+
211
+ /** @type {import('./cron-types.d.ts').Cron['updateJob']} */
212
+ export const updateJob = async (request) => {
213
+ return await _updateJob(baseUrl, request)
214
+ }
215
+ async function _deleteJobs (url, request) {
216
+ const queryParameters = ['fields']
217
+ const searchParams = new URLSearchParams()
218
+ if (request) {
219
+ queryParameters.forEach((qp) => {
220
+ const queryValue = request?.[qp]
221
+ if (queryValue) {
222
+ if (Array.isArray(queryValue)) {
223
+ queryValue.forEach((p) => searchParams.append(qp, p))
224
+ } else {
225
+ searchParams.append(qp, queryValue.toString())
226
+ }
227
+ }
228
+ delete request?.[qp]
229
+ })
230
+ }
231
+
232
+ const body = request
233
+ const isFormData = body instanceof FormData
234
+ const headers = {
235
+ ...defaultHeaders,
236
+ ...(isFormData ? {} : defaultJsonType)
237
+ }
238
+
239
+ const response = await fetch(`${url}/jobs/${request['id']}?${searchParams.toString()}`, {
240
+ method: 'DELETE',
241
+ body: isFormData ? body : JSON.stringify(body),
242
+ headers,
243
+ ...defaultFetchParams
244
+ })
245
+
246
+ if (!response.ok) {
247
+ throw new Error(await response.text())
248
+ }
249
+
250
+ return await response.json()
251
+ }
252
+
253
+ /** @type {import('./cron-types.d.ts').Cron['deleteJobs']} */
254
+ export const deleteJobs = async (request) => {
255
+ return await _deleteJobs(baseUrl, request)
256
+ }
257
+ async function _getMessagesForJob (url, request) {
258
+ const queryParameters = ['fields']
259
+ const searchParams = new URLSearchParams()
260
+ if (request) {
261
+ queryParameters.forEach((qp) => {
262
+ const queryValue = request?.[qp]
263
+ if (queryValue) {
264
+ if (Array.isArray(queryValue)) {
265
+ queryValue.forEach((p) => searchParams.append(qp, p))
266
+ } else {
267
+ searchParams.append(qp, queryValue.toString())
268
+ }
269
+ }
270
+ delete request?.[qp]
271
+ })
272
+ }
273
+
274
+ const headers = {
275
+ ...defaultHeaders
276
+ }
277
+
278
+ const response = await fetch(`${url}/jobs/${request['id']}/messages?${searchParams.toString()}`, {
279
+ headers,
280
+ ...defaultFetchParams
281
+ })
282
+
283
+ if (!response.ok) {
284
+ throw new Error(await response.text())
285
+ }
286
+
287
+ return await response.json()
288
+ }
289
+
290
+ /** @type {import('./cron-types.d.ts').Cron['getMessagesForJob']} */
291
+ export const getMessagesForJob = async (request) => {
292
+ return await _getMessagesForJob(baseUrl, request)
293
+ }
294
+ async function _getMessages (url, request) {
295
+ const queryParameters = ['limit', 'offset', 'totalCount', 'fields', 'where.body.eq', 'where.body.neq', 'where.body.gt', 'where.body.gte', 'where.body.lt', 'where.body.lte', 'where.body.like', 'where.body.ilike', 'where.body.in', 'where.body.nin', 'where.body.contains', 'where.body.contained', 'where.body.overlaps', 'where.callbackUrl.eq', 'where.callbackUrl.neq', 'where.callbackUrl.gt', 'where.callbackUrl.gte', 'where.callbackUrl.lt', 'where.callbackUrl.lte', 'where.callbackUrl.like', 'where.callbackUrl.ilike', 'where.callbackUrl.in', 'where.callbackUrl.nin', 'where.callbackUrl.contains', 'where.callbackUrl.contained', 'where.callbackUrl.overlaps', 'where.createdAt.eq', 'where.createdAt.neq', 'where.createdAt.gt', 'where.createdAt.gte', 'where.createdAt.lt', 'where.createdAt.lte', 'where.createdAt.like', 'where.createdAt.ilike', 'where.createdAt.in', 'where.createdAt.nin', 'where.createdAt.contains', 'where.createdAt.contained', 'where.createdAt.overlaps', 'where.deletedAt.eq', 'where.deletedAt.neq', 'where.deletedAt.gt', 'where.deletedAt.gte', 'where.deletedAt.lt', 'where.deletedAt.lte', 'where.deletedAt.like', 'where.deletedAt.ilike', 'where.deletedAt.in', 'where.deletedAt.nin', 'where.deletedAt.contains', 'where.deletedAt.contained', 'where.deletedAt.overlaps', 'where.failed.eq', 'where.failed.neq', 'where.failed.gt', 'where.failed.gte', 'where.failed.lt', 'where.failed.lte', 'where.failed.like', 'where.failed.ilike', 'where.failed.in', 'where.failed.nin', 'where.failed.contains', 'where.failed.contained', 'where.failed.overlaps', 'where.headers.eq', 'where.headers.neq', 'where.headers.gt', 'where.headers.gte', 'where.headers.lt', 'where.headers.lte', 'where.headers.like', 'where.headers.ilike', 'where.headers.in', 'where.headers.nin', 'where.headers.contains', 'where.headers.contained', 'where.headers.overlaps', 'where.id.eq', 'where.id.neq', 'where.id.gt', 'where.id.gte', 'where.id.lt', 'where.id.lte', 'where.id.like', 'where.id.ilike', 'where.id.in', 'where.id.nin', 'where.id.contains', 'where.id.contained', 'where.id.overlaps', 'where.jobId.eq', 'where.jobId.neq', 'where.jobId.gt', 'where.jobId.gte', 'where.jobId.lt', 'where.jobId.lte', 'where.jobId.like', 'where.jobId.ilike', 'where.jobId.in', 'where.jobId.nin', 'where.jobId.contains', 'where.jobId.contained', 'where.jobId.overlaps', 'where.method.eq', 'where.method.neq', 'where.method.gt', 'where.method.gte', 'where.method.lt', 'where.method.lte', 'where.method.like', 'where.method.ilike', 'where.method.in', 'where.method.nin', 'where.method.contains', 'where.method.contained', 'where.method.overlaps', 'where.noReschedule.eq', 'where.noReschedule.neq', 'where.noReschedule.gt', 'where.noReschedule.gte', 'where.noReschedule.lt', 'where.noReschedule.lte', 'where.noReschedule.like', 'where.noReschedule.ilike', 'where.noReschedule.in', 'where.noReschedule.nin', 'where.noReschedule.contains', 'where.noReschedule.contained', 'where.noReschedule.overlaps', 'where.responseBody.eq', 'where.responseBody.neq', 'where.responseBody.gt', 'where.responseBody.gte', 'where.responseBody.lt', 'where.responseBody.lte', 'where.responseBody.like', 'where.responseBody.ilike', 'where.responseBody.in', 'where.responseBody.nin', 'where.responseBody.contains', 'where.responseBody.contained', 'where.responseBody.overlaps', 'where.responseHeaders.eq', 'where.responseHeaders.neq', 'where.responseHeaders.gt', 'where.responseHeaders.gte', 'where.responseHeaders.lt', 'where.responseHeaders.lte', 'where.responseHeaders.like', 'where.responseHeaders.ilike', 'where.responseHeaders.in', 'where.responseHeaders.nin', 'where.responseHeaders.contains', 'where.responseHeaders.contained', 'where.responseHeaders.overlaps', 'where.responseStatusCode.eq', 'where.responseStatusCode.neq', 'where.responseStatusCode.gt', 'where.responseStatusCode.gte', 'where.responseStatusCode.lt', 'where.responseStatusCode.lte', 'where.responseStatusCode.like', 'where.responseStatusCode.ilike', 'where.responseStatusCode.in', 'where.responseStatusCode.nin', 'where.responseStatusCode.contains', 'where.responseStatusCode.contained', 'where.responseStatusCode.overlaps', 'where.retries.eq', 'where.retries.neq', 'where.retries.gt', 'where.retries.gte', 'where.retries.lt', 'where.retries.lte', 'where.retries.like', 'where.retries.ilike', 'where.retries.in', 'where.retries.nin', 'where.retries.contains', 'where.retries.contained', 'where.retries.overlaps', 'where.sentAt.eq', 'where.sentAt.neq', 'where.sentAt.gt', 'where.sentAt.gte', 'where.sentAt.lt', 'where.sentAt.lte', 'where.sentAt.like', 'where.sentAt.ilike', 'where.sentAt.in', 'where.sentAt.nin', 'where.sentAt.contains', 'where.sentAt.contained', 'where.sentAt.overlaps', 'where.updatedAt.eq', 'where.updatedAt.neq', 'where.updatedAt.gt', 'where.updatedAt.gte', 'where.updatedAt.lt', 'where.updatedAt.lte', 'where.updatedAt.like', 'where.updatedAt.ilike', 'where.updatedAt.in', 'where.updatedAt.nin', 'where.updatedAt.contains', 'where.updatedAt.contained', 'where.updatedAt.overlaps', 'where.when.eq', 'where.when.neq', 'where.when.gt', 'where.when.gte', 'where.when.lt', 'where.when.lte', 'where.when.like', 'where.when.ilike', 'where.when.in', 'where.when.nin', 'where.when.contains', 'where.when.contained', 'where.when.overlaps', 'where.or', 'orderby.body', 'orderby.callbackUrl', 'orderby.createdAt', 'orderby.deletedAt', 'orderby.failed', 'orderby.headers', 'orderby.id', 'orderby.jobId', 'orderby.method', 'orderby.noReschedule', 'orderby.responseBody', 'orderby.responseHeaders', 'orderby.responseStatusCode', 'orderby.retries', 'orderby.sentAt', 'orderby.updatedAt', 'orderby.when']
296
+ const searchParams = new URLSearchParams()
297
+ if (request) {
298
+ queryParameters.forEach((qp) => {
299
+ const queryValue = request?.[qp]
300
+ if (queryValue) {
301
+ if (Array.isArray(queryValue)) {
302
+ queryValue.forEach((p) => searchParams.append(qp, p))
303
+ } else {
304
+ searchParams.append(qp, queryValue.toString())
305
+ }
306
+ }
307
+ delete request?.[qp]
308
+ })
309
+ }
310
+
311
+ const headers = {
312
+ ...defaultHeaders
313
+ }
314
+
315
+ const response = await fetch(`${url}/messages/?${searchParams.toString()}`, {
316
+ headers,
317
+ ...defaultFetchParams
318
+ })
319
+
320
+ if (!response.ok) {
321
+ throw new Error(await response.text())
322
+ }
323
+
324
+ return await response.json()
325
+ }
326
+
327
+ /** @type {import('./cron-types.d.ts').Cron['getMessages']} */
328
+ export const getMessages = async (request) => {
329
+ return await _getMessages(baseUrl, request)
330
+ }
331
+ async function _createMessage (url, request) {
332
+ const body = request
333
+ const isFormData = body instanceof FormData
334
+ const headers = {
335
+ ...defaultHeaders,
336
+ ...(isFormData ? {} : defaultJsonType)
337
+ }
338
+
339
+ const response = await fetch(`${url}/messages/`, {
340
+ method: 'POST',
341
+ body: isFormData ? body : JSON.stringify(body),
342
+ headers,
343
+ ...defaultFetchParams
344
+ })
345
+
346
+ if (!response.ok) {
347
+ throw new Error(await response.text())
348
+ }
349
+
350
+ return await response.json()
351
+ }
352
+
353
+ /** @type {import('./cron-types.d.ts').Cron['createMessage']} */
354
+ export const createMessage = async (request) => {
355
+ return await _createMessage(baseUrl, request)
356
+ }
357
+ async function _updateMessages (url, request) {
358
+ const queryParameters = ['fields', 'where.body.eq', 'where.body.neq', 'where.body.gt', 'where.body.gte', 'where.body.lt', 'where.body.lte', 'where.body.like', 'where.body.ilike', 'where.body.in', 'where.body.nin', 'where.body.contains', 'where.body.contained', 'where.body.overlaps', 'where.callbackUrl.eq', 'where.callbackUrl.neq', 'where.callbackUrl.gt', 'where.callbackUrl.gte', 'where.callbackUrl.lt', 'where.callbackUrl.lte', 'where.callbackUrl.like', 'where.callbackUrl.ilike', 'where.callbackUrl.in', 'where.callbackUrl.nin', 'where.callbackUrl.contains', 'where.callbackUrl.contained', 'where.callbackUrl.overlaps', 'where.createdAt.eq', 'where.createdAt.neq', 'where.createdAt.gt', 'where.createdAt.gte', 'where.createdAt.lt', 'where.createdAt.lte', 'where.createdAt.like', 'where.createdAt.ilike', 'where.createdAt.in', 'where.createdAt.nin', 'where.createdAt.contains', 'where.createdAt.contained', 'where.createdAt.overlaps', 'where.deletedAt.eq', 'where.deletedAt.neq', 'where.deletedAt.gt', 'where.deletedAt.gte', 'where.deletedAt.lt', 'where.deletedAt.lte', 'where.deletedAt.like', 'where.deletedAt.ilike', 'where.deletedAt.in', 'where.deletedAt.nin', 'where.deletedAt.contains', 'where.deletedAt.contained', 'where.deletedAt.overlaps', 'where.failed.eq', 'where.failed.neq', 'where.failed.gt', 'where.failed.gte', 'where.failed.lt', 'where.failed.lte', 'where.failed.like', 'where.failed.ilike', 'where.failed.in', 'where.failed.nin', 'where.failed.contains', 'where.failed.contained', 'where.failed.overlaps', 'where.headers.eq', 'where.headers.neq', 'where.headers.gt', 'where.headers.gte', 'where.headers.lt', 'where.headers.lte', 'where.headers.like', 'where.headers.ilike', 'where.headers.in', 'where.headers.nin', 'where.headers.contains', 'where.headers.contained', 'where.headers.overlaps', 'where.id.eq', 'where.id.neq', 'where.id.gt', 'where.id.gte', 'where.id.lt', 'where.id.lte', 'where.id.like', 'where.id.ilike', 'where.id.in', 'where.id.nin', 'where.id.contains', 'where.id.contained', 'where.id.overlaps', 'where.jobId.eq', 'where.jobId.neq', 'where.jobId.gt', 'where.jobId.gte', 'where.jobId.lt', 'where.jobId.lte', 'where.jobId.like', 'where.jobId.ilike', 'where.jobId.in', 'where.jobId.nin', 'where.jobId.contains', 'where.jobId.contained', 'where.jobId.overlaps', 'where.method.eq', 'where.method.neq', 'where.method.gt', 'where.method.gte', 'where.method.lt', 'where.method.lte', 'where.method.like', 'where.method.ilike', 'where.method.in', 'where.method.nin', 'where.method.contains', 'where.method.contained', 'where.method.overlaps', 'where.noReschedule.eq', 'where.noReschedule.neq', 'where.noReschedule.gt', 'where.noReschedule.gte', 'where.noReschedule.lt', 'where.noReschedule.lte', 'where.noReschedule.like', 'where.noReschedule.ilike', 'where.noReschedule.in', 'where.noReschedule.nin', 'where.noReschedule.contains', 'where.noReschedule.contained', 'where.noReschedule.overlaps', 'where.responseBody.eq', 'where.responseBody.neq', 'where.responseBody.gt', 'where.responseBody.gte', 'where.responseBody.lt', 'where.responseBody.lte', 'where.responseBody.like', 'where.responseBody.ilike', 'where.responseBody.in', 'where.responseBody.nin', 'where.responseBody.contains', 'where.responseBody.contained', 'where.responseBody.overlaps', 'where.responseHeaders.eq', 'where.responseHeaders.neq', 'where.responseHeaders.gt', 'where.responseHeaders.gte', 'where.responseHeaders.lt', 'where.responseHeaders.lte', 'where.responseHeaders.like', 'where.responseHeaders.ilike', 'where.responseHeaders.in', 'where.responseHeaders.nin', 'where.responseHeaders.contains', 'where.responseHeaders.contained', 'where.responseHeaders.overlaps', 'where.responseStatusCode.eq', 'where.responseStatusCode.neq', 'where.responseStatusCode.gt', 'where.responseStatusCode.gte', 'where.responseStatusCode.lt', 'where.responseStatusCode.lte', 'where.responseStatusCode.like', 'where.responseStatusCode.ilike', 'where.responseStatusCode.in', 'where.responseStatusCode.nin', 'where.responseStatusCode.contains', 'where.responseStatusCode.contained', 'where.responseStatusCode.overlaps', 'where.retries.eq', 'where.retries.neq', 'where.retries.gt', 'where.retries.gte', 'where.retries.lt', 'where.retries.lte', 'where.retries.like', 'where.retries.ilike', 'where.retries.in', 'where.retries.nin', 'where.retries.contains', 'where.retries.contained', 'where.retries.overlaps', 'where.sentAt.eq', 'where.sentAt.neq', 'where.sentAt.gt', 'where.sentAt.gte', 'where.sentAt.lt', 'where.sentAt.lte', 'where.sentAt.like', 'where.sentAt.ilike', 'where.sentAt.in', 'where.sentAt.nin', 'where.sentAt.contains', 'where.sentAt.contained', 'where.sentAt.overlaps', 'where.updatedAt.eq', 'where.updatedAt.neq', 'where.updatedAt.gt', 'where.updatedAt.gte', 'where.updatedAt.lt', 'where.updatedAt.lte', 'where.updatedAt.like', 'where.updatedAt.ilike', 'where.updatedAt.in', 'where.updatedAt.nin', 'where.updatedAt.contains', 'where.updatedAt.contained', 'where.updatedAt.overlaps', 'where.when.eq', 'where.when.neq', 'where.when.gt', 'where.when.gte', 'where.when.lt', 'where.when.lte', 'where.when.like', 'where.when.ilike', 'where.when.in', 'where.when.nin', 'where.when.contains', 'where.when.contained', 'where.when.overlaps', 'where.or']
359
+ const searchParams = new URLSearchParams()
360
+ if (request) {
361
+ queryParameters.forEach((qp) => {
362
+ const queryValue = request?.[qp]
363
+ if (queryValue) {
364
+ if (Array.isArray(queryValue)) {
365
+ queryValue.forEach((p) => searchParams.append(qp, p))
366
+ } else {
367
+ searchParams.append(qp, queryValue.toString())
368
+ }
369
+ }
370
+ delete request?.[qp]
371
+ })
372
+ }
373
+
374
+ const body = request
375
+ const isFormData = body instanceof FormData
376
+ const headers = {
377
+ ...defaultHeaders,
378
+ ...(isFormData ? {} : defaultJsonType)
379
+ }
380
+
381
+ const response = await fetch(`${url}/messages/?${searchParams.toString()}`, {
382
+ method: 'PUT',
383
+ body: isFormData ? body : JSON.stringify(body),
384
+ headers,
385
+ ...defaultFetchParams
386
+ })
387
+
388
+ if (!response.ok) {
389
+ throw new Error(await response.text())
390
+ }
391
+
392
+ return await response.json()
393
+ }
394
+
395
+ /** @type {import('./cron-types.d.ts').Cron['updateMessages']} */
396
+ export const updateMessages = async (request) => {
397
+ return await _updateMessages(baseUrl, request)
398
+ }
399
+ async function _getMessageById (url, request) {
400
+ const queryParameters = ['fields']
401
+ const searchParams = new URLSearchParams()
402
+ if (request) {
403
+ queryParameters.forEach((qp) => {
404
+ const queryValue = request?.[qp]
405
+ if (queryValue) {
406
+ if (Array.isArray(queryValue)) {
407
+ queryValue.forEach((p) => searchParams.append(qp, p))
408
+ } else {
409
+ searchParams.append(qp, queryValue.toString())
410
+ }
411
+ }
412
+ delete request?.[qp]
413
+ })
414
+ }
415
+
416
+ const headers = {
417
+ ...defaultHeaders
418
+ }
419
+
420
+ const response = await fetch(`${url}/messages/${request['id']}?${searchParams.toString()}`, {
421
+ headers,
422
+ ...defaultFetchParams
423
+ })
424
+
425
+ if (!response.ok) {
426
+ throw new Error(await response.text())
427
+ }
428
+
429
+ return await response.json()
430
+ }
431
+
432
+ /** @type {import('./cron-types.d.ts').Cron['getMessageById']} */
433
+ export const getMessageById = async (request) => {
434
+ return await _getMessageById(baseUrl, request)
435
+ }
436
+ async function _updateMessage (url, request) {
437
+ const queryParameters = ['fields']
438
+ const searchParams = new URLSearchParams()
439
+ if (request) {
440
+ queryParameters.forEach((qp) => {
441
+ const queryValue = request?.[qp]
442
+ if (queryValue) {
443
+ if (Array.isArray(queryValue)) {
444
+ queryValue.forEach((p) => searchParams.append(qp, p))
445
+ } else {
446
+ searchParams.append(qp, queryValue.toString())
447
+ }
448
+ }
449
+ delete request?.[qp]
450
+ })
451
+ }
452
+
453
+ const body = request
454
+ const isFormData = body instanceof FormData
455
+ const headers = {
456
+ ...defaultHeaders,
457
+ ...(isFormData ? {} : defaultJsonType)
458
+ }
459
+
460
+ const response = await fetch(`${url}/messages/${request['id']}?${searchParams.toString()}`, {
461
+ method: 'PUT',
462
+ body: isFormData ? body : JSON.stringify(body),
463
+ headers,
464
+ ...defaultFetchParams
465
+ })
466
+
467
+ if (!response.ok) {
468
+ throw new Error(await response.text())
469
+ }
470
+
471
+ return await response.json()
472
+ }
473
+
474
+ /** @type {import('./cron-types.d.ts').Cron['updateMessage']} */
475
+ export const updateMessage = async (request) => {
476
+ return await _updateMessage(baseUrl, request)
477
+ }
478
+ async function _deleteMessages (url, request) {
479
+ const queryParameters = ['fields']
480
+ const searchParams = new URLSearchParams()
481
+ if (request) {
482
+ queryParameters.forEach((qp) => {
483
+ const queryValue = request?.[qp]
484
+ if (queryValue) {
485
+ if (Array.isArray(queryValue)) {
486
+ queryValue.forEach((p) => searchParams.append(qp, p))
487
+ } else {
488
+ searchParams.append(qp, queryValue.toString())
489
+ }
490
+ }
491
+ delete request?.[qp]
492
+ })
493
+ }
494
+
495
+ const body = request
496
+ const isFormData = body instanceof FormData
497
+ const headers = {
498
+ ...defaultHeaders,
499
+ ...(isFormData ? {} : defaultJsonType)
500
+ }
501
+
502
+ const response = await fetch(`${url}/messages/${request['id']}?${searchParams.toString()}`, {
503
+ method: 'DELETE',
504
+ body: isFormData ? body : JSON.stringify(body),
505
+ headers,
506
+ ...defaultFetchParams
507
+ })
508
+
509
+ if (!response.ok) {
510
+ throw new Error(await response.text())
511
+ }
512
+
513
+ return await response.json()
514
+ }
515
+
516
+ /** @type {import('./cron-types.d.ts').Cron['deleteMessages']} */
517
+ export const deleteMessages = async (request) => {
518
+ return await _deleteMessages(baseUrl, request)
519
+ }
520
+ async function _getJobForMessage (url, request) {
521
+ const queryParameters = ['fields']
522
+ const searchParams = new URLSearchParams()
523
+ if (request) {
524
+ queryParameters.forEach((qp) => {
525
+ const queryValue = request?.[qp]
526
+ if (queryValue) {
527
+ if (Array.isArray(queryValue)) {
528
+ queryValue.forEach((p) => searchParams.append(qp, p))
529
+ } else {
530
+ searchParams.append(qp, queryValue.toString())
531
+ }
532
+ }
533
+ delete request?.[qp]
534
+ })
535
+ }
536
+
537
+ const headers = {
538
+ ...defaultHeaders
539
+ }
540
+
541
+ const response = await fetch(`${url}/messages/${request['id']}/job?${searchParams.toString()}`, {
542
+ headers,
543
+ ...defaultFetchParams
544
+ })
545
+
546
+ if (!response.ok) {
547
+ throw new Error(await response.text())
548
+ }
549
+
550
+ return await response.json()
551
+ }
552
+
553
+ /** @type {import('./cron-types.d.ts').Cron['getJobForMessage']} */
554
+ export const getJobForMessage = async (request) => {
555
+ return await _getJobForMessage(baseUrl, request)
556
+ }
557
+ async function _getIccJobsName (url, request) {
558
+ const headers = {
559
+ ...defaultHeaders
560
+ }
561
+
562
+ const response = await fetch(`${url}/icc-jobs/${request['name']}`, {
563
+ headers,
564
+ ...defaultFetchParams
565
+ })
566
+
567
+ const textResponses = [200]
568
+ if (textResponses.includes(response.status)) {
569
+ return {
570
+ statusCode: response.status,
571
+ headers: headersToJSON(response.headers),
572
+ body: await response.text()
573
+ }
574
+ }
575
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
576
+ return {
577
+ statusCode: response.status,
578
+ headers: headersToJSON(response.headers),
579
+ body: await response[responseType]()
580
+ }
581
+ }
582
+
583
+ /** @type {import('./cron-types.d.ts').Cron['getIccJobsName']} */
584
+ export const getIccJobsName = async (request) => {
585
+ return await _getIccJobsName(baseUrl, request)
586
+ }
587
+ async function _putIccJobsName (url, request) {
588
+ const body = request
589
+ const isFormData = body instanceof FormData
590
+ const headers = {
591
+ ...defaultHeaders,
592
+ ...(isFormData ? {} : defaultJsonType)
593
+ }
594
+
595
+ const response = await fetch(`${url}/icc-jobs/${request['name']}`, {
596
+ method: 'PUT',
597
+ body: isFormData ? body : JSON.stringify(body),
598
+ headers,
599
+ ...defaultFetchParams
600
+ })
601
+
602
+ const textResponses = [200]
603
+ if (textResponses.includes(response.status)) {
604
+ return {
605
+ statusCode: response.status,
606
+ headers: headersToJSON(response.headers),
607
+ body: await response.text()
608
+ }
609
+ }
610
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
611
+ return {
612
+ statusCode: response.status,
613
+ headers: headersToJSON(response.headers),
614
+ body: await response[responseType]()
615
+ }
616
+ }
617
+
618
+ /** @type {import('./cron-types.d.ts').Cron['putIccJobsName']} */
619
+ export const putIccJobsName = async (request) => {
620
+ return await _putIccJobsName(baseUrl, request)
621
+ }
622
+ async function _getIccJobs (url, request) {
623
+ const headers = {
624
+ ...defaultHeaders
625
+ }
626
+
627
+ const response = await fetch(`${url}/icc-jobs`, {
628
+ headers,
629
+ ...defaultFetchParams
630
+ })
631
+
632
+ const textResponses = [200]
633
+ if (textResponses.includes(response.status)) {
634
+ return {
635
+ statusCode: response.status,
636
+ headers: headersToJSON(response.headers),
637
+ body: await response.text()
638
+ }
639
+ }
640
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
641
+ return {
642
+ statusCode: response.status,
643
+ headers: headersToJSON(response.headers),
644
+ body: await response[responseType]()
645
+ }
646
+ }
647
+
648
+ /** @type {import('./cron-types.d.ts').Cron['getIccJobs']} */
649
+ export const getIccJobs = async (request) => {
650
+ return await _getIccJobs(baseUrl, request)
651
+ }
652
+ async function _putIccJobs (url, request) {
653
+ const body = request
654
+ const isFormData = body instanceof FormData
655
+ const headers = {
656
+ ...defaultHeaders,
657
+ ...(isFormData ? {} : defaultJsonType)
658
+ }
659
+
660
+ const response = await fetch(`${url}/icc-jobs`, {
661
+ method: 'PUT',
662
+ body: isFormData ? body : JSON.stringify(body),
663
+ headers,
664
+ ...defaultFetchParams
665
+ })
666
+
667
+ const textResponses = [200]
668
+ if (textResponses.includes(response.status)) {
669
+ return {
670
+ statusCode: response.status,
671
+ headers: headersToJSON(response.headers),
672
+ body: await response.text()
673
+ }
674
+ }
675
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
676
+ return {
677
+ statusCode: response.status,
678
+ headers: headersToJSON(response.headers),
679
+ body: await response[responseType]()
680
+ }
681
+ }
682
+
683
+ /** @type {import('./cron-types.d.ts').Cron['putIccJobs']} */
684
+ export const putIccJobs = async (request) => {
685
+ return await _putIccJobs(baseUrl, request)
686
+ }
687
+ async function _getJobsIdRun (url, request) {
688
+ const headers = {
689
+ ...defaultHeaders
690
+ }
691
+
692
+ const response = await fetch(`${url}/jobs/${request['id']}/run`, {
693
+ headers,
694
+ ...defaultFetchParams
695
+ })
696
+
697
+ const textResponses = [200]
698
+ if (textResponses.includes(response.status)) {
699
+ return {
700
+ statusCode: response.status,
701
+ headers: headersToJSON(response.headers),
702
+ body: await response.text()
703
+ }
704
+ }
705
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
706
+ return {
707
+ statusCode: response.status,
708
+ headers: headersToJSON(response.headers),
709
+ body: await response[responseType]()
710
+ }
711
+ }
712
+
713
+ /** @type {import('./cron-types.d.ts').Cron['getJobsIdRun']} */
714
+ export const getJobsIdRun = async (request) => {
715
+ return await _getJobsIdRun(baseUrl, request)
716
+ }
717
+ async function _getJobsIdPause (url, request) {
718
+ const headers = {
719
+ ...defaultHeaders
720
+ }
721
+
722
+ const response = await fetch(`${url}/jobs/${request['id']}/pause`, {
723
+ headers,
724
+ ...defaultFetchParams
725
+ })
726
+
727
+ const textResponses = [200]
728
+ if (textResponses.includes(response.status)) {
729
+ return {
730
+ statusCode: response.status,
731
+ headers: headersToJSON(response.headers),
732
+ body: await response.text()
733
+ }
734
+ }
735
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
736
+ return {
737
+ statusCode: response.status,
738
+ headers: headersToJSON(response.headers),
739
+ body: await response[responseType]()
740
+ }
741
+ }
742
+
743
+ /** @type {import('./cron-types.d.ts').Cron['getJobsIdPause']} */
744
+ export const getJobsIdPause = async (request) => {
745
+ return await _getJobsIdPause(baseUrl, request)
746
+ }
747
+ async function _getJobsIdResume (url, request) {
748
+ const headers = {
749
+ ...defaultHeaders
750
+ }
751
+
752
+ const response = await fetch(`${url}/jobs/${request['id']}/resume`, {
753
+ headers,
754
+ ...defaultFetchParams
755
+ })
756
+
757
+ const textResponses = [200]
758
+ if (textResponses.includes(response.status)) {
759
+ return {
760
+ statusCode: response.status,
761
+ headers: headersToJSON(response.headers),
762
+ body: await response.text()
763
+ }
764
+ }
765
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
766
+ return {
767
+ statusCode: response.status,
768
+ headers: headersToJSON(response.headers),
769
+ body: await response[responseType]()
770
+ }
771
+ }
772
+
773
+ /** @type {import('./cron-types.d.ts').Cron['getJobsIdResume']} */
774
+ export const getJobsIdResume = async (request) => {
775
+ return await _getJobsIdResume(baseUrl, request)
776
+ }
777
+ async function _getMessagesIdCancel (url, request) {
778
+ const headers = {
779
+ ...defaultHeaders
780
+ }
781
+
782
+ const response = await fetch(`${url}/messages/${request['id']}/cancel`, {
783
+ headers,
784
+ ...defaultFetchParams
785
+ })
786
+
787
+ const textResponses = [200]
788
+ if (textResponses.includes(response.status)) {
789
+ return {
790
+ statusCode: response.status,
791
+ headers: headersToJSON(response.headers),
792
+ body: await response.text()
793
+ }
794
+ }
795
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
796
+ return {
797
+ statusCode: response.status,
798
+ headers: headersToJSON(response.headers),
799
+ body: await response[responseType]()
800
+ }
801
+ }
802
+
803
+ /** @type {import('./cron-types.d.ts').Cron['getMessagesIdCancel']} */
804
+ export const getMessagesIdCancel = async (request) => {
805
+ return await _getMessagesIdCancel(baseUrl, request)
806
+ }
807
+ async function _putWattJobs (url, request) {
808
+ const body = request
809
+ const isFormData = body instanceof FormData
810
+ const headers = {
811
+ ...defaultHeaders,
812
+ ...(isFormData ? {} : defaultJsonType)
813
+ }
814
+
815
+ const response = await fetch(`${url}/watt-jobs`, {
816
+ method: 'PUT',
817
+ body: isFormData ? body : JSON.stringify(body),
818
+ headers,
819
+ ...defaultFetchParams
820
+ })
821
+
822
+ const textResponses = [200]
823
+ if (textResponses.includes(response.status)) {
824
+ return {
825
+ statusCode: response.status,
826
+ headers: headersToJSON(response.headers),
827
+ body: await response.text()
828
+ }
829
+ }
830
+ const responseType = response.headers.get('content-type')?.startsWith('application/json') ? 'json' : 'text'
831
+ return {
832
+ statusCode: response.status,
833
+ headers: headersToJSON(response.headers),
834
+ body: await response[responseType]()
835
+ }
836
+ }
837
+
838
+ /** @type {import('./cron-types.d.ts').Cron['putWattJobs']} */
839
+ export const putWattJobs = async (request) => {
840
+ return await _putWattJobs(baseUrl, request)
841
+ }
842
+ export default function build (url, options) {
843
+ url = sanitizeUrl(url)
844
+ if (options?.headers) {
845
+ defaultHeaders = options.headers
846
+ }
847
+ return {
848
+ getJobs: _getJobs.bind(url, ...arguments),
849
+ createJob: _createJob.bind(url, ...arguments),
850
+ updateJobs: _updateJobs.bind(url, ...arguments),
851
+ getJobById: _getJobById.bind(url, ...arguments),
852
+ updateJob: _updateJob.bind(url, ...arguments),
853
+ deleteJobs: _deleteJobs.bind(url, ...arguments),
854
+ getMessagesForJob: _getMessagesForJob.bind(url, ...arguments),
855
+ getMessages: _getMessages.bind(url, ...arguments),
856
+ createMessage: _createMessage.bind(url, ...arguments),
857
+ updateMessages: _updateMessages.bind(url, ...arguments),
858
+ getMessageById: _getMessageById.bind(url, ...arguments),
859
+ updateMessage: _updateMessage.bind(url, ...arguments),
860
+ deleteMessages: _deleteMessages.bind(url, ...arguments),
861
+ getJobForMessage: _getJobForMessage.bind(url, ...arguments),
862
+ getIccJobsName: _getIccJobsName.bind(url, ...arguments),
863
+ putIccJobsName: _putIccJobsName.bind(url, ...arguments),
864
+ getIccJobs: _getIccJobs.bind(url, ...arguments),
865
+ putIccJobs: _putIccJobs.bind(url, ...arguments),
866
+ getJobsIdRun: _getJobsIdRun.bind(url, ...arguments),
867
+ getJobsIdPause: _getJobsIdPause.bind(url, ...arguments),
868
+ getJobsIdResume: _getJobsIdResume.bind(url, ...arguments),
869
+ getMessagesIdCancel: _getMessagesIdCancel.bind(url, ...arguments),
870
+ putWattJobs: _putWattJobs.bind(url, ...arguments)
871
+ }
872
+ }