@vite-hub/workflow 0.0.4 → 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 (45) hide show
  1. package/README.md +34 -14
  2. package/dist/{_app-DgwN4ulW.d.ts → app-BojnC_yf.d.ts} +1 -4
  3. package/dist/{app-BZpq2cwC.js → app-CzPoP84f.js} +2 -1
  4. package/dist/client-DsGM3M4U.js +389 -0
  5. package/dist/cloudflare-env-BNrYo29x.js +113 -0
  6. package/dist/{cloudflare-D0Di-QYL.js → cloudflare-nF4abPd4.js} +20 -4
  7. package/dist/cloudflare-shared-CaxrMD1A.d.ts +1 -0
  8. package/dist/{cloudflare-vite-BkDgB6Sr.js → cloudflare-vite-B3IabBsv.js} +5 -4
  9. package/dist/{config-BHknO_rT.js → config-IJMb0eeZ.js} +38 -30
  10. package/dist/error-diagnostics-A_8Kp-48.js +116 -0
  11. package/dist/error-diagnostics-pwNFvAHP.js +67 -0
  12. package/dist/index.d.ts +20 -21
  13. package/dist/index.js +25 -369
  14. package/dist/inspect-B72iFyj-.js +70 -0
  15. package/dist/operations-B_rYG71W.js +230 -0
  16. package/dist/operations-tNUdj3G4.d.ts +212 -0
  17. package/dist/operations.d.ts +37 -0
  18. package/dist/operations.js +887 -0
  19. package/dist/out-CsaJxg8m.js +21755 -0
  20. package/dist/rolldown-runtime-CMFfr-1z.js +26 -0
  21. package/dist/runtime/cloudflare-runner.d.ts +5 -15
  22. package/dist/runtime/cloudflare-runner.js +40 -5
  23. package/dist/runtime/cloudflare-shared.d.ts +1 -0
  24. package/dist/runtime/cloudflare-shared.js +1 -1
  25. package/dist/runtime/cloudflare-vite.d.ts +8 -10
  26. package/dist/runtime/cloudflare-vite.js +1 -1
  27. package/dist/runtime/execute.d.ts +8 -7
  28. package/dist/runtime/execute.js +28 -5
  29. package/dist/runtime/openworkflow-worker.d.ts +6 -8
  30. package/dist/runtime/openworkflow-worker.js +5 -4
  31. package/dist/runtime/openworkflow.d.ts +8 -10
  32. package/dist/runtime/openworkflow.js +23 -17
  33. package/dist/runtime/state.d.ts +20 -21
  34. package/dist/runtime/state.js +90 -20
  35. package/dist/runtime/vercel-vite.d.ts +10 -12
  36. package/dist/runtime/vercel-vite.js +2 -2
  37. package/dist/runtime-type-DBCvIh5x.js +7 -0
  38. package/dist/{types-B9RdRkKh.d.ts → types-D82WmfZa.d.ts} +23 -12
  39. package/dist/{vercel-B0MuIVgJ.js → vercel-D-ZNtB_u.js} +34 -9
  40. package/dist/vite.d.ts +325 -11
  41. package/dist/vite.js +1267 -691
  42. package/package.json +79 -29
  43. package/dist/cloudflare-env-DjxQNbrx.js +0 -58
  44. package/dist/cloudflare-shared-BVVgDSdq.d.ts +0 -1
  45. package/dist/runtime-type-DGUn8Ple.js +0 -37
@@ -1,3 +1,4 @@
1
+ import { t as workflowErrorDiagnostics } from "./error-diagnostics-pwNFvAHP.js";
1
2
  //#region ../internal/src/integrations/hex.ts
2
3
  const textEncoder = new TextEncoder();
3
4
  new TextDecoder();
