New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

development-tool

Package Overview
Dependencies
Maintainers
1
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

development-tool - npm Package Compare versions

Comparing version 0.3.2 to 0.4.0

lib/sourcemaps/loaders/BaseLoader.js.map

50

lib/TaskConfig.d.ts

@@ -15,17 +15,8 @@ /// <reference types="gulp" />

export declare type Src = string | string[];
export declare type Task = (gulp: Gulp, config: TaskConfig) => Src | void;
export interface EnvOption {
root?: string;
help?: boolean | string;
test?: boolean | string;
serve?: boolean | string;
e2e?: boolean | string;
release?: boolean;
deploy?: boolean;
watch?: boolean | string;
task?: string;
config?: string;
publish?: boolean | string;
grp?: Src;
export interface ITaskResult {
name?: string;
oper?: Operation;
}
export declare type TaskResult = string | ITaskResult;
export declare type Task = (gulp: Gulp, config: TaskConfig) => TaskResult | TaskResult[] | void;
export interface LoaderOption {

@@ -66,4 +57,3 @@ type?: string;

}
export interface Asserts {
src: Src;
export interface OutputDist {
dist?: string;

@@ -76,8 +66,16 @@ build?: string;

}
export interface TaskOption extends Asserts {
export interface TaskLoaderOption {
loader: string | LoaderOption | DynamicTask | DynamicTask[];
externalTask?: Task;
runTasks?: Src[] | ((oper: Operation, tasks: Src[], subGroupTask?: Src) => Src[]);
runTasks?: Src[] | ((oper: Operation, tasks: Src[], subGroupTask?: Src, assertsTask?: Src) => Src[]);
tasks?: TaskOption | TaskOption[];
}
export interface Asserts extends OutputDist, TaskLoaderOption {
name?: string;
src?: Src;
asserts?: IMap<Src | Asserts>;
}
export interface TaskOption extends Asserts {
src: Src;
}
export interface ITaskDefine {

@@ -92,3 +90,3 @@ moduleTaskConfig(oper: Operation, option: TaskOption, env: EnvOption): TaskConfig;

option: TaskOption;
runTasks?(subGroupTask?: Src, tasks?: Src[]): Src[];
runTasks?(subGroupTask?: Src, tasks?: Src[], assertTasks?: Src): Src[];
printHelp?(lang: string): void;

@@ -102,1 +100,15 @@ findTasksInModule?(module: string): Promise<Task[]>;

}
export interface EnvOption {
root?: string;
help?: boolean | string;
test?: boolean | string;
serve?: boolean | string;
e2e?: boolean | string;
release?: boolean;
deploy?: boolean;
watch?: boolean | string;
task?: string;
config?: string;
publish?: boolean | string;
grp?: Src;
}
/// <reference types="gulp" />
import { Gulp } from 'gulp';
import { ITaskLoader } from './ITaskLoader';
import { Src, Task, TaskOption, Operation, EnvOption, DynamicTask, TaskConfig } from './TaskConfig';
import { Src, Asserts, Task, TaskOption, Operation, EnvOption, DynamicTask, TaskResult, TaskConfig } from './TaskConfig';
import { DevelopConfig } from './DevelopConfig';

@@ -20,6 +20,7 @@ export * from './DevelopConfig';

runSequence(gulp: Gulp, tasks: Src[]): Promise<any>;
protected toSquence(tasks: Array<Src | void>): Src[];
protected loadTasks(gulp: Gulp, tasks: TaskOption | TaskOption[], env: EnvOption): Promise<Src[]>;
protected setup(gulp: Gulp, config: TaskConfig, tasks: Task[], subGroupTask: Src): Promise<Src[]>;
protected toSquence(tasks: Array<TaskResult | TaskResult[] | void>, oper: Operation): Src[];
protected loadTasks(gulp: Gulp, tasks: Asserts | Asserts[], env: EnvOption): Promise<Src[]>;
protected setup(gulp: Gulp, config: TaskConfig, tasks: Task[], assertsTask: Src, subGroupTask: Src): Promise<Src[]>;
protected loadSubTask(gulp: Gulp, config: TaskConfig): Promise<Src>;
protected loadAssertTasks(gulp: Gulp, config: TaskConfig): Promise<Src>;
protected createLoader(option: TaskOption): ITaskLoader;

@@ -26,0 +27,0 @@ protected printHelp(help: boolean | string): void;

@@ -88,4 +88,23 @@ "use strict";

}
toSquence(tasks) {
return _.filter(tasks, t => !!t);
toSquence(tasks, oper) {
let seq = [];
_.each(tasks, t => {
if (!t) {
return;
}
if (_.isString(t)) {
seq.push(t);
}
else if (_.isArray(t)) {
seq.push(_.flatten(this.toSquence(t, oper)));
}
else {
if (t.name) {
if (t.oper && ((t.oper & oper) > 0)) {
seq.push(t.name);
}
}
}
});
return seq;
}

@@ -95,4 +114,2 @@ loadTasks(gulp, tasks, env) {

optask.dist = optask.dist || 'dist';
console.log(chalk.grey('begin load task via loader:'), optask.loader);
let loader = this.createLoader(optask);
let oper;

@@ -114,2 +131,4 @@ if (env.deploy) {

}
console.log(chalk.grey('begin load task via loader:'), optask.loader);
let loader = this.createLoader(optask);
return loader.loadConfg(oper, env)

@@ -129,6 +148,9 @@ .then(cfg => {

.then(subtask => {
return loader.load(cfg)
return Promise.all([
loader.load(cfg),
this.loadAssertTasks(gulp, cfg)
])
.then(tasks => {
console.log(chalk.green('tasks loaded.'));
return this.setup(gulp, cfg, tasks, subtask);
return this.setup(gulp, cfg, tasks[0], tasks[1], subtask);
});

@@ -142,3 +164,3 @@ });

}
setup(gulp, config, tasks, subGroupTask) {
setup(gulp, config, tasks, assertsTask, subGroupTask) {
return Promise.all(_.map(tasks, t => {

@@ -148,20 +170,15 @@ return t(gulp, config);

.then(ts => {
let tsqs = this.toSquence(ts);
if (config.option.runTasks) {
if (_.isFunction(config.option.runTasks)) {
tsqs = config.option.runTasks(config.oper, tsqs, subGroupTask);
}
else {
tsqs = config.option.runTasks;
subGroupTask && tsqs.push(subGroupTask);
}
return tsqs;
let tsqs = this.toSquence(ts, config.oper);
if (_.isFunction(config.option.runTasks)) {
return config.option.runTasks(config.oper, tsqs, subGroupTask, assertsTask);
}
else if (_.isArray(config.option.runTasks)) {
tsqs = config.option.runTasks;
}
else if (config.runTasks) {
return config.runTasks(subGroupTask, tsqs);
return config.runTasks(subGroupTask, tsqs, assertsTask);
}
else {
subGroupTask && tsqs.push(subGroupTask);
return tsqs;
}
assertsTask && tsqs.splice(0, 0, assertsTask);
subGroupTask && tsqs.splice(0, 0, subGroupTask);
return tsqs;
});

@@ -183,3 +200,3 @@ }

let lsn = _.isArray(last) ? _.last(last) : last;
let subName = frn + '_' + lsn;
let subName = `${config.option.name ? config.option.name + '_' : ''}${frn}_${lsn}`;
gulp.task(subName, () => {

@@ -199,2 +216,46 @@ return runSequence(gulp, subseq);

}
loadAssertTasks(gulp, config) {
let optask = config.option;
if (optask.asserts) {
let tasks = _.map(_.keys(optask.asserts), name => {
let op;
let aop = optask.asserts[name];
if (_.isString(aop) || _.isArray(aop)) {
op = { src: aop, loader: [{ name: name, pipes: [] }, { name: `${name}-watch`, watch: [name] }] };
}
else {
op = aop;
}
;
optask.name = name;
op.src = op.src || (optask.src + '/**/*.' + name);
op.dist = op.dist || optask.dist;
return op;
});
return Promise.all(_.map(tasks, task => {
return this.loadTasks(gulp, task, config.env)
.then(sq => {
return {
task: task,
sq: sq
};
});
}))
.then(tseq => {
return _.map(tseq, t => {
let subseq = t.sq;
if (subseq && subseq.length > 0) {
gulp.task(t.task.name, () => {
return runSequence(gulp, subseq);
});
return t.task.name;
}
return t.sq;
});
});
}
else {
return Promise.resolve(null);
}
}
createLoader(option) {

@@ -354,8 +415,4 @@ let loader = null;

stream.pipe(output)
.on('end', () => {
resolve();
})
.on('error', (err) => {
reject(err);
});
.once('end', resolve)
.once('error', reject);
}).catch(err => {

@@ -370,6 +427,4 @@ reject(err);

stream.pipe(gulp.dest(cfg.getDist(cfg.option)))
.on('end', () => {
resolve();
})
.on('error', reject);
.once('end', resolve)
.once('error', reject);
});

@@ -376,0 +431,0 @@ }

{
"name": "development-tool",
"version": "0.3.2",
"version": "0.4.0",
"description": "development build tools.",

@@ -5,0 +5,0 @@ "main": "./lib/tools.js",

@@ -51,4 +51,4 @@ # packaged development-tool

tasks[
{src: 'src/client', dist: 'public', loader: 'development-tool-web', tasks:[...] }, // any module implement ITaskDefine
{src: 'src/server', dist: 'lib', loader: 'development-tool-node', tasks:[...] }
{src: 'src/client', dist: 'public', loader: 'development-tool-web', asserts:{...}, tasks:[...] }, // any module implement ITaskDefine
{src: 'src/server', dist: 'lib', loader: 'development-tool-node', asserts:{...}, tasks:[...] }
...

@@ -62,7 +62,6 @@ ]

import * as gulp from 'gulp';
import { Development } from 'development-tool';
import { NodeBuildOption } from 'development-tool-node';
import { Development, Asserts, TaskOption } from 'development-tool';
Development.create(gulp, __dirname, {
tasks:[
<NodeBuildOption>{
{
src: 'src',

@@ -74,12 +73,14 @@ dist: 'lib',

asserts:{
json: 'src/**/*.json',
css:'src/common/**/*.css',
moduleBcss: ['src/moduleB/**/*.css'],
moduleAcss: {
src: ['src/apath/**/*.css', 'src/bpath/**/*.css'],
dist:'dist path',
build:'build path',
release: 'release path',
depoly: 'depoly path'
},
//default copy 'src/**/*.json' to dist. auto create json task and json-watch task.
json: '',
//default copy to dist. auto create jpeg task and jpeg-watch task.
jpeg: ['src/apath/**/*.jpeg', 'src/bpath/**/*.jpeg'],
//default copy to dist. auto create moduleBcss task and moduleBcss-watch task.
moduleBcss: 'src/moduleB/**/*.css',
// use Asserts task to deal with ts file, if src not setting, use src/**/*.ts
ts:<Asserts>{...},
// use default task to deal with ts file, if src must setting.
less:<TaskOption>{...},
// use dynamic task to deal with html file, if src not setting, use src/**/*.html
html:{loader: <DynamicTask[]>[}
...

@@ -100,3 +101,3 @@ },

dist: 'lib',
loader: 'development-tool-node',
loader: 'development-tool-web',
tasks:[

@@ -200,3 +201,3 @@ {

// or with task from module
// or with task from module and asserts.
Development.create(gulp, __dirname, {

@@ -206,2 +207,17 @@ tasks: {

dist: 'lib',
asserts:{
//default copy 'src/**/*.json' to dist. auto create json task and json-watch task.
json: '',
//default copy to dist. auto create jpeg task and jpeg-watch task.
jpeg: ['src/apath/**/*.jpeg', 'src/bpath/**/*.jpeg'],
//default copy to dist. auto create moduleBcss task and moduleBcss-watch task.
moduleBcss: 'src/moduleB/**/*.css',
// use Asserts task to deal with ts file, if src not setting, use src/**/*.ts
ts:<Asserts>{...},
// use default task to deal with ts file, if src must setting.
less:<TaskOption>{...},
// use dynamic task to deal with html file, if src not setting, use src/**/*.html
html:{loader: <DynamicTask[]>[}
...
},
loader: {

@@ -212,3 +228,3 @@ module:'module name',

name: 'clean',
task: (config) => del(config.option.dist)
task: (config) => del(config.getDist())
},

@@ -215,0 +231,0 @@ {

@@ -48,61 +48,16 @@ import { Gulp, WatchEvent, WatchCallback } from 'gulp';

export type Task = (gulp: Gulp, config: TaskConfig) => Src | void;
/**
* event option
* Task return type.
*
* @export
* @interface EnvOption
* @interface ITaskResult
*/
export interface EnvOption {
/**
* project root.
*
* @type {string}
* @memberOf EnvOption
*/
root?: string;
/**
* help doc
*
* @type {(boolean | string)}
* @memberOf EnvOption
*/
help?: boolean | string;
test?: boolean | string;
serve?: boolean | string;
e2e?: boolean | string;
release?: boolean;
deploy?: boolean;
watch?: boolean | string;
/**
* run spruce task.
*/
task?: string;
export interface ITaskResult {
name?: string;
oper?: Operation;
}
/**
* project config setting.
*
* @type {string}
* @memberOf EnvOption
*/
config?: string;
export type TaskResult = string | ITaskResult;
export type Task = (gulp: Gulp, config: TaskConfig) => TaskResult | TaskResult[] | void;
// key?: number;
// value?: number;
// csv?: string;
// dist?: string;
// lang?: string;
publish?: boolean | string;
/**
* group bundle.
*
* @type {Src}
* @memberOf EnvOption
*/
grp?: Src;
}
/**

@@ -330,53 +285,40 @@ * task loader option.

/**
* asserts to be dealt with.
*
* @export
* @interface Asserts
*/
export interface Asserts {
export interface OutputDist {
/**
* the src file filter string. default 'src'.
*
* @type {string}
* @memberOf Asserts
* default output folder. if empty use parent setting, or ues 'dist'.
*/
src: Src;
/**
* default folder. if empty use parent setting, or ues 'dist'.
*/
dist?: string;
/**
* build folder. if empty use parent setting, or ues 'dist'.
* build output folder. if empty use parent setting, or ues 'dist'.
*
* @type {string}
* @memberOf Asserts
* @memberOf Dist
*/
build?: string;
/**
* test folder. if empty use parent setting, or ues 'dist'.
* test output folder. if empty use parent setting, or ues 'dist'.
*
* @type {string}
* @memberOf Asserts
* @memberOf Dist
*/
test?: string;
/**
* build folder. if empty use parent setting, or ues 'dist'.
* e2e output folder. if empty use parent setting, or ues 'dist'.
*
* @type {string}
* @memberOf Asserts
* @memberOf Dist
*/
e2e?: string;
/**
* e2e folder. if empty use parent setting, or ues 'dist'.
* release output folder. if empty use parent setting, or ues 'dist'.
*
* @type {string}
* @memberOf Asserts
* @memberOf Dist
*/
release?: string;
/**
* deploy folder. if empty use parent setting, or ues 'dist'.
* deploy output folder. if empty use parent setting, or ues 'dist'.
*
* @type {string}
* @memberOf Asserts
* @memberOf Dist
*/

@@ -386,9 +328,4 @@ deploy?: string;

/**
* task option setting.
*
* @export
* @interface TaskOption
*/
export interface TaskOption extends Asserts {
export interface TaskLoaderOption {
/**

@@ -414,3 +351,3 @@ * task loader

*/
runTasks?: Src[] | ((oper: Operation, tasks: Src[], subGroupTask?: Src) => Src[]);
runTasks?: Src[] | ((oper: Operation, tasks: Src[], subGroupTask?: Src, assertsTask?: Src) => Src[]);

@@ -426,3 +363,53 @@ /**

/**
* asserts to be dealt with.
*
* @export
* @interface Asserts
*/
export interface Asserts extends OutputDist, TaskLoaderOption {
/**
* asserts extends name. for register dynamic task.
*
* @type {string}
* @memberOf Asserts
*/
name?: string;
/**
* the src file filter string. default 'src'.
*
* @type {string}
* @memberOf Asserts
*/
src?: Src;
/**
* tasks to deal with asserts.
*
* @type {IMap<Src | Asserts>}
* @memberOf Asserts
*/
asserts?: IMap<Src | Asserts>;
}
/**
* task option setting.
*
* @export
* @interface TaskOption
*/
export interface TaskOption extends Asserts {
/**
* the src file filter string. default 'src'.
*
* @type {string}
* @memberOf TaskOption
*/
src: Src;
}
/**
* modules task define

@@ -499,4 +486,5 @@ *

*
* @param {Src} [subGroupTask] sub tasks group tasks.
* @param {Src[]} [tasks] task name sequence from register tasks.
* @param {Src} [subGroupTask]
* @param {Src[]} [tasks]
* @param {Src} [assertTasks]
* @returns {Src[]}

@@ -506,3 +494,3 @@ *

*/
runTasks?(subGroupTask?: Src, tasks?: Src[]): Src[];
runTasks?(subGroupTask?: Src, tasks?: Src[], assertTasks?: Src): Src[];
/**

@@ -576,1 +564,58 @@ * custom print help.

}
/**
* event option
*
* @export
* @interface EnvOption
*/
export interface EnvOption {
/**
* project root.
*
* @type {string}
* @memberOf EnvOption
*/
root?: string;
/**
* help doc
*
* @type {(boolean | string)}
* @memberOf EnvOption
*/
help?: boolean | string;
test?: boolean | string;
serve?: boolean | string;
e2e?: boolean | string;
release?: boolean;
deploy?: boolean;
watch?: boolean | string;
/**
* run spruce task.
*/
task?: string;
/**
* project config setting.
*
* @type {string}
* @memberOf EnvOption
*/
config?: string;
// key?: number;
// value?: number;
// csv?: string;
// dist?: string;
// lang?: string;
publish?: boolean | string;
/**
* group bundle.
*
* @type {Src}
* @memberOf EnvOption
*/
grp?: Src;
}

@@ -7,3 +7,3 @@ import * as _ from 'lodash';

import { LoaderFactory } from './LoaderFactory';
import { Src, Asserts, Task, TaskOption, Operation, EnvOption, DynamicTask, Pipe, TaskConfig } from './TaskConfig';
import { Src, Asserts, Task, TaskOption, Operation, EnvOption, DynamicTask, TaskResult, Pipe, TaskConfig } from './TaskConfig';
import { DevelopConfig } from './DevelopConfig';

@@ -118,12 +118,27 @@ import * as chalk from 'chalk';

protected toSquence(tasks: Array<Src | void>): Src[] {
return <Src[]>_.filter(tasks, t => !!t);
protected toSquence(tasks: Array<TaskResult | TaskResult[] | void>, oper: Operation): Src[] {
let seq: Src[] = [];
_.each(tasks, t => {
if (!t) {
return;
}
if (_.isString(t)) {
seq.push(t);
} else if (_.isArray(t)) {
seq.push(_.flatten(this.toSquence(t, oper)));
} else {
if (t.name) {
if (t.oper && ((t.oper & oper) > 0)) {
seq.push(t.name);
}
}
}
});
return seq;
}
protected loadTasks(gulp: Gulp, tasks: TaskOption | TaskOption[], env: EnvOption): Promise<Src[]> {
protected loadTasks(gulp: Gulp, tasks: Asserts | Asserts[], env: EnvOption): Promise<Src[]> {
return Promise.all<Src[]>(
_.map(_.isArray(tasks) ? <TaskOption[]>tasks : [<TaskOption>tasks], optask => {
optask.dist = optask.dist || 'dist';
console.log(chalk.grey('begin load task via loader:'), optask.loader);
let loader = this.createLoader(optask);
let oper: Operation;

@@ -142,2 +157,5 @@ if (env.deploy) {

console.log(chalk.grey('begin load task via loader:'), optask.loader);
let loader = this.createLoader(optask);
return loader.loadConfg(oper, env)

@@ -156,6 +174,9 @@ .then(cfg => {

.then(subtask => {
return loader.load(cfg)
return Promise.all([
loader.load(cfg),
this.loadAssertTasks(gulp, cfg)
])
.then(tasks => {
console.log(chalk.green('tasks loaded.'));
return this.setup(gulp, cfg, tasks, subtask)
return this.setup(gulp, cfg, tasks[0], tasks[1], subtask)
});

@@ -165,8 +186,9 @@ });

});
})).then(tsq => {
return _.flatten(tsq);
});
})
).then(tsq => {
return _.flatten(tsq);
});
}
protected setup(gulp: Gulp, config: TaskConfig, tasks: Task[], subGroupTask: Src): Promise<Src[]> {
protected setup(gulp: Gulp, config: TaskConfig, tasks: Task[], assertsTask: Src, subGroupTask: Src): Promise<Src[]> {
return Promise.all(_.map(tasks, t => {

@@ -176,17 +198,15 @@ return t(gulp, config);

.then(ts => {
let tsqs: Src[] = this.toSquence(ts);
if (config.option.runTasks) {
if (_.isFunction(config.option.runTasks)) {
tsqs = config.option.runTasks(config.oper, tsqs, subGroupTask);
} else {
tsqs = config.option.runTasks;
subGroupTask && tsqs.push(subGroupTask);
}
return tsqs;
let tsqs: Src[] = this.toSquence(ts, config.oper);
if (_.isFunction(config.option.runTasks)) {
return config.option.runTasks(config.oper, tsqs, subGroupTask, assertsTask);
} else if (_.isArray(config.option.runTasks)) {
tsqs = config.option.runTasks;
} else if (config.runTasks) {
return config.runTasks(subGroupTask, tsqs);
} else {
subGroupTask && tsqs.push(subGroupTask);
return tsqs;
return config.runTasks(subGroupTask, tsqs, assertsTask);
}
assertsTask && tsqs.splice(0, 0, assertsTask)
subGroupTask && tsqs.splice(0, 0, subGroupTask);
return tsqs;
});

@@ -219,3 +239,3 @@ }

let lsn = _.isArray(last) ? _.last(last) : last;
let subName = frn + '_' + lsn;
let subName = `${config.option.name ? config.option.name + '_' : ''}${frn}_${lsn}`;
gulp.task(subName, () => {

@@ -232,3 +252,46 @@ return runSequence(gulp, subseq);

}
}
protected loadAssertTasks(gulp: Gulp, config: TaskConfig): Promise<Src> {
let optask = config.option;
if (optask.asserts) {
let tasks = _.map(_.keys(optask.asserts), name => {
let op: Asserts;
let aop = optask.asserts[name];
if (_.isString(aop) || _.isArray(aop)) {
op = <Asserts>{ src: aop, loader: [{ name: name, pipes: [] }, { name: `${name}-watch`, watch: [name] }] };
} else {
op = aop;
};
optask.name = name;
op.src = op.src || (optask.src + '/**/*.' + name);
op.dist = op.dist || optask.dist;
return op;
});
return Promise.all(_.map(tasks, task => {
return this.loadTasks(gulp, task, config.env)
.then(sq => {
return {
task: task,
sq: sq
}
});
}))
.then(tseq => {
// asserts tasks run mutil.
return _.map(tseq, t => {
let subseq = t.sq;
if (subseq && subseq.length > 0) {
gulp.task(t.task.name, () => {
return runSequence(gulp, subseq);
})
return t.task.name;
}
return t.sq;
});
});
} else {
return Promise.resolve(null);
}
}

@@ -434,8 +497,4 @@

stream.pipe(output)
.on('end', () => {
resolve();
})
.on('error', (err) => {
reject(err);
});
.once('end', resolve)
.once('error', reject);
}).catch(err => {

@@ -450,6 +509,4 @@ reject(err);

stream.pipe(gulp.dest(cfg.getDist(cfg.option)))
.on('end', () => {
resolve();
})
.on('error', reject);
.once('end', resolve)
.once('error', reject);
});

@@ -456,0 +513,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc