Socket
Socket
Sign inDemoInstall

@covector/files

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@covector/files - npm Package Compare versions

Comparing version 0.6.0 to 0.6.1

test/toml.test.ts

10

CHANGELOG.md
# Changelog
## \[0.6.1]
### Dependencies
- [`7b6201c`](https://www.github.com/jbolda/covector/commit/7b6201c2e7e0d9120610a2a882c0b4523f4ab6dc)([#264](https://www.github.com/jbolda/covector/pull/264)) Bump Typescript to v4.9, and deeply update types in the lower level functions to start.
### New Features
- [`84c9d9d`](https://www.github.com/jbolda/covector/commit/84c9d9dd8f9bfbb0e0116fc5b8bfc1f62fd2b5bd)([#268](https://www.github.com/jbolda/covector/pull/268)) Handle Rust projects with versions handled with workspace inheritance.
## \[0.6.0]

@@ -4,0 +14,0 @@

28

dist/index.d.ts
/// <reference types="node" />
import { PathLike } from "fs";
import { Operation } from "effection";
import type { File, PackageFile, PreFile, ConfigFile } from "@covector/types";
export declare function loadFile(file: PathLike, cwd: string): Generator<any, File | void, any>;
export declare function saveFile(file: File, cwd: string): Generator<any, File, any>;
import type { File, PackageFile, PreFile, ConfigFile, Pkg } from "@covector/types";
export declare function loadFile(file: PathLike, cwd: string): Operation<File | void>;
export declare function saveFile(file: File, cwd: string): Operation<File>;
export declare function readAllPkgFiles({ config, cwd, }: {

@@ -24,10 +24,10 @@ config: ConfigFile;

cwd: string;
}): Generator<any, File, any>;
}): Operation<File>;
export declare function readPreFile({ cwd, changeFolder, }: {
cwd: string;
changeFolder?: string;
}): Generator<any, PreFile | null, any>;
}): Operation<PreFile | null>;
export declare const getPackageFileVersion: ({ pkg, property, dep, }: {
pkg: PackageFile;
property?: string | undefined;
property?: keyof Pkg | undefined;
dep?: string | undefined;

@@ -38,3 +38,3 @@ }) => string;

version: string;
property?: string | undefined;
property?: keyof Pkg | undefined;
dep?: string | undefined;

@@ -45,3 +45,3 @@ }) => PackageFile;

cwd: string;
}): Generator<any, File, any>;
}): Operation<File>;
export declare const testSerializePkgFile: ({ packageFile, }: {

@@ -53,3 +53,3 @@ packageFile: PackageFile;

changeFolder?: string;
}): Generator<any, ConfigFile, any>;
}): Operation<ConfigFile>;
export declare const checkFileOrDirectory: ({ cwd, config, }: {

@@ -66,7 +66,7 @@ cwd: string;

paths: string[];
}): Generator<any, File[], any>;
export declare const changeFilesRemove: ({ cwd, paths, }: {
}): Operation<File[]>;
export declare function changeFilesRemove({ cwd, paths, }: {
cwd: string;
paths: string[];
}) => Promise<void>;
}): Operation<string>;
export declare function readChangelog({ cwd, packagePath, create, }: {

@@ -76,7 +76,7 @@ cwd: string;

create?: boolean;
}): Generator<any, File, any>;
}): Operation<File>;
export declare function writeChangelog({ changelog, cwd, }: {
changelog: File;
cwd: string;
}): Generator<any, void | Error, any>;
}): Operation<void | Error>;
//# sourceMappingURL=index.d.ts.map

@@ -77,2 +77,3 @@ "use strict";

