@cronwatch/sdk 0.6.1 → 0.7.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 (56) hide show
  1. package/README.md +2 -0
  2. package/dist/anthropic.cjs.map +1 -1
  3. package/dist/anthropic.d.cts +1 -1
  4. package/dist/anthropic.d.ts +1 -1
  5. package/dist/anthropic.js.map +1 -1
  6. package/dist/bugsnag.d.cts +1 -1
  7. package/dist/bugsnag.d.ts +1 -1
  8. package/dist/{client-B7bqnkI5.d.cts → client-B5hM4l-D.d.ts} +5 -2
  9. package/dist/{client-pmqH3apS.d.ts → client-Di5HAWQz.d.cts} +5 -2
  10. package/dist/d1.d.cts +1 -1
  11. package/dist/d1.d.ts +1 -1
  12. package/dist/datadog.d.cts +1 -1
  13. package/dist/datadog.d.ts +1 -1
  14. package/dist/discord.d.cts +1 -1
  15. package/dist/discord.d.ts +1 -1
  16. package/dist/{email-_H0faCh3.d.ts → email-Ciq7GRn4.d.ts} +1 -1
  17. package/dist/{email-BJ-z_epD.d.cts → email-DX6gkd5H.d.cts} +1 -1
  18. package/dist/honeybadger.d.cts +1 -1
  19. package/dist/honeybadger.d.ts +1 -1
  20. package/dist/index.cjs +29 -2
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +4 -4
  23. package/dist/index.d.ts +4 -4
  24. package/dist/index.js +29 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/mailgun.d.cts +2 -2
  27. package/dist/mailgun.d.ts +2 -2
  28. package/dist/newrelic.d.cts +1 -1
  29. package/dist/newrelic.d.ts +1 -1
  30. package/dist/pg-cron.d.cts +2 -2
  31. package/dist/pg-cron.d.ts +2 -2
  32. package/dist/postgres.d.cts +1 -1
  33. package/dist/postgres.d.ts +1 -1
  34. package/dist/postmark.d.cts +2 -2
  35. package/dist/postmark.d.ts +2 -2
  36. package/dist/resend.d.cts +2 -2
  37. package/dist/resend.d.ts +2 -2
  38. package/dist/rollbar.d.cts +1 -1
  39. package/dist/rollbar.d.ts +1 -1
  40. package/dist/sendgrid.d.cts +2 -2
  41. package/dist/sendgrid.d.ts +2 -2
  42. package/dist/sentry.d.cts +1 -1
  43. package/dist/sentry.d.ts +1 -1
  44. package/dist/ses.d.cts +2 -2
  45. package/dist/ses.d.ts +2 -2
  46. package/dist/slack.d.cts +1 -1
  47. package/dist/slack.d.ts +1 -1
  48. package/dist/sqlite.d.cts +1 -1
  49. package/dist/sqlite.d.ts +1 -1
  50. package/dist/twilio.d.cts +1 -1
  51. package/dist/twilio.d.ts +1 -1
  52. package/dist/{types-Ddq1MUPL.d.cts → types-BjBbCGeJ.d.cts} +4 -1
  53. package/dist/{types-Ddq1MUPL.d.ts → types-BjBbCGeJ.d.ts} +4 -1
  54. package/dist/webhook.d.cts +1 -1
  55. package/dist/webhook.d.ts +1 -1
  56. package/package.json +1 -1
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
- import { C as CronWatchOptions, a as CronWatch } from './client-B7bqnkI5.cjs';
2
- export { F as FetchHandler, H as HandlerFn, b as HandlerOptions, J as JobContext, c as JobFn, d as JobHandle, R as RecordRunOptions, e as Routes, f as RoutesOptions, g as RunHandle, h as RunOutcome, S as Source, i as SourceHost, j as StartOptions, k as consoleChannel, l as createRoutes, m as custom } from './client-B7bqnkI5.cjs';
3
- import { S as Store, D as Duration, b as AlertDraft, c as StoredJobDefinition, A as Alert } from './types-Ddq1MUPL.cjs';
4
- export { a as AlertChannel, d as AlertDetails, e as AlertType, B as BudgetBreach, C as ChannelContext, f as CheckResult, g as Condition, E as ExpectRule, J as JobDefinition, h as JobHealth, i as JobOptions, j as JobState, k as JobSummary, R as Run, l as RunStatus, m as StoredJob, T as TriageContext, n as TriageFn } from './types-Ddq1MUPL.cjs';
1
+ import { C as CronWatchOptions, a as CronWatch } from './client-Di5HAWQz.cjs';
2
+ export { F as FetchHandler, H as HandlerFn, b as HandlerOptions, J as JobContext, c as JobFn, d as JobHandle, R as RecordRunOptions, e as Routes, f as RoutesOptions, g as RunHandle, h as RunOutcome, S as Source, i as SourceHost, j as StartOptions, k as consoleChannel, l as createRoutes, m as custom } from './client-Di5HAWQz.cjs';
3
+ import { S as Store, D as Duration, b as AlertDraft, c as StoredJobDefinition, A as Alert } from './types-BjBbCGeJ.cjs';
4
+ export { a as AlertChannel, d as AlertDetails, e as AlertType, B as BudgetBreach, C as ChannelContext, f as CheckResult, g as Condition, E as ExpectRule, J as JobDefinition, h as JobHealth, i as JobOptions, j as JobState, k as JobSummary, R as Run, l as RunStatus, m as StoredJob, T as TriageContext, n as TriageFn } from './types-BjBbCGeJ.cjs';
5
5
 
