@workflow/sveltekit 4.0.0-beta.3 → 4.0.0-beta.30

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.
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAgBvE,qBAAa,gBAAiB,SAAQ,WAAW;gBACnC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAY9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA8BvB,eAAe;YAyCf,mBAAmB;YAwCnB,iBAAiB;YAoFjB,mBAAmB;CA8BlC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EAErB,MAAM,oBAAoB,CAAC;AAS5B,qBAAa,gBAAiB,SAAQ,WAAW;gBACnC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAe9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAsCvB,eAAe;YA0Cf,mBAAmB;YAwCnB,iBAAiB;YAqDjB,mBAAmB;CA8BlC"}
package/dist/builder.js CHANGED
@@ -1,30 +1,25 @@
1
1
  import { constants } from 'node:fs';
2
2
  import { access, mkdir, readFile, stat, writeFile } from 'node:fs/promises';
3
3
  import { join, resolve } from 'node:path';
4
- import { BaseBuilder } from '@workflow/builders';
5
- // Helper function code for converting SvelteKit requests to standard Request objects
6
- const SVELTEKIT_REQUEST_CONVERTER = `
7
- async function convertSvelteKitRequest(request) {
8
- const options = {
9
- method: request.method,
10
- headers: new Headers(request.headers)
11
- };
12
- if (!['GET', 'HEAD', 'OPTIONS', 'TRACE', 'CONNECT'].includes(request.method)) {
13
- options.body = await request.arrayBuffer();
14
- }
15
- return new Request(request.url, options);
16
- }
17
- `;
4
+ import { BaseBuilder, NORMALIZE_REQUEST_CODE, } from '@workflow/builders';
5
+ const SVELTEKIT_VIRTUAL_MODULES = [
6
+ '$env/*', // All $env subpaths
7
+ '$lib', // Exact $lib import
8
+ '$lib/*', // All $lib subpaths
9
+ '$app/*', // All $app subpaths
10
+ ];
18
11
  export class SvelteKitBuilder extends BaseBuilder {
19
12
  constructor(config) {
13
+ const workingDir = config?.workingDir || process.cwd();
20
14
  super({
21
15
  ...config,
22
- dirs: ['workflows'],
16
+ dirs: ['workflows', 'src/workflows', 'routes', 'src/routes'],
23
17
  buildTarget: 'sveltekit',
24
18
  stepsBundlePath: '', // unused in base
25
19
  workflowsBundlePath: '', // unused in base
26
20
  webhookBundlePath: '', // unused in base
27
- workingDir: config?.workingDir || process.cwd(),
21
+ workingDir,
22
+ externalPackages: [...SVELTEKIT_VIRTUAL_MODULES],
28
23
  });
29
24
  }
30
25
  async build() {
@@ -47,15 +42,22 @@ export class SvelteKitBuilder extends BaseBuilder {
47
42
  tsPaths: tsConfig.paths,
48
43
  };
49
44
  // Generate the three SvelteKit route handlers
50
- await this.buildStepsRoute(options);
45
+ const manifest = await this.buildStepsRoute(options);
51
46
  await this.buildWorkflowsRoute(options);
52
47
  await this.buildWebhookRoute({ workflowGeneratedDir });
48
+ // Generate unified manifest
49
+ const workflowBundlePath = join(workflowGeneratedDir, 'flow/+server.js');
50
+ await this.createManifest({
51
+ workflowBundlePath,
52
+ manifestDir: workflowGeneratedDir,
53
+ manifest,
54
+ });
53
55
  }
54
56
  async buildStepsRoute({ inputFiles, workflowGeneratedDir, tsPaths, tsBaseUrl, }) {
55
57
  // Create steps route: .well-known/workflow/v1/step/+server.js
56
58
  const stepsRouteDir = join(workflowGeneratedDir, 'step');
57
59
  await mkdir(stepsRouteDir, { recursive: true });
58
- await this.createStepsBundle({
60
+ const { manifest } = await this.createStepsBundle({
59
61
  format: 'esm',
60
62
  inputFiles,
61
63
  outfile: join(stepsRouteDir, '+server.js'),
@@ -67,12 +69,13 @@ export class SvelteKitBuilder extends BaseBuilder {
67
69
  const stepsRouteFile = join(stepsRouteDir, '+server.js');
68
70
  let stepsRouteContent = await readFile(stepsRouteFile, 'utf-8');
69
71
  // Replace the default export with SvelteKit-compatible handler
70
- stepsRouteContent = stepsRouteContent.replace(/export\s*\{\s*stepEntrypoint\s+as\s+POST\s*\}\s*;?$/m, `${SVELTEKIT_REQUEST_CONVERTER}
72
+ stepsRouteContent = stepsRouteContent.replace(/export\s*\{\s*stepEntrypoint\s+as\s+POST\s*\}\s*;?$/m, `${NORMALIZE_REQUEST_CODE}
71
73
  export const POST = async ({request}) => {
72
- const normalRequest = await convertSvelteKitRequest(request);
74
+ const normalRequest = await normalizeRequest(request);
73
75
  return stepEntrypoint(normalRequest);
74
76
  }`);
75
77
  await writeFile(stepsRouteFile, stepsRouteContent);
78
+ return manifest;
76
79
  }
77
80
  async buildWorkflowsRoute({ inputFiles, workflowGeneratedDir, tsPaths, tsBaseUrl, }) {
78
81
  // Create workflows route: .well-known/workflow/v1/flow/+server.js
@@ -90,9 +93,9 @@ export const POST = async ({request}) => {
90
93
  const workflowsRouteFile = join(workflowsRouteDir, '+server.js');
91
94
  let workflowsRouteContent = await readFile(workflowsRouteFile, 'utf-8');
92
95
  // Replace the default export with SvelteKit-compatible handler
93
- workflowsRouteContent = workflowsRouteContent.replace(/export const POST = workflowEntrypoint\(workflowCode\);?$/m, `${SVELTEKIT_REQUEST_CONVERTER}
96
+ workflowsRouteContent = workflowsRouteContent.replace(/export const POST = workflowEntrypoint\(workflowCode\);?$/m, `${NORMALIZE_REQUEST_CODE}
94
97
  export const POST = async ({request}) => {
95
- const normalRequest = await convertSvelteKitRequest(request);
98
+ const normalRequest = await normalizeRequest(request);
96
99
  return workflowEntrypoint(workflowCode)(normalRequest);
97
100
  }`);
98
101
  await writeFile(workflowsRouteFile, workflowsRouteContent);
@@ -106,42 +109,15 @@ export const POST = async ({request}) => {
106
109
  });
107
110
  // Post-process the generated file to wrap with SvelteKit request converter
108
111
  let webhookRouteContent = await readFile(webhookRouteFile, 'utf-8');
109
- // For local dev (node), need this since context isn't available to waitUntil()
110
- // Add SYMBOL_FOR_REQ_CONTEXT at the top after imports
111
- webhookRouteContent = webhookRouteContent.replace(/(import.*?;)/, `$1\n\nconst SYMBOL_FOR_REQ_CONTEXT = Symbol.for('@vercel/request-context');`);
112
112
  // Update handler signature to accept token as parameter
113
113
  webhookRouteContent = webhookRouteContent.replace(/async function handler\(request\) \{[\s\S]*?const token = decodeURIComponent\(pathParts\[pathParts\.length - 1\]\);/, `async function handler(request, token) {`);
114
114
  // Remove the URL parsing code since we get token from params
115
115
  webhookRouteContent = webhookRouteContent.replace(/const url = new URL\(request\.url\);[\s\S]*?const pathParts = url\.pathname\.split\('\/'\);[\s\S]*?\n/, '');
116
116
  // Replace all HTTP method exports with SvelteKit-compatible handlers
117
- webhookRouteContent = webhookRouteContent.replace(/export const GET = handler;\nexport const POST = handler;\nexport const PUT = handler;\nexport const PATCH = handler;\nexport const DELETE = handler;\nexport const HEAD = handler;\nexport const OPTIONS = handler;/, `${SVELTEKIT_REQUEST_CONVERTER}
117
+ webhookRouteContent = webhookRouteContent.replace(/export const GET = handler;\nexport const POST = handler;\nexport const PUT = handler;\nexport const PATCH = handler;\nexport const DELETE = handler;\nexport const HEAD = handler;\nexport const OPTIONS = handler;/, `${NORMALIZE_REQUEST_CODE}
118
118
  const createSvelteKitHandler = (method) => async ({ request, params, platform }) => {
119
- // Track background promises for local dev
120
- const backgroundPromises = [];
121
-
122
- // Set up context for @vercel/functions waitUntil
123
- const context = {
124
- waitUntil: platform?.waitUntil || ((promise) => {
125
- // Fallback for local dev/tests: collect promises to await them
126
- backgroundPromises.push(promise.catch(err => console.error('Background task error:', err)));
127
- })
128
- };
129
-
130
- // Only set context if it doesn't already exist (Vercel sets it and makes it read-only)
131
- if (!globalThis[SYMBOL_FOR_REQ_CONTEXT]) {
132
- globalThis[SYMBOL_FOR_REQ_CONTEXT] = {
133
- get: () => context
134
- };
135
- }
136
-
137
- const normalRequest = await convertSvelteKitRequest(request);
119
+ const normalRequest = await normalizeRequest(request);
138
120
  const response = await handler(normalRequest, params.token);
139
-
140
- // In local dev (no platform.waitUntil), await background tasks before returning
141
- if (!platform?.waitUntil && backgroundPromises.length > 0) {
142
- await Promise.all(backgroundPromises);
143
- }
144
-
145
121
  return response;
146
122
  };
147
123
 
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import type { Plugin } from 'vite';
2
- export declare function workflowPlugin(): Plugin;
2
+ export declare function workflowPlugin(): Plugin[];
3
3
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,MAAM,EAAE,MAAM,MAAM,CAAC;AAG/C,wBAAgB,cAAc,IAAI,MAAM,CA6HvC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAMnC,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAczC"}
package/dist/plugin.js CHANGED
@@ -1,111 +1,19 @@
1
- import { relative } from 'node:path';
2
- import { transform } from '@swc/core';
3
- import { resolveModulePath } from 'exsolve';
4
1
  import { SvelteKitBuilder } from './builder.js';
2
+ import { workflowTransformPlugin } from '@workflow/rollup';
3
+ import { workflowHotUpdatePlugin } from '@workflow/vite';
4
+ import { createBuildQueue } from '@workflow/builders';
5
5
  export function workflowPlugin() {
6
- let builder;
7
- return {
8
- name: 'workflow:sveltekit',
9
- // TODO: Move this to @workflow/vite or something since this is vite specific
10
- // Transform workflow files with SWC
11
- async transform(code, id) {
12
- // Only apply the transform if file needs it
13
- if (!code.match(/(use step|use workflow)/)) {
14
- return null;
15
- }
16
- const isTypeScript = id.endsWith('.ts') || id.endsWith('.tsx');
17
- const isTsx = id.endsWith('.tsx');
18
- const swcPlugin = resolveModulePath('@workflow/swc-plugin', {
19
- from: [import.meta.url],
20
- });
21
- // Calculate relative filename for SWC plugin
22
- // The SWC plugin uses filename to generate workflowId, so it must be relative
23
- const workingDir = process.cwd();
24
- const normalizedWorkingDir = workingDir
25
- .replace(/\\/g, '/')
26
- .replace(/\/$/, '');
27
- const normalizedFilepath = id.replace(/\\/g, '/');
28
- // Windows fix: Use case-insensitive comparison to work around drive letter casing issues
29
- const lowerWd = normalizedWorkingDir.toLowerCase();
30
- const lowerPath = normalizedFilepath.toLowerCase();
31
- let relativeFilename;
32
- if (lowerPath.startsWith(lowerWd + '/')) {
33
- // File is under working directory - manually calculate relative path
34
- relativeFilename = normalizedFilepath.substring(normalizedWorkingDir.length + 1);
35
- }
36
- else if (lowerPath === lowerWd) {
37
- // File IS the working directory (shouldn't happen)
38
- relativeFilename = '.';
39
- }
40
- else {
41
- // Use relative() for files outside working directory
42
- relativeFilename = relative(workingDir, id).replace(/\\/g, '/');
43
- if (relativeFilename.startsWith('../')) {
44
- relativeFilename = relativeFilename
45
- .split('/')
46
- .filter((part) => part !== '..')
47
- .join('/');
48
- }
49
- }
50
- // Final safety check - ensure we never pass an absolute path to SWC
51
- if (relativeFilename.includes(':') || relativeFilename.startsWith('/')) {
52
- // This should rarely happen, but use filename split as last resort
53
- relativeFilename = normalizedFilepath.split('/').pop() || 'unknown.ts';
54
- }
55
- // Transform with SWC
56
- const result = await transform(code, {
57
- filename: relativeFilename,
58
- jsc: {
59
- parser: {
60
- syntax: isTypeScript ? 'typescript' : 'ecmascript',
61
- tsx: isTsx,
62
- },
63
- target: 'es2022',
64
- experimental: {
65
- plugins: [[swcPlugin, { mode: 'client' }]],
66
- },
67
- },
68
- minify: false,
69
- sourceMaps: true,
70
- inlineSourcesContent: true,
71
- });
72
- return {
73
- code: result.code,
74
- map: result.map ? JSON.parse(result.map) : null,
75
- };
6
+ let builder = new SvelteKitBuilder();
7
+ const enqueue = createBuildQueue();
8
+ return [
9
+ workflowTransformPlugin(),
10
+ {
11
+ name: 'workflow:sveltekit',
76
12
  },
77
- configResolved() {
78
- builder = new SvelteKitBuilder();
79
- },
80
- async buildStart() {
81
- await builder.build();
82
- },
83
- // TODO: Move this to @workflow/vite or something since this is vite specific
84
- async handleHotUpdate(ctx) {
85
- const { file, server, read } = ctx;
86
- // Check if this is a TS/JS file that might contain workflow directives
87
- const jsTsRegex = /\.(ts|tsx|js|jsx|mjs|cjs)$/;
88
- if (!jsTsRegex.test(file)) {
89
- return;
90
- }
91
- // Read the file to check for workflow/step directives
92
- const content = await read();
93
- const useWorkflowPattern = /^\s*(['"])use workflow\1;?\s*$/m;
94
- const useStepPattern = /^\s*(['"])use step\1;?\s*$/m;
95
- if (!useWorkflowPattern.test(content) && !useStepPattern.test(content)) {
96
- return;
97
- }
98
- // Rebuild everything - simpler and more reliable than tracking individual files
99
- console.log('Workflow file changed, regenerating routes...');
100
- await builder.build();
101
- // Trigger full reload of workflow routes
102
- server.ws.send({
103
- type: 'full-reload',
104
- path: '*',
105
- });
106
- // Let Vite handle the normal HMR for the changed file
107
- return;
108
- },
109
- };
13
+ workflowHotUpdatePlugin({
14
+ builder,
15
+ enqueue,
16
+ }),
17
+ ];
110
18
  }
111
19
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAyB,CAAC;IAE9B,OAAO;QACL,IAAI,EAAE,oBAAoB;QAE1B,6EAA6E;QAC7E,oCAAoC;QACpC,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,EAAU;YACtC,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,SAAS,GAAG,iBAAiB,CAAC,sBAAsB,EAAE;gBAC1D,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACxB,CAAC,CAAC;YAEH,6CAA6C;YAC7C,8EAA8E;YAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,oBAAoB,GAAG,UAAU;iBACpC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;iBACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtB,MAAM,kBAAkB,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAElD,yFAAyF;YACzF,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;YAEnD,IAAI,gBAAwB,CAAC;YAC7B,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;gBACxC,qEAAqE;gBACrE,gBAAgB,GAAG,kBAAkB,CAAC,SAAS,CAC7C,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAChC,CAAC;YACJ,CAAC;iBAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBACjC,mDAAmD;gBACnD,gBAAgB,GAAG,GAAG,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,qDAAqD;gBACrD,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAEhE,IAAI,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvC,gBAAgB,GAAG,gBAAgB;yBAChC,KAAK,CAAC,GAAG,CAAC;yBACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;yBAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;YACH,CAAC;YAED,oEAAoE;YACpE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvE,mEAAmE;gBACnE,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC;YACzE,CAAC;YAED,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE;gBACnC,QAAQ,EAAE,gBAAgB;gBAC1B,GAAG,EAAE;oBACH,MAAM,EAAE;wBACN,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;wBAClD,GAAG,EAAE,KAAK;qBACX;oBACD,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE;wBACZ,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;qBAC3C;iBACF;gBACD,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,IAAI;gBAChB,oBAAoB,EAAE,IAAI;aAC3B,CAAC,CAAC;YAEH,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;aAChD,CAAC;QACJ,CAAC;QAED,cAAc;YACZ,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,CAAC;QAED,KAAK,CAAC,UAAU;YACd,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QAED,6EAA6E;QAC7E,KAAK,CAAC,eAAe,CAAC,GAAe;YACnC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;YAEnC,uEAAuE;YACvE,MAAM,SAAS,GAAG,4BAA4B,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,sDAAsD;YACtD,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;YAC7B,MAAM,kBAAkB,GAAG,iCAAiC,CAAC;YAC7D,MAAM,cAAc,GAAG,6BAA6B,CAAC;YAErD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvE,OAAO;YACT,CAAC;YAED,gFAAgF;YAChF,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAEtB,yCAAyC;YACzC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,GAAG;aACV,CAAC,CAAC;YAEH,sDAAsD;YACtD,OAAO;QACT,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IAEnC,OAAO;QACL,uBAAuB,EAAY;QACnC;YACE,IAAI,EAAE,oBAAoB;SAC3B;QACD,uBAAuB,CAAC;YACtB,OAAO;YACP,OAAO;SACR,CAAC;KACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/sveltekit",
3
- "version": "4.0.0-beta.3",
3
+ "version": "4.0.0-beta.30",
4
4
  "description": "SvelteKit integration for Workflow DevKit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,7 +10,7 @@
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
13
- "license": "MIT",
13
+ "license": "Apache-2.0",
14
14
  "repository": {
15
15
  "type": "git",
16
16
  "url": "https://github.com/vercel/workflow.git",
@@ -20,18 +20,19 @@
20
20
  ".": "./dist/index.js"
21
21
  },
22
22
  "dependencies": {
23
- "@swc/core": "1.11.24",
24
- "@sveltejs/kit": "^2.48.2",
25
- "fs-extra": "^11.3.2",
23
+ "@swc/core": "1.15.3",
26
24
  "exsolve": "^1.0.7",
25
+ "fs-extra": "^11.3.2",
27
26
  "pathe": "^2.0.3",
28
- "@workflow/builders": "4.0.1-beta.5",
29
- "@workflow/swc-plugin": "4.0.1-beta.3"
27
+ "@workflow/builders": "4.0.1-beta.32",
28
+ "@workflow/rollup": "4.0.0-beta.6",
29
+ "@workflow/swc-plugin": "4.0.1-beta.12",
30
+ "@workflow/vite": "4.0.0-beta.2"
30
31
  },
31
32
  "devDependencies": {
32
- "@types/fs-extra": "^11.0.4",
33
+ "@types/fs-extra": "11.0.4",
33
34
  "@types/node": "22.19.0",
34
- "vite": "^7.1.11",
35
+ "vite": "7.1.12",
35
36
  "@workflow/tsconfig": "4.0.1-beta.0"
36
37
  },
37
38
  "scripts": {