const parsePkg = (file) => {
var _a, _b, _c, _d, _e, _f;
if (!file.content)

@@ -83,4 +84,15 @@ throw new Error(`${file.path} does not have any content`);

const parsedTOML = toml_1.default.parse(file.content);
// @ts-ignore
const { version } = parsedTOML.package;
let version;
if (((_a = parsedTOML === null || parsedTOML === void 0 ? void 0 : parsedTOML.package) === null || _a === void 0 ? void 0 : _a.version) &&
typeof ((_b = parsedTOML === null || parsedTOML === void 0 ? void 0 : parsedTOML.package) === null || _b === void 0 ? void 0 : _b.version) === "string") {
version = parsedTOML.package.version;
}
else if (((_d = (_c = parsedTOML === null || parsedTOML === void 0 ? void 0 : parsedTOML.workspace) === null || _c === void 0 ? void 0 : _c.package) === null || _d === void 0 ? void 0 : _d.version) &&
typeof ((_f = (_e = parsedTOML === null || parsedTOML === void 0 ? void 0 : parsedTOML.workspace) === null || _e === void 0 ? void 0 : _e.package) === null || _f === void 0 ? void 0 : _f.version) === "string") {
version = parsedTOML.workspace.package.version;
}
if (!version)
throw new Error(`package version is not set in ./${file.path}`);
if (!semver_1.default.valid(version))
throw new Error(`package version is not valid in ./${file.path}`);
return {

@@ -93,3 +105,2 @@ version: version,

deps: keyDeps(parsedTOML),
// @ts-ignore
pkg: parsedTOML,

@@ -111,3 +122,2 @@ };

const parsedYAML = js_yaml_1.default.load(file.content);
// type narrow:
if (typeof parsedYAML === "string" ||

@@ -118,3 +128,2 @@ typeof parsedYAML === "number" ||

throw new Error(`file improperly structured`);
//@ts-ignore version is not on object?
if (parsedYAML && (!parsedYAML.name || !parsedYAML.version))

@@ -148,6 +157,12 @@ throw new Error(`missing version`);

const keyDeps = (parsed) => {
let deps = {};
["dependencies", "devDependencies", "dev-dependencies"].forEach((depType) => {
if (parsed[depType] && typeof parsed[depType] === "object") {
Object.entries(parsed[depType]).forEach(([dep, version]) => {
const deps = {};
const depTypes = [
"dependencies",
"devDependencies",
"dev-dependencies",
];
depTypes.forEach((depType) => {
let pkgFileDeps = parsed[depType];
if (pkgFileDeps && typeof pkgFileDeps === "object") {
Object.entries(pkgFileDeps).forEach(([dep, version]) => {
if (!(deps === null || deps === void 0 ? void 0 : deps[dep]))

@@ -255,76 +270,48 @@ deps[dep] = [];

const getPackageFileVersion = ({ pkg, property = "version", dep, }) => {
if (pkg.file && pkg.pkg) {
if (property === "version") {
if (pkg.file.extname === ".json") {
return pkg.pkg.version;
}
else if (pkg.file.extname === ".toml") {
// @ts-ignore
return pkg.pkg.package.version;
}
else {
// covers yaml and generic
return pkg.pkg.version;
}
}
else if (property === "dependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.dependencies)
return "";
if (typeof pkg.pkg.dependencies[dep] === "object") {
//@ts-ignore
if (!pkg.pkg.dependencies[dep].version) {
throw new Error(`${pkg.name} has a dependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`);
var _a, _b;
if (!!(pkg === null || pkg === void 0 ? void 0 : pkg.file) && "pkg" in pkg && !!pkg.pkg) {
switch (property) {
case "version":
if (pkg.file.extname === ".json" && pkg.pkg.version) {
return pkg.pkg.version;
}
//@ts-ignore
return pkg.pkg.dependencies[dep].version;
}
else {
return pkg.pkg.dependencies[dep];
}
}
else if (property === "devDependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.devDependencies)
return "";
if (typeof pkg.pkg.devDependencies[dep] === "object") {
//@ts-ignore
if (!pkg.pkg.devDependencies[dep].version) {
throw new Error(`${pkg.name} has a devDependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`);
else if (pkg.file.extname === ".toml" && ((_b = (_a = pkg === null || pkg === void 0 ? void 0 : pkg.pkg) === null || _a === void 0 ? void 0 : _a.package) === null || _b === void 0 ? void 0 : _b.version)) {
return pkg.pkg.package.version;
}
//@ts-ignore
return pkg.pkg.devDependencies[dep].version;
}
else {
return pkg.pkg.devDependencies[dep];
}
}
else if (property === "dev-dependencies") {
// same for every supported package file
//@ts-ignore
if (!dep || !pkg.pkg[property])
return "";
//@ts-ignore
if (typeof pkg.pkg[property][dep] === "object") {
//@ts-ignore
if (!pkg.pkg[property][dep].version) {
throw new Error(`${pkg.name} has a devDependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`);
else if (!pkg.pkg.version) {
return "";
}
//@ts-ignore
return pkg.pkg[property][dep].version;
}
else {
//@ts-ignore
return pkg.pkg[property][dep];
}
else {
// covers yaml and generic
return pkg.pkg.version;
}
case "dependencies":
case "devDependencies":
case "dev-dependencies":
const currentPkgDeps = pkg.pkg[property];
if (currentPkgDeps === undefined)
return "";
if (typeof pkg.pkg[property] !== "object")
return "";
if (!dep)
return "";
if (!("dependencies" in pkg.pkg))
return "";
if (pkg.pkg[property] && typeof pkg.pkg[property] === "object") {
if (property in pkg.pkg) {
const depDefinition = currentPkgDeps[dep];
switch (typeof depDefinition) {
case "string":
return depDefinition;
case "object":
if (!depDefinition.version) {
throw new Error(`${pkg.name} has a dependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`);
}
return depDefinition.version;
}
}
}
}
else {
return "";
}
}

@@ -335,3 +322,5 @@ return "";

const setPackageFileVersion = ({ pkg, version, property = "version", dep, }) => {
var _a, _b, _c;
if (pkg.file && pkg.pkg) {
const currentPkg = pkg.pkg;
if (property === "version") {

@@ -341,6 +330,9 @@ if (pkg.file.extname === ".json") {

}
else if (pkg.file.extname === ".toml") {
// @ts-ignore
else if (pkg.file.extname === ".toml" && ((_a = pkg.pkg.package) === null || _a === void 0 ? void 0 : _a.version)) {
pkg.pkg.package.version = version;
}
else if (pkg.file.extname === ".toml" &&
((_c = (_b = pkg.pkg.workspace) === null || _b === void 0 ? void 0 : _b.package) === null || _c === void 0 ? void 0 : _c.version)) {
pkg.pkg.workspace.package.version = version;
}
else {

@@ -354,41 +346,19 @@ // covers yaml and generic

property === "dev-dependencies") {
if (property === "dependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.dependencies)
return pkg;
if (typeof pkg.pkg.dependencies[dep] === "object") {
// @ts-ignore TODO deal with nest toml
pkg.pkg.dependencies[dep].version = version;
}
else {
pkg.pkg.dependencies[dep] = version;
}
const currentPkg = pkg.pkg;
const currentProperty = currentPkg[property];
if (currentProperty === undefined)
// throw as this definitely shouldn't happen
throw new Error(`Expected ${property} not found in package:\n${JSON.stringify(pkg, null, 2)}`);
if (!dep)
return pkg;
const currentDepVersion = currentProperty[dep];
if (typeof currentDepVersion === "string") {
//@ts-expect-error TS struggles to type narrow, but we are confident it should be defined
pkg.pkg[property][dep] = version;
}
else if (property === "devDependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.devDependencies)
return pkg;
if (typeof pkg.pkg.devDependencies[dep] === "object") {
// @ts-ignore TODO deal with nest toml
pkg.pkg.devDependencies[dep].version = version;
}
else {
pkg.pkg.devDependencies[dep] = version;
}
}
else if (property === "dev-dependencies") {
// same for every supported package file
//@ts-ignore
if (!dep || !pkg.pkg[property])
return pkg;
//@ts-ignore
if (typeof pkg.pkg[property][dep] === "object") {
//@ts-ignore
// @ts-ignore TODO deal with nest toml
else if (typeof currentDepVersion === "object") {
if ("version" in currentDepVersion) {
//@ts-expect-error TS struggles to type narrow, but we are confident it should be defined
pkg.pkg[property][dep].version = version;
}
else {
//@ts-ignore
pkg.pkg[property][dep] = version;
}
}

@@ -473,11 +443,9 @@ }

exports.loadChangeFiles = loadChangeFiles;
// redo this into a generator
const changeFilesRemove = ({ cwd, paths, }) => {
return Promise.all(paths.map((changeFilePath) => __awaiter(void 0, void 0, void 0, function* () {
function* changeFilesRemove({ cwd, paths, }) {
return yield (0, effection_1.all)(paths.map(function* (changeFilePath) {
yield fs.unlink(path_1.default.posix.join(cwd, changeFilePath));
console.info(`${changeFilePath} was deleted`);
return changeFilePath;
}))).then((deletedPaths) => {
deletedPaths.forEach((changeFilePath) => console.info(`${changeFilePath} was deleted`));
});
};
}));
}
exports.changeFilesRemove = changeFilesRemove;

@@ -484,0 +452,0 @@ function* readChangelog({ cwd, packagePath = "", create = true, }) {

{
"name": "@covector/files",
"version": "0.6.0",
"version": "0.6.1",
"license": "Apache-2.0",

@@ -23,3 +23,3 @@ "homepage": "https://github.com/jbolda/covector#readme",

"js-yaml": "^4.0.0",
"semver": "^7.3.7"
"semver": "^7.3.8"
},

@@ -29,7 +29,7 @@ "devDependencies": {

"@types/js-yaml": "^4.0.0",
"@types/node": "^14.18.13",
"@types/semver": "^7.3.4",
"@types/node": "^16.18.12",
"@types/semver": "^7.3.13",
"fixturez": "^1.1.0",
"tslib": "^2.4.0",
"typescript": "^4.6.3"
"tslib": "^2.5.0",
"typescript": "^4.9.5"
},

@@ -36,0 +36,0 @@ "volta": {

@@ -19,8 +19,7 @@ import { default as fsDefault, PathLike, statSync } from "fs";

DepsKeyed,
DepTypes,
Pkg,
} from "@covector/types";
export function* loadFile(
file: PathLike,
cwd: string
): Generator<any, File | void, any> {
export function* loadFile(file: PathLike, cwd: string): Operation<File | void> {
if (typeof file === "string") {

@@ -43,3 +42,3 @@ const content = yield fs.readFile(path.join(cwd, file), {

export function* saveFile(file: File, cwd: string): Generator<any, File, any> {
export function* saveFile(file: File, cwd: string): Operation<File> {
if (typeof file.path !== "string")

@@ -57,5 +56,20 @@ throw new Error(`Unable to handle saving of ${file}`);

case ".toml":
const parsedTOML = TOML.parse(file.content);
// @ts-ignore
const { version } = parsedTOML.package;
const parsedTOML = TOML.parse(file.content) as unknown as Pkg;
let version;
if (
parsedTOML?.package?.version &&
typeof parsedTOML?.package?.version === "string"
) {
version = parsedTOML.package.version;
} else if (
parsedTOML?.workspace?.package?.version &&
typeof parsedTOML?.workspace?.package?.version === "string"
) {
version = parsedTOML.workspace.package.version;
}
if (!version)
throw new Error(`package version is not set in ./${file.path}`);
if (!semver.valid(version))
throw new Error(`package version is not valid in ./${file.path}`);
return {

@@ -68,3 +82,2 @@ version: version,

deps: keyDeps(parsedTOML),
// @ts-ignore
pkg: parsedTOML,

@@ -85,4 +98,3 @@ };

case ".yaml":
const parsedYAML = yaml.load(file.content);
// type narrow:
const parsedYAML = yaml.load(file.content) as Pkg;
if (

@@ -95,3 +107,2 @@ typeof parsedYAML === "string" ||

throw new Error(`file improperly structured`);
//@ts-ignore version is not on object?
if (parsedYAML && (!parsedYAML.name || !parsedYAML.version))

@@ -125,27 +136,29 @@ throw new Error(`missing version`);

const keyDeps = (parsed: any): DepsKeyed => {
let deps: DepsKeyed = {};
const keyDeps = (parsed: Pkg): DepsKeyed => {
const deps: DepsKeyed = {};
const depTypes: DepTypes[] = [
"dependencies",
"devDependencies",
"dev-dependencies",
];
["dependencies", "devDependencies", "dev-dependencies"].forEach(
(depType: any) => {
if (parsed[depType] && typeof parsed[depType] === "object") {
Object.entries(parsed[depType]).forEach(
([dep, version]: [string, any]) => {
if (!deps?.[dep]) deps[dep] = [];
if (typeof version === "string") {
deps[dep].push({
type: depType,
version,
});
} else if (typeof version === "object" && version.version) {
deps[dep].push({
type: depType,
version: version.version,
});
}
}
);
}
depTypes.forEach((depType: DepTypes) => {
let pkgFileDeps = parsed[depType];
if (pkgFileDeps && typeof pkgFileDeps === "object") {
Object.entries(pkgFileDeps).forEach(([dep, version]) => {
if (!deps?.[dep]) deps[dep] = [];
if (typeof version === "string") {
deps[dep].push({
type: depType,
version,
});
} else if (typeof version === "object" && version.version) {
deps[dep].push({
type: depType,
version: version.version,
});
}
});
}
);
});
return deps;

@@ -259,3 +272,3 @@ };

cwd: string;
}): Generator<any, File, any> {
}): Operation<File> {
if (!packageFile.file)

@@ -278,3 +291,3 @@ throw new Error(`no vfile present for ${packageFile.name}`);

changeFolder?: string;
}): Generator<any, PreFile | null, any> {
}): Operation<PreFile | null> {
try {

@@ -298,72 +311,46 @@ const inputFile = yield loadFile(path.join(changeFolder, "pre.json"), cwd);

pkg: PackageFile;
property?: string;
property?: keyof Pkg;
dep?: string;
}): string => {
if (pkg.file && pkg.pkg) {
if (property === "version") {
if (pkg.file.extname === ".json") {
return pkg.pkg.version;
} else if (pkg.file.extname === ".toml") {
// @ts-ignore
return pkg.pkg.package.version;
} else {
// covers yaml and generic
return pkg.pkg.version;
}
} else if (property === "dependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.dependencies) return "";
if (typeof pkg.pkg.dependencies[dep] === "object") {
//@ts-ignore
if (!pkg.pkg.dependencies[dep].version) {
throw new Error(
`${pkg.name} has a dependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`
);
if (!!pkg?.file && "pkg" in pkg && !!pkg.pkg) {
switch (property) {
case "version":
if (pkg.file.extname === ".json" && pkg.pkg.version) {
return pkg.pkg.version;
} else if (pkg.file.extname === ".toml" && pkg?.pkg?.package?.version) {
return pkg.pkg.package.version;
} else if (!pkg.pkg.version) {
return "";
} else {
// covers yaml and generic
return pkg.pkg.version;
}
//@ts-ignore
return pkg.pkg.dependencies[dep].version;
} else {
return pkg.pkg.dependencies[dep];
}
} else if (property === "devDependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.devDependencies) return "";
if (typeof pkg.pkg.devDependencies[dep] === "object") {
//@ts-ignore
if (!pkg.pkg.devDependencies[dep].version) {
throw new Error(
`${pkg.name} has a devDependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`
);
case "dependencies":
case "devDependencies":
case "dev-dependencies":
const currentPkgDeps = pkg.pkg[property];
if (currentPkgDeps === undefined) return "";
if (typeof pkg.pkg[property] !== "object") return "";
if (!dep) return "";
if (!("dependencies" in pkg.pkg)) return "";
if (pkg.pkg[property] && typeof pkg.pkg[property] === "object") {
if (property in pkg.pkg) {
const depDefinition = currentPkgDeps[dep];
switch (typeof depDefinition) {
case "string":
return depDefinition;
case "object":
if (!depDefinition.version) {
throw new Error(
`${pkg.name} has a dependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`
);
}
return depDefinition.version;
}
}
}
//@ts-ignore
return pkg.pkg.devDependencies[dep].version;
} else {
return pkg.pkg.devDependencies[dep];
}
} else if (property === "dev-dependencies") {
// same for every supported package file
//@ts-ignore
if (!dep || !pkg.pkg[property]) return "";
//@ts-ignore
if (typeof pkg.pkg[property][dep] === "object") {
//@ts-ignore
if (!pkg.pkg[property][dep].version) {
throw new Error(
`${pkg.name} has a devDependency on ${dep}, and ${dep} does not have a version number. ` +
`This cannot be published. ` +
`Please pin it to a MAJOR.MINOR.PATCH reference.`
);
}
//@ts-ignore
return pkg.pkg[property][dep].version;
} else {
//@ts-ignore
return pkg.pkg[property][dep];
}
} else {
return "";
}

@@ -382,12 +369,17 @@ }

version: string;
property?: string;
property?: keyof Pkg;
dep?: string;
}): PackageFile => {
if (pkg.file && pkg.pkg) {
const currentPkg = pkg.pkg;
if (property === "version") {
if (pkg.file.extname === ".json") {
pkg.pkg.version = version;
} else if (pkg.file.extname === ".toml") {
// @ts-ignore
} else if (pkg.file.extname === ".toml" && pkg.pkg.package?.version) {
pkg.pkg.package.version = version;
} else if (
pkg.file.extname === ".toml" &&
pkg.pkg.workspace?.package?.version
) {
pkg.pkg.workspace.package.version = version;
} else {

@@ -402,32 +394,23 @@ // covers yaml and generic

) {
if (property === "dependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.dependencies) return pkg;
if (typeof pkg.pkg.dependencies[dep] === "object") {
// @ts-ignore TODO deal with nest toml
pkg.pkg.dependencies[dep].version = version;
} else {
pkg.pkg.dependencies[dep] = version;
}
} else if (property === "devDependencies") {
// same for every supported package file
if (!dep || !pkg.pkg.devDependencies) return pkg;
if (typeof pkg.pkg.devDependencies[dep] === "object") {
// @ts-ignore TODO deal with nest toml
pkg.pkg.devDependencies[dep].version = version;
} else {
pkg.pkg.devDependencies[dep] = version;
}
} else if (property === "dev-dependencies") {
// same for every supported package file
//@ts-ignore
if (!dep || !pkg.pkg[property]) return pkg;
//@ts-ignore
if (typeof pkg.pkg[property][dep] === "object") {
//@ts-ignore
// @ts-ignore TODO deal with nest toml
const currentPkg = pkg.pkg;
const currentProperty = currentPkg[property];
if (currentProperty === undefined)
// throw as this definitely shouldn't happen
throw new Error(
`Expected ${property} not found in package:\n${JSON.stringify(
pkg,
null,
2
)}`
);
if (!dep) return pkg;
const currentDepVersion = currentProperty[dep];
if (typeof currentDepVersion === "string") {
//@ts-expect-error TS struggles to type narrow, but we are confident it should be defined
pkg.pkg[property][dep] = version;
} else if (typeof currentDepVersion === "object") {
if ("version" in currentDepVersion) {
//@ts-expect-error TS struggles to type narrow, but we are confident it should be defined
pkg.pkg[property][dep].version = version;
} else {
//@ts-ignore
pkg.pkg[property][dep] = version;
}

@@ -446,3 +429,3 @@ }

cwd: string;
}): Generator<any, File, any> {
}): Operation<File> {
if (!preFile.file)

@@ -488,3 +471,3 @@ throw new Error(`We could not find the pre.json to update.`);

changeFolder?: string;
}): Generator<any, ConfigFile, any> {
}): Operation<ConfigFile> {
const inputFile = yield loadFile(path.join(changeFolder, "config.json"), cwd);

@@ -555,3 +538,3 @@ const parsed = JSON.parse(inputFile.content);

paths: string[];
}): Generator<any, File[], any> {
}): Operation<File[]> {
const files = paths.map((file) => loadFile(file, cwd));

@@ -561,4 +544,3 @@ return yield all(files);

// redo this into a generator
export const changeFilesRemove = ({
export function* changeFilesRemove({
cwd,

@@ -569,14 +551,11 @@ paths,

paths: string[];
}) => {
return Promise.all(
paths.map(async (changeFilePath) => {
await fs.unlink(path.posix.join(cwd, changeFilePath));
}): Operation<string> {
return yield all(
paths.map(function* (changeFilePath) {
yield fs.unlink(path.posix.join(cwd, changeFilePath));
console.info(`${changeFilePath} was deleted`);
return changeFilePath;
})
).then((deletedPaths) => {
deletedPaths.forEach((changeFilePath) =>
console.info(`${changeFilePath} was deleted`)
);
});
};
);
}

@@ -591,3 +570,3 @@ export function* readChangelog({

create?: boolean;
}): Generator<any, File, any> {
}): Operation<File> {
let file = null;

@@ -614,4 +593,4 @@ try {

cwd: string;
}): Generator<any, void | Error, any> {
}): Operation<void | Error> {
return yield saveFile(changelog, cwd);
}

@@ -8,2 +8,3 @@ import {

loadChangeFiles,
changeFilesRemove,
} from "../src";

@@ -86,2 +87,18 @@ import { it } from "@effection/jest";

});
it("deletes files", function* () {
const restoreConsole = mockConsole(["info"]);
const changesFolder = f.copy("integration.general-file");
const changeFilesToDelete = [
"./.changes/first-change.md",
"./.changes/second-change.md",
];
const filesRemoved = yield changeFilesRemove({
cwd: changesFolder,
paths: changeFilesToDelete,
});
expect(filesRemoved).toEqual(changeFilesToDelete);
});
});

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc