@etainabl/nodejs-sdk 1.2.44 → 1.2.46

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.
Files changed (154) hide show
  1. package/dist/index.d.cts +782 -0
  2. package/dist/index.d.ts +782 -0
  3. package/dist/index.js +626 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +588 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +28 -31
  8. package/.prettierrc +0 -11
  9. package/__tests__/reporting.test.ts +0 -88
  10. package/dist/cjs/api.d.ts +0 -111
  11. package/dist/cjs/api.js +0 -318
  12. package/dist/cjs/consumption.d.ts +0 -14
  13. package/dist/cjs/consumption.js +0 -32
  14. package/dist/cjs/db.d.ts +0 -6
  15. package/dist/cjs/db.js +0 -69
  16. package/dist/cjs/etainabl.d.ts +0 -10
  17. package/dist/cjs/etainabl.js +0 -2
  18. package/dist/cjs/index.d.ts +0 -10
  19. package/dist/cjs/index.js +0 -59
  20. package/dist/cjs/logger.d.ts +0 -3
  21. package/dist/cjs/logger.js +0 -14
  22. package/dist/cjs/monitoring.d.ts +0 -1
  23. package/dist/cjs/monitoring.js +0 -31
  24. package/dist/cjs/package.json +0 -3
  25. package/dist/cjs/reporting.d.ts +0 -2
  26. package/dist/cjs/reporting.js +0 -69
  27. package/dist/cjs/slack.d.ts +0 -4
  28. package/dist/cjs/slack.js +0 -28
  29. package/dist/cjs/types/account.d.ts +0 -112
  30. package/dist/cjs/types/account.js +0 -2
  31. package/dist/cjs/types/address.d.ts +0 -11
  32. package/dist/cjs/types/address.js +0 -2
  33. package/dist/cjs/types/asset.d.ts +0 -122
  34. package/dist/cjs/types/asset.js +0 -3
  35. package/dist/cjs/types/automation.d.ts +0 -33
  36. package/dist/cjs/types/automation.js +0 -2
  37. package/dist/cjs/types/company.d.ts +0 -42
  38. package/dist/cjs/types/company.js +0 -2
  39. package/dist/cjs/types/dataIngest.d.ts +0 -8
  40. package/dist/cjs/types/dataIngest.js +0 -2
  41. package/dist/cjs/types/email.d.ts +0 -18
  42. package/dist/cjs/types/email.js +0 -2
  43. package/dist/cjs/types/entity.d.ts +0 -16
  44. package/dist/cjs/types/entity.js +0 -2
  45. package/dist/cjs/types/index.d.ts +0 -19
  46. package/dist/cjs/types/index.js +0 -2
  47. package/dist/cjs/types/invoice.d.ts +0 -118
  48. package/dist/cjs/types/invoice.js +0 -2
  49. package/dist/cjs/types/log.d.ts +0 -10
  50. package/dist/cjs/types/log.js +0 -2
  51. package/dist/cjs/types/portal.d.ts +0 -8
  52. package/dist/cjs/types/portal.js +0 -2
  53. package/dist/cjs/types/reading.d.ts +0 -17
  54. package/dist/cjs/types/reading.js +0 -2
  55. package/dist/cjs/types/report.d.ts +0 -21
  56. package/dist/cjs/types/report.js +0 -2
  57. package/dist/cjs/types/scraperRun.d.ts +0 -15
  58. package/dist/cjs/types/scraperRun.js +0 -2
  59. package/dist/cjs/types/statusHistory.d.ts +0 -5
  60. package/dist/cjs/types/statusHistory.js +0 -2
  61. package/dist/cjs/types/supplier.d.ts +0 -28
  62. package/dist/cjs/types/supplier.js +0 -3
  63. package/dist/cjs/units.d.ts +0 -22
  64. package/dist/cjs/units.js +0 -94
  65. package/dist/mjs/api.d.ts +0 -111
  66. package/dist/mjs/api.js +0 -308
  67. package/dist/mjs/consumption.d.ts +0 -14
  68. package/dist/mjs/consumption.js +0 -22
  69. package/dist/mjs/db.d.ts +0 -6
  70. package/dist/mjs/db.js +0 -53
  71. package/dist/mjs/etainabl.d.ts +0 -10
  72. package/dist/mjs/etainabl.js +0 -1
  73. package/dist/mjs/index.d.ts +0 -10
  74. package/dist/mjs/index.js +0 -10
  75. package/dist/mjs/logger.d.ts +0 -3
  76. package/dist/mjs/logger.js +0 -9
  77. package/dist/mjs/monitoring.d.ts +0 -1
  78. package/dist/mjs/monitoring.js +0 -15
  79. package/dist/mjs/package.json +0 -3
  80. package/dist/mjs/reporting.d.ts +0 -2
  81. package/dist/mjs/reporting.js +0 -62
  82. package/dist/mjs/slack.d.ts +0 -4
  83. package/dist/mjs/slack.js +0 -14
  84. package/dist/mjs/types/account.d.ts +0 -112
  85. package/dist/mjs/types/account.js +0 -1
  86. package/dist/mjs/types/address.d.ts +0 -11
  87. package/dist/mjs/types/address.js +0 -1
  88. package/dist/mjs/types/asset.d.ts +0 -122
  89. package/dist/mjs/types/asset.js +0 -2
  90. package/dist/mjs/types/automation.d.ts +0 -33
  91. package/dist/mjs/types/automation.js +0 -1
  92. package/dist/mjs/types/company.d.ts +0 -42
  93. package/dist/mjs/types/company.js +0 -1
  94. package/dist/mjs/types/dataIngest.d.ts +0 -8
  95. package/dist/mjs/types/dataIngest.js +0 -1
  96. package/dist/mjs/types/email.d.ts +0 -18
  97. package/dist/mjs/types/email.js +0 -1
  98. package/dist/mjs/types/entity.d.ts +0 -16
  99. package/dist/mjs/types/entity.js +0 -1
  100. package/dist/mjs/types/index.d.ts +0 -19
  101. package/dist/mjs/types/index.js +0 -1
  102. package/dist/mjs/types/invoice.d.ts +0 -118
  103. package/dist/mjs/types/invoice.js +0 -1
  104. package/dist/mjs/types/log.d.ts +0 -10
  105. package/dist/mjs/types/log.js +0 -1
  106. package/dist/mjs/types/portal.d.ts +0 -8
  107. package/dist/mjs/types/portal.js +0 -1
  108. package/dist/mjs/types/reading.d.ts +0 -17
  109. package/dist/mjs/types/reading.js +0 -1
  110. package/dist/mjs/types/report.d.ts +0 -21
  111. package/dist/mjs/types/report.js +0 -1
  112. package/dist/mjs/types/scraperRun.d.ts +0 -15
  113. package/dist/mjs/types/scraperRun.js +0 -1
  114. package/dist/mjs/types/statusHistory.d.ts +0 -5
  115. package/dist/mjs/types/statusHistory.js +0 -1
  116. package/dist/mjs/types/supplier.d.ts +0 -28
  117. package/dist/mjs/types/supplier.js +0 -2
  118. package/dist/mjs/units.d.ts +0 -22
  119. package/dist/mjs/units.js +0 -89
  120. package/eslint.config.js +0 -60
  121. package/fixup.sh +0 -11
  122. package/src/api.ts +0 -382
  123. package/src/consumption.ts +0 -40
  124. package/src/db.ts +0 -69
  125. package/src/etainabl.ts +0 -10
  126. package/src/index.ts +0 -21
  127. package/src/logger.ts +0 -13
  128. package/src/monitoring.ts +0 -18
  129. package/src/reporting.ts +0 -78
  130. package/src/slack.ts +0 -16
  131. package/src/types/account.ts +0 -116
  132. package/src/types/address.ts +0 -12
  133. package/src/types/asset.ts +0 -142
  134. package/src/types/automation.ts +0 -35
  135. package/src/types/company.ts +0 -47
  136. package/src/types/dataIngest.ts +0 -8
  137. package/src/types/email.ts +0 -18
  138. package/src/types/entity.ts +0 -17
  139. package/src/types/index.ts +0 -20
  140. package/src/types/invoice.ts +0 -119
  141. package/src/types/log.ts +0 -10
  142. package/src/types/portal.ts +0 -9
  143. package/src/types/reading.ts +0 -17
  144. package/src/types/report.ts +0 -21
  145. package/src/types/scraperRun.ts +0 -15
  146. package/src/types/statusHistory.ts +0 -5
  147. package/src/types/supplier.ts +0 -31
  148. package/src/units.ts +0 -111
  149. package/tsconfig.base.json +0 -31
  150. package/tsconfig.cjs.json +0 -8
  151. package/tsconfig.json +0 -9
  152. package/tsconfig.test.json +0 -13
  153. package/vitest.config.js +0 -10
  154. package/vitest.workspace.js +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api.ts","../src/logger.ts","../src/db.ts","../src/slack.ts","../src/units.ts","../src/consumption.ts","../src/monitoring.ts","../src/reporting.ts"],"sourcesContent":["import axios from 'axios';\nimport type { AxiosRequestConfig, AxiosInstance, CreateAxiosDefaults, AxiosResponse } from 'axios';\nimport https from 'https';\n\nimport logger from './logger.js';\n\nimport type { Account, Asset, Automation, Entity, Company, DataIngest, Invoice, Log, Reading, Report, Supplier } from './types/index.js'\n\nconst log = logger('etainablApi');\n\nexport interface ETNPagedResponse<T = any> {\n data: T[];\n total: number;\n limit: number;\n skip: number;\n}\n\nexport interface ETNReq {\n method: string;\n url: string;\n}\n\nfunction _handleResponse(req: ETNReq, res: AxiosResponse, isPaged = false) {\n if (!res) {\n throw new Error(`No response from API (${req.method} ${req.url})`);\n }\n\n if (res.status !== 200) {\n throw new Error(`${res.status} ${res.statusText} response from API (${req.method} ${req.url})`);\n }\n\n if (!res.data) {\n throw new Error(`No data from API (${req.method} ${req.url})`);\n }\n\n if (isPaged && !res.data.data) {\n throw new Error(`No data from API (${req.method} ${req.url})`);\n }\n\n return res;\n}\n\nconst factory = {\n getWithId: <T = any> (etainablApi: AxiosInstance, endpoint: string, postEndpoint?: string) => async (id: string, options: AxiosRequestConfig = {}): Promise<T> => {\n const req = {\n method: 'GET',\n url: `${endpoint}/${id}${postEndpoint ? `/${postEndpoint}` : ''}`\n };\n\n log.info(`API Request: ${req.method} ${process.env.ETAsINABL_API_URL}/${req.url}`);\n\n let res: AxiosResponse;\n\n try {\n res = await etainablApi.get(req.url, options);\n } catch (e: any) {\n if (e.response?.data) throw new Error(`API error response: ${JSON.stringify(e.response.data)}`);\n throw e;\n }\n\n console.log(`API Response: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n\n _handleResponse(req, res)\n\n return res.data;\n },\n get: <T = any> (etainablApi: AxiosInstance, endpoint: string, postEndpoint?: string) => async (options: AxiosRequestConfig = {}): Promise<T> => {\n const req = {\n method: 'GET',\n url: `${endpoint}${postEndpoint ? `/${postEndpoint}` : ''}`\n };\n\n log.info(`API Request: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n\n let res: AxiosResponse;\n\n try {\n res = await etainablApi.get(req.url, options);\n } catch (e: any) {\n if (e.response?.data) throw new Error(`API error response: ${JSON.stringify(e.response.data)}`);\n throw e;\n }\n\n console.log(`API Response: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n _handleResponse(req, res)\n\n return res.data;\n },\n list: <T = any> (etainablApi: AxiosInstance, endpoint: string, postEndpoint?: string) => async (options: AxiosRequestConfig = {}): Promise<ETNPagedResponse<T>> => {\n const req = {\n method: 'GET',\n url: `${endpoint}${postEndpoint ? `/${postEndpoint}` : ''}`\n };\n \n log.info(`API Request: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n\n let res: AxiosResponse;\n \n try {\n res = await etainablApi.get(req.url, options);\n } catch (e: any) {\n if (e.response?.data) throw new Error(`API error response: ${JSON.stringify(e.response.data)}`);\n throw e;\n }\n\n console.log(`API Response: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n _handleResponse(req, res, true)\n\n return res.data;\n },\n update: (etainablApi: AxiosInstance, endpoint: string, postEndpoint?: string) => async (id: string, data: any, options: AxiosRequestConfig = {}) => {\n const req = {\n method: 'PATCH',\n url: `${endpoint}/${id}${postEndpoint ? `/${postEndpoint}` : ''}`\n };\n \n log.info(`API Request: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n\n let res: AxiosResponse;\n \n try {\n res = await etainablApi.patch(req.url, data, options);\n } catch (e: any) {\n if (e.response?.data) throw new Error(`API error response: ${JSON.stringify(e.response.data)}`);\n throw e;\n }\n\n _handleResponse(req, res)\n\n return res.data;\n },\n create: (etainablApi: AxiosInstance, endpoint: string, postEndpoint?: string) => async (data: any, options: AxiosRequestConfig = {}) => {\n const req = {\n method: 'POST',\n url: `${endpoint}${postEndpoint ? `/${postEndpoint}` : ''}`\n };\n\n log.info(`API Request: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n\n let res: AxiosResponse;\n \n try {\n res = await etainablApi.post(req.url, data, options);\n } catch (e: any) {\n if (e.response?.data) throw new Error(`API error response: ${JSON.stringify(e.response.data)}`);\n throw e;\n }\n\n _handleResponse(req, res)\n\n return res.data;\n },\n remove: (etainablApi: AxiosInstance, endpoint: string, postEndpoint?: string) => async (id: string, options: AxiosRequestConfig = {}) => {\n const req = {\n method: 'DELETE',\n url: `${endpoint}/${id}${postEndpoint ? `/${postEndpoint}` : ''}`\n };\n\n let res: AxiosResponse;\n\n log.info(`API Request: ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n\n try {\n res = await etainablApi.delete(req.url, options);\n } catch (e: any) {\n if (e.response?.data) throw new Error(`API error response: ${JSON.stringify(e.response.data)}`);\n throw e;\n }\n\n _handleResponse(req, res);\n\n return res.data;\n },\n customWithId: (etainablApi: AxiosInstance, method: string, endpoint: string, postEndpoint?: string) => async (id: string, data: any, options: AxiosRequestConfig = {}) => {\n const req = {\n method: method,\n url: `${endpoint}/${id}${postEndpoint ? `/${postEndpoint}` : ''}`,\n data,\n ...options\n };\n \n log.info(`API Request (Custom): ${req.method} ${process.env.ETAINABL_API_URL}/${req.url}`);\n\n let res: AxiosResponse;\n \n try {\n res = await etainablApi.request(req);\n } catch (e: any) {\n if (e.response?.data) throw new Error(`API error response: ${JSON.stringify(e.response.data)}`);\n throw e;\n }\n\n _handleResponse(req, res)\n\n return res.data;\n }\n};\n\n// ETN Sub Endpoints\n// e.g. /assets/:id/documents/:documentId\nconst subFactory = {\n // e.g. POST /assets/:id/documents\n create: (etainablApi: AxiosInstance, endpoint: string, subEndpoint: string) => async (id: string, data: any, options: AxiosRequestConfig = {}) => { \n const subUrl = `${id}/${subEndpoint}`;\n return factory.create(etainablApi, endpoint, subUrl)(data, options);\n },\n // e.g. PATCH /assets/:id/documents/:documentId\n update: (etainablApi: AxiosInstance, endpoint: string, subEndpoint: string) => async (id: string, subId: string, data: any, options: AxiosRequestConfig = {}) => {\n const subUrl = `${subEndpoint}/${subId}`;\n \n return factory.update(etainablApi, endpoint, subUrl)(id, data, options);\n },\n // e.g. DELETE /assets/:id/documents/:documentId\n remove: (etainablApi: AxiosInstance, endpoint: string, subEndpoint: string) => async (id: string, subId: string, options: AxiosRequestConfig = {}) => {\n const subUrl = `${subEndpoint}/${subId}`;\n \n return factory.remove(etainablApi, endpoint, subUrl)(id, options);\n }\n}\n\ninterface AuthOptions {\n key?: string;\n token?: string;\n}\n\nexport default (auth: AuthOptions, instanceOptions: CreateAxiosDefaults = {}) => {\n try {\n const headers: any = {};\n\n if (auth.key) {\n headers['x-key'] = auth.key;\n } else if (auth.token) {\n headers['Authorization'] = auth.token;\n } else {\n headers['x-key'] = process.env.ETAINABL_API_KEY;\n }\n \n const etainablApi = axios.create({\n baseURL: process.env.ETAINABL_API_URL,\n timeout: 300000,\n httpsAgent: new https.Agent({ keepAlive: true }),\n headers,\n ...instanceOptions\n });\n \n return {\n instance: etainablApi,\n \n // accounts\n getAccount: factory.getWithId<Account>(etainablApi, 'accounts'),\n listAccounts: factory.list<Account>(etainablApi, 'accounts'),\n updateAccount: factory.update(etainablApi, 'accounts'),\n createAccount: factory.create(etainablApi, 'accounts'),\n removeAccount: factory.remove(etainablApi, 'accounts'),\n getAccountSchema: factory.get(etainablApi, 'accounts', 'schema'),\n invalidateAccountCache: factory.customWithId(etainablApi, 'put', 'accounts', 'invalidate-cache'),\n\n // assets\n getAsset: factory.getWithId<Asset>(etainablApi, 'assets'),\n listAssets: factory.list<Asset>(etainablApi, 'assets'),\n updateAsset: factory.update(etainablApi, 'assets'),\n createAsset: factory.create(etainablApi, 'assets'),\n removeAsset: factory.remove(etainablApi, 'assets'),\n getAssetSchema: factory.get(etainablApi, 'assets', 'schema'),\n \n // assetGroups\n getAssetGroup: factory.getWithId(etainablApi, 'asset-groups'),\n listAssetGroups: factory.list(etainablApi, 'asset-groups'),\n updateAssetGroup: factory.update(etainablApi, 'asset-groups'),\n createAssetGroup: factory.create(etainablApi, 'asset-groups'),\n removeAssetGroup: factory.remove(etainablApi, 'asset-groups'),\n getAssetGroupAssets: factory.getWithId(etainablApi, 'asset-groups', 'assets'),\n getAssetGroupSchema: factory.get(etainablApi, 'asset-groups', 'schema'),\n \n // automation\n getAutomation: factory.getWithId<Automation>(etainablApi, 'automation'),\n listAutomations: factory.list<Automation>(etainablApi, 'automation'),\n updateAutomation: factory.update(etainablApi, 'automation'),\n createAutomation: factory.create(etainablApi, 'automation'),\n removeAutomation: factory.remove(etainablApi, 'automation'),\n createAutomationLog: subFactory.create(etainablApi, 'automation', 'logs'),\n updateAutomationLog: subFactory.update(etainablApi, 'automation', 'logs'),\n removeAutomationLog: subFactory.remove(etainablApi, 'automation', 'logs'),\n \n // company\n getCompany: factory.getWithId<Company>(etainablApi, 'companies'),\n \n // consumption\n getConsumption: factory.getWithId(etainablApi, 'consumptions'),\n listConsumptions: factory.list(etainablApi, 'consumptions'),\n updateConsumption: factory.update(etainablApi, 'consumptions'),\n createConsumption: factory.create(etainablApi, 'consumptions'),\n removeConsumption: factory.remove(etainablApi, 'consumptions'),\n getConsumptionSchema: factory.get(etainablApi, 'consumptions', 'schema'),\n \n // emails\n getEmail: factory.getWithId(etainablApi, 'emails'),\n listEmails: factory.list(etainablApi, 'emails'),\n updateEmail: factory.update(etainablApi, 'emails'),\n createEmail: factory.create(etainablApi, 'emails'),\n removeEmail: factory.remove(etainablApi, 'emails'),\n \n // emission factors\n getEmissionFactor: factory.getWithId(etainablApi, 'emission-factors'),\n listEmissionFactors: factory.list(etainablApi, 'emission-factors'),\n updateEmissionFactor: factory.update(etainablApi, 'emission-factors'),\n createEmissionFactor: factory.create(etainablApi, 'emission-factors'),\n removeEmissionFactor: factory.remove(etainablApi, 'emission-factors'),\n\n // entity\n getEntity: factory.getWithId<Entity>(etainablApi, 'entities'),\n listEntities: factory.list<Entity>(etainablApi, 'entities'),\n updateEntity: factory.update(etainablApi, 'entities'),\n createEntity: factory.create(etainablApi, 'entities'),\n removeEntity: factory.remove(etainablApi, 'entities'),\n getEntitiesSchema: factory.get(etainablApi, 'entities', 'schema'),\n \n \n // logs\n getLog: factory.getWithId<Log>(etainablApi, 'logs'),\n listLogs: factory.list<Log>(etainablApi, 'logs'),\n updateLog: factory.update(etainablApi, 'logs'),\n createLog: factory.create(etainablApi, 'logs'),\n removeLog: factory.remove(etainablApi, 'logs'),\n \n // readings\n getReading: factory.getWithId<Reading>(etainablApi, 'readings'),\n listReadings: factory.list<Reading>(etainablApi, 'readings'),\n updateReading: factory.update(etainablApi, 'readings'),\n createReading: factory.create(etainablApi, 'readings'),\n removeReading: factory.remove(etainablApi, 'readings'),\n getReadingSchema: factory.get(etainablApi, 'readings', 'schema'),\n \n // reports\n getReport: factory.getWithId<Report>(etainablApi, 'reports'),\n listReports: factory.list<Report>(etainablApi, 'reports'),\n updateReport: factory.update(etainablApi, 'reports'),\n createReport: factory.create(etainablApi, 'reports'),\n removeReport: factory.remove(etainablApi, 'reports'),\n sendReport: factory.customWithId(etainablApi, 'post', 'reports', 'send'),\n \n // report templates\n getReportTemplate: factory.getWithId(etainablApi, 'report-templates'),\n listReportTemplates: factory.list(etainablApi, 'report-templates'),\n updateReportTemplate: factory.update(etainablApi, 'report-templates'),\n createReportTemplate: factory.create(etainablApi, 'report-templates'),\n removeReportTemplate: factory.remove(etainablApi, 'report-templates'),\n \n // scheduled reports\n getScheduledReport: factory.getWithId(etainablApi, 'scheduled-reports'),\n listScheduledReports: factory.list(etainablApi, 'scheduled-reports'),\n updateScheduledReport: factory.update(etainablApi, 'scheduled-reports'),\n createScheduledReport: factory.create(etainablApi, 'scheduled-reports'),\n removeScheduledReport: factory.remove(etainablApi, 'scheduled-reports'),\n sendScheduledReport: factory.customWithId(etainablApi, 'post', 'scheduled-reports', 'send'),\n \n // invoices\n getInvoice: factory.getWithId<Invoice>(etainablApi, 'invoices'),\n listInvoices: factory.list<Invoice>(etainablApi, 'invoices'),\n updateInvoice: factory.update(etainablApi, 'invoices'),\n createInvoice: factory.create(etainablApi, 'invoices'),\n removeInvoice: factory.remove(etainablApi, 'invoices'),\n getInvoiceSchema: factory.get(etainablApi, 'invoices', 'schema'),\n\n //suppliers\n listSuppliers: factory.list<Supplier>(etainablApi, 'suppliers'),\n getSupplierSchema: factory.get(etainablApi, 'suppliers', 'schema'),\n\n // import templates\n getImportTemplate: factory.getWithId(etainablApi, 'import-templates'),\n\n //data imports\n updateDataIngest: factory.update(etainablApi, 'data-ingests'),\n createDataIngest: factory.create(etainablApi, 'data-ingests'),\n listDataIngest: factory.list<DataIngest>(etainablApi, 'data-ingests'),\n\n }\n } catch (e) {\n log.error(e);\n throw e;\n }\n};\n","import winston from 'winston';\n\nexport default (namespace: string) => winston.createLogger({\n level: 'debug',\n format: winston.format.combine(\n winston.format.timestamp(),\n winston.format.json()\n ),\n defaultMeta: { service: process.env.AWS_LAMBDA_FUNCTION_NAME, script: namespace },\n transports: [\n new winston.transports.Console()\n ]\n});\n","import { MongoClient, Db } from 'mongodb';\nimport logger from './logger.js';\n\nconst log = logger('dbHelpers');\n\nlet cachedDb: Db;\n\nasync function connectToDatabase(retryAttempt: number = 1): Promise<Db> {\n if (!process.env.ETAINABL_DB_URL) throw new Error(\"ETAINABL_DB_URL is not set\");\n if (!process.env.AWS_ACCESS_KEY_ID) throw new Error(\"AWS_ACCESS_KEY_ID is not set\");\n if (!process.env.AWS_SECRET_ACCESS_KEY) throw new Error(\"AWS_SECRET_ACCESS_KEY is not set\");\n\n if (cachedDb) {\n log.debug('Using cached MongoDB connection.');\n return Promise.resolve(cachedDb);\n }\n \n const uri = `mongodb+srv://${process.env.ETAINABL_DB_URL}`;\n \n try {\n if (process.env.DB_BASIC_AUTH === 'true') {\n log.debug('Connecting to MongoDB server... (Auth: Basic)');\n\n const client = new MongoClient(uri);\n await client.connect();\n\n log.debug('Connected successfully to MongoDB server! (Auth: Basic)');\n\n cachedDb = client.db('etainabl');\n\n return cachedDb;\n }\n\n log.debug('Connecting to MongoDB server... (Auth: AWS)');\n\n const client = new MongoClient(uri, {\n auth: {\n username: process.env.AWS_ACCESS_KEY_ID,\n password: process.env.AWS_SECRET_ACCESS_KEY\n },\n authSource: '$external',\n authMechanism: 'MONGODB-AWS'\n });\n\n await client.connect();\n\n log.debug('Connected successfully to MongoDB server! (Auth: AWS)');\n\n cachedDb = client.db('etainabl');\n\n return cachedDb;\n\n } catch (e: any) {\n // Retry\n if (retryAttempt > 5) {\n console.log(`Error connecting to MongoDB server after 5 attempts...`);\n throw e;\n }\n\n console.log(`MongoDB Connection error: ${e.message}`);\n\n console.log(`Error connecting to MongoDB server... Retrying in 3 seconds... (Attempt ${retryAttempt})`);\n return connectToDatabase(retryAttempt + 1);\n }\n}\n\nexport default {\n connectToDatabase\n};","import axios from 'axios';\n\nconst postMessage = async (message: string) => {\n const url = 'https://hooks.slack.com/services/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';\n const data = {\n text: `[${(process.env.ENV || '').toUpperCase()}][${process.env.AWS_LAMBDA_FUNCTION_NAME}] ${message}`\n };\n const headers = {\n 'Content-Type': 'application/json'\n };\n return axios.post(url, data, { headers });\n};\n\nexport default {\n postMessage\n}","interface Item {\n units?: string | null;\n unit?: string | null;\n factor?: number | null;\n value: number;\n [key: string]: any; \n}\n\nexport type AccountType = 'electricity' | 'gas' | 'water' | 'waste' | 'solar' | 'heating' | 'flow' | 'cooling' | 'temperature' | 'oil' | 'other';\nexport type ETNUnit = 'kwh' | 'kg' | 'm3' | 'lbs' | 'tonnes' | 'wh' | 'mwh' | 'ft3' | 'hcf' | 'm3/h' | 'qty' | 'l' | 'C' | 'mcuf' | 'hcuf' | 'tcuf' | 'ocuf' | 'hm3' | 'tm3' | 'nm3';\nexport type BaseUnit = 'kwh' | 'm3' | 'C' | 'kg' | 'm3/h' | 'l';\nexport const accountTypeMap: { [key: string]: BaseUnit } = {\n electricity: 'kwh',\n gas: 'kwh',\n water: 'm3',\n waste: 'kg',\n solar: 'kwh',\n heating: 'kwh',\n flow: 'm3/h',\n cooling: 'kwh',\n temperature: 'C',\n oil: 'l'\n};\n\nconst unitConversionFactors: { [key: string]: any } = {\n kwh: {\n kwh: 1,\n mwh: 1000,\n wh: 0.001,\n m3: (39 * 1.02264) / 3.6,\n ft3: (0.0283 * 39 * 1.02264) / 3.6,\n hcf: (2.83 * 39 * 1.02264) / 3.6\n },\n m3: {\n m3: 1,\n l: 0.001\n },\n C: {\n C: 1\n },\n kg: {\n kg: 1,\n lbs: 0.45359237,\n tonnes: 1000\n },\n 'm3/h': {\n 'm3/h': 1\n }\n};\n\nexport const accountTypeUnitMap: { [key: string]: ETNUnit[] } = {\n electricity: ['kwh', 'mwh', 'wh'],\n gas: ['kwh', 'm3', 'ft3', 'hcf'],\n water: ['m3', 'l'],\n waste: ['kg', 'lbs', 'tonnes'],\n solar: ['kwh', 'mwh', 'wh'],\n heating: ['kwh', 'mwh', 'wh'],\n flow: ['m3/h'],\n cooling: ['kwh', 'mwh', 'wh'],\n temperature: ['C'],\n oil: ['l']\n};\n\n// Convert units to base format\nexport const convertItems = (items: Item[], type: AccountType, defaultUnits: ETNUnit | undefined, accountFactor: number | undefined): any => {\n if (!type) throw new Error('Account type is required');\n\n const baseUnit = accountTypeMap[type];\n if (!baseUnit) throw new Error(`Account type ${type} is not supported`);\n\n const convertedItems = items.map(item => {\n const factor = item.factor || accountFactor || 1;\n const units = item.units || item.unit || defaultUnits || baseUnit;\n const convertedValue = item.value * _getConversionFactor(units, baseUnit) * factor;\n return { ...item, value: convertedValue, units: baseUnit };\n });\n\n return convertedItems;\n};\n\nconst _getConversionFactor = (fromUnit: string = 'kwh', toUnit: string) => {\n const conversionFactors = unitConversionFactors[toUnit];\n\n if (!conversionFactors) {\n throw new Error(`Conversion factor base unit ${toUnit} is not defined`);\n }\n\n if (!conversionFactors[fromUnit]) {\n throw new Error(`Conversion factor from unit ${fromUnit} is not defined`);\n }\n\n return conversionFactors[fromUnit];\n};\n\nexport const checkAccountTypeVsUnits = (type: string, unit: string, additionalLog: number | '' = '') => {\n if (!type) throw new Error('Account type is required');\n if (!unit) throw new Error('Unit is required');\n\n const parsedType = type.toLowerCase().trim();\n\n const accountTypeUnits = accountTypeUnitMap[parsedType];\n if (!accountTypeUnits) throw new Error(`Account type \"${parsedType}\" is not supported ${additionalLog}`);\n\n const parsedUnit = unit.toLowerCase().trim() as ETNUnit;\n\n if (!accountTypeUnits.includes(parsedUnit)) {\n throw new Error(`Account type \"${parsedType}\" does not support unit \"${parsedUnit}\" ${additionalLog}`);\n }\n\n return { type: parsedType as AccountType, unit: parsedUnit};\n};\n","import moment from 'moment';\n\ninterface ConsumptionData {\n date: Date;\n consumption: number;\n}\n\ninterface DayNightConsumption {\n dayConsumption: number,\n nightConsumption: number,\n consumption: number\n}\n\nexport const dayNightConsumption = (data: ConsumptionData[]) => data.reduce((acc: DayNightConsumption, item: ConsumptionData): DayNightConsumption => {\n const hour = moment.utc(item.date).hour(); // End Time of HH consumption period\n\n if (hour >= 0 && hour < 7) {\n acc.nightConsumption += item.consumption;\n } else {\n acc.dayConsumption += item.consumption;\n }\n\n acc.consumption += item.consumption;\n\n return acc;\n}, {\n dayConsumption: 0,\n nightConsumption: 0,\n consumption: 0\n});\n\nexport const calcMaxConsumptionValue = (data: ConsumptionData[]) => Math.max(...data.map((item: ConsumptionData) => item.consumption));\n\nexport const calcMaxDemand = (data: ConsumptionData[]) => calcMaxConsumptionValue(data) * 2;\n\nexport const calcPeakLoad = (consumption: number, maxDemand: number, startDate: string | moment.Moment, endDate: string | moment.Moment) => {\n const days = Math.ceil(moment(endDate).diff(moment(startDate), 'days', true));\n\n return maxDemand === 0 ? 0 : ((consumption / (maxDemand * 24 * days)) * 100);\n};","import axios from 'axios';\n\nimport logger from './logger.js';\n\nconst log = logger('monitoring');\n\nexport const sendHeartbeat = async () => {\n if (!process.env.HEARTBEAT_URL || process.env.HEARTBEAT_URL.endsWith('/')) return false;\n\n try {\n await axios.post(process.env.HEARTBEAT_URL);\n\n return true;\n } catch (e: any) {\n log.warn(`Failed to send heartbeat: ${e.message || e}`);\n return false;\n }\n}","import moment from 'moment';\n\nmoment.locale('en', {\n week: {\n dow: 1\n }\n});\n\nconst getNextRunTime = (startDate: moment.Moment, schedule: any, taskTime: moment.Moment): moment.Moment => {\n const [num, freq] = schedule.frequency.split('|');\n const targetDate = moment(startDate).add(num, freq as moment.unitOfTime.Base);\n\n if (schedule.frequencyPeriod === 'first') {\n targetDate.startOf(freq as moment.unitOfTime.StartOf);\n } else if (schedule.frequencyPeriod === 'last') {\n targetDate.endOf(freq as moment.unitOfTime.StartOf);\n }\n\n const isWeekday = targetDate.isoWeekday() > 0 && targetDate.isoWeekday() < 6;\n const isSaturday = targetDate.isoWeekday() === 6;\n\n // The weekday or weekend chosen should be within the same month as the target date\n if (schedule.frequencyDay === 'weekdays' && !isWeekday) {\n if ((targetDate.date() / 7) < 2) {\n targetDate.add(isSaturday ? 2 : 1, 'days');\n } else {\n targetDate.subtract(isSaturday ? 1 : 2, 'days');\n }\n } else if (schedule.frequencyDay === 'weekends' && isWeekday) {\n if ((targetDate.date() / 7) < 2) {\n targetDate.isoWeekday(6);\n } else {\n targetDate.isoWeekday(0);\n }\n }\n\n if (taskTime.isAfter(targetDate, 'minute')) {\n return getNextRunTime(targetDate, schedule, taskTime);\n }\n\n return targetDate;\n};\n\nexport const getScheduledReportRunTimes = (schedule: any, limit = 1, taskTime = moment()): moment.Moment[] => {\n if (!schedule.startDate || !schedule.enabled) return [];\n\n const originalStartDate = moment.utc(schedule.startDate);\n\n let startDate = originalStartDate;\n\n const includeStartDate = taskTime.isSameOrBefore(originalStartDate, 'minute');\n\n let runTimes = [] as moment.Moment[];\n\n if (includeStartDate) {\n runTimes = [originalStartDate];\n }\n\n const [, freq] = schedule.frequency.split('|');\n\n if (freq === 'once') {\n const nextRunTime = runTimes[0];\n\n // If this is now beyond the start date, return an empty array\n return taskTime.isAfter(nextRunTime, 'minute') ? [] : runTimes;\n }\n\n\n const scheduleRunTimes = Array.from(Array(includeStartDate ? limit - 1 : limit).keys()).map(() => {\n const nextRunTime = getNextRunTime(startDate, schedule, taskTime);\n\n startDate = nextRunTime.hour(originalStartDate.hour()).minute(originalStartDate.minute());\n\n return nextRunTime;\n });\n\n return [...runTimes, ...scheduleRunTimes];\n};\n"],"mappings":"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","names":["log","client","axios","axios","log","axios","moment"]}
package/package.json CHANGED
@@ -1,11 +1,32 @@
1
1
  {
2
2
  "name": "@etainabl/nodejs-sdk",
3
- "version": "1.2.44",
4
- "main": "dist/cjs/index.js",
5
- "module": "dist/mjs/index.js",
6
- "types": "dist/mjs/index.d.ts",
7
- "author": "Jonathan Lambert <jonathan@etainabl.com>",
3
+ "version": "1.2.46",
8
4
  "type": "module",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.mjs"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsup",
25
+ "dev": "tsup --watch",
26
+ "prepublishOnly": "npm run build",
27
+ "process": "vitest run && npm run build && npm version patch && npm publish",
28
+ "test": "vitest"
29
+ },
9
30
  "dependencies": {
10
31
  "axios": "^1.8.4",
11
32
  "moment": "^2.29.4",
@@ -13,33 +34,9 @@
13
34
  "winston": "^3.10.0"
14
35
  },
15
36
  "devDependencies": {
16
- "@babel/eslint-parser": "^7.27.0",
17
37
  "@types/node": "^20.4.5",
18
- "@typescript-eslint/eslint-plugin": "^8.29.0",
19
- "@typescript-eslint/parser": "^8.29.0",
20
- "eslint": "^8.57.1",
21
- "eslint-config-airbnb": "^19.0.4",
22
- "eslint-config-airbnb-base": "^15.0.0",
23
- "eslint-config-prettier": "^10.1.1",
24
- "eslint-plugin-import": "^2.31.0",
25
- "prettier-eslint": "^16.3.0",
26
- "typescript": "^4.8.4",
38
+ "tsup": "^8.0.2",
39
+ "typescript": "^5.8.2",
27
40
  "vitest": "^3.1.1"
28
- },
29
- "scripts": {
30
- "process": "vitest run && npm run build && npm version patch && npm publish",
31
- "build": "rm -rf dist/* && tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && ./fixup.sh",
32
- "test": "vitest",
33
- "postinstall": "npm run build"
34
- },
35
- "exports": {
36
- ".": {
37
- "import": "./dist/mjs/index.js",
38
- "require": "./dist/cjs/index.js"
39
- }
40
- },
41
- "publishConfig": {
42
- "registry": "https://registry.npmjs.org/",
43
- "access": "restricted"
44
41
  }
45
42
  }
package/.prettierrc DELETED
@@ -1,11 +0,0 @@
1
- {
2
- "printWidth": 150,
3
- "parser": "flow",
4
- "semi": true,
5
- "tabWidth": 4,
6
- "useTabs": false,
7
- "singleQuote": true,
8
- "trailingComma": "none",
9
- "bracketSpacing": true,
10
- "arrowParens": "avoid"
11
- }
@@ -1,88 +0,0 @@
1
- import moment from 'moment';
2
- import { reporting } from '../src/index.js';
3
-
4
- const exampleScheduledReport = {
5
- "_id" : "66964ddcdc2a32666b573d4b",
6
- "name" : "Last Months Meter Report - 008453651410226013008",
7
- "startDate" : moment('2024-07-18T08:03:00.000+0000'),
8
- "frequency" : "1|month",
9
- "frequencyDay" : "any",
10
- "frequencyPeriod" : "any",
11
- "reportPeriod" : "1|month",
12
- "subject" : "{{ siteName }} Last Month Meter Report for {{ accountMeterPointNumber }}",
13
- "message" : "Hi\n\nPlease find attached last month's meter management report for {{ accountName }} at {{ siteName }} covering the periods {{ reportStartDate }} to {{ reportEndDate }} for {{ accountMeterSerialNumber }}. \n\nIf you have any questions, please contact helpdesk@carbonxgen.com.\n\nMany thanks\nCarbonxgen",
14
- "recipients" : [
15
- "test@etainabl.com"
16
- ],
17
- "enabled" : true,
18
- "reportTemplateId" : "668f0cfd341c6b91bee5add3",
19
- "overrides" : {
20
- "accountId" : "655fcf07b7d3920014045314"
21
- },
22
- "userSub" : "auth0|6560834e165d6e67c4a4b8c9",
23
- "companyId" : "655b6d833f36810014b817a1",
24
- "deleted" : false,
25
- "createdAt" : moment('2024-07-16T10:39:24.917+0000'),
26
- "updatedAt" : moment('2024-08-14T10:37:16.263+0000'),
27
- "bulkUpdateCode" : "rerun17092024"
28
- };
29
-
30
- describe('Scheduled report run times', () => {
31
-
32
- it('should generate the correct run times for monthly report', async () => {
33
- const nextRunTimes = reporting.getScheduledReportRunTimes(exampleScheduledReport, 5, moment('2024-06-23T00:00:00.000+0000'));
34
-
35
- expect(nextRunTimes.map(t => t.toDate())).toEqual([
36
- new Date('2024-07-18T08:03:00.000+0000'),
37
- new Date('2024-08-18T08:03:00.000+0000'),
38
- new Date('2024-09-18T08:03:00.000+0000'),
39
- new Date('2024-10-18T08:03:00.000+0000'),
40
- new Date('2024-11-18T08:03:00.000+0000')
41
- ]);
42
- });
43
-
44
- it('should generate the correct run times for weekly report', async () => {
45
- const simulatedTaskTime = moment('2024-07-23T00:00:00.000+0000');
46
-
47
- const editedScheduledReport = {
48
- ...exampleScheduledReport,
49
- frequency: "1|week"
50
- };
51
-
52
- const scheduledStartDate = moment(editedScheduledReport.startDate);
53
-
54
- const nextRunTimes = reporting.getScheduledReportRunTimes(editedScheduledReport, 5, simulatedTaskTime);
55
-
56
- expect(nextRunTimes.map(t => t.toDate())).toEqual([
57
- scheduledStartDate.add(1, 'week').toDate(),
58
- scheduledStartDate.add(1, 'week').toDate(),
59
- scheduledStartDate.add(1, 'week').toDate(),
60
- scheduledStartDate.add(1, 'week').toDate(),
61
- scheduledStartDate.add(1, 'week').toDate()
62
- ]);
63
- });
64
-
65
- it('should generate a single run time for a one-time report', async () => {
66
-
67
- const expiredScheduledReport = {
68
- ...exampleScheduledReport,
69
- frequency: "1|once",
70
- startDate: moment('2024-07-25T08:03:00.000+0000')
71
- };
72
-
73
- const nextRunTimes = reporting.getScheduledReportRunTimes(expiredScheduledReport, 5, moment('2024-06-23T00:00:00.000+0000'));
74
- expect(nextRunTimes.map(t => t.toDate())).toEqual([new Date("2024-07-25T08:03:00.000Z")]);
75
- });
76
-
77
- it('should generate no run times for an expired one-time report', async () => {
78
-
79
- const expiredScheduledReport = {
80
- ...exampleScheduledReport,
81
- frequency: "1|once",
82
- startDate: moment('2024-06-18T08:03:00.000+0000')
83
- };
84
-
85
- const nextRunTimes = reporting.getScheduledReportRunTimes(expiredScheduledReport, 5, moment('2024-06-23T00:00:00.000+0000'));
86
- expect(nextRunTimes).toEqual([]);
87
- });
88
- });
package/dist/cjs/api.d.ts DELETED
@@ -1,111 +0,0 @@
1
- import type { AxiosRequestConfig, AxiosInstance, CreateAxiosDefaults } from 'axios';
2
- import type { Account, Asset, Automation, Entity, Company, DataIngest, Invoice, Log, Reading, Report, Supplier } from './types/index.js';
3
- export interface ETNPagedResponse<T = any> {
4
- data: T[];
5
- total: number;
6
- limit: number;
7
- skip: number;
8
- }
9
- export interface ETNReq {
10
- method: string;
11
- url: string;
12
- }
13
- interface AuthOptions {
14
- key?: string;
15
- token?: string;
16
- }
17
- declare const _default: (auth: AuthOptions, instanceOptions?: CreateAxiosDefaults) => {
18
- instance: AxiosInstance;
19
- getAccount: (id: string, options?: AxiosRequestConfig) => Promise<Account>;
20
- listAccounts: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Account>>;
21
- updateAccount: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
22
- createAccount: (data: any, options?: AxiosRequestConfig) => Promise<any>;
23
- removeAccount: (id: string, options?: AxiosRequestConfig) => Promise<any>;
24
- getAccountSchema: (options?: AxiosRequestConfig) => Promise<any>;
25
- invalidateAccountCache: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
26
- getAsset: (id: string, options?: AxiosRequestConfig) => Promise<Asset>;
27
- listAssets: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Asset>>;
28
- updateAsset: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
29
- createAsset: (data: any, options?: AxiosRequestConfig) => Promise<any>;
30
- removeAsset: (id: string, options?: AxiosRequestConfig) => Promise<any>;
31
- getAssetSchema: (options?: AxiosRequestConfig) => Promise<any>;
32
- getAssetGroup: (id: string, options?: AxiosRequestConfig) => Promise<any>;
33
- listAssetGroups: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<any>>;
34
- updateAssetGroup: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
35
- createAssetGroup: (data: any, options?: AxiosRequestConfig) => Promise<any>;
36
- removeAssetGroup: (id: string, options?: AxiosRequestConfig) => Promise<any>;
37
- getAssetGroupAssets: (id: string, options?: AxiosRequestConfig) => Promise<any>;
38
- getAssetGroupSchema: (options?: AxiosRequestConfig) => Promise<any>;
39
- getAutomation: (id: string, options?: AxiosRequestConfig) => Promise<Automation>;
40
- listAutomations: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Automation>>;
41
- updateAutomation: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
42
- createAutomation: (data: any, options?: AxiosRequestConfig) => Promise<any>;
43
- removeAutomation: (id: string, options?: AxiosRequestConfig) => Promise<any>;
44
- createAutomationLog: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
45
- updateAutomationLog: (id: string, subId: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
46
- removeAutomationLog: (id: string, subId: string, options?: AxiosRequestConfig) => Promise<any>;
47
- getCompany: (id: string, options?: AxiosRequestConfig) => Promise<Company>;
48
- getConsumption: (id: string, options?: AxiosRequestConfig) => Promise<any>;
49
- listConsumptions: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<any>>;
50
- updateConsumption: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
51
- createConsumption: (data: any, options?: AxiosRequestConfig) => Promise<any>;
52
- removeConsumption: (id: string, options?: AxiosRequestConfig) => Promise<any>;
53
- getConsumptionSchema: (options?: AxiosRequestConfig) => Promise<any>;
54
- getEmail: (id: string, options?: AxiosRequestConfig) => Promise<any>;
55
- listEmails: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<any>>;
56
- updateEmail: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
57
- createEmail: (data: any, options?: AxiosRequestConfig) => Promise<any>;
58
- removeEmail: (id: string, options?: AxiosRequestConfig) => Promise<any>;
59
- getEmissionFactor: (id: string, options?: AxiosRequestConfig) => Promise<any>;
60
- listEmissionFactors: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<any>>;
61
- updateEmissionFactor: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
62
- createEmissionFactor: (data: any, options?: AxiosRequestConfig) => Promise<any>;
63
- removeEmissionFactor: (id: string, options?: AxiosRequestConfig) => Promise<any>;
64
- getEntity: (id: string, options?: AxiosRequestConfig) => Promise<Entity>;
65
- listEntities: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Entity>>;
66
- updateEntity: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
67
- createEntity: (data: any, options?: AxiosRequestConfig) => Promise<any>;
68
- removeEntity: (id: string, options?: AxiosRequestConfig) => Promise<any>;
69
- getEntitiesSchema: (options?: AxiosRequestConfig) => Promise<any>;
70
- getLog: (id: string, options?: AxiosRequestConfig) => Promise<Log>;
71
- listLogs: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Log>>;
72
- updateLog: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
73
- createLog: (data: any, options?: AxiosRequestConfig) => Promise<any>;
74
- removeLog: (id: string, options?: AxiosRequestConfig) => Promise<any>;
75
- getReading: (id: string, options?: AxiosRequestConfig) => Promise<Reading>;
76
- listReadings: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Reading>>;
77
- updateReading: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
78
- createReading: (data: any, options?: AxiosRequestConfig) => Promise<any>;
79
- removeReading: (id: string, options?: AxiosRequestConfig) => Promise<any>;
80
- getReadingSchema: (options?: AxiosRequestConfig) => Promise<any>;
81
- getReport: (id: string, options?: AxiosRequestConfig) => Promise<Report>;
82
- listReports: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Report>>;
83
- updateReport: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
84
- createReport: (data: any, options?: AxiosRequestConfig) => Promise<any>;
85
- removeReport: (id: string, options?: AxiosRequestConfig) => Promise<any>;
86
- sendReport: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
87
- getReportTemplate: (id: string, options?: AxiosRequestConfig) => Promise<any>;
88
- listReportTemplates: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<any>>;
89
- updateReportTemplate: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
90
- createReportTemplate: (data: any, options?: AxiosRequestConfig) => Promise<any>;
91
- removeReportTemplate: (id: string, options?: AxiosRequestConfig) => Promise<any>;
92
- getScheduledReport: (id: string, options?: AxiosRequestConfig) => Promise<any>;
93
- listScheduledReports: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<any>>;
94
- updateScheduledReport: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
95
- createScheduledReport: (data: any, options?: AxiosRequestConfig) => Promise<any>;
96
- removeScheduledReport: (id: string, options?: AxiosRequestConfig) => Promise<any>;
97
- sendScheduledReport: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
98
- getInvoice: (id: string, options?: AxiosRequestConfig) => Promise<Invoice>;
99
- listInvoices: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Invoice>>;
100
- updateInvoice: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
101
- createInvoice: (data: any, options?: AxiosRequestConfig) => Promise<any>;
102
- removeInvoice: (id: string, options?: AxiosRequestConfig) => Promise<any>;
103
- getInvoiceSchema: (options?: AxiosRequestConfig) => Promise<any>;
104
- listSuppliers: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<Supplier>>;
105
- getSupplierSchema: (options?: AxiosRequestConfig) => Promise<any>;
106
- getImportTemplate: (id: string, options?: AxiosRequestConfig) => Promise<any>;
107
- updateDataIngest: (id: string, data: any, options?: AxiosRequestConfig) => Promise<any>;
108
- createDataIngest: (data: any, options?: AxiosRequestConfig) => Promise<any>;
109
- listDataIngest: (options?: AxiosRequestConfig) => Promise<ETNPagedResponse<DataIngest>>;
110
- };
111
- export default _default;