12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import fs from "fs/promises";
- import { FormDataEntry } from "../types/request";
- import { error } from "../types/errors";
- import { isRESTCollection, isHoppErrnoException } from "./checks";
- import { HoppCollection } from "@hoppscotch/data";
- /**
- * Parses array of FormDataEntry to FormData.
- * @param values Array of FormDataEntry.
- * @returns FormData with key-value pair from FormDataEntry.
- */
- export const toFormData = (values: FormDataEntry[]) => {
- const formData = new FormData();
- values.forEach(({ key, value }) => formData.append(key, value));
- return formData;
- };
- /**
- * Parses provided error message to maintain hopp-error messages.
- * @param e Custom error data.
- * @returns Parsed error message without extra spaces.
- */
- export const parseErrorMessage = (e: unknown) => {
- let msg: string;
- if (isHoppErrnoException(e)) {
- msg = e.message.replace(e.code! + ":", "").replace("error:", "");
- } else if (typeof e === "string") {
- msg = e;
- } else {
- msg = JSON.stringify(e);
- }
- return msg.replace(/\n+$|\s{2,}/g, "").trim();
- };
- export async function readJsonFile(path: string): Promise<unknown> {
- if (!path.endsWith(".json")) {
- throw error({ code: "INVALID_FILE_TYPE", data: path });
- }
- try {
- await fs.access(path);
- } catch (e) {
- throw error({ code: "FILE_NOT_FOUND", path: path });
- }
- try {
- return JSON.parse((await fs.readFile(path)).toString());
- } catch (e) {
- throw error({ code: "UNKNOWN_ERROR", data: e });
- }
- }
- /**
- * Parses collection json file for given path:context.path, and validates
- * the parsed collectiona array.
- * @param path Collection json file path.
- * @returns For successful parsing we get array of HoppCollection,
- */
- export async function parseCollectionData(
- path: string
- ): Promise<HoppCollection[]> {
- let contents = await readJsonFile(path);
- const maybeArrayOfCollections: unknown[] = Array.isArray(contents)
- ? contents
- : [contents];
- if (maybeArrayOfCollections.some((x) => !isRESTCollection(x))) {
- throw error({
- code: "MALFORMED_COLLECTION",
- path,
- data: "Please check the collection data.",
- });
- }
- return maybeArrayOfCollections as HoppCollection[];
- }
|