iobroker.javascript 9.0.18 → 9.1.0

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 (156) hide show
  1. package/README.md +13 -6
  2. package/admin/assets/OpenAiDialog-Dx-XNET0.js +13 -0
  3. package/admin/assets/{Save-C-o2LLTD.js → Save-Cld9qv9i.js} +1 -1
  4. package/admin/assets/ScriptEditor-BVaX7Hcs.js +2 -0
  5. package/admin/assets/ScriptEditorVanillaMonaco-yq11eIYC.js +1 -0
  6. package/admin/assets/createSvgIcon-DPvF8xqu.js +8 -0
  7. package/admin/assets/hostInit-LzITLWDa.js +1 -0
  8. package/admin/assets/index-BkyLyaYT.js +8 -0
  9. package/admin/assets/index-CLJ6-h9Q.js +1 -0
  10. package/admin/assets/index-COZhHfBn.js +1230 -0
  11. package/admin/assets/index-CVZSzCXy.js +1 -0
  12. package/admin/assets/index-Cu-TydZj.js +5 -0
  13. package/admin/assets/index-D8iYqogF.js +16 -0
  14. package/admin/assets/index-DlDUIfpA.js +193 -0
  15. package/admin/assets/index-Dnbw7_L3.js +986 -0
  16. package/admin/assets/index-Dsh1HfIY.js +1 -0
  17. package/admin/assets/index-gIA8x-8f.js +1 -0
  18. package/admin/assets/inheritsLoose-B0Ba5G9z.js +29 -0
  19. package/admin/assets/iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js +1 -0
  20. package/admin/assets/iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-QWG5Arqe.js +1 -0
  21. package/admin/assets/iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js +1 -0
  22. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js +1 -0
  23. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js +1 -0
  24. package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js +1 -0
  25. package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js +1 -0
  26. package/admin/assets/localSharedImportMap-AxgBkrOR.js +1 -0
  27. package/admin/assets/useTheme-hy6f3gra.js +1 -0
  28. package/admin/assets/virtualExposes-BPsCufin.js +1 -0
  29. package/admin/assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-C9suQF96.js +8 -0
  30. package/admin/custom/assets/Components-FfVbavBM.js +1 -0
  31. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-B7D2xOvV.js +1 -0
  32. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.mjs-ClsgYnEX.js +1 -0
  33. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__.mjs-B551AMx-.js +1 -0
  34. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-KsT5vKjV.js +1 -0
  35. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.mjs-DgHZUNxn.js +1 -0
  36. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__leaflet__loadShare__.mjs-BYONkEgA.js +1 -0
  37. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-0SjJESw9.js +1 -0
  38. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-CInLgMWW.js +1 -0
  39. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs-CL--xmjC.js +1 -0
  40. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-CorOEig8.js +1 -0
  41. package/admin/custom/assets/DefaultPropsProvider-CGb21NGY.js +1 -0
  42. package/admin/custom/assets/TextField-DNzklBSl.js +139 -0
  43. package/admin/custom/assets/ThemeProvider-B4G3jidj.js +29 -0
  44. package/admin/custom/assets/blue-CagzI6CQ.js +1 -0
  45. package/admin/custom/assets/createSvgIcon-ZdrQ8zSU.js +1 -0
  46. package/admin/custom/assets/createTheme-Wd4QxQE0.js +8 -0
  47. package/admin/custom/assets/defaultTheme-F2iJF2G2.js +1 -0
  48. package/admin/custom/assets/hostInit-iUL-wyj1.js +1 -0
  49. package/admin/custom/assets/index-AZB1OHDH.js +1 -0
  50. package/admin/custom/assets/index-Be7j5wvd.js +1523 -0
  51. package/admin/custom/assets/index-BptSiKBK.js +55 -0
  52. package/admin/custom/assets/index-Bvwv5H7k.js +1 -0
  53. package/admin/custom/assets/index-C0RmLaAj.js +1 -0
  54. package/admin/custom/assets/index-CYc31Gwg.js +960 -0
  55. package/admin/custom/assets/index-CmJ8HzSc.js +1 -0
  56. package/admin/custom/assets/index-D0iTiVVG.js +8 -0
  57. package/admin/custom/assets/index-DNdWk-cT.js +1 -0
  58. package/admin/custom/assets/index-Dp7A3XHd.js +7 -0
  59. package/admin/custom/assets/index-YBvFYuP6.js +31 -0
  60. package/admin/custom/assets/index-huvZQhZw.js +1 -0
  61. package/admin/custom/assets/index-iRHaQfi-.js +1 -0
  62. package/admin/custom/assets/isSameWeek-DDsSIa_t.js +1 -0
  63. package/admin/custom/assets/jsx-runtime-DfVU3AZG.js +1 -0
  64. package/admin/custom/assets/leaflet-src-k2rCV-Ix.js +1 -0
  65. package/admin/custom/assets/localSharedImportMap-BRxFonIn.js +1 -0
  66. package/admin/custom/assets/useTheme-BfhDdtAr.js +1 -0
  67. package/admin/custom/assets/useTheme-DWZ6jNyq.js +1 -0
  68. package/admin/custom/assets/virtualExposes-DyedJotb.js +2 -0
  69. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BtJxKB87.js +8 -0
  70. package/admin/custom/customComponents.js +1 -2
  71. package/admin/i18n/de.json +10 -1
  72. package/admin/i18n/en.json +10 -1
  73. package/admin/i18n/es.json +10 -1
  74. package/admin/i18n/fr.json +10 -1
  75. package/admin/i18n/it.json +10 -1
  76. package/admin/i18n/nl.json +10 -1
  77. package/admin/i18n/pl.json +10 -1
  78. package/admin/i18n/pt.json +10 -1
  79. package/admin/i18n/ru.json +10 -1
  80. package/admin/i18n/uk.json +10 -1
  81. package/admin/i18n/zh-cn.json +10 -1
  82. package/admin/jsonConfig.json +195 -130
  83. package/admin/mf-manifest.json +1 -1
  84. package/admin/remoteEntry.js +1 -2
  85. package/admin/tab.html +13 -8
  86. package/build/lib/javascript.d.ts +4 -2
  87. package/build/lib/nodeModulesManagement.js +3 -2
  88. package/build/lib/nodeModulesManagement.js.map +1 -1
  89. package/build/lib/protectFs.js +27 -12
  90. package/build/lib/protectFs.js.map +1 -1
  91. package/build/lib/sandbox.js +3 -3
  92. package/build/lib/sandbox.js.map +1 -1
  93. package/build/lib/tools.js +7 -2
  94. package/build/lib/tools.js.map +1 -1
  95. package/build/main.js +236 -19
  96. package/build/main.js.map +1 -1
  97. package/build/types.d.ts +5 -0
  98. package/docs/de/README.md +75 -0
  99. package/docs/en/README.md +75 -0
  100. package/io-package.json +19 -15
  101. package/package.json +14 -14
  102. package/admin/assets/OpenAiDialog-BVH3CrDi.js +0 -36
  103. package/admin/assets/ScriptEditor-CAoVSrVf.js +0 -2
  104. package/admin/assets/ScriptEditorVanillaMonaco-Cf9lA3Q5.js +0 -1
  105. package/admin/assets/_commonjsHelpers-Cpj98o6Y.js +0 -1
  106. package/admin/assets/createSvgIcon-XLoRKyxt.js +0 -30
  107. package/admin/assets/hostInit-OBG53iVO.js +0 -2
  108. package/admin/assets/index-BDco9K7T.js +0 -942
  109. package/admin/assets/index-C96hfBFW.js +0 -16
  110. package/admin/assets/index-CFhFEZTW.js +0 -5
  111. package/admin/assets/index-Cm-iTDHo.js +0 -193
  112. package/admin/assets/index-DCTpQXgR.js +0 -1294
  113. package/admin/assets/index-DKvqhUY5.js +0 -24
  114. package/admin/assets/index-DQiceR5U.js +0 -1
  115. package/admin/assets/index-DZ3lKVw8.js +0 -1
  116. package/admin/assets/index-DcrzW8Zn.js +0 -1
  117. package/admin/assets/index-Do-nCdWy.js +0 -9
  118. package/admin/assets/inheritsLoose-tR_kcxUR.js +0 -36
  119. package/admin/assets/iobroker_javascript__loadShare__react__loadShare__-6sH5wUl6.js +0 -1
  120. package/admin/assets/iobroker_javascript__mf_v__runtimeInit__mf_v__-CMP-NJnH.js +0 -8
  121. package/admin/assets/useTheme-C2oUi01-.js +0 -1
  122. package/admin/assets/virtualExposes-BIHI7g3E.js +0 -1
  123. package/admin/custom/assets/Components-DjQ_LxKw.js +0 -1
  124. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__-DaN0pfsw.js +0 -1
  125. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__-BqzgglHd.js +0 -1
  126. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__-BNbscXK6.js +0 -1
  127. package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__-N2_tx_mJ.js +0 -1
  128. package/admin/custom/assets/ConfigCustomJavascriptSet__mf_v__runtimeInit__mf_v__-jdUmHa_i.js +0 -5
  129. package/admin/custom/assets/DefaultPropsProvider-B8ZCC-c2.js +0 -1
  130. package/admin/custom/assets/DefaultPropsProvider-DfdXSIBu.js +0 -1
  131. package/admin/custom/assets/FilledInput-CSjr0QT8.js +0 -2
  132. package/admin/custom/assets/Tabs-CiTQkBjL.js +0 -138
  133. package/admin/custom/assets/ThemeProvider-C50pIiW4.js +0 -29
  134. package/admin/custom/assets/_commonjsHelpers-CE1G-McA.js +0 -1
  135. package/admin/custom/assets/createSvgIcon-C7qUEvjp.js +0 -1
  136. package/admin/custom/assets/createTheme-Bm92JF8u.js +0 -8
  137. package/admin/custom/assets/defaultTheme-BlO0eCf6.js +0 -1
  138. package/admin/custom/assets/hostInit-BJ6gSofk.js +0 -2
  139. package/admin/custom/assets/index-4wMOc304.js +0 -1
  140. package/admin/custom/assets/index-5CTGLw4h.js +0 -55
  141. package/admin/custom/assets/index-BkjEWGjf.js +0 -1
  142. package/admin/custom/assets/index-Bym4WjyH.js +0 -908
  143. package/admin/custom/assets/index-COcxCdeX.js +0 -8
  144. package/admin/custom/assets/index-CnpybLRW.js +0 -1
  145. package/admin/custom/assets/index-Db8nkuMR.js +0 -7
  146. package/admin/custom/assets/index-DcK0RDrH.js +0 -1
  147. package/admin/custom/assets/index-Df6OaCxx.js +0 -1
  148. package/admin/custom/assets/index-Dx7rDE4p.js +0 -1
  149. package/admin/custom/assets/index-t-NMdeH5.js +0 -31
  150. package/admin/custom/assets/index-u8R8UVCf.js +0 -1393
  151. package/admin/custom/assets/jsx-runtime-C1csJtRx.js +0 -1
  152. package/admin/custom/assets/leaflet-src-DpWQqQWv.js +0 -1
  153. package/admin/custom/assets/useEnhancedEffect-aUb-5tTL.js +0 -1
  154. package/admin/custom/assets/useTheme-Cgjfsi-1.js +0 -1
  155. package/admin/custom/assets/useTheme-DFGylj2o.js +0 -1
  156. package/admin/custom/assets/virtualExposes-C_DtjFte.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"protectFs.js","sourceRoot":"","sources":["../../src/lib/protectFs.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BufferEncodingOption,\n CopyOptions,\n Dirent,\n MakeDirectoryOptions,\n Mode,\n ObjectEncodingOptions,\n OpenMode,\n PathLike,\n RmDirOptions,\n RmOptions,\n StatOptions,\n Stats,\n TimeLike,\n CopySyncOptions,\n NoParamCallback,\n PathOrFileDescriptor,\n WriteFileOptions,\n EncodingOption,\n FSWatcher,\n ReadStream,\n StatsListener,\n StatWatcher,\n WatchListener,\n WriteStream,\n BigIntStatsListener,\n WatchOptions,\n} from 'node:fs';\nimport type { Abortable } from 'node:events';\nimport type { FileHandle, FlagAndOpenMode } from 'node:fs/promises';\nimport type { URL } from 'node:url';\nimport type { Stream } from 'node:stream';\n\nimport * as nodeFS from 'node:fs';\nimport { sep, normalize, join } from 'node:path';\n\nexport default class ProtectFs {\n private readonly log: ioBroker.Logger;\n private readonly ioBrokerDataDir: string;\n public readonly promises: {\n access: (path: PathLike, mode?: number) => Promise<void>;\n cp: (source: string | URL, destination: string | URL, opts?: CopyOptions) => Promise<void>;\n readFile: (\n path: PathLike | FileHandle,\n options:\n | ({\n encoding: BufferEncoding;\n flag?: OpenMode | undefined;\n } & Abortable)\n | BufferEncoding,\n ) => Promise<string>;\n readlink: (path: PathLike, options: BufferEncodingOption) => Promise<Buffer>;\n symlink: (target: PathLike, path: PathLike, type?: string | null) => Promise<void>;\n writeFile: (\n file: PathLike | FileHandle,\n data:\n | string\n | NodeJS.ArrayBufferView\n | Iterable<string | NodeJS.ArrayBufferView>\n | AsyncIterable<string | NodeJS.ArrayBufferView>\n | Stream,\n options?:\n | (ObjectEncodingOptions & {\n mode?: Mode | undefined;\n flag?: OpenMode | undefined;\n flush?: boolean | undefined;\n } & Abortable)\n | BufferEncoding\n | null,\n ) => Promise<void>;\n unlink: (path: PathLike) => Promise<void>;\n appendFile: (\n path: PathLike | FileHandle,\n data: string | Uint8Array,\n options?:\n | (ObjectEncodingOptions & FlagAndOpenMode & { flush?: boolean | undefined })\n | BufferEncoding\n | null,\n ) => Promise<void>;\n chmod: (path: PathLike, mode: Mode) => Promise<void>;\n copyFile: (src: PathLike, dest: PathLike, mode?: number) => Promise<void>;\n rename: (oldPath: PathLike, newPath: PathLike) => Promise<void>;\n open: (path: PathLike, flags?: string | number, mode?: Mode) => Promise<FileHandle>;\n truncate: (path: PathLike, len?: number) => Promise<void>;\n stat: (path: PathLike, opts?: StatOptions) => Promise<Stats>;\n utimes: (path: PathLike, atime: TimeLike, mtime: TimeLike) => Promise<void>;\n readdir: (\n path: PathLike,\n options?: ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n ) => Promise<Dirent[]>;\n lchmod: (path: PathLike, mode: Mode) => Promise<void>;\n lchown: (path: PathLike, uid: number, gid: number) => Promise<void>;\n link: (existingPath: PathLike, newPath: PathLike) => Promise<void>;\n lstat: (path: PathLike, opts?: StatOptions) => Promise<Stats>;\n lutimes: (path: PathLike, atime: TimeLike, mtime: TimeLike) => Promise<void>;\n mkdir: (path: PathLike, options?: Mode | MakeDirectoryOptions | null) => Promise<string | undefined>;\n mkdtemp: (prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null) => Promise<string>;\n rm: (path: PathLike, options?: RmOptions) => Promise<void>;\n rmdir: (path: PathLike, options?: RmDirOptions) => Promise<void>;\n };\n public readonly constants: Record<string, number>;\n static log: ioBroker.Logger | null = null;\n static staticIoBrokerDataDir: string = '';\n\n constructor(log: ioBroker.Logger, ioBrokerDataDir: string) {\n this.ioBrokerDataDir = ioBrokerDataDir;\n ProtectFs.staticIoBrokerDataDir = ioBrokerDataDir;\n\n this.log = log || {\n silly: (message: string): void => console.log(message),\n debug: (message: string): void => console.debug(message),\n info: (message: string): void => console.info(message),\n warn: (message: string): void => console.warn(message),\n error: (message: string): void => console.error(message),\n level: 'info',\n };\n\n ProtectFs.log = this.log;\n\n this.promises = {\n access: async (path: PathLike, mode?: number): Promise<void> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.access(path, mode);\n },\n cp: async (source: string | URL, destination: string | URL, opts?: CopyOptions): Promise<void> => {\n ProtectFs.checkProtected(source, false);\n ProtectFs.checkProtected(destination, false);\n return nodeFS.promises.cp(source, destination, opts);\n },\n readFile: async (\n path: PathLike | FileHandle,\n options:\n | ({\n encoding: BufferEncoding;\n flag?: OpenMode | undefined;\n } & Abortable)\n | BufferEncoding,\n ): Promise<string> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.readFile(path, options); // async function readFile(path, options) {\n },\n readlink: async (path: PathLike, options: BufferEncodingOption): Promise<Buffer> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.readlink(path, options); // async function readlink(path, options) {\n },\n symlink: async (target: PathLike, path: PathLike, type?: string | null): Promise<void> => {\n ProtectFs.checkProtected(target, true);\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.symlink(target, path, type); // async function symlink(target, path, type_) {\n },\n writeFile: async (\n file: PathLike | FileHandle,\n data:\n | string\n | NodeJS.ArrayBufferView\n | Iterable<string | NodeJS.ArrayBufferView>\n | AsyncIterable<string | NodeJS.ArrayBufferView>\n | Stream,\n options?:\n | (ObjectEncodingOptions & {\n mode?: Mode | undefined;\n flag?: OpenMode | undefined;\n /**\n * If all data is successfully written to the file, and `flush`\n * is `true`, `filehandle.sync()` is used to flush the data.\n *\n * @default false\n */\n flush?: boolean | undefined;\n } & Abortable)\n | BufferEncoding\n | null,\n ): Promise<void> => {\n ProtectFs.checkProtected(file, true);\n return nodeFS.promises.writeFile.call(this, file, data, options); // async function writeFile(path, data, options) {\n },\n unlink: async (path: PathLike): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.unlink.call(this, path); // async function unlink(path) {\n },\n appendFile: async (\n path: PathLike | FileHandle,\n data: string | Uint8Array,\n options?:\n | (ObjectEncodingOptions & FlagAndOpenMode & { flush?: boolean | undefined })\n | BufferEncoding\n | null,\n ): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.appendFile.call(this, path, data, options); // async function appendFile(path, data, options) {\n },\n chmod: async (path: PathLike, mode: Mode): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.chmod.call(this, path, mode); // async function chmod(path, mode) {\n },\n copyFile: async (src: PathLike, dest: PathLike, mode?: number): Promise<void> => {\n ProtectFs.checkProtected(src, false);\n ProtectFs.checkProtected(dest, false);\n return nodeFS.promises.copyFile.call(this, src, dest, mode); // async function copyFile(src, dest, mode) {\n },\n rename: async (oldPath: PathLike, newPath: PathLike): Promise<void> => {\n ProtectFs.checkProtected(oldPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.promises.rename.call(this, oldPath, newPath); // async function rename(oldPath, newPath) {\n },\n open: async (path: PathLike, flags?: string | number, mode?: Mode): Promise<FileHandle> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.open.call(this, path, flags, mode); // async function open(path, flags, mode) {\n },\n truncate: async (path: PathLike, len?: number): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.truncate.call(this, path, len); // async function truncate(path, len = 0) {\n },\n stat: async (path: PathLike, opts?: StatOptions): Promise<Stats> => {\n ProtectFs.checkProtected(path, true);\n const result = await nodeFS.promises.stat.call(this, path, opts); // async function stat(path, options = { bigint: false }) {\n return result as Stats;\n },\n utimes: async (path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.utimes.call(this, path, atime, mtime); // async function utimes(path, atime, mtime) {\n },\n readdir: async (\n path: PathLike,\n options?: ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n ): Promise<Dirent[]> => {\n ProtectFs.checkProtected(path, true);\n // @ts-expect-error fix later\n return nodeFS.promises.readdir.call(this, path, options || { encoding: null, withFileTypes: true }); // async function readdir(path, options) {\n },\n lchmod: async (path: PathLike, mode: Mode): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.lchmod.call(this, path, mode); // async function lchmod(path, mode) {\n },\n lchown: async (path: PathLike, uid: number, gid: number): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.lchown.call(this, path, uid, gid); // async function lchown(path, uid, gid) {\n },\n link: async (existingPath: PathLike, newPath: PathLike): Promise<void> => {\n ProtectFs.checkProtected(existingPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.promises.link.call(this, existingPath, newPath); // async function link(existingPath, newPath) {\n },\n lstat: async (path: PathLike, opts?: StatOptions): Promise<Stats> => {\n ProtectFs.checkProtected(path, true);\n const res = await nodeFS.promises.lstat.call(this, path, opts); // async function lstat(path, options = { bigint: false }) {\n return res as Stats;\n },\n lutimes: async (path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.lutimes.call(this, path, atime, mtime); // async function lutimes(path, atime, mtime) {\n },\n mkdir: async (\n path: PathLike,\n options?: Mode | MakeDirectoryOptions | null,\n ): Promise<string | undefined> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.mkdir.call(this, path, options); // async function mkdir(path, options) {\n },\n mkdtemp: async (\n prefix: string,\n options?: ObjectEncodingOptions | BufferEncoding | null,\n ): Promise<string> => {\n ProtectFs.checkProtected(prefix, false);\n const tmp = await nodeFS.promises.mkdtemp.call(this, prefix, options); // async function mkdtemp(prefix, options) {\n return tmp.toString();\n },\n rm: async (path: PathLike, options?: RmOptions): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.rm.call(this, path, options); // async function rm(path, options) {\n },\n rmdir: async (path: PathLike, options?: RmDirOptions): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.rmdir.call(this, path, options); // async function rmdir(path, options) {\n },\n };\n\n // Add missing constants\n this.constants = nodeFS.constants;\n\n // Add missing functions\n for (const m in nodeFS) {\n if (\n typeof (nodeFS as unknown as Record<string, any>)[m] === 'function' &&\n Object.hasOwn(nodeFS, m) &&\n !Object.hasOwn(Object.getPrototypeOf(this), 'appendFile')\n ) {\n // console.debug(`Missing function in ProtectFS: ${m} - adding from node:fs`);\n // @ts-expect-error Elsewise we must implement EVERY function in fs\n this[m] = nodeFS[m];\n }\n }\n\n for (const m in nodeFS.promises) {\n if (\n typeof (nodeFS.promises as unknown as Record<string, any>)[m] === 'function' &&\n Object.hasOwn(nodeFS.promises, m) &&\n !Object.hasOwn(this.promises, m)\n ) {\n // console.debug(`Missing function in ProtectFS: ${m} - adding from node:fs/promises`);\n // @ts-expect-error Elsewise we must implement EVERY function in fs\n this.promises[m] = nodeFS.promises[m];\n }\n }\n }\n\n static checkProtected(file: PathLike | FileHandle, readOnly: boolean): void {\n if ((file as FileHandle).fd) {\n return;\n }\n const filePath = normalize((file as PathLike).toString());\n\n if (filePath.endsWith(`-data${sep}objects.json`) || filePath.endsWith(`-data${sep}objects.jsonl`)) {\n ProtectFs.log?.error(`May not read ${(file as PathLike).toString()}`);\n throw new Error('Permission denied');\n }\n if (!readOnly && filePath.startsWith(join(ProtectFs.staticIoBrokerDataDir, 'files'))) {\n ProtectFs.log?.error(`May not read ${(file as PathLike).toString()} - use writeFile instead`);\n throw new Error('Permission denied');\n }\n if (!readOnly && filePath.startsWith(`file://${join(ProtectFs.staticIoBrokerDataDir, 'files')}`)) {\n ProtectFs.log?.error(`May not read ${(file as PathLike).toString()} - use writeFile instead`);\n throw new Error('Permission denied');\n }\n }\n\n access(path: PathLike, mode?: number | NoParamCallback, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n return nodeFS.access(path, mode as number | undefined, callback);\n }\n return nodeFS.access(path, mode as NoParamCallback);\n }\n\n accessSync(path: PathLike, mode?: number): void {\n ProtectFs.checkProtected(path, true);\n return nodeFS.accessSync(path, mode);\n }\n\n cp(\n source: string | URL,\n destination: string | URL,\n opts?: CopyOptions | ((err: NodeJS.ErrnoException | null) => void),\n callback?: (err: NodeJS.ErrnoException | null) => void,\n ): void {\n ProtectFs.checkProtected(source, false);\n ProtectFs.checkProtected(destination, false);\n if (callback) {\n return nodeFS.cp(source, destination, opts as CopyOptions, callback);\n }\n if (typeof opts === 'function') {\n return nodeFS.cp(source, destination, opts);\n }\n return nodeFS.cp(source, destination, opts as (err: NodeJS.ErrnoException | null) => void);\n }\n\n cpSync(source: string | URL, destination: string | URL, opts?: CopySyncOptions): void {\n ProtectFs.checkProtected(source, false);\n ProtectFs.checkProtected(destination, false);\n return nodeFS.cpSync.call(this, source, destination, opts);\n }\n\n readFile(\n path: PathOrFileDescriptor,\n options:\n | (ObjectEncodingOptions & {\n flag?: string | undefined;\n } & Abortable)\n | BufferEncoding\n | undefined\n | null\n | ((err: NodeJS.ErrnoException | null, data: string | NonSharedBuffer) => void),\n callback?: (err: NodeJS.ErrnoException | null, data: string | NonSharedBuffer) => void,\n ): void {\n if (typeof path !== 'number') {\n ProtectFs.checkProtected(path, true);\n }\n if (typeof callback === 'function') {\n return nodeFS.readFile.call(\n this,\n path,\n options as\n | (ObjectEncodingOptions & {\n flag?: string | undefined;\n } & Abortable)\n | BufferEncoding\n | undefined\n | null,\n // @ts-expect-error readFile can accept 3 arguments too\n callback,\n );\n }\n return nodeFS.readFile.call(\n this,\n path,\n options as (err: NodeJS.ErrnoException | null, data: string | NonSharedBuffer) => void,\n );\n }\n\n readFileSync(\n path: PathOrFileDescriptor,\n options?:\n | {\n encoding: BufferEncoding;\n flag?: string | undefined;\n }\n | BufferEncoding,\n ): string | Buffer {\n if (typeof path !== 'number') {\n ProtectFs.checkProtected(path, true);\n }\n return nodeFS.readFileSync.call(this, path, options);\n }\n\n readlink(\n path: PathLike,\n options: EncodingOption | ((err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void),\n callback?: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.readlink.call(this, path, options, callback); //\n }\n return nodeFS.readlink.call(\n this,\n path,\n options as (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void,\n );\n }\n\n readlinkSync(path: PathLike, options?: EncodingOption): string | Buffer {\n ProtectFs.checkProtected(path, true);\n return nodeFS.readlinkSync.call(this, path, options);\n }\n\n symlink(\n target: PathLike,\n path: PathLike,\n type?: 'dir' | 'file' | 'junction' | null | NoParamCallback,\n callback?: NoParamCallback,\n ): void {\n ProtectFs.checkProtected(target, true);\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.symlink.call(this, target, path, type as 'dir' | 'file' | 'junction' | null, callback);\n }\n return nodeFS.symlink.call(this, target, path, type as NoParamCallback);\n }\n\n symlinkSync(target: PathLike, path: PathLike, type?: 'dir' | 'file' | 'junction' | null): void {\n ProtectFs.checkProtected(target, true);\n ProtectFs.checkProtected(path, false);\n return nodeFS.symlinkSync.call(this, target, path, type);\n }\n\n writeFile(\n file: PathLike | number,\n data: string | NodeJS.ArrayBufferView,\n options?: WriteFileOptions | NoParamCallback,\n callback?: NoParamCallback,\n ): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.writeFile.call(this, file, data, options, callback);\n }\n return nodeFS.writeFile.call(this, file, data, options as NoParamCallback);\n }\n\n writeFileSync(file: PathLike | number, data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n return nodeFS.writeFileSync.call(this, file, data, options);\n }\n\n unlink(path: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.unlink.call(this, path, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n unlinkSync(path: PathLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.unlinkSync.call(this, path);\n }\n\n appendFile(\n file: PathLike | number,\n data: string | Uint8Array,\n options?: WriteFileOptions | NoParamCallback,\n callback?: NoParamCallback,\n ): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.appendFile.call(this, file, data, options, callback);\n }\n return nodeFS.appendFile.call(this, file, data, options as NoParamCallback);\n }\n\n appendFileSync(file: PathLike | number, data: string | Uint8Array, options?: WriteFileOptions): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n return nodeFS.appendFileSync.call(this, file, data, options);\n }\n\n chmod(path: PathLike, mode: Mode, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chmod.call(this, path, mode, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n chmodSync(path: PathLike, mode: Mode): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chmodSync.call(this, path, mode);\n }\n\n chown(path: PathLike, uid: number, gid: number, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chown.call(this, path, uid, gid, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n chownSync(path: PathLike, uid: number, gid: number): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chownSync.call(this, path, uid, gid);\n }\n\n copyFile(src: PathLike, dest: PathLike, mode: number | NoParamCallback, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(src, true);\n ProtectFs.checkProtected(dest, false);\n // @ts-expect-error should work\n return nodeFS.copyFile.call(this, src, dest, mode, callback);\n }\n\n copyFileSync(src: PathLike, dest: PathLike, mode?: number): void {\n ProtectFs.checkProtected(src, true);\n ProtectFs.checkProtected(dest, false);\n return nodeFS.copyFileSync.call(this, src, dest, mode);\n }\n\n rename(oldPath: PathLike, newPath: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(oldPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.rename.call(this, oldPath, newPath, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n renameSync(oldPath: PathLike, newPath: PathLike): void {\n ProtectFs.checkProtected(oldPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.renameSync.call(this, oldPath, newPath);\n }\n\n open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void {\n ProtectFs.checkProtected(path, true);\n return nodeFS.open.call(this, path, callback);\n }\n\n openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number {\n ProtectFs.checkProtected(path, true);\n return nodeFS.openSync.call(this, path, flags, mode);\n }\n\n truncate(path: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.truncate.call(this, path, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n truncateSync(path: PathLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.truncateSync.call(this, path);\n }\n\n exists(path: PathLike, callback: (exists: boolean) => void): void {\n ProtectFs.checkProtected(path, true);\n return nodeFS.exists.call(this, path, callback);\n }\n\n existsSync(path: PathLike): boolean {\n ProtectFs.checkProtected(path, true);\n return nodeFS.existsSync.call(this, path);\n }\n\n stat(\n path: PathLike,\n options: StatOptions | undefined | ((err: NodeJS.ErrnoException | null, stats: Stats) => void),\n callback?: (err: NodeJS.ErrnoException | null, stats: Stats) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.stat.call(this, path, options as StatOptions | undefined, callback);\n }\n // @ts-expect-error should work\n return nodeFS.stat.call(this, path, options as (err: NodeJS.ErrnoException | null, stats: Stats) => void);\n }\n\n statSync(path: PathLike, options?: StatOptions): Stats {\n ProtectFs.checkProtected(path, true);\n return nodeFS.statSync.call(this, path, options);\n }\n\n utimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.utimes.call(this, path, atime, mtime, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n utimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.utimesSync.call(this, path, atime, mtime);\n }\n\n readdir(\n path: PathLike,\n options:\n | (ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n })\n | ((err: NodeJS.ErrnoException | null, files: Dirent<Buffer | string>[][]) => void),\n callback?: (err: NodeJS.ErrnoException | null, files: Dirent<Buffer | string>[]) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n return nodeFS.readdir.call(\n this,\n path,\n options as ObjectEncodingOptions & {\n encoding: 'buffer';\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n callback,\n );\n }\n // @ts-expect-error should work\n return nodeFS.readdir.call(this, path, options as (err: NodeJS.ErrnoException | null, files: Dirent[]) => void);\n }\n\n readdirSync(\n path: PathLike,\n options?: ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n ): Dirent<Buffer | string>[] {\n ProtectFs.checkProtected(path, true);\n // @ts-expect-error should work\n return nodeFS.readdirSync.call(this, path, options);\n }\n\n createReadStream(path: PathLike, options?: BufferEncoding): ReadStream {\n ProtectFs.checkProtected(path, true);\n return nodeFS.createReadStream.call(this, path, options);\n }\n\n createWriteStream(path: PathLike, options?: BufferEncoding): WriteStream {\n ProtectFs.checkProtected(path, false);\n return nodeFS.createWriteStream.call(this, path, options);\n }\n\n lchmod(path: PathLike, mode: Mode, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchmod.call(this, path, mode, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n lchmodSync(path: PathLike, mode: Mode): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchmodSync.call(this, path, mode);\n }\n\n lchown(path: PathLike, uid: number, gid: number, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchown.call(this, path, uid, gid, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n lchownSync(path: PathLike, uid: number, gid: number): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchownSync.call(this, path, uid, gid);\n }\n\n link(existingPath: PathLike, newPath: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(existingPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.link.call(this, existingPath, newPath, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n linkSync(existingPath: PathLike, newPath: PathLike): void {\n ProtectFs.checkProtected(existingPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.linkSync.call(this, existingPath, newPath);\n }\n\n lstat(\n path: PathLike,\n options: StatOptions | undefined | ((err: NodeJS.ErrnoException | null, stats: Stats) => void),\n callback?: (err: NodeJS.ErrnoException | null, stats: Stats) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.lstat.call(this, path, options as StatOptions | undefined, callback);\n }\n // @ts-expect-error should work\n return nodeFS.lstat.call(this, path, options as (err: NodeJS.ErrnoException | null, stats: Stats) => void);\n }\n\n lstatSync(path: PathLike, options?: StatOptions): Stats {\n ProtectFs.checkProtected(path, true);\n return nodeFS.lstatSync.call(this, path, options);\n }\n\n lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lutimes.call(this, path, atime, mtime, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n lutimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lutimesSync.call(this, path, atime, mtime);\n }\n\n mkdir(\n path: PathLike,\n options:\n | Mode\n | (MakeDirectoryOptions & {\n recursive: true;\n })\n | null\n | undefined\n | ((err: NodeJS.ErrnoException | null, path?: string) => void),\n callback?: (err: NodeJS.ErrnoException | null, path?: string) => void,\n ): void {\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.mkdir.call(this, path, options as MakeDirectoryOptions & { recursive?: boolean }, callback);\n }\n return nodeFS.mkdir.call(this, path, options as (err: NodeJS.ErrnoException | null, path?: string) => void);\n }\n\n mkdirSync(\n path: PathLike,\n options?: MakeDirectoryOptions & {\n recursive: true;\n },\n ): string | undefined {\n ProtectFs.checkProtected(path, false);\n return nodeFS.mkdirSync.call(this, path, options);\n }\n\n mkdtemp(\n prefix: string,\n options: EncodingOption | ((err: NodeJS.ErrnoException | null, folder: string) => void),\n callback?: (err: NodeJS.ErrnoException | null, folder: string) => void,\n ): void {\n ProtectFs.checkProtected(prefix, false);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.mkdtemp.call(this, prefix, options, callback);\n }\n return nodeFS.mkdtemp.call(\n this,\n prefix,\n options as (err: NodeJS.ErrnoException | null, folder: string) => void,\n );\n }\n\n mkdtempSync(prefix: string, options?: EncodingOption): string | Buffer {\n ProtectFs.checkProtected(prefix, false);\n return nodeFS.mkdtempSync.call(this, prefix, options);\n }\n\n rm(path: PathLike, options?: RmOptions | NoParamCallback, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n return nodeFS.rm.call(this, path, options as RmOptions, callback);\n }\n // @ts-expect-error should work\n return nodeFS.rm.call(this, path, options as NoParamCallback);\n }\n\n rmSync(path: PathLike, options?: RmOptions): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.rmSync.call(this, path, options);\n }\n\n rmdir(path: PathLike, options?: RmDirOptions | NoParamCallback, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n return nodeFS.rmdir.call(this, path, options as RmDirOptions, callback);\n }\n // @ts-expect-error should work\n return nodeFS.rmdir.call(this, path, options as NoParamCallback);\n }\n\n rmdirSync(path: PathLike, options?: RmDirOptions): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.rmdirSync.call(this, path, options);\n }\n\n watch(\n filename: PathLike,\n options?:\n | (WatchOptions & {\n encoding: 'buffer';\n })\n | 'buffer'\n | WatchListener<string>,\n listener?: WatchListener<string>,\n ): FSWatcher {\n ProtectFs.checkProtected(filename, true);\n if (typeof listener === 'function') {\n // @ts-expect-error should work\n return nodeFS.watch.call(this, filename, options as WatchOptions & { encoding: 'buffer' }, listener);\n }\n\n return nodeFS.watch.call(this, filename, options as WatchListener<string>);\n }\n\n watchFile(filename: PathLike, listener: StatsListener): StatWatcher {\n ProtectFs.checkProtected(filename, true);\n return nodeFS.watchFile.call(this, filename, listener);\n }\n\n unwatchFile(filename: PathLike, listener: StatsListener | BigIntStatsListener): void {\n ProtectFs.checkProtected(filename, true);\n return nodeFS.unwatchFile.call(this, filename, listener as BigIntStatsListener);\n }\n}\n"]}
1
+ {"version":3,"file":"protectFs.js","sourceRoot":"","sources":["../../src/lib/protectFs.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BufferEncodingOption,\n CopyOptions,\n Dirent,\n MakeDirectoryOptions,\n Mode,\n ObjectEncodingOptions,\n OpenMode,\n PathLike,\n RmDirOptions,\n RmOptions,\n StatOptions,\n Stats,\n TimeLike,\n CopySyncOptions,\n NoParamCallback,\n PathOrFileDescriptor,\n WriteFileOptions,\n EncodingOption,\n FSWatcher,\n ReadStream,\n StatsListener,\n StatWatcher,\n WatchListener,\n WriteStream,\n BigIntStatsListener,\n WatchOptions,\n} from 'node:fs';\nimport type { Abortable } from 'node:events';\nimport type { FileHandle, FlagAndOpenMode } from 'node:fs/promises';\nimport type { URL } from 'node:url';\nimport type { Stream } from 'node:stream';\n\nimport * as nodeFS from 'node:fs';\nimport { sep, normalize, join, resolve } from 'node:path';\n\nexport default class ProtectFs {\n private readonly log: ioBroker.Logger;\n private readonly ioBrokerDataDir: string;\n public readonly promises: {\n access: (path: PathLike, mode?: number) => Promise<void>;\n cp: (source: string | URL, destination: string | URL, opts?: CopyOptions) => Promise<void>;\n readFile: (\n path: PathLike | FileHandle,\n options:\n | ({\n encoding: BufferEncoding;\n flag?: OpenMode | undefined;\n } & Abortable)\n | BufferEncoding,\n ) => Promise<string>;\n readlink: (path: PathLike, options: BufferEncodingOption) => Promise<Buffer>;\n symlink: (target: PathLike, path: PathLike, type?: string | null) => Promise<void>;\n writeFile: (\n file: PathLike | FileHandle,\n data:\n | string\n | NodeJS.ArrayBufferView\n | Iterable<string | NodeJS.ArrayBufferView>\n | AsyncIterable<string | NodeJS.ArrayBufferView>\n | Stream,\n options?:\n | (ObjectEncodingOptions & {\n mode?: Mode | undefined;\n flag?: OpenMode | undefined;\n flush?: boolean | undefined;\n } & Abortable)\n | BufferEncoding\n | null,\n ) => Promise<void>;\n unlink: (path: PathLike) => Promise<void>;\n appendFile: (\n path: PathLike | FileHandle,\n data: string | Uint8Array,\n options?:\n | (ObjectEncodingOptions & FlagAndOpenMode & { flush?: boolean | undefined })\n | BufferEncoding\n | null,\n ) => Promise<void>;\n chmod: (path: PathLike, mode: Mode) => Promise<void>;\n copyFile: (src: PathLike, dest: PathLike, mode?: number) => Promise<void>;\n rename: (oldPath: PathLike, newPath: PathLike) => Promise<void>;\n open: (path: PathLike, flags?: string | number, mode?: Mode) => Promise<FileHandle>;\n truncate: (path: PathLike, len?: number) => Promise<void>;\n stat: (path: PathLike, opts?: StatOptions) => Promise<Stats>;\n utimes: (path: PathLike, atime: TimeLike, mtime: TimeLike) => Promise<void>;\n readdir: (\n path: PathLike,\n options?: ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n ) => Promise<Dirent[]>;\n lchmod: (path: PathLike, mode: Mode) => Promise<void>;\n lchown: (path: PathLike, uid: number, gid: number) => Promise<void>;\n link: (existingPath: PathLike, newPath: PathLike) => Promise<void>;\n lstat: (path: PathLike, opts?: StatOptions) => Promise<Stats>;\n lutimes: (path: PathLike, atime: TimeLike, mtime: TimeLike) => Promise<void>;\n mkdir: (path: PathLike, options?: Mode | MakeDirectoryOptions | null) => Promise<string | undefined>;\n mkdtemp: (prefix: string, options?: ObjectEncodingOptions | BufferEncoding | null) => Promise<string>;\n rm: (path: PathLike, options?: RmOptions) => Promise<void>;\n rmdir: (path: PathLike, options?: RmDirOptions) => Promise<void>;\n };\n public readonly constants: Record<string, number>;\n static log: ioBroker.Logger | null = null;\n static staticIoBrokerDataDir: string = '';\n\n constructor(log: ioBroker.Logger, ioBrokerDataDir: string) {\n this.ioBrokerDataDir = ioBrokerDataDir;\n ProtectFs.staticIoBrokerDataDir = ioBrokerDataDir;\n\n this.log = log || {\n silly: (message: string): void => console.log(message),\n debug: (message: string): void => console.debug(message),\n info: (message: string): void => console.info(message),\n warn: (message: string): void => console.warn(message),\n error: (message: string): void => console.error(message),\n level: 'info',\n };\n\n ProtectFs.log = this.log;\n\n this.promises = {\n access: async (path: PathLike, mode?: number): Promise<void> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.access(path, mode);\n },\n cp: async (source: string | URL, destination: string | URL, opts?: CopyOptions): Promise<void> => {\n ProtectFs.checkProtected(source, false);\n ProtectFs.checkProtected(destination, false);\n return nodeFS.promises.cp(source, destination, opts);\n },\n readFile: async (\n path: PathLike | FileHandle,\n options:\n | ({\n encoding: BufferEncoding;\n flag?: OpenMode | undefined;\n } & Abortable)\n | BufferEncoding,\n ): Promise<string> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.readFile(path, options); // async function readFile(path, options) {\n },\n readlink: async (path: PathLike, options: BufferEncodingOption): Promise<Buffer> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.readlink(path, options); // async function readlink(path, options) {\n },\n symlink: async (target: PathLike, path: PathLike, type?: string | null): Promise<void> => {\n ProtectFs.checkProtected(target, true);\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.symlink(target, path, type); // async function symlink(target, path, type_) {\n },\n writeFile: async (\n file: PathLike | FileHandle,\n data:\n | string\n | NodeJS.ArrayBufferView\n | Iterable<string | NodeJS.ArrayBufferView>\n | AsyncIterable<string | NodeJS.ArrayBufferView>\n | Stream,\n options?:\n | (ObjectEncodingOptions & {\n mode?: Mode | undefined;\n flag?: OpenMode | undefined;\n /**\n * If all data is successfully written to the file, and `flush`\n * is `true`, `filehandle.sync()` is used to flush the data.\n *\n * @default false\n */\n flush?: boolean | undefined;\n } & Abortable)\n | BufferEncoding\n | null,\n ): Promise<void> => {\n ProtectFs.checkProtected(file, true);\n return nodeFS.promises.writeFile.call(this, file, data, options); // async function writeFile(path, data, options) {\n },\n unlink: async (path: PathLike): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.unlink.call(this, path); // async function unlink(path) {\n },\n appendFile: async (\n path: PathLike | FileHandle,\n data: string | Uint8Array,\n options?:\n | (ObjectEncodingOptions & FlagAndOpenMode & { flush?: boolean | undefined })\n | BufferEncoding\n | null,\n ): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.appendFile.call(this, path, data, options); // async function appendFile(path, data, options) {\n },\n chmod: async (path: PathLike, mode: Mode): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.chmod.call(this, path, mode); // async function chmod(path, mode) {\n },\n copyFile: async (src: PathLike, dest: PathLike, mode?: number): Promise<void> => {\n ProtectFs.checkProtected(src, false);\n ProtectFs.checkProtected(dest, false);\n return nodeFS.promises.copyFile.call(this, src, dest, mode); // async function copyFile(src, dest, mode) {\n },\n rename: async (oldPath: PathLike, newPath: PathLike): Promise<void> => {\n ProtectFs.checkProtected(oldPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.promises.rename.call(this, oldPath, newPath); // async function rename(oldPath, newPath) {\n },\n open: async (path: PathLike, flags?: string | number, mode?: Mode): Promise<FileHandle> => {\n ProtectFs.checkProtected(path, true);\n return nodeFS.promises.open.call(this, path, flags, mode); // async function open(path, flags, mode) {\n },\n truncate: async (path: PathLike, len?: number): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.truncate.call(this, path, len); // async function truncate(path, len = 0) {\n },\n stat: async (path: PathLike, opts?: StatOptions): Promise<Stats> => {\n ProtectFs.checkProtected(path, true);\n const result = await nodeFS.promises.stat.call(this, path, opts); // async function stat(path, options = { bigint: false }) {\n return result as Stats;\n },\n utimes: async (path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.utimes.call(this, path, atime, mtime); // async function utimes(path, atime, mtime) {\n },\n readdir: async (\n path: PathLike,\n options?: ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n ): Promise<Dirent[]> => {\n ProtectFs.checkProtected(path, true);\n // @ts-expect-error fix later\n return nodeFS.promises.readdir.call(this, path, options || { encoding: null, withFileTypes: true }); // async function readdir(path, options) {\n },\n lchmod: async (path: PathLike, mode: Mode): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.lchmod.call(this, path, mode); // async function lchmod(path, mode) {\n },\n lchown: async (path: PathLike, uid: number, gid: number): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.lchown.call(this, path, uid, gid); // async function lchown(path, uid, gid) {\n },\n link: async (existingPath: PathLike, newPath: PathLike): Promise<void> => {\n ProtectFs.checkProtected(existingPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.promises.link.call(this, existingPath, newPath); // async function link(existingPath, newPath) {\n },\n lstat: async (path: PathLike, opts?: StatOptions): Promise<Stats> => {\n ProtectFs.checkProtected(path, true);\n const res = await nodeFS.promises.lstat.call(this, path, opts); // async function lstat(path, options = { bigint: false }) {\n return res as Stats;\n },\n lutimes: async (path: PathLike, atime: TimeLike, mtime: TimeLike): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.lutimes.call(this, path, atime, mtime); // async function lutimes(path, atime, mtime) {\n },\n mkdir: async (\n path: PathLike,\n options?: Mode | MakeDirectoryOptions | null,\n ): Promise<string | undefined> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.mkdir.call(this, path, options); // async function mkdir(path, options) {\n },\n mkdtemp: async (\n prefix: string,\n options?: ObjectEncodingOptions | BufferEncoding | null,\n ): Promise<string> => {\n ProtectFs.checkProtected(prefix, false);\n const tmp = await nodeFS.promises.mkdtemp.call(this, prefix, options); // async function mkdtemp(prefix, options) {\n return tmp.toString();\n },\n rm: async (path: PathLike, options?: RmOptions): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.rm.call(this, path, options); // async function rm(path, options) {\n },\n rmdir: async (path: PathLike): Promise<void> => {\n ProtectFs.checkProtected(path, false);\n return nodeFS.promises.rmdir.call(this, path); // async function rmdir(path, options) {\n },\n };\n\n // Add missing constants\n this.constants = nodeFS.constants;\n\n // Add missing functions\n for (const m in nodeFS) {\n if (\n typeof (nodeFS as unknown as Record<string, any>)[m] === 'function' &&\n Object.hasOwn(nodeFS, m) &&\n !Object.hasOwn(Object.getPrototypeOf(this), 'appendFile')\n ) {\n // console.debug(`Missing function in ProtectFS: ${m} - adding from node:fs`);\n // @ts-expect-error Elsewise we must implement EVERY function in fs\n this[m] = nodeFS[m];\n }\n }\n\n for (const m in nodeFS.promises) {\n if (\n typeof (nodeFS.promises as unknown as Record<string, any>)[m] === 'function' &&\n Object.hasOwn(nodeFS.promises, m) &&\n !Object.hasOwn(this.promises, m)\n ) {\n // console.debug(`Missing function in ProtectFS: ${m} - adding from node:fs/promises`);\n // @ts-expect-error Elsewise we must implement EVERY function in fs\n this.promises[m] = nodeFS.promises[m];\n }\n }\n }\n\n static checkProtected(file: PathLike | FileHandle, readOnly: boolean): void {\n if ((file as FileHandle).fd) {\n // FileHandle objects bypass path checks — they were already validated at open() time.\n // This is safe because the sandbox only exposes the wrapped fs where open() is protected.\n return;\n }\n let filePath: string;\n try {\n // Use resolve() instead of normalize() to get an absolute path and eliminate .. traversals.\n // Then try realpath to resolve symlinks — fall back to resolved path if file doesn't exist yet.\n const resolved = resolve((file as PathLike).toString());\n try {\n filePath = nodeFS.realpathSync(resolved);\n } catch {\n filePath = resolved;\n }\n } catch {\n filePath = normalize((file as PathLike).toString());\n }\n\n if (filePath.endsWith(`-data${sep}objects.json`) || filePath.endsWith(`-data${sep}objects.jsonl`)) {\n ProtectFs.log?.error(`May not access ${(file as PathLike).toString()}`);\n throw new Error('Permission denied');\n }\n if (!readOnly && filePath.startsWith(join(ProtectFs.staticIoBrokerDataDir, 'files'))) {\n ProtectFs.log?.error(`May not write ${(file as PathLike).toString()} - use writeFile instead`);\n throw new Error('Permission denied');\n }\n if (!readOnly && filePath.startsWith(`file://${join(ProtectFs.staticIoBrokerDataDir, 'files')}`)) {\n ProtectFs.log?.error(`May not write ${(file as PathLike).toString()} - use writeFile instead`);\n throw new Error('Permission denied');\n }\n }\n\n access(path: PathLike, mode?: number | NoParamCallback, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n return nodeFS.access(path, mode as number | undefined, callback);\n }\n return nodeFS.access(path, mode as NoParamCallback);\n }\n\n accessSync(path: PathLike, mode?: number): void {\n ProtectFs.checkProtected(path, true);\n return nodeFS.accessSync(path, mode);\n }\n\n cp(\n source: string | URL,\n destination: string | URL,\n opts?: CopyOptions | ((err: NodeJS.ErrnoException | null) => void),\n callback?: (err: NodeJS.ErrnoException | null) => void,\n ): void {\n ProtectFs.checkProtected(source, false);\n ProtectFs.checkProtected(destination, false);\n if (callback) {\n return nodeFS.cp(source, destination, opts as CopyOptions, callback);\n }\n if (typeof opts === 'function') {\n return nodeFS.cp(source, destination, opts);\n }\n return nodeFS.cp(source, destination, opts as (err: NodeJS.ErrnoException | null) => void);\n }\n\n cpSync(source: string | URL, destination: string | URL, opts?: CopySyncOptions): void {\n ProtectFs.checkProtected(source, false);\n ProtectFs.checkProtected(destination, false);\n return nodeFS.cpSync.call(this, source, destination, opts);\n }\n\n readFile(\n path: PathOrFileDescriptor,\n options:\n | (ObjectEncodingOptions & {\n flag?: string | undefined;\n } & Abortable)\n | BufferEncoding\n | undefined\n | null\n | ((err: NodeJS.ErrnoException | null, data: string | NonSharedBuffer) => void),\n callback?: (err: NodeJS.ErrnoException | null, data: string | NonSharedBuffer) => void,\n ): void {\n if (typeof path !== 'number') {\n ProtectFs.checkProtected(path, true);\n }\n if (typeof callback === 'function') {\n return nodeFS.readFile.call(\n this,\n path,\n options as\n | (ObjectEncodingOptions & {\n flag?: string | undefined;\n } & Abortable)\n | BufferEncoding\n | undefined\n | null,\n // @ts-expect-error readFile can accept 3 arguments too\n callback,\n );\n }\n return nodeFS.readFile.call(\n this,\n path,\n options as (err: NodeJS.ErrnoException | null, data: string | NonSharedBuffer) => void,\n );\n }\n\n readFileSync(\n path: PathOrFileDescriptor,\n options?:\n | {\n encoding: BufferEncoding;\n flag?: string | undefined;\n }\n | BufferEncoding,\n ): string | Buffer {\n if (typeof path !== 'number') {\n ProtectFs.checkProtected(path, true);\n }\n return nodeFS.readFileSync.call(this, path, options);\n }\n\n readlink(\n path: PathLike,\n options: EncodingOption | ((err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void),\n callback?: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.readlink.call(this, path, options, callback); //\n }\n return nodeFS.readlink.call(\n this,\n path,\n options as (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void,\n );\n }\n\n readlinkSync(path: PathLike, options?: EncodingOption): string | Buffer {\n ProtectFs.checkProtected(path, true);\n return nodeFS.readlinkSync.call(this, path, options);\n }\n\n symlink(\n target: PathLike,\n path: PathLike,\n type?: 'dir' | 'file' | 'junction' | null | NoParamCallback,\n callback?: NoParamCallback,\n ): void {\n ProtectFs.checkProtected(target, true);\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.symlink.call(this, target, path, type as 'dir' | 'file' | 'junction' | null, callback);\n }\n return nodeFS.symlink.call(this, target, path, type as NoParamCallback);\n }\n\n symlinkSync(target: PathLike, path: PathLike, type?: 'dir' | 'file' | 'junction' | null): void {\n ProtectFs.checkProtected(target, true);\n ProtectFs.checkProtected(path, false);\n return nodeFS.symlinkSync.call(this, target, path, type);\n }\n\n writeFile(\n file: PathLike | number,\n data: string | NodeJS.ArrayBufferView,\n options?: WriteFileOptions | NoParamCallback,\n callback?: NoParamCallback,\n ): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.writeFile.call(this, file, data, options, callback);\n }\n return nodeFS.writeFile.call(this, file, data, options as NoParamCallback);\n }\n\n writeFileSync(file: PathLike | number, data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n return nodeFS.writeFileSync.call(this, file, data, options);\n }\n\n unlink(path: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.unlink.call(this, path, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n unlinkSync(path: PathLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.unlinkSync.call(this, path);\n }\n\n appendFile(\n file: PathLike | number,\n data: string | Uint8Array,\n options?: WriteFileOptions | NoParamCallback,\n callback?: NoParamCallback,\n ): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.appendFile.call(this, file, data, options, callback);\n }\n return nodeFS.appendFile.call(this, file, data, options as NoParamCallback);\n }\n\n appendFileSync(file: PathLike | number, data: string | Uint8Array, options?: WriteFileOptions): void {\n if (typeof file !== 'number') {\n ProtectFs.checkProtected(file, false);\n }\n return nodeFS.appendFileSync.call(this, file, data, options);\n }\n\n chmod(path: PathLike, mode: Mode, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chmod.call(this, path, mode, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n chmodSync(path: PathLike, mode: Mode): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chmodSync.call(this, path, mode);\n }\n\n chown(path: PathLike, uid: number, gid: number, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chown.call(this, path, uid, gid, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n chownSync(path: PathLike, uid: number, gid: number): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.chownSync.call(this, path, uid, gid);\n }\n\n copyFile(src: PathLike, dest: PathLike, mode: number | NoParamCallback, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(src, true);\n ProtectFs.checkProtected(dest, false);\n // @ts-expect-error should work\n return nodeFS.copyFile.call(this, src, dest, mode, callback);\n }\n\n copyFileSync(src: PathLike, dest: PathLike, mode?: number): void {\n ProtectFs.checkProtected(src, true);\n ProtectFs.checkProtected(dest, false);\n return nodeFS.copyFileSync.call(this, src, dest, mode);\n }\n\n rename(oldPath: PathLike, newPath: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(oldPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.rename.call(this, oldPath, newPath, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n renameSync(oldPath: PathLike, newPath: PathLike): void {\n ProtectFs.checkProtected(oldPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.renameSync.call(this, oldPath, newPath);\n }\n\n open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void {\n ProtectFs.checkProtected(path, true);\n return nodeFS.open.call(this, path, callback);\n }\n\n openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number {\n ProtectFs.checkProtected(path, true);\n return nodeFS.openSync.call(this, path, flags, mode);\n }\n\n truncate(path: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.truncate.call(this, path, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n truncateSync(path: PathLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.truncateSync.call(this, path);\n }\n\n exists(path: PathLike, callback: (exists: boolean) => void): void {\n ProtectFs.checkProtected(path, true);\n return nodeFS.exists.call(this, path, callback);\n }\n\n existsSync(path: PathLike): boolean {\n ProtectFs.checkProtected(path, true);\n return nodeFS.existsSync.call(this, path);\n }\n\n stat(\n path: PathLike,\n options: StatOptions | undefined | ((err: NodeJS.ErrnoException | null, stats: Stats) => void),\n callback?: (err: NodeJS.ErrnoException | null, stats: Stats) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.stat.call(this, path, options as StatOptions | undefined, callback);\n }\n // @ts-expect-error should work\n return nodeFS.stat.call(this, path, options as (err: NodeJS.ErrnoException | null, stats: Stats) => void);\n }\n\n statSync(path: PathLike, options?: StatOptions): Stats {\n ProtectFs.checkProtected(path, true);\n return nodeFS.statSync.call(this, path, options);\n }\n\n utimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.utimes.call(this, path, atime, mtime, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n utimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.utimesSync.call(this, path, atime, mtime);\n }\n\n readdir(\n path: PathLike,\n options:\n | (ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n })\n | ((err: NodeJS.ErrnoException | null, files: Dirent<Buffer | string>[][]) => void),\n callback?: (err: NodeJS.ErrnoException | null, files: Dirent<Buffer | string>[]) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n return nodeFS.readdir.call(\n this,\n path,\n options as ObjectEncodingOptions & {\n encoding: 'buffer';\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n callback,\n );\n }\n // @ts-expect-error should work\n return nodeFS.readdir.call(this, path, options as (err: NodeJS.ErrnoException | null, files: Dirent[]) => void);\n }\n\n readdirSync(\n path: PathLike,\n options?: ObjectEncodingOptions & {\n withFileTypes: true;\n recursive?: boolean | undefined;\n },\n ): Dirent<Buffer | string>[] {\n ProtectFs.checkProtected(path, true);\n // @ts-expect-error should work\n return nodeFS.readdirSync.call(this, path, options);\n }\n\n createReadStream(path: PathLike, options?: BufferEncoding): ReadStream {\n ProtectFs.checkProtected(path, true);\n return nodeFS.createReadStream.call(this, path, options);\n }\n\n createWriteStream(path: PathLike, options?: BufferEncoding): WriteStream {\n ProtectFs.checkProtected(path, false);\n return nodeFS.createWriteStream.call(this, path, options);\n }\n\n lchmod(path: PathLike, mode: Mode, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchmod.call(this, path, mode, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n lchmodSync(path: PathLike, mode: Mode): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchmodSync.call(this, path, mode);\n }\n\n lchown(path: PathLike, uid: number, gid: number, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchown.call(this, path, uid, gid, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n lchownSync(path: PathLike, uid: number, gid: number): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lchownSync.call(this, path, uid, gid);\n }\n\n link(existingPath: PathLike, newPath: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(existingPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.link.call(this, existingPath, newPath, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n linkSync(existingPath: PathLike, newPath: PathLike): void {\n ProtectFs.checkProtected(existingPath, false);\n ProtectFs.checkProtected(newPath, false);\n return nodeFS.linkSync.call(this, existingPath, newPath);\n }\n\n lstat(\n path: PathLike,\n options: StatOptions | undefined | ((err: NodeJS.ErrnoException | null, stats: Stats) => void),\n callback?: (err: NodeJS.ErrnoException | null, stats: Stats) => void,\n ): void {\n ProtectFs.checkProtected(path, true);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.lstat.call(this, path, options as StatOptions | undefined, callback);\n }\n // @ts-expect-error should work\n return nodeFS.lstat.call(this, path, options as (err: NodeJS.ErrnoException | null, stats: Stats) => void);\n }\n\n lstatSync(path: PathLike, options?: StatOptions): Stats {\n ProtectFs.checkProtected(path, true);\n return nodeFS.lstatSync.call(this, path, options);\n }\n\n lutimes(path: PathLike, atime: TimeLike, mtime: TimeLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lutimes.call(this, path, atime, mtime, callback || ((_err: NodeJS.ErrnoException | null) => {}));\n }\n\n lutimesSync(path: PathLike, atime: TimeLike, mtime: TimeLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.lutimesSync.call(this, path, atime, mtime);\n }\n\n mkdir(\n path: PathLike,\n options:\n | Mode\n | (MakeDirectoryOptions & {\n recursive: true;\n })\n | null\n | undefined\n | ((err: NodeJS.ErrnoException | null, path?: string) => void),\n callback?: (err: NodeJS.ErrnoException | null, path?: string) => void,\n ): void {\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.mkdir.call(this, path, options as MakeDirectoryOptions & { recursive?: boolean }, callback);\n }\n return nodeFS.mkdir.call(this, path, options as (err: NodeJS.ErrnoException | null, path?: string) => void);\n }\n\n mkdirSync(\n path: PathLike,\n options?: MakeDirectoryOptions & {\n recursive: true;\n },\n ): string | undefined {\n ProtectFs.checkProtected(path, false);\n return nodeFS.mkdirSync.call(this, path, options);\n }\n\n mkdtemp(\n prefix: string,\n options: EncodingOption | ((err: NodeJS.ErrnoException | null, folder: string) => void),\n callback?: (err: NodeJS.ErrnoException | null, folder: string) => void,\n ): void {\n ProtectFs.checkProtected(prefix, false);\n if (typeof callback === 'function') {\n // @ts-expect-error should work\n return nodeFS.mkdtemp.call(this, prefix, options, callback);\n }\n return nodeFS.mkdtemp.call(\n this,\n prefix,\n options as (err: NodeJS.ErrnoException | null, folder: string) => void,\n );\n }\n\n mkdtempSync(prefix: string, options?: EncodingOption): string | Buffer {\n ProtectFs.checkProtected(prefix, false);\n return nodeFS.mkdtempSync.call(this, prefix, options);\n }\n\n rm(path: PathLike, options?: RmOptions | NoParamCallback, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n return nodeFS.rm.call(this, path, options as RmOptions, callback);\n }\n // @ts-expect-error should work\n return nodeFS.rm.call(this, path, options as NoParamCallback);\n }\n\n rmSync(path: PathLike, options?: RmOptions): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.rmSync.call(this, path, options);\n }\n\n rmdir(path: PathLike, callback?: NoParamCallback): void {\n ProtectFs.checkProtected(path, false);\n if (typeof callback === 'function') {\n return nodeFS.rmdir.call(this, path, callback);\n }\n return nodeFS.rmdirSync.call(this, path);\n }\n\n rmdirSync(path: PathLike): void {\n ProtectFs.checkProtected(path, false);\n return nodeFS.rmdirSync.call(this, path);\n }\n\n watch(\n filename: PathLike,\n options?:\n | (WatchOptions & {\n encoding: 'buffer';\n })\n | 'buffer'\n | WatchListener<string>,\n listener?: WatchListener<string>,\n ): FSWatcher {\n ProtectFs.checkProtected(filename, true);\n if (typeof listener === 'function') {\n // @ts-expect-error should work\n return nodeFS.watch.call(this, filename, options as WatchOptions & { encoding: 'buffer' }, listener);\n }\n\n return nodeFS.watch.call(this, filename, options as WatchListener<string>);\n }\n\n watchFile(filename: PathLike, listener: StatsListener): StatWatcher {\n ProtectFs.checkProtected(filename, true);\n return nodeFS.watchFile.call(this, filename, listener);\n }\n\n unwatchFile(filename: PathLike, listener: StatsListener | BigIntStatsListener): void {\n ProtectFs.checkProtected(filename, true);\n return nodeFS.unwatchFile.call(this, filename, listener as BigIntStatsListener);\n }\n}\n"]}
@@ -1179,7 +1179,7 @@ function sandBox(script, name, verbose, debug, context) {
1179
1179
  options = {};
1180
1180
  }
