insomnia/packages/insomnia-app/app/templating/extensions/index.js
Gregory Schier 549ce23ce8
Merge All Repositories into Monorepo for easier maintenance (#629)
* All projects into monorepo

* Update CI

* More CI updates

* Extracted a bunch of things into packages

* Publish

 - insomnia-plugin-base64@1.0.1
 - insomnia-plugin-default-headers@1.0.2
 - insomnia-plugin-file@1.0.1
 - insomnia-plugin-hash@1.0.1
 - insomnia-plugin-now@1.0.1
 - insomnia-plugin-request@1.0.1
 - insomnia-plugin-response@1.0.1
 - insomnia-plugin-uuid@1.0.1
 - insomnia-cookies@0.0.2
 - insomnia-importers@1.5.2
 - insomnia-prettify@0.0.3
 - insomnia-url@0.0.2
 - insomnia-xpath@0.0.2

* A bunch of small fixes

* Improved build script

* Fixed

* Merge dangling files

* Usability refactor

* Handle duplicate plugin names
2017-11-26 20:45:40 +00:00

87 lines
2.1 KiB
JavaScript

// @flow
import type {NunjucksParsedTagArg} from '../utils';
import type {Request} from '../../models/request';
import type {Response} from '../../models/response';
export type PluginArgumentValue = string | number | boolean;
type DisplayName = string | (args: Array<NunjucksParsedTagArg>) => string;
type PluginArgumentBase = {
displayName: DisplayName,
description?: string,
help?: string,
hide?: (args: Array<NunjucksParsedTagArg>) => boolean,
};
export type PluginArgumentEnumOption = {
displayName: DisplayName,
value: PluginArgumentValue,
description?: string,
placeholder?: string
}
export type PluginArgumentEnum = PluginArgumentBase & {
type: 'enum',
options: Array<PluginArgumentEnumOption>,
defaultValue?: PluginArgumentValue
};
export type PluginArgumentModel = PluginArgumentBase & {
type: 'model',
model: string,
defaultValue?: string
};
export type PluginArgumentString = PluginArgumentBase & {
type: 'string',
placeholder?: string,
defaultValue?: string
};
export type PluginArgumentBoolean = PluginArgumentBase & {
type: 'boolean',
defaultValue?: boolean
};
export type PluginArgumentFile = PluginArgumentBase & {
type: 'file'
};
export type PluginArgumentNumber = PluginArgumentBase & {
type: 'number';
placeholder?: string,
defaultValue?: number
};
export type PluginArgument =
PluginArgumentEnum
| PluginArgumentModel
| PluginArgumentString
| PluginArgumentBoolean
| PluginArgumentFile
| PluginArgumentNumber;
export type PluginTemplateTagContext = {
util: {
models: {
request: {
getById: (id: string) => Promise<Request | null>
},
response: {
getLatestForRequestId: (id: string) => Promise<Response | null>,
getBodyBuffer: (response: Response, fallback?: any) => Promise<Buffer | null>,
}
}
}
};
export type PluginTemplateTag = {
args: Array<PluginArgument>,
name: string,
displayName: DisplayName,
description: string,
run: (context: PluginTemplateTagContext, ...arg: Array<any>) => Promise<any> | any,
deprecated?: boolean,
priority?: number
};