New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

fetchbook

Package Overview
Dependencies
Maintainers
1
Versions
59
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fetchbook - npm Package Compare versions

Comparing version 1.1.0-beta.4 to 1.1.0-beta.5

.husky/pre-commit

58

lib/functions.ts

@@ -5,4 +5,7 @@ import colorizer from "json-colorizer";

import picocolors from "picocolors";
import select from "@inquirer/select";
import autocomplete, { Separator } from "inquirer-autocomplete-standalone";
import Fuse from "fuse.js";
import { glob } from "glob";
import spaceCase from "to-space-case";
import titleize from "titleize";

@@ -18,17 +21,52 @@ export const getStory = (storyFilePath: string) =>

} else {
const storyFiles = await glob("**/*.fetch.ts", {
const pattern = "**/*.fetch.ts";
const storyFiles = await glob(pattern, {
ignore: ["node_modules/**"],
});
if (storyFiles.length === 0) {
console.log("No story files (*.fetch.ts) found");
console.log(`No story files (${pattern}) found`);
process.exit(0);
}
const stories = await Promise.all(storyFiles.map(getStory));
return select({
const items = await Promise.all(
storyFiles.map(async (file) => ({ file, story: await getStory(file) })),
);
const fuse = new Fuse(items, {
keys: [
{
name: "title",
getFn: (item) => item.story.name,
},
],
});
return await autocomplete({
message: "Select a fetch story",
choices: stories.map((story) => ({
name: story.name,
value: story,
description: story.url,
})),
source: async (input) => {
const results = input
? fuse.search(input).map((result) => result.item)
: items;
const groups: { [K: string]: RequestStory[] } = {};
await Promise.all(
results.map(async (item) => {
const group = path.dirname(item.file);
groups[group] ??= [];
groups[group].push(item.story);
}),
);
return Object.keys(groups)
.map((group) => [
new Separator(
picocolors.gray(
group.split(path.sep).map(spaceCase).map(titleize).join(" / "),
),
),
...groups[group].map((story) => ({
name: story.name,
value: story,
description: `${picocolors.green(story.request.method)} ${
story.url
}`,
})),
])
.flat();
},
});

@@ -35,0 +73,0 @@ }

{
"name": "fetchbook",
"version": "1.1.0-beta.4",
"version": "1.1.0-beta.5",
"description": "Manage your HTTP requests",

@@ -12,9 +12,17 @@ "author": "Alejandro Tardín <alejandro@tardin.com>",

"fetch-to-curl": "^0.6.0",
"fuse.js": "^6.6.2",
"glob": "^10.3.10",
"inquirer-autocomplete-standalone": "^0.7.0",
"json-colorizer": "^2.2.2",
"picocolors": "^1.0.0"
"picocolors": "^1.0.0",
"titleize": "^4.0.0",
"to-space-case": "^1.0.0"
},
"devDependencies": {
"@types/to-space-case": "^1.0.0",
"bun-types": "latest",
"husky": "^8.0.3",
"json-server": "^0.17.4",
"lint-staged": "^14.0.1",
"prettier": "^3.0.3",
"semantic-release": "^22.0.5",

@@ -31,3 +39,4 @@ "start-server-and-test": "^2.0.1",

"test:start": "json-server --quiet --host :: test/db.json",
"semantic-release": "semantic-release"
"semantic-release": "semantic-release",
"prepare": "husky install"
},

@@ -46,3 +55,6 @@ "repository": {

]
},
"lint-staged": {
"*.{js,ts,json,md,yml}": "prettier --write"
}
}
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