@transai/connector-runner-mkg 0.7.4 → 0.7.5

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/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../libs/connector-runtime-sdk/src/lib/connector-runtime.ts", "../../../libs/connector-runner-mkg/src/lib/types.ts", "../../../libs/connector-runner-mkg/src/lib/tables/base/table.ts", "../../../libs/connector-runner-mkg/src/lib/tables/artg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/arti.ts", "../../../libs/connector-runner-mkg/src/lib/tables/bwrg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/bwrk.ts", "../../../libs/connector-runner-mkg/src/lib/tables/clch.ts", "../../../libs/connector-runner-mkg/src/lib/tables/clcr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/cprs.ts", "../../../libs/connector-runner-mkg/src/lib/tables/debi.ts", "../../../libs/connector-runner-mkg/src/lib/tables/magl.ts", "../../../libs/connector-runner-mkg/src/lib/tables/magz.ts", "../../../libs/connector-runner-mkg/src/lib/tables/medw.ts", "../../../libs/connector-runner-mkg/src/lib/tables/base/response.ts", "../../../libs/connector-runner-mkg/src/lib/tables/base/action.ts", "../../../libs/connector-runner-mkg/src/lib/tables/parl.ts", "../../../libs/connector-runner-mkg/src/lib/tables/plnb.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prbv.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prdh.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prdr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prmv.ts", "../../../libs/connector-runner-mkg/src/lib/tables/proj.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rela.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rgrs.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rsrc.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rsrd.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rsrg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/stlh.ts", "../../../libs/connector-runner-mkg/src/lib/tables/stlm.ts", "../../../libs/connector-runner-mkg/src/lib/tables/stlr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/vorh.ts", "../../../libs/connector-runner-mkg/src/lib/tables/vorr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/vrdg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/_all.ts", "../../../libs/connector-runner-mkg/src/lib/actions-handler.ts", "../../../libs/connector-runner-mkg/src/lib/helpers/base-url.ts", "../../../libs/connector-runner-mkg/src/lib/extractor.service.ts", "../../../libs/connector-runner-mkg/src/lib/connector-runner-mkg.ts"],
4
- "sourcesContent": ["import * as process from 'node:process';\n\nimport {\n KafkaCallbackResponse,\n BaseConnectorConfig,\n ActionInterface,\n ConnectorInterface,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { ConnectorRuntimeInterface } from './connector-runtime.interface';\nimport { CompileDelegate, ConnectorSDKInterface } from './sdk';\n\nexport interface IpcMessage {\n cmd: string;\n message: string;\n}\n\nexport abstract class ConnectorRuntimeSDK<\n T extends BaseConnectorConfig = BaseConnectorConfig,\n> implements ConnectorRuntimeInterface {\n readonly #IPC_CHANNEL = 'connector-runtime';\n\n readonly #connectorSDK: ConnectorSDKInterface<T>;\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n this.#connectorSDK = connectorSDK as ConnectorSDKInterface<T>;\n\n if (process.on) {\n process.on('message', (message: IpcMessage) => {\n if (message.cmd === this.#IPC_CHANNEL) {\n connectorSDK.logger.verbose(\n `${process.pid} Received message from parent process:`,\n message,\n );\n }\n });\n } else {\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.on is undefined.',\n );\n }\n\n if (!process.send) {\n // Check if process.send is available\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.send is undefined.',\n );\n }\n\n // eslint-disable-next-line no-restricted-syntax\n connector.actions?.forEach((action: ActionInterface) => {\n if (action.config['templates'] === undefined) {\n return;\n }\n\n const containers: {\n [key: string]: CompileDelegate;\n } = {};\n\n Object.entries(action.config['templates']).forEach(([key, value]) => {\n try {\n // eslint-disable-next-line security/detect-object-injection\n containers[key] = connectorSDK.templating.compile(value);\n } catch (error: unknown) {\n connectorSDK.logger.error(\n `Error compiling template ${key} for action ${action.identifier}`,\n error,\n );\n }\n });\n\n // eslint-disable-next-line no-param-reassign\n action.config['parsedTemplates'] = containers;\n });\n }\n\n public init: () => Promise<void> = () => Promise.resolve();\n\n public start: () => Promise<void> = () => Promise.resolve();\n\n public stop: () => Promise<void> = () => Promise.resolve();\n\n set callbackFunction(\n callback: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ) {\n this.connectorSDK.receiver.registerCallback(\n this.#enrichWithActionConfig(callback),\n );\n }\n\n protected get connectorSDK(): ConnectorSDKInterface<T> {\n return this.#connectorSDK;\n }\n\n #enrichWithActionConfig(\n callbackFunction: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ): (message: XodJobType) => Promise<KafkaCallbackResponse> {\n return async (message: XodJobType) => {\n const action = await this.#connectorSDK.receiver.getActionConfig(message);\n if (!action) {\n return this.#connectorSDK.receiver.responses.badRequest(\n 'Action not found',\n )(message);\n }\n return callbackFunction(message, action);\n };\n }\n}\n", "import { BaseConnectorConfig } from '@xip-online-data/types';\n\nexport const DEFAULT_DATASOURCE = 'mkg';\n\nexport const DEFAULT_INTERVAL = 3_600;\n\nexport const DEFAULT_ROW_KEY_FIELD = 'RowKey';\n\nexport const DEFAULT_DATE_FIELD = 'sys_dat_wijzig';\n\nexport const DEFAULT_NUM_ROWS = 250;\n\nexport const SESSION_COOKIE_NAME = 'JSESSIONID';\n\n/**\n * Session expires in 30 minutes\n */\nexport const SESSION_EXPIRATION_SECONDS = 30 * 60 * 1000;\n\nexport interface TableConfig {\n fields?: Array<string>;\n}\n\nexport interface ConnectorConfig extends BaseConnectorConfig {\n server: 'saas*.mkg.eu' | string;\n port?: 443 | 8443 | number;\n path?: '/mkg' | '/mkgoefenclient' | string;\n\n username: string;\n password: string;\n apiToken: string;\n\n administration?: string;\n fiscalYear?: string;\n language?: string;\n\n tables?: { [key: string]: TableConfig | true };\n}\n\nexport interface MkgTableInterface {\n identifier: string;\n fields: Array<string>;\n\n immediate?: boolean;\n interval?: number;\n identifierField?: string;\n dateField?: string;\n rows?: number;\n}\n", "import {\n DEFAULT_DATE_FIELD,\n DEFAULT_INTERVAL,\n DEFAULT_NUM_ROWS,\n DEFAULT_ROW_KEY_FIELD,\n MkgTableInterface,\n TableConfig,\n} from '../../types';\n\nimport { MkgAction } from './action';\n\nexport class MkgTable implements MkgTableInterface {\n readonly identifier: string;\n\n readonly fields: Array<string>;\n\n readonly immediate: boolean;\n\n readonly interval: number;\n\n readonly identifierField: string;\n\n readonly dateField: string;\n\n readonly rows: number;\n\n readonly actions: Array<MkgAction>;\n\n constructor(params: MkgTableInterface, actions: Array<MkgAction> = []) {\n this.identifier = params.identifier;\n this.fields = params.fields;\n this.immediate = params.immediate !== false;\n this.interval =\n params.interval ?? (this.fields.length > 0 ? DEFAULT_INTERVAL : 0);\n this.identifierField = params.identifierField ?? DEFAULT_ROW_KEY_FIELD;\n this.dateField = params.dateField ?? DEFAULT_DATE_FIELD;\n this.rows = params.rows ?? DEFAULT_NUM_ROWS;\n this.actions = actions.map((action) => action.withParentTable(this));\n }\n\n cloneFromTableConfig(tableConfig: TableConfig | true): MkgTable {\n if (tableConfig === true || tableConfig.fields === undefined) {\n return this;\n }\n\n return new MkgTable({\n ...this,\n fields: [...this.fields, ...tableConfig.fields].filter(\n (field, index, list) => list.indexOf(field) === index,\n ),\n });\n }\n\n action(identifier: string): MkgAction | undefined {\n return this.actions.find((a) => a.identifier === identifier);\n }\n}\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_ARTG = new MkgTable({\n identifier: 'artg',\n fields: [\n 'artg_num',\n 'artg_rela',\n 'artg_cred',\n 'artg_oms',\n 'artg_inkoopofferte',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_ARTI = new MkgTable({\n identifier: 'arti',\n interval: 300,\n fields: [\n 'arti_actief',\n 'arti_code',\n 'arti_revisie',\n 'arti_oms_1',\n 'arti_tekening',\n 'arti_stlh_num',\n 'debi_num',\n // 'arti_parameter_2',\n // 'arti_prijs_vast_man',\n // 'arti_seriegrootte',\n // 'arti_vrij_memo_1',\n // 'arti_bestellen',\n // 'arti_btw_aanpasbaar',\n // 'arti_vrij_datum_1',\n // 'arti_eenh_uitgifte',\n // 'arti_eenh_prijs_inkoop',\n // 'arti_partij_per_1',\n // 'arti_partij',\n // 'arti_voorraad_waarde_mach',\n // 'arti_parameter_4',\n // 'arti_eenh_ontvangst',\n // 'arti_prijs_vast_mat',\n // 'arti_verh_tijd_aantal_grp',\n // 'arti_voorraad_aantal',\n // 'arti_bestel_freq_eenh',\n // 'arti_vrij_datum_4',\n // 'arti_eenh_vrk',\n // 'arti_trans_eenh',\n // 'arti_kosten_artikel',\n // 'arti_verh_tijd_aantal_vrd',\n // 'arti_verh_volume_aantal_grp',\n // 'arti_memo_verkoop_intern',\n // 'arti_verh_volume_aantal_vrd',\n // 'arti_vrij_memo_2',\n // 'arti_zoeknaam',\n // 'arti_blok_verkoop',\n // 'arti_verh_aantal_aantal_vrd',\n // 'arti_bestelcode',\n // 'arti_locatie',\n // 'arti_prijs_netto_mat',\n // 'arti_prijs_vast',\n // 'arti_vrij_veld_1',\n // 'arti_parameter_1',\n // 'arti_vrij_datum_2',\n // 'arti_gewicht_per_m',\n // 'arti_memo_inkoop_extern',\n // 'arti_inkoopofferte',\n // 'arti_prijs_gemiddeld_mat',\n // 'arti_dienst_verkoop',\n // 'arti_oms_2',\n // 'arti_levertijd_inkoop',\n // 'arti_verh_tijd_eenh_grp',\n // 'arti_prijs_netto_uitb',\n // 'arti_oppervlakte',\n // 'arti_voorraadsysteem',\n // 'arti_kostprijssysteem',\n // 'arti_niet_autores',\n // 'arti_wvp_obv_gvp',\n // 'arti_vrij_memo_5',\n // 'arti_prijs_inkoop',\n // 'arti_levertijd_productie',\n // 'arti_verh_gewicht_aantal_grp',\n // 'arti_verh_gewicht_eenh_grp',\n // 'arti_vrij_veld_2',\n // 'arti_prijs_gemiddeld_mach',\n // 'arti_lijst_3',\n // 'arti_verh_gewicht_aantal_vrd',\n // 'arti_parameter_3',\n // 'arti_lijst_1',\n // 'arti_prijs_vast_mach',\n // 'arti_vrij_veld_5',\n // 'arti_ict_fact_verkoop',\n // 'arti_verh_lengte_aantal_vrd',\n // 'arti_backflush',\n // 'arti_vrij_datum_3',\n // 'arti_vrd_aanvullen_tot',\n // 'arti_inkoop_artikel',\n // 'arti_verh_rest_aantal_grp',\n // 'arti_eenh_vrd',\n // 'arti_prijs_vast_uitb',\n // 'arti_trans_gewicht',\n // 'arti_memo_inkoop_intern',\n // 'arti_vrij_memo_3',\n // 'arti_prijs_netto',\n // 'arti_mat_lengte',\n // 'arti_bestelhoeveelheid',\n // 'arti_eenh_bestelling',\n // 'arti_verh_oppv_eenh_grp',\n // 'arti_voorraad_artikel',\n // 'arti_backflush_uitval',\n // 'arti_lijst_9',\n // 'arti_vrij_datum_5',\n // 'arti_verh_oppv_aantal_grp',\n // 'arti_prijs_gemiddeld_uitb',\n // 'arti_prijs_verkoop_eenm',\n // 'arti_oms_3',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_BWRG = new MkgTable({\n identifier: 'bwrg',\n fields: [\n 'bwrg_inkoopofferte',\n 'bwrg_memo',\n 'bwrg_oms',\n 'bwrg_num',\n 'bwrg_cred',\n 'bwrg_rela',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_BWRK = new MkgTable({\n identifier: 'bwrk',\n interval: 60,\n fields: [\n 'bwrk_actief',\n 'bwrk_oms',\n 'bwrk_num',\n 'bwrk_rsrc_instellen',\n 'bwrk_rsrc_bew',\n 'bwrk_onbemand',\n // 'bwrk_bwrf_instellen',\n // 'bwrk_rela',\n // 'bwrk_inkoopofferte',\n // 'bwrk_reden_vroeg_laat',\n // 'bwrk_tarief_netto_instel',\n // 'bwrk_grbk_direct_verantw',\n // 'bwrk_actief_pauze',\n // 'bwrk_memo',\n // 'bwrk_aanloop_type',\n // 'bwrk_medw_ovz',\n // 'bwrk_grbk_indirect_kosten_mach',\n // 'bwrk_niet_op_uren_pc',\n // 'bwrk_memo_instel',\n // 'bwrk_afloop_tijd',\n // 'bwrk_magl_uit',\n // 'bwrk_wachttijd_voor',\n // 'bwrk_magl_in',\n // 'bwrk_wegingsfactor_nc',\n // 'bwrk_vspt_bew',\n // 'bwrk_afloop_perc',\n // 'bwrk_afloop_type',\n // 'bwrk_tarief_netto_mach',\n // 'bwrk_memo_extern',\n // 'bwrk_specificeren',\n // 'bwrk_afbeelding',\n // 'bwrk_wachttijd_na',\n // 'bwrk_uitb_prijs',\n // 'bwrk_man_per_machine',\n // 'bwrk_aanloop_perc',\n // 'bwrk_insteltijd',\n // 'bwrk_tarief_calc_mach',\n // 'bwrk_uitb_dagen',\n // 'bwrk_grbk_direct_verantw_mach',\n // 'bwrk_start_type',\n // 'bwrk_volgorde',\n // 'bwrk_grbk_indirect_kosten',\n // 'bwrk_uitbesteding',\n // 'bwrk_uitb_prijs_eenh',\n // 'bwrk_eenmalig',\n // 'bwrk_vspt_instel',\n // 'bwrk_vspt_uitb',\n // 'bwrk_sf_start_gereed',\n // 'bwrk_tarief_calc_instel',\n // 'bwrk_grbk_indirect_verantw',\n // 'bwrk_grbk_indirect_verantw_mach',\n // 'bwrk_aanloop_tijd',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_CLCH = new MkgTable({\n identifier: 'clch',\n interval: 60,\n fields: [\n 'arti_code',\n 'clch_num',\n 'clch_oms_1',\n 'prdt_num',\n 'clch_vofh_proj',\n // 'clch_volgnummer',\n // 'clch_op_dek_uit',\n // 'clch_op_calc_mat',\n // 'clch_vofh_verk_num',\n // 'clch_op_calc_mach',\n // 'clch_vofh_dat_antwoord',\n // 'clch_kostprijs_methode_bew',\n // 'clch_op_calc_man',\n // 'clch_vofr_oms_1',\n // 'clch_vofh_dat_levering',\n // 'clch_lengte',\n // 'clch_vofh_ref_onze',\n // 'clch_calc_methode_mat',\n // 'clch_op_calc_uit',\n // 'clch_memo',\n // 'clch_vofh_proj',\n // 'clch_vofr_order_aantal',\n // 'clch_calc_methode_bew',\n // 'clch_op_dek_man',\n // 'clch_op_dek_mach',\n // 'clch_files',\n // 'clch_op_dek_mat',\n // 'clch_vofh_rela',\n // 'clch_vofh_num',\n // 'clch_oms_3',\n // 'clch_vofh_dat_aanvraag',\n // 'clch_vofh_ref_uw',\n // 'clch_vofr_arti',\n // 'clch_oms_2',\n // 'clch_boekjaar_afh',\n // 'clch_vofr_eenh_order',\n // 'clch_fase_planning',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_CLCR = new MkgTable({\n identifier: 'clcr',\n interval: 60,\n fields: [\n 'arti_code',\n 'clch_num',\n 'clcr_oms_1',\n 'clcr_tekening',\n 'clcr_niveau',\n 'clcr_num',\n 'clcr_parent',\n 'stlh_num',\n 'clcr_revisie',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_CPRS = new MkgTable({\n identifier: 'cprs',\n interval: 300,\n fields: [\n 'cprs_actief',\n 'cprs_num',\n 'cprs_email',\n 'cprs_voornaam',\n 'cprs_voorletters',\n 'cprs_naam',\n 'cprs_telefoon',\n 'rela_num',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_DEBI = new MkgTable({\n identifier: 'debi',\n fields: [\n 'debi_actief',\n 'debi_num',\n 'debi_kvk_num',\n 'debi_naam',\n 'rela_num',\n 'debi_btw_num',\n // 'debi_email',\n // 'debi_vrij_datum_4',\n // 'debi_pkbh_verz_type',\n // 'debi_vrij_memo_3',\n // 'debi_vrij_memo_4',\n // 'debi_zoeknaam',\n // 'debi_bic',\n // 'debi_kredietlimiet2',\n // 'debi_deellev',\n // 'debi_fcth_verz_type',\n // 'debi_plaats_bank',\n // 'debi_dat_btw_verificatie',\n // 'debi_vrij_datum_1',\n // 'debi_btw',\n // 'debi_peppol_id',\n // 'debi_vrij_memo_2',\n // 'debi_fact_naam_2',\n // 'debi_docs',\n // 'debi_bet_wijze',\n // 'debi_blok',\n // 'debi_vrij_datum_5',\n // 'debi_bankcode',\n // 'debi_memo_extern',\n // 'debi_naam_2',\n // 'debi_rekening',\n // 'debi_aantal_fact',\n // 'debi_vrij_veld_2',\n // 'debi_status_btw_verificatie',\n // 'debi_deelfact',\n // 'debi_comm_opslag',\n // 'debi_naam_btw_verificatie',\n // 'debi_vrij_veld_3',\n // 'debi_vrij_veld_4',\n // 'debi_incasso',\n // 'debi_vrij_memo_1',\n // 'debi_vrij_memo_5',\n // 'debi_max_regels_pakb',\n // 'debi_vrij_datum_3',\n // 'debi_iban',\n // 'debi_max_regels_fact',\n // 'debi_toon_opslagen',\n // 'debi_memo_kredietbewaking',\n // 'debi_kredietlimiet',\n // 'debi_debi_fact',\n // 'debi_vrij_veld_5',\n // 'debi_vrij_datum_2',\n // 'debi_fact_naam',\n // 'debi_vrij_veld_1',\n // 'debi_memo_intern',\n // 'debi_adres_btw_verificatie',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_MAGL = new MkgTable({\n identifier: 'magl',\n fields: [\n 'magl_memo',\n 'magl_oms_3',\n 'magl_shopfloor',\n 'magl_niet_autores',\n 'magl_oms_2',\n 'magl_code',\n 'magl_blok',\n 'magl_oms_1',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_MAGZ = new MkgTable({\n identifier: 'magz',\n fields: [\n 'magz_memo',\n 'magz_oms_1',\n 'magz_oms_2',\n 'magz_code',\n 'magz_oms_3',\n 'magz_niet_autores',\n 'magz_blok',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_MEDW = new MkgTable({\n identifier: 'medw',\n fields: [\n 'medw_pensioenpremie_werkn',\n 'medw_spaarloon_rek',\n 'medw_betaling_per_bank',\n 'medw_premiesparen_naam',\n 'medw_ziekengeld_aanm',\n 'medw_betaling_per_rek_2',\n 'medw_auto_vd_zaak',\n 'medw_vrij_datum_5',\n 'medw_or',\n 'medw_premiesparen',\n 'medw_telefoon',\n 'medw_aanwezigheids_reg',\n 'medw_betaling_per_bank_naam',\n 'medw_postcode',\n 'medw_premiesparen_batch',\n 'medw_verschuiven',\n 'medw_onkosten',\n 'medw_pensioenpremie_werkg',\n 'medw_arbodienst_aanm',\n 'medw_lid_persver',\n 'medw_laatste_bwrk',\n 'medw_memo_contract',\n 'medw_premiesparen_iban',\n 'medw_vrij_datum_3',\n 'medw_nummer_2',\n 'medw_voornaam',\n 'medw_ziekengeld_afm',\n 'medw_mdrc',\n 'medw_spaarloon_bic',\n 'medw_spaarloon',\n 'medw_betaling_per_bank_oms_3',\n 'medw_spaarloon_iban',\n 'medw_prod_gereed_melden',\n 'medw_spaarloon_batch',\n 'medw_betaling_per_iban_2',\n 'medw_roepnaam',\n 'medw_vutpremie_werkg',\n 'medw_betaling_per_rek',\n 'medw_uren_per_dag',\n 'medw_plaats',\n 'medw_telefoon_2',\n 'medw_or_functie',\n 'medw_pensioenfonds',\n 'medw_schoenmaat',\n 'medw_naam_2',\n 'medw_spaarloon_oms1',\n 'medw_vutpremie',\n 'medw_ehbo',\n 'medw_vrij_datum_4',\n 'medw_email',\n 'medw_vrij_memo_1',\n 'medw_soort_contract',\n 'medw_vakantie_uren',\n 'medw_reiskosten',\n 'medw_vrij_veld_4',\n 'medw_waohiaat_werkg',\n 'medw_vrij_datum_2',\n 'medw_premiesparen_oms1',\n 'medw_salaris',\n 'medw_vrij_veld_3',\n 'medw_spaarloon_oms3',\n 'medw_planning',\n 'medw_raadplegen_uren',\n 'medw_spaarloon_naam',\n 'medw_vrij_veld_5',\n 'medw_ziekenfonds_aanm',\n 'medw_betaling_per_bank_2_naam',\n 'medw_partime_salaris',\n 'medw_premiesparen_oms2',\n 'medw_bedrijfsvereniging_afm',\n 'medw_betaling_per_bank_2_oms1',\n 'medw_betaling_per_bank_2',\n 'medw_betaling_per_bank_plaats',\n 'medw_tussenvoegsel',\n 'medw_instellen',\n 'medw_pensioenfonds_afm',\n 'medw_functietitel',\n 'medw_straat_2',\n 'medw_premiesparen_plaats',\n 'medw_betaling_per_bic_2',\n 'medw_betaling_per_kas_2',\n 'medw_betaling_per_bank_2_oms3',\n 'medw_premiesparen_oms3',\n 'medw_straat',\n 'medw_premiesparen_oms4',\n 'medw_dagen_per_week',\n 'medw_telefax',\n 'medw_afbeelding',\n 'medw_op_uren_pc',\n 'medw_direct_gereed',\n ],\n});\n", "/**\n * Document response type example:\n *\n * {\n * \"response\": {\n * \"ResultData\": [\n * {\n * \"vorr\": [\n * {\n * \"RowKey\": \"0x0000000009ca092a\",\n * \"admi_num\": 2,\n * \"vorh_num\": \"KM3020005\",\n * \"vorr_num\": 5,\n * \"arti_code\": \"PROTO-FDM-ABS-01\"\n * }\n * ]\n * }\n * ]\n * }\n * }\n */\n\nexport type ActionDocumentResponseEntryType<fields extends string = string> = {\n [field in fields]: string | number | boolean;\n} & {\n RowKey: string;\n admi_num: number;\n};\n\nexport type ActionDocumentResponseDataEntryType<\n entities extends string = string,\n> = {\n [entity in entities]: Array<ActionDocumentResponseEntryType>;\n};\n\nexport type ActionDocumentResponseType = {\n response: {\n ResultData: Array<ActionDocumentResponseDataEntryType>;\n };\n};\n\nexport function actionDocumentResponseFormatter(\n data: ActionResponseType,\n tableIdentifier: string,\n responseFields: Array<string>,\n): Record<string, unknown> {\n const responseFieldsMap = mapResponseFields(responseFields, tableIdentifier);\n const response: Record<string, unknown> = {};\n\n for (const entityData of (data as ActionDocumentResponseType).response\n .ResultData) {\n for (const [entity, entries] of Object.entries(entityData)) {\n const responseFields = responseFieldsMap[entity];\n if (!responseFields) {\n continue;\n }\n\n for (const entry of entries) {\n for (const [field, value] of Object.entries(entry)) {\n if (responseFields.includes(field)) {\n response[field] = value;\n }\n }\n }\n }\n }\n\n return response;\n}\n\n/**\n * Service response type example:\n *\n * {\n * \"ResultData\": {\n * \"t_actiondata\": [\n * {\n * \"t_id\": \"\",\n * \"t_order\": 1,\n * \"t_action\": \"StartRefresh\",\n * \"t_parameters\":\"Type=Row\u0001RowKey=0x0000000009ca092a\",\n * \"t_value\": null,\n * \"t_result\": \"\",\n * \"t_table_id\": \"\"\n * }\n * ],\n * \"prdr\": [\n * {\n * \"RowDB\": \"AAAAAAnFhSc=\",\n * \"admi_num\": 2,\n * \"prdh_num\": \"KM6020016\",\n * \"prdr_num\": 1,\n * \"RowKey\": \"0x0000000009c58527\",\n * \"RowKeyParent\": \"\"\n * }\n * ]\n * }\n * }\n */\n\nexport type ActionServiceResponseEntryType<fields extends string = string> = {\n [field in fields]: string | number | boolean;\n} & {\n RowDB: string;\n RowKey: string;\n RowKeyParent: string;\n admi_num: number;\n};\n\nexport type ActionServiceResponseResultDataType<\n entities extends string = string,\n> = {\n [entity in entities]: Array<ActionServiceResponseEntryType>;\n};\n\nexport type ActionServiceResponseType = {\n ResultData: ActionServiceResponseResultDataType;\n};\n\nexport function actionServiceResponseFormatter(\n data: ActionResponseType,\n tableIdentifier: string,\n responseFields: Array<string>,\n): Record<string, unknown> {\n const responseFieldsMap = mapResponseFields(responseFields, tableIdentifier);\n const response: Record<string, unknown> = {};\n\n for (const [entity, entries] of Object.entries(\n (data as ActionServiceResponseType).ResultData,\n )) {\n const responseFields = responseFieldsMap[entity];\n if (!responseFields) {\n continue;\n }\n\n for (const entry of entries) {\n for (const [field, value] of Object.entries(entry)) {\n if (responseFields.includes(field)) {\n response[field] = value;\n }\n }\n }\n }\n\n return response;\n}\n\n/**\n * GENERIC\n */\n\nexport type ActionResponseType =\n | ActionDocumentResponseType\n | ActionServiceResponseType;\n\nexport function mapResponseFields(\n responseFields: Array<string>,\n tableIdentifier: string,\n): Record<string, Array<string>> {\n const map: Record<string, Array<string>> = {};\n\n responseFields.forEach((field) => {\n const [entity, entityField] = field.split('.');\n\n if (entity && entityField) {\n if (!map[entity]) {\n map[entity] = [];\n }\n\n map[entity].push(entityField);\n } else if (entity) {\n if (!map[tableIdentifier]) {\n map[tableIdentifier] = [];\n }\n\n map[tableIdentifier].push(entity);\n }\n });\n\n return map;\n}\n", "import { MkgTableInterface } from '../../types';\n\nimport {\n actionDocumentResponseFormatter,\n ActionResponseType,\n} from './response';\n\ntype MkgActionMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';\n\nexport type MkgActionMetadata = {\n administration: string;\n};\n\nexport type MkgActionPathFunction = (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n) => string;\n\nexport type MkgActionResponseFunction = (\n data: ActionResponseType,\n tableIdentifier: string,\n responseFields: Array<string>,\n) => Record<string, unknown>;\n\nexport interface MkgActionInterface {\n identifier: string;\n\n method: MkgActionMethod;\n\n fields: Array<string>;\n\n optionalFields?: Array<string>;\n\n responseFields?: Array<string>;\n\n path?: MkgActionPathFunction;\n\n response?: MkgActionResponseFunction;\n}\n\nexport class MkgAction implements MkgActionInterface {\n readonly identifier: string;\n\n readonly method: MkgActionMethod;\n\n readonly fields: Array<string>;\n\n readonly optionalFields: Array<string>;\n\n readonly responseFields: Array<string>;\n\n readonly path: MkgActionPathFunction;\n\n readonly response: MkgActionResponseFunction;\n\n #table!: MkgTableInterface;\n\n constructor(params: MkgActionInterface) {\n this.identifier = params.identifier;\n this.method = params.method;\n this.fields = params.fields;\n this.optionalFields = params.optionalFields ?? [];\n this.responseFields = params.responseFields ?? [];\n this.path = params.path ?? this.defaultPathFormatter;\n this.response = params.response ?? actionDocumentResponseFormatter;\n }\n\n withParentTable(table: MkgTableInterface): MkgAction {\n const action = new MkgAction(this);\n action.#table = table;\n\n return action;\n }\n\n fieldSet(inputData: Record<string, unknown>): Record<string, unknown> {\n const fieldData = new Map<string, unknown>();\n\n this.fields.forEach((field) => {\n // eslint-disable-next-line security/detect-object-injection\n const inputDataValue = inputData[field];\n if (!inputDataValue) {\n throw new Error(\n `Missing required field '${field}' for action '${this.identifier}'`,\n );\n }\n\n fieldData.set(field, inputDataValue);\n });\n\n this.optionalFields.forEach((field) => {\n // eslint-disable-next-line security/detect-object-injection\n const inputDataValue = inputData[field];\n if (inputDataValue) {\n fieldData.set(field, inputDataValue);\n }\n });\n\n return Object.fromEntries(fieldData.entries());\n }\n\n formatResponse(data: ActionResponseType): Record<string, unknown> {\n return this.response(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data as any,\n this.#table.identifier,\n this.responseFields,\n );\n }\n\n private defaultPathFormatter(): string {\n return this.#table.identifier;\n }\n}\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_MOVE = new MkgAction({\n identifier: 'move',\n method: 'PUT',\n fields: [\n 'admi_num',\n 'part_num',\n 'magl_code',\n 't_doel_magl',\n 't_doel_aantal',\n 'RowKey',\n ],\n path: (): string => 'parl/0/Service/s_partij_verplaatsen',\n});\n\nexport const MKG_TABLE_PARL = new MkgTable(\n {\n identifier: 'parl',\n fields: [],\n },\n [ACTION_MOVE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: [\n 'prdh_num',\n 'prdr_num',\n 'bwrk_num',\n 'plnb_dat_start',\n 'plnb_tijd_start',\n ],\n});\n\nexport const MKG_TABLE_PLNB = new MkgTable(\n {\n identifier: 'plnb',\n interval: 60,\n fields: [\n 'plnb_num',\n 'prdh_num',\n 'bwrk_num',\n 'rsrc_num',\n 'medw_num',\n 'plnb_dat_start',\n 'plnb_tijd_start',\n 'plnb_wk_start',\n 'plnb_dat_eind',\n 'plnb_tijd_eind',\n 'plnb_wk_eind',\n 'plnb_dat_gestart',\n 'plnb_tijd_gestart',\n 'plnb_wk_gestart',\n 'plnb_gestart',\n 'plnb_gereed',\n 'plnb_aantal',\n 'plnb_aantal_grd',\n 'plnb_aantal_per_uur',\n 'plnb_bijloop_aantal',\n 'plnb_uitb_aantal',\n 'plnb_volgorde',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create.prdh_prdr',\n method: 'POST',\n fields: ['bwrk_num', 'prbv_tijd_per_stuk'],\n path: (inputData: Record<string, unknown>): string => {\n // eslint-disable-next-line security/detect-object-injection\n const prdhNum = inputData['prdh_num'];\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const prdrNum = inputData['prdr_num'];\n if (!prdrNum) {\n throw new Error(`Missing required field 'prdr_num' for action 'create'`);\n }\n\n return `prdr/1+${prdhNum}+${prdrNum}/prdr_prbv`;\n },\n});\n\nexport const MKG_TABLE_PRBV = new MkgTable(\n {\n identifier: 'prbv',\n fields: [],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: [],\n optionalFields: [\n 'prdh_oms_1',\n 'proj_num',\n 'prdh_dat_order',\n 'prdh_dat_planning',\n ],\n responseFields: ['prdh_num'],\n});\n\nexport const MKG_TABLE_PRDH = new MkgTable(\n {\n identifier: 'prdh',\n interval: 300,\n fields: [\n 'prdh_num',\n 'prdh_forecast',\n 'prdh_historisch',\n 'prdh_dat_planning',\n 'prdh_dat_order',\n 't_klant',\n 'proj_num',\n 'prdh_oms_1',\n // 'prdh_op_dek_mat',\n // 'prdh_op_dek_uit',\n // 'prdh_wk_order',\n // 'prdh_memo_extern',\n // 'prdh_wk_gepland',\n // 'prdh_files',\n // 'prdh_op_vcnc_uit',\n // 'prdh_oms_2',\n // 'prdh_memo_intern',\n // 'prdh_op_vcnc_man',\n // 'prdh_op_vcnc_mat',\n // 'prdh_op_vcnc_mach',\n // 'prdh_op_dek_man',\n // 'prdh_fase_planning',\n // 'prdh_wk_planning',\n // 'prdh_kostprijs_methode_bew',\n // 'prdh_calc_methode_mat',\n // 'prdh_image',\n // 'prdh_dat_gepland',\n // 'prdh_calc_methode_bew',\n // 'prdh_oms_3',\n // 'prdh_op_dek_mach',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create-prdh-eindproduct',\n method: 'POST',\n fields: ['prdr_aantal', 'arti_code'],\n responseFields: ['prdh_num', 'prdr_num'],\n path: (inputData: Record<string, unknown>): string => {\n const { prdh_num: prdhNum } = inputData;\n\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n return `prdh/${prdhNum}/prdh_eindproduct/`;\n },\n});\n\nexport const MKG_TABLE_PRDR = new MkgTable(\n {\n identifier: 'prdr',\n interval: 300,\n fields: [\n 'prdh_num',\n 'prdr_num',\n 'prdr_aantal',\n 'arti_code',\n 't_status_oms',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create.prdh_prdr',\n method: 'POST',\n fields: ['prmv_oms_1', 'cred_num'],\n path: (inputData: Record<string, unknown>): string => {\n // eslint-disable-next-line security/detect-object-injection\n const prdhNum = inputData['prdh_num'];\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const prdrNum = inputData['prdr_num'];\n if (!prdrNum) {\n throw new Error(`Missing required field 'prdr_num' for action 'create'`);\n }\n\n return `prdr/1+${prdhNum}+${prdrNum}/prdr_prmv`;\n },\n});\n\nexport const MKG_TABLE_PRMV = new MkgTable(\n {\n identifier: 'prmv',\n fields: [],\n },\n [ACTION_CREATE],\n);\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_PROJ = new MkgTable({\n identifier: 'proj',\n interval: 300,\n fields: [\n 'admi_num',\n 'RowTime',\n 'proj_oms',\n 'proj_historisch',\n 'proj_prdh',\n 'RowKey',\n 'proj_num',\n 'proj_vorh',\n 'proj_zoeknaam',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RELA = new MkgTable({\n identifier: 'rela',\n fields: [\n 'rela_num',\n 'rela_naam',\n 'rela_zoeknaam',\n 'rela_email',\n 'rela_actief',\n 'rela_plaats',\n 'rela_postcode',\n 'rela_www',\n 'rela_telefoon',\n // 'rela_vrij_datum_4',\n // 'rela_vrij_datum_3',\n // 'rela_vrij_datum_2',\n // 'rela_vrij_datum_5',\n // 'rela_vrij_datum_1',\n // 'rela_vrij_veld_1',\n // 'rela_moeder',\n // 'rela_vrij_veld_3',\n // 'rela_vrij_veld_5',\n // 'rela_vrij_veld_2',\n // 'rela_vrij_veld_4',\n // 'rela_vrij_memo_1',\n // 'rela_resr',\n // 'rela_memo',\n // 'rela_vrij_memo_5',\n // 'rela_naam_2',\n // 'rela_vrij_memo_2',\n // 'rela_plaats_2',\n // 'rela_vrij_memo_3',\n // 'rela_vrij_memo_4',\n // 'rela_afbeelding',\n // 'rela_files',\n // 'rela_fax',\n // 'rela_info',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RGRS = new MkgTable({\n identifier: 'rgrs',\n interval: 60,\n fields: [\n 'abnk_bizcuit_id',\n 'aant_vraag_oms',\n 'abnk_oms',\n 'adon_code',\n 'adon_oms',\n 'adop_code',\n 'arti_code',\n 'bwrg_oms',\n 'bwrk_oms',\n 'cert_code',\n 'gebr_code',\n 'kbdp_oms',\n 'kltn_code',\n 'kstg_oms',\n 'land_code',\n 'magw_code',\n 'medw_betaling_per_bank_2_naam',\n 'medw_betaling_per_bank_naam',\n 'medw_naam',\n 'medw_premiesparen_naam',\n 'medw_spaarloon_naam',\n 'rela_naam',\n 'reld_oms',\n 'rsrc_oms',\n 'rsrg_oms',\n 'spco_code',\n 'strd_oms',\n 't_bwrk_num_oms',\n 't_bwrk_oms',\n 't_oms',\n 't_omschrijving',\n 'aanr_datum',\n 'aanr_num',\n 'aans_num',\n 'aant_num',\n 'abnk_num',\n 'adma_num',\n 'admi_num',\n 'afdl_num',\n 'agtn_num',\n 'apia_num',\n 'bank_num',\n 'bwrf_num',\n 'bwrg_num',\n 'bwrk_num',\n 'clcb_num',\n 'clch_num',\n 'clch_vofh_num',\n 'clch_vofh_verk_num',\n 'clcm_num',\n 'clcr_num',\n 'clct_num',\n 'cred_num',\n 'debi_num',\n 'dgbk_num',\n 'fcth_num',\n 'geac_num',\n 'ifch_num',\n 'inkg_num',\n 'iofh_num',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RSRC = new MkgTable({\n identifier: 'rsrc',\n interval: 300,\n fields: [\n 'rsrc_fcst_eindige_cap',\n 'rsrc_oms',\n 'rsrc_memo',\n 'rsrc_volgorde',\n 'rsrc_magl_in',\n 'rsrc_onbemand',\n 'rsrc_num',\n 'rsrc_calc_eindige_cap',\n 'rsrc_magl_uit',\n 'rsrc_aantal',\n 'rsrc_calc_bucket',\n 'rsrc_eindige_cap',\n 'rsrc_fcst_bucket',\n 'rsrc_bucket',\n 'rsrc_afbeelding',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RSRD = new MkgTable({\n identifier: 'rsrd',\n interval: 300,\n fields: [\n 'rsrd_zo_p2_van',\n 'rsrd_za_p2_tot',\n 'rsrd_do_p1_tot',\n 'rsrd_di_p5_tot',\n 'rsrd_zo_p5_tot',\n 'rsrd_do_p3_tot',\n 'rsrd_ma_p4_tot',\n 'rsrd_wo_p3_van',\n 'rsrd_zo_p1_van',\n 'rsrd_fd_p1_van',\n 'rsrd_do_p5_van',\n 'rsrd_wo_p2_tot',\n 'rsrd_za_van',\n 'rsrd_vr_p3_van',\n 'rsrd_za_p4_van',\n 'rsrd_ma_p5_tot',\n 'rsrd_fd_p3_van',\n 'rsrd_wo_tot',\n 'rsrd_vr_tot',\n 'rsrd_ma_p1_tot',\n 'rsrd_wo_p1_tot',\n 'rsrd_zo_p4_tot',\n 'rsrd_di_p4_tot',\n 'rsrd_ma_p3_van',\n 'rsrd_ma_p5_van',\n 'rsrd_di_tot',\n 'rsrd_fd_p4_van',\n 'rsrd_vr_van',\n 'rsrd_za_p3_tot',\n 'rsrd_za_p1_van',\n 'rsrd_zo_p5_van',\n 'rsrd_fd_p2_tot',\n 'rsrd_vr_p5_van',\n 'rsrd_di_p4_van',\n 'rsrd_za_p5_tot',\n 'rsrd_di_p3_van',\n 'rsrd_ma_p2_tot',\n 'rsrd_di_van',\n 'rsrd_do_p1_van',\n 'rsrd_zo_p3_tot',\n 'rsrd_vr_p5_tot',\n 'rsrd_zo_p1_tot',\n 'rsrd_ma_van',\n 'rsrd_do_tot',\n 'rsrd_wo_p2_van',\n 'rsrd_vr_p3_tot',\n 'rsrd_di_p1_van',\n 'rsrd_za_p5_van',\n 'rsrd_fd_p5_van',\n 'rsrd_vr_p4_tot',\n 'rsrd_wo_p3_tot',\n 'rsrd_fd_p1_tot',\n 'rsrd_fd_p3_tot',\n 'rsrd_ma_p4_van',\n 'rsrd_di_p3_tot',\n 'rsrd_zo_p4_van',\n 'rsrd_do_p4_tot',\n 'rsrd_do_van',\n 'rsrd_do_p3_van',\n 'rsrd_wo_p1_van',\n 'rsrd_za_p4_tot',\n 'rsrd_zo_van',\n 'rsrd_do_p2_tot',\n 'rsrd_vr_p2_van',\n 'rsrd_vr_p2_tot',\n 'rsrd_vr_p1_tot',\n 'rsrd_do_p5_tot',\n 'rsrd_wo_van',\n 'rsrd_zo_tot',\n 'rsrd_za_p2_van',\n 'rsrd_oms',\n 'rsrd_zo_p3_van',\n 'rsrd_fd_p2_van',\n 'rsrd_do_p4_van',\n 'rsrd_di_p2_tot',\n 'rsrd_za_p3_van',\n 'rsrd_wo_p4_van',\n 'rsrd_vr_p4_van',\n 'rsrd_wo_p4_tot',\n 'rsrd_num',\n 'rsrd_ma_tot',\n 'rsrd_ma_p1_van',\n 'rsrd_di_p5_van',\n 'rsrd_fd_p5_tot',\n 'rsrd_vr_p1_van',\n 'rsrd_di_p2_van',\n 'rsrd_do_p2_van',\n 'rsrd_wo_p5_van',\n 'rsrd_za_tot',\n 'rsrd_ma_p3_tot',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RSRG = new MkgTable({\n identifier: 'rsrg',\n fields: ['rsrg_num', 'rsrg_memo', 'rsrg_oms'],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_STLH = new MkgTable({\n identifier: 'stlh',\n interval: 300,\n fields: [\n 'stlh_actief',\n 'arti_code',\n 'stlh_oms_1',\n 'stlh_num',\n // 'stlh_teken',\n // 'stlh_rev_lengte',\n // 'stlh_bron',\n // 'stlh_volgnummer',\n // 'stlh_oms_2',\n // 'stlh_memo',\n // 'stlh_revisie',\n // 'stlh_rev_preview',\n // 'stlh_lengte',\n // 'stlh_oms_3',\n // 'stlh_files',\n // 'stlh_prefix',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_STLM = new MkgTable({\n identifier: 'stlm',\n interval: 600,\n fields: [\n 'arti_code',\n 'stlm_rest_min',\n 'stlm_eenh',\n 'stlm_netto_prijs_uitb',\n 'stlm_lijst_9',\n 'stlm_oms_1',\n 'stlm_gewicht_netto',\n 'stlm_lijst_2',\n 'stlm_volume',\n 'stlm_tot_nettoprijs',\n 'stlm_oms_3',\n 'stlm_toegeleverd',\n 'stlm_netto_prijs_mat',\n 'stlm_plaat_magw',\n 'stlm_rest_hl',\n 'stlm_lijst_5',\n 'stlm_oppervlakte',\n 'stlm_num',\n 'stlm_parameter_2',\n 'stlm_parameter_1',\n 'stlm_gewicht_bruto',\n 'stlm_zaaglengte',\n 'stlm_revisie',\n 'stlm_lijst_4',\n 'stlm_eenh_nettoprijs',\n 'stlm_plaat_b',\n 'stlm_tekening',\n 'stlm_opspanlengte_hl',\n 'stlm_eenmalig',\n 'stlm_opspanlengte_pl',\n 'stlm_lijst_7',\n 'stlm_memo_extern',\n 'stlm_factor',\n 'stlm_parameter_3',\n 'stlm_aantal',\n 'stlm_gewicht_per_m',\n 'stlm_plaat_a',\n 'stlm_plaat_dx',\n 'stlm_behoefte_obv',\n 'stlm_netto_prijs_fictief',\n 'stlm_opspanlengte_hlzl',\n 'stlm_memo',\n 'stlm_io_aanvragen',\n 'stlm_opspanlengte',\n 'stlm_aantal_lengtes',\n 'stlm_volgorde',\n 'stlm_zaagsnede_lengte',\n 'stlm_lijst_8',\n 'stlm_netto_prijs_mach',\n 'stlm_pos',\n 'stlm_oms_2',\n 'stlm_eenh_bestel',\n 'stlm_netto_prijs_man',\n 'stlm_handelslengte',\n 'stlm_eigen_spec',\n 'stlm_cad',\n 'stlm_zaagsnede',\n 'stlm_netto_prijs',\n 'stlm_bestel_gezaagd',\n 'stlm_prijs_methode',\n 'stlm_rest_zl',\n 'stlm_parameter_5',\n 'stlm_plaat_dy',\n 'stlm_lijst_6',\n 'stlm_bestel_handelslengte',\n 'stlm_lengte',\n 'stlm_lijst_3',\n 'stlm_spec_prijs',\n 'stlm_lijst_1',\n 'stlm_files',\n 'stlm_parameter_4',\n 'stlm_plaat_k',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_STLR = new MkgTable({\n identifier: 'stlr',\n interval: 600,\n fields: [\n 'stlr_cad',\n 'stlr_parent_aantal',\n 'stlr_aantal',\n 'stlr_verh_oppv_aantal_grp',\n 'stlr_verh_gewicht_eenh_grp',\n 'stlr_verh_tijd_aantal_grp',\n 'stlr_verh_volume_aantal_grp',\n 'stlr_memo',\n 'stlr_stlr_herkomst',\n 'stlr_verh_aantal_eenh_grp',\n 'stlr_verh_gewicht_aantal_vrd',\n 'stlr_verh_aantal_aantal_vrd',\n 'stlr_seriegrootte',\n 'stlr_inherit_tekening',\n 'stlr_uitval',\n 'stlr_volgorde',\n 'stlr_eenmalig',\n 'stlr_oms_3',\n 'stlr_verh_volume_aantal_vrd',\n 'stlr_verh_tijd_aantal_vrd',\n 'stlr_files',\n 'stlr_oms_1',\n 'stlr_pos',\n 'stlr_verh_gewicht_aantal_grp',\n 'stlr_eindproduct_num',\n 'stlr_stlm_certificaat',\n 'stlr_verh_rest_aantal_vrd',\n 'stlr_niveau',\n 'stlr_tekening',\n 'stlr_verh_lengte_eenh_grp',\n 'stlr_prod_fase',\n 'stlr_revisie',\n 'stlr_verh_lengte_aantal_vrd',\n 'stlr_verh_volume_eenh_grp',\n 'stlr_verh_rest_aantal_grp',\n 'stlr_verh_oppv_eenh_grp',\n 'stlr_num',\n 'stlr_verh_tijd_eenh_grp',\n 'stlr_verwijzing',\n 'stlr_afronden_aant',\n 'stlr_verh_aantal_aantal_grp',\n 'stlr_oms_2',\n 'stlr_parent',\n 'stlr_verh_lengte_aantal_grp',\n 'stlr_verh_rest_eenh_grp',\n 'stlr_verw_stlh',\n 'stlr_stlh_herkomst',\n 'stlr_cad_revisie',\n 'stlr_verh_oppv_aantal_vrd',\n 'stlr_handlingstijd',\n 'stlr_tot_aantal',\n 'stlr_prod_aantal',\n ],\n});\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['debi_num'],\n optionalFields: [\n 'rela_num',\n 'proj_num',\n 'vorh_dat_levering',\n 'vorh_dat_gewenst',\n 'vorh_dat_order',\n 'vorh_ref_onze',\n 'vorh_ref_uw',\n 'verk_num',\n 'valu_code',\n ],\n responseFields: ['vorh_num'],\n});\n\nexport const MKG_TABLE_VORH = new MkgTable(\n {\n identifier: 'vorh',\n interval: 300,\n fields: [\n 'valu_code',\n 'debi_num',\n 'vorh_dat_levering',\n 'vorh_dat_gewenst',\n 'vorh_dat_order',\n 'vorh_bestelcode_extern',\n 'vorh_historisch',\n 'vorh_ref_onze',\n 'vorh_ref_uw',\n 'taal_code',\n 'rela_num',\n 'vorh_num',\n 'proj_num',\n 'verk_num',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction, MkgActionMetadata } from './base/action';\nimport { actionServiceResponseFormatter } from './base/response';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create-vorh-line',\n method: 'POST',\n fields: ['arti_code'],\n optionalFields: [\n 'vorr_dat_gewenst',\n 'vorr_oms_1',\n 'vorr_oms_2',\n 'vorr_order_aantal',\n 'vrdg_num',\n 'vrkg_num',\n ],\n path: (inputData: Record<string, unknown>): string => {\n const { vorh_num: vorhNum } = inputData;\n\n if (!vorhNum) {\n throw new Error(`Missing required field 'vorh_num' for action 'create'`);\n }\n\n return `vorh/${vorhNum}/vorh_vorr/`;\n },\n responseFields: ['vorh_num', 'vorr_num'],\n});\n\nconst ACTION_CREATE_PRODUCTION_ORDER = new MkgAction({\n identifier: 'create-prdh',\n method: 'PUT',\n fields: [],\n path: (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n ): string => {\n const { vorh_num: vorhNum, vorr_num: vorrNum } = inputData;\n\n if (!vorhNum) {\n throw new Error(\n `Missing required field 'vorh_num' for action 'create-prdh'`,\n );\n }\n\n if (!vorrNum) {\n throw new Error(\n `Missing required field 'vorr_num' for action 'create-prdh'`,\n );\n }\n\n return `vorr/${metadata.administration}+${vorhNum}+${vorrNum}/Service/s_createproductionorder`;\n },\n responseFields: ['prdr.prdh_num', 'prdr.prdr_num'],\n response: actionServiceResponseFormatter,\n});\n\nconst ACTION_CREATE_BACKFLUSH = new MkgAction({\n identifier: 'create-backflush',\n method: 'PUT',\n fields: [],\n path: (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n ): string => {\n const { vorh_num: vorhNum, vorr_num: vorrNum } = inputData;\n\n if (!vorhNum) {\n throw new Error(\n `Missing required field 'vorh_num' for action 'create-backflush'`,\n );\n }\n\n if (!vorrNum) {\n throw new Error(\n `Missing required field 'vorr_num' for action 'create-backflush'`,\n );\n }\n\n return `vorr/${metadata.administration}+${vorhNum}+${vorrNum}/Service/s_createbackflush`;\n },\n});\n\nexport const MKG_TABLE_VORR = new MkgTable(\n {\n identifier: 'vorr',\n interval: 300,\n fields: [\n 'vorh_num',\n 'vorr_num',\n 'arti_code',\n 'vorr_dat_gewenst',\n 'vorr_oms_1',\n 'vorr_oms_2',\n 'vorr_order_aantal',\n 'vrdg_num',\n 'vrkg_num',\n ],\n },\n [ACTION_CREATE, ACTION_CREATE_PRODUCTION_ORDER, ACTION_CREATE_BACKFLUSH],\n);\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_VRDG = new MkgTable({\n identifier: 'vrdg',\n fields: [\n 'vrdg_grbk_pv_grd_uitb',\n 'vrdg_grbk_hw_grd_uitb',\n 'vrdg_grbk_grd_mat',\n 'vrdg_grbk_hw_grd_mat',\n 'vrdg_grbk_hw_grd_man',\n 'vrdg_grbk_vrd_mat',\n 'vrdg_grbk_hw_grd_mach',\n 'vrdg_grbk_grd_mach',\n 'vrdg_num',\n 'vrdg_grbk_pv_grd_mat',\n 'vrdg_grbk_kst_mach',\n 'vrdg_grbk_kst_mat',\n 'vrdg_grbk_pv_grd_mach',\n 'vrdg_grbk_kst_man',\n 'vrdg_grbk_kst_uitb',\n 'vrdg_oms',\n 'vrdg_grbk_grd_uitb',\n 'vrdg_grbk_pv_grd_man',\n 'vrdg_grbk_pv_vrd_mat',\n 'vrdg_grbk_grd_man',\n ],\n});\n", "import { MKG_TABLE_ARTG } from './artg';\nimport { MKG_TABLE_ARTI } from './arti';\nimport { MkgTable } from './base/table';\nimport { MKG_TABLE_BWRG } from './bwrg';\nimport { MKG_TABLE_BWRK } from './bwrk';\nimport { MKG_TABLE_CLCH } from './clch';\nimport { MKG_TABLE_CLCR } from './clcr';\nimport { MKG_TABLE_CPRS } from './cprs';\nimport { MKG_TABLE_DEBI } from './debi';\nimport { MKG_TABLE_MAGL } from './magl';\nimport { MKG_TABLE_MAGZ } from './magz';\nimport { MKG_TABLE_MEDW } from './medw';\nimport { MKG_TABLE_PARL } from './parl';\nimport { MKG_TABLE_PLNB } from './plnb';\nimport { MKG_TABLE_PRBV } from './prbv';\nimport { MKG_TABLE_PRDH } from './prdh';\nimport { MKG_TABLE_PRDR } from './prdr';\nimport { MKG_TABLE_PRMV } from './prmv';\nimport { MKG_TABLE_PROJ } from './proj';\nimport { MKG_TABLE_RELA } from './rela';\nimport { MKG_TABLE_RGRS } from './rgrs';\nimport { MKG_TABLE_RSRC } from './rsrc';\nimport { MKG_TABLE_RSRD } from './rsrd';\nimport { MKG_TABLE_RSRG } from './rsrg';\nimport { MKG_TABLE_STLH } from './stlh';\nimport { MKG_TABLE_STLM } from './stlm';\nimport { MKG_TABLE_STLR } from './stlr';\nimport { MKG_TABLE_VORH } from './vorh';\nimport { MKG_TABLE_VORR } from './vorr';\nimport { MKG_TABLE_VRDG } from './vrdg';\n\nconst tables = [\n MKG_TABLE_RELA,\n MKG_TABLE_DEBI,\n MKG_TABLE_MEDW,\n MKG_TABLE_ARTI,\n MKG_TABLE_RSRC,\n MKG_TABLE_RSRD,\n MKG_TABLE_RSRG,\n MKG_TABLE_MAGZ,\n MKG_TABLE_MAGL,\n MKG_TABLE_STLH,\n MKG_TABLE_STLR,\n MKG_TABLE_STLM,\n MKG_TABLE_PRDH,\n MKG_TABLE_BWRK,\n MKG_TABLE_BWRG,\n MKG_TABLE_CLCH,\n MKG_TABLE_VRDG,\n MKG_TABLE_RGRS,\n MKG_TABLE_PLNB,\n MKG_TABLE_ARTG,\n MKG_TABLE_PRDR,\n MKG_TABLE_PRMV,\n MKG_TABLE_PRBV,\n MKG_TABLE_PARL,\n MKG_TABLE_CLCR,\n MKG_TABLE_CPRS,\n MKG_TABLE_PROJ,\n MKG_TABLE_VORH,\n MKG_TABLE_VORR,\n];\n\nexport const MKG_TABLES: { [identifier: string]: MkgTable } = tables.reduce(\n (acc, table) => {\n acc[table.identifier] = table;\n return acc;\n },\n {} as { [identifier: string]: MkgTable },\n);\n", "import {\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n HttpError,\n} from '@transai/connector-runtime-sdk';\nimport {\n ActionInterface,\n KafkaCallbackResponse,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { MKG_TABLES } from './tables/_all';\nimport { MkgActionMetadata } from './tables/base/action';\nimport {\n ActionDocumentResponseType,\n ActionServiceResponseType,\n} from './tables/base/response';\nimport { ConnectorConfig } from './types';\n\nexport class ActionsHandler {\n readonly #connectorSDK: ConnectorSDKInterface<ConnectorConfig>;\n\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(\n connectorSDK: ConnectorSDKInterface<ConnectorConfig>,\n httpClient: HttpClientSDKInterface,\n ) {\n this.#connectorSDK = connectorSDK;\n this.#httpClient = httpClient;\n }\n\n get callbackFunctionChain(): (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse> {\n return this.#jobCallbackFunction(\n this.#connectorSDK.receiver.emitEventType(\n this.#connectorSDK.receiver.responses.ok(),\n ),\n );\n }\n\n #jobCallbackFunction(\n callbackFunction: (message: XodJobType) => Promise<KafkaCallbackResponse>,\n ) {\n return async (\n message: XodJobType,\n action: ActionInterface,\n ): Promise<KafkaCallbackResponse> => {\n try {\n this.#connectorSDK.logger.debug(\n `[MKG] Apply templates on payload: ${JSON.stringify(message.payload)}, action: ${JSON.stringify(action)}`,\n );\n\n const actionMetadata: MkgActionMetadata = {\n administration: this.#connectorSDK.config.administration ?? '1',\n };\n\n const actionInput = message.payload['action'] as string | undefined;\n let dataInput = message.payload['data'] as\n | Record<string, unknown>\n | string\n | undefined;\n\n if (typeof dataInput === 'string') {\n dataInput = JSON.parse(dataInput) as Record<string, unknown>;\n }\n\n if (!actionInput || !dataInput) {\n const logMessage = `[MKG] Missing required action input parameters in message ${message.eventId}`;\n this.#connectorSDK.logger.warn(logMessage);\n return this.#connectorSDK.receiver.responses.badRequest(logMessage)(\n message,\n );\n }\n\n this.#connectorSDK.logger.debug(\n `[MKG] Parsed action: ${actionInput}, params json: ${JSON.stringify(dataInput)}`,\n );\n\n const [tableIdentifier, ...rest] = actionInput.split('.');\n const actionIdentifier = rest.join('.');\n // eslint-disable-next-line security/detect-object-injection\n const mkgTable = MKG_TABLES[tableIdentifier];\n if (!mkgTable) {\n this.#connectorSDK.logger.warn(\n `[MKG] Unknown table identifier \"${tableIdentifier}\" in message ${message.eventId}`,\n );\n return this.#connectorSDK.receiver.responses.badRequest(\n `[MKG] Unknown table identifier \"${tableIdentifier}\"`,\n )(message);\n }\n\n const mkgAction = mkgTable.action(actionIdentifier);\n if (!mkgAction) {\n const logMessage = `[MKG] Unknown action identifier \"${actionIdentifier}\" within table \"${tableIdentifier}\" in message ${message.eventId}`;\n this.#connectorSDK.logger.warn(logMessage);\n return this.#connectorSDK.receiver.responses.badRequest(logMessage)(\n message,\n );\n }\n\n if (message.testRun) {\n this.#connectorSDK.logger.info(\n `[MKG] Test run for ${message.eventId} to action ${actionInput}`,\n );\n return callbackFunction(message);\n }\n\n try {\n const mkgActionFieldSet = mkgAction.fieldSet(dataInput);\n const response = await this.#httpClient.request<\n ActionDocumentResponseType | ActionServiceResponseType\n >(\n mkgAction.method,\n `/web/v3/MKG/Documents/${mkgAction.path(dataInput, actionMetadata)}`,\n {\n ...(['POST', 'PUT'].includes(mkgAction.method) &&\n Object.keys(mkgActionFieldSet).length > 0\n ? {\n data: {\n request: {\n InputData: {\n [tableIdentifier]: [mkgActionFieldSet],\n },\n },\n },\n }\n : {}),\n },\n );\n\n this.#connectorSDK.logger.debug(\n `[MKG] Got action \"${actionIdentifier}\" of table \"${tableIdentifier}\" response from MKG: ${JSON.stringify(response)}`,\n );\n\n const parsedData = mkgAction.formatResponse(response.data);\n\n this.#connectorSDK.logger.verbose(\n `[MKG] Formatted action \"${actionIdentifier}\" of table \"${tableIdentifier}\" response to ${Object.keys(parsedData).length} fields`,\n );\n\n return callbackFunction({\n ...message,\n payload: {\n status: response.status,\n data: parsedData,\n },\n });\n } catch (error: HttpError | unknown) {\n const logMessage = `[MKG] Failed to perform action \"${actionIdentifier}\" of table \"${tableIdentifier}\": (${(error as HttpError)?.status}) ${(error as HttpError)?.error ?? (error as Error)?.message}`;\n this.#connectorSDK.logger.error(logMessage);\n\n return this.#connectorSDK.receiver.responses.unprocessableEntity(\n logMessage,\n )(message);\n }\n } catch (error: unknown) {\n return this.#connectorSDK.receiver.responses.internalServerError(\n error instanceof Error ? error.message : 'Unknown error occurred',\n )(message);\n }\n };\n }\n}\n", "import { ConnectorSDKInterface } from '@transai/connector-runtime-sdk';\n\nimport { ConnectorConfig } from '../types';\n\nexport function baseUrl(sdk: ConnectorSDKInterface<ConnectorConfig>): string {\n const { config } = sdk;\n return `https://${config.server}:${config.port ?? 443}/${(config.path ?? '/mkg').replace(/^\\/+/, '')}`;\n}\n", "import {\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n HttpError,\n IntervalHandler,\n StoredOffset,\n} from '@transai/connector-runtime-sdk';\n\nimport { baseUrl } from './helpers/base-url';\nimport {\n ConnectorConfig,\n DEFAULT_DATASOURCE,\n MkgTableInterface,\n} from './types';\n\ntype FetchDataResponse<D> = {\n response: {\n ResultData: [\n {\n [key: string]: Array<D>;\n },\n ];\n };\n};\n\nexport class ExtractorService implements IntervalHandler {\n readonly #sdk: ConnectorSDKInterface<ConnectorConfig>;\n\n readonly #httpClient: HttpClientSDKInterface;\n\n readonly #tableIdentifier: string;\n\n readonly #table: Required<MkgTableInterface>;\n\n readonly #fieldsList: string;\n\n constructor(\n sdk: ConnectorSDKInterface<ConnectorConfig>,\n httpClient: HttpClientSDKInterface,\n tableIdentifier: string,\n table: Required<MkgTableInterface>,\n ) {\n this.#sdk = sdk;\n this.#httpClient = httpClient;\n this.#tableIdentifier = tableIdentifier;\n this.#table = table;\n this.#fieldsList = table.fields.join(',');\n }\n\n get name(): string {\n return `mkg-extractor-${this.#tableIdentifier}`;\n }\n\n async onRun(): Promise<void> {\n try {\n const now = new Date();\n const latestOffset = await this.#sdk.offsetStore.getOffset(\n `offset_${this.#tableIdentifier}`,\n );\n\n const data = await this.#fetchData(latestOffset);\n if (data.length === 0) {\n this.#sdk.logger.verbose(\n `[MKG] No new data found for ${this.#tableIdentifier}`,\n );\n return;\n }\n\n await this.#sdk.sender.documents(data, {\n keyField: this.#table.identifierField,\n collection: `${this.#sdk.config.datasourceIdentifier ?? DEFAULT_DATASOURCE}_${this.#tableIdentifier}`,\n });\n this.#sdk.logger.debug(\n `[MKG] Processed ${data.length} records from ${this.#tableIdentifier}`,\n );\n\n this.#sdk.offsetStore.setOffset(\n {\n id: String(\n data[data.length - 1]?.[this.#table.identifierField] ??\n latestOffset.id,\n ),\n timestamp: now.getTime(),\n rawTimestamp: now.toISOString(),\n },\n `offset_${this.#tableIdentifier}`,\n );\n } catch (error) {\n this.#sdk.logger.error(\n `[MKG] Failed to retrieve and process data from OPC UA source service`,\n { error },\n );\n throw error;\n }\n }\n\n #fetchData = async (\n latestOffset: StoredOffset,\n ): Promise<\n Array<{\n [key: string]: string | number | boolean;\n }>\n > => {\n const parameters = new URLSearchParams();\n parameters.set('NumRows', String(this.#table.rows));\n if (latestOffset.id !== 0) {\n parameters.set(\n 'Filter',\n `${this.#table.dateField}>=${latestOffset.rawTimestamp}`,\n );\n }\n parameters.set('FieldList', `${this.#table.dateField},${this.#fieldsList}`);\n\n try {\n const destinationPath = `/web/v3/MKG/Documents/${this.#tableIdentifier}`;\n this.#sdk.logger.verbose(\n `[MKG] Fetching data from '${baseUrl(this.#sdk)}${destinationPath}'...`,\n );\n const response = await this.#httpClient.get<\n FetchDataResponse<{\n [key: string]: string | number | boolean;\n }>\n >(`${destinationPath}?${parameters.toString()}`);\n\n const resultData =\n response.data?.response?.ResultData?.[0]?.[this.#tableIdentifier] ?? [];\n this.#sdk.logger.verbose(\n `[MKG] Fetched ${resultData.length} records from '${baseUrl(this.#sdk)}${destinationPath}'`,\n );\n\n return resultData;\n } catch (error: HttpError | unknown) {\n const logMessage = `[MKG] Failed to fetch data from table \"${this.#tableIdentifier}\": (${(error as HttpError)?.status}) ${(error as HttpError)?.error ?? (error as Error)?.message}`;\n this.#sdk.logger.error(logMessage);\n }\n\n return [];\n };\n}\n", "/* eslint-disable camelcase,@typescript-eslint/naming-convention */\nimport {\n ConnectorRuntimeSDK,\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n HttpRequestOptions,\n} from '@transai/connector-runtime-sdk';\nimport { ConnectorInterface } from '@xip-online-data/types';\n\nimport { ActionsHandler } from './actions-handler';\nimport { ExtractorService } from './extractor.service';\nimport { baseUrl } from './helpers/base-url';\nimport { MKG_TABLES } from './tables/_all';\nimport {\n ConnectorConfig,\n SESSION_COOKIE_NAME,\n SESSION_EXPIRATION_SECONDS,\n} from './types';\n\nexport class ConnectorRunnerMkg extends ConnectorRuntimeSDK<ConnectorConfig> {\n readonly #actionsHandler: ActionsHandler;\n\n readonly #mkgHttpClient: HttpClientSDKInterface;\n\n readonly #sessionTokenHttpClient: HttpClientSDKInterface;\n\n #sessionToken?: {\n token: string;\n expiresAt: number;\n };\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n super(connector, connectorSDK);\n\n const baseUrlString = baseUrl(this.connectorSDK);\n this.#sessionTokenHttpClient = this.connectorSDK.httpClient({\n baseUrl: baseUrlString,\n });\n this.#mkgHttpClient = this.connectorSDK\n .httpClient({\n baseUrl: baseUrlString,\n })\n .setRequestOptionsFormatter(this.#requestOptionsFormatter);\n\n this.#actionsHandler = new ActionsHandler(\n this.connectorSDK,\n this.#mkgHttpClient,\n );\n\n this.callbackFunction = this.#actionsHandler.callbackFunctionChain;\n }\n\n override init = async (): Promise<void> => {\n const { config } = this.connectorSDK;\n\n await this.#getSessionCookie(config.username, config.password).catch(\n (error) => {\n this.connectorSDK.logger.error(\n `[MKG] Error retrieving initial session cookie:`,\n error,\n );\n\n throw new Error(\n `Failed to initialize connector due to authentication error.`,\n );\n },\n );\n\n Object.entries(config.tables ?? {}).forEach(\n ([tableIdentifier, configOrTrue]) => {\n // eslint-disable-next-line security/detect-object-injection\n const table = MKG_TABLES[tableIdentifier];\n if (!table) {\n this.connectorSDK.logger.warn(\n `[MKG] Unknown table identifier \"${tableIdentifier}\", skipping configuration.`,\n );\n return;\n }\n\n if (!table.interval || table.interval <= 0) {\n this.connectorSDK.logger.verbose(\n `[MKG] Table \"${tableIdentifier}\" does not have a valid interval configured, skipping registration.`,\n );\n return;\n }\n\n this.connectorSDK.processing.registerInterval(\n table.interval,\n new ExtractorService(\n this.connectorSDK,\n this.#mkgHttpClient,\n tableIdentifier,\n table.cloneFromTableConfig(configOrTrue),\n ),\n { immediate: table.immediate },\n );\n },\n );\n };\n\n #requestOptionsFormatter = async <D = string | object>(\n options: HttpRequestOptions<D>,\n ): Promise<HttpRequestOptions<D>> => {\n const { config } = this.connectorSDK;\n const sessionCookie = await this.#getSessionCookie(\n config.username,\n config.password,\n ).catch((error) => {\n this.connectorSDK.logger.error(\n `[MKG] Error retrieving session cookie:`,\n error,\n );\n throw error;\n });\n\n return {\n ...options,\n headers: {\n ...(options?.headers ?? {}),\n ...this.#formattedHeaders(sessionCookie),\n },\n };\n };\n\n async #getSessionCookie(\n j_username: string,\n j_password: string,\n ): Promise<string> {\n const token = this.#sessionToken;\n if (token && token.expiresAt > Date.now()) {\n return token.token;\n }\n\n const destinationPath = '/static/auth/j_spring_security_check';\n this.connectorSDK.logger.verbose(\n `[MKG] Retrieving session cookie from '${baseUrl(this.connectorSDK)}${destinationPath}' with 'j_username=${encodeURIComponent(j_username)}&j_password=${'*'.repeat(j_password.length)}'`,\n );\n const response = await this.#sessionTokenHttpClient.post(\n destinationPath,\n `j_username=${encodeURIComponent(j_username)}&j_password=${encodeURIComponent(j_password)}`,\n {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n },\n );\n\n if (!response) {\n throw new Error('Failed to authenticate and retrieve session cookie');\n }\n\n const cookies = (response.headers?.['set-cookie'] ??\n response.headers?.['Set-Cookie'] ??\n []) as Array<string>;\n const sessionCookie = cookies.find((cookie: string) =>\n cookie.startsWith(`${SESSION_COOKIE_NAME}=`),\n );\n\n if (!sessionCookie) {\n throw new Error('Session cookie not found in authentication response');\n }\n\n const sessionToken = sessionCookie\n .split(';')[0]\n ?.substring(`${SESSION_COOKIE_NAME}=`.length);\n\n this.#sessionToken = {\n token: sessionToken,\n expiresAt: Date.now() + SESSION_EXPIRATION_SECONDS - 1000,\n };\n this.connectorSDK.logger.debug(\n `[MKG] Session cookie fetched successfully for user '${j_username}', expires at ${new Date(this.#sessionToken.expiresAt).toISOString()}`,\n );\n\n await this.#updateAdministrationSettings(sessionToken);\n\n return sessionToken;\n }\n\n #formattedHeaders(sessionCookie: string): Record<string, string> {\n const { config } = this.connectorSDK;\n const { apiToken } = config;\n\n this.connectorSDK.logger.verbose(\n `[MKG] Using api headers: ${SESSION_COOKIE_NAME}=${'*'.repeat(sessionCookie.length)} & X-CustomerID=${'*'.repeat(apiToken.length)}`,\n );\n\n return {\n Cookie: `${SESSION_COOKIE_NAME}=${sessionCookie}`,\n 'X-CustomerID': apiToken,\n };\n }\n\n async #updateAdministrationSettings(sessionToken: string): Promise<void> {\n const { config } = this.connectorSDK;\n const { administration, fiscalYear, language } = config;\n\n if (!(administration?.length || fiscalYear?.length || language?.length)) {\n this.connectorSDK.logger.verbose(\n `[MKG] No administration settings to update.`,\n );\n return;\n }\n\n const destinationPath = '/web/v3/MKG/Settings';\n const body: Array<{ t_name: string; t_value: string }> = [];\n\n if (administration) {\n body.push({ t_name: 'Administration', t_value: administration });\n }\n if (fiscalYear) {\n body.push({ t_name: 'FiscalYear', t_value: fiscalYear });\n }\n if (language) {\n body.push({ t_name: 'Language', t_value: language });\n }\n\n this.connectorSDK.logger.verbose(\n `[MKG] Updating administration settings: ${JSON.stringify(body)}`,\n );\n\n await this.#sessionTokenHttpClient\n .put(\n destinationPath,\n {\n request: {\n InputData: {\n t_setting: body,\n },\n },\n },\n {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...this.#formattedHeaders(sessionToken),\n },\n },\n )\n .catch((error) => {\n this.connectorSDK.logger.error(\n `[MKG] Error updating administration settings:`,\n error,\n );\n throw error;\n });\n\n this.connectorSDK.logger.debug(\n `[MKG] Administration settings updated successfully.`,\n );\n }\n}\n"],
5
- "mappings": "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AiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,cACA,WACA,aACA,gBACA,mBACA,YACA,gBACA,UACF,CACF,CAAC,ECbM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,cACA,WACA,eACA,YACA,WACA,cAmDF,CACF,CAAC,EC5DM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,YACA,aACA,iBACA,oBACA,aACA,YACA,YACA,YACF,CACF,CAAC,ECZM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,YACA,aACA,aACA,YACA,aACA,oBACA,WACF,CACF,CAAC,ECXM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,4BACA,qBACA,yBACA,yBACA,uBACA,0BACA,oBACA,oBACA,UACA,oBACA,gBACA,yBACA,8BACA,gBACA,0BACA,mBACA,gBACA,4BACA,uBACA,mBACA,oBACA,qBACA,yBACA,oBACA,gBACA,gBACA,sBACA,YACA,qBACA,iBACA,+BACA,sBACA,0BACA,uBACA,2BACA,gBACA,uBACA,wBACA,oBACA,cACA,kBACA,kBACA,qBACA,kBACA,cACA,sBACA,iBACA,YACA,oBACA,aACA,mBACA,sBACA,qBACA,kBACA,mBACA,sBACA,oBACA,yBACA,eACA,mBACA,sBACA,gBACA,uBACA,sBACA,mBACA,wBACA,gCACA,uBACA,yBACA,8BACA,gCACA,2BACA,gCACA,qBACA,iBACA,yBACA,oBACA,gBACA,2BACA,0BACA,0BACA,gCACA,yBACA,cACA,yBACA,sBACA,eACA,kBACA,kBACA,oBACF,CACF,CAAC,ECvDM,SAASC,EACdC,EACAC,EACAC,EACyB,CACzB,IAAMC,EAAoBC,EAAkBF,EAAgBD,CAAe,EACrEI,EAAoC,CAAC,EAE3C,QAAWC,KAAeN,EAAoC,SAC3D,WACD,OAAW,CAACO,EAAQC,CAAO,IAAK,OAAO,QAAQF,CAAU,EAAG,CAC1D,IAAMJ,EAAiBC,EAAkB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,CACzC,WAAY,OACZ,OAAQ,CACN,WACA,YACA,gBACA,aACA,cACA,cACA,gBACA,WACA,eAyBF,CACF,CAAC,ECrCM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,GACV,OAAQ,CACN,kBACA,iBACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,gCACA,8BACA,YACA,yBACA,sBACA,YACA,WACA,WACA,WACA,YACA,WACA,iBACA,aACA,QACA,iBACA,aACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,gBACA,qBACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACF,CACF,CAAC,ECjEM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,wBACA,WACA,YACA,gBACA,eACA,gBACA,WACA,wBACA,gBACA,cACA,mBACA,mBACA,mBACA,cACA,iBACF,CACF,CAAC,ECpBM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,iBACA,iBACA,iBACA,iBACA,cACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,iBACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,iBACA,iBACA,iBACA,iBACA,cACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,iBACA,iBACA,iBACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,cACA,iBACA,WACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,WACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,gBACF,CACF,CAAC,EC/FM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CAAC,WAAY,YAAa,UAAU,CAC9C,CAAC,ECHM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,cACA,YACA,aACA,UAaF,CACF,CAAC,ECrBM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,YACA,gBACA,YACA,wBACA,eACA,aACA,qBACA,eACA,cACA,sBACA,aACA,mBACA,uBACA,kBACA,eACA,eACA,mBACA,WACA,mBACA,mBACA,qBACA,kBACA,eACA,eACA,uBACA,eACA,gBACA,uBACA,gBACA,uBACA,eACA,mBACA,cACA,mBACA,cACA,qBACA,eACA,gBACA,oBACA,2BACA,yBACA,YACA,oBACA,oBACA,sBACA,gBACA,wBACA,eACA,wBACA,WACA,aACA,mBACA,uBACA,qBACA,kBACA,WACA,iBACA,mBACA,sBACA,qBACA,eACA,mBACA,gBACA,eACA,4BACA,cACA,eACA,kBACA,eACA,aACA,mBACA,cACF,CACF,CAAC,EC7EM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,WACA,qBACA,cACA,4BACA,6BACA,4BACA,8BACA,YACA,qBACA,4BACA,+BACA,8BACA,oBACA,wBACA,cACA,gBACA,gBACA,aACA,8BACA,4BACA,aACA,aACA,WACA,+BACA,uBACA,wBACA,4BACA,cACA,gBACA,4BACA,iBACA,eACA,8BACA,4BACA,4BACA,0BACA,WACA,0BACA,kBACA,qBACA,8BACA,aACA,cACA,8BACA,0BACA,iBACA,qBACA,mBACA,4BACA,qBACA,kBACA,kBACF,CACF,CAAC,ECxDD,IAAMC,GAAgB,IAAIC,EAAU,CAClC,WAAY,SACZ,OAAQ,OACR,OAAQ,CAAC,UAAU,EACnB,eAAgB,CACd,WACA,WACA,oBACA,mBACA,iBACA,gBACA,cACA,WACA,WACF,EACA,eAAg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",
6
- "names": ["process", "ConnectorRuntimeSDK", "connector", "connectorSDK", "#IPC_CHANNEL", "#connectorSDK", "message", "action", "containers", "key", "value", "error", "callback", "#enrichWithActionConfig", "callbackFunction", "DEFAULT_DATASOURCE", "DEFAULT_INTERVAL", "DEFAULT_ROW_KEY_FIELD", "DEFAULT_DATE_FIELD", "DEFAULT_NUM_ROWS", "SESSION_COOKIE_NAME", "SESSION_EXPIRATION_SECONDS", "MkgTable", "_MkgTable", "params", "actions", "DEFAULT_INTERVAL", "DEFAULT_ROW_KEY_FIELD", "DEFAULT_DATE_FIELD", "DEFAULT_NUM_ROWS", "action", "tableConfig", "field", "index", "list", "identifier", "a", "MKG_TABLE_ARTG", "MkgTable", "MKG_TABLE_ARTI", "MkgTable", "MKG_TABLE_BWRG", "MkgTable", "MKG_TABLE_BWRK", "MkgTable", "MKG_TABLE_CLCH", "MkgTable", "MKG_TABLE_CLCR", "MkgTable", "MKG_TABLE_CPRS", "MkgTable", "MKG_TABLE_DEBI", "MkgTable", "MKG_TABLE_MAGL", "MkgTable", "MKG_TABLE_MAGZ", "MkgTable", "MKG_TABLE_MEDW", "MkgTable", "actionDocumentResponseFormatter", "data", "tableIdentifier", "responseFields", "responseFieldsMap", "mapResponseFields", "response", "entityData", "entity", "entries", "entry", "field", "value", "actionServiceResponseFormatter", "map", "entityField", "MkgAction", "_MkgAction", "#table", "params", "actionDocumentResponseFormatter", "table", "action", "inputData", "fieldData", "field", "inputDataValue", "data", "ACTION_MOVE", "MkgAction", "MKG_TABLE_PARL", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_PLNB", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "prdhNum", "prdrNum", "MKG_TABLE_PRBV", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_PRDH", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "prdhNum", "MKG_TABLE_PRDR", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "prdhNum", "prdrNum", "MKG_TABLE_PRMV", "MkgTable", "MKG_TABLE_PROJ", "MkgTable", "MKG_TABLE_RELA", "MkgTable", "MKG_TABLE_RGRS", "MkgTable", "MKG_TABLE_RSRC", "MkgTable", "MKG_TABLE_RSRD", "MkgTable", "MKG_TABLE_RSRG", "MkgTable", "MKG_TABLE_STLH", "MkgTable", "MKG_TABLE_STLM", "MkgTable", "MKG_TABLE_STLR", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_VORH", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "vorhNum", "ACTION_CREATE_PRODUCTION_ORDER", "metadata", "vorrNum", "actionServiceResponseFormatter", "ACTION_CREATE_BACKFLUSH", "MKG_TABLE_VORR", "MkgTable", "MKG_TABLE_VRDG", "MkgTable", "tables", "MKG_TABLE_RELA", "MKG_TABLE_DEBI", "MKG_TABLE_MEDW", "MKG_TABLE_ARTI", "MKG_TABLE_RSRC", "MKG_TABLE_RSRD", "MKG_TABLE_RSRG", "MKG_TABLE_MAGZ", "MKG_TABLE_MAGL", "MKG_TABLE_STLH", "MKG_TABLE_STLR", "MKG_TABLE_STLM", "MKG_TABLE_PRDH", "MKG_TABLE_BWRK", "MKG_TABLE_BWRG", "MKG_TABLE_CLCH", "MKG_TABLE_VRDG", "MKG_TABLE_RGRS", "MKG_TABLE_PLNB", "MKG_TABLE_ARTG", "MKG_TABLE_PRDR", "MKG_TABLE_PRMV", "MKG_TABLE_PRBV", "MKG_TABLE_PARL", "MKG_TABLE_CLCR", "MKG_TABLE_CPRS", "MKG_TABLE_PROJ", "MKG_TABLE_VORH", "MKG_TABLE_VORR", "MKG_TABLES", "acc", "table", "ActionsHandler", "#connectorSDK", "#httpClient", "connectorSDK", "httpClient", "#jobCallbackFunction", "callbackFunction", "message", "action", "actionMetadata", "actionInput", "dataInput", "logMessage", "tableIdentifier", "rest", "actionIdentifier", "mkgTable", "MKG_TABLES", "mkgAction", "mkgActionFieldSet", "response", "parsedData", "error", "baseUrl", "sdk", "config", "ExtractorService", "#sdk", "#httpClient", "#tableIdentifier", "#table", "#fieldsList", "sdk", "httpClient", "tableIdentifier", "table", "now", "latestOffset", "data", "#fetchData", "DEFAULT_DATASOURCE", "error", "parameters", "destinationPath", "baseUrl", "resultData", "logMessage", "ConnectorRunnerMkg", "ConnectorRuntimeSDK", "connector", "connectorSDK", "config", "#getSessionCookie", "error", "tableIdentifier", "configOrTrue", "table", "MKG_TABLES", "ExtractorService", "#mkgHttpClient", "#requestOptionsFormatter", "options", "sessionCookie", "#formattedHeaders", "baseUrlString", "baseUrl", "#sessionTokenHttpClient", "#actionsHandler", "ActionsHandler", "#sessionToken", "j_username", "j_password", "token", "destinationPath", "response", "cookie", "SESSION_COOKIE_NAME", "sessionToken", "SESSION_EXPIRATION_SECONDS", "#updateAdministrationSettings", "apiToken", "administration", "fiscalYear", "language", "body"]
3
+ "sources": ["../../../libs/connector-runtime-sdk/src/lib/connector-runtime.ts", "../../../libs/connector-runner-mkg/src/lib/actions-handler.ts", "../../../libs/connector-runner-mkg/src/lib/events/trigger-sync.event.ts", "../../../libs/connector-runner-mkg/src/lib/types.ts", "../../../libs/connector-runner-mkg/src/lib/tables/base/table.ts", "../../../libs/connector-runner-mkg/src/lib/tables/artg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/base/response.ts", "../../../libs/connector-runner-mkg/src/lib/tables/base/action.ts", "../../../libs/connector-runner-mkg/src/lib/tables/arti.ts", "../../../libs/connector-runner-mkg/src/lib/tables/bwrg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/bwrk.ts", "../../../libs/connector-runner-mkg/src/lib/tables/clch.ts", "../../../libs/connector-runner-mkg/src/lib/tables/clcr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/cprs.ts", "../../../libs/connector-runner-mkg/src/lib/tables/debi.ts", "../../../libs/connector-runner-mkg/src/lib/tables/magl.ts", "../../../libs/connector-runner-mkg/src/lib/tables/magz.ts", "../../../libs/connector-runner-mkg/src/lib/tables/medw.ts", "../../../libs/connector-runner-mkg/src/lib/tables/pamt.ts", "../../../libs/connector-runner-mkg/src/lib/tables/parl.ts", "../../../libs/connector-runner-mkg/src/lib/tables/part.ts", "../../../libs/connector-runner-mkg/src/lib/tables/plnb.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prbv.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prdh.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prdr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/prmv.ts", "../../../libs/connector-runner-mkg/src/lib/tables/proj.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rela.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rgrs.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rsrc.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rsrd.ts", "../../../libs/connector-runner-mkg/src/lib/tables/rsrg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/stlb.ts", "../../../libs/connector-runner-mkg/src/lib/tables/stlh.ts", "../../../libs/connector-runner-mkg/src/lib/tables/stlm.ts", "../../../libs/connector-runner-mkg/src/lib/tables/stlr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/vorh.ts", "../../../libs/connector-runner-mkg/src/lib/tables/vorr.ts", "../../../libs/connector-runner-mkg/src/lib/tables/vrdg.ts", "../../../libs/connector-runner-mkg/src/lib/tables/_all.ts", "../../../libs/connector-runner-mkg/src/lib/helpers/base-url.ts", "../../../libs/connector-runner-mkg/src/lib/extractor.service.ts", "../../../libs/connector-runner-mkg/src/lib/connector-runner-mkg.ts"],
4
+ "sourcesContent": ["import * as process from 'node:process';\n\nimport {\n KafkaCallbackResponse,\n BaseConnectorConfig,\n ActionInterface,\n ConnectorInterface,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { ConnectorRuntimeInterface } from './connector-runtime.interface';\nimport { CompileDelegate, ConnectorSDKInterface } from './sdk';\n\nexport interface IpcMessage {\n cmd: string;\n message: string;\n}\n\nexport abstract class ConnectorRuntimeSDK<\n T extends BaseConnectorConfig = BaseConnectorConfig,\n> implements ConnectorRuntimeInterface {\n readonly #IPC_CHANNEL = 'connector-runtime';\n\n readonly #connectorSDK: ConnectorSDKInterface<T>;\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n this.#connectorSDK = connectorSDK as ConnectorSDKInterface<T>;\n\n if (process.on) {\n process.on('message', (message: IpcMessage) => {\n if (message.cmd === this.#IPC_CHANNEL) {\n connectorSDK.logger.verbose(\n `${process.pid} Received message from parent process:`,\n message,\n );\n }\n });\n } else {\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.on is undefined.',\n );\n }\n\n if (!process.send) {\n // Check if process.send is available\n connectorSDK.logger.warn(\n 'IPC channel is not available. process.send is undefined.',\n );\n }\n\n // eslint-disable-next-line no-restricted-syntax\n connector.actions?.forEach((action: ActionInterface) => {\n if (action.config['templates'] === undefined) {\n return;\n }\n\n const containers: {\n [key: string]: CompileDelegate;\n } = {};\n\n Object.entries(action.config['templates']).forEach(([key, value]) => {\n try {\n // eslint-disable-next-line security/detect-object-injection\n containers[key] = connectorSDK.templating.compile(value);\n } catch (error: unknown) {\n connectorSDK.logger.error(\n `Error compiling template ${key} for action ${action.identifier}`,\n error,\n );\n }\n });\n\n // eslint-disable-next-line no-param-reassign\n action.config['parsedTemplates'] = containers;\n });\n }\n\n public init: () => Promise<void> = () => Promise.resolve();\n\n public start: () => Promise<void> = () => Promise.resolve();\n\n public stop: () => Promise<void> = () => Promise.resolve();\n\n set callbackFunction(\n callback: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ) {\n this.connectorSDK.receiver.registerCallback(\n this.#enrichWithActionConfig(callback),\n );\n }\n\n protected get connectorSDK(): ConnectorSDKInterface<T> {\n return this.#connectorSDK;\n }\n\n #enrichWithActionConfig(\n callbackFunction: (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse>,\n ): (message: XodJobType) => Promise<KafkaCallbackResponse> {\n return async (message: XodJobType) => {\n const action = await this.#connectorSDK.receiver.getActionConfig(message);\n if (!action) {\n return this.#connectorSDK.receiver.responses.badRequest(\n 'Action not found',\n )(message);\n }\n return callbackFunction(message, action);\n };\n }\n}\n", "import { EventEmitter } from 'node:events';\n\nimport {\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n HttpError,\n} from '@transai/connector-runtime-sdk';\nimport {\n ActionInterface,\n KafkaCallbackResponse,\n XodJobType,\n} from '@xip-online-data/types';\n\nimport { TriggerSyncEvent } from './events/trigger-sync.event';\nimport { MKG_TABLES } from './tables/_all';\nimport { MkgActionMetadata } from './tables/base/action';\nimport {\n ActionDocumentResponseType,\n ActionServiceResponseType,\n} from './tables/base/response';\nimport { ConnectorConfig } from './types';\n\nexport class ActionsHandler extends EventEmitter {\n readonly #connectorSDK: ConnectorSDKInterface<ConnectorConfig>;\n\n readonly #httpClient: HttpClientSDKInterface;\n\n constructor(\n connectorSDK: ConnectorSDKInterface<ConnectorConfig>,\n httpClient: HttpClientSDKInterface,\n ) {\n super();\n\n this.#connectorSDK = connectorSDK;\n this.#httpClient = httpClient;\n }\n\n get callbackFunctionChain(): (\n message: XodJobType,\n action: ActionInterface,\n ) => Promise<KafkaCallbackResponse> {\n return this.#jobCallbackFunction(\n this.#connectorSDK.receiver.emitEventType(\n this.#connectorSDK.receiver.responses.ok(),\n ),\n );\n }\n\n #jobCallbackFunction(\n callbackFunction: (message: XodJobType) => Promise<KafkaCallbackResponse>,\n ) {\n return async (\n message: XodJobType,\n action: ActionInterface,\n ): Promise<KafkaCallbackResponse> => {\n try {\n this.#connectorSDK.logger.debug(\n `[MKG] Apply templates on payload: ${JSON.stringify(message.payload)}, action: ${JSON.stringify(action)}`,\n );\n\n const actionMetadata: MkgActionMetadata = {\n administration: this.#connectorSDK.config.administration ?? '1',\n };\n\n const actionInput = action.config['action'] as string | undefined;\n if (!actionInput) {\n const logMessage = `[MKG] Missing required action input parameters in message ${message.eventId}`;\n this.#connectorSDK.logger.warn(logMessage);\n return this.#connectorSDK.receiver.responses.badRequest(logMessage)(\n message,\n );\n }\n\n this.#connectorSDK.logger.debug(\n `[MKG] Parsed action: ${actionInput}, params json: ${JSON.stringify(message.payload)}`,\n );\n\n const [tableIdentifier, ...rest] = actionInput.split('.');\n const actionIdentifier = rest.join('.');\n // eslint-disable-next-line security/detect-object-injection\n const mkgTable = MKG_TABLES[tableIdentifier];\n if (!mkgTable) {\n this.#connectorSDK.logger.warn(\n `[MKG] Unknown table identifier \"${tableIdentifier}\" in message ${message.eventId}`,\n );\n return this.#connectorSDK.receiver.responses.badRequest(\n `[MKG] Unknown table identifier \"${tableIdentifier}\"`,\n )(message);\n }\n\n const mkgAction = mkgTable.action(actionIdentifier);\n if (!mkgAction) {\n const logMessage = `[MKG] Unknown action identifier \"${actionIdentifier}\" within table \"${tableIdentifier}\" in message ${message.eventId}`;\n this.#connectorSDK.logger.warn(logMessage);\n return this.#connectorSDK.receiver.responses.badRequest(logMessage)(\n message,\n );\n }\n\n if (message.testRun) {\n this.#connectorSDK.logger.info(\n `[MKG] Test run for ${message.eventId} to action ${actionInput}`,\n );\n return callbackFunction(message);\n }\n\n try {\n const mkgActionFieldSet = mkgAction.fieldSet(message.payload);\n const response = await this.#httpClient.request<\n ActionDocumentResponseType | ActionServiceResponseType\n >(\n mkgAction.method,\n `/web/v3/MKG/Documents/${mkgAction.path(message.payload, actionMetadata)}`,\n {\n ...(['POST', 'PUT'].includes(mkgAction.method) &&\n Object.keys(mkgActionFieldSet).length > 0\n ? {\n data: {\n request: {\n InputData: {\n [tableIdentifier]: [mkgActionFieldSet],\n },\n },\n },\n }\n : {}),\n },\n );\n\n this.#connectorSDK.logger.debug(\n `[MKG] Got action \"${actionIdentifier}\" of table \"${tableIdentifier}\" response from MKG: ${JSON.stringify(response)}`,\n );\n\n const parsedData = mkgAction.formatResponse(response.data);\n\n this.#connectorSDK.logger.verbose(\n `[MKG] Formatted action \"${actionIdentifier}\" of table \"${tableIdentifier}\" response to ${Object.keys(parsedData).length} fields`,\n );\n\n if (mkgAction.triggerRefresh) {\n this.emit(\n TriggerSyncEvent.NAME,\n new TriggerSyncEvent(mkgAction, parsedData),\n );\n }\n\n return callbackFunction({\n ...message,\n payload: {\n status: response.status,\n data: parsedData,\n },\n });\n } catch (error: HttpError | unknown) {\n const logMessage = `[MKG] Failed to perform action \"${actionIdentifier}\" of table \"${tableIdentifier}\": (${(error as HttpError)?.status}) ${(error as HttpError)?.error ?? (error as Error)?.message}`;\n this.#connectorSDK.logger.error(logMessage);\n\n return this.#connectorSDK.receiver.responses.unprocessableEntity(\n logMessage,\n )(message);\n }\n } catch (error: unknown) {\n return this.#connectorSDK.receiver.responses.internalServerError(\n error instanceof Error ? error.message : 'Unknown error occurred',\n )(message);\n }\n };\n }\n}\n", "import { MkgActionInterface } from '../tables/base/action';\n\nexport class TriggerSyncEvent {\n static readonly NAME = 'trigger-sync';\n\n constructor(\n readonly action: MkgActionInterface,\n readonly data: Record<string, unknown>,\n ) {}\n}\n", "import { BaseConnectorConfig } from '@xip-online-data/types';\n\nexport const DEFAULT_DATASOURCE = 'mkg';\n\nexport const DEFAULT_INTERVAL = 3_600;\n\nexport const DEFAULT_ROW_KEY_FIELD = 'RowKey';\n\nexport const DEFAULT_DATE_FIELD = 'sys_dat_wijzig';\n\nexport const DEFAULT_NUM_ROWS = 250;\n\nexport const SESSION_COOKIE_NAME = 'JSESSIONID';\n\n/**\n * Session expires in 30 minutes\n */\nexport const SESSION_EXPIRATION_SECONDS = 30 * 60 * 1000;\n\nexport interface TableConfig {\n fields?: Array<string>;\n}\n\nexport interface ConnectorConfig extends BaseConnectorConfig {\n server: 'saas*.mkg.eu' | string;\n port?: 443 | 8443 | number;\n path?: '/mkg' | '/mkgoefenclient' | string;\n\n username: string;\n password: string;\n apiToken: string;\n\n administration?: string;\n fiscalYear?: string;\n language?: string;\n\n tables?: { [key: string]: TableConfig | true };\n}\n\nexport interface MkgTableInterface {\n identifier: string;\n fields: Array<string>;\n\n immediate?: boolean;\n interval?: number;\n identifierField?: string;\n dateField?: string;\n rows?: number;\n}\n", "import {\n DEFAULT_DATE_FIELD,\n DEFAULT_INTERVAL,\n DEFAULT_NUM_ROWS,\n DEFAULT_ROW_KEY_FIELD,\n MkgTableInterface,\n TableConfig,\n} from '../../types';\n\nimport { MkgAction } from './action';\n\nexport class MkgTable implements MkgTableInterface {\n readonly identifier: string;\n\n readonly fields: Array<string>;\n\n readonly immediate: boolean;\n\n readonly interval: number;\n\n readonly identifierField: string;\n\n readonly dateField: string;\n\n readonly rows: number;\n\n readonly actions: Array<MkgAction>;\n\n constructor(params: MkgTableInterface, actions: Array<MkgAction> = []) {\n this.identifier = params.identifier;\n this.fields = params.fields;\n this.immediate = params.immediate !== false;\n this.interval =\n params.interval ?? (this.fields.length > 0 ? DEFAULT_INTERVAL : 0);\n this.identifierField = params.identifierField ?? DEFAULT_ROW_KEY_FIELD;\n this.dateField = params.dateField ?? DEFAULT_DATE_FIELD;\n this.rows = params.rows ?? DEFAULT_NUM_ROWS;\n this.actions = actions.map((action) => action.withParentTable(this));\n }\n\n cloneFromTableConfig(tableConfig: TableConfig | true): MkgTable {\n if (tableConfig === true || tableConfig.fields === undefined) {\n return this;\n }\n\n return new MkgTable({\n ...this,\n fields: [...this.fields, ...tableConfig.fields].filter(\n (field, index, list) => list.indexOf(field) === index,\n ),\n });\n }\n\n action(identifier: string): MkgAction | undefined {\n return this.actions.find((a) => a.identifier === identifier);\n }\n}\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_ARTG = new MkgTable({\n identifier: 'artg',\n fields: [\n 'artg_num',\n 'artg_rela',\n 'artg_cred',\n 'artg_oms',\n 'artg_inkoopofferte',\n ],\n});\n", "/**\n * Document response type example:\n *\n * {\n * \"response\": {\n * \"ResultData\": [\n * {\n * \"vorr\": [\n * {\n * \"RowKey\": \"0x0000000009ca092a\",\n * \"admi_num\": 2,\n * \"vorh_num\": \"KM3020005\",\n * \"vorr_num\": 5,\n * \"arti_code\": \"PROTO-FDM-ABS-01\"\n * }\n * ]\n * }\n * ]\n * }\n * }\n */\n\nexport type ActionDocumentResponseEntryType<fields extends string = string> = {\n [field in fields]: string | number | boolean;\n} & {\n RowKey: string;\n admi_num: number;\n};\n\nexport type ActionDocumentResponseDataEntryType<\n entities extends string = string,\n> = {\n [entity in entities]: Array<ActionDocumentResponseEntryType>;\n};\n\nexport type ActionDocumentResponseType = {\n response: {\n ResultData: Array<ActionDocumentResponseDataEntryType>;\n };\n};\n\nexport function actionDocumentResponseFormatter(\n data: ActionResponseType,\n tableIdentifier: string,\n responseFields: Array<string>,\n): Record<string, unknown> {\n const responseFieldsMap = mapResponseFields(responseFields, tableIdentifier);\n const response: Record<string, unknown> = {};\n\n for (const entityData of (data as ActionDocumentResponseType).response\n .ResultData) {\n for (const [entity, entries] of Object.entries(entityData)) {\n const responseFields = responseFieldsMap[entity];\n if (!responseFields) {\n continue;\n }\n\n for (const entry of entries) {\n for (const [field, value] of Object.entries(entry)) {\n if (responseFields.includes(field)) {\n response[field] = value;\n }\n }\n }\n }\n }\n\n return response;\n}\n\n/**\n * Service response type example:\n *\n * {\n * \"ResultData\": {\n * \"t_actiondata\": [\n * {\n * \"t_id\": \"\",\n * \"t_order\": 1,\n * \"t_action\": \"StartRefresh\",\n * \"t_parameters\":\"Type=Row\u0001RowKey=0x0000000009ca092a\",\n * \"t_value\": null,\n * \"t_result\": \"\",\n * \"t_table_id\": \"\"\n * }\n * ],\n * \"prdr\": [\n * {\n * \"RowDB\": \"AAAAAAnFhSc=\",\n * \"admi_num\": 2,\n * \"prdh_num\": \"KM6020016\",\n * \"prdr_num\": 1,\n * \"RowKey\": \"0x0000000009c58527\",\n * \"RowKeyParent\": \"\"\n * }\n * ]\n * }\n * }\n */\n\nexport type ActionServiceResponseEntryType<fields extends string = string> = {\n [field in fields]: string | number | boolean;\n} & {\n RowDB: string;\n RowKey: string;\n RowKeyParent: string;\n admi_num: number;\n};\n\nexport type ActionServiceResponseResultDataType<\n entities extends string = string,\n> = {\n [entity in entities]: Array<ActionServiceResponseEntryType>;\n};\n\nexport type ActionServiceResponseType = {\n ResultData: ActionServiceResponseResultDataType;\n};\n\nexport function actionServiceResponseFormatter(\n data: ActionResponseType,\n tableIdentifier: string,\n responseFields: Array<string>,\n): Record<string, unknown> {\n const responseFieldsMap = mapResponseFields(responseFields, tableIdentifier);\n const response: Record<string, unknown> = {};\n\n for (const [entity, entries] of Object.entries(\n (data as ActionServiceResponseType).ResultData,\n )) {\n const responseFields = responseFieldsMap[entity];\n if (!responseFields) {\n continue;\n }\n\n for (const entry of entries) {\n for (const [field, value] of Object.entries(entry)) {\n if (responseFields.includes(field)) {\n response[field] = value;\n }\n }\n }\n }\n\n return response;\n}\n\n/**\n * GENERIC\n */\n\nexport type ActionResponseType =\n | ActionDocumentResponseType\n | ActionServiceResponseType;\n\nexport function mapResponseFields(\n responseFields: Array<string>,\n tableIdentifier: string,\n): Record<string, Array<string>> {\n const map: Record<string, Array<string>> = {};\n\n responseFields.forEach((field) => {\n const [entity, entityField] = field.split('.');\n\n if (entity && entityField) {\n if (!map[entity]) {\n map[entity] = [];\n }\n\n map[entity].push(entityField);\n } else if (entity) {\n if (!map[tableIdentifier]) {\n map[tableIdentifier] = [];\n }\n\n map[tableIdentifier].push(entity);\n }\n });\n\n return map;\n}\n", "import { MkgTableInterface } from '../../types';\n\nimport {\n actionDocumentResponseFormatter,\n ActionResponseType,\n} from './response';\n\ntype MkgActionMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';\n\nexport type MkgActionMetadata = {\n administration: string;\n};\n\nexport type MkgActionPathFunction = (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n) => string;\n\nexport type MkgActionResponseFunction = (\n data: ActionResponseType,\n tableIdentifier: string,\n responseFields: Array<string>,\n) => Record<string, unknown>;\n\nexport interface MkgActionInterface {\n identifier: string;\n\n method: MkgActionMethod;\n\n fields: Array<string>;\n\n optionalFields?: Array<string>;\n\n responseFields?: Array<string>;\n\n path?: MkgActionPathFunction;\n\n response?: MkgActionResponseFunction;\n\n triggerRefresh?: Record<string, Array<string>>;\n}\n\nexport class MkgAction implements MkgActionInterface {\n readonly identifier: string;\n\n readonly method: MkgActionMethod;\n\n readonly fields: Array<string>;\n\n readonly optionalFields: Array<string>;\n\n readonly responseFields: Array<string>;\n\n readonly triggerRefresh?: Record<string, Array<string>>;\n\n readonly path: MkgActionPathFunction;\n\n readonly response: MkgActionResponseFunction;\n\n #table!: MkgTableInterface;\n\n constructor(params: MkgActionInterface) {\n this.identifier = params.identifier;\n this.method = params.method;\n this.fields = params.fields;\n this.triggerRefresh = params.triggerRefresh;\n this.optionalFields = params.optionalFields ?? [];\n this.responseFields = params.responseFields ?? [];\n this.path = params.path ?? this.defaultPathFormatter;\n this.response = params.response ?? actionDocumentResponseFormatter;\n }\n\n withParentTable(table: MkgTableInterface): MkgAction {\n const action = new MkgAction(this);\n action.#table = table;\n\n return action;\n }\n\n fieldSet(inputData: Record<string, unknown>): Record<string, unknown> {\n const fieldData = new Map<string, unknown>();\n\n this.fields.forEach((field) => {\n // eslint-disable-next-line security/detect-object-injection\n const inputDataValue = inputData[field];\n if (!inputDataValue) {\n throw new Error(\n `Missing required field '${field}' for action '${this.identifier}'`,\n );\n }\n\n fieldData.set(field, inputDataValue);\n });\n\n this.optionalFields.forEach((field) => {\n // eslint-disable-next-line security/detect-object-injection\n const inputDataValue = inputData[field];\n if (inputDataValue) {\n fieldData.set(field, inputDataValue);\n }\n });\n\n return Object.fromEntries(fieldData.entries());\n }\n\n formatResponse(data: ActionResponseType): Record<string, unknown> {\n return this.response(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data as any,\n this.#table.identifier,\n this.responseFields,\n );\n }\n\n private defaultPathFormatter(): string {\n return this.#table.identifier;\n }\n}\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['arti_code'],\n optionalFields: [\n 'arti_oms_1',\n 'arti_zoeknaam',\n 'debi_num',\n 'arti_inkoop_artikel',\n ],\n responseFields: ['arti_code'],\n triggerRefresh: {\n arti: ['arti_code'],\n },\n});\n\nexport const MKG_TABLE_ARTI = new MkgTable(\n {\n identifier: 'arti',\n interval: 300,\n fields: [\n 'arti_actief',\n 'arti_code',\n 'arti_revisie',\n 'arti_oms_1',\n 'arti_tekening',\n 'arti_stlh_num',\n 'arti_zoeknaam',\n 'arti_inkoop_artikel',\n 'debi_num',\n // 'arti_parameter_2',\n // 'arti_prijs_vast_man',\n // 'arti_seriegrootte',\n // 'arti_vrij_memo_1',\n // 'arti_bestellen',\n // 'arti_btw_aanpasbaar',\n // 'arti_vrij_datum_1',\n // 'arti_eenh_uitgifte',\n // 'arti_eenh_prijs_inkoop',\n // 'arti_partij_per_1',\n // 'arti_partij',\n // 'arti_voorraad_waarde_mach',\n // 'arti_parameter_4',\n // 'arti_eenh_ontvangst',\n // 'arti_prijs_vast_mat',\n // 'arti_verh_tijd_aantal_grp',\n // 'arti_voorraad_aantal',\n // 'arti_bestel_freq_eenh',\n // 'arti_vrij_datum_4',\n // 'arti_eenh_vrk',\n // 'arti_trans_eenh',\n // 'arti_kosten_artikel',\n // 'arti_verh_tijd_aantal_vrd',\n // 'arti_verh_volume_aantal_grp',\n // 'arti_memo_verkoop_intern',\n // 'arti_verh_volume_aantal_vrd',\n // 'arti_vrij_memo_2',\n // 'arti_blok_verkoop',\n // 'arti_verh_aantal_aantal_vrd',\n // 'arti_bestelcode',\n // 'arti_locatie',\n // 'arti_prijs_netto_mat',\n // 'arti_prijs_vast',\n // 'arti_vrij_veld_1',\n // 'arti_parameter_1',\n // 'arti_vrij_datum_2',\n // 'arti_gewicht_per_m',\n // 'arti_memo_inkoop_extern',\n // 'arti_inkoopofferte',\n // 'arti_prijs_gemiddeld_mat',\n // 'arti_dienst_verkoop',\n // 'arti_oms_2',\n // 'arti_levertijd_inkoop',\n // 'arti_verh_tijd_eenh_grp',\n // 'arti_prijs_netto_uitb',\n // 'arti_oppervlakte',\n // 'arti_voorraadsysteem',\n // 'arti_kostprijssysteem',\n // 'arti_niet_autores',\n // 'arti_wvp_obv_gvp',\n // 'arti_vrij_memo_5',\n // 'arti_prijs_inkoop',\n // 'arti_levertijd_productie',\n // 'arti_verh_gewicht_aantal_grp',\n // 'arti_verh_gewicht_eenh_grp',\n // 'arti_vrij_veld_2',\n // 'arti_prijs_gemiddeld_mach',\n // 'arti_lijst_3',\n // 'arti_verh_gewicht_aantal_vrd',\n // 'arti_parameter_3',\n // 'arti_lijst_1',\n // 'arti_prijs_vast_mach',\n // 'arti_vrij_veld_5',\n // 'arti_ict_fact_verkoop',\n // 'arti_verh_lengte_aantal_vrd',\n // 'arti_backflush',\n // 'arti_vrij_datum_3',\n // 'arti_vrd_aanvullen_tot',\n // 'arti_inkoop_artikel',\n // 'arti_verh_rest_aantal_grp',\n // 'arti_eenh_vrd',\n // 'arti_prijs_vast_uitb',\n // 'arti_trans_gewicht',\n // 'arti_memo_inkoop_intern',\n // 'arti_vrij_memo_3',\n // 'arti_prijs_netto',\n // 'arti_mat_lengte',\n // 'arti_bestelhoeveelheid',\n // 'arti_eenh_bestelling',\n // 'arti_verh_oppv_eenh_grp',\n // 'arti_voorraad_artikel',\n // 'arti_backflush_uitval',\n // 'arti_lijst_9',\n // 'arti_vrij_datum_5',\n // 'arti_verh_oppv_aantal_grp',\n // 'arti_prijs_gemiddeld_uitb',\n // 'arti_prijs_verkoop_eenm',\n // 'arti_oms_3',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_BWRG = new MkgTable({\n identifier: 'bwrg',\n fields: [\n 'bwrg_inkoopofferte',\n 'bwrg_memo',\n 'bwrg_oms',\n 'bwrg_num',\n 'bwrg_cred',\n 'bwrg_rela',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_BWRK = new MkgTable({\n identifier: 'bwrk',\n interval: 60,\n fields: [\n 'bwrk_actief',\n 'bwrk_oms',\n 'bwrk_num',\n 'bwrk_rsrc_instellen',\n 'bwrk_rsrc_bew',\n 'bwrk_onbemand',\n // 'bwrk_bwrf_instellen',\n // 'bwrk_rela',\n // 'bwrk_inkoopofferte',\n // 'bwrk_reden_vroeg_laat',\n // 'bwrk_tarief_netto_instel',\n // 'bwrk_grbk_direct_verantw',\n // 'bwrk_actief_pauze',\n // 'bwrk_memo',\n // 'bwrk_aanloop_type',\n // 'bwrk_medw_ovz',\n // 'bwrk_grbk_indirect_kosten_mach',\n // 'bwrk_niet_op_uren_pc',\n // 'bwrk_memo_instel',\n // 'bwrk_afloop_tijd',\n // 'bwrk_magl_uit',\n // 'bwrk_wachttijd_voor',\n // 'bwrk_magl_in',\n // 'bwrk_wegingsfactor_nc',\n // 'bwrk_vspt_bew',\n // 'bwrk_afloop_perc',\n // 'bwrk_afloop_type',\n // 'bwrk_tarief_netto_mach',\n // 'bwrk_memo_extern',\n // 'bwrk_specificeren',\n // 'bwrk_afbeelding',\n // 'bwrk_wachttijd_na',\n // 'bwrk_uitb_prijs',\n // 'bwrk_man_per_machine',\n // 'bwrk_aanloop_perc',\n // 'bwrk_insteltijd',\n // 'bwrk_tarief_calc_mach',\n // 'bwrk_uitb_dagen',\n // 'bwrk_grbk_direct_verantw_mach',\n // 'bwrk_start_type',\n // 'bwrk_volgorde',\n // 'bwrk_grbk_indirect_kosten',\n // 'bwrk_uitbesteding',\n // 'bwrk_uitb_prijs_eenh',\n // 'bwrk_eenmalig',\n // 'bwrk_vspt_instel',\n // 'bwrk_vspt_uitb',\n // 'bwrk_sf_start_gereed',\n // 'bwrk_tarief_calc_instel',\n // 'bwrk_grbk_indirect_verantw',\n // 'bwrk_grbk_indirect_verantw_mach',\n // 'bwrk_aanloop_tijd',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_CLCH = new MkgTable({\n identifier: 'clch',\n interval: 60,\n fields: [\n 'arti_code',\n 'clch_num',\n 'clch_oms_1',\n 'prdt_num',\n 'clch_vofh_proj',\n // 'clch_volgnummer',\n // 'clch_op_dek_uit',\n // 'clch_op_calc_mat',\n // 'clch_vofh_verk_num',\n // 'clch_op_calc_mach',\n // 'clch_vofh_dat_antwoord',\n // 'clch_kostprijs_methode_bew',\n // 'clch_op_calc_man',\n // 'clch_vofr_oms_1',\n // 'clch_vofh_dat_levering',\n // 'clch_lengte',\n // 'clch_vofh_ref_onze',\n // 'clch_calc_methode_mat',\n // 'clch_op_calc_uit',\n // 'clch_memo',\n // 'clch_vofh_proj',\n // 'clch_vofr_order_aantal',\n // 'clch_calc_methode_bew',\n // 'clch_op_dek_man',\n // 'clch_op_dek_mach',\n // 'clch_files',\n // 'clch_op_dek_mat',\n // 'clch_vofh_rela',\n // 'clch_vofh_num',\n // 'clch_oms_3',\n // 'clch_vofh_dat_aanvraag',\n // 'clch_vofh_ref_uw',\n // 'clch_vofr_arti',\n // 'clch_oms_2',\n // 'clch_boekjaar_afh',\n // 'clch_vofr_eenh_order',\n // 'clch_fase_planning',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_CLCR = new MkgTable({\n identifier: 'clcr',\n interval: 60,\n fields: [\n 'arti_code',\n 'clch_num',\n 'clcr_oms_1',\n 'clcr_tekening',\n 'clcr_niveau',\n 'clcr_num',\n 'clcr_parent',\n 'stlh_num',\n 'clcr_revisie',\n ],\n});\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['rela_num'],\n optionalFields: [\n 'cprs_voorletters',\n 'cprs_voornaam',\n 'cprs_tussenvoegsel',\n 'cprs_naam',\n 'cprs_eigen_email',\n 'cprs_eigen_telefoon',\n 'cprs_gsm',\n ],\n responseFields: ['cprs_num'],\n triggerRefresh: {\n cprs: ['cprs_num'],\n },\n});\n\nexport const MKG_TABLE_CPRS = new MkgTable(\n {\n identifier: 'cprs',\n interval: 300,\n fields: [\n 'cprs_actief',\n 'cprs_num',\n 'cprs_voorletters',\n 'cprs_voornaam',\n 'cprs_tussenvoegsel',\n 'cprs_naam',\n 'cprs_eigen_email',\n 'cprs_eigen_telefoon',\n 'cprs_gsm',\n 'rela_num',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_DEBI = new MkgTable({\n identifier: 'debi',\n fields: [\n 'debi_actief',\n 'debi_num',\n 'debi_kvk_num',\n 'debi_naam',\n 'rela_num',\n 'debi_btw_num',\n // 'debi_email',\n // 'debi_vrij_datum_4',\n // 'debi_pkbh_verz_type',\n // 'debi_vrij_memo_3',\n // 'debi_vrij_memo_4',\n // 'debi_zoeknaam',\n // 'debi_bic',\n // 'debi_kredietlimiet2',\n // 'debi_deellev',\n // 'debi_fcth_verz_type',\n // 'debi_plaats_bank',\n // 'debi_dat_btw_verificatie',\n // 'debi_vrij_datum_1',\n // 'debi_btw',\n // 'debi_peppol_id',\n // 'debi_vrij_memo_2',\n // 'debi_fact_naam_2',\n // 'debi_docs',\n // 'debi_bet_wijze',\n // 'debi_blok',\n // 'debi_vrij_datum_5',\n // 'debi_bankcode',\n // 'debi_memo_extern',\n // 'debi_naam_2',\n // 'debi_rekening',\n // 'debi_aantal_fact',\n // 'debi_vrij_veld_2',\n // 'debi_status_btw_verificatie',\n // 'debi_deelfact',\n // 'debi_comm_opslag',\n // 'debi_naam_btw_verificatie',\n // 'debi_vrij_veld_3',\n // 'debi_vrij_veld_4',\n // 'debi_incasso',\n // 'debi_vrij_memo_1',\n // 'debi_vrij_memo_5',\n // 'debi_max_regels_pakb',\n // 'debi_vrij_datum_3',\n // 'debi_iban',\n // 'debi_max_regels_fact',\n // 'debi_toon_opslagen',\n // 'debi_memo_kredietbewaking',\n // 'debi_kredietlimiet',\n // 'debi_debi_fact',\n // 'debi_vrij_veld_5',\n // 'debi_vrij_datum_2',\n // 'debi_fact_naam',\n // 'debi_vrij_veld_1',\n // 'debi_memo_intern',\n // 'debi_adres_btw_verificatie',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_MAGL = new MkgTable({\n identifier: 'magl',\n fields: [\n 'magl_memo',\n 'magl_oms_3',\n 'magl_shopfloor',\n 'magl_niet_autores',\n 'magl_oms_2',\n 'magl_code',\n 'magl_blok',\n 'magl_oms_1',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_MAGZ = new MkgTable({\n identifier: 'magz',\n fields: [\n 'magz_memo',\n 'magz_oms_1',\n 'magz_oms_2',\n 'magz_code',\n 'magz_oms_3',\n 'magz_niet_autores',\n 'magz_blok',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_MEDW = new MkgTable({\n identifier: 'medw',\n fields: [\n 'medw_pensioenpremie_werkn',\n 'medw_spaarloon_rek',\n 'medw_betaling_per_bank',\n 'medw_premiesparen_naam',\n 'medw_ziekengeld_aanm',\n 'medw_betaling_per_rek_2',\n 'medw_auto_vd_zaak',\n 'medw_vrij_datum_5',\n 'medw_or',\n 'medw_premiesparen',\n 'medw_telefoon',\n 'medw_aanwezigheids_reg',\n 'medw_betaling_per_bank_naam',\n 'medw_postcode',\n 'medw_premiesparen_batch',\n 'medw_verschuiven',\n 'medw_onkosten',\n 'medw_pensioenpremie_werkg',\n 'medw_arbodienst_aanm',\n 'medw_lid_persver',\n 'medw_laatste_bwrk',\n 'medw_memo_contract',\n 'medw_premiesparen_iban',\n 'medw_vrij_datum_3',\n 'medw_nummer_2',\n 'medw_voornaam',\n 'medw_ziekengeld_afm',\n 'medw_mdrc',\n 'medw_spaarloon_bic',\n 'medw_spaarloon',\n 'medw_betaling_per_bank_oms_3',\n 'medw_spaarloon_iban',\n 'medw_prod_gereed_melden',\n 'medw_spaarloon_batch',\n 'medw_betaling_per_iban_2',\n 'medw_roepnaam',\n 'medw_vutpremie_werkg',\n 'medw_betaling_per_rek',\n 'medw_uren_per_dag',\n 'medw_plaats',\n 'medw_telefoon_2',\n 'medw_or_functie',\n 'medw_pensioenfonds',\n 'medw_schoenmaat',\n 'medw_naam_2',\n 'medw_spaarloon_oms1',\n 'medw_vutpremie',\n 'medw_ehbo',\n 'medw_vrij_datum_4',\n 'medw_email',\n 'medw_vrij_memo_1',\n 'medw_soort_contract',\n 'medw_vakantie_uren',\n 'medw_reiskosten',\n 'medw_vrij_veld_4',\n 'medw_waohiaat_werkg',\n 'medw_vrij_datum_2',\n 'medw_premiesparen_oms1',\n 'medw_salaris',\n 'medw_vrij_veld_3',\n 'medw_spaarloon_oms3',\n 'medw_planning',\n 'medw_raadplegen_uren',\n 'medw_spaarloon_naam',\n 'medw_vrij_veld_5',\n 'medw_ziekenfonds_aanm',\n 'medw_betaling_per_bank_2_naam',\n 'medw_partime_salaris',\n 'medw_premiesparen_oms2',\n 'medw_bedrijfsvereniging_afm',\n 'medw_betaling_per_bank_2_oms1',\n 'medw_betaling_per_bank_2',\n 'medw_betaling_per_bank_plaats',\n 'medw_tussenvoegsel',\n 'medw_instellen',\n 'medw_pensioenfonds_afm',\n 'medw_functietitel',\n 'medw_straat_2',\n 'medw_premiesparen_plaats',\n 'medw_betaling_per_bic_2',\n 'medw_betaling_per_kas_2',\n 'medw_betaling_per_bank_2_oms3',\n 'medw_premiesparen_oms3',\n 'medw_straat',\n 'medw_premiesparen_oms4',\n 'medw_dagen_per_week',\n 'medw_telefax',\n 'medw_afbeelding',\n 'medw_op_uren_pc',\n 'medw_direct_gereed',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_PAMT = new MkgTable({\n identifier: 'pamt',\n fields: [\n 'pamt_aantal',\n 'part_num',\n 'arti_code',\n 'pamt_vrd_aantal',\n 'pamt_dat_fysiek',\n 'pamt_type',\n 'prdh_num',\n ],\n});\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_MOVE = new MkgAction({\n identifier: 'move',\n method: 'PUT',\n fields: [\n 'admi_num',\n 'part_num',\n 'magl_code',\n 't_doel_magl',\n 't_doel_aantal',\n 'RowKey',\n ],\n path: (): string => 'parl/0/Service/s_partij_verplaatsen',\n});\n\nexport const MKG_TABLE_PARL = new MkgTable(\n {\n identifier: 'parl',\n fields: [],\n },\n [ACTION_MOVE],\n);\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_PART = new MkgTable({\n identifier: 'part',\n fields: [\n 'part_dat_eind',\n 't_aant_vrij',\n 'part_num',\n 'part_dat_start',\n 'arti_code',\n 'part_oms_1',\n 'part_historisch',\n 't_aant_fysiek',\n ],\n});\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: [\n 'prdh_num',\n 'prdr_num',\n 'bwrk_num',\n 'plnb_dat_start',\n 'plnb_tijd_start',\n ],\n});\n\nexport const MKG_TABLE_PLNB = new MkgTable(\n {\n identifier: 'plnb',\n interval: 60,\n fields: [\n 'plnb_num',\n 'prdh_num',\n 'bwrk_num',\n 'rsrc_num',\n 'medw_num',\n 'plnb_dat_start',\n 'plnb_tijd_start',\n 'plnb_wk_start',\n 'plnb_dat_eind',\n 'plnb_tijd_eind',\n 'plnb_wk_eind',\n 'plnb_dat_gestart',\n 'plnb_tijd_gestart',\n 'plnb_wk_gestart',\n 'plnb_gestart',\n 'plnb_gereed',\n 'plnb_aantal',\n 'plnb_aantal_grd',\n 'plnb_aantal_per_uur',\n 'plnb_bijloop_aantal',\n 'plnb_uitb_aantal',\n 'plnb_volgorde',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create.prdh_prdr',\n method: 'POST',\n fields: ['bwrk_num', 'prbv_tijd_per_stuk'],\n path: (inputData: Record<string, unknown>): string => {\n // eslint-disable-next-line security/detect-object-injection\n const prdhNum = inputData['prdh_num'];\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const prdrNum = inputData['prdr_num'];\n if (!prdrNum) {\n throw new Error(`Missing required field 'prdr_num' for action 'create'`);\n }\n\n return `prdr/1+${prdhNum}+${prdrNum}/prdr_prbv`;\n },\n});\n\nexport const MKG_TABLE_PRBV = new MkgTable(\n {\n identifier: 'prbv',\n fields: [],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: [],\n optionalFields: [\n 'prdh_oms_1',\n 'proj_num',\n 'prdh_dat_order',\n 'prdh_dat_planning',\n ],\n responseFields: ['prdh_num'],\n triggerRefresh: {\n prdh: ['prdh_num'],\n },\n});\n\nexport const MKG_TABLE_PRDH = new MkgTable(\n {\n identifier: 'prdh',\n interval: 300,\n fields: [\n 'prdh_num',\n 'prdh_forecast',\n 'prdh_historisch',\n 'prdh_dat_planning',\n 'prdh_dat_order',\n 't_klant',\n 'proj_num',\n 'prdh_oms_1',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction, MkgActionMetadata } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create-prdh-eindproduct',\n method: 'POST',\n fields: ['prdr_aantal', 'arti_code'],\n responseFields: ['prdh_num', 'prdr_num'],\n path: (inputData: Record<string, unknown>): string => {\n const { prdh_num: prdhNum } = inputData;\n\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n return `prdh/${prdhNum}/prdh_eindproduct/`;\n },\n});\n\nconst ACTION_IN_PRODUCTION = new MkgAction({\n identifier: 'in-production',\n method: 'PUT',\n fields: ['prdh_num', 'prdr_num'],\n path: (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n ): string => {\n const { prdh_num: prdhNum, prdr_num: prdrNum } = inputData;\n\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n if (!prdrNum) {\n throw new Error(`Missing required field 'prdr_num' for action 'create'`);\n }\n\n return `prdr/${metadata.administration}+${prdhNum}+${prdrNum}/Service/s_actie_in_productie`;\n },\n});\n\nconst ACTION_DONE = new MkgAction({\n identifier: 'done',\n method: 'PUT',\n fields: ['prdh_num', 'prdr_num'],\n path: (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n ): string => {\n const { prdh_num: prdhNum, prdr_num: prdrNum } = inputData;\n\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n if (!prdrNum) {\n throw new Error(`Missing required field 'prdr_num' for action 'create'`);\n }\n\n return `prdr/${metadata.administration}+${prdhNum}+${prdrNum}/Service/s_actie_aantal_gereed`;\n },\n});\n\nexport const MKG_TABLE_PRDR = new MkgTable(\n {\n identifier: 'prdr',\n interval: 300,\n fields: [\n 'prdh_num',\n 'prdr_num',\n 'prdr_aantal',\n 'prdr_grd_aantal',\n 'prdr_prod_aantal',\n 'prdr_volgorde',\n 'prdr_niveau',\n 'prdr_revisie',\n 'prdr_oms_1',\n 'prdr_tekening',\n 'prdr_parent',\n 'stlh_num',\n 'stlr_num',\n 'arti_code',\n 't_status_oms',\n ],\n },\n [ACTION_CREATE, ACTION_IN_PRODUCTION, ACTION_DONE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create.prdh_prdr',\n method: 'POST',\n fields: ['prmv_oms_1', 'cred_num'],\n path: (inputData: Record<string, unknown>): string => {\n // eslint-disable-next-line security/detect-object-injection\n const prdhNum = inputData['prdh_num'];\n if (!prdhNum) {\n throw new Error(`Missing required field 'prdh_num' for action 'create'`);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const prdrNum = inputData['prdr_num'];\n if (!prdrNum) {\n throw new Error(`Missing required field 'prdr_num' for action 'create'`);\n }\n\n return `prdr/1+${prdhNum}+${prdrNum}/prdr_prmv`;\n },\n});\n\nexport const MKG_TABLE_PRMV = new MkgTable(\n {\n identifier: 'prmv',\n fields: [],\n },\n [ACTION_CREATE],\n);\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_PROJ = new MkgTable({\n identifier: 'proj',\n interval: 300,\n fields: [\n 'admi_num',\n 'RowTime',\n 'proj_oms',\n 'proj_historisch',\n 'proj_prdh',\n 'RowKey',\n 'proj_num',\n 'proj_vorh',\n 'proj_zoeknaam',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RELA = new MkgTable({\n identifier: 'rela',\n fields: [\n 'rela_num',\n 'rela_naam',\n 'rela_zoeknaam',\n 'rela_email',\n 'rela_actief',\n 'rela_plaats',\n 'rela_postcode',\n 'rela_www',\n 'rela_telefoon',\n // 'rela_vrij_datum_4',\n // 'rela_vrij_datum_3',\n // 'rela_vrij_datum_2',\n // 'rela_vrij_datum_5',\n // 'rela_vrij_datum_1',\n // 'rela_vrij_veld_1',\n // 'rela_moeder',\n // 'rela_vrij_veld_3',\n // 'rela_vrij_veld_5',\n // 'rela_vrij_veld_2',\n // 'rela_vrij_veld_4',\n // 'rela_vrij_memo_1',\n // 'rela_resr',\n // 'rela_memo',\n // 'rela_vrij_memo_5',\n // 'rela_naam_2',\n // 'rela_vrij_memo_2',\n // 'rela_plaats_2',\n // 'rela_vrij_memo_3',\n // 'rela_vrij_memo_4',\n // 'rela_afbeelding',\n // 'rela_files',\n // 'rela_fax',\n // 'rela_info',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RGRS = new MkgTable({\n identifier: 'rgrs',\n interval: 60,\n fields: [\n 'abnk_bizcuit_id',\n 'aant_vraag_oms',\n 'abnk_oms',\n 'adon_code',\n 'adon_oms',\n 'adop_code',\n 'arti_code',\n 'bwrg_oms',\n 'bwrk_oms',\n 'cert_code',\n 'gebr_code',\n 'kbdp_oms',\n 'kltn_code',\n 'kstg_oms',\n 'land_code',\n 'magw_code',\n 'medw_betaling_per_bank_2_naam',\n 'medw_betaling_per_bank_naam',\n 'medw_naam',\n 'medw_premiesparen_naam',\n 'medw_spaarloon_naam',\n 'rela_naam',\n 'reld_oms',\n 'rsrc_oms',\n 'rsrg_oms',\n 'spco_code',\n 'strd_oms',\n 't_bwrk_num_oms',\n 't_bwrk_oms',\n 't_oms',\n 't_omschrijving',\n 'aanr_datum',\n 'aanr_num',\n 'aans_num',\n 'aant_num',\n 'abnk_num',\n 'adma_num',\n 'admi_num',\n 'afdl_num',\n 'agtn_num',\n 'apia_num',\n 'bank_num',\n 'bwrf_num',\n 'bwrg_num',\n 'bwrk_num',\n 'clcb_num',\n 'clch_num',\n 'clch_vofh_num',\n 'clch_vofh_verk_num',\n 'clcm_num',\n 'clcr_num',\n 'clct_num',\n 'cred_num',\n 'debi_num',\n 'dgbk_num',\n 'fcth_num',\n 'geac_num',\n 'ifch_num',\n 'inkg_num',\n 'iofh_num',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RSRC = new MkgTable({\n identifier: 'rsrc',\n interval: 300,\n fields: [\n 'rsrc_fcst_eindige_cap',\n 'rsrc_oms',\n 'rsrc_memo',\n 'rsrc_volgorde',\n 'rsrc_magl_in',\n 'rsrc_onbemand',\n 'rsrc_num',\n 'rsrc_calc_eindige_cap',\n 'rsrc_magl_uit',\n 'rsrc_aantal',\n 'rsrc_calc_bucket',\n 'rsrc_eindige_cap',\n 'rsrc_fcst_bucket',\n 'rsrc_bucket',\n 'rsrc_afbeelding',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RSRD = new MkgTable({\n identifier: 'rsrd',\n interval: 300,\n fields: [\n 'rsrd_zo_p2_van',\n 'rsrd_za_p2_tot',\n 'rsrd_do_p1_tot',\n 'rsrd_di_p5_tot',\n 'rsrd_zo_p5_tot',\n 'rsrd_do_p3_tot',\n 'rsrd_ma_p4_tot',\n 'rsrd_wo_p3_van',\n 'rsrd_zo_p1_van',\n 'rsrd_fd_p1_van',\n 'rsrd_do_p5_van',\n 'rsrd_wo_p2_tot',\n 'rsrd_za_van',\n 'rsrd_vr_p3_van',\n 'rsrd_za_p4_van',\n 'rsrd_ma_p5_tot',\n 'rsrd_fd_p3_van',\n 'rsrd_wo_tot',\n 'rsrd_vr_tot',\n 'rsrd_ma_p1_tot',\n 'rsrd_wo_p1_tot',\n 'rsrd_zo_p4_tot',\n 'rsrd_di_p4_tot',\n 'rsrd_ma_p3_van',\n 'rsrd_ma_p5_van',\n 'rsrd_di_tot',\n 'rsrd_fd_p4_van',\n 'rsrd_vr_van',\n 'rsrd_za_p3_tot',\n 'rsrd_za_p1_van',\n 'rsrd_zo_p5_van',\n 'rsrd_fd_p2_tot',\n 'rsrd_vr_p5_van',\n 'rsrd_di_p4_van',\n 'rsrd_za_p5_tot',\n 'rsrd_di_p3_van',\n 'rsrd_ma_p2_tot',\n 'rsrd_di_van',\n 'rsrd_do_p1_van',\n 'rsrd_zo_p3_tot',\n 'rsrd_vr_p5_tot',\n 'rsrd_zo_p1_tot',\n 'rsrd_ma_van',\n 'rsrd_do_tot',\n 'rsrd_wo_p2_van',\n 'rsrd_vr_p3_tot',\n 'rsrd_di_p1_van',\n 'rsrd_za_p5_van',\n 'rsrd_fd_p5_van',\n 'rsrd_vr_p4_tot',\n 'rsrd_wo_p3_tot',\n 'rsrd_fd_p1_tot',\n 'rsrd_fd_p3_tot',\n 'rsrd_ma_p4_van',\n 'rsrd_di_p3_tot',\n 'rsrd_zo_p4_van',\n 'rsrd_do_p4_tot',\n 'rsrd_do_van',\n 'rsrd_do_p3_van',\n 'rsrd_wo_p1_van',\n 'rsrd_za_p4_tot',\n 'rsrd_zo_van',\n 'rsrd_do_p2_tot',\n 'rsrd_vr_p2_van',\n 'rsrd_vr_p2_tot',\n 'rsrd_vr_p1_tot',\n 'rsrd_do_p5_tot',\n 'rsrd_wo_van',\n 'rsrd_zo_tot',\n 'rsrd_za_p2_van',\n 'rsrd_oms',\n 'rsrd_zo_p3_van',\n 'rsrd_fd_p2_van',\n 'rsrd_do_p4_van',\n 'rsrd_di_p2_tot',\n 'rsrd_za_p3_van',\n 'rsrd_wo_p4_van',\n 'rsrd_vr_p4_van',\n 'rsrd_wo_p4_tot',\n 'rsrd_num',\n 'rsrd_ma_tot',\n 'rsrd_ma_p1_van',\n 'rsrd_di_p5_van',\n 'rsrd_fd_p5_tot',\n 'rsrd_vr_p1_van',\n 'rsrd_di_p2_van',\n 'rsrd_do_p2_van',\n 'rsrd_wo_p5_van',\n 'rsrd_za_tot',\n 'rsrd_ma_p3_tot',\n ],\n});\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_RSRG = new MkgTable({\n identifier: 'rsrg',\n fields: ['rsrg_num', 'rsrg_memo', 'rsrg_oms'],\n});\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['stlh_num', 'bwrk_num'],\n optionalFields: [\n 'stlr_num',\n 'stlb_aantal',\n 'stlb_oms',\n 'stlb_volgorde',\n 'stlb_instel_tijd',\n 'stlb_tijd_factor',\n 'stlb_tijd_per_stuk',\n 'stlb_tijd_man',\n 'stlb_tijd_mach',\n ],\n responseFields: ['stlb_num'],\n});\n\nexport const MKG_TABLE_STLB = new MkgTable(\n {\n identifier: 'stlb',\n interval: 600,\n fields: [\n 'stlh_num',\n 'stlr_num',\n 'stlb_num',\n 'bwrk_num',\n 'stlb_aantal',\n 'stlb_oms',\n 'stlb_volgorde',\n 'stlb_instel_tijd',\n 'stlb_tijd_factor',\n 'stlb_tijd_per_stuk',\n 'stlb_tijd_man',\n 'stlb_tijd_mach',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['arti_code'],\n responseFields: ['stlh_num'],\n triggerRefresh: {\n stlh: ['stlh_num'],\n },\n});\n\nexport const MKG_TABLE_STLH = new MkgTable(\n {\n identifier: 'stlh',\n interval: 300,\n fields: [\n 'stlh_actief',\n 'arti_code',\n 'stlh_oms_1',\n 'stlh_num',\n // 'stlh_teken',\n // 'stlh_rev_lengte',\n // 'stlh_bron',\n // 'stlh_volgnummer',\n // 'stlh_oms_2',\n // 'stlh_memo',\n // 'stlh_revisie',\n // 'stlh_rev_preview',\n // 'stlh_lengte',\n // 'stlh_oms_3',\n // 'stlh_files',\n // 'stlh_prefix',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['stlh_num', 'arti_code'],\n optionalFields: ['stlr_num', 'stlm_aantal', 'stlm_oms1', 'stlm_volgorde'],\n responseFields: ['stlm_num'],\n});\n\nexport const MKG_TABLE_STLM = new MkgTable(\n {\n identifier: 'stlm',\n interval: 600,\n fields: [\n 'stlh_num',\n 'stlr_num',\n 'stlm_num',\n 'arti_code',\n 'stlm_aantal',\n 'stlm_oms1',\n 'stlm_volgorde',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['stlh_num', 'arti_code'],\n optionalFields: ['stlr_aantal'],\n responseFields: ['stlr_num'],\n triggerRefresh: {\n stlr: ['stlr_num'],\n },\n});\n\nexport const MKG_TABLE_STLR = new MkgTable(\n {\n identifier: 'stlr',\n interval: 600,\n fields: [\n 'stlh_num',\n 'stlr_num',\n 'stlr_parent',\n 'arti_code',\n 'stlr_aantal',\n 'stlr_prod_aantal',\n 'stlr_tot_aantal',\n 'stlr_volgorde',\n 'stlr_niveau',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction } from './base/action';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create',\n method: 'POST',\n fields: ['debi_num'],\n optionalFields: [\n 'proj_num',\n 'vorh_dat_levering',\n 'vorh_dat_gewenst',\n 'vorh_dat_order',\n 'vorh_ref_onze',\n 'vorh_ref_uw',\n 'verk_num',\n 'valu_code',\n ],\n responseFields: ['vorh_num'],\n triggerRefresh: {\n vorh: ['vorh_num'],\n },\n});\n\nexport const MKG_TABLE_VORH = new MkgTable(\n {\n identifier: 'vorh',\n interval: 300,\n fields: [\n 'valu_code',\n 'debi_num',\n 'vorh_dat_levering',\n 'vorh_dat_gewenst',\n 'vorh_dat_order',\n 'vorh_bestelcode_extern',\n 'vorh_historisch',\n 'vorh_ref_onze',\n 'vorh_ref_uw',\n 'taal_code',\n 'rela_num',\n 'vorh_num',\n 'proj_num',\n 'verk_num',\n 't_cprs_email',\n ],\n },\n [ACTION_CREATE],\n);\n", "import { MkgAction, MkgActionMetadata } from './base/action';\nimport { actionServiceResponseFormatter } from './base/response';\nimport { MkgTable } from './base/table';\n\nconst ACTION_CREATE = new MkgAction({\n identifier: 'create-vorh-line',\n method: 'POST',\n fields: ['arti_code'],\n optionalFields: [\n 'vorr_dat_gewenst',\n 'vorr_oms_1',\n 'vorr_oms_2',\n 'vorr_order_aantal',\n 'vorr_tekening',\n 'vrdg_num',\n 'vrkg_num',\n ],\n path: (inputData: Record<string, unknown>): string => {\n const { vorh_num: vorhNum } = inputData;\n\n if (!vorhNum) {\n throw new Error(`Missing required field 'vorh_num' for action 'create'`);\n }\n\n return `vorh/${vorhNum}/vorh_vorr/`;\n },\n responseFields: ['vorh_num', 'vorr_num'],\n});\n\nconst ACTION_CREATE_PRODUCTION_ORDER = new MkgAction({\n identifier: 'create-prdh',\n method: 'PUT',\n fields: [],\n path: (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n ): string => {\n const { vorh_num: vorhNum, vorr_num: vorrNum } = inputData;\n\n if (!vorhNum) {\n throw new Error(\n `Missing required field 'vorh_num' for action 'create-prdh'`,\n );\n }\n\n if (!vorrNum) {\n throw new Error(\n `Missing required field 'vorr_num' for action 'create-prdh'`,\n );\n }\n\n return `vorr/${metadata.administration}+${vorhNum}+${vorrNum}/Service/s_createproductionorder`;\n },\n responseFields: ['prdr.prdh_num', 'prdr.prdr_num'],\n response: actionServiceResponseFormatter,\n});\n\nconst ACTION_CREATE_BACKFLUSH = new MkgAction({\n identifier: 'create-backflush',\n method: 'PUT',\n fields: [],\n path: (\n inputData: Record<string, unknown>,\n metadata: MkgActionMetadata,\n ): string => {\n const { vorh_num: vorhNum, vorr_num: vorrNum } = inputData;\n\n if (!vorhNum) {\n throw new Error(\n `Missing required field 'vorh_num' for action 'create-backflush'`,\n );\n }\n\n if (!vorrNum) {\n throw new Error(\n `Missing required field 'vorr_num' for action 'create-backflush'`,\n );\n }\n\n return `vorr/${metadata.administration}+${vorhNum}+${vorrNum}/Service/s_createbackflush`;\n },\n});\n\nexport const MKG_TABLE_VORR = new MkgTable(\n {\n identifier: 'vorr',\n interval: 300,\n fields: [\n 'vorh_num',\n 'vorr_num',\n 'arti_code',\n 'vorr_revisie',\n 'vorr_dat_gewenst',\n 'vorr_oms_1',\n 'vorr_oms_2',\n 'vorr_order_aantal',\n 'vorr_tekening',\n 'vrdg_num',\n 'vrkg_num',\n 'stlh_num',\n ],\n },\n [ACTION_CREATE, ACTION_CREATE_PRODUCTION_ORDER, ACTION_CREATE_BACKFLUSH],\n);\n", "import { MkgTable } from './base/table';\n\nexport const MKG_TABLE_VRDG = new MkgTable({\n identifier: 'vrdg',\n fields: [\n 'vrdg_grbk_pv_grd_uitb',\n 'vrdg_grbk_hw_grd_uitb',\n 'vrdg_grbk_grd_mat',\n 'vrdg_grbk_hw_grd_mat',\n 'vrdg_grbk_hw_grd_man',\n 'vrdg_grbk_vrd_mat',\n 'vrdg_grbk_hw_grd_mach',\n 'vrdg_grbk_grd_mach',\n 'vrdg_num',\n 'vrdg_grbk_pv_grd_mat',\n 'vrdg_grbk_kst_mach',\n 'vrdg_grbk_kst_mat',\n 'vrdg_grbk_pv_grd_mach',\n 'vrdg_grbk_kst_man',\n 'vrdg_grbk_kst_uitb',\n 'vrdg_oms',\n 'vrdg_grbk_grd_uitb',\n 'vrdg_grbk_pv_grd_man',\n 'vrdg_grbk_pv_vrd_mat',\n 'vrdg_grbk_grd_man',\n ],\n});\n", "import { MKG_TABLE_ARTG } from './artg';\nimport { MKG_TABLE_ARTI } from './arti';\nimport { MkgTable } from './base/table';\nimport { MKG_TABLE_BWRG } from './bwrg';\nimport { MKG_TABLE_BWRK } from './bwrk';\nimport { MKG_TABLE_CLCH } from './clch';\nimport { MKG_TABLE_CLCR } from './clcr';\nimport { MKG_TABLE_CPRS } from './cprs';\nimport { MKG_TABLE_DEBI } from './debi';\nimport { MKG_TABLE_MAGL } from './magl';\nimport { MKG_TABLE_MAGZ } from './magz';\nimport { MKG_TABLE_MEDW } from './medw';\nimport { MKG_TABLE_PAMT } from './pamt';\nimport { MKG_TABLE_PARL } from './parl';\nimport { MKG_TABLE_PART } from './part';\nimport { MKG_TABLE_PLNB } from './plnb';\nimport { MKG_TABLE_PRBV } from './prbv';\nimport { MKG_TABLE_PRDH } from './prdh';\nimport { MKG_TABLE_PRDR } from './prdr';\nimport { MKG_TABLE_PRMV } from './prmv';\nimport { MKG_TABLE_PROJ } from './proj';\nimport { MKG_TABLE_RELA } from './rela';\nimport { MKG_TABLE_RGRS } from './rgrs';\nimport { MKG_TABLE_RSRC } from './rsrc';\nimport { MKG_TABLE_RSRD } from './rsrd';\nimport { MKG_TABLE_RSRG } from './rsrg';\nimport { MKG_TABLE_STLB } from './stlb';\nimport { MKG_TABLE_STLH } from './stlh';\nimport { MKG_TABLE_STLM } from './stlm';\nimport { MKG_TABLE_STLR } from './stlr';\nimport { MKG_TABLE_VORH } from './vorh';\nimport { MKG_TABLE_VORR } from './vorr';\nimport { MKG_TABLE_VRDG } from './vrdg';\n\nconst tables = [\n MKG_TABLE_RELA,\n MKG_TABLE_DEBI,\n MKG_TABLE_MEDW,\n MKG_TABLE_ARTI,\n MKG_TABLE_RSRC,\n MKG_TABLE_RSRD,\n MKG_TABLE_RSRG,\n MKG_TABLE_MAGZ,\n MKG_TABLE_MAGL,\n MKG_TABLE_STLH,\n MKG_TABLE_STLR,\n MKG_TABLE_STLM,\n MKG_TABLE_PRDH,\n MKG_TABLE_BWRK,\n MKG_TABLE_BWRG,\n MKG_TABLE_CLCH,\n MKG_TABLE_VRDG,\n MKG_TABLE_RGRS,\n MKG_TABLE_PLNB,\n MKG_TABLE_ARTG,\n MKG_TABLE_PRDR,\n MKG_TABLE_PRMV,\n MKG_TABLE_PRBV,\n MKG_TABLE_PARL,\n MKG_TABLE_CLCR,\n MKG_TABLE_CPRS,\n MKG_TABLE_PROJ,\n MKG_TABLE_VORH,\n MKG_TABLE_VORR,\n MKG_TABLE_STLB,\n MKG_TABLE_PART,\n MKG_TABLE_PAMT,\n];\n\nexport const MKG_TABLES: { [identifier: string]: MkgTable } = tables.reduce(\n (acc, table) => {\n acc[table.identifier] = table;\n return acc;\n },\n {} as { [identifier: string]: MkgTable },\n);\n", "import { ConnectorSDKInterface } from '@transai/connector-runtime-sdk';\n\nimport { ConnectorConfig } from '../types';\n\nexport function baseUrl(sdk: ConnectorSDKInterface<ConnectorConfig>): string {\n const { config } = sdk;\n return `https://${config.server}:${config.port ?? 443}/${(config.path ?? '/mkg').replace(/^\\/+/, '')}`;\n}\n", "import {\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n HttpError,\n IntervalHandler,\n StoredOffset,\n} from '@transai/connector-runtime-sdk';\n\nimport { baseUrl } from './helpers/base-url';\nimport {\n ConnectorConfig,\n DEFAULT_DATASOURCE,\n MkgTableInterface,\n} from './types';\n\ntype FetchDataResponse<D> = {\n response: {\n ResultData: [\n {\n [key: string]: Array<D>;\n },\n ];\n };\n};\n\nexport class ExtractorService implements IntervalHandler {\n readonly #sdk: ConnectorSDKInterface<ConnectorConfig>;\n\n readonly #httpClient: HttpClientSDKInterface;\n\n readonly #tableIdentifier: string;\n\n readonly #table: Required<MkgTableInterface>;\n\n readonly #fieldsList: string;\n\n constructor(\n sdk: ConnectorSDKInterface<ConnectorConfig>,\n httpClient: HttpClientSDKInterface,\n tableIdentifier: string,\n table: Required<MkgTableInterface>,\n ) {\n this.#sdk = sdk;\n this.#httpClient = httpClient;\n this.#tableIdentifier = tableIdentifier;\n this.#table = table;\n this.#fieldsList = table.fields.join(',');\n }\n\n get name(): string {\n return `mkg-extractor-${this.#tableIdentifier}`;\n }\n\n async onRun(filterFields?: Record<string, unknown>): Promise<void> {\n try {\n const now = new Date();\n const latestOffset = await this.#sdk.offsetStore.getOffset(\n `offset_${this.#tableIdentifier}`,\n );\n\n const data = await this.#fetchData(latestOffset, filterFields);\n if (data.length === 0) {\n this.#sdk.logger.verbose(\n `[MKG] No new data found for ${this.#tableIdentifier}`,\n );\n return;\n }\n\n await this.#sdk.sender.documents(data, {\n keyField: this.#table.identifierField,\n collection: `${this.#sdk.config.datasourceIdentifier ?? DEFAULT_DATASOURCE}_${this.#tableIdentifier}`,\n });\n this.#sdk.logger.debug(\n `[MKG] Processed ${data.length} records from ${this.#tableIdentifier}`,\n );\n\n this.#sdk.offsetStore.setOffset(\n {\n id: String(\n data[data.length - 1]?.[this.#table.identifierField] ??\n latestOffset.id,\n ),\n timestamp: now.getTime(),\n rawTimestamp: now.toISOString(),\n },\n `offset_${this.#tableIdentifier}`,\n );\n } catch (error) {\n this.#sdk.logger.error(\n `[MKG] Failed to retrieve and process data from OPC UA source service`,\n { error },\n );\n throw error;\n }\n }\n\n #fetchData = async (\n latestOffset: StoredOffset,\n filterFields?: Record<string, unknown>,\n ): Promise<\n Array<{\n [key: string]: string | number | boolean;\n }>\n > => {\n const filters: Array<string> = [];\n\n if (latestOffset.id !== 0) {\n filters.push(`${this.#table.dateField}>=${latestOffset.rawTimestamp}`);\n }\n\n Object.entries(filterFields ?? {}).forEach(([field, value]) =>\n filters.push(`${field}=${value}`),\n );\n\n const parameters = new URLSearchParams();\n parameters.set('NumRows', String(this.#table.rows));\n parameters.set('FieldList', `${this.#table.dateField},${this.#fieldsList}`);\n\n if (filters.length > 0) {\n parameters.set('Filter', filters.join(' AND '));\n }\n\n try {\n const destinationPath = `/web/v3/MKG/Documents/${this.#tableIdentifier}`;\n this.#sdk.logger.verbose(\n `[MKG] Fetching data from '${baseUrl(this.#sdk)}${destinationPath}'...`,\n );\n const response = await this.#httpClient.get<\n FetchDataResponse<{\n [key: string]: string | number | boolean;\n }>\n >(`${destinationPath}?${parameters.toString()}`);\n\n const resultData =\n response.data?.response?.ResultData?.[0]?.[this.#tableIdentifier] ?? [];\n this.#sdk.logger.verbose(\n `[MKG] Fetched ${resultData.length} records from '${baseUrl(this.#sdk)}${destinationPath}'`,\n );\n\n return resultData;\n } catch (error: HttpError | unknown) {\n const logMessage = `[MKG] Failed to fetch data from table \"${this.#tableIdentifier}\": (${(error as HttpError)?.status}) ${(error as HttpError)?.error ?? (error as Error)?.message}`;\n this.#sdk.logger.error(logMessage);\n }\n\n return [];\n };\n}\n", "/* eslint-disable camelcase,@typescript-eslint/naming-convention */\nimport {\n ConnectorRuntimeSDK,\n ConnectorSDKInterface,\n HttpClientSDKInterface,\n HttpRequestOptions,\n} from '@transai/connector-runtime-sdk';\nimport { ConnectorInterface } from '@xip-online-data/types';\n\nimport { ActionsHandler } from './actions-handler';\nimport { TriggerSyncEvent } from './events/trigger-sync.event';\nimport { ExtractorService } from './extractor.service';\nimport { baseUrl } from './helpers/base-url';\nimport { MKG_TABLES } from './tables/_all';\nimport {\n ConnectorConfig,\n SESSION_COOKIE_NAME,\n SESSION_EXPIRATION_SECONDS,\n} from './types';\n\nexport class ConnectorRunnerMkg extends ConnectorRuntimeSDK<ConnectorConfig> {\n readonly #actionsHandler: ActionsHandler;\n\n readonly #mkgHttpClient: HttpClientSDKInterface;\n\n readonly #sessionTokenHttpClient: HttpClientSDKInterface;\n\n readonly #extractors: Record<string, ExtractorService> = {};\n\n #sessionToken?: {\n token: string;\n expiresAt: number;\n };\n\n constructor(\n connector: ConnectorInterface,\n connectorSDK: ConnectorSDKInterface,\n ) {\n super(connector, connectorSDK);\n\n const baseUrlString = baseUrl(this.connectorSDK);\n this.#sessionTokenHttpClient = this.connectorSDK.httpClient({\n baseUrl: baseUrlString,\n });\n this.#mkgHttpClient = this.connectorSDK\n .httpClient({\n baseUrl: baseUrlString,\n })\n .setRequestOptionsFormatter(this.#requestOptionsFormatter);\n\n this.#actionsHandler = new ActionsHandler(\n this.connectorSDK,\n this.#mkgHttpClient,\n ).on(TriggerSyncEvent.NAME, (event: TriggerSyncEvent) =>\n this.#triggerSync(event),\n );\n\n this.callbackFunction = this.#actionsHandler.callbackFunctionChain;\n }\n\n override init = async (): Promise<void> => {\n const { config } = this.connectorSDK;\n\n await this.#getSessionCookie(config.username, config.password).catch(\n (error) => {\n this.connectorSDK.logger.error(\n `[MKG] Error retrieving initial session cookie:`,\n error,\n );\n\n throw new Error(\n `Failed to initialize connector due to authentication error.`,\n );\n },\n );\n\n Object.entries(config.tables ?? {}).forEach(\n ([tableIdentifier, configOrTrue]) => {\n // eslint-disable-next-line security/detect-object-injection\n const table = MKG_TABLES[tableIdentifier];\n if (!table) {\n this.connectorSDK.logger.warn(\n `[MKG] Unknown table identifier \"${tableIdentifier}\", skipping configuration.`,\n );\n return;\n }\n\n if (!table.interval || table.interval <= 0) {\n this.connectorSDK.logger.verbose(\n `[MKG] Table \"${tableIdentifier}\" does not have a valid interval configured, skipping registration.`,\n );\n return;\n }\n\n const extractor = new ExtractorService(\n this.connectorSDK,\n this.#mkgHttpClient,\n tableIdentifier,\n table.cloneFromTableConfig(configOrTrue),\n );\n // eslint-disable-next-line security/detect-object-injection\n this.#extractors[tableIdentifier] = extractor;\n\n this.connectorSDK.processing.registerInterval(\n table.interval,\n extractor,\n { immediate: table.immediate },\n );\n },\n );\n };\n\n #requestOptionsFormatter = async <D = string | object>(\n options: HttpRequestOptions<D>,\n ): Promise<HttpRequestOptions<D>> => {\n const { config } = this.connectorSDK;\n const sessionCookie = await this.#getSessionCookie(\n config.username,\n config.password,\n ).catch((error) => {\n this.connectorSDK.logger.error(\n `[MKG] Error retrieving session cookie:`,\n error,\n );\n throw error;\n });\n\n return {\n ...options,\n headers: {\n ...(options?.headers ?? {}),\n ...this.#formattedHeaders(sessionCookie),\n },\n };\n };\n\n async #getSessionCookie(\n j_username: string,\n j_password: string,\n ): Promise<string> {\n const token = this.#sessionToken;\n if (token && token.expiresAt > Date.now()) {\n return token.token;\n }\n\n const destinationPath = '/static/auth/j_spring_security_check';\n this.connectorSDK.logger.verbose(\n `[MKG] Retrieving session cookie from '${baseUrl(this.connectorSDK)}${destinationPath}' with 'j_username=${encodeURIComponent(j_username)}&j_password=${'*'.repeat(j_password.length)}'`,\n );\n const response = await this.#sessionTokenHttpClient.post(\n destinationPath,\n `j_username=${encodeURIComponent(j_username)}&j_password=${encodeURIComponent(j_password)}`,\n {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n },\n );\n\n if (!response) {\n throw new Error('Failed to authenticate and retrieve session cookie');\n }\n\n const cookies = (response.headers?.['set-cookie'] ??\n response.headers?.['Set-Cookie'] ??\n []) as Array<string>;\n const sessionCookie = cookies.find((cookie: string) =>\n cookie.startsWith(`${SESSION_COOKIE_NAME}=`),\n );\n\n if (!sessionCookie) {\n throw new Error('Session cookie not found in authentication response');\n }\n\n const sessionToken = sessionCookie\n .split(';')[0]\n ?.substring(`${SESSION_COOKIE_NAME}=`.length);\n\n this.#sessionToken = {\n token: sessionToken,\n expiresAt: Date.now() + SESSION_EXPIRATION_SECONDS - 1000,\n };\n this.connectorSDK.logger.debug(\n `[MKG] Session cookie fetched successfully for user '${j_username}', expires at ${new Date(this.#sessionToken.expiresAt).toISOString()}`,\n );\n\n await this.#updateAdministrationSettings(sessionToken);\n\n return sessionToken;\n }\n\n #formattedHeaders(sessionCookie: string): Record<string, string> {\n const { config } = this.connectorSDK;\n const { apiToken } = config;\n\n this.connectorSDK.logger.verbose(\n `[MKG] Using api headers: ${SESSION_COOKIE_NAME}=${'*'.repeat(sessionCookie.length)} & X-CustomerID=${'*'.repeat(apiToken.length)}`,\n );\n\n return {\n Cookie: `${SESSION_COOKIE_NAME}=${sessionCookie}`,\n 'X-CustomerID': apiToken,\n };\n }\n\n async #updateAdministrationSettings(sessionToken: string): Promise<void> {\n const { config } = this.connectorSDK;\n const { administration, fiscalYear, language } = config;\n\n if (!(administration?.length || fiscalYear?.length || language?.length)) {\n this.connectorSDK.logger.verbose(\n `[MKG] No administration settings to update.`,\n );\n return;\n }\n\n const destinationPath = '/web/v3/MKG/Settings';\n const body: Array<{ t_name: string; t_value: string }> = [];\n\n if (administration) {\n body.push({ t_name: 'Administration', t_value: administration });\n }\n if (fiscalYear) {\n body.push({ t_name: 'FiscalYear', t_value: fiscalYear });\n }\n if (language) {\n body.push({ t_name: 'Language', t_value: language });\n }\n\n this.connectorSDK.logger.verbose(\n `[MKG] Updating administration settings: ${JSON.stringify(body)}`,\n );\n\n await this.#sessionTokenHttpClient\n .put(\n destinationPath,\n {\n request: {\n InputData: {\n t_setting: body,\n },\n },\n },\n {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...this.#formattedHeaders(sessionToken),\n },\n },\n )\n .catch((error) => {\n this.connectorSDK.logger.error(\n `[MKG] Error updating administration settings:`,\n error,\n );\n throw error;\n });\n\n this.connectorSDK.logger.debug(\n `[MKG] Administration settings updated successfully.`,\n );\n }\n\n #triggerSync(event: TriggerSyncEvent): void {\n Object.entries(event.action.triggerRefresh ?? {}).forEach(\n async ([tableIdentifier, fields]) => {\n this.connectorSDK.logger.verbose(\n `[MKG] Triggering sync for table \"${tableIdentifier}\" due to action \"${event.action.identifier}\"`,\n );\n\n // eslint-disable-next-line security/detect-object-injection\n const extractor = this.#extractors[tableIdentifier];\n if (!extractor) {\n this.connectorSDK.logger.warn(\n `[MKG] No extractor found for table \"${tableIdentifier}\", cannot trigger sync.`,\n );\n }\n\n const dataFields = Object.fromEntries(\n Object.entries(event.data).filter(([key]) => fields.includes(key)),\n );\n\n await extractor.onRun(dataFields);\n },\n );\n }\n}\n"],
5
+ "mappings": "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Q,CACN,cACA,WACA,mBACA,gBACA,qBACA,YACA,mBACA,sBACA,WACA,UACF,CACF,EACA,CAACH,EAAa,CAChB,ECtCO,IAAMI,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,cACA,WACA,eACA,YACA,WACA,cAmDF,CACF,CAAC,EC5DM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,YACA,aACA,iBACA,oBACA,aACA,YACA,YACA,YACF,CACF,CAAC,ECZM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,YACA,aACA,aACA,YACA,aACA,oBACA,WACF,CACF,CAAC,ECXM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,4BACA,qBACA,yBACA,yBACA,uBACA,0BACA,oBACA,oBACA,UACA,oBACA,gBACA,yBACA,8BACA,gBACA,0BACA,mBACA,gBACA,4BACA,uBACA,mBACA,oBACA,qBACA,yBACA,oBACA,gBACA,gBACA,sBACA,YACA,qBACA,iBACA,+BACA,sBACA,0BACA,uBACA,2BACA,gBACA,uBACA,wBACA,oBACA,cACA,kBACA,kBACA,qBACA,kBACA,cACA,sBACA,iBACA,YACA,oBACA,aACA,mBACA,sBACA,qBACA,kBACA,mBACA,sBACA,oBACA,yBACA,eACA,mBACA,sBACA,gBACA,uBACA,sBACA,mBACA,wBACA,gCACA,uBACA,yBACA,8BACA,gCACA,2BACA,gCACA,qBACA,iBACA,yBACA,oBACA,gBACA,2BACA,0BACA,0BACA,gCACA,yBACA,cACA,yBACA,sBACA,eACA,kBACA,kBACA,oBACF,CACF,CAAC,EC9FM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,cACA,WACA,YACA,kBACA,kBACA,YACA,UACF,CACF,CAAC,ECVD,IAAMC,GAAc,IAAIC,EAAU,CAChC,WAAY,OACZ,OAAQ,MACR,OAAQ,CACN,WACA,WACA,YACA,cACA,gBACA,QACF,EACA,KAAM,IAAc,qC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,UAAUD,CAAO,IAAIC,CAAO,YACrC,CACF,CAAC,EAEYC,EAAiB,IAAIC,EAChC,CACE,WAAY,OACZ,OAAQ,CAAC,CACX,EACA,CAACN,EAAa,CAChB,EC5BO,IAAMO,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,WACA,UACA,WACA,kBACA,YACA,SACA,WACA,YACA,eACF,CACF,CAAC,ECdM,IAAMC,EAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,OAAQ,CACN,WACA,YACA,gBACA,aACA,cACA,cACA,gBACA,WACA,eAyBF,CACF,CAAC,ECrCM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,GACV,OAAQ,CACN,kBACA,iBACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,gCACA,8BACA,YACA,yBACA,sBACA,YACA,WACA,WACA,WACA,YACA,WACA,iBACA,aACA,QACA,iBACA,aACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,gBACA,qBACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACF,CACF,CAAC,ECjEM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,wBACA,WACA,YACA,gBACA,eACA,gBACA,WACA,wBACA,gBACA,cACA,mBACA,mBACA,mBACA,cACA,iBACF,CACF,CAAC,ECpBM,IAAMC,GAAiB,IAAIC,EAAS,CACzC,WAAY,OACZ,SAAU,IACV,OAAQ,CACN,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,iBACA,iBACA,iBACA,iBACA,cACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,iBACA,cACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,cACA,iBACA,iBACA,iBACA,iBA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",
6
+ "names": ["process", "ConnectorRuntimeSDK", "connector", "connectorSDK", "#IPC_CHANNEL", "#connectorSDK", "message", "action", "containers", "key", "value", "error", "callback", "#enrichWithActionConfig", "callbackFunction", "EventEmitter", "TriggerSyncEvent", "action", "data", "DEFAULT_DATASOURCE", "DEFAULT_INTERVAL", "DEFAULT_ROW_KEY_FIELD", "DEFAULT_DATE_FIELD", "DEFAULT_NUM_ROWS", "SESSION_COOKIE_NAME", "SESSION_EXPIRATION_SECONDS", "MkgTable", "_MkgTable", "params", "actions", "DEFAULT_INTERVAL", "DEFAULT_ROW_KEY_FIELD", "DEFAULT_DATE_FIELD", "DEFAULT_NUM_ROWS", "action", "tableConfig", "field", "index", "list", "identifier", "a", "MKG_TABLE_ARTG", "MkgTable", "actionDocumentResponseFormatter", "data", "tableIdentifier", "responseFields", "responseFieldsMap", "mapResponseFields", "response", "entityData", "entity", "entries", "entry", "field", "value", "actionServiceResponseFormatter", "map", "entityField", "MkgAction", "_MkgAction", "#table", "params", "actionDocumentResponseFormatter", "table", "action", "inputData", "fieldData", "field", "inputDataValue", "data", "ACTION_CREATE", "MkgAction", "MKG_TABLE_ARTI", "MkgTable", "MKG_TABLE_BWRG", "MkgTable", "MKG_TABLE_BWRK", "MkgTable", "MKG_TABLE_CLCH", "MkgTable", "MKG_TABLE_CLCR", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_CPRS", "MkgTable", "MKG_TABLE_DEBI", "MkgTable", "MKG_TABLE_MAGL", "MkgTable", "MKG_TABLE_MAGZ", "MkgTable", "MKG_TABLE_MEDW", "MkgTable", "MKG_TABLE_PAMT", "MkgTable", "ACTION_MOVE", "MkgAction", "MKG_TABLE_PARL", "MkgTable", "MKG_TABLE_PART", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_PLNB", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "prdhNum", "prdrNum", "MKG_TABLE_PRBV", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_PRDH", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "prdhNum", "ACTION_IN_PRODUCTION", "metadata", "prdrNum", "ACTION_DONE", "MKG_TABLE_PRDR", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "prdhNum", "prdrNum", "MKG_TABLE_PRMV", "MkgTable", "MKG_TABLE_PROJ", "MkgTable", "MKG_TABLE_RELA", "MkgTable", "MKG_TABLE_RGRS", "MkgTable", "MKG_TABLE_RSRC", "MkgTable", "MKG_TABLE_RSRD", "MkgTable", "MKG_TABLE_RSRG", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_STLB", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_STLH", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_STLM", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_STLR", "MkgTable", "ACTION_CREATE", "MkgAction", "MKG_TABLE_VORH", "MkgTable", "ACTION_CREATE", "MkgAction", "inputData", "vorhNum", "ACTION_CREATE_PRODUCTION_ORDER", "metadata", "vorrNum", "actionServiceResponseFormatter", "ACTION_CREATE_BACKFLUSH", "MKG_TABLE_VORR", "MkgTable", "MKG_TABLE_VRDG", "MkgTable", "tables", "MKG_TABLE_RELA", "MKG_TABLE_DEBI", "MKG_TABLE_MEDW", "MKG_TABLE_ARTI", "MKG_TABLE_RSRC", "MKG_TABLE_RSRD", "MKG_TABLE_RSRG", "MKG_TABLE_MAGZ", "MKG_TABLE_MAGL", "MKG_TABLE_STLH", "MKG_TABLE_STLR", "MKG_TABLE_STLM", "MKG_TABLE_PRDH", "MKG_TABLE_BWRK", "MKG_TABLE_BWRG", "MKG_TABLE_CLCH", "MKG_TABLE_VRDG", "MKG_TABLE_RGRS", "MKG_TABLE_PLNB", "MKG_TABLE_ARTG", "MKG_TABLE_PRDR", "MKG_TABLE_PRMV", "MKG_TABLE_PRBV", "MKG_TABLE_PARL", "MKG_TABLE_CLCR", "MKG_TABLE_CPRS", "MKG_TABLE_PROJ", "MKG_TABLE_VORH", "MKG_TABLE_VORR", "MKG_TABLE_STLB", "MKG_TABLE_PART", "MKG_TABLE_PAMT", "MKG_TABLES", "acc", "table", "ActionsHandler", "EventEmitter", "#connectorSDK", "#httpClient", "connectorSDK", "httpClient", "#jobCallbackFunction", "callbackFunction", "message", "action", "actionMetadata", "actionInput", "logMessage", "tableIdentifier", "rest", "actionIdentifier", "mkgTable", "MKG_TABLES", "mkgAction", "mkgActionFieldSet", "response", "parsedData", "TriggerSyncEvent", "error", "baseUrl", "sdk", "config", "ExtractorService", "#sdk", "#httpClient", "#tableIdentifier", "#table", "#fieldsList", "sdk", "httpClient", "tableIdentifier", "table", "filterFields", "now", "latestOffset", "data", "#fetchData", "DEFAULT_DATASOURCE", "error", "filters", "field", "value", "parameters", "destinationPath", "baseUrl", "resultData", "logMessage", "ConnectorRunnerMkg", "ConnectorRuntimeSDK", "connector", "connectorSDK", "#extractors", "config", "#getSessionCookie", "error", "tableIdentifier", "configOrTrue", "table", "MKG_TABLES", "extractor", "ExtractorService", "#mkgHttpClient", "#requestOptionsFormatter", "options", "sessionCookie", "#formattedHeaders", "baseUrlString", "baseUrl", "#sessionTokenHttpClient", "#actionsHandler", "ActionsHandler", "TriggerSyncEvent", "event", "#triggerSync", "#sessionToken", "j_username", "j_password", "token", "destinationPath", "response", "cookie", "SESSION_COOKIE_NAME", "sessionToken", "SESSION_EXPIRATION_SECONDS", "#updateAdministrationSettings", "apiToken", "administration", "fiscalYear", "language", "body", "fields", "dataFields", "key"]
7
7
  }
@@ -1,7 +1,8 @@
1
+ import { EventEmitter } from 'node:events';
1
2
  import { ConnectorSDKInterface, HttpClientSDKInterface } from '@transai/connector-runtime-sdk';
2
3
  import { ActionInterface, KafkaCallbackResponse, XodJobType } from '@xip-online-data/types';
3
4
  import { ConnectorConfig } from './types';
4
- export declare class ActionsHandler {
5
+ export declare class ActionsHandler extends EventEmitter {
5
6
  #private;
6
7
  constructor(connectorSDK: ConnectorSDKInterface<ConnectorConfig>, httpClient: HttpClientSDKInterface);
7
8
  get callbackFunctionChain(): (message: XodJobType, action: ActionInterface) => Promise<KafkaCallbackResponse>;
@@ -0,0 +1,7 @@
1
+ import { MkgActionInterface } from '../tables/base/action';
2
+ export declare class TriggerSyncEvent {
3
+ readonly action: MkgActionInterface;
4
+ readonly data: Record<string, unknown>;
5
+ static readonly NAME = "trigger-sync";
6
+ constructor(action: MkgActionInterface, data: Record<string, unknown>);
7
+ }
@@ -4,5 +4,5 @@ export declare class ExtractorService implements IntervalHandler {
4
4
  #private;
5
5
  constructor(sdk: ConnectorSDKInterface<ConnectorConfig>, httpClient: HttpClientSDKInterface, tableIdentifier: string, table: Required<MkgTableInterface>);
6
6
  get name(): string;
7
- onRun(): Promise<void>;
7
+ onRun(filterFields?: Record<string, unknown>): Promise<void>;
8
8
  }
@@ -14,6 +14,7 @@ export interface MkgActionInterface {
14
14
  responseFields?: Array<string>;
15
15
  path?: MkgActionPathFunction;
16
16
  response?: MkgActionResponseFunction;
17
+ triggerRefresh?: Record<string, Array<string>>;
17
18
  }
18
19
  export declare class MkgAction implements MkgActionInterface {
19
20
  #private;
@@ -22,6 +23,7 @@ export declare class MkgAction implements MkgActionInterface {
22
23
  readonly fields: Array<string>;
23
24
  readonly optionalFields: Array<string>;
24
25
  readonly responseFields: Array<string>;
26
+ readonly triggerRefresh?: Record<string, Array<string>>;
25
27
  readonly path: MkgActionPathFunction;
26
28
  readonly response: MkgActionResponseFunction;
27
29
  constructor(params: MkgActionInterface);
@@ -0,0 +1,2 @@
1
+ import { MkgTable } from './base/table';
2
+ export declare const MKG_TABLE_PAMT: MkgTable;
@@ -0,0 +1,2 @@
1
+ import { MkgTable } from './base/table';
2
+ export declare const MKG_TABLE_PART: MkgTable;