From ac096c0d7945a09c4f3ee09ea570af67ffadb426 Mon Sep 17 00:00:00 2001 From: llam <35342488+leocwlam@users.noreply.github.com> Date: Tue, 23 Jun 2020 12:20:55 -0400 Subject: [PATCH] Add new typeing for System Task (#45489) Co-authored-by: leo lam --- types/system-task/index.d.ts | 26 +++++++++++++++ types/system-task/system-task-tests.ts | 45 ++++++++++++++++++++++++++ types/system-task/tsconfig.json | 25 ++++++++++++++ types/system-task/tslint.json | 6 ++++ 4 files changed, 102 insertions(+) create mode 100644 types/system-task/index.d.ts create mode 100644 types/system-task/system-task-tests.ts create mode 100644 types/system-task/tsconfig.json create mode 100644 types/system-task/tslint.json diff --git a/types/system-task/index.d.ts b/types/system-task/index.d.ts new file mode 100644 index 0000000000..d05d81b570 --- /dev/null +++ b/types/system-task/index.d.ts @@ -0,0 +1,26 @@ +// Type definitions for system-task 1.0 +// Project: https://github.com/leocwlam/system-task +// Definitions by: Leo Lam +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// Minimum TypeScript Version: 3.1 + +/// + +export = SystemTask; + +declare class SystemTask { + type: string; + constructor(taskType: string, isAsyncProcess?: boolean, logMethod?: any); + log(type: string, message: string, detail?: any): void; + insertPreprocessItemsHandler(task: SystemTask): Promise; + preprocessHandler(task: SystemTask, preProcessItem: any): Promise; + processHandler(task: SystemTask, processItem: any): Promise; + cleanupHandler(task: SystemTask, cleanupItems: any[]): Promise; + isValidProcess(): void; + start(): void; +} + +declare namespace SystemTask { + function asyncProcess(items: any[], executeAsyncCall: any, task: SystemTask, errors: any[]): Promise; + function syncProcess(items: any[], executeSyncCall: any, task: SystemTask, errors: any[]): Promise; +} diff --git a/types/system-task/system-task-tests.ts b/types/system-task/system-task-tests.ts new file mode 100644 index 0000000000..e40656e903 --- /dev/null +++ b/types/system-task/system-task-tests.ts @@ -0,0 +1,45 @@ +import * as SystemTask from 'system-task'; + +const TYPE = 'Demo Task'; +const REQUIREASYNCEPROCESS = true; + +const DEMOASSET = { + name: 'DEMO ASSET', + async execute(message: string) { + return new Promise((res) => { + setTimeout(() => { + console.log(`Done with ${message}`); + res(); + }, 500); + }); + } +}; + +const logMethod = (messageType: string, message: string, detailMessage?: any) => { + console.log(messageType, message, detailMessage); +}; + +class DemoTask extends SystemTask { + constructor() { + super(TYPE, REQUIREASYNCEPROCESS, logMethod); + } + + async insertPreprocessItemsHandler(task: DemoTask): Promise { + if (!task) { + throw new Error('missing task'); + } + return [ + {...DEMOASSET, name: 'Asset 1' }, + {...DEMOASSET, name: 'Asset 2' } + ]; + } + + async processHandler(task: DemoTask, processItem: any): Promise { + await processItem.execute(processItem.name); + + return processItem; + } +} + +const task: DemoTask = new DemoTask(); +task.start(); diff --git a/types/system-task/tsconfig.json b/types/system-task/tsconfig.json new file mode 100644 index 0000000000..498ab2f56e --- /dev/null +++ b/types/system-task/tsconfig.json @@ -0,0 +1,25 @@ + +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "target": "es2017", + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "system-task-tests.ts" + ] +} diff --git a/types/system-task/tslint.json b/types/system-task/tslint.json new file mode 100644 index 0000000000..41344f59e7 --- /dev/null +++ b/types/system-task/tslint.json @@ -0,0 +1,6 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "npm-naming": false + } +}