@@ -21,7 +21,8 @@ module.exports = class IService {
2121 middleware : {
2222 pre : { } ,
2323 post : { }
24- }
24+ } ,
25+ tasks : { }
2526 }
2627
2728 this . middleware_order = {
@@ -36,7 +37,8 @@ module.exports = class IService {
3637 middleware : {
3738 pre : { } ,
3839 post : { }
39- }
40+ } ,
41+ tasks : { }
4042 }
4143
4244 this . compiled = {
@@ -55,7 +57,27 @@ module.exports = class IService {
5557 middleware_order : {
5658 pre : [ ] ,
5759 post : [ ]
58- }
60+ } ,
61+ tasks : { }
62+ }
63+
64+ this . compileSettings = {
65+ // provide a custom cache path or disable caching
66+ cache : false ,
67+ // externals to leave as requires of the build
68+ externals : [ 'debug' , '@dataparty/crypto' , '@dataparty/tasker' , '@hapi/joi' , '@hapi/hoek' ] ,
69+ // directory outside of which never to emit assets
70+ //filterAssetBase: process.cwd(), // default
71+ minify : false , // default
72+ sourceMap : true , // default
73+ //sourceMapBasePrefix: '../', // default treats sources as output-relative
74+ // when outputting a sourcemap, automatically include
75+ // source-map-support in the output file (increases output by 32kB).
76+ sourceMapRegister : false , // default
77+ watch : false , // default
78+ v8cache : false , // default
79+ quiet : false , // default
80+ debugLog : false // default
5981 }
6082 }
6183
@@ -112,6 +134,18 @@ module.exports = class IService {
112134 this . constructors . middleware [ type ] [ name ] = middleware
113135 }
114136
137+ addTask ( task_path ) {
138+
139+ debug ( 'addTask' , task_path )
140+
141+ const TaskClass = require ( task_path )
142+
143+ const name = TaskClass . Name
144+
145+ this . sources . tasks [ name ] = task_path
146+ this . constructors . tasks [ name ] = TaskClass
147+ }
148+
115149
116150 async compile ( outputPath , writeFile = true ) {
117151
@@ -131,11 +165,14 @@ module.exports = class IService {
131165 this . compileMiddleware ( 'post' ) ,
132166 this . compileList ( 'documents' ) ,
133167 this . compileList ( 'endpoints' ) ,
168+ this . compileList ( 'tasks' ) ,
134169 this . compileSchemas ( )
135170 ] )
136171
137172 this . compiled . middleware_order = this . middleware_order
138173
174+ this . compiled . compileSettings = this . compileSettings
175+
139176 if ( writeFile ) {
140177 const buildOutput = outputPath + '/' + this . compiled . package . name . replace ( '/' , '-' ) + '.dataparty-service.json'
141178 fs . writeFileSync ( buildOutput , JSON . stringify ( this . compiled , null , 2 ) )
@@ -179,24 +216,7 @@ module.exports = class IService {
179216 }
180217
181218 async compileFileTo ( input , output ) {
182- const { code, map, assets } = await NCC ( input , {
183- // provide a custom cache path or disable caching
184- cache : false ,
185- // externals to leave as requires of the build
186- externals : [ 'debug' , '@dataparty/crypto' , '@hapi/joi' , '@hapi/hoek' ] ,
187- // directory outside of which never to emit assets
188- //filterAssetBase: process.cwd(), // default
189- minify : true , // default
190- sourceMap : true , // default
191- //sourceMapBasePrefix: '../', // default treats sources as output-relative
192- // when outputting a sourcemap, automatically include
193- // source-map-support in the output file (increases output by 32kB).
194- sourceMapRegister : false , // default
195- watch : false , // default
196- v8cache : false , // default
197- quiet : false , // default
198- debugLog : false // default
199- } )
219+ const { code, map, assets } = await NCC ( input , this . compileSettings )
200220
201221 debug ( 'compileFileTo' , input , '->' , output )
202222 debug ( '\t' , 'code length' , Math . round ( code . length / 1024 ) , 'KB' )
0 commit comments