1181
1181
  const config = {
1182
- ...(0, tools_1.getHttpRequestConfig)(url, options),
1182
+ ...(0, tools_1.getHttpRequestConfig)(url, options, context.allowSelfSignedCerts),
1183
1183
  method: 'get',
1184
1184
  };
1185
1185
  if (sandbox.verbose) {
@@ -1240,7 +1240,7 @@ function sandBox(script, name, verbose, debug, context) {
1240
1240
  options = {};
1241
1241
  }
1242
1242
  const config = {
1243
- ...(0, tools_1.getHttpRequestConfig)(url, options),
1243
+ ...(0, tools_1.getHttpRequestConfig)(url, options, context.allowSelfSignedCerts),
1244
1244
  method: 'post',
1245
1245
  data,
1246
1246
  };
@@ -2204,7 +2204,7 @@ function sandBox(script, name, verbose, debug, context) {
2204
2204
  if (timers[_id_][ttt].id === id) {
2205
2205
  return {
2206
2206
  timerId: id,
2207
- left: timers[_id_][ttt].delay - (now - timers[id][ttt].ts),
2207
+ left: timers[_id_][ttt].delay - (now - timers[_id_][ttt].ts),
2208
2208
  delay: timers[_id_][ttt].delay,
2209
2209
  val: timers[_id_][ttt].val,
2210
2210
  ack: timers[_id_][ttt].ack,