mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-24 01:28:35 +02:00
Initial "plugin" system with importer (#7)
This commit is contained in:
50
plugins/insomnia-importer/index.js
Normal file
50
plugins/insomnia-importer/index.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import { importEnvironment } from './importers/environment.js';
|
||||
import { importRequest } from './importers/request.js';
|
||||
import { importWorkspace } from './importers/workspace.js';
|
||||
|
||||
const TYPES = {
|
||||
workspace: 'workspace',
|
||||
request: 'request',
|
||||
environment: 'environment',
|
||||
};
|
||||
|
||||
export function pluginHookImport(contents) {
|
||||
const parsed = JSON.parse(contents);
|
||||
if (!isObject(parsed)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { _type, __export_format } = parsed;
|
||||
if (_type !== 'export' || __export_format !== 4 || !Array.isArray(parsed.resources)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const resources = {
|
||||
workspaces: [],
|
||||
requests: [],
|
||||
environments: [],
|
||||
};
|
||||
|
||||
for (const v of parsed.resources) {
|
||||
if (v._type === TYPES.workspace) {
|
||||
resources.workspaces.push(importWorkspace(v));
|
||||
} else if (v._type === TYPES.environment) {
|
||||
resources.environments.push(importEnvironment(v));
|
||||
} else if (v._type === TYPES.request) {
|
||||
resources.requests.push(importRequest(v));
|
||||
} else {
|
||||
console.log('UNKNOWN TYPE', v._type, JSON.stringify(v, null, 2));
|
||||
}
|
||||
}
|
||||
|
||||
// Filter out any `null` values
|
||||
resources.requests = resources.requests.filter(Boolean);
|
||||
resources.environments = resources.environments.filter(Boolean);
|
||||
resources.workspaces = resources.workspaces.filter(Boolean);
|
||||
|
||||
return resources;
|
||||
}
|
||||
|
||||
function isObject(obj) {
|
||||
return Object.prototype.toString.call(obj) === '[object Object]';
|
||||
}
|
||||
Reference in New Issue
Block a user