From 28fe6905be70ddec6dfec22e6c32101183019b7a Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Thu, 20 Nov 2025 19:25:08 -0800 Subject: [PATCH 1/9] refactor: move rollup plugin to own package --- packages/nitro/package.json | 2 +- packages/nitro/src/index.ts | 4 +- packages/nitro/src/vite.ts | 4 +- packages/rollup/LICENSE.md | 201 ++++++++++++++++++ packages/rollup/README.md | 3 + packages/rollup/package.json | 39 ++++ .../src/rollup.ts => rollup/src/index.ts} | 8 +- packages/rollup/tsconfig.json | 12 ++ packages/workflow/package.json | 3 +- packages/workflow/src/rollup.ts | 2 +- 10 files changed, 266 insertions(+), 12 deletions(-) create mode 100644 packages/rollup/LICENSE.md create mode 100644 packages/rollup/README.md create mode 100644 packages/rollup/package.json rename packages/{nitro/src/rollup.ts => rollup/src/index.ts} (91%) create mode 100644 packages/rollup/tsconfig.json diff --git a/packages/nitro/package.json b/packages/nitro/package.json index 13d14d82c..e38ce828c 100644 --- a/packages/nitro/package.json +++ b/packages/nitro/package.json @@ -18,7 +18,6 @@ }, "exports": { ".": "./dist/index.js", - "./rollup": "./dist/rollup.js", "./vite": "./dist/vite.js" }, "scripts": { @@ -31,6 +30,7 @@ "@workflow/swc-plugin": "workspace:*", "@workflow/builders": "workspace:*", "@workflow/core": "workspace:*", + "@workflow/rollup": "workspace:*", "exsolve": "1.0.7", "pathe": "2.0.3" }, diff --git a/packages/nitro/src/index.ts b/packages/nitro/src/index.ts index 359b23e2e..33e6e67f4 100644 --- a/packages/nitro/src/index.ts +++ b/packages/nitro/src/index.ts @@ -1,7 +1,7 @@ import type { Nitro, NitroModule, RollupConfig } from 'nitro/types'; import { join } from 'pathe'; import { LocalBuilder, VercelBuilder } from './builders.js'; -import { workflowRollupPlugin } from './rollup.js'; +import { workflowTransformPlugin } from '@workflow/rollup'; import type { ModuleOptions } from './types'; export type { ModuleOptions }; @@ -14,7 +14,7 @@ export default { // Add transform plugin nitro.hooks.hook('rollup:before', (_nitro: Nitro, config: RollupConfig) => { - (config.plugins as Array).push(workflowRollupPlugin()); + (config.plugins as Array).push(workflowTransformPlugin()); }); // NOTE: Temporary workaround for debug unenv mock diff --git a/packages/nitro/src/vite.ts b/packages/nitro/src/vite.ts index abdc7969b..1fc98af23 100644 --- a/packages/nitro/src/vite.ts +++ b/packages/nitro/src/vite.ts @@ -5,13 +5,13 @@ import { LocalBuilder } from './builders.js'; import type { Plugin as VitePlugin } from 'vite'; import type { ModuleOptions } from './index.js'; import nitroModule from './index.js'; -import { workflowRollupPlugin } from './rollup.js'; +import { workflowTransformPlugin } from '@workflow/rollup'; export function workflow(options?: ModuleOptions): Plugin[] { let builder: LocalBuilder | undefined; return [ - workflowRollupPlugin() as VitePlugin, + workflowTransformPlugin() as VitePlugin, { name: 'workflow:nitro', nitro: { diff --git a/packages/rollup/LICENSE.md b/packages/rollup/LICENSE.md new file mode 100644 index 000000000..c4d680f55 --- /dev/null +++ b/packages/rollup/LICENSE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 Vercel Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/rollup/README.md b/packages/rollup/README.md new file mode 100644 index 000000000..333e7b976 --- /dev/null +++ b/packages/rollup/README.md @@ -0,0 +1,3 @@ +# workflow/nitro + +The docs have moved! Refer to them [here](https://useworkflow.dev/) diff --git a/packages/rollup/package.json b/packages/rollup/package.json new file mode 100644 index 000000000..5717ad4bd --- /dev/null +++ b/packages/rollup/package.json @@ -0,0 +1,39 @@ +{ + "name": "@workflow/rollup", + "version": "4.0.0-beta.1", + "description": "Rollup plugin for Workflow DevKit", + "type": "module", + "main": "dist/index.js", + "files": [ + "dist" + ], + "publishConfig": { + "access": "public" + }, + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/vercel/workflow.git", + "directory": "packages/rollup" + }, + "exports": { + ".": "./dist/index.js" + }, + "scripts": { + "build": "tsc", + "dev": "tsc --watch", + "clean": "tsc --build --clean && rm -rf dist" + }, + "dependencies": { + "@swc/core": "1.11.24", + "@workflow/builders": "workspace:*", + "@workflow/swc-plugin": "workspace:*", + "exsolve": "1.0.7", + "pathe": "2.0.3" + }, + "devDependencies": { + "@types/node": "catalog:", + "@workflow/tsconfig": "workspace:*", + "vite": "7.1.12" + } +} diff --git a/packages/nitro/src/rollup.ts b/packages/rollup/src/index.ts similarity index 91% rename from packages/nitro/src/rollup.ts rename to packages/rollup/src/index.ts index 37f91d099..7a7076982 100644 --- a/packages/nitro/src/rollup.ts +++ b/packages/rollup/src/index.ts @@ -5,12 +5,10 @@ import type { RollupConfig } from 'nitro/types'; type RollupPlugin = Exclude< RollupConfig['plugins'], - undefined | void | null | false | Promise | Array + undefined | null | false | Promise | Array >; -// https://github.com/vercel/workflow/blob/feat/nitro/packages/next/src/loader.ts - -export function workflowRollupPlugin(): RollupPlugin { +export function workflowTransformPlugin(): RollupPlugin { return { name: 'workflow:transform', // This transform applies the "use workflow"/"use step" @@ -41,7 +39,7 @@ export function workflowRollupPlugin(): RollupPlugin { const lowerPath = normalizedFilepath.toLowerCase(); let relativeFilename: string; - if (lowerPath.startsWith(lowerWd + '/')) { + if (lowerPath.startsWith(`${lowerWd}/`)) { // File is under working directory - manually calculate relative path relativeFilename = normalizedFilepath.substring( normalizedWorkingDir.length + 1 diff --git a/packages/rollup/tsconfig.json b/packages/rollup/tsconfig.json new file mode 100644 index 000000000..ba5d9aec0 --- /dev/null +++ b/packages/rollup/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "@workflow/tsconfig/base.json", + "compilerOptions": { + "outDir": "dist", + "target": "es2022", + "module": "preserve", + "baseUrl": ".", + "moduleResolution": "bundler" + }, + "include": ["src"], + "exclude": ["node_modules", "**/*.test.ts"] +} diff --git a/packages/workflow/package.json b/packages/workflow/package.json index 278c3d8cb..a87c33d12 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -61,7 +61,8 @@ "@workflow/next": "workspace:*", "@workflow/nitro": "workspace:*", "@workflow/nuxt": "workspace:*", - "@workflow/sveltekit": "workspace:*" + "@workflow/sveltekit": "workspace:*", + "@workflow/rollup": "workspace:*" }, "devDependencies": { "@types/ms": "2.1.0", diff --git a/packages/workflow/src/rollup.ts b/packages/workflow/src/rollup.ts index b67abd12b..30eb08aa4 100644 --- a/packages/workflow/src/rollup.ts +++ b/packages/workflow/src/rollup.ts @@ -1 +1 @@ -export { workflowRollupPlugin } from '@workflow/nitro/rollup'; +export * from '@workflow/rollup'; From 28449cc8fb42c940cca28b6c2bfe399559d2404b Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Thu, 20 Nov 2025 19:25:19 -0800 Subject: [PATCH 2/9] refactor(sveltekit): update sveltekit to use rollup package --- packages/sveltekit/package.json | 1 + packages/sveltekit/src/plugin.ts | 180 +++++----------- pnpm-lock.yaml | 347 ++++++------------------------- 3 files changed, 112 insertions(+), 416 deletions(-) diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 9f3e90103..ccf9bd33c 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -28,6 +28,7 @@ "@swc/core": "1.11.24", "@workflow/builders": "workspace:*", "@workflow/swc-plugin": "workspace:*", + "@workflow/rollup": "workspace:*", "fs-extra": "^11.3.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" diff --git a/packages/sveltekit/src/plugin.ts b/packages/sveltekit/src/plugin.ts index 0041bddee..bd1a6ef6a 100644 --- a/packages/sveltekit/src/plugin.ts +++ b/packages/sveltekit/src/plugin.ts @@ -1,150 +1,76 @@ -import { relative } from 'node:path'; -import { transform } from '@swc/core'; -import { resolveModulePath } from 'exsolve'; import type { HotUpdateOptions, Plugin } from 'vite'; import { SvelteKitBuilder } from './builder.js'; +import { workflowTransformPlugin } from '@workflow/rollup'; -export function workflowPlugin(): Plugin { +export function workflowPlugin(): Plugin[] { let builder: SvelteKitBuilder; - return { - name: 'workflow:sveltekit', + return [ + workflowTransformPlugin(), + { + name: 'workflow:sveltekit', - // TODO: Move this to @workflow/vite or something since this is vite specific - // Transform workflow files with SWC - async transform(code: string, id: string) { - // Only apply the transform if file needs it - if (!code.match(/(use step|use workflow)/)) { - return null; - } + configResolved() { + builder = new SvelteKitBuilder(); + }, - const isTypeScript = id.endsWith('.ts') || id.endsWith('.tsx'); - const isTsx = id.endsWith('.tsx'); + // TODO: Move this to @workflow/vite or something since this is vite specific + async hotUpdate(options: HotUpdateOptions) { + const { file, server, read } = options; - const swcPlugin = resolveModulePath('@workflow/swc-plugin', { - from: [import.meta.url], - }); - - // Calculate relative filename for SWC plugin - // The SWC plugin uses filename to generate workflowId, so it must be relative - const workingDir = process.cwd(); - const normalizedWorkingDir = workingDir - .replace(/\\/g, '/') - .replace(/\/$/, ''); - const normalizedFilepath = id.replace(/\\/g, '/'); - - // Windows fix: Use case-insensitive comparison to work around drive letter casing issues - const lowerWd = normalizedWorkingDir.toLowerCase(); - const lowerPath = normalizedFilepath.toLowerCase(); - - let relativeFilename: string; - if (lowerPath.startsWith(lowerWd + '/')) { - // File is under working directory - manually calculate relative path - relativeFilename = normalizedFilepath.substring( - normalizedWorkingDir.length + 1 - ); - } else if (lowerPath === lowerWd) { - // File IS the working directory (shouldn't happen) - relativeFilename = '.'; - } else { - // Use relative() for files outside working directory - relativeFilename = relative(workingDir, id).replace(/\\/g, '/'); - - if (relativeFilename.startsWith('../')) { - relativeFilename = relativeFilename - .split('/') - .filter((part) => part !== '..') - .join('/'); + // Check if this is a TS/JS file that might contain workflow directives + const jsTsRegex = /\.(ts|tsx|js|jsx|mjs|cjs)$/; + if (!jsTsRegex.test(file)) { + return; } - } - - // Final safety check - ensure we never pass an absolute path to SWC - if (relativeFilename.includes(':') || relativeFilename.startsWith('/')) { - // This should rarely happen, but use filename split as last resort - relativeFilename = normalizedFilepath.split('/').pop() || 'unknown.ts'; - } - // Transform with SWC - const result = await transform(code, { - filename: relativeFilename, - jsc: { - parser: { - syntax: isTypeScript ? 'typescript' : 'ecmascript', - tsx: isTsx, - }, - target: 'es2022', - experimental: { - plugins: [[swcPlugin, { mode: 'client' }]], - }, - }, - minify: false, - sourceMaps: true, - inlineSourcesContent: true, - }); - - return { - code: result.code, - map: result.map ? JSON.parse(result.map) : null, - }; - }, - - configResolved() { - builder = new SvelteKitBuilder(); - }, + // Read the file to check for workflow/step directives + let content: string; + try { + content = await read(); + } catch { + // File might have been deleted - trigger rebuild to update generated routes + console.log('Workflow file deleted, regenerating routes...'); + try { + await builder.build(); + } catch (buildError) { + // Build might fail if files are being deleted during test cleanup + // Log but don't crash - the next successful change will trigger a rebuild + console.error('Build failed during file deletion:', buildError); + } + return; + } - // TODO: Move this to @workflow/vite or something since this is vite specific - async hotUpdate(options: HotUpdateOptions) { - const { file, server, read } = options; + const useWorkflowPattern = /^\s*(['"])use workflow\1;?\s*$/m; + const useStepPattern = /^\s*(['"])use step\1;?\s*$/m; - // Check if this is a TS/JS file that might contain workflow directives - const jsTsRegex = /\.(ts|tsx|js|jsx|mjs|cjs)$/; - if (!jsTsRegex.test(file)) { - return; - } + if ( + !useWorkflowPattern.test(content) && + !useStepPattern.test(content) + ) { + return; + } - // Read the file to check for workflow/step directives - let content: string; - try { - content = await read(); - } catch { - // File might have been deleted - trigger rebuild to update generated routes - console.log('Workflow file deleted, regenerating routes...'); + // Rebuild everything - simpler and more reliable than tracking individual files + console.log('Workflow file changed, regenerating routes...'); try { await builder.build(); } catch (buildError) { - // Build might fail if files are being deleted during test cleanup + // Build might fail if files are being modified/deleted during test cleanup // Log but don't crash - the next successful change will trigger a rebuild - console.error('Build failed during file deletion:', buildError); + console.error('Build failed during HMR:', buildError); + return; } - return; - } - const useWorkflowPattern = /^\s*(['"])use workflow\1;?\s*$/m; - const useStepPattern = /^\s*(['"])use step\1;?\s*$/m; + // Trigger full reload of workflow routes + server.ws.send({ + type: 'full-reload', + path: '*', + }); - if (!useWorkflowPattern.test(content) && !useStepPattern.test(content)) { + // Let Vite handle the normal HMR for the changed file return; - } - - // Rebuild everything - simpler and more reliable than tracking individual files - console.log('Workflow file changed, regenerating routes...'); - try { - await builder.build(); - } catch (buildError) { - // Build might fail if files are being modified/deleted during test cleanup - // Log but don't crash - the next successful change will trigger a rebuild - console.error('Build failed during HMR:', buildError); - return; - } - - // Trigger full reload of workflow routes - server.ws.send({ - type: 'full-reload', - path: '*', - }); - - // Let Vite handle the normal HMR for the changed file - return; + }, }, - }; + ]; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 849006af1..4eaa4e04d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,7 +29,7 @@ catalogs: version: 5.0.76 esbuild: specifier: ^0.25.11 - version: 0.25.11 + version: 0.25.12 nitro: specifier: 3.0.1-alpha.1 version: 3.0.1-alpha.1 @@ -61,7 +61,7 @@ importers: version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) esbuild: specifier: 'catalog:' - version: 0.25.11 + version: 0.25.12 husky: specifier: ^9.1.7 version: 9.1.7 @@ -342,7 +342,7 @@ importers: version: 5.18.2 esbuild: specifier: 'catalog:' - version: 0.25.11 + version: 0.25.12 find-up: specifier: 7.0.0 version: 7.0.0 @@ -418,7 +418,7 @@ importers: version: 5.18.2 esbuild: specifier: 'catalog:' - version: 0.25.11 + version: 0.25.12 find-up: specifier: 7.0.0 version: 7.0.0 @@ -594,6 +594,9 @@ importers: '@workflow/core': specifier: workspace:* version: link:../core + '@workflow/rollup': + specifier: workspace:* + version: link:../rollup '@workflow/swc-plugin': specifier: workspace:* version: link:../swc-plugin-workflow @@ -642,6 +645,34 @@ importers: specifier: 4.0.0 version: 4.0.0(@biomejs/biome@2.3.3)(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@22.19.0)(@vercel/functions@3.1.4(@aws-sdk/credential-provider-web-identity@3.844.0))(@vue/compiler-sfc@3.5.22)(better-sqlite3@11.10.0)(db0@0.3.4(better-sqlite3@11.10.0)(drizzle-orm@0.44.7(@opentelemetry/api@1.9.0)(better-sqlite3@11.10.0)(pg@8.16.3)(postgres@3.4.7)))(drizzle-orm@0.44.7(@opentelemetry/api@1.9.0)(better-sqlite3@11.10.0)(pg@8.16.3)(postgres@3.4.7))(eslint@9.38.0(jiti@2.6.1))(ioredis@5.8.2)(lightningcss@1.30.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.53.2)(terser@5.44.0)(tsx@4.20.6)(typescript@5.9.3)(vite@7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1) + packages/rollup: + dependencies: + '@swc/core': + specifier: 1.11.24 + version: 1.11.24 + '@workflow/builders': + specifier: workspace:* + version: link:../builders + '@workflow/swc-plugin': + specifier: workspace:* + version: link:../swc-plugin-workflow + exsolve: + specifier: 1.0.7 + version: 1.0.7 + pathe: + specifier: 2.0.3 + version: 2.0.3 + devDependencies: + '@types/node': + specifier: 'catalog:' + version: 22.19.0 + '@workflow/tsconfig': + specifier: workspace:* + version: link:../tsconfig + vite: + specifier: 7.1.12 + version: 7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + packages/sveltekit: dependencies: '@swc/core': @@ -650,6 +681,9 @@ importers: '@workflow/builders': specifier: workspace:* version: link:../builders + '@workflow/rollup': + specifier: workspace:* + version: link:../rollup '@workflow/swc-plugin': specifier: workspace:* version: link:../swc-plugin-workflow @@ -893,6 +927,9 @@ importers: '@workflow/nuxt': specifier: workspace:* version: link:../nuxt + '@workflow/rollup': + specifier: workspace:* + version: link:../rollup '@workflow/sveltekit': specifier: workspace:* version: link:../sveltekit @@ -1126,7 +1163,7 @@ importers: version: link:../../packages/cli esbuild: specifier: 'catalog:' - version: 0.25.11 + version: 0.25.12 workbench/express: dependencies: @@ -1984,12 +2021,6 @@ packages: resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} deprecated: 'Merged into tsx: https://tsx.is' - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -2008,12 +2039,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} @@ -2032,12 +2057,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} @@ -2056,12 +2075,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} @@ -2080,12 +2093,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} @@ -2104,12 +2111,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} @@ -2128,12 +2129,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} @@ -2152,12 +2147,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} @@ -2176,12 +2165,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} @@ -2200,12 +2183,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} @@ -2224,12 +2201,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} @@ -2248,12 +2219,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} @@ -2272,12 +2237,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} @@ -2296,12 +2255,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} @@ -2320,12 +2273,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} @@ -2344,12 +2291,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} @@ -2368,12 +2309,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} @@ -2386,12 +2321,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -2410,12 +2339,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} @@ -2428,12 +2351,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -2452,12 +2369,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} @@ -2470,12 +2381,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -2488,12 +2393,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} @@ -2512,12 +2411,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} @@ -2536,12 +2429,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} @@ -2560,12 +2447,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} @@ -7892,11 +7773,6 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -13346,9 +13222,6 @@ snapshots: '@esbuild-kit/core-utils': 3.3.2 get-tsconfig: 4.12.0 - '@esbuild/aix-ppc64@0.25.11': - optional: true - '@esbuild/aix-ppc64@0.25.12': optional: true @@ -13358,9 +13231,6 @@ snapshots: '@esbuild/android-arm64@0.18.20': optional: true - '@esbuild/android-arm64@0.25.11': - optional: true - '@esbuild/android-arm64@0.25.12': optional: true @@ -13370,9 +13240,6 @@ snapshots: '@esbuild/android-arm@0.18.20': optional: true - '@esbuild/android-arm@0.25.11': - optional: true - '@esbuild/android-arm@0.25.12': optional: true @@ -13382,9 +13249,6 @@ snapshots: '@esbuild/android-x64@0.18.20': optional: true - '@esbuild/android-x64@0.25.11': - optional: true - '@esbuild/android-x64@0.25.12': optional: true @@ -13394,9 +13258,6 @@ snapshots: '@esbuild/darwin-arm64@0.18.20': optional: true - '@esbuild/darwin-arm64@0.25.11': - optional: true - '@esbuild/darwin-arm64@0.25.12': optional: true @@ -13406,9 +13267,6 @@ snapshots: '@esbuild/darwin-x64@0.18.20': optional: true - '@esbuild/darwin-x64@0.25.11': - optional: true - '@esbuild/darwin-x64@0.25.12': optional: true @@ -13418,9 +13276,6 @@ snapshots: '@esbuild/freebsd-arm64@0.18.20': optional: true - '@esbuild/freebsd-arm64@0.25.11': - optional: true - '@esbuild/freebsd-arm64@0.25.12': optional: true @@ -13430,9 +13285,6 @@ snapshots: '@esbuild/freebsd-x64@0.18.20': optional: true - '@esbuild/freebsd-x64@0.25.11': - optional: true - '@esbuild/freebsd-x64@0.25.12': optional: true @@ -13442,9 +13294,6 @@ snapshots: '@esbuild/linux-arm64@0.18.20': optional: true - '@esbuild/linux-arm64@0.25.11': - optional: true - '@esbuild/linux-arm64@0.25.12': optional: true @@ -13454,9 +13303,6 @@ snapshots: '@esbuild/linux-arm@0.18.20': optional: true - '@esbuild/linux-arm@0.25.11': - optional: true - '@esbuild/linux-arm@0.25.12': optional: true @@ -13466,9 +13312,6 @@ snapshots: '@esbuild/linux-ia32@0.18.20': optional: true - '@esbuild/linux-ia32@0.25.11': - optional: true - '@esbuild/linux-ia32@0.25.12': optional: true @@ -13478,9 +13321,6 @@ snapshots: '@esbuild/linux-loong64@0.18.20': optional: true - '@esbuild/linux-loong64@0.25.11': - optional: true - '@esbuild/linux-loong64@0.25.12': optional: true @@ -13490,9 +13330,6 @@ snapshots: '@esbuild/linux-mips64el@0.18.20': optional: true - '@esbuild/linux-mips64el@0.25.11': - optional: true - '@esbuild/linux-mips64el@0.25.12': optional: true @@ -13502,9 +13339,6 @@ snapshots: '@esbuild/linux-ppc64@0.18.20': optional: true - '@esbuild/linux-ppc64@0.25.11': - optional: true - '@esbuild/linux-ppc64@0.25.12': optional: true @@ -13514,9 +13348,6 @@ snapshots: '@esbuild/linux-riscv64@0.18.20': optional: true - '@esbuild/linux-riscv64@0.25.11': - optional: true - '@esbuild/linux-riscv64@0.25.12': optional: true @@ -13526,9 +13357,6 @@ snapshots: '@esbuild/linux-s390x@0.18.20': optional: true - '@esbuild/linux-s390x@0.25.11': - optional: true - '@esbuild/linux-s390x@0.25.12': optional: true @@ -13538,18 +13366,12 @@ snapshots: '@esbuild/linux-x64@0.18.20': optional: true - '@esbuild/linux-x64@0.25.11': - optional: true - '@esbuild/linux-x64@0.25.12': optional: true '@esbuild/linux-x64@0.25.5': optional: true - '@esbuild/netbsd-arm64@0.25.11': - optional: true - '@esbuild/netbsd-arm64@0.25.12': optional: true @@ -13559,18 +13381,12 @@ snapshots: '@esbuild/netbsd-x64@0.18.20': optional: true - '@esbuild/netbsd-x64@0.25.11': - optional: true - '@esbuild/netbsd-x64@0.25.12': optional: true '@esbuild/netbsd-x64@0.25.5': optional: true - '@esbuild/openbsd-arm64@0.25.11': - optional: true - '@esbuild/openbsd-arm64@0.25.12': optional: true @@ -13580,27 +13396,18 @@ snapshots: '@esbuild/openbsd-x64@0.18.20': optional: true - '@esbuild/openbsd-x64@0.25.11': - optional: true - '@esbuild/openbsd-x64@0.25.12': optional: true '@esbuild/openbsd-x64@0.25.5': optional: true - '@esbuild/openharmony-arm64@0.25.11': - optional: true - '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/sunos-x64@0.18.20': optional: true - '@esbuild/sunos-x64@0.25.11': - optional: true - '@esbuild/sunos-x64@0.25.12': optional: true @@ -13610,9 +13417,6 @@ snapshots: '@esbuild/win32-arm64@0.18.20': optional: true - '@esbuild/win32-arm64@0.25.11': - optional: true - '@esbuild/win32-arm64@0.25.12': optional: true @@ -13622,9 +13426,6 @@ snapshots: '@esbuild/win32-ia32@0.18.20': optional: true - '@esbuild/win32-ia32@0.25.11': - optional: true - '@esbuild/win32-ia32@0.25.12': optional: true @@ -13634,9 +13435,6 @@ snapshots: '@esbuild/win32-x64@0.18.20': optional: true - '@esbuild/win32-x64@0.25.11': - optional: true - '@esbuild/win32-x64@0.25.12': optional: true @@ -14568,7 +14366,7 @@ snapshots: consola: 3.4.2 cssnano: 7.1.1(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 exsolve: 1.0.7 get-port-please: 3.2.0 @@ -14653,7 +14451,7 @@ snapshots: consola: 3.4.2 cssnano: 7.1.1(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 exsolve: 1.0.7 get-port-please: 3.2.0 @@ -17168,7 +16966,7 @@ snapshots: dependencies: '@sveltejs/kit': 2.48.4(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.1.12(@types/node@24.6.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.43.3)(vite@7.1.12(@types/node@24.6.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vercel/nft': 0.30.3(rollup@4.53.2) - esbuild: 0.25.11 + esbuild: 0.25.12 transitivePeerDependencies: - encoding - rollup @@ -19335,8 +19133,8 @@ snapshots: dependencies: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 - esbuild: 0.25.11 - esbuild-register: 3.6.0(esbuild@0.25.11) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) transitivePeerDependencies: - supports-color @@ -19454,10 +19252,10 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild-register@3.6.0(esbuild@0.25.11): + esbuild-register@3.6.0(esbuild@0.25.12): dependencies: debug: 4.4.3(supports-color@8.1.1) - esbuild: 0.25.11 + esbuild: 0.25.12 transitivePeerDependencies: - supports-color @@ -19486,35 +19284,6 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - esbuild@0.25.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 - esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 @@ -21682,7 +21451,7 @@ snapshots: citty: 0.1.6 cssnano: 7.1.1(postcss@8.5.6) defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 jiti: 1.21.7 mlly: 1.8.0 pathe: 2.0.3 @@ -22010,7 +21779,7 @@ snapshots: defu: 6.1.4 destr: 2.0.5 dot-prop: 9.0.0 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 etag: 1.8.1 exsolve: 1.0.7 @@ -22112,7 +21881,7 @@ snapshots: defu: 6.1.4 destr: 2.0.5 dot-prop: 10.1.0 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 etag: 1.8.1 exsolve: 1.0.7 @@ -22275,7 +22044,7 @@ snapshots: destr: 2.0.5 devalue: 5.5.0 errx: 0.1.0 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 exsolve: 1.0.7 @@ -22401,7 +22170,7 @@ snapshots: destr: 2.0.5 devalue: 5.5.0 errx: 0.1.0 - esbuild: 0.25.11 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 exsolve: 1.0.7 @@ -24697,7 +24466,7 @@ snapshots: citty: 0.1.6 consola: 3.4.2 defu: 6.1.4 - esbuild: 0.25.11 + esbuild: 0.25.12 fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.6.1 @@ -25192,7 +24961,7 @@ snapshots: vite@7.1.11(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -25209,7 +24978,7 @@ snapshots: vite@7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -25226,7 +24995,7 @@ snapshots: vite@7.1.12(@types/node@24.6.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - esbuild: 0.25.11 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 From 5321a4a961092702288d26d37dddb90615a7f845 Mon Sep 17 00:00:00 2001 From: Adrian Date: Thu, 20 Nov 2025 20:35:34 -0800 Subject: [PATCH 3/9] Update packages/rollup/src/index.ts Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> --- packages/rollup/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rollup/src/index.ts b/packages/rollup/src/index.ts index 7a7076982..067762b2c 100644 --- a/packages/rollup/src/index.ts +++ b/packages/rollup/src/index.ts @@ -5,7 +5,7 @@ import type { RollupConfig } from 'nitro/types'; type RollupPlugin = Exclude< RollupConfig['plugins'], - undefined | null | false | Promise | Array + undefined | void | null | false | Promise | Array >; export function workflowTransformPlugin(): RollupPlugin { From 5e1ce411a5133c2920520ce1aee7fdf32b91b4a7 Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Thu, 20 Nov 2025 20:37:08 -0800 Subject: [PATCH 4/9] chore(deps): missing nitro dep --- packages/rollup/package.json | 1 + pnpm-lock.yaml | 5 ++++- pnpm-workspace.yaml | 18 +++++++++--------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/rollup/package.json b/packages/rollup/package.json index 5717ad4bd..93a52d73d 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -34,6 +34,7 @@ "devDependencies": { "@types/node": "catalog:", "@workflow/tsconfig": "workspace:*", + "nitro": "catalog:", "vite": "7.1.12" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4eaa4e04d..72d0729a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -669,6 +669,9 @@ importers: '@workflow/tsconfig': specifier: workspace:* version: link:../tsconfig + nitro: + specifier: 'catalog:' + version: 3.0.1-alpha.1(@netlify/blobs@9.1.2)(@vercel/functions@3.1.4(@aws-sdk/credential-provider-web-identity@3.844.0))(better-sqlite3@11.10.0)(chokidar@4.0.3)(drizzle-orm@0.44.7(@opentelemetry/api@1.9.0)(better-sqlite3@11.10.0)(pg@8.16.3)(postgres@3.4.7))(ioredis@5.8.2)(lru-cache@11.2.2)(rollup@4.53.2)(vite@7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vite: specifier: 7.1.12 version: 7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) @@ -14467,7 +14470,7 @@ snapshots: rollup-plugin-visualizer: 6.0.5(rollup@4.53.2) std-env: 3.10.0 ufo: 1.6.1 - unenv: 2.0.0-rc.21 + unenv: 2.0.0-rc.24 vite: 7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vite-node: 3.2.4(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vite-plugin-checker: 0.11.0(@biomejs/biome@2.3.3)(eslint@9.38.0(jiti@2.6.1))(optionator@0.9.4)(typescript@5.9.3)(vite@7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8c1202521..ceb226aeb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,16 +4,16 @@ packages: - docs catalog: - "@types/node": 22.19.0 - "@biomejs/biome": ^2.2.7 - "@types/json-schema": ^7.0.15 - "@vercel/functions": ^3.1.4 - "@vercel/oidc": 3.0.5 - "@vercel/queue": 0.0.0-alpha.29 - "@vitest/coverage-v8": ^3.2.4 - "nitro": "3.0.1-alpha.1" + '@biomejs/biome': ^2.2.7 + '@types/json-schema': ^7.0.15 + '@types/node': 22.19.0 + '@vercel/functions': ^3.1.4 + '@vercel/oidc': 3.0.5 + '@vercel/queue': 0.0.0-alpha.29 + '@vitest/coverage-v8': ^3.2.4 ai: 5.0.76 esbuild: ^0.25.11 + nitro: 3.0.1-alpha.1 typescript: ^5.9.3 vitest: ^3.2.4 zod: 4.1.11 @@ -21,4 +21,4 @@ catalog: onlyBuiltDependencies: - esbuild -savePrefix: "" +savePrefix: '' From eb7c53c48696c5b246bde4b05d020167e36255a3 Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Fri, 21 Nov 2025 13:21:48 -0800 Subject: [PATCH 5/9] chore(deps): remove unused deps from @workflow/rollup --- packages/rollup/package.json | 7 ++----- packages/rollup/src/index.ts | 9 ++------- pnpm-lock.yaml | 15 +++------------ 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/packages/rollup/package.json b/packages/rollup/package.json index 93a52d73d..561a6de28 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -26,15 +26,12 @@ }, "dependencies": { "@swc/core": "1.11.24", - "@workflow/builders": "workspace:*", "@workflow/swc-plugin": "workspace:*", - "exsolve": "1.0.7", - "pathe": "2.0.3" + "exsolve": "1.0.7" }, "devDependencies": { "@types/node": "catalog:", "@workflow/tsconfig": "workspace:*", - "nitro": "catalog:", - "vite": "7.1.12" + "rollup": "^4.53.2" } } diff --git a/packages/rollup/src/index.ts b/packages/rollup/src/index.ts index 067762b2c..8dc5d02fa 100644 --- a/packages/rollup/src/index.ts +++ b/packages/rollup/src/index.ts @@ -1,14 +1,9 @@ import { relative } from 'node:path'; import { transform } from '@swc/core'; import { resolveModulePath } from 'exsolve'; -import type { RollupConfig } from 'nitro/types'; +import type { Plugin } from 'rollup'; -type RollupPlugin = Exclude< - RollupConfig['plugins'], - undefined | void | null | false | Promise | Array ->; - -export function workflowTransformPlugin(): RollupPlugin { +export function workflowTransformPlugin(): Plugin { return { name: 'workflow:transform', // This transform applies the "use workflow"/"use step" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72d0729a1..6f018a831 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -650,18 +650,12 @@ importers: '@swc/core': specifier: 1.11.24 version: 1.11.24 - '@workflow/builders': - specifier: workspace:* - version: link:../builders '@workflow/swc-plugin': specifier: workspace:* version: link:../swc-plugin-workflow exsolve: specifier: 1.0.7 version: 1.0.7 - pathe: - specifier: 2.0.3 - version: 2.0.3 devDependencies: '@types/node': specifier: 'catalog:' @@ -669,12 +663,9 @@ importers: '@workflow/tsconfig': specifier: workspace:* version: link:../tsconfig - nitro: - specifier: 'catalog:' - version: 3.0.1-alpha.1(@netlify/blobs@9.1.2)(@vercel/functions@3.1.4(@aws-sdk/credential-provider-web-identity@3.844.0))(better-sqlite3@11.10.0)(chokidar@4.0.3)(drizzle-orm@0.44.7(@opentelemetry/api@1.9.0)(better-sqlite3@11.10.0)(pg@8.16.3)(postgres@3.4.7))(ioredis@5.8.2)(lru-cache@11.2.2)(rollup@4.53.2)(vite@7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - vite: - specifier: 7.1.12 - version: 7.1.12(@types/node@22.19.0)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + rollup: + specifier: ^4.53.2 + version: 4.53.2 packages/sveltekit: dependencies: From fd4c875bf94aa88a021f22a49dee713bbe6d1644 Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Fri, 21 Nov 2025 13:21:51 -0800 Subject: [PATCH 6/9] changeset --- .changeset/sharp-laws-feel.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .changeset/sharp-laws-feel.md diff --git a/.changeset/sharp-laws-feel.md b/.changeset/sharp-laws-feel.md new file mode 100644 index 000000000..0ea6f8517 --- /dev/null +++ b/.changeset/sharp-laws-feel.md @@ -0,0 +1,8 @@ +--- +"@workflow/sveltekit": patch +"workflow": patch +"@workflow/rollup": patch +"@workflow/nitro": patch +--- + +Refactor to use @workflow/rollup package From 61fdca19d417cce1d2141ccf10f55643d26fd800 Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Fri, 21 Nov 2025 14:06:09 -0800 Subject: [PATCH 7/9] chore: project LICENSE symlinks --- packages/rollup/LICENSE.md | 202 +--------------------------------- workbench/nitro-v2/LICENSE.md | 2 +- workbench/nuxt/LICENSE.md | 2 +- workbench/vite/LICENSE.md | 2 +- 4 files changed, 4 insertions(+), 204 deletions(-) mode change 100644 => 120000 packages/rollup/LICENSE.md diff --git a/packages/rollup/LICENSE.md b/packages/rollup/LICENSE.md deleted file mode 100644 index c4d680f55..000000000 --- a/packages/rollup/LICENSE.md +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2025 Vercel Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/rollup/LICENSE.md b/packages/rollup/LICENSE.md new file mode 120000 index 000000000..f0608a63a --- /dev/null +++ b/packages/rollup/LICENSE.md @@ -0,0 +1 @@ +../../LICENSE.md \ No newline at end of file diff --git a/workbench/nitro-v2/LICENSE.md b/workbench/nitro-v2/LICENSE.md index 9b5a9d1b5..f0608a63a 120000 --- a/workbench/nitro-v2/LICENSE.md +++ b/workbench/nitro-v2/LICENSE.md @@ -1 +1 @@ -../nitro-v3/LICENSE.md \ No newline at end of file +../../LICENSE.md \ No newline at end of file diff --git a/workbench/nuxt/LICENSE.md b/workbench/nuxt/LICENSE.md index 8edbe50f8..f0608a63a 120000 --- a/workbench/nuxt/LICENSE.md +++ b/workbench/nuxt/LICENSE.md @@ -1 +1 @@ -../nitro-v2/LICENSE.md \ No newline at end of file +../../LICENSE.md \ No newline at end of file diff --git a/workbench/vite/LICENSE.md b/workbench/vite/LICENSE.md index 9b5a9d1b5..f0608a63a 120000 --- a/workbench/vite/LICENSE.md +++ b/workbench/vite/LICENSE.md @@ -1 +1 @@ -../nitro-v3/LICENSE.md \ No newline at end of file +../../LICENSE.md \ No newline at end of file From 485711e113a14f72acd05e6dc5ea8b5f6d7058c9 Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Fri, 21 Nov 2025 14:06:29 -0800 Subject: [PATCH 8/9] refactor: move @swc/core version to pnpm workspace --- packages/builders/package.json | 2 +- packages/cli/package.json | 2 +- packages/next/package.json | 2 +- packages/nitro/package.json | 2 +- packages/rollup/package.json | 2 +- packages/sveltekit/package.json | 2 +- packages/swc-plugin-workflow/package.json | 2 +- pnpm-lock.yaml | 19 +++++++++++-------- pnpm-workspace.yaml | 17 +++++++++-------- workbench/sveltekit/package.json | 2 +- 10 files changed, 28 insertions(+), 24 deletions(-) diff --git a/packages/builders/package.json b/packages/builders/package.json index a064105a4..7a61b248e 100644 --- a/packages/builders/package.json +++ b/packages/builders/package.json @@ -39,7 +39,7 @@ "@workflow/tsconfig": "workspace:*" }, "dependencies": { - "@swc/core": "1.11.24", + "@swc/core": "catalog:", "@workflow/swc-plugin": "workspace:*", "@workflow/errors": "workspace:*", "@workflow/core": "workspace:*", diff --git a/packages/cli/package.json b/packages/cli/package.json index 85a46e50f..2bf778a88 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -42,7 +42,7 @@ "dependencies": { "@oclif/core": "4.0.0", "@oclif/plugin-help": "6.2.31", - "@swc/core": "1.11.24", + "@swc/core": "catalog:", "@workflow/builders": "workspace:*", "@workflow/swc-plugin": "workspace:*", "@workflow/errors": "workspace:*", diff --git a/packages/next/package.json b/packages/next/package.json index 40a09728e..b3b5e1863 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -27,7 +27,7 @@ "clean": "tsc --build --clean && rm -rf dist" }, "dependencies": { - "@swc/core": "1.11.24", + "@swc/core": "catalog:", "@workflow/builders": "workspace:*", "@workflow/core": "workspace:*", "@workflow/swc-plugin": "workspace:*", diff --git a/packages/nitro/package.json b/packages/nitro/package.json index e38ce828c..b54688b13 100644 --- a/packages/nitro/package.json +++ b/packages/nitro/package.json @@ -26,7 +26,7 @@ "clean": "tsc --build --clean && rm -rf dist" }, "dependencies": { - "@swc/core": "1.11.24", + "@swc/core": "catalog:", "@workflow/swc-plugin": "workspace:*", "@workflow/builders": "workspace:*", "@workflow/core": "workspace:*", diff --git a/packages/rollup/package.json b/packages/rollup/package.json index 561a6de28..a95884117 100644 --- a/packages/rollup/package.json +++ b/packages/rollup/package.json @@ -25,7 +25,7 @@ "clean": "tsc --build --clean && rm -rf dist" }, "dependencies": { - "@swc/core": "1.11.24", + "@swc/core": "catalog:", "@workflow/swc-plugin": "workspace:*", "exsolve": "1.0.7" }, diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index ccf9bd33c..aebac1867 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -25,7 +25,7 @@ "clean": "tsc --build --clean && rm -rf dist" }, "dependencies": { - "@swc/core": "1.11.24", + "@swc/core": "catalog:", "@workflow/builders": "workspace:*", "@workflow/swc-plugin": "workspace:*", "@workflow/rollup": "workspace:*", diff --git a/packages/swc-plugin-workflow/package.json b/packages/swc-plugin-workflow/package.json index ef8259dca..48dba6aea 100644 --- a/packages/swc-plugin-workflow/package.json +++ b/packages/swc-plugin-workflow/package.json @@ -20,7 +20,7 @@ ".": "./swc_plugin_workflow.wasm" }, "peerDependencies": { - "@swc/core": "1.11.24" + "@swc/core": "catalog:" }, "keywords": [ "swc-plugin" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6f018a831..56f50b79f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,6 +9,9 @@ catalogs: '@biomejs/biome': specifier: ^2.2.7 version: 2.3.3 + '@swc/core': + specifier: 1.11.24 + version: 1.11.24 '@types/node': specifier: 22.19.0 version: 22.19.0 @@ -317,7 +320,7 @@ importers: packages/builders: dependencies: '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 '@workflow/core': specifier: workspace:* @@ -366,7 +369,7 @@ importers: specifier: 6.2.31 version: 6.2.31(typescript@5.9.3) '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 '@workflow/builders': specifier: workspace:* @@ -549,7 +552,7 @@ importers: packages/next: dependencies: '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 '@workflow/builders': specifier: workspace:* @@ -586,7 +589,7 @@ importers: packages/nitro: dependencies: '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 '@workflow/builders': specifier: workspace:* @@ -648,7 +651,7 @@ importers: packages/rollup: dependencies: '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 '@workflow/swc-plugin': specifier: workspace:* @@ -670,7 +673,7 @@ importers: packages/sveltekit: dependencies: '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 '@workflow/builders': specifier: workspace:* @@ -707,7 +710,7 @@ importers: packages/swc-plugin-workflow: dependencies: '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 packages/tsconfig: {} @@ -1474,7 +1477,7 @@ importers: specifier: ^6.1.1 version: 6.1.1(@sveltejs/kit@2.48.4(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.43.3)(vite@7.1.12(@types/node@24.6.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.43.3)(vite@7.1.12(@types/node@24.6.2)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(rollup@4.53.2) '@swc/core': - specifier: 1.11.24 + specifier: 'catalog:' version: 1.11.24 '@vercel/otel': specifier: ^1.13.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ceb226aeb..5ab62440f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,13 +4,14 @@ packages: - docs catalog: - '@biomejs/biome': ^2.2.7 - '@types/json-schema': ^7.0.15 - '@types/node': 22.19.0 - '@vercel/functions': ^3.1.4 - '@vercel/oidc': 3.0.5 - '@vercel/queue': 0.0.0-alpha.29 - '@vitest/coverage-v8': ^3.2.4 + "@biomejs/biome": ^2.2.7 + "@swc/core": 1.11.24 + "@types/json-schema": ^7.0.15 + "@types/node": 22.19.0 + "@vercel/functions": ^3.1.4 + "@vercel/oidc": 3.0.5 + "@vercel/queue": 0.0.0-alpha.29 + "@vitest/coverage-v8": ^3.2.4 ai: 5.0.76 esbuild: ^0.25.11 nitro: 3.0.1-alpha.1 @@ -21,4 +22,4 @@ catalog: onlyBuiltDependencies: - esbuild -savePrefix: '' +savePrefix: "" diff --git a/workbench/sveltekit/package.json b/workbench/sveltekit/package.json index 74af9740a..f2488a44c 100644 --- a/workbench/sveltekit/package.json +++ b/workbench/sveltekit/package.json @@ -30,7 +30,7 @@ "@opentelemetry/api": "^1.9.0", "@sveltejs/adapter-node": "^5.4.0", "@sveltejs/adapter-vercel": "^6.1.1", - "@swc/core": "1.11.24", + "@swc/core": "catalog:", "@vercel/otel": "^1.13.0", "@workflow/ai": "workspace:*", "ai": "catalog:", From aa589916e4bc975dd2be45c0bfb9d5b180439469 Mon Sep 17 00:00:00 2001 From: Adrian Lam Date: Fri, 21 Nov 2025 14:08:29 -0800 Subject: [PATCH 9/9] chore: cleanup and add readme --- packages/rollup/README.md | 4 ++-- packages/workflow/package.json | 1 - packages/workflow/src/rollup.ts | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 packages/workflow/src/rollup.ts diff --git a/packages/rollup/README.md b/packages/rollup/README.md index 333e7b976..bf911a2a7 100644 --- a/packages/rollup/README.md +++ b/packages/rollup/README.md @@ -1,3 +1,3 @@ -# workflow/nitro +# @workflow/rollup -The docs have moved! Refer to them [here](https://useworkflow.dev/) +Rollup plugin for the Workflow DevKit. diff --git a/packages/workflow/package.json b/packages/workflow/package.json index a87c33d12..9b7a38034 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -41,7 +41,6 @@ "./nitro": "./dist/nitro.js", "./nuxt": "./dist/nuxt.js", "./sveltekit": "./dist/sveltekit.js", - "./rollup": "./dist/rollup.js", "./vite": "./dist/vite.js", "./runtime": "./dist/runtime.js" }, diff --git a/packages/workflow/src/rollup.ts b/packages/workflow/src/rollup.ts deleted file mode 100644 index 30eb08aa4..000000000 --- a/packages/workflow/src/rollup.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '@workflow/rollup';