6
6
  /**
7
7
  * Keeps everything in process memory. The default when no store is given,
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { C as CronWatchOptions, a as CronWatch } from './client-pmqH3apS.js';
2
- export { F as FetchHandler, H as HandlerFn, b as HandlerOptions, J as JobContext, c as JobFn, d as JobHandle, R as RecordRunOptions, e as Routes, f as RoutesOptions, g as RunHandle, h as RunOutcome, S as Source, i as SourceHost, j as StartOptions, k as consoleChannel, l as createRoutes, m as custom } from './client-pmqH3apS.js';
3
- import { S as Store, D as Duration, b as AlertDraft, c as StoredJobDefinition, A as Alert } from './types-Ddq1MUPL.js';
4
- export { a as AlertChannel, d as AlertDetails, e as AlertType, B as BudgetBreach, C as ChannelContext, f as CheckResult, g as Condition, E as ExpectRule, J as JobDefinition, h as JobHealth, i as JobOptions, j as JobState, k as JobSummary, R as Run, l as RunStatus, m as StoredJob, T as TriageContext, n as TriageFn } from './types-Ddq1MUPL.js';
1
+ import { C as CronWatchOptions, a as CronWatch } from './client-B5hM4l-D.js';
2
+ export { F as FetchHandler, H as HandlerFn, b as HandlerOptions, J as JobContext, c as JobFn, d as JobHandle, R as RecordRunOptions, e as Routes, f as RoutesOptions, g as RunHandle, h as RunOutcome, S as Source, i as SourceHost, j as StartOptions, k as consoleChannel, l as createRoutes, m as custom } from './client-B5hM4l-D.js';
3
+ import { S as Store, D as Duration, b as AlertDraft, c as StoredJobDefinition, A as Alert } from './types-BjBbCGeJ.js';
4
+ export { a as AlertChannel, d as AlertDetails, e as AlertType, B as BudgetBreach, C as ChannelContext, f as CheckResult, g as Condition, E as ExpectRule, J as JobDefinition, h as JobHealth, i as JobOptions, j as JobState, k as JobSummary, R as Run, l as RunStatus, m as StoredJob, T as TriageContext, n as TriageFn } from './types-BjBbCGeJ.js';
5
5
 
6
6
  /**
7
7
  * Keeps everything in process memory. The default when no store is given,
package/dist/index.js CHANGED
@@ -9,11 +9,14 @@ var UNIT_MS = {
9
9
  d: 864e5,
10
10
  w: 6048e5
11
11
  };
12
+ var MAX_LENGTH = 64;
13
+ var QUOTED = 32;
12
14
  function parseDuration(value, label = "duration") {
13
15
  if (typeof value === "number") {
14
16
  if (!Number.isFinite(value) || value < 0) throw new Error(`${label} must be a non-negative number of milliseconds`);
15
17
  return value;
16
18
  }
19
+ if (value.length > MAX_LENGTH) tooLong(value, label);
17
20
  const text = value.trim().toLowerCase();
18
21
  if (text === "") throw new Error(`${label} is empty`);
19
22
  const re = /(\d+(?:\.\d+)?)\s*(ms|s|m|h|d|w)/g;
@@ -29,6 +32,16 @@ function parseDuration(value, label = "duration") {
29
32
  }
30
33
  return Math.round(total);
31
34
  }
35
+ function tooLong(value, label) {
36
+ let count = 0;
37
+ let head = "";
38
+ for (const char of value) {
39
+ if (count < QUOTED) head += char;
40
+ if (++count > MAX_LENGTH) {
41
+ throw new Error(`${label} "${head}..." is too long for a duration (more than ${MAX_LENGTH} characters)`);
42
+ }
43
+ }
44
+ }
32
45
  function formatDuration(ms) {
33
46
  if (!Number.isFinite(ms)) return "?";
34
47
  if (ms < 1e3) return `${Math.round(ms)}ms`;
@@ -1480,7 +1493,20 @@ function developmentToken() {
1480
1493
  return btoa(String.fromCharCode(...bytes)).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
1481
1494
  }
1482
1495
  function developmentSignInLine(origin, base, token) {
1483
- return `[cronwatch] CRONWATCH_TOKEN is not set, so this development server made a token for the dashboard. Sign in: ${origin}${base}/?token=${token}`;
1496
+ const intro = "[cronwatch] CRONWATCH_TOKEN is not set, so this development server made a token for the dashboard. Sign in: ";
1497
+ return origin === null ? `${intro}${base}/?token=${token} on this server (the first request's host is not local, so the link leaves it out)` : `${intro}${origin}${base}/?token=${token}`;
1498
+ }
1499
+ function isLoopbackOrigin(origin) {
1500
+ let host;
1501
+ try {
1502
+ host = new URL(origin).hostname.toLowerCase();
1503
+ } catch {
1504
+ return false;
1505
+ }
1506
+ if (host === "localhost" || host.endsWith(".localhost")) return true;
1507
+ if (host === "[::1]") return true;
1508
+ const octets = /^127\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(host);
1509
+ return octets !== null && octets.slice(1).every((o) => Number(o) <= 255);
1484
1510
  }
1485
1511
  function safeDecode(value) {
1486
1512
  try {
@@ -1585,7 +1611,8 @@ function createRoutes(cw, options = {}) {
1585
1611
  const publicOrigin = originOf(request, url);
1586
1612
  if (generated && !announced) {
1587
1613
  announced = true;
1588
- console.info(developmentSignInLine(publicOrigin, base, token));
1614
+ const shown = fixedOrigin ?? (isLoopbackOrigin(publicOrigin) ? publicOrigin : null);
1615
+ console.info(developmentSignInLine(shown, base, token));
1589
1616
  }
1590
1617
  if (method === "GET" || method === "HEAD") {
1591
1618
  if (path === "/offline") {