+2
-3
| import fsp from 'node:fs/promises'; | ||
| import { fileURLToPath } from 'node:url'; | ||
| import consola from 'consola'; | ||
| import createJiti from 'jiti'; | ||
| import { createJiti } from 'jiti'; | ||
| import { resolve, dirname, basename, join, extname } from 'pathe'; | ||
@@ -117,3 +117,2 @@ import { filename } from 'pathe/utils'; | ||
| const jiti = createJiti(actionDir, { | ||
| interopDefault: true, | ||
| alias: { | ||
@@ -124,3 +123,3 @@ codeup: join(_pkgDir, "dist/index.mjs"), | ||
| }); | ||
| const action = jiti(_path); | ||
| const action = await jiti.import(_path, { default: true }); | ||
| if (!action || typeof action.apply !== "function") { | ||
@@ -127,0 +126,0 @@ throw new Error( |
+1
-0
@@ -16,2 +16,3 @@ #!/usr/bin/env node | ||
| import 'pkg-types'; | ||
| import 'confbox'; | ||
| import 'nypm'; | ||
@@ -18,0 +19,0 @@ |
+23
-8
@@ -7,2 +7,3 @@ import { AsyncLocalStorage } from 'node:async_hooks'; | ||
| import { findFile } from 'pkg-types'; | ||
| import { parseJSON, stringifyJSON } from 'confbox'; | ||
| import * as nypm from 'nypm'; | ||
@@ -104,6 +105,6 @@ | ||
| const contents = await read(path); | ||
| return contents ? JSON.parse(contents) : void 0; | ||
| return contents ? parseJSON(contents) : void 0; | ||
| } | ||
| async function writeJSON(path, json, opts) { | ||
| await write(path, JSON.stringify(json, void 0, 2), opts); | ||
| await write(path, stringifyJSON(json), opts); | ||
| } | ||
@@ -113,5 +114,8 @@ async function updateJSON(path, updater) { | ||
| await update(path, async (existing) => { | ||
| const json = JSON.parse(existing || "{}"); | ||
| const json = parseJSON(existing || `{ | ||
| } | ||
| `); | ||
| updated = await updater(json) || json; | ||
| return JSON.stringify(updated, void 0, 2); | ||
| return stringifyJSON(updated); | ||
| }); | ||
@@ -169,8 +173,12 @@ return updated; | ||
| } | ||
| async function runScript(name) { | ||
| async function detectPackageManager() { | ||
| const context = useContext(); | ||
| const pkgManager = await nypm.detectPackageManager(context.cwd); | ||
| return await nypm.detectPackageManager(context.cwd); | ||
| } | ||
| async function runPackageManagerCommand(command, opts) { | ||
| const context = useContext(); | ||
| const pkgManager = await detectPackageManager(); | ||
| try { | ||
| const { execa } = await import('execa'); | ||
| await execa(pkgManager?.name || "npm", ["run", ...name.split(" ")], { | ||
| await execa(pkgManager?.name || "npm", command.split(" "), { | ||
| cwd: useContext().cwd, | ||
@@ -180,5 +188,10 @@ stdio: "inherit" | ||
| } catch (error) { | ||
| context.logger.error(error); | ||
| if (!opts?.ignoreErrors) { | ||
| context.logger.error(error); | ||
| } | ||
| } | ||
| } | ||
| async function runScript(script) { | ||
| await runPackageManagerCommand(`run ${script}`); | ||
| } | ||
@@ -189,4 +202,6 @@ const _pkg = { | ||
| addDevDependency: addDevDependency, | ||
| detectPackageManager: detectPackageManager, | ||
| readPackageJSON: readPackageJSON, | ||
| removeDependency: removeDependency, | ||
| runPackageManagerCommand: runPackageManagerCommand, | ||
| runScript: runScript, | ||
@@ -193,0 +208,0 @@ updatePackageJSON: updatePackageJSON |
@@ -5,3 +5,3 @@ #!/usr/bin/env node | ||
| const name = "codeup"; | ||
| const version = "0.0.4"; | ||
| const version = "0.0.5"; | ||
| const description = "Automated Codebase Maintainer."; | ||
@@ -8,0 +8,0 @@ |
+1
-0
@@ -9,2 +9,3 @@ export { c as createContext, r as runWithContext, u as useContext } from './_context.mjs'; | ||
| import 'pkg-types'; | ||
| import 'confbox'; | ||
| import 'nypm'; | ||
@@ -11,0 +12,0 @@ import 'node:url'; |
+39
-28
| import * as nypm from 'nypm'; | ||
| import * as pkg_types from 'pkg-types'; | ||
| /** | ||
| * Write text contents to a file | ||
| * | ||
| * @group fileSystem | ||
| */ | ||
| declare function write(path: string, contents: string, opts?: { | ||
| skipIfExists?: boolean; | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| declare const utils: Readonly<{ | ||
| readPackageJSON(): Promise<any>; | ||
| updatePackageJSON(fn: (json: pkg_types.PackageJson) => void | pkg_types.PackageJson | Promise<void | pkg_types.PackageJson>): Promise<void>; | ||
| addDependency(name: string | string[], opts?: (nypm.OperationOptions & { | ||
| log?: boolean | undefined; | ||
| }) | undefined): Promise<void>; | ||
| addDevDependency(name: string | string[], opts?: (nypm.OperationOptions & { | ||
| log?: boolean | undefined; | ||
| }) | undefined): Promise<void>; | ||
| removeDependency(name: string, opts?: (nypm.OperationOptions & { | ||
| log?: boolean | undefined; | ||
| }) | undefined): Promise<void>; | ||
| runScript(name: string): Promise<void>; | ||
| readJSON(path: string): Promise<any>; | ||
| writeJSON(path: string, json: Record<string, unknown>, opts?: { | ||
| skipIfExists?: boolean | undefined; | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<void>; | ||
| updateJSON<T extends unknown>(path: string, updater: (json: T) => void | T | Promise<void | T>): Promise<T | undefined>; | ||
| updatePackageJSON(fn: (json: pkg_types.PackageJson) => void | pkg_types.PackageJson | Promise<pkg_types.PackageJson | void>): Promise<void>; | ||
| addDependency(name: string | string[], opts?: nypm.OperationOptions & { | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| addDevDependency(name: string | string[], opts?: Exclude<nypm.OperationOptions, "dev"> & { | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| removeDependency(name: string, opts?: nypm.OperationOptions & { | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| detectPackageManager(): Promise<nypm.PackageManager | undefined>; | ||
| runPackageManagerCommand(command: string, opts?: { | ||
| ignoreErrors?: boolean; | ||
| }): Promise<void>; | ||
| runScript(script: string): Promise<void>; | ||
| readJSON(path: string): Promise<any | undefined>; | ||
| writeJSON(path: string, json: Record<string, unknown>, opts?: Parameters<typeof write>[2]): Promise<void>; | ||
| updateJSON<T extends unknown>(path: string, updater: (json: T) => void | T | Promise<T | void>): Promise<T | undefined>; | ||
| resolve(path: string): string; | ||
| exists(path: string, opts?: { | ||
| withAnyExt?: boolean | undefined; | ||
| } | undefined): Promise<boolean>; | ||
| withAnyExt?: boolean; | ||
| }): Promise<boolean>; | ||
| existsWithAnyExt(path: string): Promise<boolean>; | ||
@@ -31,17 +42,17 @@ read(path: string): Promise<string | undefined>; | ||
| write(path: string, contents: string, opts?: { | ||
| skipIfExists?: boolean | undefined; | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<void>; | ||
| skipIfExists?: boolean; | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| remove(path: string, opts?: { | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<void>; | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| findUp(name: string): Promise<string | undefined>; | ||
| update(path: string, fn: (contents: string) => string | Promise<string>, opts?: { | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<string | undefined>; | ||
| log?: boolean; | ||
| }): Promise<string | undefined>; | ||
| append(path: string, contents: string, opts?: { | ||
| newLine?: boolean | undefined; | ||
| } | undefined): Promise<string | undefined>; | ||
| newLine?: boolean; | ||
| }): Promise<string | undefined>; | ||
| }>; | ||
| export { utils }; |
+39
-28
| import * as nypm from 'nypm'; | ||
| import * as pkg_types from 'pkg-types'; | ||
| /** | ||
| * Write text contents to a file | ||
| * | ||
| * @group fileSystem | ||
| */ | ||
| declare function write(path: string, contents: string, opts?: { | ||
| skipIfExists?: boolean; | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| declare const utils: Readonly<{ | ||
| readPackageJSON(): Promise<any>; | ||
| updatePackageJSON(fn: (json: pkg_types.PackageJson) => void | pkg_types.PackageJson | Promise<void | pkg_types.PackageJson>): Promise<void>; | ||
| addDependency(name: string | string[], opts?: (nypm.OperationOptions & { | ||
| log?: boolean | undefined; | ||
| }) | undefined): Promise<void>; | ||
| addDevDependency(name: string | string[], opts?: (nypm.OperationOptions & { | ||
| log?: boolean | undefined; | ||
| }) | undefined): Promise<void>; | ||
| removeDependency(name: string, opts?: (nypm.OperationOptions & { | ||
| log?: boolean | undefined; | ||
| }) | undefined): Promise<void>; | ||
| runScript(name: string): Promise<void>; | ||
| readJSON(path: string): Promise<any>; | ||
| writeJSON(path: string, json: Record<string, unknown>, opts?: { | ||
| skipIfExists?: boolean | undefined; | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<void>; | ||
| updateJSON<T extends unknown>(path: string, updater: (json: T) => void | T | Promise<void | T>): Promise<T | undefined>; | ||
| updatePackageJSON(fn: (json: pkg_types.PackageJson) => void | pkg_types.PackageJson | Promise<pkg_types.PackageJson | void>): Promise<void>; | ||
| addDependency(name: string | string[], opts?: nypm.OperationOptions & { | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| addDevDependency(name: string | string[], opts?: Exclude<nypm.OperationOptions, "dev"> & { | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| removeDependency(name: string, opts?: nypm.OperationOptions & { | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| detectPackageManager(): Promise<nypm.PackageManager | undefined>; | ||
| runPackageManagerCommand(command: string, opts?: { | ||
| ignoreErrors?: boolean; | ||
| }): Promise<void>; | ||
| runScript(script: string): Promise<void>; | ||
| readJSON(path: string): Promise<any | undefined>; | ||
| writeJSON(path: string, json: Record<string, unknown>, opts?: Parameters<typeof write>[2]): Promise<void>; | ||
| updateJSON<T extends unknown>(path: string, updater: (json: T) => void | T | Promise<T | void>): Promise<T | undefined>; | ||
| resolve(path: string): string; | ||
| exists(path: string, opts?: { | ||
| withAnyExt?: boolean | undefined; | ||
| } | undefined): Promise<boolean>; | ||
| withAnyExt?: boolean; | ||
| }): Promise<boolean>; | ||
| existsWithAnyExt(path: string): Promise<boolean>; | ||
@@ -31,17 +42,17 @@ read(path: string): Promise<string | undefined>; | ||
| write(path: string, contents: string, opts?: { | ||
| skipIfExists?: boolean | undefined; | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<void>; | ||
| skipIfExists?: boolean; | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| remove(path: string, opts?: { | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<void>; | ||
| log?: boolean; | ||
| }): Promise<void>; | ||
| findUp(name: string): Promise<string | undefined>; | ||
| update(path: string, fn: (contents: string) => string | Promise<string>, opts?: { | ||
| log?: boolean | undefined; | ||
| } | undefined): Promise<string | undefined>; | ||
| log?: boolean; | ||
| }): Promise<string | undefined>; | ||
| append(path: string, contents: string, opts?: { | ||
| newLine?: boolean | undefined; | ||
| } | undefined): Promise<string | undefined>; | ||
| newLine?: boolean; | ||
| }): Promise<string | undefined>; | ||
| }>; | ||
| export { utils }; |
@@ -8,2 +8,3 @@ export { a as utils } from '../_context.mjs'; | ||
| import 'pkg-types'; | ||
| import 'confbox'; | ||
| import 'nypm'; |
+17
-16
| { | ||
| "name": "codeup", | ||
| "version": "0.0.4", | ||
| "version": "0.0.5", | ||
| "description": "Automated Codebase Maintainer.", | ||
@@ -27,4 +27,4 @@ "repository": "unjs/codeup", | ||
| "codeup": "jiti ./dist/cli/index.mjs", | ||
| "lint": "eslint . && biome check .", | ||
| "lint:fix": "automd && eslint . --fix && biome check --apply .", | ||
| "lint": "eslint . && prettier -c .", | ||
| "lint:fix": "automd && eslint . --fix && prettier -w .", | ||
| "prepack": "pnpm build", | ||
@@ -38,22 +38,23 @@ "play": "jiti playground", | ||
| "citty": "^0.1.6", | ||
| "confbox": "^0.1.7", | ||
| "consola": "^3.2.3", | ||
| "execa": "^8.0.1", | ||
| "execa": "^9.4.0", | ||
| "giget": "^1.2.3", | ||
| "jiti": "^1.21.0", | ||
| "nypm": "^0.3.8", | ||
| "ohash": "^1.1.3", | ||
| "jiti": "^2.3.1", | ||
| "nypm": "^0.3.12", | ||
| "ohash": "^1.1.4", | ||
| "pathe": "^1.1.2", | ||
| "pkg-types": "^1.1.0" | ||
| "pkg-types": "^1.2.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@biomejs/biome": "^1.7.2", | ||
| "@types/node": "^20.12.7", | ||
| "automd": "^0.3.7", | ||
| "changelogen": "^0.5.5", | ||
| "eslint": "^9.1.1", | ||
| "eslint-config-unjs": "0.3.0-rc.7", | ||
| "typescript": "^5.4.5", | ||
| "@types/node": "^22.7.4", | ||
| "automd": "^0.3.10", | ||
| "changelogen": "^0.5.7", | ||
| "eslint": "^9.12.0", | ||
| "eslint-config-unjs": "^0.4.1", | ||
| "prettier": "^3.3.3", | ||
| "typescript": "^5.6.2", | ||
| "unbuild": "^2.0.0" | ||
| }, | ||
| "packageManager": "pnpm@9.0.6" | ||
| "packageManager": "pnpm@9.12.0" | ||
| } |
+12
-5
@@ -6,3 +6,3 @@ # codeup | ||
| [](https://npmjs.com/package/codeup) | ||
| [](https://npmjs.com/package/codeup) | ||
| [](https://npm.chart.dev/codeup) | ||
@@ -72,5 +72,5 @@ <!-- /automd --> | ||
| ignores: eslintignore.filter( | ||
| (i) => !["", "node_modules", "dist", "coverage"].includes(i) | ||
| (i) => !["", "node_modules", "dist", "coverage"].includes(i), | ||
| ), | ||
| }) | ||
| }), | ||
| ); | ||
@@ -119,3 +119,2 @@ | ||
| } | ||
| ``` | ||
@@ -227,2 +226,6 @@ | ||
| ### `detectPackageManager()` | ||
| Detect current package manager | ||
| ### `readPackageJSON()` | ||
@@ -236,4 +239,8 @@ | ||
| ### `runScript(name)` | ||
| ### `runPackageManagerCommand(command, opts?: { ignoreErrors? })` | ||
| Run a command with the detected package manager | ||
| ### `runScript(script)` | ||
| Run a `package.json` script using detected package manager | ||
@@ -240,0 +247,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
32994
2.76%582
4.68%347
2.06%0
-100%10
11.11%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
Updated
Updated
Updated
Updated
Updated