@transai/connector-runner-file 0.3.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/index.cjs +1 -1
- package/index.cjs.map +2 -2
- package/index.js +1 -1
- package/index.js.map +2 -2
- package/libs/connector-runtime-sdk/src/lib/sdk/receiver.sdk.interface.d.ts +1 -1
- package/libs/types/src/lib/management-api/workflow/workflow-run.d.ts +1 -5
- package/libs/types/src/lib/management-api/workflow/workflow.drawing.d.ts +1 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## 0.4.0 (2025-12-05)
|
|
2
|
+
|
|
3
|
+
### 🧱 Updated Dependencies
|
|
4
|
+
|
|
5
|
+
- Updated @transai/connector-runtime-sdk to 0.4.0
|
|
6
|
+
|
|
7
|
+
## 0.3.1 (2025-12-02)
|
|
8
|
+
|
|
9
|
+
### 🧱 Updated Dependencies
|
|
10
|
+
|
|
11
|
+
- Updated @transai/connector-runtime-sdk to 0.3.1
|
|
12
|
+
|
|
1
13
|
## 0.3.0 (2025-11-26)
|
|
2
14
|
|
|
3
15
|
### 🚀 Features
|
package/index.cjs
CHANGED
|
@@ -45,7 +45,7 @@ ${D}`),v.pop(),`{${_}}`}case"number":return isFinite(h)?String(h):e?e(h):"null";
|
|
|
45
45
|
`),stack:e&&e.stack,exception:!0,date:new Date().toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:Zg.loadavg(),uptime:Zg.uptime()}}getTrace(e){return(e?em.parse(e):em.get()).map(n=>({column:n.getColumnNumber(),file:n.getFileName(),function:n.getFunctionName(),line:n.getLineNumber(),method:n.getMethodName(),native:n.isNative()}))}_addHandler(e){if(!this.handlers.has(e)){e.handleExceptions=!0;let r=new t2(e);this.handlers.set(e,r),this.logger.pipe(r)}}_uncaughtException(e){let r=this.getAllInfo(e),n=this._getExceptionHandlers(),i=typeof this.logger.exitOnError=="function"?this.logger.exitOnError(e):this.logger.exitOnError,o;!n.length&&i&&(console.warn("winston: exitOnError cannot be true with no exception handlers."),console.warn("winston: not exiting process."),i=!1);function s(){Qs("doExit",i),Qs("process._exiting",process._exiting),i&&!process._exiting&&(o&&clearTimeout(o),process.exit(1))}if(!n||n.length===0)return process.nextTick(s);ZO(n,(a,u)=>{let d=e2(u),w=a.transport||a;function E(y){return()=>{Qs(y),d()}}w._ending=!0,w.once("finish",E("finished")),w.once("error",E("error"))},()=>i&&s()),this.logger.log(r),i&&(o=setTimeout(s,3e3))}_getExceptionHandlers(){return this.logger.transports.filter(e=>(e.transport||e).handleExceptions)}}});var nm=T((sM,rm)=>{"use strict";var{Writable:r2}=Et();rm.exports=class extends r2{constructor(e){if(super({objectMode:!0}),!e)throw new Error("RejectionStream requires a TransportStream instance.");this.handleRejections=!0,this.transport=e}_write(e,r,n){return e.rejection?this.transport.log(e,n):(n(),!0)}}});var ta=T((uM,sm)=>{"use strict";var im=require("os"),n2=Ii(),ea=qr()("winston:rejection"),i2=Ks(),om=Js(),o2=nm();sm.exports=class{constructor(e){if(!e)throw new Error("Logger is required to handle rejections");this.logger=e,this.handlers=new Map}handle(...e){e.forEach(r=>{if(Array.isArray(r))return r.forEach(n=>this._addHandler(n));this._addHandler(r)}),this.catcher||(this.catcher=this._unhandledRejection.bind(this),process.on("unhandledRejection",this.catcher))}unhandle(){this.catcher&&(process.removeListener("unhandledRejection",this.catcher),this.catcher=!1,Array.from(this.handlers.values()).forEach(e=>this.logger.unpipe(e)))}getAllInfo(e){let r=null;return e&&(r=typeof e=="string"?e:e.message),{error:e,level:"error",message:[`unhandledRejection: ${r||"(no error message)"}`,e&&e.stack||" No stack trace"].join(`
|
|
46
46
|
`),stack:e&&e.stack,rejection:!0,date:new Date().toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:im.loadavg(),uptime:im.uptime()}}getTrace(e){return(e?om.parse(e):om.get()).map(n=>({column:n.getColumnNumber(),file:n.getFileName(),function:n.getFunctionName(),line:n.getLineNumber(),method:n.getMethodName(),native:n.isNative()}))}_addHandler(e){if(!this.handlers.has(e)){e.handleRejections=!0;let r=new o2(e);this.handlers.set(e,r),this.logger.pipe(r)}}_unhandledRejection(e){let r=this.getAllInfo(e),n=this._getRejectionHandlers(),i=typeof this.logger.exitOnError=="function"?this.logger.exitOnError(e):this.logger.exitOnError,o;!n.length&&i&&(console.warn("winston: exitOnError cannot be true with no rejection handlers."),console.warn("winston: not exiting process."),i=!1);function s(){ea("doExit",i),ea("process._exiting",process._exiting),i&&!process._exiting&&(o&&clearTimeout(o),process.exit(1))}if(!n||n.length===0)return process.nextTick(s);n2(n,(a,u)=>{let d=i2(u),w=a.transport||a;function E(y){return()=>{ea(y),d()}}w._ending=!0,w.once("finish",E("finished")),w.once("error",E("error"))},()=>i&&s()),this.logger.log(r),i&&(o=setTimeout(s,3e3))}_getRejectionHandlers(){return this.logger.transports.filter(e=>(e.transport||e).handleRejections)}}});var um=T((lM,am)=>{"use strict";var ra=class{constructor(e){let r=Ai();if(typeof e!="object"||Array.isArray(e)||!(e instanceof r))throw new Error("Logger is required for profiling");this.logger=e,this.start=Date.now()}done(...e){typeof e[e.length-1]=="function"&&(console.warn("Callback function no longer supported as of winston@3.0.0"),e.pop());let r=typeof e[e.length-1]=="object"?e.pop():{};return r.level=r.level||"info",r.durationMs=Date.now()-this.start,this.logger.write(r)}};am.exports=ra});var Ai=T((fM,hm)=>{"use strict";var{Stream:s2,Transform:a2}=Et(),lm=Ii(),{LEVEL:Pe,SPLAT:fm}=ne(),cm=zs(),u2=Zs(),l2=ta(),f2=ss(),c2=um(),{warn:h2}=Ro(),d2=Mi(),p2=/%[scdjifoO%]/g,qi=class extends a2{constructor(e){super({objectMode:!0}),this.configure(e)}child(e){let r=this;return Object.create(r,{write:{value:function(n){let i=Object.assign({},e,n);n instanceof Error&&(i.stack=n.stack,i.message=n.message),r.write(i)}}})}configure({silent:e,format:r,defaultMeta:n,levels:i,level:o="info",exitOnError:s=!0,transports:a,colors:u,emitErrs:d,formatters:w,padLevels:E,rewriters:y,stripColors:m,exceptionHandlers:h,rejectionHandlers:v}={}){if(this.transports.length&&this.clear(),this.silent=e,this.format=r||this.format||So()(),this.defaultMeta=n||null,this.levels=i||this.levels||d2.npm.levels,this.level=o,this.exceptions&&this.exceptions.unhandle(),this.rejections&&this.rejections.unhandle(),this.exceptions=new u2(this),this.rejections=new l2(this),this.profilers={},this.exitOnError=s,a&&(a=Array.isArray(a)?a:[a],a.forEach(C=>this.add(C))),u||d||w||E||y||m)throw new Error(["{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.","Use a custom winston.format(function) instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join(`
|
|
47
47
|
`));h&&this.exceptions.handle(h),v&&this.rejections.handle(v)}getHighestLogLevel(){let e=$r(this.levels,this.level);return!this.transports||this.transports.length===0?e:this.transports.reduce((r,n)=>{let i=$r(this.levels,n.level);return i!==null&&i>r?i:r},e)}isLevelEnabled(e){let r=$r(this.levels,e);if(r===null)return!1;let n=$r(this.levels,this.level);return n===null?!1:!this.transports||this.transports.length===0?n>=r:this.transports.findIndex(o=>{let s=$r(this.levels,o.level);return s===null&&(s=n),s>=r})!==-1}log(e,r,...n){if(arguments.length===1)return e[Pe]=e.level,this._addDefaultMeta(e),this.write(e),this;if(arguments.length===2)return r&&typeof r=="object"?(r[Pe]=r.level=e,this._addDefaultMeta(r),this.write(r),this):(r={[Pe]:e,level:e,message:r},this._addDefaultMeta(r),this.write(r),this);let[i]=n;if(typeof i=="object"&&i!==null&&!(r&&r.match&&r.match(p2))){let s=Object.assign({},this.defaultMeta,i,{[Pe]:e,[fm]:n,level:e,message:r});return i.message&&(s.message=`${s.message} ${i.message}`),i.stack&&(s.stack=i.stack),i.cause&&(s.cause=i.cause),this.write(s),this}return this.write(Object.assign({},this.defaultMeta,{[Pe]:e,[fm]:n,level:e,message:r})),this}_transform(e,r,n){if(this.silent)return n();e[Pe]||(e[Pe]=e.level),!this.levels[e[Pe]]&&this.levels[e[Pe]]!==0&&console.error("[winston] Unknown logger level: %s",e[Pe]),this._readableState.pipes||console.error("[winston] Attempt to write logs with no transports, which can increase memory usage: %j",e);try{this.push(this.format.transform(e,this.format.options))}finally{this._writableState.sync=!1,n()}}_final(e){let r=this.transports.slice();lm(r,(n,i)=>{if(!n||n.finished)return setImmediate(i);n.once("finish",i),n.end()},e)}add(e){let r=!cm(e)||e.log.length>2?new f2({transport:e}):e;if(!r._writableState||!r._writableState.objectMode)throw new Error("Transports must WritableStreams in objectMode. Set { objectMode: true }.");return this._onEvent("error",r),this._onEvent("warn",r),this.pipe(r),e.handleExceptions&&this.exceptions.handle(),e.handleRejections&&this.rejections.handle(),this}remove(e){if(!e)return this;let r=e;return(!cm(e)||e.log.length>2)&&(r=this.transports.filter(n=>n.transport===e)[0]),r&&this.unpipe(r),this}clear(){return this.unpipe(),this}close(){return this.exceptions.unhandle(),this.rejections.unhandle(),this.clear(),this.emit("close"),this}setLevels(){h2.deprecated("setLevels")}query(e,r){typeof e=="function"&&(r=e,e={}),e=e||{};let n={},i=Object.assign({},e.query||{});function o(a,u){e.query&&typeof a.formatQuery=="function"&&(e.query=a.formatQuery(i)),a.query(e,(d,w)=>{if(d)return u(d);typeof a.formatResults=="function"&&(w=a.formatResults(w,e.format)),u(null,w)})}function s(a,u){o(a,(d,w)=>{u&&(w=d||w,w&&(n[a.name]=w),u()),u=null})}lm(this.transports.filter(a=>!!a.query),s,()=>r(null,n))}stream(e={}){let r=new s2,n=[];return r._streams=n,r.destroy=()=>{let i=n.length;for(;i--;)n[i].destroy()},this.transports.filter(i=>!!i.stream).forEach(i=>{let o=i.stream(e);o&&(n.push(o),o.on("log",s=>{s.transport=s.transport||[],s.transport.push(i.name),r.emit("log",s)}),o.on("error",s=>{s.transport=s.transport||[],s.transport.push(i.name),r.emit("error",s)}))}),r}startTimer(){return new c2(this)}profile(e,...r){let n=Date.now();if(this.profilers[e]){let i=this.profilers[e];delete this.profilers[e],typeof r[r.length-2]=="function"&&(console.warn("Callback function no longer supported as of winston@3.0.0"),r.pop());let o=typeof r[r.length-1]=="object"?r.pop():{};return o.level=o.level||"info",o.durationMs=n-i,o.message=o.message||e,this.write(o)}return this.profilers[e]=n,this}handleExceptions(...e){console.warn("Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()"),this.exceptions.handle(...e)}unhandleExceptions(...e){console.warn("Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()"),this.exceptions.unhandle(...e)}cli(){throw new Error(["Logger.cli() was removed in winston@3.0.0","Use a custom winston.formats.cli() instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join(`
|
|
48
|
-
`))}_onEvent(e,r){function n(i){e==="error"&&!this.transports.includes(r)&&this.add(r),this.emit(e,i,r)}r["__winston"+e]||(r["__winston"+e]=n.bind(this),r.on(e,r["__winston"+e]))}_addDefaultMeta(e){this.defaultMeta&&Object.assign(e,this.defaultMeta)}};function $r(t,e){let r=t[e];return!r&&r!==0?null:r}Object.defineProperty(qi.prototype,"transports",{configurable:!1,enumerable:!0,get(){let{pipes:t}=this._readableState;return Array.isArray(t)?t:[t].filter(Boolean)}});hm.exports=qi});var na=T((cM,dm)=>{"use strict";var{LEVEL:g2}=ne(),m2=Mi(),y2=Ai(),b2=qr()("winston:create-logger");function w2(t){return"is"+t.charAt(0).toUpperCase()+t.slice(1)+"Enabled"}dm.exports=function(t={}){t.levels=t.levels||m2.npm.levels;class e extends y2{constructor(i){super(i)}}let r=new e(t);return Object.keys(t.levels).forEach(function(n){if(b2('Define prototype method for "%s"',n),n==="log"){console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.');return}e.prototype[n]=function(...i){let o=this||r;if(i.length===1){let[s]=i,a=s&&s.message&&s||{message:s};return a.level=a[g2]=n,o._addDefaultMeta(a),o.write(a),this||r}return i.length===0?(o.log(n,""),o):o.log(n,...i)},e.prototype[w2(n)]=function(){return(this||r).isLevelEnabled(n)}}),r}});var gm=T((dM,pm)=>{"use strict";var _2=na();pm.exports=class{constructor(e={}){this.loggers=new Map,this.options=e}add(e,r){if(!this.loggers.has(e)){r=Object.assign({},r||this.options);let n=r.transports||this.options.transports;n?r.transports=Array.isArray(n)?n.slice():[n]:r.transports=[];let i=_2(r);i.on("close",()=>this._delete(e)),this.loggers.set(e,i)}return this.loggers.get(e)}get(e,r){return this.add(e,r)}has(e){return!!this.loggers.has(e)}close(e){if(e)return this._removeLogger(e);this.loggers.forEach((r,n)=>this._removeLogger(n))}_removeLogger(e){if(!this.loggers.has(e))return;this.loggers.get(e).close(),this._delete(e)}_delete(e){this.loggers.delete(e)}}});var ym=T(z=>{"use strict";var mm=Mo(),{warn:Ur}=Ro();z.version=Oh().version;z.transports=Ug();z.config=Mi();z.addColors=mm.levels;z.format=mm.format;z.createLogger=na();z.Logger=Ai();z.ExceptionHandler=Zs();z.RejectionHandler=ta();z.Container=gm();z.Transport=$t();z.loggers=new z.Container;var Ce=z.createLogger();Object.keys(z.config.npm.levels).concat(["log","query","stream","add","remove","clear","profile","startTimer","handleExceptions","unhandleExceptions","handleRejections","unhandleRejections","configure","child"]).forEach(t=>z[t]=(...e)=>Ce[t](...e));Object.defineProperty(z,"level",{get(){return Ce.level},set(t){Ce.level=t}});Object.defineProperty(z,"exceptions",{get(){return Ce.exceptions}});Object.defineProperty(z,"rejections",{get(){return Ce.rejections}});["exitOnError"].forEach(t=>{Object.defineProperty(z,t,{get(){return Ce[t]},set(e){Ce[t]=e}})});Object.defineProperty(z,"default",{get(){return{exceptionHandlers:Ce.exceptionHandlers,rejectionHandlers:Ce.rejectionHandlers,transports:Ce.transports}}});Ur.deprecated(z,"setLevels");Ur.forFunctions(z,"useFormat",["cli"]);Ur.forProperties(z,"useFormat",["padLevels","stripColors"]);Ur.forFunctions(z,"deprecated",["addRewriter","addFilter","clone","extend"]);Ur.forProperties(z,"deprecated",["emitErrs","levelLength"])});var v2={};xm(v2,{ConnectorRunnerFile:()=>oa});module.exports=Nm(v2);var at=st(require("node:process")),Yr=class{constructor(e,r){this.#e="connector-runtime";this.init=()=>Promise.resolve();this.start=()=>Promise.resolve();this.stop=()=>Promise.resolve();this.#t=r,at.on?at.on("message",n=>{n.cmd===this.#e&&r.logger.verbose(`${at.pid} Received message from parent process:`,n)}):r.logger.warn("IPC channel is not available. process.on is undefined."),at.send||r.logger.warn("IPC channel is not available. process.send is undefined."),e.actions?.forEach(n=>{if(n.config.templates===void 0)return;let i={};Object.entries(n.config.templates).forEach(([o,s])=>{try{i[o]=r.templating.compile(s)}catch(a){r.logger.error(`Error compiling template ${o} for action ${n.identifier}`,a)}}),n.config.parsedTemplates=i})}#e;#t;set callbackFunction(e){this.connectorSDK.receiver.registerCallback(this.#r(e))}get connectorSDK(){return this.#t}#r(e){return async r=>{let n=this.#t.receiver.getActionConfig(r);return n?e(r,n):this.#t.receiver.responses.badRequest("Action not found")(r)}}};var Kr=class{#e;#t;constructor(e,r){this.#e=e,this.#t=r}get callbackFunctionChain(){return this.#r(this.#e.receiver.emitEventType(this.#e.receiver.responses.created()))}#r(e){return async(r,n)=>{this.#e.logger.debug(`Apply templates on payload: ${JSON.stringify(r.payload)}, action: ${JSON.stringify(n)}`);let i=n.config.parsedTemplates;try{let o=i.filename({inputs:r.payload}).trim(),s=i.contents({inputs:r.payload}).trim();if(r.testRun)return this.#e.logger.debug(`Test run for ${r.eventId} with parsedContent ${s}, parsedFilename ${o}`),e(r);await this.#t.write(o,s)}catch(o){return this.#e.receiver.responses.internalServerError(o instanceof Error?o.message:"Unknown error occurred")(r)}return e(r)}}};var ia=st(require("path"));var wm=st(Ru()),_m=st(nc()),Jt=st(require("path"));var Le=st(require("node:process")),de=st(ym()),bm=(o=>(o.error="error",o.warn="warn",o.info="info",o.http="http",o.debug="debug",o))(bm||{}),Vr=class t{#e;constructor(e="default",r="info"){this.logger=de.createLogger({level:r,format:de.format.combine(de.format.label({label:e}),de.format.timestamp(),de.format.json())});let n=!1;(Le.default.env.NODE_ENV!=="production"||Le.default.env.LOG_TO_CONSOLE==="true")&&(n=!0,this.logger.add(new de.transports.Console({format:de.format.printf(({label:i,level:o,message:s})=>`[${i}] ${o}: ${s}`)}))),Le.default.env.LOG_TO_FILE==="true"&&(n=!0,this.logger.add(new de.transports.File({filename:"error.log",level:"error"})),this.logger.add(new de.transports.File({filename:"combined.log"}))),n||this.logger.add(new de.transports.Console({format:de.format.printf(({label:i,level:o,message:s})=>`[${i}] ${o}: ${s}`)}))}static getInstance(e,r){return t.instance||(t.instance=new t(e??"default",t.#r(r))),t.instance}setDatadogTransport(e){let r=e?.apiKey??Le.default.env.DATADOG_API_KEY;if(!r)return this.debug("DATADOG_API_KEY is not set, cannot add Datadog transport"),this;let n=new URLSearchParams({"dd-api-key":r,ddsource:e?.source??Le.default.env.DD_SOURCE??"nodejs",service:e?.service??Le.default.env.DD_SERVICE??"unknown",env:e?.env??Le.default.env.DD_ENV??"prod"});e?.tags&&n.append("ddtags",Object.entries(e.tags).map(([o,s])=>`${o}:${s}`).join(","));let i={host:`http-intake.logs.${Le.default.env.DD_SITE??"datadoghq.eu"}`,path:`/api/v2/logs?${n.toString()}`,ssl:!0,batch:!0,format:de.format.json(),level:"info"};return this.#e&&this.logger.remove(this.#e),this.#e=new de.transports.Http(i),this.logger.add(this.#e),this}info(...e){this.#t(this.logger.info,...e)}debug(...e){this.#t(this.logger.debug,...e)}error(...e){this.#t(this.logger.error,...e)}warn(...e){this.#t(this.logger.warn,...e)}verbose(...e){this.#t(this.logger.verbose,...e)}#t(e,...r){try{let n=r.map(i=>typeof i=="object"?JSON.stringify(i):String(i));e(n.join(" "),...r)}catch(n){console.error("unknown error in log, function",n)}}static#r=e=>{if(e!==void 0)return e;let r=Le.default.env.LOG_LEVEL||"info",i=!Object.values(bm).includes(r);return i&&(r="info"),i&&console.error(`Invalid log level: ${r} only allow; 'error', 'warn', 'info', 'debug', 'trace'. Using info as default.`),r}};var vm=require("stream"),Hr=class t{#e;#t;constructor(e=void 0){this.#e=e,this.#t=Vr.getInstance(),this.#t.info(`FileHandler initialized with delimiter: ${e}`)}async handleBuffer(e,r,n,i){let o;switch(t.getExtension(e)){case".csv":o=await this.parseCSV(r,n,i);break;default:return this.handle(e,r.toString(),n,i)}return o}async handle(e,r,n,i){let o;switch(t.getExtension(e)){case".xml":o=await this.parseXML(r,n);break;case".json":o=JSON.parse(r);break;default:Vr.getInstance().error(`Unsupported file type: ${e}`)}return o}async parseXML(e,r){try{let n=await wm.default.parseStringPromise(e,{explicitArray:!1});return this.xmlOptions(n,r)}catch(n){throw new Error(`Error parsing XML content: ${n.message}`)}}async parseCSV(e,r,n){try{let i=vm.Readable.from(e),o=!0;return Object.keys(n??{}).includes("noHeader")&&(o=(n??{}).noHeader===!0),(0,_m.default)({delimiter:this.#e??",",noheader:o}).fromStream(i)}catch(i){throw this.#t.error(`Error parsing CSV: ${i.message}`),new Error(`Error parsing CSV content: ${i.message}`)}}xmlOptions(e,r){let n=i=>{if(typeof i=="object")for(let o of Object.keys(i)){let s=i[o];r.includes(o)?Array.isArray(s)||(i[o]=[s]):o!=="_text"&&(i[o]=n(s))}return i};return n(e)}csvOptions(e,r){let n;return Array.isArray(r)&&r.length>0?n={headers:r}:n=e.split(`
|
|
48
|
+
`))}_onEvent(e,r){function n(i){e==="error"&&!this.transports.includes(r)&&this.add(r),this.emit(e,i,r)}r["__winston"+e]||(r["__winston"+e]=n.bind(this),r.on(e,r["__winston"+e]))}_addDefaultMeta(e){this.defaultMeta&&Object.assign(e,this.defaultMeta)}};function $r(t,e){let r=t[e];return!r&&r!==0?null:r}Object.defineProperty(qi.prototype,"transports",{configurable:!1,enumerable:!0,get(){let{pipes:t}=this._readableState;return Array.isArray(t)?t:[t].filter(Boolean)}});hm.exports=qi});var na=T((cM,dm)=>{"use strict";var{LEVEL:g2}=ne(),m2=Mi(),y2=Ai(),b2=qr()("winston:create-logger");function w2(t){return"is"+t.charAt(0).toUpperCase()+t.slice(1)+"Enabled"}dm.exports=function(t={}){t.levels=t.levels||m2.npm.levels;class e extends y2{constructor(i){super(i)}}let r=new e(t);return Object.keys(t.levels).forEach(function(n){if(b2('Define prototype method for "%s"',n),n==="log"){console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.');return}e.prototype[n]=function(...i){let o=this||r;if(i.length===1){let[s]=i,a=s&&s.message&&s||{message:s};return a.level=a[g2]=n,o._addDefaultMeta(a),o.write(a),this||r}return i.length===0?(o.log(n,""),o):o.log(n,...i)},e.prototype[w2(n)]=function(){return(this||r).isLevelEnabled(n)}}),r}});var gm=T((dM,pm)=>{"use strict";var _2=na();pm.exports=class{constructor(e={}){this.loggers=new Map,this.options=e}add(e,r){if(!this.loggers.has(e)){r=Object.assign({},r||this.options);let n=r.transports||this.options.transports;n?r.transports=Array.isArray(n)?n.slice():[n]:r.transports=[];let i=_2(r);i.on("close",()=>this._delete(e)),this.loggers.set(e,i)}return this.loggers.get(e)}get(e,r){return this.add(e,r)}has(e){return!!this.loggers.has(e)}close(e){if(e)return this._removeLogger(e);this.loggers.forEach((r,n)=>this._removeLogger(n))}_removeLogger(e){if(!this.loggers.has(e))return;this.loggers.get(e).close(),this._delete(e)}_delete(e){this.loggers.delete(e)}}});var ym=T(z=>{"use strict";var mm=Mo(),{warn:Ur}=Ro();z.version=Oh().version;z.transports=Ug();z.config=Mi();z.addColors=mm.levels;z.format=mm.format;z.createLogger=na();z.Logger=Ai();z.ExceptionHandler=Zs();z.RejectionHandler=ta();z.Container=gm();z.Transport=$t();z.loggers=new z.Container;var Ce=z.createLogger();Object.keys(z.config.npm.levels).concat(["log","query","stream","add","remove","clear","profile","startTimer","handleExceptions","unhandleExceptions","handleRejections","unhandleRejections","configure","child"]).forEach(t=>z[t]=(...e)=>Ce[t](...e));Object.defineProperty(z,"level",{get(){return Ce.level},set(t){Ce.level=t}});Object.defineProperty(z,"exceptions",{get(){return Ce.exceptions}});Object.defineProperty(z,"rejections",{get(){return Ce.rejections}});["exitOnError"].forEach(t=>{Object.defineProperty(z,t,{get(){return Ce[t]},set(e){Ce[t]=e}})});Object.defineProperty(z,"default",{get(){return{exceptionHandlers:Ce.exceptionHandlers,rejectionHandlers:Ce.rejectionHandlers,transports:Ce.transports}}});Ur.deprecated(z,"setLevels");Ur.forFunctions(z,"useFormat",["cli"]);Ur.forProperties(z,"useFormat",["padLevels","stripColors"]);Ur.forFunctions(z,"deprecated",["addRewriter","addFilter","clone","extend"]);Ur.forProperties(z,"deprecated",["emitErrs","levelLength"])});var v2={};xm(v2,{ConnectorRunnerFile:()=>oa});module.exports=Nm(v2);var at=st(require("node:process")),Yr=class{constructor(e,r){this.#e="connector-runtime";this.init=()=>Promise.resolve();this.start=()=>Promise.resolve();this.stop=()=>Promise.resolve();this.#t=r,at.on?at.on("message",n=>{n.cmd===this.#e&&r.logger.verbose(`${at.pid} Received message from parent process:`,n)}):r.logger.warn("IPC channel is not available. process.on is undefined."),at.send||r.logger.warn("IPC channel is not available. process.send is undefined."),e.actions?.forEach(n=>{if(n.config.templates===void 0)return;let i={};Object.entries(n.config.templates).forEach(([o,s])=>{try{i[o]=r.templating.compile(s)}catch(a){r.logger.error(`Error compiling template ${o} for action ${n.identifier}`,a)}}),n.config.parsedTemplates=i})}#e;#t;set callbackFunction(e){this.connectorSDK.receiver.registerCallback(this.#r(e))}get connectorSDK(){return this.#t}#r(e){return async r=>{let n=await this.#t.receiver.getActionConfig(r);return n?e(r,n):this.#t.receiver.responses.badRequest("Action not found")(r)}}};var Kr=class{#e;#t;constructor(e,r){this.#e=e,this.#t=r}get callbackFunctionChain(){return this.#r(this.#e.receiver.emitEventType(this.#e.receiver.responses.created()))}#r(e){return async(r,n)=>{this.#e.logger.debug(`Apply templates on payload: ${JSON.stringify(r.payload)}, action: ${JSON.stringify(n)}`);let i=n.config.parsedTemplates;try{let o=i.filename({inputs:r.payload}).trim(),s=i.contents({inputs:r.payload}).trim();if(r.testRun)return this.#e.logger.debug(`Test run for ${r.eventId} with parsedContent ${s}, parsedFilename ${o}`),e(r);await this.#t.write(o,s)}catch(o){return this.#e.receiver.responses.internalServerError(o instanceof Error?o.message:"Unknown error occurred")(r)}return e(r)}}};var ia=st(require("path"));var wm=st(Ru()),_m=st(nc()),Jt=st(require("path"));var Le=st(require("node:process")),de=st(ym()),bm=(o=>(o.error="error",o.warn="warn",o.info="info",o.http="http",o.debug="debug",o))(bm||{}),Vr=class t{#e;constructor(e="default",r="info"){this.logger=de.createLogger({level:r,format:de.format.combine(de.format.label({label:e}),de.format.timestamp(),de.format.json())});let n=!1;(Le.default.env.NODE_ENV!=="production"||Le.default.env.LOG_TO_CONSOLE==="true")&&(n=!0,this.logger.add(new de.transports.Console({format:de.format.printf(({label:i,level:o,message:s})=>`[${i}] ${o}: ${s}`)}))),Le.default.env.LOG_TO_FILE==="true"&&(n=!0,this.logger.add(new de.transports.File({filename:"error.log",level:"error"})),this.logger.add(new de.transports.File({filename:"combined.log"}))),n||this.logger.add(new de.transports.Console({format:de.format.printf(({label:i,level:o,message:s})=>`[${i}] ${o}: ${s}`)}))}static getInstance(e,r){return t.instance||(t.instance=new t(e??"default",t.#r(r))),t.instance}setDatadogTransport(e){let r=e?.apiKey??Le.default.env.DATADOG_API_KEY;if(!r)return this.debug("DATADOG_API_KEY is not set, cannot add Datadog transport"),this;let n=new URLSearchParams({"dd-api-key":r,ddsource:e?.source??Le.default.env.DD_SOURCE??"nodejs",service:e?.service??Le.default.env.DD_SERVICE??"unknown",env:e?.env??Le.default.env.DD_ENV??"prod"});e?.tags&&n.append("ddtags",Object.entries(e.tags).map(([o,s])=>`${o}:${s}`).join(","));let i={host:`http-intake.logs.${Le.default.env.DD_SITE??"datadoghq.eu"}`,path:`/api/v2/logs?${n.toString()}`,ssl:!0,batch:!0,format:de.format.json(),level:"info"};return this.#e&&this.logger.remove(this.#e),this.#e=new de.transports.Http(i),this.logger.add(this.#e),this}info(...e){this.#t(this.logger.info,...e)}debug(...e){this.#t(this.logger.debug,...e)}error(...e){this.#t(this.logger.error,...e)}warn(...e){this.#t(this.logger.warn,...e)}verbose(...e){this.#t(this.logger.verbose,...e)}#t(e,...r){try{let n=r.map(i=>typeof i=="object"?JSON.stringify(i):String(i));e(n.join(" "),...r)}catch(n){console.error("unknown error in log, function",n)}}static#r=e=>{if(e!==void 0)return e;let r=Le.default.env.LOG_LEVEL||"info",i=!Object.values(bm).includes(r);return i&&(r="info"),i&&console.error(`Invalid log level: ${r} only allow; 'error', 'warn', 'info', 'debug', 'trace'. Using info as default.`),r}};var vm=require("stream"),Hr=class t{#e;#t;constructor(e=void 0){this.#e=e,this.#t=Vr.getInstance(),this.#t.info(`FileHandler initialized with delimiter: ${e}`)}async handleBuffer(e,r,n,i){let o;switch(t.getExtension(e)){case".csv":o=await this.parseCSV(r,n,i);break;default:return this.handle(e,r.toString(),n,i)}return o}async handle(e,r,n,i){let o;switch(t.getExtension(e)){case".xml":o=await this.parseXML(r,n);break;case".json":o=JSON.parse(r);break;default:Vr.getInstance().error(`Unsupported file type: ${e}`)}return o}async parseXML(e,r){try{let n=await wm.default.parseStringPromise(e,{explicitArray:!1});return this.xmlOptions(n,r)}catch(n){throw new Error(`Error parsing XML content: ${n.message}`)}}async parseCSV(e,r,n){try{let i=vm.Readable.from(e),o=!0;return Object.keys(n??{}).includes("noHeader")&&(o=(n??{}).noHeader===!0),(0,_m.default)({delimiter:this.#e??",",noheader:o}).fromStream(i)}catch(i){throw this.#t.error(`Error parsing CSV: ${i.message}`),new Error(`Error parsing CSV content: ${i.message}`)}}xmlOptions(e,r){let n=i=>{if(typeof i=="object")for(let o of Object.keys(i)){let s=i[o];r.includes(o)?Array.isArray(s)||(i[o]=[s]):o!=="_text"&&(i[o]=n(s))}return i};return n(e)}csvOptions(e,r){let n;return Array.isArray(r)&&r.length>0?n={headers:r}:n=e.split(`
|
|
49
49
|
`)[0].trim().split(",").length>1?{headers:!0}:{noheader:!0},n}stringify(e){return JSON.stringify(e,null,2)}static getPath(e){return Jt.dirname(e)}static getFileName(e){return Jt.basename(e)}static getExtension(e){return Jt.extname(e).toLowerCase()}};var Xr=class{static{this.DEFAULT_INTERVAL_SECONDS=60}#e;#t;#r;#n;#o;#i;constructor(e,r,n){this.#e=e,this.#t=r,this.#r=n,this.#o=new Hr(r.delimiter);let{selector:i}=this.#t;if(this.#i=new RegExp(typeof i!="string"?i.pattern:i,typeof i!="string"&&i.flags?i.flags:"i"),this.#t.destinationDsn)this.#n=this.#e.files(this.#t.destinationDsn);else if(this.#t.action==="move")throw new Error(`Destination DSN must be provided for 'move' action in file selector: ${this.name}`)}get name(){let{selector:e}=this.#t;return`file-processor-${typeof e=="string"?e:e.pattern}`}async onRun(){let e=await this.#s();this.#e.telemetry.increment("files.processed.count",e)}async#s(e="/"){let r=await this.#r.list(e);return(await Promise.all(r.map(async i=>i.type==="FILE"?await this.#a(i,e)?1:0:this.#t.recursive===!0?this.#s(ia.default.join(e,i.name)):Promise.resolve(0)))).reduce((i,o)=>i+o,0)}async#a(e,r){let n=ia.default.join(r,e.name);if(!this.#i.test(e.name))return this.#e.logger.verbose(`Skipping file at path: ${n} as it does not match selector regex`),!1;this.#e.logger.debug(`Processing file at path: ${n}`);let i,o;try{if(i=await this.#r.read(n),o=await this.#o.handleBuffer(n,i.get(),this.#t.optionalHeaders??[],this.#t.optionalSettings),!o)return this.#e.logger.info(`Failed to parse file at path: ${n}`),i.close(),!1;this.#e.logger.debug(`Parsed file successfully at path: ${n}`)}catch(s){return this.#e.logger.error(`Error parsing file at path: ${n}, error: ${s}`),i?.close(),!1}try{let s=[{...o,_filename:Hr.getFileName(n)??e.name}],a={keyField:"_filename",collection:`${this.#e.config.datasourceIdentifier??"file"}_${this.#t.identifier??this.#i.source}`};this.#t.type==="metric"?await this.#e.sender.metricsLegacy(s,a):await this.#e.sender.documents(s,a)}catch(s){return this.#e.logger.error(`Error sending parsed file from path: ${n}, error: ${s}`),i?.close(),!1}try{switch(this.#t.action){case"move":await this.#n?.write(e.name,i),await this.#r.delete(n),this.#e.logger.debug(`"Moved" file at path: ${n} to ${this.#n?.pathAsDsn(e.name)} after processing`);break;case"delete":await this.#r.delete(n),this.#e.logger.debug(`Deleted file at path: ${n} after processing`);break}}finally{i?.close()}return!0}};var oa=class extends Yr{constructor(r,n){super(r,n);this.init=async()=>{let{config:r}=this.connectorSDK;await Promise.all((r.fileSelectors??[]).map(async n=>{let i=new Xr(this.connectorSDK,n,this.#e);await this.connectorSDK.processing.registerInterval(n.intervalSeconds??Xr.DEFAULT_INTERVAL_SECONDS,i)}))};let{config:i}=this.connectorSDK;this.#e=this.connectorSDK.files(i.dsn);let o=new Kr(this.connectorSDK,this.#e);this.callbackFunction=o.callbackFunctionChain}#e};0&&(module.exports={ConnectorRunnerFile});
|
|
50
50
|
/*! Bundled license information:
|
|
51
51
|
|