@@ -8,6 +9,14 @@ function encodeNameHex(name) {
8
9
  //#region src/integrations/cloudflare.ts
9
10
  const cloudflareWorkflowNameMaxLength = 64;
10
11
  function shortHash(value) {
12
+ let hash = 14695981039346656037n;
13
+ for (const char of value) {
14
+ hash ^= BigInt(char.codePointAt(0) || 0);
15
+ hash = BigInt.asUintN(64, hash * 1099511628211n);
16
+ }
17
+ return hash.toString(16).padStart(16, "0");
18
+ }
19
+ function legacyShortHash(value) {
11
20
  let hash = 2166136261;
12
21
  for (const char of value) {
13
22
  hash ^= char.codePointAt(0) || 0;
@@ -15,6 +24,9 @@ function shortHash(value) {
15
24
  }
16
25
  return (hash >>> 0).toString(16).padStart(8, "0");
17
26
  }
27
+ function workflowClassPrefix(name) {
28
+ return name.split(/[^a-z0-9]+/i).filter(Boolean).map((segment) => `${segment.charAt(0).toUpperCase()}${segment.slice(1)}`).join("") || "Default";
29
+ }
18
30
  function getCloudflareWorkflowBindingName(name) {
19
31
  return `WORKFLOW_${encodeNameHex(name).toUpperCase()}`;
20
32
  }
@@ -23,16 +35,20 @@ function getCloudflareWorkflowName(name) {
23
35
  const fullName = `workflow--${encoded}`;
24
36
  if (fullName.length <= cloudflareWorkflowNameMaxLength) return fullName;
25
37
  const hash = shortHash(name);
26
- const prefixLength = cloudflareWorkflowNameMaxLength - 10 - 1 - hash.length;
38
+ const prefixLength = 53 - hash.length;
27
39
  return `workflow--${encoded.slice(0, prefixLength)}-${hash}`;
28
40
  }
29
41
  function getCloudflareWorkflowClassName(name) {
30
- return `ViteHub${name.split(/[^a-z0-9]+/i).filter(Boolean).map((segment) => `${segment.charAt(0).toUpperCase()}${segment.slice(1)}`).join("") || "Default"}${shortHash(name)}Workflow`;
42
+ return `ViteHub${workflowClassPrefix(name)}${shortHash(name)}Workflow`;
43
+ }
44
+ /** The pre-64-bit class export kept for existing Cloudflare Workflow instances. */
45
+ function getLegacyCloudflareWorkflowClassName(name) {
46
+ return `ViteHub${workflowClassPrefix(name)}${legacyShortHash(name)}Workflow`;
31
47
  }
32
48
  function createCloudflareWorkflowBindings(definitions, options) {
33
49
  if (!definitions.length) return;
34
50
  const configurable = definitions.filter((definition) => definition.source !== "agent-workflow-recovery");
35
- if (configurable.length > 1 && options && (options.binding || options.name)) throw new TypeError("Cloudflare workflow binding and name overrides are only supported when one workflow is discovered.");
51
+ if (configurable.length > 1 && options && (options.binding || options.name)) throw workflowErrorDiagnostics.WORKFLOW_R0001({ message: "Cloudflare workflow binding and name overrides are only supported when one workflow is discovered." });
36
52
  return definitions.map((definition) => ({
37
53
  binding: configurable.length === 1 && configurable[0] === definition && options ? options.binding || getCloudflareWorkflowBindingName(definition.name) : getCloudflareWorkflowBindingName(definition.name),
38
54
  class_name: getCloudflareWorkflowClassName(definition.name),
@@ -40,4 +56,4 @@ function createCloudflareWorkflowBindings(definitions, options) {
40
56
  }));
41
57
  }
42
58
  //#endregion
43
- export { encodeNameHex as a, getCloudflareWorkflowName as i, getCloudflareWorkflowBindingName as n, getCloudflareWorkflowClassName as r, createCloudflareWorkflowBindings as t };
59
+ export { getLegacyCloudflareWorkflowClassName as a, getCloudflareWorkflowName as i, getCloudflareWorkflowBindingName as n, encodeNameHex as o, getCloudflareWorkflowClassName as r, createCloudflareWorkflowBindings as t };
@@ -0,0 +1 @@
1
+ export {}
@@ -1,7 +1,7 @@
1
- import { t as normalizeWorkflowOptions } from "./config-BHknO_rT.js";
2
- import { i as runWithActiveCloudflareEnv, t as createCloudflareRuntimeEvent } from "./cloudflare-env-DjxQNbrx.js";
1
+ import { t as normalizeWorkflowOptions } from "./config-IJMb0eeZ.js";
2
+ import { i as runWithActiveCloudflareEnv, t as createCloudflareRuntimeEvent } from "./cloudflare-env-BNrYo29x.js";
3
3
  import { runWithWorkflowRuntimeEvent, setWorkflowRuntimeConfig, setWorkflowRuntimeRegistry } from "./runtime/state.js";
4
- import { t as resolveAppFetch } from "./app-BZpq2cwC.js";
4
+ import { t as resolveAppFetch } from "./app-CzPoP84f.js";
5
5
  //#region ../internal/src/runtime/cloudflare-hosted.ts
6
6
  function createWebRequestHandler(appHandler) {
7
7
  return async (request, context) => await Promise.resolve(appHandler ? appHandler(request, context) : new Response(JSON.stringify({
@@ -28,7 +28,8 @@ function createCloudflareHostedWorker(adapter) {
28
28
  //#endregion
29
29
  //#region src/runtime/cloudflare-vite.ts
30
30
  function installWorkflowCloudflareRuntime(options = {}) {
31
- setWorkflowRuntimeConfig(options.workflow === false ? false : normalizeWorkflowOptions(options.workflow, { hosting: "cloudflare" }));
31
+ const workflowConfig = options.workflow === false ? false : normalizeWorkflowOptions(options.workflow, { hosting: "cloudflare" });
32
+ setWorkflowRuntimeConfig(workflowConfig);
32
33
  setWorkflowRuntimeRegistry(options.registry);
33
34
  }
34
35
  function createWorkflowCloudflareWorker(options = {}) {
@@ -1,42 +1,56 @@
1
+ import { t as workflowErrorDiagnostics } from "./error-diagnostics-pwNFvAHP.js";
1
2
  import { defu } from "defu";
3
+ function deploymentPresetFromNitro(value) {
4
+ const normalized = value?.trim().toLowerCase().replaceAll("_", "-");
5
+ if (!normalized) return;
6
+ if (normalized.startsWith("cloudflare")) return "cloudflare";
7
+ if (normalized.startsWith("deno")) return "deno";
8
+ if (normalized.startsWith("netlify")) return "netlify";
9
+ if (normalized === "node" || normalized.startsWith("node-")) return "node";
10
+ if (normalized.startsWith("vercel")) return "vercel";
11
+ }
12
+ //#endregion
2
13
  //#region ../internal/src/hosting.ts
3
14
  function normalizeHosting(hosting) {
4
15
  const normalized = hosting?.trim().toLowerCase().replaceAll("_", "-") || "";
5
16
  if (normalized === "cloudflare") return "cloudflare-module";
6
17
  return normalized;
7
18
  }
19
+ /** Narrows a preset or host name to the hosts that have a native provider: Cloudflare, Netlify, or Vercel. */
20
+ function getHostingProvider(hosting) {
21
+ const preset = deploymentPresetFromNitro(hosting);
22
+ if (preset === "cloudflare" || preset === "netlify" || preset === "vercel") return preset;
23
+ }
8
24
  //#endregion
9
25
  //#region ../internal/src/object.ts
10
26
  function isPlainObject(value) {
11
27
  if (value === null || Object(value) !== value || Array.isArray(value)) return false;
12
- try {
13
- Function.prototype.toString.call(value);
14
- return false;
15
- } catch {
16
- return true;
17
- }
28
+ return typeof value === "object";
18
29
  }
19
30
  //#endregion
20
31
  //#region src/config.ts
21
- const knownProviders = new Set([
32
+ const knownProviders = /* @__PURE__ */ new Set([
22
33
  "cloudflare",
23
34
  "openworkflow",
24
35
  "vercel"
25
36
  ]);
26
37
  function readString(value, label) {
27
38
  if (typeof value === "undefined") return;
28
- if (typeof value !== "string" || !value.trim()) throw new TypeError(`\`${label}\` must be a non-empty string when provided.`);
39
+ if (typeof value !== "string" || !value.trim()) throw workflowErrorDiagnostics.WORKFLOW_C0001({ message: `\`${label}\` must be a non-empty string when provided.` });
29
40
  return value.trim();
30
41
  }
31
- function readRuntimeConfigValue(value, label) {
42
+ function readRuntimeConfigValue(value, label, preserveWhitespace = false) {
32
43
  if (typeof value === "undefined") return;
33
- if (typeof value === "string") return readString(value, label);
34
- if (!isRuntimeEnvDeclaration(value)) throw new TypeError(`\`${label}\` must be a string or runtime env declaration.`);
44
+ if (typeof value === "string") {
45
+ const normalized = readString(value, label);
46
+ return preserveWhitespace ? value : normalized;
47
+ }
48
+ if (!isRuntimeEnvDeclaration(value)) throw workflowErrorDiagnostics.WORKFLOW_C0002({ message: `\`${label}\` must be a string or runtime env declaration.` });
35
49
  return value;
36
50
  }
37
51
  function readBoolean(value, label) {
38
52
  if (typeof value === "undefined") return;
39
- if (typeof value !== "boolean") throw new TypeError(`\`${label}\` must be a boolean when provided.`);
53
+ if (typeof value !== "boolean") throw workflowErrorDiagnostics.WORKFLOW_C0003({ message: `\`${label}\` must be a boolean when provided.` });
40
54
  return value;
41
55
  }
42
56
  function isRuntimeEnvDeclaration(value) {
@@ -45,17 +59,14 @@ function isRuntimeEnvDeclaration(value) {
45
59
  function isRuntimeEnvSource(value) {
46
60
  return isPlainObject(value) && value.kind === "env" && typeof value.name === "string" && (!("names" in value) || Array.isArray(value.names) && value.names.every((name) => typeof name === "string"));
47
61
  }
48
- function readDatabaseName(value) {
49
- return readString(value, "workflow.database");
50
- }
51
62
  function readPositiveInteger(value, label) {
52
63
  if (typeof value === "undefined") return;
53
- if (!Number.isInteger(value) || value <= 0) throw new TypeError(`\`${label}\` must be a positive integer when provided.`);
64
+ if (!Number.isInteger(value) || value <= 0) throw workflowErrorDiagnostics.WORKFLOW_C0004({ message: `\`${label}\` must be a positive integer when provided.` });
54
65
  return value;
55
66
  }
56
67
  function normalizeOpenWorkflowPostgresOptions(value) {
57
68
  if (typeof value === "undefined") return;
58
- if (!isPlainObject(value)) throw new TypeError("`workflow.postgres` must be a plain object.");
69
+ if (!isPlainObject(value)) throw workflowErrorDiagnostics.WORKFLOW_C0005({ message: "`workflow.postgres` must be a plain object." });
59
70
  const namespaceId = readString(value.namespaceId, "workflow.postgres.namespaceId");
60
71
  const runMigrations = readBoolean(value.runMigrations, "workflow.postgres.runMigrations");
61
72
  const schema = readString(value.schema, "workflow.postgres.schema");
@@ -69,9 +80,9 @@ function normalizeOpenWorkflowPostgresOptions(value) {
69
80
  }
70
81
  function normalizeOpenWorkflowSqliteOptions(value) {
71
82
  if (typeof value === "undefined") return;
72
- if (!isPlainObject(value)) throw new TypeError("`workflow.sqlite` must be a plain object.");
83
+ if (!isPlainObject(value)) throw workflowErrorDiagnostics.WORKFLOW_C0006({ message: "`workflow.sqlite` must be a plain object." });
73
84
  const namespaceId = readString(value.namespaceId, "workflow.sqlite.namespaceId");
74
- const path = readRuntimeConfigValue(value.path, "workflow.sqlite.path");
85
+ const path = readRuntimeConfigValue(value.path, "workflow.sqlite.path", true);
75
86
  const runMigrations = readBoolean(value.runMigrations, "workflow.sqlite.runMigrations");
76
87
  return {
77
88
  ...namespaceId ? { namespaceId } : {},
@@ -81,19 +92,19 @@ function normalizeOpenWorkflowSqliteOptions(value) {
81
92
  }
82
93
  function normalizeOpenWorkflowWorkerOptions(value) {
83
94
  if (typeof value === "undefined") return;
84
- if (!isPlainObject(value)) throw new TypeError("`workflow.worker` must be a plain object.");
95
+ if (!isPlainObject(value)) throw workflowErrorDiagnostics.WORKFLOW_C0007({ message: "`workflow.worker` must be a plain object." });
85
96
  const concurrency = readPositiveInteger(value.concurrency, "workflow.worker.concurrency");
86
97
  return typeof concurrency === "number" ? { concurrency } : {};
87
98
  }
88
99
  function hasOpenWorkflowStorageConfig(options) {
89
- return typeof options.database === "string" && !!options.database.trim() || isPlainObject(options.postgres) && isDefinedRuntimeConfigValue(options.postgres.url) || isPlainObject(options.sqlite) && isDefinedRuntimeConfigValue(options.sqlite.path);
100
+ return isPlainObject(options.postgres) && isDefinedRuntimeConfigValue(options.postgres.url) || isPlainObject(options.sqlite) && isDefinedRuntimeConfigValue(options.sqlite.path);
90
101
  }
91
102
  function isDefinedRuntimeConfigValue(value) {
92
103
  return typeof value === "string" && !!value.trim() || isRuntimeEnvDeclaration(value);
93
104
  }
94
105
  function inferProvider(provider, hosting) {
95
106
  if (provider === "cloudflare" || provider === "openworkflow" || provider === "vercel") return provider;
96
- if (hosting.includes("netlify")) throw new TypeError("`workflow.provider` cannot be inferred for Netlify hosting. Set `workflow.provider` explicitly or disable `workflow`.");
107
+ if (hosting.includes("netlify")) throw workflowErrorDiagnostics.WORKFLOW_C0008({ message: "`workflow.provider` cannot be inferred for Netlify hosting. Set `workflow.provider` explicitly or disable `workflow`." });
97
108
  if (hosting.includes("cloudflare")) return "cloudflare";
98
109
  return "vercel";
99
110
  }
@@ -107,19 +118,15 @@ function resolveProvider(options, hosting) {
107
118
  ...typeof options.name === "string" ? { name: options.name } : {}
108
119
  };
109
120
  const provider = options.provider;
110
- if (typeof provider === "string" && !knownProviders.has(provider)) throw new TypeError(`Unknown \`workflow.provider\`: ${JSON.stringify(provider)}. Expected "cloudflare", "openworkflow", or "vercel".`);
121
+ if (typeof provider === "string" && !knownProviders.has(provider)) throw workflowErrorDiagnostics.WORKFLOW_C0009({ message: `Unknown \`workflow.provider\`: ${JSON.stringify(provider)}. Expected "cloudflare", "openworkflow", or "vercel".` });
111
122
  const resolved = inferProviderFromOptions(options, hosting);
112
123
  if (resolved === "cloudflare") return defu(shared, { provider: "cloudflare" });
113
124
  if (resolved === "openworkflow") {
114
- const database = readDatabaseName(options.database);
115
125
  const postgres = normalizeOpenWorkflowPostgresOptions(options.postgres);
116
126
  const sqlite = normalizeOpenWorkflowSqliteOptions(options.sqlite);
117
127
  const worker = normalizeOpenWorkflowWorkerOptions(options.worker);
118
- if (database && postgres?.url) throw new TypeError("`workflow.database` and `workflow.postgres.url` cannot both configure OpenWorkflow storage.");
119
- if (database && sqlite?.path) throw new TypeError("`workflow.database` and `workflow.sqlite.path` cannot both configure OpenWorkflow storage.");
120
- if (postgres?.url && sqlite?.path) throw new TypeError("`workflow.postgres.url` and `workflow.sqlite.path` cannot both configure OpenWorkflow storage.");
128
+ if (postgres?.url && sqlite?.path) throw workflowErrorDiagnostics.WORKFLOW_C0012({ message: "`workflow.postgres.url` and `workflow.sqlite.path` cannot both configure OpenWorkflow storage." });
121
129
  return defu({
122
- ...database ? { database } : {},
123
130
  ...postgres ? { postgres } : {},
124
131
  ...sqlite ? { sqlite } : {},
125
132
  ...worker ? { worker } : {}
@@ -129,8 +136,9 @@ function resolveProvider(options, hosting) {
129
136
  }
130
137
  function normalizeWorkflowOptions(options, input = {}) {
131
138
  if (options === false) return void 0;
132
- if (typeof options !== "undefined" && !isPlainObject(options)) throw new TypeError("`workflow` must be a plain object.");
139
+ if (typeof options !== "undefined" && !isPlainObject(options)) throw workflowErrorDiagnostics.WORKFLOW_C0013({ message: "`workflow` must be a plain object." });
140
+ if (options && Object.hasOwn(options, "database") && options.database !== void 0) throw workflowErrorDiagnostics.WORKFLOW_C0017({ message: "`workflow.database` is not supported. Set `workflow.sqlite.path` or `workflow.postgres.url` explicitly." });
133
141
  return resolveProvider(options || {}, normalizeHosting(input.hosting));
134
142
  }
135
143
  //#endregion
136
- export { isPlainObject as n, normalizeHosting as r, normalizeWorkflowOptions as t };
144
+ export { normalizeHosting as i, isPlainObject as n, getHostingProvider as r, normalizeWorkflowOptions as t };
@@ -0,0 +1,116 @@
1
+ import { defineDiagnostics } from "nostics";
2
+ //#region ../internal/src/error-diagnostics.ts
3
+ const dynamicError = { why: ({ message }) => message === void 0 ? "" : String(message) };
4
+ const internalErrorDiagnostics = /*#__PURE__*/ defineDiagnostics({
5
+ docsBase: () => "https://vitehub.dev/docs/reference/diagnostics",
6
+ codes: {
7
+ INTERNAL_R0012: dynamicError,
8
+ INTERNAL_R0013: dynamicError,
9
+ INTERNAL_R0014: {
10
+ why: ({ path }) => `Cannot read Provision State from "${path}".`,
11
+ fix: "Check file access and restore valid JSON while preserving existing resource IDs."
12
+ },
13
+ INTERNAL_R0020: {
14
+ fix: "Give the operation a name like `content.publish`, a description, a section, a kind, an input schema, and a run function.",
15
+ why: ({ message }) => message === void 0 ? "" : String(message)
16
+ },
17
+ INTERNAL_R0021: {
18
+ fix: "Run `vitehub inspect definitions --kind operation` to list the operations of this app.",
19
+ why: ({ message }) => message === void 0 ? "" : String(message)
20
+ },
21
+ INTERNAL_R0022: {
22
+ fix: "Send input that matches the schema of the operation. `vitehub <namespace> <command> --help` shows the fields.",
23
+ why: ({ message }) => message === void 0 ? "" : String(message)
24
+ },
25
+ INTERNAL_R0024: {
26
+ fix: "Start the dev server with `vite dev`, or pass `--url <origin>` of a deployed app with credentials in VITEHUB_CONSOLE_AUTHORIZATION, VITEHUB_CONSOLE_COOKIE, or CF_ACCESS_CLIENT_ID and CF_ACCESS_CLIENT_SECRET.",
27
+ why: ({ message }) => message === void 0 ? "" : String(message)
28
+ },
29
+ INTERNAL_R0023: {
30
+ fix: "Ask for access to the section of this operation.",
31
+ why: ({ message }) => message === void 0 ? "" : String(message)
32
+ },
33
+ INTERNAL_B0001: dynamicError,
34
+ INTERNAL_B0002: dynamicError,
35
+ INTERNAL_B0003: dynamicError,
36
+ INTERNAL_B0004: dynamicError,
37
+ INTERNAL_B0005: dynamicError,
38
+ INTERNAL_B0006: dynamicError,
39
+ INTERNAL_B0007: dynamicError,
40
+ INTERNAL_B0008: dynamicError,
41
+ INTERNAL_B0009: dynamicError,
42
+ INTERNAL_B0010: dynamicError,
43
+ INTERNAL_B0011: dynamicError,
44
+ INTERNAL_B0012: dynamicError,
45
+ INTERNAL_B0013: dynamicError,
46
+ INTERNAL_B0014: dynamicError,
47
+ INTERNAL_B0015: dynamicError,
48
+ INTERNAL_B0016: dynamicError,
49
+ INTERNAL_B0017: dynamicError,
50
+ INTERNAL_B0018: dynamicError,
51
+ INTERNAL_B0019: dynamicError,
52
+ INTERNAL_B0020: dynamicError,
53
+ INTERNAL_B0021: dynamicError,
54
+ INTERNAL_B0022: dynamicError,
55
+ INTERNAL_B0023: dynamicError,
56
+ INTERNAL_B0024: dynamicError,
57
+ INTERNAL_B0025: dynamicError,
58
+ INTERNAL_B0026: dynamicError,
59
+ INTERNAL_B0027: dynamicError,
60
+ INTERNAL_B0028: dynamicError,
61
+ INTERNAL_B0029: dynamicError,
62
+ INTERNAL_B0030: dynamicError,
63
+ INTERNAL_B0031: dynamicError,
64
+ INTERNAL_B0032: dynamicError,
65
+ INTERNAL_B0033: dynamicError,
66
+ INTERNAL_B0034: dynamicError,
67
+ INTERNAL_B0035: dynamicError,
68
+ INTERNAL_B0036: dynamicError,
69
+ INTERNAL_B0037: dynamicError,
70
+ INTERNAL_B0038: dynamicError,
71
+ INTERNAL_B0039: dynamicError,
72
+ INTERNAL_B0040: dynamicError,
73
+ INTERNAL_B0041: dynamicError,
74
+ INTERNAL_B0042: dynamicError,
75
+ INTERNAL_B0043: dynamicError,
76
+ INTERNAL_B0044: dynamicError,
77
+ INTERNAL_B0045: dynamicError,
78
+ INTERNAL_B0046: dynamicError,
79
+ INTERNAL_B0047: dynamicError,
80
+ INTERNAL_B0048: {
81
+ fix: "Rename one of the two operations. A name is `<section>.<verb>` and is unique in the app.",
82
+ why: ({ message }) => message === void 0 ? "" : String(message)
83
+ },
84
+ INTERNAL_B0049: {
85
+ fix: "Set `cli: { namespace, command }` on one of the two operations.",
86
+ why: ({ message }) => message === void 0 ? "" : String(message)
87
+ },
88
+ INTERNAL_B0050: {
89
+ fix: "Rename one of the two operations, or set `mcp: false` on it. MCP tool names replace every character outside letters, digits, `_`, and `-` with `_`.",
90
+ why: ({ message }) => message === void 0 ? "" : String(message)
91
+ },
92
+ INTERNAL_R0025: {
93
+ fix: "Start `vite dev` in the project that you run the command from, or pass `--url` of that server.",
94
+ why: ({ message }) => message === void 0 ? "" : String(message)
95
+ },
96
+ INTERNAL_R0026: {
97
+ why: "The server parsed a destructive operation that the CLI did not confirm.",
98
+ fix: "Review the operation, then run it again with --yes to confirm the change."
99
+ },
100
+ INTERNAL_C0001: dynamicError,
101
+ INTERNAL_C0002: dynamicError,
102
+ INTERNAL_R0001: dynamicError,
103
+ INTERNAL_R0002: dynamicError,
104
+ INTERNAL_R0003: dynamicError,
105
+ INTERNAL_R0004: dynamicError,
106
+ INTERNAL_R0005: dynamicError,
107
+ INTERNAL_R0006: dynamicError,
108
+ INTERNAL_R0007: dynamicError,
109
+ INTERNAL_R0008: dynamicError,
110
+ INTERNAL_R0009: dynamicError,
111
+ INTERNAL_R0010: dynamicError,
112
+ INTERNAL_R0011: dynamicError
113
+ }
114
+ });
115
+ //#endregion
116
+ export { internalErrorDiagnostics as t };
@@ -0,0 +1,67 @@
1
+ import { defineDiagnostics } from "nostics";
2
+ //#region src/error-diagnostics.ts
3
+ const dynamicError = { why: ({ message }) => message === void 0 ? "" : String(message) };
4
+ const workflowErrorDiagnostics = /*#__PURE__*/ defineDiagnostics({
5
+ docsBase: () => "https://vitehub.dev/docs/reference/diagnostics",
6
+ codes: {
7
+ WORKFLOW_C0001: dynamicError,
8
+ WORKFLOW_C0002: dynamicError,
9
+ WORKFLOW_C0003: dynamicError,
10
+ WORKFLOW_C0004: dynamicError,
11
+ WORKFLOW_C0005: dynamicError,
12
+ WORKFLOW_C0006: dynamicError,
13
+ WORKFLOW_C0007: dynamicError,
14
+ WORKFLOW_C0008: dynamicError,
15
+ WORKFLOW_C0009: dynamicError,
16
+ WORKFLOW_C0010: dynamicError,
17
+ WORKFLOW_C0011: dynamicError,
18
+ WORKFLOW_C0012: dynamicError,
19
+ WORKFLOW_C0013: dynamicError,
20
+ WORKFLOW_C0014: dynamicError,
21
+ WORKFLOW_C0015: dynamicError,
22
+ WORKFLOW_C0016: dynamicError,
23
+ WORKFLOW_C0017: dynamicError,
24
+ WORKFLOW_R0001: dynamicError,
25
+ WORKFLOW_R0002: dynamicError,
26
+ WORKFLOW_R0003: dynamicError,
27
+ WORKFLOW_R0004: dynamicError,
28
+ WORKFLOW_R0005: dynamicError,
29
+ WORKFLOW_R0006: dynamicError,
30
+ WORKFLOW_R0007: dynamicError,
31
+ WORKFLOW_R0008: dynamicError,
32
+ WORKFLOW_R0009: dynamicError,
33
+ WORKFLOW_R0010: dynamicError,
34
+ WORKFLOW_R0011: dynamicError,
35
+ WORKFLOW_R0012: dynamicError,
36
+ WORKFLOW_R0013: dynamicError,
37
+ WORKFLOW_R0014: dynamicError,
38
+ WORKFLOW_R0015: dynamicError,
39
+ WORKFLOW_R0016: dynamicError,
40
+ WORKFLOW_R0017: dynamicError,
41
+ WORKFLOW_R0018: dynamicError,
42
+ WORKFLOW_R0019: dynamicError,
43
+ WORKFLOW_R0020: dynamicError,
44
+ WORKFLOW_R0021: dynamicError,
45
+ WORKFLOW_R0022: dynamicError,
46
+ WORKFLOW_R0023: dynamicError,
47
+ WORKFLOW_R0024: dynamicError,
48
+ WORKFLOW_R0025: dynamicError,
49
+ WORKFLOW_R0026: dynamicError,
50
+ WORKFLOW_R0027: dynamicError,
51
+ WORKFLOW_R0028: dynamicError,
52
+ WORKFLOW_R0029: dynamicError,
53
+ WORKFLOW_R0030: dynamicError,
54
+ WORKFLOW_R0031: dynamicError,
55
+ WORKFLOW_R0032: dynamicError,
56
+ WORKFLOW_R0033: dynamicError,
57
+ WORKFLOW_R0034: dynamicError,
58
+ WORKFLOW_R0035: dynamicError,
59
+ WORKFLOW_B0001: dynamicError,
60
+ WORKFLOW_B0002: {
61
+ why: ({ root }) => `[vitehub] Cannot identify the owning Workflow build for ${JSON.stringify(root)} because its environment does not uniquely match a resolved configuration.`,
62
+ fix: "Use a separate Workflow plugin instance per build or preserve the resolved build options in each environment config."
63
+ }
64
+ }
65
+ });
66
+ //#endregion
67
+ export { workflowErrorDiagnostics as t };
package/dist/index.d.ts CHANGED
@@ -1,15 +1,14 @@
1
- import { A as WorkflowStepFunction, C as WorkflowProviderStep, D as WorkflowSharedOptions, E as WorkflowRunStep, M as WorkflowStepRunner, O as WorkflowSignalResult, S as WorkflowProviderOptions, T as WorkflowRunStatus, _ as WorkflowHandle, a as InferredWorkflowProviderOptions, b as WorkflowModuleProviderOptions, c as OpenWorkflowWorkerOptions, d as WorkflowCreateOptions, f as WorkflowDeferOptions, g as WorkflowExecutionContext, h as WorkflowDefinitionRegistry, i as DiscoveredWorkflowDefinition, j as WorkflowStepOptions, k as WorkflowStartOptions, l as ResolvedWorkflowOptions, m as WorkflowDefinitionOptions, n as CloudflareWorkflowInstance, o as OpenWorkflowPostgresOptions, p as WorkflowDefinition, r as CloudflareWorkflowProviderOptions, s as OpenWorkflowProviderOptions, t as CloudflareWorkflowBinding, u as VercelWorkflowProviderOptions, v as WorkflowHandler, w as WorkflowRun, x as WorkflowProvider, y as WorkflowModuleOptions } from "./types-B9RdRkKh.js";
1
+ import { A as WorkflowStartOptions, C as WorkflowProviderOptions, D as WorkflowRunStep, E as WorkflowRunStatus, M as WorkflowStepOptions, N as WorkflowStepRunner, O as WorkflowSharedOptions, S as WorkflowProviderContext, T as WorkflowRun, _ as WorkflowHandle, a as InferredWorkflowProviderOptions, b as WorkflowModuleProviderOptions, c as OpenWorkflowWorkerOptions, d as WorkflowCreateOptions, f as WorkflowDeferOptions, g as WorkflowExecutionContext, h as WorkflowDefinitionRegistry, i as DiscoveredWorkflowDefinition, j as WorkflowStepFunction, k as WorkflowSignalResult, l as ResolvedWorkflowOptions, m as WorkflowDefinitionOptions, n as CloudflareWorkflowInstance, o as OpenWorkflowPostgresOptions, p as WorkflowDefinition, r as CloudflareWorkflowProviderOptions, s as OpenWorkflowProviderOptions, t as CloudflareWorkflowBinding, u as VercelWorkflowProviderOptions, v as WorkflowHandler, w as WorkflowProviderStep, x as WorkflowProvider, y as WorkflowModuleOptions } from "./types-D82WmfZa.js";
2
2
  import { createWorkflowCloudflareWorker } from "./runtime/cloudflare-vite.js";
3
3
  import { ViteHubError } from "@vite-hub/runtime";
4
-
5
4
  //#region src/config.d.ts
6
5
  interface WorkflowResolutionInput {
7
6
  hosting?: string;
8
7
  }
9
- declare function normalizeWorkflowOptions(options: WorkflowModuleOptions | undefined, input?: WorkflowResolutionInput): ResolvedWorkflowOptions | undefined;
8
+ export declare function normalizeWorkflowOptions(options: WorkflowModuleOptions | undefined, input?: WorkflowResolutionInput): ResolvedWorkflowOptions | undefined;
10
9
  //#endregion
11
10
  //#region src/definition.d.ts
12
- declare function defineWorkflow<TPayload = unknown, TResult = unknown>(handler: WorkflowHandler<TPayload, TResult>, options?: WorkflowDefinitionOptions<TPayload, TResult>): WorkflowDefinition<TPayload, TResult>;
11
+ export declare function defineWorkflow<TPayload = unknown, TResult = unknown>(handler: WorkflowHandler<TPayload, TResult>, options?: WorkflowDefinitionOptions<TPayload, TResult>): WorkflowDefinition<TPayload, TResult>;
13
12
  //#endregion
14
13
  //#region src/errors.d.ts
15
14
  declare const workflowErrorMessages: {
@@ -51,30 +50,30 @@ type WorkflowErrorDetails<TCode extends WorkflowErrorCode = WorkflowErrorCode> =
51
50
  } : TCode extends "WORKFLOW_DEFINITION_NOT_FOUND" ? WorkflowNameDetails : TCode extends "WORKFLOW_DISABLED" ? Record<string, never> : TCode extends "WORKFLOW_NATIVE_ENTRY_INVALID" | "WORKFLOW_NATIVE_ENTRY_REQUIRED" | "WORKFLOW_RUN_ID_UNSUPPORTED" ? VercelWorkflowDetails : TCode extends "WORKFLOW_OPERATION_UNSUPPORTED" ? WorkflowOperationDetails : TCode extends "WORKFLOW_PROVIDER_OPERATION_FAILED" ? WorkflowProviderOperationDetails : never;
52
51
  //#endregion
53
52
  //#region src/integrations/cloudflare.d.ts
54
- declare function getCloudflareWorkflowBindingName(name: string): string;
55
- declare function getCloudflareWorkflowName(name: string): string;
56
- declare function getCloudflareWorkflowClassName(name: string): string;
53
+ export declare function getCloudflareWorkflowBindingName(name: string): string;
54
+ export declare function getCloudflareWorkflowName(name: string): string;
55
+ export declare function getCloudflareWorkflowClassName(name: string): string;
57
56
  //#endregion
58
57
  //#region src/integrations/vercel.d.ts
59
- declare function getVercelWorkflowName(name: string): string;
58
+ export declare function getVercelWorkflowName(name: string): string;
60
59
  //#endregion
61
60
  //#region src/runtime/client.d.ts
62
- declare function createWorkflow<TPayload = unknown, TResult = unknown>(options: WorkflowCreateOptions<TPayload, TResult> & {
61
+ export declare function createWorkflow<TPayload = unknown, TResult = unknown>(options: WorkflowCreateOptions<TPayload, TResult> & {
63
62
  handler: WorkflowHandler<TPayload, TResult>;
64
63
  name: string;
65
64
  }): WorkflowHandle<TPayload, TResult>;
66
- declare function createWorkflow<TPayload = unknown, TResult = unknown>(name: string, options: WorkflowCreateOptions<TPayload, TResult> & {
65
+ export declare function createWorkflow<TPayload = unknown, TResult = unknown>(name: string, options: WorkflowCreateOptions<TPayload, TResult> & {
67
66
  handler: WorkflowHandler<TPayload, TResult>;
68
67
  }): WorkflowHandle<TPayload, TResult>;
69
- declare function createWorkflow<TPayload = unknown>(name: string, options?: Omit<WorkflowCreateOptions<TPayload, unknown>, "handler"> & {
68
+ export declare function createWorkflow<TPayload = unknown>(name: string, options?: Omit<WorkflowCreateOptions<TPayload, unknown>, "handler"> & {
70
69
  handler?: never;
71
70
  }): WorkflowHandle<TPayload, unknown>;
72
- declare function createWorkflow<TPayload = unknown, TResult = unknown>(name: string, handler: WorkflowHandler<TPayload, TResult>, options?: WorkflowCreateOptions<TPayload, TResult>): WorkflowHandle<TPayload, TResult>;
73
- declare function runWorkflow<TPayload = unknown>(name: string, payload?: TPayload, options?: WorkflowDeferOptions): Promise<WorkflowRun<TPayload, unknown>>;
74
- declare function getWorkflowRun(name: string, id: string): Promise<WorkflowRun<unknown, unknown>>;
75
- declare function cancelWorkflow(name: string, id: string): Promise<WorkflowRun<unknown, unknown>>;
76
- declare function resumeWorkflowSignal<TPayload = unknown>(token: string, payload: TPayload): Promise<WorkflowSignalResult>;
77
- declare function deferWorkflow<TPayload = unknown>(name: string, payload?: TPayload, options?: WorkflowStartOptions): Promise<WorkflowRun<TPayload>>;
71
+ export declare function createWorkflow<TPayload = unknown, TResult = unknown>(name: string, handler: WorkflowHandler<TPayload, TResult>, options?: WorkflowCreateOptions<TPayload, TResult>): WorkflowHandle<TPayload, TResult>;
72
+ export declare function runWorkflow<TPayload = unknown>(name: string, payload?: TPayload, options?: WorkflowDeferOptions): Promise<WorkflowRun<TPayload, unknown>>;
73
+ export declare function getWorkflowRun(name: string, id: string): Promise<WorkflowRun<unknown, unknown>>;
74
+ export declare function cancelWorkflow(name: string, id: string): Promise<WorkflowRun<unknown, unknown>>;
75
+ export declare function resumeWorkflowSignal<TPayload = unknown>(token: string, payload: TPayload): Promise<WorkflowSignalResult>;
76
+ export declare function deferWorkflow<TPayload = unknown>(name: string, payload?: TPayload, options?: WorkflowStartOptions): Promise<WorkflowRun<TPayload>>;
78
77
  //#endregion
79
78
  //#region src/runtime/payload.d.ts
80
79
  interface PayloadSchema<T> {
@@ -88,8 +87,8 @@ interface ParsePayloadSchema<T> {
88
87
  parse: (payload: unknown) => T;
89
88
  }
90
89
  type PayloadValidator<T> = PayloadSchema<T> | ParsePayloadSchema<T> | ((payload: unknown) => T | Promise<T>);
91
- declare function readRequestPayload<T = unknown>(request: Request): Promise<T>;
92
- declare function validatePayload<T>(payload: unknown, schema: PayloadValidator<T>): Promise<T>;
93
- declare function readValidatedPayload<T>(request: Request, schema: PayloadValidator<T>): Promise<T>;
90
+ export declare function readRequestPayload<T = unknown>(request: Request): Promise<T>;
91
+ export declare function validatePayload<T>(payload: unknown, schema: PayloadValidator<T>): Promise<T>;
92
+ export declare function readValidatedPayload<T>(request: Request, schema: PayloadValidator<T>): Promise<T>;
94
93
  //#endregion
95
- export { type CloudflareWorkflowBinding, type CloudflareWorkflowInstance, type CloudflareWorkflowProviderOptions, type DiscoveredWorkflowDefinition, type InferredWorkflowProviderOptions, type OpenWorkflowPostgresOptions, type OpenWorkflowProviderOptions, type OpenWorkflowWorkerOptions, type ResolvedWorkflowOptions, type VercelWorkflowProviderOptions, type WorkflowCreateOptions, type WorkflowDeferOptions, type WorkflowDefinition, type WorkflowDefinitionOptions, type WorkflowDefinitionRegistry, type WorkflowErrorCode, type WorkflowErrorDetails, type WorkflowExecutionContext, type WorkflowHandle, type WorkflowHandler, type WorkflowModuleOptions, type WorkflowModuleProviderOptions, type WorkflowOperationName, type WorkflowProvider, type WorkflowProviderName, type WorkflowProviderOptions, type WorkflowProviderStep, type WorkflowRun, type WorkflowRunStatus, type WorkflowRunStep, type WorkflowSharedOptions, type WorkflowSignalResult, type WorkflowStartOptions, type WorkflowStepFunction, type WorkflowStepOptions, type WorkflowStepRunner, cancelWorkflow, createWorkflow, createWorkflowCloudflareWorker, deferWorkflow, defineWorkflow, getCloudflareWorkflowBindingName, getCloudflareWorkflowClassName, getCloudflareWorkflowName, getVercelWorkflowName, getWorkflowRun, normalizeWorkflowOptions, readRequestPayload, readValidatedPayload, resumeWorkflowSignal, runWorkflow, validatePayload };
94
+ export { type CloudflareWorkflowBinding, type CloudflareWorkflowInstance, type CloudflareWorkflowProviderOptions, type DiscoveredWorkflowDefinition, type InferredWorkflowProviderOptions, type OpenWorkflowPostgresOptions, type OpenWorkflowProviderOptions, type OpenWorkflowWorkerOptions, type ResolvedWorkflowOptions, type VercelWorkflowProviderOptions, type WorkflowCreateOptions, type WorkflowDeferOptions, type WorkflowDefinition, type WorkflowDefinitionOptions, type WorkflowDefinitionRegistry, type WorkflowErrorCode, type WorkflowErrorDetails, type WorkflowExecutionContext, type WorkflowHandle, type WorkflowHandler, type WorkflowModuleOptions, type WorkflowModuleProviderOptions, type WorkflowOperationName, type WorkflowProvider, type WorkflowProviderContext, type WorkflowProviderName, type WorkflowProviderOptions, type WorkflowProviderStep, type WorkflowRun, type WorkflowRunStatus, type WorkflowRunStep, type WorkflowSharedOptions, type WorkflowSignalResult, type WorkflowStartOptions, type WorkflowStepFunction, type WorkflowStepOptions, type WorkflowStepRunner, createWorkflowCloudflareWorker };