mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-12 13:00:19 +00:00
Add types for liftoff
This commit is contained in:
Vendored
+1
-1
@@ -11,7 +11,7 @@ declare namespace fined {
|
||||
interface PathSpec {
|
||||
path?: string;
|
||||
name?: string;
|
||||
extensions?: string | string[] | { [extension: string]: string };
|
||||
extensions?: string | string[] | { [extension: string]: string | null };
|
||||
cwd?: string;
|
||||
findUp?: boolean;
|
||||
}
|
||||
|
||||
Vendored
+203
@@ -0,0 +1,203 @@
|
||||
// Type definitions for liftoff 2.5
|
||||
// Project: https://github.com/js-cli/js-liftoff#readme
|
||||
// Definitions by: BendingBender <https://github.com/BendingBender>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference types="node" />
|
||||
|
||||
import { Extensions, Extension, ExtensionDescriptor } from 'interpret';
|
||||
import { PathSpec } from 'fined';
|
||||
import { EventEmitter } from 'events';
|
||||
|
||||
export = Liftoff;
|
||||
|
||||
declare class Liftoff extends EventEmitter {
|
||||
/**
|
||||
* Create an instance of Liftoff to invoke your application.
|
||||
*/
|
||||
constructor(options?: Liftoff.Options);
|
||||
|
||||
/**
|
||||
* Launches your application with provided options, builds an environment,
|
||||
* and invokes your callback, passing the calculated environment as the first argument.
|
||||
*/
|
||||
launch(
|
||||
opts: Liftoff.LaunchOptions,
|
||||
callback: (this: this, env: Liftoff.LiftoffEnv) => void
|
||||
): void;
|
||||
|
||||
addListener(
|
||||
event: 'require',
|
||||
listener: (name: string, module: ExtensionDescriptor) => void
|
||||
): this;
|
||||
addListener(event: 'requireFail', listener: (name: string, err: any) => void): this;
|
||||
addListener(event: 'respawn', listener: (flags: string[], child: NodeJS.Process) => void): this;
|
||||
on(event: 'require', listener: (name: string, module: ExtensionDescriptor) => void): this;
|
||||
on(event: 'requireFail', listener: (name: string, err: any) => void): this;
|
||||
on(event: 'respawn', listener: (flags: string[], child: NodeJS.Process) => void): this;
|
||||
once(event: 'require', listener: (name: string, module: ExtensionDescriptor) => void): this;
|
||||
once(event: 'requireFail', listener: (name: string, err: any) => void): this;
|
||||
once(event: 'respawn', listener: (flags: string[], child: NodeJS.Process) => void): this;
|
||||
prependListener(
|
||||
event: 'require',
|
||||
listener: (name: string, module: ExtensionDescriptor) => void
|
||||
): this;
|
||||
prependListener(event: 'requireFail', listener: (name: string, err: any) => void): this;
|
||||
prependListener(
|
||||
event: 'respawn',
|
||||
listener: (flags: string[], child: NodeJS.Process) => void
|
||||
): this;
|
||||
prependOnceListener(
|
||||
event: 'require',
|
||||
listener: (name: string, module: ExtensionDescriptor) => void
|
||||
): this;
|
||||
prependOnceListener(event: 'requireFail', listener: (name: string, err: any) => void): this;
|
||||
prependOnceListener(
|
||||
event: 'respawn',
|
||||
listener: (flags: string[], child: NodeJS.Process) => void
|
||||
): this;
|
||||
removeListener(
|
||||
event: 'require',
|
||||
listener: (name: string, module: ExtensionDescriptor) => void
|
||||
): this;
|
||||
removeListener(event: 'requireFail', listener: (name: string, err: any) => void): this;
|
||||
removeListener(
|
||||
event: 'respawn',
|
||||
listener: (flags: string[], child: NodeJS.Process) => void
|
||||
): this;
|
||||
off(event: 'require', listener: (name: string, module: ExtensionDescriptor) => void): this;
|
||||
off(event: 'requireFail', listener: (name: string, err: any) => void): this;
|
||||
off(event: 'respawn', listener: (flags: string[], child: NodeJS.Process) => void): this;
|
||||
removeAllListeners(event?: 'require' | 'requireFail' | 'respawn'): this;
|
||||
listeners(event: 'require' | 'requireFail' | 'respawn'): Function[]; // tslint:disable-line:ban-types
|
||||
rawListeners(event: 'require' | 'requireFail' | 'respawn'): Function[]; // tslint:disable-line:ban-types
|
||||
emit(event: 'require', name: string, module: ExtensionDescriptor): boolean;
|
||||
emit(event: 'requireFail', name: string, err: any): boolean;
|
||||
emit(event: 'respawn', flags: string[], child: NodeJS.Process): boolean;
|
||||
eventNames(): Array<'require' | 'requireFail' | 'respawn'>;
|
||||
listenerCount(type: 'require' | 'requireFail' | 'respawn'): number;
|
||||
}
|
||||
|
||||
declare namespace Liftoff {
|
||||
interface Options {
|
||||
/**
|
||||
* Sugar for setting processTitle, moduleName, configName automatically.
|
||||
* @default null
|
||||
*/
|
||||
name?: string;
|
||||
/**
|
||||
* Sets which module your application expects to find locally when being run.
|
||||
* @default null
|
||||
*/
|
||||
moduleName?: string;
|
||||
/**
|
||||
* Sets the name of the configuration file Liftoff will attempt to find. Case-insensitive.
|
||||
* @default null
|
||||
*/
|
||||
configName?: string;
|
||||
/**
|
||||
* Set extensions to include when searching for a configuration file.
|
||||
* If an external module is needed to load a given extension (e.g. .coffee),
|
||||
* the module name should be specified as the value for the key.
|
||||
* @default {".js":null,".json":null}
|
||||
*/
|
||||
extensions?: Extensions;
|
||||
/**
|
||||
* Any flag specified here will be applied to node, not your program.
|
||||
* Useful for supporting invocations like myapp --harmony command,
|
||||
* where --harmony should be passed to node, not your program.
|
||||
* This functionality is implemented using flagged-respawn.
|
||||
* To support all v8flags, see `v8flags`.
|
||||
* @default null
|
||||
*/
|
||||
v8flags?: string[] | ((cb: (err: any, flags: string[]) => void) => void);
|
||||
/**
|
||||
* Sets what the process title will be.
|
||||
* @default null
|
||||
*/
|
||||
processTitle?: string;
|
||||
/**
|
||||
* A method to handle bash/zsh/whatever completions.
|
||||
* @default null
|
||||
*/
|
||||
completions?: (completion: string) => any;
|
||||
/**
|
||||
* An object of configuration files to find. Each property is keyed by the
|
||||
* default basename of the file being found, and the value is an object
|
||||
* of path arguments keyed by unique names.
|
||||
* @default null
|
||||
*/
|
||||
configFiles?: {
|
||||
[extension: string]: { [locationName: string]: string | PathSpec };
|
||||
};
|
||||
}
|
||||
|
||||
interface LaunchOptions {
|
||||
/**
|
||||
* Change the current working directory for this launch. Relative paths are calculated against `process.cwd()`.
|
||||
* @default process.cwd()
|
||||
*/
|
||||
cwd?: string;
|
||||
|
||||
/**
|
||||
* Don't search for a config, use the one provided.
|
||||
* **Note**: Liftoff will assume the current working directory is the directory containing the config file
|
||||
* unless an alternate location is explicitly specified using `cwd`.
|
||||
* @default null
|
||||
*/
|
||||
configPath?: string;
|
||||
|
||||
/**
|
||||
* A string or array of modules to attempt requiring from the local
|
||||
* working directory before invoking the launch callback.
|
||||
* @default null
|
||||
*/
|
||||
require?: string | any[];
|
||||
|
||||
/**
|
||||
* Allows you to force node or V8 flags during the launch.
|
||||
* This is useful if you need to make sure certain flags will always be enabled
|
||||
* or if you need to enable flags that don't show up in `opts.v8flags`
|
||||
* (as these flags aren't validated against opts.v8flags).
|
||||
* @default null
|
||||
*/
|
||||
forcedFlags?: string | string[] | ((env: LiftoffEnv) => string | string[]);
|
||||
|
||||
completion?: string;
|
||||
}
|
||||
|
||||
interface LiftoffEnv {
|
||||
/**
|
||||
* the current working directory
|
||||
*/
|
||||
cwd: string;
|
||||
/**
|
||||
* an array of modules that liftoff tried to pre-load
|
||||
*/
|
||||
require: string[];
|
||||
/**
|
||||
* the config files searched for
|
||||
*/
|
||||
configNameSearch: string[];
|
||||
/**
|
||||
* the full path to your configuration file (if found)
|
||||
*/
|
||||
configPath: string | undefined;
|
||||
/**
|
||||
* the base directory of your configuration file (if found)
|
||||
*/
|
||||
configBase: string | undefined;
|
||||
/**
|
||||
* the full path to the local module your project relies on (if found)
|
||||
*/
|
||||
modulePath: string | undefined;
|
||||
/**
|
||||
* the contents of the local module's package.json (if found)
|
||||
*/
|
||||
modulePackage: { [key: string]: any } | undefined;
|
||||
/**
|
||||
* an object of filepaths for each found config file (filepath values will be null if not found)
|
||||
*/
|
||||
configFiles: { [extensions: string]: { [path: string]: string | null } } | undefined;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
import Liftoff = require('liftoff');
|
||||
import v8flags = require('v8flags');
|
||||
|
||||
new Liftoff({
|
||||
name: 'hacker',
|
||||
processTitle: 'hacker',
|
||||
moduleName: 'hacker',
|
||||
configName: 'hackerfile',
|
||||
extensions: {
|
||||
'.js': null,
|
||||
'.json': null,
|
||||
'.coffee': 'coffee-script/register',
|
||||
},
|
||||
v8flags: ['--harmony'],
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'hacker',
|
||||
processTitle: 'hacker',
|
||||
moduleName: 'hacker',
|
||||
configName: 'hackerfile',
|
||||
extensions: {
|
||||
'.js': null,
|
||||
'.json': null,
|
||||
'.coffee': 'coffee-script/register',
|
||||
},
|
||||
v8flags,
|
||||
});
|
||||
new Liftoff({ name: 'hacker' });
|
||||
new Liftoff({
|
||||
name: 'myapp',
|
||||
extensions: {
|
||||
'.js': null,
|
||||
'.json': null,
|
||||
'.coffee': 'coffee-script/register',
|
||||
},
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'myapp',
|
||||
configName: '.myapp',
|
||||
extensions: {
|
||||
rc: null,
|
||||
},
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'myapp',
|
||||
extensions: require('interpret').jsVariants,
|
||||
});
|
||||
new Liftoff({
|
||||
v8flags: ['--trace-deprecation'],
|
||||
});
|
||||
new Liftoff({
|
||||
v8flags(cb) {
|
||||
cb(null, ['--trace-deprecation']);
|
||||
},
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'hacker',
|
||||
configFiles: {
|
||||
'.hacker': {
|
||||
cwd: '.',
|
||||
},
|
||||
},
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'hacker',
|
||||
configFiles: {
|
||||
'.hacker': {
|
||||
home: {
|
||||
path: '~',
|
||||
extensions: {
|
||||
rc: null,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'hacker',
|
||||
configFiles: {
|
||||
'.hacker': {
|
||||
up: {
|
||||
path: '.',
|
||||
findUp: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'hacker',
|
||||
configFiles: {
|
||||
hacker: {
|
||||
override: {
|
||||
path: '.',
|
||||
name: '.override',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
new Liftoff({
|
||||
name: 'hacker',
|
||||
configFiles: {
|
||||
'.hacker': {
|
||||
home: {
|
||||
path: '.',
|
||||
cwd: '~',
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
new Liftoff().launch(
|
||||
{
|
||||
cwd: '',
|
||||
configPath: '',
|
||||
require: '',
|
||||
completion: '',
|
||||
},
|
||||
env => {
|
||||
// $ExpectType LiftoffEnv
|
||||
env;
|
||||
|
||||
// $ExpectType string
|
||||
env.cwd;
|
||||
// $ExpectType string[]
|
||||
env.require;
|
||||
// $ExpectType string[]
|
||||
env.configNameSearch;
|
||||
// $ExpectType string | undefined
|
||||
env.configPath;
|
||||
// $ExpectType string | undefined
|
||||
env.configBase;
|
||||
// $ExpectType string | undefined
|
||||
env.modulePath;
|
||||
// $ExpectType { [key: string]: any; } | undefined
|
||||
env.modulePackage;
|
||||
// $ExpectType { [extensions: string]: { [path: string]: string | null; }; } | undefined
|
||||
env.configFiles;
|
||||
}
|
||||
);
|
||||
new Liftoff().launch({ cwd: '' }, () => {});
|
||||
new Liftoff().launch({ configPath: '' }, () => {});
|
||||
new Liftoff().launch({ require: '' }, () => {});
|
||||
new Liftoff().launch({ forcedFlags: ['--trace-deprecation'] }, () => {});
|
||||
new Liftoff().launch({ forcedFlags: '--trace-deprecation' }, () => {});
|
||||
new Liftoff().launch(
|
||||
{
|
||||
forcedFlags: env => {
|
||||
// $ExpectType LiftoffEnv
|
||||
env;
|
||||
return ['--trace-deprecation'];
|
||||
},
|
||||
},
|
||||
() => {}
|
||||
);
|
||||
new Liftoff().launch(
|
||||
{
|
||||
forcedFlags: env => {
|
||||
return '--trace-deprecation';
|
||||
},
|
||||
},
|
||||
() => {}
|
||||
);
|
||||
new Liftoff().launch({ completion: '' }, () => {});
|
||||
|
||||
new Liftoff().on('require', (name, module) => {
|
||||
// $ExpectType string
|
||||
name;
|
||||
// $ExpectType ExtensionDescriptor
|
||||
module;
|
||||
});
|
||||
new Liftoff().on('requireFail', (name, err) => {
|
||||
// $ExpectType string
|
||||
name;
|
||||
// $ExpectType any
|
||||
err;
|
||||
});
|
||||
new Liftoff().on('respawn', (flags, child) => {
|
||||
// $ExpectType string[]
|
||||
flags;
|
||||
// $ExpectType Process
|
||||
child;
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"lib": [
|
||||
"es6"
|
||||
],
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"strictFunctionTypes": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"liftoff-tests.ts"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{ "extends": "dtslint/dt.json" }
|
||||
Reference in New Issue
Block a user