@mastra/codemod 1.0.0 → 1.0.1
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.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,87 @@
|
|
|
1
1
|
# @mastra/codemod
|
|
2
2
|
|
|
3
|
+
## 1.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- dependencies updates: ([#11584](https://github.com/mastra-ai/mastra/pull/11584))
|
|
8
|
+
- Updated dependency [`@clack/prompts@1.0.0-alpha.9` ↗︎](https://www.npmjs.com/package/@clack/prompts/v/1.0.0) (from `1.0.0-alpha.6`, in `dependencies`)
|
|
9
|
+
|
|
10
|
+
- Added `workflow-get-init-data` codemod that transforms `getInitData()` calls to `getInitData<any>()`. ([#12212](https://github.com/mastra-ai/mastra/pull/12212))
|
|
11
|
+
|
|
12
|
+
This codemod helps migrate code after the `getInitData` return type changed from `any` to `unknown`. Adding the explicit `<any>` type parameter restores the previous behavior while maintaining type safety.
|
|
13
|
+
|
|
14
|
+
**Usage:**
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npx @mastra/codemod@latest v1/workflow-get-init-data .
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Before:**
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
createStep({
|
|
24
|
+
execute: async ({ getInitData }) => {
|
|
25
|
+
const initData = getInitData();
|
|
26
|
+
if (initData.key === 'value') {
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**After:**
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
createStep({
|
|
36
|
+
execute: async ({ getInitData }) => {
|
|
37
|
+
const initData = getInitData<any>();
|
|
38
|
+
if (initData.key === 'value') {
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 1.0.1-alpha.0
|
|
45
|
+
|
|
46
|
+
### Patch Changes
|
|
47
|
+
|
|
48
|
+
- dependencies updates: ([#11584](https://github.com/mastra-ai/mastra/pull/11584))
|
|
49
|
+
- Updated dependency [`@clack/prompts@1.0.0-alpha.9` ↗︎](https://www.npmjs.com/package/@clack/prompts/v/1.0.0) (from `1.0.0-alpha.6`, in `dependencies`)
|
|
50
|
+
|
|
51
|
+
- Added `workflow-get-init-data` codemod that transforms `getInitData()` calls to `getInitData<any>()`. ([#12212](https://github.com/mastra-ai/mastra/pull/12212))
|
|
52
|
+
|
|
53
|
+
This codemod helps migrate code after the `getInitData` return type changed from `any` to `unknown`. Adding the explicit `<any>` type parameter restores the previous behavior while maintaining type safety.
|
|
54
|
+
|
|
55
|
+
**Usage:**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx @mastra/codemod@latest v1/workflow-get-init-data .
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Before:**
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
createStep({
|
|
65
|
+
execute: async ({ getInitData }) => {
|
|
66
|
+
const initData = getInitData();
|
|
67
|
+
if (initData.key === 'value') {
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**After:**
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
createStep({
|
|
77
|
+
execute: async ({ getInitData }) => {
|
|
78
|
+
const initData = getInitData<any>();
|
|
79
|
+
if (initData.key === 'value') {
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
3
85
|
## 1.0.0
|
|
4
86
|
|
|
5
87
|
### Major Changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createTransformer
|
|
3
|
+
} from "../chunk-JNFQ6J6B.js";
|
|
4
|
+
|
|
5
|
+
// src/codemods/v1/workflow-get-init-data.ts
|
|
6
|
+
var workflow_get_init_data_default = createTransformer((fileInfo, api, options, context) => {
|
|
7
|
+
const { j, root } = context;
|
|
8
|
+
root.find(j.CallExpression, {
|
|
9
|
+
callee: {
|
|
10
|
+
type: "Identifier",
|
|
11
|
+
name: "getInitData"
|
|
12
|
+
}
|
|
13
|
+
}).forEach((path) => {
|
|
14
|
+
const callExpr = path.value;
|
|
15
|
+
if (callExpr.typeArguments) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const anyType = j.tsTypeReference(j.identifier("any"));
|
|
19
|
+
const typeParameterInstantiation = j.tsTypeParameterInstantiation([anyType]);
|
|
20
|
+
callExpr.typeArguments = typeParameterInstantiation;
|
|
21
|
+
context.hasChanges = true;
|
|
22
|
+
});
|
|
23
|
+
if (context.hasChanges) {
|
|
24
|
+
context.messages.push("Transformed getInitData() calls to getInitData<any>()");
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
export {
|
|
28
|
+
workflow_get_init_data_default as default
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=workflow-get-init-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/codemods/v1/workflow-get-init-data.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Transforms getInitData() calls to getInitData<any>() to add explicit type parameter.\n * This ensures type safety when accessing the initial workflow data.\n *\n * Before:\n * createStep({\n * execute: async ({ getInitData }) => {\n * const initData = getInitData();\n * if (initData.key === 'value') {}\n * },\n * });\n *\n * After:\n * createStep({\n * execute: async ({ getInitData }) => {\n * const initData = getInitData<any>();\n * if (initData.key === 'value') {}\n * },\n * });\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Find all call expressions where the callee is 'getInitData'\n root\n .find(j.CallExpression, {\n callee: {\n type: 'Identifier',\n name: 'getInitData',\n },\n })\n .forEach(path => {\n const callExpr = path.value;\n // Skip if already has type arguments\n if (callExpr.typeArguments) {\n return;\n }\n\n // Create the type argument <any>\n const anyType = j.tsTypeReference(j.identifier('any'));\n const typeParameterInstantiation = j.tsTypeParameterInstantiation([anyType]);\n\n // Add type arguments to the call expression\n // @ts-expect-error - jscodeshift's type system is not compatible with the type arguments we're adding\n callExpr.typeArguments = typeParameterInstantiation;\n\n context.hasChanges = true;\n });\n\n if (context.hasChanges) {\n context.messages.push('Transformed getInitData() calls to getInitData<any>()');\n }\n});\n"],"mappings":";;;;;AAsBA,IAAO,iCAAQ,kBAAkB,CAAC,UAAU,KAAK,SAAS,YAAY;AACpE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,OACG,KAAK,EAAE,gBAAgB;AAAA,IACtB,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF,CAAC,EACA,QAAQ,UAAQ;AACf,UAAM,WAAW,KAAK;AAEtB,QAAI,SAAS,eAAe;AAC1B;AAAA,IACF;AAGA,UAAM,UAAU,EAAE,gBAAgB,EAAE,WAAW,KAAK,CAAC;AACrD,UAAM,6BAA6B,EAAE,6BAA6B,CAAC,OAAO,CAAC;AAI3E,aAAS,gBAAgB;AAEzB,YAAQ,aAAa;AAAA,EACvB,CAAC;AAEH,MAAI,QAAQ,YAAY;AACtB,YAAQ,SAAS,KAAK,uDAAuD;AAAA,EAC/E;AACF,CAAC;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -11,10 +11,10 @@ import { intro, spinner, outro } from '@clack/prompts';
|
|
|
11
11
|
var exec = util.promisify(child_process.exec);
|
|
12
12
|
var log = debug("codemod:transform");
|
|
13
13
|
var error = debug("codemod:transform:error");
|
|
14
|
-
var __filename = fileURLToPath(import.meta.url);
|
|
15
|
-
var __dirname = path.dirname(__filename);
|
|
14
|
+
var __filename$1 = fileURLToPath(import.meta.url);
|
|
15
|
+
var __dirname$1 = path.dirname(__filename$1);
|
|
16
16
|
function getJscodeshift() {
|
|
17
|
-
const localJscodeshift = path.resolve(__dirname, "../node_modules/.bin/jscodeshift");
|
|
17
|
+
const localJscodeshift = path.resolve(__dirname$1, "../node_modules/.bin/jscodeshift");
|
|
18
18
|
return fs.existsSync(localJscodeshift) ? localJscodeshift : "jscodeshift";
|
|
19
19
|
}
|
|
20
20
|
function buildCommand(codemodPath, targetPath, jscodeshift, options) {
|
|
@@ -63,7 +63,7 @@ async function transform(codemod, source, transformOptions, options = { logStatu
|
|
|
63
63
|
if (options.logStatus) {
|
|
64
64
|
log(`Applying codemod '${codemod}': ${source}`);
|
|
65
65
|
}
|
|
66
|
-
const codemodPath = path.resolve(__dirname, `./codemods/${codemod}.js`);
|
|
66
|
+
const codemodPath = path.resolve(__dirname$1, `./codemods/${codemod}.js`);
|
|
67
67
|
const targetPath = path.resolve(source);
|
|
68
68
|
const jscodeshift = getJscodeshift();
|
|
69
69
|
const command = buildCommand(codemodPath, targetPath, jscodeshift, transformOptions);
|
|
@@ -116,6 +116,7 @@ var BUNDLE = [
|
|
|
116
116
|
"v1/workflow-run-count",
|
|
117
117
|
"v1/workflow-list-runs",
|
|
118
118
|
"v1/workflow-stream-vnext",
|
|
119
|
+
"v1/workflow-get-init-data",
|
|
119
120
|
"v1/memory-query-to-recall",
|
|
120
121
|
"v1/memory-vector-search-param",
|
|
121
122
|
"v1/memory-message-v2-type",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/transform.ts","../src/lib/bundle.ts","../src/lib/upgrade.ts","../src/index.ts"],"names":["transform","log","debug","error"],"mappings":"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","file":"index.js","sourcesContent":["import child_process from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport util from 'node:util';\nimport debug from 'debug';\n\nconst exec = util.promisify(child_process.exec);\n\ninterface TransformOptions {\n dry?: boolean;\n print?: boolean;\n verbose?: boolean;\n jscodeshift?: string;\n}\n\nconst log = debug('codemod:transform');\nconst error = debug('codemod:transform:error');\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nfunction getJscodeshift(): string {\n const localJscodeshift = path.resolve(__dirname, '../node_modules/.bin/jscodeshift');\n return fs.existsSync(localJscodeshift) ? localJscodeshift : 'jscodeshift';\n}\n\nfunction buildCommand(codemodPath: string, targetPath: string, jscodeshift: string, options: TransformOptions): string {\n // Ignoring everything under `.*/` covers `.mastra/` along with any other\n // framework build related or otherwise intended-to-be-hidden directories.\n let command = `${jscodeshift} -t ${codemodPath} ${targetPath} \\\n --parser tsx \\\n --ignore-pattern=\"**/node_modules/**\" \\\n --ignore-pattern=\"**/.*/**\" \\\n --ignore-pattern=\"**/dist/**\" \\\n --ignore-pattern=\"**/build/**\" \\\n --ignore-pattern=\"**/*.min.js\" \\\n --ignore-pattern=\"**/*.bundle.js\"`;\n\n if (options.dry) {\n command += ' --dry';\n }\n\n if (options.print) {\n command += ' --print';\n }\n\n if (options.verbose) {\n command += ' --verbose';\n }\n\n if (options.jscodeshift) {\n command += ` ${options.jscodeshift}`;\n }\n\n return command;\n}\n\nexport type TransformErrors = {\n transform: string;\n filename: string;\n summary: string;\n}[];\n\nfunction parseErrors(transform: string, output: string): TransformErrors {\n const errors: TransformErrors = [];\n const errorRegex = /ERR (.+) Transformation error/g;\n const syntaxErrorRegex = /SyntaxError: .+/g;\n\n let match;\n while ((match = errorRegex.exec(output)) !== null) {\n const filename = match[1]!;\n const syntaxErrorMatch = syntaxErrorRegex.exec(output);\n if (syntaxErrorMatch) {\n const summary = syntaxErrorMatch[0];\n errors.push({ transform, filename, summary });\n }\n }\n\n return errors;\n}\n\nfunction parseNotImplementedErrors(transform: string, output: string): TransformErrors {\n const notImplementedErrors: TransformErrors = [];\n const notImplementedRegex = /Not Implemented (.+): (.+)/g;\n\n let match;\n while ((match = notImplementedRegex.exec(output)) !== null) {\n const filename = match[1]!;\n const summary = match[2]!;\n notImplementedErrors.push({ transform, filename, summary });\n }\n\n return notImplementedErrors;\n}\n\nexport async function transform(\n codemod: string,\n source: string,\n transformOptions: TransformOptions,\n options: { logStatus: boolean } = { logStatus: true },\n): Promise<{ errors: TransformErrors; notImplementedErrors: TransformErrors }> {\n if (options.logStatus) {\n log(`Applying codemod '${codemod}': ${source}`);\n }\n const codemodPath = path.resolve(__dirname, `./codemods/${codemod}.js`);\n const targetPath = path.resolve(source);\n const jscodeshift = getJscodeshift();\n const command = buildCommand(codemodPath, targetPath, jscodeshift, transformOptions);\n const { stdout } = await exec(command, { encoding: 'utf8' });\n const errors = parseErrors(codemod, stdout);\n const notImplementedErrors = parseNotImplementedErrors(codemod, stdout);\n if (options.logStatus) {\n if (errors.length > 0) {\n errors.forEach(({ transform, filename, summary }) => {\n error(`Error applying codemod [codemod=${transform}, path=${filename}, summary=${summary}]`);\n });\n }\n\n if (notImplementedErrors.length > 0) {\n log(\n `Some files require manual changes. Please search your codebase for \\`FIXME(mastra): \\` comments and follow the instructions to complete the upgrade.`,\n );\n notImplementedErrors.forEach(({ transform, filename, summary }) => {\n log(`Not Implemented [codemod=${transform}, path=${filename}, summary=${summary}]`);\n });\n }\n }\n\n return { errors, notImplementedErrors };\n}\n","// List of all codemods\nexport const BUNDLE = [\n 'v1/mastra-core-imports',\n 'v1/runtime-context',\n 'v1/mastra-plural-apis',\n 'v1/not-implemented/mastra-required-id',\n 'v1/agent-property-access',\n 'v1/agent-voice',\n 'v1/agent-processor-methods',\n 'v1/agent-generate-stream-v-next',\n 'v1/agent-abort-signal',\n 'v1/not-implemented/agent-format-parameter',\n 'v1/not-implemented/agent-to-step',\n 'v1/voice-property-names',\n 'v1/mcp-get-tools',\n 'v1/mcp-get-toolsets',\n 'v1/client-sdk-types',\n 'v1/client-to-ai-sdk-format',\n 'v1/client-offset-limit',\n 'v1/client-get-memory-thread',\n 'v1/experimental-auth',\n 'v1/evals-run-experiment',\n 'v1/evals-scorer-by-name',\n 'v1/evals-prebuilt-imports',\n 'v1/workflow-create-run-async',\n 'v1/workflow-run-count',\n 'v1/workflow-list-runs',\n 'v1/workflow-stream-vnext',\n 'v1/memory-query-to-recall',\n 'v1/memory-vector-search-param',\n 'v1/memory-message-v2-type',\n 'v1/memory-readonly-to-options',\n 'v1/storage-get-threads-by-resource',\n 'v1/storage-list-messages-by-id',\n 'v1/storage-postgres-schema-name',\n 'v1/storage-get-messages-paginated',\n 'v1/storage-list-workflow-runs',\n 'v1/storage-list-threads-by-resource-to-list-threads',\n 'v1/vector-pg-constructor',\n 'v1/client-msg-function-args',\n];\n","import { spinner, intro, outro } from '@clack/prompts';\nimport debug from 'debug';\nimport { BUNDLE } from './bundle';\nimport type { TransformErrors } from './transform';\nimport { transform } from './transform';\n\ninterface TransformOptions {\n dry?: true;\n print?: true;\n verbose?: true;\n jscodeshift?: string;\n}\n\nconst log = debug('codemod:upgrade');\nconst error = debug('codemod:upgrade:error');\n\n// Extract v1 codemods from the bundle\nconst v1Bundle = BUNDLE.filter(codemod => codemod.startsWith('v1/'));\n\nasync function runCodemods(codemods: string[], options: TransformOptions, versionLabel: string) {\n const cwd = process.cwd();\n intro(`Starting ${versionLabel} codemods`);\n const modCount = codemods.length;\n const s = spinner();\n\n s.start(`Running ${modCount} ${versionLabel} codemods`);\n\n const allErrors: TransformErrors = [];\n let notImplementedAvailable = false;\n let count = 0;\n for (const [_, codemod] of codemods.entries()) {\n const { errors, notImplementedErrors } = await transform(codemod, cwd, options, {\n logStatus: false,\n });\n allErrors.push(...errors);\n if (notImplementedErrors.length > 0) {\n notImplementedAvailable = true;\n }\n count++;\n s.message(`Codemod ${count}/${modCount} (${codemod})`);\n }\n s.stop(`Ran ${count}/${modCount} codemods.`);\n\n if (allErrors.length > 0) {\n log(`Some ${versionLabel} codemods did not apply successfully to all files. Details:`);\n allErrors.forEach(({ transform, filename, summary }) => {\n error(`codemod=${transform}, path=${filename}, summary=${summary}`);\n });\n }\n\n if (notImplementedAvailable) {\n log(\n `Some ${versionLabel} codemods require manual changes. Please search your codebase for \\`FIXME(mastra): \\` comments and follow the instructions to complete the upgrade.`,\n );\n }\n\n outro(`${versionLabel} codemods complete.`);\n}\n\nexport async function upgradeV1(options: TransformOptions) {\n await runCodemods(v1Bundle, options, 'v1');\n}\n","#! /usr/bin/env node\n\nimport { Command } from 'commander';\nimport debug from 'debug';\nimport { transform } from './lib/transform';\nimport { upgradeV1 } from './lib/upgrade';\n\nconst error = debug('codemod:error');\ndebug.enable('codemod:*');\n\nconst program = new Command();\n\nprogram\n .name('codemod')\n .description('CLI for running Mastra codemods')\n .argument('<codemod>', 'Codemod to run')\n .argument('<source>', 'Path to source files or directory')\n .option('-d, --dry', 'Dry run (no changes are made to files)')\n .option('-p, --print', 'Print transformed files to stdout')\n .option('--verbose', 'Show more information about the transform process')\n .option('-j, --jscodeshift <options>', 'Pass options directly to jscodeshift')\n .action(async (codemod, source, options) => {\n try {\n await transform(codemod, source, options);\n } catch (err: any) {\n error(`Error transforming: ${err}`);\n process.exit(1);\n }\n });\n\nprogram\n .command('v1')\n .description('Apply all v1 codemods (v0.x to v1)')\n .option('-d, --dry', 'Dry run (no changes are made to files)')\n .option('-p, --print', 'Print transformed files to stdout')\n .option('--verbose', 'Show more information about the transform process')\n .option('-j, --jscodeshift <options>', 'Pass options directly to jscodeshift')\n .action(async options => {\n try {\n await upgradeV1(options);\n } catch (err: any) {\n error(`Error transforming: ${err}`);\n process.exit(1);\n }\n });\n\nprogram.parse(process.argv);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/transform.ts","../src/lib/bundle.ts","../src/lib/upgrade.ts","../src/index.ts"],"names":["__filename","__dirname","transform","log","debug","error"],"mappings":"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","file":"index.js","sourcesContent":["import child_process from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport util from 'node:util';\nimport debug from 'debug';\n\nconst exec = util.promisify(child_process.exec);\n\ninterface TransformOptions {\n dry?: boolean;\n print?: boolean;\n verbose?: boolean;\n jscodeshift?: string;\n}\n\nconst log = debug('codemod:transform');\nconst error = debug('codemod:transform:error');\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nfunction getJscodeshift(): string {\n const localJscodeshift = path.resolve(__dirname, '../node_modules/.bin/jscodeshift');\n return fs.existsSync(localJscodeshift) ? localJscodeshift : 'jscodeshift';\n}\n\nfunction buildCommand(codemodPath: string, targetPath: string, jscodeshift: string, options: TransformOptions): string {\n // Ignoring everything under `.*/` covers `.mastra/` along with any other\n // framework build related or otherwise intended-to-be-hidden directories.\n let command = `${jscodeshift} -t ${codemodPath} ${targetPath} \\\n --parser tsx \\\n --ignore-pattern=\"**/node_modules/**\" \\\n --ignore-pattern=\"**/.*/**\" \\\n --ignore-pattern=\"**/dist/**\" \\\n --ignore-pattern=\"**/build/**\" \\\n --ignore-pattern=\"**/*.min.js\" \\\n --ignore-pattern=\"**/*.bundle.js\"`;\n\n if (options.dry) {\n command += ' --dry';\n }\n\n if (options.print) {\n command += ' --print';\n }\n\n if (options.verbose) {\n command += ' --verbose';\n }\n\n if (options.jscodeshift) {\n command += ` ${options.jscodeshift}`;\n }\n\n return command;\n}\n\nexport type TransformErrors = {\n transform: string;\n filename: string;\n summary: string;\n}[];\n\nfunction parseErrors(transform: string, output: string): TransformErrors {\n const errors: TransformErrors = [];\n const errorRegex = /ERR (.+) Transformation error/g;\n const syntaxErrorRegex = /SyntaxError: .+/g;\n\n let match;\n while ((match = errorRegex.exec(output)) !== null) {\n const filename = match[1]!;\n const syntaxErrorMatch = syntaxErrorRegex.exec(output);\n if (syntaxErrorMatch) {\n const summary = syntaxErrorMatch[0];\n errors.push({ transform, filename, summary });\n }\n }\n\n return errors;\n}\n\nfunction parseNotImplementedErrors(transform: string, output: string): TransformErrors {\n const notImplementedErrors: TransformErrors = [];\n const notImplementedRegex = /Not Implemented (.+): (.+)/g;\n\n let match;\n while ((match = notImplementedRegex.exec(output)) !== null) {\n const filename = match[1]!;\n const summary = match[2]!;\n notImplementedErrors.push({ transform, filename, summary });\n }\n\n return notImplementedErrors;\n}\n\nexport async function transform(\n codemod: string,\n source: string,\n transformOptions: TransformOptions,\n options: { logStatus: boolean } = { logStatus: true },\n): Promise<{ errors: TransformErrors; notImplementedErrors: TransformErrors }> {\n if (options.logStatus) {\n log(`Applying codemod '${codemod}': ${source}`);\n }\n const codemodPath = path.resolve(__dirname, `./codemods/${codemod}.js`);\n const targetPath = path.resolve(source);\n const jscodeshift = getJscodeshift();\n const command = buildCommand(codemodPath, targetPath, jscodeshift, transformOptions);\n const { stdout } = await exec(command, { encoding: 'utf8' });\n const errors = parseErrors(codemod, stdout);\n const notImplementedErrors = parseNotImplementedErrors(codemod, stdout);\n if (options.logStatus) {\n if (errors.length > 0) {\n errors.forEach(({ transform, filename, summary }) => {\n error(`Error applying codemod [codemod=${transform}, path=${filename}, summary=${summary}]`);\n });\n }\n\n if (notImplementedErrors.length > 0) {\n log(\n `Some files require manual changes. Please search your codebase for \\`FIXME(mastra): \\` comments and follow the instructions to complete the upgrade.`,\n );\n notImplementedErrors.forEach(({ transform, filename, summary }) => {\n log(`Not Implemented [codemod=${transform}, path=${filename}, summary=${summary}]`);\n });\n }\n }\n\n return { errors, notImplementedErrors };\n}\n","// List of all codemods\nexport const BUNDLE = [\n 'v1/mastra-core-imports',\n 'v1/runtime-context',\n 'v1/mastra-plural-apis',\n 'v1/not-implemented/mastra-required-id',\n 'v1/agent-property-access',\n 'v1/agent-voice',\n 'v1/agent-processor-methods',\n 'v1/agent-generate-stream-v-next',\n 'v1/agent-abort-signal',\n 'v1/not-implemented/agent-format-parameter',\n 'v1/not-implemented/agent-to-step',\n 'v1/voice-property-names',\n 'v1/mcp-get-tools',\n 'v1/mcp-get-toolsets',\n 'v1/client-sdk-types',\n 'v1/client-to-ai-sdk-format',\n 'v1/client-offset-limit',\n 'v1/client-get-memory-thread',\n 'v1/experimental-auth',\n 'v1/evals-run-experiment',\n 'v1/evals-scorer-by-name',\n 'v1/evals-prebuilt-imports',\n 'v1/workflow-create-run-async',\n 'v1/workflow-run-count',\n 'v1/workflow-list-runs',\n 'v1/workflow-stream-vnext',\n 'v1/workflow-get-init-data',\n 'v1/memory-query-to-recall',\n 'v1/memory-vector-search-param',\n 'v1/memory-message-v2-type',\n 'v1/memory-readonly-to-options',\n 'v1/storage-get-threads-by-resource',\n 'v1/storage-list-messages-by-id',\n 'v1/storage-postgres-schema-name',\n 'v1/storage-get-messages-paginated',\n 'v1/storage-list-workflow-runs',\n 'v1/storage-list-threads-by-resource-to-list-threads',\n 'v1/vector-pg-constructor',\n 'v1/client-msg-function-args',\n];\n","import { spinner, intro, outro } from '@clack/prompts';\nimport debug from 'debug';\nimport { BUNDLE } from './bundle';\nimport type { TransformErrors } from './transform';\nimport { transform } from './transform';\n\ninterface TransformOptions {\n dry?: true;\n print?: true;\n verbose?: true;\n jscodeshift?: string;\n}\n\nconst log = debug('codemod:upgrade');\nconst error = debug('codemod:upgrade:error');\n\n// Extract v1 codemods from the bundle\nconst v1Bundle = BUNDLE.filter(codemod => codemod.startsWith('v1/'));\n\nasync function runCodemods(codemods: string[], options: TransformOptions, versionLabel: string) {\n const cwd = process.cwd();\n intro(`Starting ${versionLabel} codemods`);\n const modCount = codemods.length;\n const s = spinner();\n\n s.start(`Running ${modCount} ${versionLabel} codemods`);\n\n const allErrors: TransformErrors = [];\n let notImplementedAvailable = false;\n let count = 0;\n for (const [_, codemod] of codemods.entries()) {\n const { errors, notImplementedErrors } = await transform(codemod, cwd, options, {\n logStatus: false,\n });\n allErrors.push(...errors);\n if (notImplementedErrors.length > 0) {\n notImplementedAvailable = true;\n }\n count++;\n s.message(`Codemod ${count}/${modCount} (${codemod})`);\n }\n s.stop(`Ran ${count}/${modCount} codemods.`);\n\n if (allErrors.length > 0) {\n log(`Some ${versionLabel} codemods did not apply successfully to all files. Details:`);\n allErrors.forEach(({ transform, filename, summary }) => {\n error(`codemod=${transform}, path=${filename}, summary=${summary}`);\n });\n }\n\n if (notImplementedAvailable) {\n log(\n `Some ${versionLabel} codemods require manual changes. Please search your codebase for \\`FIXME(mastra): \\` comments and follow the instructions to complete the upgrade.`,\n );\n }\n\n outro(`${versionLabel} codemods complete.`);\n}\n\nexport async function upgradeV1(options: TransformOptions) {\n await runCodemods(v1Bundle, options, 'v1');\n}\n","#! /usr/bin/env node\n\nimport { Command } from 'commander';\nimport debug from 'debug';\nimport { transform } from './lib/transform';\nimport { upgradeV1 } from './lib/upgrade';\n\nconst error = debug('codemod:error');\ndebug.enable('codemod:*');\n\nconst program = new Command();\n\nprogram\n .name('codemod')\n .description('CLI for running Mastra codemods')\n .argument('<codemod>', 'Codemod to run')\n .argument('<source>', 'Path to source files or directory')\n .option('-d, --dry', 'Dry run (no changes are made to files)')\n .option('-p, --print', 'Print transformed files to stdout')\n .option('--verbose', 'Show more information about the transform process')\n .option('-j, --jscodeshift <options>', 'Pass options directly to jscodeshift')\n .action(async (codemod, source, options) => {\n try {\n await transform(codemod, source, options);\n } catch (err: any) {\n error(`Error transforming: ${err}`);\n process.exit(1);\n }\n });\n\nprogram\n .command('v1')\n .description('Apply all v1 codemods (v0.x to v1)')\n .option('-d, --dry', 'Dry run (no changes are made to files)')\n .option('-p, --print', 'Print transformed files to stdout')\n .option('--verbose', 'Show more information about the transform process')\n .option('-j, --jscodeshift <options>', 'Pass options directly to jscodeshift')\n .action(async options => {\n try {\n await upgradeV1(options);\n } catch (err: any) {\n error(`Error transforming: ${err}`);\n process.exit(1);\n }\n });\n\nprogram.parse(process.argv);\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/codemod",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"description": "Codemod CLI for Mastra",
|
|
7
7
|
"bin": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"codemod"
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@clack/prompts": "1.0.0-alpha.
|
|
21
|
+
"@clack/prompts": "1.0.0-alpha.9",
|
|
22
22
|
"commander": "^14.0.2",
|
|
23
23
|
"debug": "^4.4.3",
|
|
24
24
|
"jscodeshift": "^17.3.0"
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"@commander-js/extra-typings": "^14.0.0",
|
|
28
28
|
"@types/debug": "^4.1.12",
|
|
29
29
|
"@types/jscodeshift": "^17.3.0",
|
|
30
|
-
"@types/node": "22.
|
|
30
|
+
"@types/node": "22.19.7",
|
|
31
31
|
"@vitest/coverage-v8": "4.0.12",
|
|
32
32
|
"@vitest/ui": "4.0.12",
|
|
33
33
|
"eslint": "^9.37.0",
|
|
34
|
-
"tsup": "^8.5.
|
|
34
|
+
"tsup": "^8.5.1",
|
|
35
35
|
"typescript": "^5.9.3",
|
|
36
36
|
"vitest": "4.0.16",
|
|
37
|
-
"@internal/lint": "0.0.
|
|
37
|
+
"@internal/lint": "0.0.56"
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://mastra.ai",
|
|
40
40
|
"repository": {
|