mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-11-15 13:12:22 +01:00
39 lines
961 B
TypeScript
39 lines
961 B
TypeScript
import type { Context, ImportSource, PluginDefinition } from "@yaakapp/api";
|
|
import YAML from "yaml";
|
|
import { deleteUndefinedAttrs, isJSObject } from "./common";
|
|
import { convertInsomniaV4 } from "./v4";
|
|
import { convertInsomniaV5 } from "./v5";
|
|
|
|
export const plugin: PluginDefinition = {
|
|
importer: {
|
|
name: "Insomnia",
|
|
description: "Import Insomnia workspaces",
|
|
async onImportSource(_ctx: Context, { source }: { source: ImportSource }) {
|
|
if (source.type !== "text") return null;
|
|
return convertInsomnia(source.text);
|
|
},
|
|
},
|
|
};
|
|
|
|
export function convertInsomnia(contents: string) {
|
|
let parsed: unknown;
|
|
|
|
try {
|
|
parsed = JSON.parse(contents);
|
|
} catch {
|
|
// Fall through
|
|
}
|
|
|
|
try {
|
|
parsed = parsed ?? YAML.parse(contents);
|
|
} catch {
|
|
// Fall through
|
|
}
|
|
|
|
if (!isJSObject(parsed)) return null;
|
|
|
|
const result = convertInsomniaV5(parsed) ?? convertInsomniaV4(parsed);
|
|
|
|
return deleteUndefinedAttrs(result);
|
|
}
|