iobroker.javascript 9.3.1 → 10.0.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.
- package/README.md +5 -5
- package/admin/assets/AiChatPanel-p0KAg6Cs.js +237 -0
- package/admin/assets/AiDatapointProvider-DzFpUKkT.js +2 -0
- package/admin/assets/AiDiffView-BPTLnNx1.js +1 -0
- package/admin/assets/AiInlineProvider-CaHd2G2Q.js +5 -0
- package/admin/assets/AiScriptAnalyzer--BHML2rN.js +9 -0
- package/admin/assets/BlocklyEditor-CAjVMhYT.js +81 -0
- package/admin/assets/ContextWrapper-BVc8wTK_.css +1 -0
- package/admin/assets/ContextWrapper-D9CrnNKs.js +127 -0
- package/admin/assets/Debugger-SjROokFI.js +15 -0
- package/admin/assets/Error-DDfrxAt2.js +1 -0
- package/admin/assets/Import-DpTg1Jow.js +1 -0
- package/admin/assets/RulesEditor-BSRFWpEm.css +1 -0
- package/admin/assets/RulesEditor-D0hgrcBc.js +1 -0
- package/admin/assets/ScriptEditor-BGIuoNei.js +2 -0
- package/admin/assets/ScriptEditorVanillaMonaco-DyMQtoTQ.js +3 -0
- package/admin/assets/_virtual_mf-localSharedImportMap___mfe_internal__iobroker_javascript__mf_owner__1-DWJotR1B.js +1 -0
- package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-CxICLr5Z.js +1243 -0
- package/admin/assets/_virtual_mf___mfe_internal__iobroker_javascript__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-BBAXJaqI.js +9 -0
- package/admin/assets/aiCodeLensProvider-hyAmut0e.js +4 -0
- package/admin/assets/aiPromptBuilder-Bs27qOHT.js +7 -0
- package/admin/assets/applyCodeEdit-D3nb7erO.js +1 -0
- package/admin/assets/blocklyDarkTheme-DEiAX5DT.js +1 -0
- package/admin/assets/cronHoverProvider-pKJkSevo.js +2 -0
- package/admin/assets/dist-uw5orDgd.js +4 -0
- package/admin/assets/{docs-compact-CKNGiYh2.js → docs-compact-D7rpMc7r.js} +2 -2
- package/admin/assets/hostInit-BFg5u9hY.js +1 -0
- package/admin/assets/index-B1gICjdq.js +192 -0
- package/admin/assets/index-BHhhebRG.css +1 -0
- package/admin/assets/inlineChatWidget-ZaisTOLh.js +2 -0
- package/admin/assets/inlineDiffController-hTwHHqcc.js +16 -0
- package/admin/assets/mf-entry-bootstrap-0-d6052b31.js +36 -0
- package/admin/assets/mjs-DWqivHEk.js +90 -0
- package/admin/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/admin/assets/stateHoverProvider-C7DawIs-.js +9 -0
- package/admin/assets/virtualExposes-Ed0lGq7k.js +1 -0
- package/admin/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__iobroker_javascript__remoteEntry_js-BYs71IQF.js +1 -0
- package/admin/assets/virtual_mf-exposes___mfe_internal__iobroker_javascript__remoteEntry_js-DnnXQRkG.js +1 -0
- package/admin/assets/vite-preload-helper-B7qeedMF.js +1 -0
- package/admin/custom/assets/Components-BrDyDHXh.js +1 -0
- package/admin/custom/assets/Components-DftM8alF.css +1 -0
- package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1-CyYJM2-v.js +1 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BdzCssLn.js +1 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-CGb5Cofy.js +1 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-BVCIAgbo.js +1243 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-BkB0anQX.js +1494 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare__leaflet__loadShare__.js-h-rCw3iz.js +1 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-BotqDuw-.js +9 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__prebuild__date_mf_2_fns__prebuild__-Cb5TR7FB.js +1 -0
- package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomJavascriptSet__mf_owner__1__prebuild__leaflet__prebuild__-DARUoA03.js +1 -0
- package/admin/custom/assets/hostInit-DJx2uXXy.js +1 -0
- package/admin/custom/assets/index-uEKAoVT7.js +1 -0
- package/admin/custom/assets/lib-Yj8cfN0A.js +3 -0
- package/admin/custom/assets/mf-entry-bootstrap-0-77793feb.js +36 -0
- package/admin/custom/assets/rolldown-runtime-BcKkbAw3.js +1 -0
- package/admin/custom/assets/setYear-DJ9FbdkO.js +1 -0
- package/admin/custom/assets/virtualExposes-CxDjLoYu.js +1 -0
- package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-BU-ugy_7.js +1 -0
- package/admin/custom/assets/virtual_mf-exposes-ssr___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-BEfZbrf7.js +2 -0
- package/admin/custom/assets/virtual_mf-exposes___mfe_internal__ConfigCustomJavascriptSet__customComponents_js-CTeZ0Jpm.js +2 -0
- package/admin/custom/assets/vite-preload-helper-B7qeedMF.js +1 -0
- package/admin/custom/customComponents.js +1 -1
- package/admin/jsonConfig.json +1 -1
- package/admin/mf-manifest.json +1 -1
- package/admin/mf-stats.json +1 -0
- package/admin/remoteEntry.js +1 -1
- package/admin/tab.html +12 -17
- package/build/lib/debugger.js +1 -1
- package/build/lib/debugger.js.map +1 -1
- package/build/lib/eventObj.js.map +1 -1
- package/build/lib/inspect.js.map +1 -1
- package/build/lib/javascript.d.ts +18 -19
- package/build/lib/nodeModulesManagement.js +3 -1
- package/build/lib/nodeModulesManagement.js.map +1 -1
- package/build/lib/protectFs.js.map +1 -1
- package/build/lib/sandbox.js +84 -31
- package/build/lib/sandbox.js.map +1 -1
- package/build/lib/scheduler.js.map +1 -1
- package/build/lib/tools.js +1 -1
- package/build/lib/tools.js.map +1 -1
- package/build/lib/typescriptSettings.js +16 -10
- package/build/lib/typescriptSettings.js.map +1 -1
- package/build/lib/typescriptTools.js +2 -2
- package/build/lib/typescriptTools.js.map +1 -1
- package/build/main.js +7 -4
- package/build/main.js.map +1 -1
- package/build/src/lib/aiProviderResolver.js +107 -0
- package/build/src/lib/aiProviderResolver.js.map +1 -0
- package/build/src/lib/anthropicAdapter.js +175 -0
- package/build/src/lib/anthropicAdapter.js.map +1 -0
- package/build/src/lib/consts.js +346 -0
- package/build/src/lib/consts.js.map +1 -0
- package/build/src/lib/convert.js +121 -0
- package/build/src/lib/convert.js.map +1 -0
- package/build/src/lib/crypto.js +32 -0
- package/build/src/lib/crypto.js.map +1 -0
- package/build/src/lib/debug.js +163 -0
- package/build/src/lib/debug.js.map +1 -0
- package/build/src/lib/debugger.js +1135 -0
- package/build/src/lib/debugger.js.map +1 -0
- package/build/src/lib/eventObj.js +194 -0
- package/build/src/lib/eventObj.js.map +1 -0
- package/build/src/lib/inspect.js +728 -0
- package/build/src/lib/inspect.js.map +1 -0
- package/build/src/lib/mirror.js +634 -0
- package/build/src/lib/mirror.js.map +1 -0
- package/build/src/lib/nodeModulesManagement.js +26 -0
- package/build/src/lib/nodeModulesManagement.js.map +1 -0
- package/build/src/lib/patternCompareFunctions.js +293 -0
- package/build/src/lib/patternCompareFunctions.js.map +1 -0
- package/build/src/lib/protectFs.js +554 -0
- package/build/src/lib/protectFs.js.map +1 -0
- package/build/src/lib/sandbox.js +4897 -0
- package/build/src/lib/sandbox.js.map +1 -0
- package/build/src/lib/scheduler.js +555 -0
- package/build/src/lib/scheduler.js.map +1 -0
- package/build/src/lib/tools.js +188 -0
- package/build/src/lib/tools.js.map +1 -0
- package/build/src/lib/typescriptSettings.js +39 -0
- package/build/src/lib/typescriptSettings.js.map +1 -0
- package/build/src/lib/typescriptTools.js +435 -0
- package/build/src/lib/typescriptTools.js.map +1 -0
- package/build/src/lib/utils.js +66 -0
- package/build/src/lib/utils.js.map +1 -0
- package/build/src/lib/words.js +76 -0
- package/build/src/lib/words.js.map +1 -0
- package/build/src/main.js +3414 -0
- package/build/src/main.js.map +1 -0
- package/build/types.d.ts +2 -10
- package/io-package.json +15 -15
- package/package.json +15 -16
- package/admin/assets/AiChatPanel-C3bIw_D5.js +0 -317
- package/admin/assets/AiDatapointProvider-B0i3I5Fm.js +0 -2
- package/admin/assets/AiDiffView-RPozjjHf.js +0 -1
- package/admin/assets/AiInlineProvider-DkgjVSFQ.js +0 -7
- package/admin/assets/Save-CkuNSiWL.js +0 -1
- package/admin/assets/ScriptEditor-8UU88tT5.js +0 -2
- package/admin/assets/ScriptEditorVanillaMonaco-Bn8xJ3LV.js +0 -3
- package/admin/assets/applyCodeEdit-BdRnbz2g.js +0 -1
- package/admin/assets/createSvgIcon-DYs_tNrE.js +0 -8
- package/admin/assets/cronHoverProvider-Bg0Vz-1E.js +0 -2
- package/admin/assets/hostInit-LzITLWDa.js +0 -1
- package/admin/assets/index-45IwpC7_.js +0 -1
- package/admin/assets/index-BCK6q-N6.css +0 -1
- package/admin/assets/index-BTsjunTt.css +0 -1
- package/admin/assets/index-BkyLyaYT.js +0 -8
- package/admin/assets/index-C0ZnUCQf.js +0 -990
- package/admin/assets/index-CO9RA-Wq.js +0 -1267
- package/admin/assets/index-CRGWWpGb.js +0 -1
- package/admin/assets/index-CVZSzCXy.js +0 -1
- package/admin/assets/index-CsyuIWlD.js +0 -16
- package/admin/assets/index-Dsh1HfIY.js +0 -1
- package/admin/assets/index-dN73sbyQ.js +0 -193
- package/admin/assets/index-wHNMOf-c.js +0 -5
- package/admin/assets/inheritsLoose-CIXm_zPk.js +0 -29
- package/admin/assets/inlineChatWidget-Cu6rb4Ar.js +0 -2
- package/admin/assets/inlineDiffController-DBLpPOe2.js +0 -16
- package/admin/assets/iobroker_javascript__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-DkBjPSMw.js +0 -1
- package/admin/assets/iobroker_javascript__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-CV1_X-Lf.js +0 -1
- package/admin/assets/iobroker_javascript__loadShare__prop_mf_2_types__loadShare__.mjs-BCtSFofY.js +0 -1
- package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs-CTZOFJS2.js +0 -1
- package/admin/assets/iobroker_javascript__loadShare__react__loadShare__.mjs_commonjs-proxy-CE9lvhW8.js +0 -1
- package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs-DeVAS-oa.js +0 -1
- package/admin/assets/iobroker_javascript__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-RQRRZMX5.js +0 -1
- package/admin/assets/localSharedImportMap-Db5DxDmY.js +0 -1
- package/admin/assets/preload-helper-BDBacUwf.js +0 -1
- package/admin/assets/stateHoverProvider-C82xsI7Q.js +0 -9
- package/admin/assets/useTheme-DuTJsNQ-.js +0 -1
- package/admin/assets/virtualExposes-BPsCufin.js +0 -1
- package/admin/assets/virtual_mf-REMOTE_ENTRY_ID_iobroker_javascript__remoteEntry_js-Bw22wl4W.js +0 -8
- package/admin/custom/assets/Components-BOms95_F.css +0 -1
- package/admin/custom/assets/Components-CGiJE5Zh.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_emotion_mf_1_react__loadShare__.mjs-sg07E3QA.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_emotion_mf_1_styled__loadShare__.mjs-CwjI4A-J.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_adapter_mf_2_react_mf_2_v5__loadShare__.mjs-B7D2xOvV.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.mjs-ClsgYnEX.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_icons_mf_2_material__loadShare__.mjs-B551AMx-.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_material__loadShare__.mjs-KsT5vKjV.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare___mf_0_mui_mf_1_x_mf_2_date_mf_2_pickers__loadShare__.mjs-DgHZUNxn.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__leaflet__loadShare__.mjs-BYONkEgA.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs-BW9Qbxx5.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react__loadShare__.mjs_commonjs-proxy-2W2BYT2K.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs-CL--xmjC.js +0 -1
- package/admin/custom/assets/ConfigCustomJavascriptSet__loadShare__react_mf_2_dom__loadShare__.mjs_commonjs-proxy-D8zcZsJo.js +0 -1
- package/admin/custom/assets/DefaultPropsProvider-CfKHPa-G.js +0 -1
- package/admin/custom/assets/TextField-CxPfV5Sr.js +0 -139
- package/admin/custom/assets/ThemeProvider-DSTCckLJ.js +0 -29
- package/admin/custom/assets/blue-CagzI6CQ.js +0 -1
- package/admin/custom/assets/createSvgIcon-b2B2NI3g.js +0 -1
- package/admin/custom/assets/createTheme-MsdB8zt7.js +0 -8
- package/admin/custom/assets/defaultTheme-CmVP-QNF.js +0 -1
- package/admin/custom/assets/emotion-cache.browser.esm-BgJfNZJN.js +0 -1
- package/admin/custom/assets/emotion-react.browser.esm-chZAeh_-.js +0 -1
- package/admin/custom/assets/emotion-serialize.esm-BUa21YfQ.js +0 -1
- package/admin/custom/assets/emotion-styled.browser.esm-Yi13plpH.js +0 -1
- package/admin/custom/assets/emotion-use-insertion-effect-with-fallbacks.browser.esm-CEPeBbh9.js +0 -1
- package/admin/custom/assets/extends-CF3RwP-h.js +0 -1
- package/admin/custom/assets/hostInit-iUL-wyj1.js +0 -1
- package/admin/custom/assets/index-17vbGv00.js +0 -1
- package/admin/custom/assets/index-B5DqCD_a.js +0 -1
- package/admin/custom/assets/index-Bvwv5H7k.js +0 -1
- package/admin/custom/assets/index-CMsuyEZj.js +0 -964
- package/admin/custom/assets/index-CuAhFQ4L.js +0 -1523
- package/admin/custom/assets/index-CzRngQHl.js +0 -31
- package/admin/custom/assets/index-DLNtxshy.js +0 -1
- package/admin/custom/assets/index-DV76KW3-.js +0 -7
- package/admin/custom/assets/index-D_5kZmfw.js +0 -1
- package/admin/custom/assets/index-DlQbqHom.js +0 -8
- package/admin/custom/assets/index-DpJ18x6R.js +0 -1
- package/admin/custom/assets/index-FTmk0JJx.js +0 -55
- package/admin/custom/assets/index-mkhHeJ3Q.js +0 -1
- package/admin/custom/assets/isSameWeek-DDsSIa_t.js +0 -1
- package/admin/custom/assets/jsx-runtime-BplTyRFk.js +0 -1
- package/admin/custom/assets/leaflet-src-B472P7Y1.js +0 -1
- package/admin/custom/assets/localSharedImportMap-BsMINYMr.js +0 -1
- package/admin/custom/assets/preload-helper-BDBacUwf.js +0 -1
- package/admin/custom/assets/useTheme-BV4xOYIL.js +0 -1
- package/admin/custom/assets/useTheme-ldICnlmf.js +0 -1
- package/admin/custom/assets/virtualExposes-D402kVGY.js +0 -2
- package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID_ConfigCustomJavascriptSet__customComponents_js-BzLNCazi.js +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/lib/scheduler.ts"],"names":[],"mappings":"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","sourcesContent":["// const DEFAULT = {\n// time: {\n// exactTime: false,\n//\n// start: '00:00',\n// end: '23:59',\n//\n// mode: 'hours',\n// interval: 1,\n// },\n// period: {\n// once: '',\n// days: 1,\n// dows: '',\n// dates: '',\n// weeks: 0,\n// months: '',\n//\n// years: 0,\n// yearMonth: 0,\n// yearDate: 0,\n// },\n// valid: {\n// from: '',\n// to: ''\n// }\n// };\n\nimport type {\n GetMoonIlluminationResult,\n GetMoonPositionResult,\n GetMoonTimes,\n GetSunPositionResult,\n GetTimesResult,\n} from 'suncalc';\n\ninterface SunCalc {\n getTimes: (date: Date, latitude: number, longitude: number, height?: number) => GetTimesResult;\n addTime: (angleInDegrees: number, morningName: string, eveningName: string) => void;\n getPosition: (timeAndDate: Date, latitude: number, longitude: number) => GetSunPositionResult;\n getMoonPosition: (timeAndDate: Date, latitude: number, longitude: number) => GetMoonPositionResult;\n getMoonIllumination: (timeAndDate: Date) => GetMoonIlluminationResult;\n getMoonTimes: (date: Date, latitude: number, longitude: number, inUTC?: boolean) => GetMoonTimes;\n}\n\nexport type AstroEventName =\n | 'dawn'\n | 'dusk'\n | 'goldenHour'\n | 'goldenHourEnd'\n | 'nadir'\n | 'nauticalDawn'\n | 'nauticalDusk'\n | 'night'\n | 'nightEnd'\n | 'solarNoon'\n | 'sunrise'\n | 'sunriseEnd'\n | 'sunset'\n | 'sunsetStart';\n\ntype AstroEventNameLow =\n | 'dawn'\n | 'dusk'\n | 'goldenhour'\n | 'goldenhourend'\n | 'nadir'\n | 'nauticaldawn'\n | 'nauticaldusk'\n | 'night'\n | 'nightend'\n | 'solarnoon'\n | 'sunrise'\n | 'sunriseend'\n | 'sunset'\n | 'sunsetstart';\n\ntype SchedulerContext = {\n now: number;\n minutesOfDay: number;\n y: number;\n M: number;\n d: number;\n h: number;\n m: number;\n dow: number;\n};\n\nexport type SchedulerRule = {\n time: {\n start?: string;\n end?: string;\n mode?: 'minutes' | 'hours';\n interval?: number;\n exactTime?: boolean;\n };\n period: {\n once?: string;\n\n days?: number;\n dows?: string;\n dates?: string;\n weeks?: number;\n months?: string;\n\n years?: number;\n yearMonth?: number;\n yearDate?: number;\n };\n valid?: {\n from?: string;\n to?: string;\n };\n};\n\ntype SchedulerRuleParsed = {\n id: string;\n original: string;\n period: {\n fromDate?: Date;\n months?: number | number[];\n days?: number;\n dows?: number[];\n weeks?: number;\n years?: number;\n yearMonth?: number;\n yearDate?: number;\n dates?: number[];\n once?: { y: number; M: number; d: number };\n };\n time?: {\n exactTime: boolean;\n start: number | AstroEventName;\n end: number | AstroEventName;\n mode: 60 | 3600;\n interval: number;\n };\n valid?: {\n from?: { y: number; M: number; d: number };\n to?: { y: number; M: number; d: number };\n fromDate?: number | Date;\n };\n scriptName: string;\n cb: (id: string) => void;\n};\n\nexport type ScheduleName = {\n id: `schedule_${string}`;\n type: 'schedule';\n schedule: string;\n scriptName: string;\n};\n\nexport class Scheduler {\n private readonly list: Record<string, SchedulerRuleParsed>;\n private readonly Date: typeof Date;\n private readonly suncalc: SunCalc;\n private readonly latitude: number;\n private readonly longitude: number;\n private log: {\n debug: (text: string) => void;\n info: (text: string) => void;\n warn: (text: string) => void;\n error: (text: string) => void;\n silly: (text: string) => void;\n };\n private timer: NodeJS.Timeout | null = null;\n private todaysAstroTimes: Record<AstroEventName, Date>;\n private yesterdaysAstroTimes: Record<AstroEventName, Date>;\n private readonly astroList: AstroEventName[] | undefined;\n private astroListLow: AstroEventNameLow[] | undefined;\n\n constructor(\n log: {\n debug: (text: string) => void;\n info: (text: string) => void;\n warn: (text: string) => void;\n error: (text: string) => void;\n silly: (text: string) => void;\n },\n DateTest: typeof Date | null,\n suncalc: SunCalc,\n latitude: number,\n longitude: number,\n ) {\n this.list = {};\n this.Date = DateTest || Date;\n this.suncalc = suncalc;\n this.latitude = latitude;\n this.longitude = longitude;\n this.log = log || {\n debug: function (text: string): void {\n console.log(text);\n },\n info: function (text: string): void {\n console.log(text);\n },\n warn: function (text: string): void {\n console.warn(text);\n },\n error: function (text: string): void {\n console.error(text);\n },\n silly: function (text: string): void {\n console.log(text);\n },\n };\n\n // this._setAstroVars();\n const todayNoon = new this.Date();\n const yesterdayNoon = new this.Date();\n todayNoon.setHours(12, 0, 0, 0);\n yesterdayNoon.setDate(yesterdayNoon.getDate() - 1);\n yesterdayNoon.setHours(12, 0, 0, 0);\n this.todaysAstroTimes = this.suncalc.getTimes(todayNoon, this.latitude, this.longitude);\n this.yesterdaysAstroTimes = this.suncalc.getTimes(yesterdayNoon, this.latitude, this.longitude);\n\n this.astroList = [\n 'dawn',\n 'dusk',\n 'goldenHour',\n 'goldenHourEnd',\n 'nadir',\n 'nauticalDawn',\n 'nauticalDusk',\n 'night',\n 'nightEnd',\n 'solarNoon',\n 'sunrise',\n 'sunriseEnd',\n 'sunset',\n 'sunsetStart',\n ];\n this.astroListLow = [\n 'dawn',\n 'dusk',\n 'goldenhour',\n 'goldenhourend',\n 'nadir',\n 'nauticaldawn',\n 'nauticaldusk',\n 'night',\n 'nightend',\n 'solarnoon',\n 'sunrise',\n 'sunriseend',\n 'sunset',\n 'sunsetstart',\n ];\n }\n\n private idCounter = 0;\n\n _getId(): string {\n return `${this.Date.now()}.${++this.idCounter}`;\n }\n\n recalculate(): void {\n const count = Object.keys(this.list).length;\n if (count && !this.timer) {\n const d = new this.Date();\n d.setMilliseconds(2); // 2 ms to be sure that the next second is reached, they do not hurt anyone\n d.setSeconds(0);\n d.setMinutes(d.getMinutes() + 1);\n this.timer = setTimeout(\n notBefore => this.checkSchedules(notBefore),\n d.getTime() - this.Date.now(),\n d.getTime(),\n );\n } else if (!count && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n getContext(): SchedulerContext {\n const now = new this.Date();\n return {\n now: now.getTime(),\n minutesOfDay: now.getHours() * 60 + now.getMinutes(),\n y: now.getFullYear(),\n M: now.getMonth(),\n d: now.getDate(),\n h: now.getHours(),\n m: now.getMinutes(),\n dow: now.getDay(),\n };\n }\n\n checkSchedules(notBeforeTime?: number): void {\n const context = this.getContext();\n\n // Work around for not those precise RTCs in some system\n if (notBeforeTime !== undefined && context.now < notBeforeTime) {\n this.timer = setTimeout(\n notBefore => this.checkSchedules(notBefore),\n notBeforeTime - this.Date.now(),\n notBeforeTime,\n );\n return;\n }\n\n for (const id in this.list) {\n if (!Object.prototype.hasOwnProperty.call(this.list, id)) {\n continue;\n }\n if (this.checkSchedule(context, this.list[id])) {\n setImmediate(id => this.list[id] && typeof this.list[id].cb === 'function' && this.list[id].cb(id), id);\n }\n }\n\n if (Object.keys(this.list).length) {\n const d = new this.Date();\n d.setMilliseconds(2); // 2 ms to be sure that the next second is reached, they do not hurt anyone\n d.setSeconds(0);\n d.setMinutes(d.getMinutes() + 1);\n this.timer = setTimeout(\n notBefore => this.checkSchedules(notBefore),\n d.getTime() - this.Date.now(),\n d.getTime(),\n );\n } else {\n this.timer = null;\n }\n }\n\n monthDiff(d1: Date, d2: Date): number {\n const months = (d2.getFullYear() - d1.getFullYear()) * 12 + d2.getMonth() - d1.getMonth();\n return months <= 0 ? 0 : months;\n }\n\n checkSchedule(context: SchedulerContext, schedule: SchedulerRuleParsed): boolean {\n if (schedule.valid) {\n if (\n schedule.valid.from &&\n !this.isPast(context, schedule.valid.from) &&\n !this.isToday(context, schedule.valid.from)\n ) {\n return false;\n }\n // \"to\" this.Date is in the past => delete it from a list\n if (schedule.valid.to && this.isPast(context, schedule.valid.to)) {\n delete this.list[schedule.id];\n return false;\n }\n }\n if (schedule.period) {\n if (schedule.period.once && !this.isToday(context, schedule.period.once)) {\n if (this.isPast(context, schedule.period.once)) {\n delete this.list[schedule.id];\n }\n return false;\n } else if (schedule.period.days) {\n if (schedule.period.dows && !schedule.period.dows.includes(context.dow)) {\n return false;\n } else if (schedule.period.days > 1) {\n // @ts-expect-error period of days cannot be without valid fromDate\n const diff = Math.round((context.now - schedule.valid.fromDate) / (60000 * 24) + 0.5);\n if (diff % schedule.period.days) {\n return false;\n }\n }\n } else if (schedule.period.weeks) {\n if (schedule.period.dows && !schedule.period.dows.includes(context.dow)) {\n return false;\n }\n if (schedule.period.weeks > 1) {\n // @ts-expect-error period of weeks cannot be without valid fromDate\n const diff = Math.round((context.now - schedule.valid.fromDate) / (60000 * 24 * 7) + 0.5);\n if (diff % schedule.period.weeks) {\n return false;\n }\n }\n } else if (schedule.period.months) {\n if (Array.isArray(schedule.period.months) && !schedule.period.months.includes(context.M)) {\n return false;\n }\n if (\n schedule.period.fromDate &&\n typeof schedule.period.months === 'number' &&\n schedule.period.months > 1\n ) {\n const diff = this.monthDiff(schedule.period.fromDate, new this.Date(context.now));\n if (diff % schedule.period.months) {\n return false;\n }\n }\n if (schedule.period.dates && !schedule.period.dates.includes(context.d)) {\n return false;\n }\n } else if (schedule.period.years) {\n if (schedule.period.yearMonth !== undefined && schedule.period.yearMonth !== context.M) {\n return false;\n }\n if (schedule.period.yearDate && schedule.period.yearDate !== context.d) {\n return false;\n }\n if (\n schedule.period.fromDate &&\n typeof schedule.period.years === 'number' &&\n schedule.period.years > 1\n ) {\n const diff = Math.floor(this.monthDiff(schedule.period.fromDate, new this.Date(context.now)) / 12);\n if (diff % schedule.period.years) {\n return false;\n }\n }\n }\n }\n\n if (schedule.time) {\n let start: number;\n let end: number;\n const now = new this.Date(context.now);\n if (now.getDate() !== this.todaysAstroTimes.sunrise.getDate()) {\n this._setAstroVars();\n }\n if (typeof schedule.time.start === 'string') {\n const astroNameStart = this._getAstroName(schedule.time.start);\n if (astroNameStart) {\n let times = this.todaysAstroTimes;\n\n if (times[astroNameStart].getDate() !== now.getDate()) {\n times = this.yesterdaysAstroTimes;\n }\n const startDate: Date = times[astroNameStart];\n start = startDate.getHours() * 60 + startDate.getMinutes();\n } else {\n this.log.error(`unknown astro event \"${schedule.time.start}\"`);\n return false;\n }\n } else {\n start = schedule.time.start;\n }\n if (typeof schedule.time.end === 'string') {\n const astroNameEnd = this._getAstroName(schedule.time.end);\n if (astroNameEnd) {\n let times = this.todaysAstroTimes;\n if (times[astroNameEnd].getDate() !== now.getDate()) {\n times = this.yesterdaysAstroTimes;\n }\n const endDate: Date = times[astroNameEnd];\n end = endDate.getHours() * 60 + endDate.getMinutes();\n } else {\n this.log.error(`unknown astro event \"${schedule.time.end}\"`);\n return false;\n }\n } else {\n end = schedule.time.end;\n }\n\n start = start || 0;\n end = end || 60 * 24;\n\n if (schedule.time.exactTime) {\n if (context.minutesOfDay !== start) {\n return false;\n }\n } else {\n if (start > context.minutesOfDay || (end && end < context.minutesOfDay)) {\n return false;\n }\n if (schedule.time.mode === 60) {\n if (schedule.time.interval > 1 && (context.minutesOfDay - start) % schedule.time.interval) {\n return false;\n }\n } else if (schedule.time.mode === 3600) {\n if ((context.minutesOfDay - start) % (schedule.time.interval * 60)) {\n return false;\n }\n }\n }\n }\n return true;\n }\n\n string2date(date: string): { y: number; M: number; d: number } {\n let parts = date.split('.');\n let d: Date;\n if (parts.length !== 3) {\n parts = date.split('-');\n d = new this.Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10));\n } else {\n d = new this.Date(parseInt(parts[2], 10), parseInt(parts[1], 10) - 1, parseInt(parts[0], 10));\n }\n return { y: d.getFullYear(), M: d.getMonth(), d: d.getDate() };\n }\n\n isPast(context: SchedulerContext, date: { y: number; M: number; d: number } | undefined): boolean {\n if (date) {\n if (date.y < context.y) {\n return true;\n }\n if (date.y === context.y) {\n if (date.M < context.M) {\n return true;\n }\n if (date.M === context.M) {\n if (date.d < context.d) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n isToday(context: SchedulerContext, date: { y: number; M: number; d: number }): boolean {\n return date && date.y === context.y && date.M === context.M && date.d === context.d;\n }\n\n add(schedule: SchedulerRule | string, scriptName: string, cb: (id: string) => void): string | null {\n let oSchedule: SchedulerRule;\n if (typeof schedule === 'string') {\n try {\n oSchedule = JSON.parse(schedule);\n } catch {\n this.log.error(`Cannot parse schedule: ${schedule}`);\n return null;\n }\n } else {\n oSchedule = schedule;\n }\n\n const id = this._getId();\n if (typeof oSchedule !== 'object' || !oSchedule.period) {\n this.log.error(`Invalid schedule structure: ${JSON.stringify(oSchedule)}`);\n return null;\n }\n const context = this.getContext();\n const sch: SchedulerRuleParsed = JSON.parse(JSON.stringify(oSchedule));\n sch.scriptName = scriptName;\n sch.original = JSON.stringify(oSchedule);\n sch.id = id;\n sch.cb = cb;\n\n if (oSchedule.time?.start) {\n const astroNameStart = this._getAstroName(oSchedule.time.start);\n if (astroNameStart && sch.time) {\n sch.time.start = astroNameStart;\n } else if (oSchedule.time.start.includes(':')) {\n const parts = oSchedule.time.start.split(':');\n if (sch.time) {\n sch.time.start = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10);\n }\n } else {\n this.log.error(`unknown astro event \"${oSchedule.time.start}\"`);\n return null;\n }\n }\n\n if (oSchedule.time?.end) {\n const astroNameEnd = this._getAstroName(oSchedule.time.end);\n if (astroNameEnd && sch.time) {\n sch.time.end = astroNameEnd;\n } else if (oSchedule.time.end.includes(':')) {\n const parts = oSchedule.time.end.split(':');\n if (sch.time) {\n sch.time.end = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10);\n }\n } else {\n this.log.error(`unknown astro event \"${oSchedule.time.end}\"`);\n return null;\n }\n }\n\n if (sch.time) {\n if (oSchedule.time.mode === 'minutes') {\n sch.time.mode = 60;\n } else if (oSchedule.time.mode === 'hours') {\n sch.time.mode = 3600;\n }\n }\n\n if (oSchedule.period.once) {\n sch.period.once = this.string2date(oSchedule.period.once);\n }\n\n if (oSchedule.valid && sch.valid) {\n if (oSchedule.valid.from) {\n sch.valid.from = this.string2date(oSchedule.valid.from);\n }\n if (oSchedule.valid.to) {\n sch.valid.to = this.string2date(oSchedule.valid.to);\n }\n\n if (this.isPast(context, sch.valid.to)) {\n this.log.warn('End of schedule is in the past');\n return null;\n }\n\n if (typeof oSchedule.period.days === 'number' && oSchedule.period.days > 1 && sch.valid.from) {\n // fromDate must be unix time\n sch.valid.fromDate = new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d).getTime();\n } else if (typeof oSchedule.period.weeks === 'number' && oSchedule.period.weeks > 1) {\n const fromDate: Date = sch.valid.from\n ? new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d)\n : new this.Date();\n //sch.valid.fromDate.setDate(-sch.valid.fromDate.getDate() - sch.valid.fromDate.getDay());\n // fromDate must be unix time\n sch.valid.fromDate = fromDate.getTime();\n } else if (sch.valid.from && typeof oSchedule.period.months === 'number' && oSchedule.period.months > 1) {\n // fromDate must be object\n sch.valid.fromDate = new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d);\n } else if (sch.valid.from && typeof oSchedule.period.years === 'number' && oSchedule.period.years > 1) {\n // fromDate must be object\n sch.valid.fromDate = new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d);\n }\n }\n if (\n sch.period &&\n ((typeof sch.period.days === 'number' && sch.period.days > 1) ||\n (typeof sch.period.weeks === 'number' && sch.period.weeks > 1) ||\n (typeof sch.period.months === 'number' && sch.period.months > 1) ||\n (typeof sch.period.years === 'number' && sch.period.years > 1)) &&\n (!sch.valid || !sch.valid.fromDate)\n ) {\n this.log.warn(\n 'Invalid Schedule definition: Period day/weeks/months/years only allowed with a valid.from date!',\n );\n return null;\n }\n\n if (oSchedule.period.dows) {\n try {\n sch.period.dows = JSON.parse(oSchedule.period.dows);\n } catch {\n this.log.error(`Cannot parse day of weeks: ${JSON.stringify(sch.period.dows)}`);\n return null;\n }\n if (!Array.isArray(sch.period.dows)) {\n this.log.error(`day of weeks is no array: ${JSON.stringify(sch.period.dows)}`);\n return null;\n }\n }\n\n if (oSchedule.period.months && typeof oSchedule.period.months !== 'number') {\n // can be number or array-string\n try {\n sch.period.months = JSON.parse(oSchedule.period.months) as number[];\n } catch {\n this.log.error(`Cannot parse day of months: ${JSON.stringify(sch.period.months)}`);\n return null;\n }\n sch.period.months = sch.period.months.map(m => m - 1);\n }\n\n if (oSchedule.period.dates) {\n try {\n sch.period.dates = JSON.parse(oSchedule.period.dates) as number[];\n } catch {\n this.log.error(`Cannot parse day of dates: ${JSON.stringify(sch.period.dates)}`);\n return null;\n }\n }\n if (oSchedule.period.yearMonth) {\n sch.period.yearMonth = oSchedule.period.yearMonth - 1;\n }\n this.list[id] = sch;\n this.recalculate();\n return id;\n }\n\n remove(id: string | ScheduleName): boolean {\n if (\n typeof id === 'object' &&\n id.type === 'schedule' &&\n typeof id.id === 'string' &&\n id.id.startsWith('schedule_')\n ) {\n if (this.list[id.id.substring('schedule_'.length)]) {\n delete this.list[id.id.substring('schedule_'.length)];\n this.recalculate();\n return true;\n }\n return false;\n }\n if (typeof id === 'string' && this.list[id]) {\n delete this.list[id];\n this.recalculate();\n return true;\n }\n return false;\n }\n\n getList(): ScheduleName[] {\n return Object.keys(this.list).map(id => ({\n id: `schedule_${id}`,\n type: 'schedule',\n schedule: this.list[id].original,\n scriptName: this.list[id].scriptName,\n }));\n }\n\n get(id: string | ScheduleName): SchedulerRuleParsed | null {\n if (\n id &&\n typeof id === 'object' &&\n id.type === 'schedule' &&\n typeof id.id === 'string' &&\n id.id.startsWith('schedule_')\n ) {\n return this.list[id.id.substring('schedule_'.length)];\n }\n if (typeof id === 'string') {\n return this.list[id];\n }\n return null;\n }\n\n private _setAstroVars(): void {\n const todayNoon = new this.Date();\n const yesterdayNoon = new this.Date();\n todayNoon.setHours(12, 0, 0, 0);\n yesterdayNoon.setDate(yesterdayNoon.getDate() - 1);\n yesterdayNoon.setHours(12, 0, 0, 0);\n this.todaysAstroTimes = this.suncalc.getTimes(todayNoon, this.latitude, this.longitude);\n this.yesterdaysAstroTimes = this.suncalc.getTimes(yesterdayNoon, this.latitude, this.longitude);\n }\n\n private _getAstroName(evt: string): AstroEventName | null {\n if (typeof evt === 'string') {\n const pos = (this.astroListLow as string[]).indexOf(evt.toLowerCase() as AstroEventNameLow);\n if (pos > -1) {\n return (this.astroList as string[])[pos] as AstroEventName;\n }\n }\n return null;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/lib/scheduler.ts"],"names":[],"mappings":"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","sourcesContent":["// const DEFAULT = {\n// time: {\n// exactTime: false,\n//\n// start: '00:00',\n// end: '23:59',\n//\n// mode: 'hours',\n// interval: 1,\n// },\n// period: {\n// once: '',\n// days: 1,\n// dows: '',\n// dates: '',\n// weeks: 0,\n// months: '',\n//\n// years: 0,\n// yearMonth: 0,\n// yearDate: 0,\n// },\n// valid: {\n// from: '',\n// to: ''\n// }\n// };\n\nimport type {\n GetMoonIlluminationResult,\n GetMoonPositionResult,\n GetMoonTimes,\n GetSunPositionResult,\n GetTimesResult,\n} from 'suncalc';\n\ninterface SunCalc {\n getTimes: (date: Date, latitude: number, longitude: number, height?: number) => GetTimesResult;\n addTime: (angleInDegrees: number, morningName: string, eveningName: string) => void;\n getPosition: (timeAndDate: Date, latitude: number, longitude: number) => GetSunPositionResult;\n getMoonPosition: (timeAndDate: Date, latitude: number, longitude: number) => GetMoonPositionResult;\n getMoonIllumination: (timeAndDate: Date) => GetMoonIlluminationResult;\n getMoonTimes: (date: Date, latitude: number, longitude: number, inUTC?: boolean) => GetMoonTimes;\n}\n\nexport type AstroEventName =\n | 'dawn'\n | 'dusk'\n | 'goldenHour'\n | 'goldenHourEnd'\n | 'nadir'\n | 'nauticalDawn'\n | 'nauticalDusk'\n | 'night'\n | 'nightEnd'\n | 'solarNoon'\n | 'sunrise'\n | 'sunriseEnd'\n | 'sunset'\n | 'sunsetStart';\n\ntype AstroEventNameLow =\n | 'dawn'\n | 'dusk'\n | 'goldenhour'\n | 'goldenhourend'\n | 'nadir'\n | 'nauticaldawn'\n | 'nauticaldusk'\n | 'night'\n | 'nightend'\n | 'solarnoon'\n | 'sunrise'\n | 'sunriseend'\n | 'sunset'\n | 'sunsetstart';\n\ntype SchedulerContext = {\n now: number;\n minutesOfDay: number;\n y: number;\n M: number;\n d: number;\n h: number;\n m: number;\n dow: number;\n};\n\nexport type SchedulerRule = {\n time: {\n start?: string;\n end?: string;\n mode?: 'minutes' | 'hours';\n interval?: number;\n exactTime?: boolean;\n };\n period: {\n once?: string;\n\n days?: number;\n dows?: string;\n dates?: string;\n weeks?: number;\n months?: string;\n\n years?: number;\n yearMonth?: number;\n yearDate?: number;\n };\n valid?: {\n from?: string;\n to?: string;\n };\n};\n\ntype SchedulerRuleParsed = {\n id: string;\n original: string;\n period: {\n fromDate?: Date;\n months?: number | number[];\n days?: number;\n dows?: number[];\n weeks?: number;\n years?: number;\n yearMonth?: number;\n yearDate?: number;\n dates?: number[];\n once?: { y: number; M: number; d: number };\n };\n time?: {\n exactTime: boolean;\n start: number | AstroEventName;\n end: number | AstroEventName;\n mode: 60 | 3600;\n interval: number;\n };\n valid?: {\n from?: { y: number; M: number; d: number };\n to?: { y: number; M: number; d: number };\n fromDate?: number | Date;\n };\n scriptName: string;\n cb: (id: string) => void;\n};\n\nexport type ScheduleName = {\n id: `schedule_${string}`;\n type: 'schedule';\n schedule: string;\n scriptName: string;\n};\n\nexport class Scheduler {\n private readonly list: Record<string, SchedulerRuleParsed>;\n private readonly Date: typeof Date;\n private readonly suncalc: SunCalc;\n private readonly latitude: number;\n private readonly longitude: number;\n private log: {\n debug: (text: string) => void;\n info: (text: string) => void;\n warn: (text: string) => void;\n error: (text: string) => void;\n silly: (text: string) => void;\n };\n private timer: NodeJS.Timeout | null = null;\n private todaysAstroTimes: Record<AstroEventName, Date>;\n private yesterdaysAstroTimes: Record<AstroEventName, Date>;\n private readonly astroList: AstroEventName[] | undefined;\n private astroListLow: AstroEventNameLow[] | undefined;\n\n constructor(\n log: {\n debug: (text: string) => void;\n info: (text: string) => void;\n warn: (text: string) => void;\n error: (text: string) => void;\n silly: (text: string) => void;\n },\n DateTest: typeof Date | null,\n suncalc: SunCalc,\n latitude: number,\n longitude: number,\n ) {\n this.list = {};\n this.Date = DateTest || Date;\n this.suncalc = suncalc;\n this.latitude = latitude;\n this.longitude = longitude;\n this.log = log || {\n debug: function (text: string): void {\n console.log(text);\n },\n info: function (text: string): void {\n console.log(text);\n },\n warn: function (text: string): void {\n console.warn(text);\n },\n error: function (text: string): void {\n console.error(text);\n },\n silly: function (text: string): void {\n console.log(text);\n },\n };\n\n // this._setAstroVars();\n const todayNoon = new this.Date();\n const yesterdayNoon = new this.Date();\n todayNoon.setHours(12, 0, 0, 0);\n yesterdayNoon.setDate(yesterdayNoon.getDate() - 1);\n yesterdayNoon.setHours(12, 0, 0, 0);\n this.todaysAstroTimes = this.suncalc.getTimes(todayNoon, this.latitude, this.longitude);\n this.yesterdaysAstroTimes = this.suncalc.getTimes(yesterdayNoon, this.latitude, this.longitude);\n\n this.astroList = [\n 'dawn',\n 'dusk',\n 'goldenHour',\n 'goldenHourEnd',\n 'nadir',\n 'nauticalDawn',\n 'nauticalDusk',\n 'night',\n 'nightEnd',\n 'solarNoon',\n 'sunrise',\n 'sunriseEnd',\n 'sunset',\n 'sunsetStart',\n ];\n this.astroListLow = [\n 'dawn',\n 'dusk',\n 'goldenhour',\n 'goldenhourend',\n 'nadir',\n 'nauticaldawn',\n 'nauticaldusk',\n 'night',\n 'nightend',\n 'solarnoon',\n 'sunrise',\n 'sunriseend',\n 'sunset',\n 'sunsetstart',\n ];\n }\n\n private idCounter = 0;\n\n _getId(): string {\n return `${this.Date.now()}.${++this.idCounter}`;\n }\n\n recalculate(): void {\n const count = Object.keys(this.list).length;\n if (count && !this.timer) {\n const d = new this.Date();\n d.setMilliseconds(2); // 2 ms to be sure that the next second is reached, they do not hurt anyone\n d.setSeconds(0);\n d.setMinutes(d.getMinutes() + 1);\n this.timer = setTimeout(\n notBefore => this.checkSchedules(notBefore),\n d.getTime() - this.Date.now(),\n d.getTime(),\n );\n } else if (!count && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n getContext(): SchedulerContext {\n const now = new this.Date();\n return {\n now: now.getTime(),\n minutesOfDay: now.getHours() * 60 + now.getMinutes(),\n y: now.getFullYear(),\n M: now.getMonth(),\n d: now.getDate(),\n h: now.getHours(),\n m: now.getMinutes(),\n dow: now.getDay(),\n };\n }\n\n checkSchedules(notBeforeTime?: number): void {\n const context = this.getContext();\n\n // Work around for not those precise RTCs in some system\n if (notBeforeTime !== undefined && context.now < notBeforeTime) {\n this.timer = setTimeout(\n notBefore => this.checkSchedules(notBefore),\n notBeforeTime - this.Date.now(),\n notBeforeTime,\n );\n return;\n }\n\n for (const id in this.list) {\n if (!Object.prototype.hasOwnProperty.call(this.list, id)) {\n continue;\n }\n if (this.checkSchedule(context, this.list[id])) {\n setImmediate(id => this.list[id] && typeof this.list[id].cb === 'function' && this.list[id].cb(id), id);\n }\n }\n\n if (Object.keys(this.list).length) {\n const d = new this.Date();\n d.setMilliseconds(2); // 2 ms to be sure that the next second is reached, they do not hurt anyone\n d.setSeconds(0);\n d.setMinutes(d.getMinutes() + 1);\n this.timer = setTimeout(\n notBefore => this.checkSchedules(notBefore),\n d.getTime() - this.Date.now(),\n d.getTime(),\n );\n } else {\n this.timer = null;\n }\n }\n\n monthDiff(d1: Date, d2: Date): number {\n const months = (d2.getFullYear() - d1.getFullYear()) * 12 + d2.getMonth() - d1.getMonth();\n return months <= 0 ? 0 : months;\n }\n\n checkSchedule(context: SchedulerContext, schedule: SchedulerRuleParsed): boolean {\n if (schedule.valid) {\n if (\n schedule.valid.from &&\n !this.isPast(context, schedule.valid.from) &&\n !this.isToday(context, schedule.valid.from)\n ) {\n return false;\n }\n // \"to\" this.Date is in the past => delete it from a list\n if (schedule.valid.to && this.isPast(context, schedule.valid.to)) {\n delete this.list[schedule.id];\n return false;\n }\n }\n if (schedule.period) {\n if (schedule.period.once && !this.isToday(context, schedule.period.once)) {\n if (this.isPast(context, schedule.period.once)) {\n delete this.list[schedule.id];\n }\n return false;\n } else if (schedule.period.days) {\n if (schedule.period.dows && !schedule.period.dows.includes(context.dow)) {\n return false;\n } else if (schedule.period.days > 1) {\n // @ts-expect-error period of days cannot be without valid fromDate\n const diff = Math.round((context.now - schedule.valid.fromDate) / (60000 * 24) + 0.5);\n if (diff % schedule.period.days) {\n return false;\n }\n }\n } else if (schedule.period.weeks) {\n if (schedule.period.dows && !schedule.period.dows.includes(context.dow)) {\n return false;\n }\n if (schedule.period.weeks > 1) {\n // @ts-expect-error period of weeks cannot be without valid fromDate\n const diff = Math.round((context.now - schedule.valid.fromDate) / (60000 * 24 * 7) + 0.5);\n if (diff % schedule.period.weeks) {\n return false;\n }\n }\n } else if (schedule.period.months) {\n if (Array.isArray(schedule.period.months) && !schedule.period.months.includes(context.M)) {\n return false;\n }\n if (\n schedule.period.fromDate &&\n typeof schedule.period.months === 'number' &&\n schedule.period.months > 1\n ) {\n const diff = this.monthDiff(schedule.period.fromDate, new this.Date(context.now));\n if (diff % schedule.period.months) {\n return false;\n }\n }\n if (schedule.period.dates && !schedule.period.dates.includes(context.d)) {\n return false;\n }\n } else if (schedule.period.years) {\n if (schedule.period.yearMonth !== undefined && schedule.period.yearMonth !== context.M) {\n return false;\n }\n if (schedule.period.yearDate && schedule.period.yearDate !== context.d) {\n return false;\n }\n if (\n schedule.period.fromDate &&\n typeof schedule.period.years === 'number' &&\n schedule.period.years > 1\n ) {\n const diff = Math.floor(this.monthDiff(schedule.period.fromDate, new this.Date(context.now)) / 12);\n if (diff % schedule.period.years) {\n return false;\n }\n }\n }\n }\n\n if (schedule.time) {\n let start: number;\n let end: number;\n const now = new this.Date(context.now);\n if (now.getDate() !== this.todaysAstroTimes.sunrise.getDate()) {\n this._setAstroVars();\n }\n if (typeof schedule.time.start === 'string') {\n const astroNameStart = this._getAstroName(schedule.time.start);\n if (astroNameStart) {\n let times = this.todaysAstroTimes;\n\n if (times[astroNameStart].getDate() !== now.getDate()) {\n times = this.yesterdaysAstroTimes;\n }\n const startDate: Date = times[astroNameStart];\n start = startDate.getHours() * 60 + startDate.getMinutes();\n } else {\n this.log.error(`unknown astro event \"${schedule.time.start}\"`);\n return false;\n }\n } else {\n start = schedule.time.start;\n }\n if (typeof schedule.time.end === 'string') {\n const astroNameEnd = this._getAstroName(schedule.time.end);\n if (astroNameEnd) {\n let times = this.todaysAstroTimes;\n if (times[astroNameEnd].getDate() !== now.getDate()) {\n times = this.yesterdaysAstroTimes;\n }\n const endDate: Date = times[astroNameEnd];\n end = endDate.getHours() * 60 + endDate.getMinutes();\n } else {\n this.log.error(`unknown astro event \"${schedule.time.end}\"`);\n return false;\n }\n } else {\n end = schedule.time.end;\n }\n\n start = start || 0;\n end = end || 60 * 24;\n\n if (schedule.time.exactTime) {\n if (context.minutesOfDay !== start) {\n return false;\n }\n } else {\n if (start > context.minutesOfDay || (end && end < context.minutesOfDay)) {\n return false;\n }\n if (schedule.time.mode === 60) {\n if (schedule.time.interval > 1 && (context.minutesOfDay - start) % schedule.time.interval) {\n return false;\n }\n } else if (schedule.time.mode === 3600) {\n if ((context.minutesOfDay - start) % (schedule.time.interval * 60)) {\n return false;\n }\n }\n }\n }\n return true;\n }\n\n string2date(date: string): { y: number; M: number; d: number } {\n let parts = date.split('.');\n let d: Date;\n if (parts.length !== 3) {\n parts = date.split('-');\n d = new this.Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10));\n } else {\n d = new this.Date(parseInt(parts[2], 10), parseInt(parts[1], 10) - 1, parseInt(parts[0], 10));\n }\n return { y: d.getFullYear(), M: d.getMonth(), d: d.getDate() };\n }\n\n isPast(context: SchedulerContext, date: { y: number; M: number; d: number } | undefined): boolean {\n if (date) {\n if (date.y < context.y) {\n return true;\n }\n if (date.y === context.y) {\n if (date.M < context.M) {\n return true;\n }\n if (date.M === context.M) {\n if (date.d < context.d) {\n return true;\n }\n }\n }\n }\n return false;\n }\n\n isToday(context: SchedulerContext, date: { y: number; M: number; d: number }): boolean {\n return date && date.y === context.y && date.M === context.M && date.d === context.d;\n }\n\n add(schedule: SchedulerRule | string, scriptName: string, cb: (id: string) => void): string | null {\n let oSchedule: SchedulerRule;\n if (typeof schedule === 'string') {\n try {\n oSchedule = JSON.parse(schedule);\n } catch {\n this.log.error(`Cannot parse schedule: ${schedule}`);\n return null;\n }\n } else {\n oSchedule = schedule;\n }\n\n const id = this._getId();\n if (typeof oSchedule !== 'object' || !oSchedule.period) {\n this.log.error(`Invalid schedule structure: ${JSON.stringify(oSchedule)}`);\n return null;\n }\n const context = this.getContext();\n const sch: SchedulerRuleParsed = JSON.parse(JSON.stringify(oSchedule));\n sch.scriptName = scriptName;\n sch.original = JSON.stringify(oSchedule);\n sch.id = id;\n sch.cb = cb;\n\n if (oSchedule.time?.start) {\n const astroNameStart = this._getAstroName(oSchedule.time.start);\n if (astroNameStart && sch.time) {\n sch.time.start = astroNameStart;\n } else if (oSchedule.time.start.includes(':')) {\n const parts = oSchedule.time.start.split(':');\n if (sch.time) {\n sch.time.start = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10);\n }\n } else {\n this.log.error(`unknown astro event \"${oSchedule.time.start}\"`);\n return null;\n }\n }\n\n if (oSchedule.time?.end) {\n const astroNameEnd = this._getAstroName(oSchedule.time.end);\n if (astroNameEnd && sch.time) {\n sch.time.end = astroNameEnd;\n } else if (oSchedule.time.end.includes(':')) {\n const parts = oSchedule.time.end.split(':');\n if (sch.time) {\n sch.time.end = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10);\n }\n } else {\n this.log.error(`unknown astro event \"${oSchedule.time.end}\"`);\n return null;\n }\n }\n\n if (sch.time) {\n if (oSchedule.time.mode === 'minutes') {\n sch.time.mode = 60;\n } else if (oSchedule.time.mode === 'hours') {\n sch.time.mode = 3600;\n }\n }\n\n if (oSchedule.period.once) {\n sch.period.once = this.string2date(oSchedule.period.once);\n }\n\n if (oSchedule.valid && sch.valid) {\n if (oSchedule.valid.from) {\n sch.valid.from = this.string2date(oSchedule.valid.from);\n }\n if (oSchedule.valid.to) {\n sch.valid.to = this.string2date(oSchedule.valid.to);\n }\n\n if (this.isPast(context, sch.valid.to)) {\n this.log.warn('End of schedule is in the past');\n return null;\n }\n\n if (typeof oSchedule.period.days === 'number' && oSchedule.period.days > 1 && sch.valid.from) {\n // fromDate must be unix time\n sch.valid.fromDate = new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d).getTime();\n } else if (typeof oSchedule.period.weeks === 'number' && oSchedule.period.weeks > 1) {\n const fromDate: Date = sch.valid.from\n ? new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d)\n : new this.Date();\n //sch.valid.fromDate.setDate(-sch.valid.fromDate.getDate() - sch.valid.fromDate.getDay());\n // fromDate must be unix time\n sch.valid.fromDate = fromDate.getTime();\n } else if (sch.valid.from && typeof oSchedule.period.months === 'number' && oSchedule.period.months > 1) {\n // fromDate must be object\n sch.valid.fromDate = new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d);\n } else if (sch.valid.from && typeof oSchedule.period.years === 'number' && oSchedule.period.years > 1) {\n // fromDate must be object\n sch.valid.fromDate = new this.Date(sch.valid.from.y, sch.valid.from.M, sch.valid.from.d);\n }\n }\n if (\n sch.period &&\n ((typeof sch.period.days === 'number' && sch.period.days > 1) ||\n (typeof sch.period.weeks === 'number' && sch.period.weeks > 1) ||\n (typeof sch.period.months === 'number' && sch.period.months > 1) ||\n (typeof sch.period.years === 'number' && sch.period.years > 1)) &&\n (!sch.valid || !sch.valid.fromDate)\n ) {\n this.log.warn(\n 'Invalid Schedule definition: Period day/weeks/months/years only allowed with a valid.from date!',\n );\n return null;\n }\n\n if (oSchedule.period.dows) {\n try {\n sch.period.dows = JSON.parse(oSchedule.period.dows);\n } catch {\n this.log.error(`Cannot parse day of weeks: ${JSON.stringify(sch.period.dows)}`);\n return null;\n }\n if (!Array.isArray(sch.period.dows)) {\n this.log.error(`day of weeks is no array: ${JSON.stringify(sch.period.dows)}`);\n return null;\n }\n }\n\n if (oSchedule.period.months && typeof oSchedule.period.months !== 'number') {\n // can be number or array-string\n try {\n sch.period.months = JSON.parse(oSchedule.period.months) as number[];\n } catch {\n this.log.error(`Cannot parse day of months: ${JSON.stringify(sch.period.months)}`);\n return null;\n }\n sch.period.months = sch.period.months.map(m => m - 1);\n }\n\n if (oSchedule.period.dates) {\n try {\n sch.period.dates = JSON.parse(oSchedule.period.dates) as number[];\n } catch {\n this.log.error(`Cannot parse day of dates: ${JSON.stringify(sch.period.dates)}`);\n return null;\n }\n }\n if (oSchedule.period.yearMonth) {\n sch.period.yearMonth = oSchedule.period.yearMonth - 1;\n }\n this.list[id] = sch;\n this.recalculate();\n return id;\n }\n\n remove(id: string | ScheduleName): boolean {\n if (\n typeof id === 'object' &&\n id.type === 'schedule' &&\n typeof id.id === 'string' &&\n id.id.startsWith('schedule_')\n ) {\n if (this.list[id.id.substring('schedule_'.length)]) {\n delete this.list[id.id.substring('schedule_'.length)];\n this.recalculate();\n return true;\n }\n return false;\n }\n if (typeof id === 'string' && this.list[id]) {\n delete this.list[id];\n this.recalculate();\n return true;\n }\n return false;\n }\n\n getList(): ScheduleName[] {\n return Object.keys(this.list).map(id => ({\n id: `schedule_${id}`,\n type: 'schedule',\n schedule: this.list[id].original,\n scriptName: this.list[id].scriptName,\n }));\n }\n\n get(id: string | ScheduleName): SchedulerRuleParsed | null {\n if (\n id &&\n typeof id === 'object' &&\n id.type === 'schedule' &&\n typeof id.id === 'string' &&\n id.id.startsWith('schedule_')\n ) {\n return this.list[id.id.substring('schedule_'.length)];\n }\n if (typeof id === 'string') {\n return this.list[id];\n }\n return null;\n }\n\n private _setAstroVars(): void {\n const todayNoon = new this.Date();\n const yesterdayNoon = new this.Date();\n todayNoon.setHours(12, 0, 0, 0);\n yesterdayNoon.setDate(yesterdayNoon.getDate() - 1);\n yesterdayNoon.setHours(12, 0, 0, 0);\n this.todaysAstroTimes = this.suncalc.getTimes(todayNoon, this.latitude, this.longitude);\n this.yesterdaysAstroTimes = this.suncalc.getTimes(yesterdayNoon, this.latitude, this.longitude);\n }\n\n private _getAstroName(evt: string): AstroEventName | null {\n if (typeof evt === 'string') {\n const pos = (this.astroListLow as string[]).indexOf(evt.toLowerCase());\n if (pos > -1) {\n return (this.astroList as string[])[pos] as AstroEventName;\n }\n }\n return null;\n }\n}\n"]}
|
package/build/lib/tools.js
CHANGED
package/build/lib/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"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","sourcesContent":["// import { readdirSync, statSync } from 'node:fs';\n// import { join } from 'node:path';\nimport { createHash } from 'node:crypto';\nimport { Agent } from 'node:https';\nimport type { AxiosRequestConfig, ResponseType } from 'axios';\n\n/**\n * Tests whether the given variable is a real object and not an Array\n *\n * @param it The variable to test\n */\nexport function isObject(it: any): boolean {\n // This is necessary because:\n // typeof null === 'object'\n // typeof [] === 'object'\n // [] instanceof Object === true\n return Object.prototype.toString.call(it) === '[object Object]';\n}\n\n/**\n * Tests whether the given variable is really an Array\n *\n * @param it The variable to test\n */\nexport function isArray(it: any): boolean {\n return Array.isArray(it);\n}\n\n/**\n * Finds all matches of a regular expression and returns the matched groups\n *\n * @param regex The regular expression to match against the string\n * @param string The string to test\n */\nexport function matchAll(regex: RegExp, string: string): string[][] {\n const ret: string[][] = [];\n let match: RegExpExecArray | null;\n do {\n match = regex.exec(string);\n if (match) {\n ret.push(match.slice(1));\n }\n } while (match);\n\n return ret;\n}\n\n/**\n * Enumerates all files matching a given predicate\n *\n * @param rootDir The directory to start in\n * @param predicate A function that takes a filename and returns true if the file should be included\n */\n/*export function enumFilesRecursiveSync(rootDir: string, predicate: (filename: string) => boolean): string[] {\n const ret: string[] = [];\n try {\n const filesAndDirs = readdirSync(rootDir);\n for (const f of filesAndDirs) {\n const fullPath = join(rootDir, f);\n\n if (statSync(fullPath).isDirectory()) {\n Array.prototype.push.apply(ret, enumFilesRecursiveSync(fullPath, predicate));\n } else if (typeof predicate === 'function' && predicate(fullPath)) {\n ret.push(fullPath);\n }\n }\n } catch (err: unknown) {\n console.error(`Cannot read directory: \"${rootDir}\": ${err as Error}`);\n }\n\n return ret;\n}*/\n\n/**\n * Promisifies a callback-style function with parameters (err, result)\n *\n * @param fn The callback-style function to promisify\n * @param context The value of `this` in the function\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function promisify(fn: Function, context?: any): (...args: any[]) => Promise<any> {\n return function (...args) {\n // @ts-expect-error We want this behavior\n context = context || this;\n return new Promise((resolve, reject) => {\n try {\n fn.apply(context, [\n ...args,\n (error: Error | string | null, result: null) => {\n if (error) {\n if (typeof error === 'string') {\n return reject(new Error(error));\n }\n return reject(error);\n }\n return resolve(result);\n },\n ]);\n } catch (error: unknown) {\n reject(error as Error);\n }\n });\n };\n}\n\n/**\n * Promisifies a callback-style function without an error parameter\n *\n * @param fn The callback-style function to promisify\n * @param context The value of `this` in the function\n */\n/*\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function promisifyNoError(fn: Function, context: any): (...args: any[]) => Promise<any> {\n return function (...args) {\n // @ts-expect-error We want this behavior\n context = context || this;\n return new Promise(resolve => {\n try {\n fn.apply(context, [...args, (result: any) => resolve(result)]);\n } catch {\n resolve(null); // what to do in this case??\n }\n });\n };\n}*/\n\n/**\n * Creates an MD5 hash of a script source which can be used to check whether the source of a compiled language changed\n *\n * @param source The source code to hash\n */\nexport function hashSource(source: string | Buffer): string {\n return createHash('md5').update(source).digest('hex');\n}\n\nexport function getHttpRequestConfig(\n url: string,\n options?: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record<string, string>;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n allowSelfSignedCerts?: boolean,\n): AxiosRequestConfig {\n options = options || {};\n const timeoutMs = options && !isNaN(options.timeout as number) ? options.timeout : 2000;\n\n const config: AxiosRequestConfig = {\n method: 'get',\n url,\n validateStatus: (status: number): boolean => status >= 200,\n responseType: options && options.responseType ? options.responseType : 'text',\n responseEncoding: 'utf8',\n timeout: timeoutMs,\n //signal: AbortSignal.timeout(timeoutMs), // connection related timeouts\n };\n\n options.headers = options.headers || {};\n\n if (options && options.basicAuth) {\n config.auth = {\n username: options.basicAuth.user,\n password: options.basicAuth.password,\n };\n } else if (options.bearerAuth) {\n options.headers.Authorization = `Bearer ${options.bearerAuth}`;\n } else {\n const uri = new URL(url);\n if (uri.username && uri.password) {\n const username = decodeURIComponent(uri.username);\n const password = decodeURIComponent(uri.password);\n\n config.url = (config.url || '').replace(`${uri.protocol}//${username}:${password}@`, `${uri.protocol}//`);\n config.auth = {\n username,\n password,\n };\n }\n }\n\n // Set default headers\n config.headers = {\n 'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0',\n ...options.headers,\n };\n\n // Certificate validation: per-request option takes priority, then adapter-level setting\n if (options && typeof options?.validateCertificate !== 'undefined') {\n config.httpsAgent = new Agent({\n rejectUnauthorized: options.validateCertificate,\n });\n } else if (allowSelfSignedCerts) {\n config.httpsAgent = new Agent({\n rejectUnauthorized: false,\n });\n }\n\n return config;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/lib/tools.ts"],"names":[],"mappings":"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","sourcesContent":["// import { readdirSync, statSync } from 'node:fs';\n// import { join } from 'node:path';\nimport { createHash } from 'node:crypto';\nimport { Agent } from 'node:https';\nimport type { AxiosRequestConfig, ResponseType } from 'axios';\n\n/**\n * Tests whether the given variable is a real object and not an Array\n *\n * @param it The variable to test\n */\nexport function isObject(it: any): boolean {\n // This is necessary because:\n // typeof null === 'object'\n // typeof [] === 'object'\n // [] instanceof Object === true\n return Object.prototype.toString.call(it) === '[object Object]';\n}\n\n/**\n * Tests whether the given variable is really an Array\n *\n * @param it The variable to test\n */\nexport function isArray(it: any): boolean {\n return Array.isArray(it);\n}\n\n/**\n * Finds all matches of a regular expression and returns the matched groups\n *\n * @param regex The regular expression to match against the string\n * @param string The string to test\n */\nexport function matchAll(regex: RegExp, string: string): string[][] {\n const ret: string[][] = [];\n let match: RegExpExecArray | null;\n do {\n match = regex.exec(string);\n if (match) {\n ret.push(match.slice(1));\n }\n } while (match);\n\n return ret;\n}\n\n/**\n * Enumerates all files matching a given predicate\n *\n * @param rootDir The directory to start in\n * @param predicate A function that takes a filename and returns true if the file should be included\n */\n/*export function enumFilesRecursiveSync(rootDir: string, predicate: (filename: string) => boolean): string[] {\n const ret: string[] = [];\n try {\n const filesAndDirs = readdirSync(rootDir);\n for (const f of filesAndDirs) {\n const fullPath = join(rootDir, f);\n\n if (statSync(fullPath).isDirectory()) {\n Array.prototype.push.apply(ret, enumFilesRecursiveSync(fullPath, predicate));\n } else if (typeof predicate === 'function' && predicate(fullPath)) {\n ret.push(fullPath);\n }\n }\n } catch (err: unknown) {\n console.error(`Cannot read directory: \"${rootDir}\": ${err as Error}`);\n }\n\n return ret;\n}*/\n\n/**\n * Promisifies a callback-style function with parameters (err, result)\n *\n * @param fn The callback-style function to promisify\n * @param context The value of `this` in the function\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function promisify(fn: Function, context?: any): (...args: any[]) => Promise<any> {\n return function (...args) {\n // @ts-expect-error We want this behavior\n context = context || this;\n return new Promise((resolve, reject) => {\n try {\n fn.apply(context, [\n ...args,\n (error: Error | string | null, result: null) => {\n if (error) {\n if (typeof error === 'string') {\n return reject(new Error(error));\n }\n return reject(error);\n }\n return resolve(result);\n },\n ]);\n } catch (error: unknown) {\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n };\n}\n\n/**\n * Promisifies a callback-style function without an error parameter\n *\n * @param fn The callback-style function to promisify\n * @param context The value of `this` in the function\n */\n/*\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function promisifyNoError(fn: Function, context: any): (...args: any[]) => Promise<any> {\n return function (...args) {\n // @ts-expect-error We want this behavior\n context = context || this;\n return new Promise(resolve => {\n try {\n fn.apply(context, [...args, (result: any) => resolve(result)]);\n } catch {\n resolve(null); // what to do in this case??\n }\n });\n };\n}*/\n\n/**\n * Creates an MD5 hash of a script source which can be used to check whether the source of a compiled language changed\n *\n * @param source The source code to hash\n */\nexport function hashSource(source: string | Buffer): string {\n return createHash('md5').update(source).digest('hex');\n}\n\nexport function getHttpRequestConfig(\n url: string,\n options?: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record<string, string>;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n allowSelfSignedCerts?: boolean,\n): AxiosRequestConfig {\n options = options || {};\n const timeoutMs = options && !isNaN(options.timeout as number) ? options.timeout : 2000;\n\n const config: AxiosRequestConfig = {\n method: 'get',\n url,\n validateStatus: (status: number): boolean => status >= 200,\n responseType: options && options.responseType ? options.responseType : 'text',\n responseEncoding: 'utf8',\n timeout: timeoutMs,\n //signal: AbortSignal.timeout(timeoutMs), // connection related timeouts\n };\n\n options.headers = options.headers || {};\n\n if (options && options.basicAuth) {\n config.auth = {\n username: options.basicAuth.user,\n password: options.basicAuth.password,\n };\n } else if (options.bearerAuth) {\n options.headers.Authorization = `Bearer ${options.bearerAuth}`;\n } else {\n const uri = new URL(url);\n if (uri.username && uri.password) {\n const username = decodeURIComponent(uri.username);\n const password = decodeURIComponent(uri.password);\n\n config.url = (config.url || '').replace(`${uri.protocol}//${username}:${password}@`, `${uri.protocol}//`);\n config.auth = {\n username,\n password,\n };\n }\n }\n\n // Set default headers\n config.headers = {\n 'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0',\n ...options.headers,\n };\n\n // Certificate validation: per-request option takes priority, then adapter-level setting\n if (options && typeof options?.validateCertificate !== 'undefined') {\n config.httpsAgent = new Agent({\n rejectUnauthorized: options.validateCertificate,\n });\n } else if (allowSelfSignedCerts) {\n config.httpsAgent = new Agent({\n rejectUnauthorized: false,\n });\n }\n\n return config;\n}\n"]}
|
|
@@ -15,16 +15,22 @@ exports.tsCompilerOptions = {
|
|
|
15
15
|
// This flag was introduced in TS 4.4 and may break a lot of legacy scripts
|
|
16
16
|
// Better keep it turned off
|
|
17
17
|
useUnknownInCatchVariables: false,
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
//
|
|
18
|
+
// Scripts are executed as a Node.js `vm.Script`, which does not support the `import` keyword,
|
|
19
|
+
// so the emitted code must be CommonJS. This has to be set explicitly: TypeScript only defaults
|
|
20
|
+
// `module` to CommonJS for the ES5/ES3 targets and would emit ES modules for the target below.
|
|
21
|
+
module: typescript_1.ModuleKind.CommonJS,
|
|
22
|
+
// Node.js 18+ runs ES2022 natively, so nothing has to be downleveled. This also makes
|
|
23
|
+
// `downlevelIteration` obsolete - QueryResults stays iterable without it
|
|
24
|
+
// (https://github.com/ioBroker/ioBroker.javascript/pull/663#issuecomment-721645705).
|
|
25
|
+
target: typescript_1.ScriptTarget.ES2022,
|
|
26
|
+
// From ES2022 on, TypeScript would emit class fields as native declarations ([[Define]]
|
|
27
|
+
// semantics). Keep the previous assignment semantics (`this.x = ...` in the constructor),
|
|
28
|
+
// so existing user scripts behave unchanged.
|
|
29
|
+
useDefineForClassFields: false,
|
|
30
|
+
// `virtual-tsc` overwrites `moduleResolution` with "node10", which TypeScript 6 reports as a
|
|
31
|
+
// deprecation error. It cannot be configured from here, so deprecations have to be tolerated
|
|
32
|
+
// until that is fixed upstream.
|
|
33
|
+
ignoreDeprecations: '6.0',
|
|
28
34
|
lib: [`lib.${exports.targetTsLib}.d.ts`],
|
|
29
35
|
};
|
|
30
36
|
exports.jsDeclarationCompilerOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescriptSettings.js","sourceRoot":"","sources":["../../src/lib/typescriptSettings.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"typescriptSettings.js","sourceRoot":"","sources":["../../src/lib/typescriptSettings.ts"],"names":[],"mappings":";;;AAAA,2CAA4E;AAE5E,8CAA8C;AAC9C,uEAAuE;AAC1D,QAAA,WAAW,GAAG,QAAQ,CAAC;AAEvB,QAAA,iBAAiB,GAAoB;IAC9C,+BAA+B;IAC/B,aAAa,EAAE,IAAI;IACnB,uCAAuC;IACvC,WAAW,EAAE,IAAI;IACjB,wEAAwE;IACxE,eAAe,EAAE,IAAI;IACrB,2EAA2E;IAC3E,4BAA4B;IAC5B,0BAA0B,EAAE,KAAK;IACjC,8FAA8F;IAC9F,gGAAgG;IAChG,+FAA+F;IAC/F,MAAM,EAAE,uBAAU,CAAC,QAAQ;IAC3B,sFAAsF;IACtF,yEAAyE;IACzE,qFAAqF;IACrF,MAAM,EAAE,yBAAY,CAAC,MAAM;IAC3B,wFAAwF;IACxF,0FAA0F;IAC1F,6CAA6C;IAC7C,uBAAuB,EAAE,KAAK;IAC9B,6FAA6F;IAC7F,6FAA6F;IAC7F,gCAAgC;IAChC,kBAAkB,EAAE,KAAK;IACzB,GAAG,EAAE,CAAC,OAAO,mBAAW,OAAO,CAAC;CACnC,CAAC;AAEW,QAAA,4BAA4B,GAAoB;IACzD,GAAG,yBAAiB;IACpB,sCAAsC;IACtC,mBAAmB,EAAE,IAAI;IACzB,eAAe;IACf,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,MAAM,EAAE,KAAK;CAChB,CAAC","sourcesContent":["import { type CompilerOptions, ModuleKind, ScriptTarget } from 'typescript';\n\n// Node.js 18+ supports the features of ES2022\n// consider changing this, so we get to support the newest features too\nexport const targetTsLib = 'es2022';\n\nexport const tsCompilerOptions: CompilerOptions = {\n // don't compile faulty scripts\n noEmitOnError: true,\n // emit declarations for global scripts\n declaration: true,\n // This enables TS users to `import * as ... from` and `import ... from`\n esModuleInterop: true,\n // This flag was introduced in TS 4.4 and may break a lot of legacy scripts\n // Better keep it turned off\n useUnknownInCatchVariables: false,\n // Scripts are executed as a Node.js `vm.Script`, which does not support the `import` keyword,\n // so the emitted code must be CommonJS. This has to be set explicitly: TypeScript only defaults\n // `module` to CommonJS for the ES5/ES3 targets and would emit ES modules for the target below.\n module: ModuleKind.CommonJS,\n // Node.js 18+ runs ES2022 natively, so nothing has to be downleveled. This also makes\n // `downlevelIteration` obsolete - QueryResults stays iterable without it\n // (https://github.com/ioBroker/ioBroker.javascript/pull/663#issuecomment-721645705).\n target: ScriptTarget.ES2022,\n // From ES2022 on, TypeScript would emit class fields as native declarations ([[Define]]\n // semantics). Keep the previous assignment semantics (`this.x = ...` in the constructor),\n // so existing user scripts behave unchanged.\n useDefineForClassFields: false,\n // `virtual-tsc` overwrites `moduleResolution` with \"node10\", which TypeScript 6 reports as a\n // deprecation error. It cannot be configured from here, so deprecations have to be tolerated\n // until that is fixed upstream.\n ignoreDeprecations: '6.0',\n lib: [`lib.${targetTsLib}.d.ts`],\n};\n\nexport const jsDeclarationCompilerOptions: CompilerOptions = {\n ...tsCompilerOptions,\n // we only care about the declarations\n emitDeclarationOnly: true,\n // allow errors\n noEmitOnError: false,\n noImplicitAny: false,\n strict: false,\n};\n"]}
|
|
@@ -156,7 +156,7 @@ function resolveTypings(pkg, adapterScopedPackageName, wrapInDeclareModule) {
|
|
|
156
156
|
function mustBeHoisted(s, isGlobal) {
|
|
157
157
|
return !!(
|
|
158
158
|
// Import/export statements must be moved to the top
|
|
159
|
-
(
|
|
159
|
+
(0, typescript_1.isImportDeclaration)(s) ||
|
|
160
160
|
(0, typescript_1.isImportEqualsDeclaration)(s) ||
|
|
161
161
|
(0, typescript_1.isExportDeclaration)(s) ||
|
|
162
162
|
(0, typescript_1.isExportAssignment)(s) ||
|
|
@@ -169,7 +169,7 @@ function mustBeHoisted(s, isGlobal) {
|
|
|
169
169
|
// in global scripts we don't wrap classes and functions, so they can be accessed from non-global scripts
|
|
170
170
|
((0, typescript_1.isClassDeclaration)(s) || (0, typescript_1.isFunctionDeclaration)(s))) ||
|
|
171
171
|
// and declare ... / export ... statements
|
|
172
|
-
s.modifiers?.some(s => s.kind === typescript_1.SyntaxKind.DeclareKeyword || s.kind === typescript_1.SyntaxKind.ExportKeyword))
|
|
172
|
+
s.modifiers?.some(s => s.kind === typescript_1.SyntaxKind.DeclareKeyword || s.kind === typescript_1.SyntaxKind.ExportKeyword));
|
|
173
173
|
}
|
|
174
174
|
function canBeExported(s) {
|
|
175
175
|
return (
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescriptTools.js","sourceRoot":"","sources":["../../src/lib/typescriptTools.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join, normalize, relative } from 'node:path';\nimport {\n type Statement,\n isImportDeclaration,\n isImportEqualsDeclaration,\n isExportDeclaration,\n isExportAssignment,\n isTypeAliasDeclaration,\n isInterfaceDeclaration,\n isModuleDeclaration,\n isEnumDeclaration,\n isClassDeclaration,\n isFunctionDeclaration,\n isVariableStatement,\n isExpressionStatement,\n createSourceFile,\n createPrinter,\n transform,\n ScriptTarget,\n factory,\n SyntaxKind,\n type Modifier,\n NodeFlags,\n type ModuleDeclaration,\n visitNode,\n visitNodes,\n isSourceFile,\n EmitHint,\n type NodeArray,\n type TransformerFactory,\n type SourceFile,\n type TransformationContext,\n type Transformer,\n} from 'typescript';\nimport { matchAll } from './tools';\n\n/**\n * Resolves all TypeScript lib files for the editor\n *\n * @param targetLib The lib to target (e.g., es2017)\n */\nexport function resolveTypescriptLibs(\n targetLib: 'es2017' | 'es2018' | 'es2019' | 'es2020' | 'es2021' | 'es2022' | 'esnext',\n): Record<string, string> {\n const typescriptLibRoot = dirname(require.resolve(`typescript/lib/lib.d.ts`));\n const ret: Record<string, string> = {};\n\n const libReferenceRegex = /\\/\\/\\/ <reference lib=[\"']([^\"']+)[\"'] \\/>/g;\n const matchAllLibs = (str: string): string[] => matchAll(libReferenceRegex, str).map(groups => groups[0]);\n\n const libQueue: string[] = [targetLib];\n while (libQueue.length > 0) {\n const libName = libQueue.shift();\n const filename = `lib.${libName}.d.ts`;\n // Read the file and remember it in the return dictionary\n const fileContent = readFileSync(join(typescriptLibRoot, filename), 'utf8');\n ret[filename] = fileContent;\n // If this file references another lib file, we need to load that too.\n // A reference looks like this: /// <reference lib=\"es2015.core\" />\n // Find all libs we have not loaded yet\n matchAllLibs(fileContent)\n .filter(lib => !(`lib.${lib}.d.ts` in ret))\n .forEach(lib => libQueue.push(lib));\n }\n\n return ret;\n}\n\nfunction normalizeDTSImport(filename: string): string {\n // An import is either...\n // a normal import\n if (filename.endsWith('.d.ts')) {\n return filename;\n }\n // an extensionless import\n if (existsSync(`${filename}.d.ts`)) {\n return `${filename}.d.ts`;\n }\n // or a directory import\n return join(filename, 'index.d.ts');\n}\n\n/**\n * Resolves the type declarations of a 3rd party package for the editor\n *\n * @param pkg The package whose typings we're interested in\n * @param adapterScopedPackageName the package name on the system\n * @param wrapInDeclareModule Whether the root file should be wrapped in `declare module \"<pkg>\" { ... }`\n * @returns The found declarations or undefined if none were found\n */\nexport function resolveTypings(\n pkg: string,\n adapterScopedPackageName: string,\n wrapInDeclareModule?: boolean,\n): Record<string, string> | undefined {\n let packageJsonPath: string | undefined;\n let packageJson: Record<string, any> | undefined;\n let rootTypings: string | undefined;\n let pkgIncludesTypings = true;\n\n function tryToLoadPackage(path: string): void {\n try {\n packageJsonPath = require.resolve(path);\n packageJson = require(packageJsonPath);\n rootTypings =\n typeof (packageJson as Record<string, any>).types === 'string'\n ? (packageJson as Record<string, any>).types\n : typeof (packageJson as Record<string, any>).typings === 'string'\n ? (packageJson as Record<string, any>).typings\n : undefined;\n } catch {\n /* ignore */\n }\n }\n\n // First, try to resolve the package itself in case it brings its own typings\n tryToLoadPackage(`${adapterScopedPackageName}/package.json`);\n\n if (!rootTypings) {\n tryToLoadPackage(`${pkg}/package.json`);\n }\n // If that didn't work, try again with the @types version of the package\n if (!rootTypings) {\n tryToLoadPackage(`@types/${pkg}/package.json`);\n pkgIncludesTypings = false;\n }\n\n // TODO: If that didn't work, download @types/<packagename> and retry the previous step\n\n // Nothing to do here since we found no packages\n if (!rootTypings) {\n return undefined;\n }\n\n if (!packageJsonPath) {\n return undefined;\n }\n\n const packageRoot: string = dirname(packageJsonPath);\n const normalizeImportPath = (filename: string): string =>\n normalize(\n `node_modules/${pkgIncludesTypings ? adapterScopedPackageName : `@types/${pkg}`}/${relative(packageRoot, filename)}`,\n ).replace(/\\\\/g, '/');\n\n const ret: Record<string, string> = {};\n\n // We need to look at `import/export ... from 'modulename'` and `/// <reference path='...' />`\n const importDtsRegex = /^\\s*(?:import|export) .+ from [\"'](\\.+\\/[^\"']+)[\"']/g;\n const pathReferenceRegex = /\\/\\/\\/ <reference path=[\"']([^\"']+)[\"'] \\/>/g;\n const matchAllImports = (str: string): string[] =>\n [...matchAll(importDtsRegex, str), ...matchAll(pathReferenceRegex, str)].map(groups => groups[0]);\n\n // the paths are relative to the package.json - we need an absolute path to read the files\n rootTypings = join(packageRoot, rootTypings);\n // some @types packages specify `index` as their typings file instead of `index.d.ts`\n rootTypings = normalizeDTSImport(rootTypings);\n\n // include package.json in typings, so TypeScript can look up the correct entry point\n const relativePath = `node_modules/${pkgIncludesTypings ? '' : '@types/'}${pkg}/package.json`.replace(/\\\\/g, '/');\n ret[relativePath] = JSON.stringify(packageJson);\n\n // Used to test whether a .d.ts file already uses \"declare module\" or not\n const declareModuleRegex = /^\\s*declare module/gm;\n\n // recursively load all typings\n const definitionQueue = [rootTypings];\n while (definitionQueue.length > 0) {\n const filename: string = definitionQueue.shift() as string;\n const dirName = dirname(filename);\n // Read the file and remember it in the return dictionary\n let fileContent: string;\n try {\n fileContent = readFileSync(filename, 'utf8');\n } catch (e: any) {\n // The typings are malformed\n console.error(`Failed to load definitions for ${pkg}: ${e.toString()}`);\n // Since we cannot use them, return undefined\n return undefined;\n }\n // We need to store the filename relative to the base dir\n const relativePath = normalizeImportPath(filename);\n // If necessary, wrap the root typings (only those!)\n ret[relativePath] =\n wrapInDeclareModule && filename === rootTypings && !declareModuleRegex.test(fileContent)\n ? `declare module \"${pkg}\" { ${fileContent} }`\n : fileContent;\n // If this file references another .d.ts file, we need to load that too\n matchAllImports(fileContent)\n // resolve the file relative to the current directory\n .map(file => join(dirName, file))\n // find out the correct path of the file we want to import\n .map(normalizeDTSImport)\n // Find all libs we have not loaded yet\n .filter(file => !(normalizeImportPath(file) in ret))\n .forEach(file => definitionQueue.push(file));\n }\n // Avoid returning empty declarations\n if (Object.keys(ret).length === 0) {\n return undefined;\n }\n return ret;\n}\n\n/**\n * @param s Statement to check whether it must be hoisted to the top of the file\n * @param isGlobal Whether this is a global script or a normal one\n */\nfunction mustBeHoisted(s: Statement & { modifiers?: Modifier[] }, isGlobal?: boolean): boolean {\n return !!(\n // Import/export statements must be moved to the top\n (\n isImportDeclaration(s) ||\n isImportEqualsDeclaration(s) ||\n isExportDeclaration(s) ||\n isExportAssignment(s) ||\n // as well as many declarations\n isTypeAliasDeclaration(s) ||\n isInterfaceDeclaration(s) ||\n isModuleDeclaration(s) ||\n isEnumDeclaration(s) ||\n (isGlobal &&\n // in global scripts we don't wrap classes and functions, so they can be accessed from non-global scripts\n (isClassDeclaration(s) || isFunctionDeclaration(s))) ||\n // and declare ... / export ... statements\n s.modifiers?.some(s => s.kind === SyntaxKind.DeclareKeyword || s.kind === SyntaxKind.ExportKeyword)\n )\n );\n}\n\nfunction canBeExported(s: Statement): boolean {\n return (\n // const, let, var\n isVariableStatement(s) ||\n // type, interface, enum, class, function\n isTypeAliasDeclaration(s) ||\n isInterfaceDeclaration(s) ||\n isEnumDeclaration(s) ||\n isClassDeclaration(s) ||\n isFunctionDeclaration(s)\n );\n}\n\nfunction addExportModifier(s: Statement & { modifiers?: Modifier[] }): Statement {\n let modifiers: Modifier[] | undefined;\n // Add export modifiers\n if (!s.modifiers) {\n modifiers = [factory.createModifier(SyntaxKind.ExportKeyword)];\n } else if (!s.modifiers.some(m => m.kind === SyntaxKind.ExportKeyword)) {\n modifiers = [...s.modifiers, factory.createModifier(SyntaxKind.ExportKeyword)];\n } else {\n return s;\n }\n\n if (isVariableStatement(s)) {\n return factory.updateVariableStatement(s, modifiers, s.declarationList);\n }\n if (isTypeAliasDeclaration(s)) {\n return factory.updateTypeAliasDeclaration(s, modifiers, s.name, s.typeParameters, s.type);\n }\n if (isInterfaceDeclaration(s)) {\n return factory.updateInterfaceDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isEnumDeclaration(s)) {\n return factory.updateEnumDeclaration(s, modifiers, s.name, s.members);\n }\n if (isClassDeclaration(s)) {\n return factory.updateClassDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isFunctionDeclaration(s)) {\n return factory.updateFunctionDeclaration(\n s,\n modifiers,\n s.asteriskToken,\n s.name,\n s.typeParameters,\n s.parameters,\n s.type,\n s.body,\n );\n }\n return s;\n}\n\nfunction removeDeclareModifier(s: Statement & { modifiers?: Modifier[] }): Statement {\n let modifiers: Modifier[] | undefined;\n // Remove declare modifiers\n if (s.modifiers) {\n modifiers = s.modifiers.filter(m => m.kind !== SyntaxKind.DeclareKeyword);\n } else {\n return s;\n }\n\n if (isVariableStatement(s)) {\n return factory.updateVariableStatement(s, modifiers, s.declarationList);\n }\n if (isTypeAliasDeclaration(s)) {\n return factory.updateTypeAliasDeclaration(s, modifiers, s.name, s.typeParameters, s.type);\n }\n if (isInterfaceDeclaration(s)) {\n return factory.updateInterfaceDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isEnumDeclaration(s)) {\n return factory.updateEnumDeclaration(s, modifiers, s.name, s.members);\n }\n if (isClassDeclaration(s)) {\n return factory.updateClassDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isFunctionDeclaration(s)) {\n return factory.updateFunctionDeclaration(\n s,\n modifiers,\n s.asteriskToken,\n s.name,\n s.typeParameters,\n s.parameters,\n s.type,\n s.body,\n );\n }\n\n return s;\n}\n\n// taken from node_modules\\@types\\node\\globals.d.ts\n// the globally available things must be wrapped in `declare global` if the user wants to augment them\nconst NodeJSGlobals = [\n 'Array',\n 'ArrayBuffer',\n 'Boolean',\n 'Buffer',\n 'DataView',\n 'Date',\n 'Error',\n 'EvalError',\n 'Float32Array',\n 'Float64Array',\n 'Function',\n 'GLOBAL',\n 'Infinity',\n 'Int16Array',\n 'Int32Array',\n 'Int8Array',\n 'Intl',\n 'JSON',\n 'Map',\n 'Math',\n 'NaN',\n 'Number',\n 'Object',\n 'Promise',\n 'RangeError',\n 'ReferenceError',\n 'RegExp',\n 'Set',\n 'String',\n 'Symbol',\n 'SyntaxError',\n 'TypeError',\n 'URIError',\n 'Uint16Array',\n 'Uint32Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'WeakMap',\n 'WeakSet',\n 'clearImmediate',\n 'clearInterval',\n 'clearTimeout',\n 'console',\n 'decodeURI',\n 'decodeURIComponent',\n 'encodeURI',\n 'encodeURIComponent',\n 'escape',\n 'eval',\n 'global',\n 'isFinite',\n 'isNaN',\n 'parseFloat',\n 'parseInt',\n 'process',\n 'root',\n 'setImmediate',\n 'setInterval',\n 'setTimeout',\n 'queueMicrotask',\n 'undefined',\n 'unescape',\n 'gc',\n 'v8debug',\n];\n\nfunction isGlobalAugmentation(s: Statement): boolean {\n return !!(\n (isInterfaceDeclaration(s) || isClassDeclaration(s) || isFunctionDeclaration(s)) &&\n s.name &&\n NodeJSGlobals.includes(s.name.text)\n );\n}\n\nfunction wrapInDeclareGlobal(statements: Statement[]): ModuleDeclaration {\n return factory.createModuleDeclaration(\n [factory.createModifier(SyntaxKind.DeclareKeyword)],\n factory.createIdentifier('global'),\n factory.createModuleBlock(statements),\n NodeFlags.GlobalAugmentation,\n );\n}\n\n/**\n * Takes a TypeScript script and does the necessary transformations, so it can be compiled properly\n *\n * @param source The original TypeScript source\n * @param isGlobal Whether the transformed script is a global script or not\n */\nexport function transformScriptBeforeCompilation(source: string, isGlobal?: boolean): string {\n const transformer: TransformerFactory<SourceFile> = (_context: TransformationContext): Transformer<SourceFile> => {\n return (sourceFile: SourceFile) =>\n visitNode(sourceFile, (node: SourceFile): any => {\n if (isSourceFile(node)) {\n // Wrap all declarations that augment global interfaces in `declare global`\n const augmentations = node.statements.filter(s => isGlobalAugmentation(s));\n const nonAugmentations = node.statements.filter(s => !isGlobalAugmentation(s));\n\n // If there is no top level await, don't move all the statements around\n const hasTLA = node.statements.some(\n s => isExpressionStatement(s) && s.expression.kind === SyntaxKind.AwaitExpression,\n );\n // Move all statements to the top of the file that cannot appear in a function body\n let hoistedStatements = hasTLA\n ? factory.createNodeArray(nonAugmentations.filter(s => mustBeHoisted(s, isGlobal)))\n : factory.createNodeArray(nonAugmentations);\n\n // The rest gets wrapped\n const wrappedStatements = hasTLA ? nonAugmentations.filter(s => !mustBeHoisted(s, isGlobal)) : [];\n\n // When transforming global scripts, we need to do a couple of things\n if (isGlobal) {\n // 1. We need to add an export modifier to everything at the top level that can be exported\n hoistedStatements = visitNodes(\n hoistedStatements,\n // @ts-expect-error s is definitely a Statement\n s => (canBeExported(s) ? addExportModifier(s) : s),\n ) as NodeArray<Statement>;\n // 3. We need to transform the generated declarations to use `declare global` (this will happen in transformGlobalDeclarations)\n }\n const needsEmptyExport =\n // An empty export is necessary when there is no import declaration\n !node.statements.some(s => isImportDeclaration(s) || isImportEqualsDeclaration(s)) &&\n // And there is no statement in a global script which had an export modifier added\n (!(\n isGlobal &&\n hoistedStatements.some(\n // @ts-expect-error s should have modifiers\n s => s.modifiers?.some(m => m.kind === SyntaxKind.ExportKeyword),\n )\n ) ||\n // Or if there is a `declare global` statement\n !!augmentations);\n\n return factory.updateSourceFile(node, [\n // Put the hoisted statements at the top (or all of them if there's no top level await)\n ...hoistedStatements,\n // Then add everything that augments the global scope\n ...(augmentations && augmentations.length ? [wrapInDeclareGlobal(augmentations)] : []),\n ...(hasTLA\n ? // If there is a top-level await, wrap all non-hoisted statements in (async () => { ... })();\n [\n factory.createExpressionStatement(\n factory.createCallExpression(\n factory.createArrowFunction(\n [factory.createModifier(SyntaxKind.AsyncKeyword)],\n undefined,\n [],\n undefined,\n undefined,\n factory.createBlock(wrappedStatements),\n ),\n undefined,\n undefined,\n ),\n ),\n ]\n : []),\n ...(needsEmptyExport\n ? [\n // Put an empty export {}; at the bottom to force TypeScript to treat the script as a module\n factory.createExportDeclaration(\n undefined, // ModifierLike[] | undefined\n false, // isTypeOnly\n factory.createNamedExports([]), // NamedExportBindings | undefined\n undefined, // moduleSpecifier\n undefined, // attributes\n ),\n ]\n : []),\n ]);\n }\n return node;\n });\n };\n\n const sourceFile = createSourceFile('index.ts', source, ScriptTarget.ESNext, /* setParentNodes */ true);\n\n const result = transform(sourceFile, [transformer]);\n return createPrinter().printNode(EmitHint.Unspecified, result.transformed[0], sourceFile);\n}\n\n/**\n * Takes the global declarations for a TypeScript and wraps export statements in `declare global`\n *\n * @param decl The untransformed global declarations\n */\nexport function transformGlobalDeclarations(decl: string): string {\n const transformer: TransformerFactory<SourceFile> = (_context: TransformationContext): any => {\n return (sourceFile: SourceFile) =>\n visitNode(sourceFile, (node: SourceFile): SourceFile => {\n if (isSourceFile(node)) {\n // All non-export-statements stay at the root level, the rest is wrapped in `declare global`\n const exportStatements = node.statements.filter(\n // @ts-expect-error s should have modifiers\n s => s.modifiers?.some(m => m.kind === SyntaxKind.ExportKeyword),\n );\n const otherStatements = node.statements.filter(s => !exportStatements.includes(s));\n\n const hasExportStatements = exportStatements.length > 0;\n const hasImport = otherStatements.some(s => isImportDeclaration(s) || isImportEqualsDeclaration(s));\n\n return factory.updateSourceFile(node, [\n ...otherStatements,\n ...(hasExportStatements\n ? [wrapInDeclareGlobal(exportStatements.map(s => removeDeclareModifier(s)))]\n : []),\n ...(hasImport\n ? [] // If there is an import, the script is already treated as a module\n : [\n // Otherwise, put an empty export {}; at the bottom to force TypeScript to treat the script as a module\n factory.createExportDeclaration(\n undefined,\n false,\n factory.createNamedExports([]),\n undefined,\n undefined,\n ),\n ]),\n ]);\n }\n\n return node;\n });\n };\n\n const sourceFile = createSourceFile('index.d.ts', decl, ScriptTarget.ESNext, /* setParentNodes */ true);\n\n const result = transform(sourceFile, [transformer]);\n return createPrinter().printNode(EmitHint.Unspecified, result.transformed[0], sourceFile);\n}\n\n/**\n * Translates a script ID to a filename for the compiler\n *\n * @param scriptID The ID of the script\n */\nexport function scriptIdToTSFilename(scriptID: string): string {\n return `${scriptID.replace(/^script.js./, '').replace(/\\./g, '/')}.ts`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"typescriptTools.js","sourceRoot":"","sources":["../../src/lib/typescriptTools.ts"],"names":[],"mappings":"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","sourcesContent":["'use strict';\n\nimport { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join, normalize, relative } from 'node:path';\nimport {\n type Statement,\n isImportDeclaration,\n isImportEqualsDeclaration,\n isExportDeclaration,\n isExportAssignment,\n isTypeAliasDeclaration,\n isInterfaceDeclaration,\n isModuleDeclaration,\n isEnumDeclaration,\n isClassDeclaration,\n isFunctionDeclaration,\n isVariableStatement,\n isExpressionStatement,\n createSourceFile,\n createPrinter,\n transform,\n ScriptTarget,\n factory,\n SyntaxKind,\n type Modifier,\n NodeFlags,\n type ModuleDeclaration,\n visitNode,\n visitNodes,\n isSourceFile,\n EmitHint,\n type NodeArray,\n type TransformerFactory,\n type SourceFile,\n type TransformationContext,\n type Transformer,\n} from 'typescript';\nimport { matchAll } from './tools';\n\n/**\n * Resolves all TypeScript lib files for the editor\n *\n * @param targetLib The lib to target (e.g., es2017)\n */\nexport function resolveTypescriptLibs(\n targetLib: 'es2017' | 'es2018' | 'es2019' | 'es2020' | 'es2021' | 'es2022' | 'esnext',\n): Record<string, string> {\n const typescriptLibRoot = dirname(require.resolve(`typescript/lib/lib.d.ts`));\n const ret: Record<string, string> = {};\n\n const libReferenceRegex = /\\/\\/\\/ <reference lib=[\"']([^\"']+)[\"'] \\/>/g;\n const matchAllLibs = (str: string): string[] => matchAll(libReferenceRegex, str).map(groups => groups[0]);\n\n const libQueue: string[] = [targetLib];\n while (libQueue.length > 0) {\n const libName = libQueue.shift();\n const filename = `lib.${libName}.d.ts`;\n // Read the file and remember it in the return dictionary\n const fileContent = readFileSync(join(typescriptLibRoot, filename), 'utf8');\n ret[filename] = fileContent;\n // If this file references another lib file, we need to load that too.\n // A reference looks like this: /// <reference lib=\"es2015.core\" />\n // Find all libs we have not loaded yet\n matchAllLibs(fileContent)\n .filter(lib => !(`lib.${lib}.d.ts` in ret))\n .forEach(lib => libQueue.push(lib));\n }\n\n return ret;\n}\n\nfunction normalizeDTSImport(filename: string): string {\n // An import is either...\n // a normal import\n if (filename.endsWith('.d.ts')) {\n return filename;\n }\n // an extensionless import\n if (existsSync(`${filename}.d.ts`)) {\n return `${filename}.d.ts`;\n }\n // or a directory import\n return join(filename, 'index.d.ts');\n}\n\n/**\n * Resolves the type declarations of a 3rd party package for the editor\n *\n * @param pkg The package whose typings we're interested in\n * @param adapterScopedPackageName the package name on the system\n * @param wrapInDeclareModule Whether the root file should be wrapped in `declare module \"<pkg>\" { ... }`\n * @returns The found declarations or undefined if none were found\n */\nexport function resolveTypings(\n pkg: string,\n adapterScopedPackageName: string,\n wrapInDeclareModule?: boolean,\n): Record<string, string> | undefined {\n let packageJsonPath: string | undefined;\n let packageJson: Record<string, any> | undefined;\n let rootTypings: string | undefined;\n let pkgIncludesTypings = true;\n\n function tryToLoadPackage(path: string): void {\n try {\n packageJsonPath = require.resolve(path);\n packageJson = require(packageJsonPath);\n rootTypings =\n typeof (packageJson as Record<string, any>).types === 'string'\n ? (packageJson as Record<string, any>).types\n : typeof (packageJson as Record<string, any>).typings === 'string'\n ? (packageJson as Record<string, any>).typings\n : undefined;\n } catch {\n /* ignore */\n }\n }\n\n // First, try to resolve the package itself in case it brings its own typings\n tryToLoadPackage(`${adapterScopedPackageName}/package.json`);\n\n if (!rootTypings) {\n tryToLoadPackage(`${pkg}/package.json`);\n }\n // If that didn't work, try again with the @types version of the package\n if (!rootTypings) {\n tryToLoadPackage(`@types/${pkg}/package.json`);\n pkgIncludesTypings = false;\n }\n\n // TODO: If that didn't work, download @types/<packagename> and retry the previous step\n\n // Nothing to do here since we found no packages\n if (!rootTypings) {\n return undefined;\n }\n\n if (!packageJsonPath) {\n return undefined;\n }\n\n const packageRoot: string = dirname(packageJsonPath);\n const normalizeImportPath = (filename: string): string =>\n normalize(\n `node_modules/${pkgIncludesTypings ? adapterScopedPackageName : `@types/${pkg}`}/${relative(packageRoot, filename)}`,\n ).replace(/\\\\/g, '/');\n\n const ret: Record<string, string> = {};\n\n // We need to look at `import/export ... from 'modulename'` and `/// <reference path='...' />`\n const importDtsRegex = /^\\s*(?:import|export) .+ from [\"'](\\.+\\/[^\"']+)[\"']/g;\n const pathReferenceRegex = /\\/\\/\\/ <reference path=[\"']([^\"']+)[\"'] \\/>/g;\n const matchAllImports = (str: string): string[] =>\n [...matchAll(importDtsRegex, str), ...matchAll(pathReferenceRegex, str)].map(groups => groups[0]);\n\n // the paths are relative to the package.json - we need an absolute path to read the files\n rootTypings = join(packageRoot, rootTypings);\n // some @types packages specify `index` as their typings file instead of `index.d.ts`\n rootTypings = normalizeDTSImport(rootTypings);\n\n // include package.json in typings, so TypeScript can look up the correct entry point\n const relativePath = `node_modules/${pkgIncludesTypings ? '' : '@types/'}${pkg}/package.json`.replace(/\\\\/g, '/');\n ret[relativePath] = JSON.stringify(packageJson);\n\n // Used to test whether a .d.ts file already uses \"declare module\" or not\n const declareModuleRegex = /^\\s*declare module/gm;\n\n // recursively load all typings\n const definitionQueue = [rootTypings];\n while (definitionQueue.length > 0) {\n const filename: string = definitionQueue.shift() as string;\n const dirName = dirname(filename);\n // Read the file and remember it in the return dictionary\n let fileContent: string;\n try {\n fileContent = readFileSync(filename, 'utf8');\n } catch (e: any) {\n // The typings are malformed\n console.error(`Failed to load definitions for ${pkg}: ${e.toString()}`);\n // Since we cannot use them, return undefined\n return undefined;\n }\n // We need to store the filename relative to the base dir\n const relativePath = normalizeImportPath(filename);\n // If necessary, wrap the root typings (only those!)\n ret[relativePath] =\n wrapInDeclareModule && filename === rootTypings && !declareModuleRegex.test(fileContent)\n ? `declare module \"${pkg}\" { ${fileContent} }`\n : fileContent;\n // If this file references another .d.ts file, we need to load that too\n matchAllImports(fileContent)\n // resolve the file relative to the current directory\n .map(file => join(dirName, file))\n // find out the correct path of the file we want to import\n .map(normalizeDTSImport)\n // Find all libs we have not loaded yet\n .filter(file => !(normalizeImportPath(file) in ret))\n .forEach(file => definitionQueue.push(file));\n }\n // Avoid returning empty declarations\n if (Object.keys(ret).length === 0) {\n return undefined;\n }\n return ret;\n}\n\n/**\n * @param s Statement to check whether it must be hoisted to the top of the file\n * @param isGlobal Whether this is a global script or a normal one\n */\nfunction mustBeHoisted(s: Statement & { modifiers?: Modifier[] }, isGlobal?: boolean): boolean {\n return !!(\n // Import/export statements must be moved to the top\n isImportDeclaration(s) ||\n isImportEqualsDeclaration(s) ||\n isExportDeclaration(s) ||\n isExportAssignment(s) ||\n // as well as many declarations\n isTypeAliasDeclaration(s) ||\n isInterfaceDeclaration(s) ||\n isModuleDeclaration(s) ||\n isEnumDeclaration(s) ||\n (isGlobal &&\n // in global scripts we don't wrap classes and functions, so they can be accessed from non-global scripts\n (isClassDeclaration(s) || isFunctionDeclaration(s))) ||\n // and declare ... / export ... statements\n s.modifiers?.some(s => s.kind === SyntaxKind.DeclareKeyword || s.kind === SyntaxKind.ExportKeyword)\n );\n}\n\nfunction canBeExported(s: Statement): boolean {\n return (\n // const, let, var\n isVariableStatement(s) ||\n // type, interface, enum, class, function\n isTypeAliasDeclaration(s) ||\n isInterfaceDeclaration(s) ||\n isEnumDeclaration(s) ||\n isClassDeclaration(s) ||\n isFunctionDeclaration(s)\n );\n}\n\nfunction addExportModifier(s: Statement & { modifiers?: Modifier[] }): Statement {\n let modifiers: Modifier[] | undefined;\n // Add export modifiers\n if (!s.modifiers) {\n modifiers = [factory.createModifier(SyntaxKind.ExportKeyword)];\n } else if (!s.modifiers.some(m => m.kind === SyntaxKind.ExportKeyword)) {\n modifiers = [...s.modifiers, factory.createModifier(SyntaxKind.ExportKeyword)];\n } else {\n return s;\n }\n\n if (isVariableStatement(s)) {\n return factory.updateVariableStatement(s, modifiers, s.declarationList);\n }\n if (isTypeAliasDeclaration(s)) {\n return factory.updateTypeAliasDeclaration(s, modifiers, s.name, s.typeParameters, s.type);\n }\n if (isInterfaceDeclaration(s)) {\n return factory.updateInterfaceDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isEnumDeclaration(s)) {\n return factory.updateEnumDeclaration(s, modifiers, s.name, s.members);\n }\n if (isClassDeclaration(s)) {\n return factory.updateClassDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isFunctionDeclaration(s)) {\n return factory.updateFunctionDeclaration(\n s,\n modifiers,\n s.asteriskToken,\n s.name,\n s.typeParameters,\n s.parameters,\n s.type,\n s.body,\n );\n }\n return s;\n}\n\nfunction removeDeclareModifier(s: Statement & { modifiers?: Modifier[] }): Statement {\n let modifiers: Modifier[] | undefined;\n // Remove declare modifiers\n if (s.modifiers) {\n modifiers = s.modifiers.filter(m => m.kind !== SyntaxKind.DeclareKeyword);\n } else {\n return s;\n }\n\n if (isVariableStatement(s)) {\n return factory.updateVariableStatement(s, modifiers, s.declarationList);\n }\n if (isTypeAliasDeclaration(s)) {\n return factory.updateTypeAliasDeclaration(s, modifiers, s.name, s.typeParameters, s.type);\n }\n if (isInterfaceDeclaration(s)) {\n return factory.updateInterfaceDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isEnumDeclaration(s)) {\n return factory.updateEnumDeclaration(s, modifiers, s.name, s.members);\n }\n if (isClassDeclaration(s)) {\n return factory.updateClassDeclaration(s, modifiers, s.name, s.typeParameters, s.heritageClauses, s.members);\n }\n if (isFunctionDeclaration(s)) {\n return factory.updateFunctionDeclaration(\n s,\n modifiers,\n s.asteriskToken,\n s.name,\n s.typeParameters,\n s.parameters,\n s.type,\n s.body,\n );\n }\n\n return s;\n}\n\n// taken from node_modules\\@types\\node\\globals.d.ts\n// the globally available things must be wrapped in `declare global` if the user wants to augment them\nconst NodeJSGlobals = [\n 'Array',\n 'ArrayBuffer',\n 'Boolean',\n 'Buffer',\n 'DataView',\n 'Date',\n 'Error',\n 'EvalError',\n 'Float32Array',\n 'Float64Array',\n 'Function',\n 'GLOBAL',\n 'Infinity',\n 'Int16Array',\n 'Int32Array',\n 'Int8Array',\n 'Intl',\n 'JSON',\n 'Map',\n 'Math',\n 'NaN',\n 'Number',\n 'Object',\n 'Promise',\n 'RangeError',\n 'ReferenceError',\n 'RegExp',\n 'Set',\n 'String',\n 'Symbol',\n 'SyntaxError',\n 'TypeError',\n 'URIError',\n 'Uint16Array',\n 'Uint32Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'WeakMap',\n 'WeakSet',\n 'clearImmediate',\n 'clearInterval',\n 'clearTimeout',\n 'console',\n 'decodeURI',\n 'decodeURIComponent',\n 'encodeURI',\n 'encodeURIComponent',\n 'escape',\n 'eval',\n 'global',\n 'isFinite',\n 'isNaN',\n 'parseFloat',\n 'parseInt',\n 'process',\n 'root',\n 'setImmediate',\n 'setInterval',\n 'setTimeout',\n 'queueMicrotask',\n 'undefined',\n 'unescape',\n 'gc',\n 'v8debug',\n];\n\nfunction isGlobalAugmentation(s: Statement): boolean {\n return !!(\n (isInterfaceDeclaration(s) || isClassDeclaration(s) || isFunctionDeclaration(s)) &&\n s.name &&\n NodeJSGlobals.includes(s.name.text)\n );\n}\n\nfunction wrapInDeclareGlobal(statements: Statement[]): ModuleDeclaration {\n return factory.createModuleDeclaration(\n [factory.createModifier(SyntaxKind.DeclareKeyword)],\n factory.createIdentifier('global'),\n factory.createModuleBlock(statements),\n NodeFlags.GlobalAugmentation,\n );\n}\n\n/**\n * Takes a TypeScript script and does the necessary transformations, so it can be compiled properly\n *\n * @param source The original TypeScript source\n * @param isGlobal Whether the transformed script is a global script or not\n */\nexport function transformScriptBeforeCompilation(source: string, isGlobal?: boolean): string {\n const transformer: TransformerFactory<SourceFile> = (_context: TransformationContext): Transformer<SourceFile> => {\n return (sourceFile: SourceFile) =>\n visitNode(sourceFile, (node: SourceFile): any => {\n if (isSourceFile(node)) {\n // Wrap all declarations that augment global interfaces in `declare global`\n const augmentations = node.statements.filter(s => isGlobalAugmentation(s));\n const nonAugmentations = node.statements.filter(s => !isGlobalAugmentation(s));\n\n // If there is no top level await, don't move all the statements around\n const hasTLA = node.statements.some(\n s => isExpressionStatement(s) && s.expression.kind === SyntaxKind.AwaitExpression,\n );\n // Move all statements to the top of the file that cannot appear in a function body\n let hoistedStatements = hasTLA\n ? factory.createNodeArray(nonAugmentations.filter(s => mustBeHoisted(s, isGlobal)))\n : factory.createNodeArray(nonAugmentations);\n\n // The rest gets wrapped\n const wrappedStatements = hasTLA ? nonAugmentations.filter(s => !mustBeHoisted(s, isGlobal)) : [];\n\n // When transforming global scripts, we need to do a couple of things\n if (isGlobal) {\n // 1. We need to add an export modifier to everything at the top level that can be exported\n hoistedStatements = visitNodes(\n hoistedStatements,\n // @ts-expect-error s is definitely a Statement\n s => (canBeExported(s) ? addExportModifier(s) : s),\n ) as NodeArray<Statement>;\n // 3. We need to transform the generated declarations to use `declare global` (this will happen in transformGlobalDeclarations)\n }\n const needsEmptyExport =\n // An empty export is necessary when there is no import declaration\n !node.statements.some(s => isImportDeclaration(s) || isImportEqualsDeclaration(s)) &&\n // And there is no statement in a global script which had an export modifier added\n (!(\n isGlobal &&\n hoistedStatements.some(\n // @ts-expect-error s should have modifiers\n s => s.modifiers?.some(m => m.kind === SyntaxKind.ExportKeyword),\n )\n ) ||\n // Or if there is a `declare global` statement\n !!augmentations);\n\n return factory.updateSourceFile(node, [\n // Put the hoisted statements at the top (or all of them if there's no top level await)\n ...hoistedStatements,\n // Then add everything that augments the global scope\n ...(augmentations && augmentations.length ? [wrapInDeclareGlobal(augmentations)] : []),\n ...(hasTLA\n ? // If there is a top-level await, wrap all non-hoisted statements in (async () => { ... })();\n [\n factory.createExpressionStatement(\n factory.createCallExpression(\n factory.createArrowFunction(\n [factory.createModifier(SyntaxKind.AsyncKeyword)],\n undefined,\n [],\n undefined,\n undefined,\n factory.createBlock(wrappedStatements),\n ),\n undefined,\n undefined,\n ),\n ),\n ]\n : []),\n ...(needsEmptyExport\n ? [\n // Put an empty export {}; at the bottom to force TypeScript to treat the script as a module\n factory.createExportDeclaration(\n undefined, // ModifierLike[] | undefined\n false, // isTypeOnly\n factory.createNamedExports([]), // NamedExportBindings | undefined\n undefined, // moduleSpecifier\n undefined, // attributes\n ),\n ]\n : []),\n ]);\n }\n return node;\n });\n };\n\n const sourceFile = createSourceFile('index.ts', source, ScriptTarget.ESNext, /* setParentNodes */ true);\n\n const result = transform(sourceFile, [transformer]);\n return createPrinter().printNode(EmitHint.Unspecified, result.transformed[0], sourceFile);\n}\n\n/**\n * Takes the global declarations for a TypeScript and wraps export statements in `declare global`\n *\n * @param decl The untransformed global declarations\n */\nexport function transformGlobalDeclarations(decl: string): string {\n const transformer: TransformerFactory<SourceFile> = (_context: TransformationContext): any => {\n return (sourceFile: SourceFile) =>\n visitNode(sourceFile, (node: SourceFile): SourceFile => {\n if (isSourceFile(node)) {\n // All non-export-statements stay at the root level, the rest is wrapped in `declare global`\n const exportStatements = node.statements.filter(\n // @ts-expect-error s should have modifiers\n s => s.modifiers?.some(m => m.kind === SyntaxKind.ExportKeyword),\n );\n const otherStatements = node.statements.filter(s => !exportStatements.includes(s));\n\n const hasExportStatements = exportStatements.length > 0;\n const hasImport = otherStatements.some(s => isImportDeclaration(s) || isImportEqualsDeclaration(s));\n\n return factory.updateSourceFile(node, [\n ...otherStatements,\n ...(hasExportStatements\n ? [wrapInDeclareGlobal(exportStatements.map(s => removeDeclareModifier(s)))]\n : []),\n ...(hasImport\n ? [] // If there is an import, the script is already treated as a module\n : [\n // Otherwise, put an empty export {}; at the bottom to force TypeScript to treat the script as a module\n factory.createExportDeclaration(\n undefined,\n false,\n factory.createNamedExports([]),\n undefined,\n undefined,\n ),\n ]),\n ]);\n }\n\n return node;\n });\n };\n\n const sourceFile = createSourceFile('index.d.ts', decl, ScriptTarget.ESNext, /* setParentNodes */ true);\n\n const result = transform(sourceFile, [transformer]);\n return createPrinter().printNode(EmitHint.Unspecified, result.transformed[0], sourceFile);\n}\n\n/**\n * Translates a script ID to a filename for the compiler\n *\n * @param scriptID The ID of the script\n */\nexport function scriptIdToTSFilename(scriptID: string): string {\n return `${scriptID.replace(/^script.js./, '').replace(/\\./g, '/')}.ts`;\n}\n"]}
|
package/build/main.js
CHANGED
|
@@ -948,7 +948,9 @@ class JavaScript extends adapter_core_1.Adapter {
|
|
|
948
948
|
this.messageBusHandlers[name][obj.message.message]) {
|
|
949
949
|
this.messageBusHandlers[name][obj.message.message].forEach(handler => {
|
|
950
950
|
const sandbox = handler.sandbox;
|
|
951
|
-
sandbox.verbose
|
|
951
|
+
if (sandbox.verbose) {
|
|
952
|
+
sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');
|
|
953
|
+
}
|
|
952
954
|
try {
|
|
953
955
|
if (obj.callback) {
|
|
954
956
|
handler.cb.call(sandbox, obj.message.data, (result) => {
|
|
@@ -960,8 +962,9 @@ class JavaScript extends adapter_core_1.Adapter {
|
|
|
960
962
|
}
|
|
961
963
|
else {
|
|
962
964
|
handler.cb.call(sandbox, obj.message.data, (result) => {
|
|
963
|
-
sandbox.verbose
|
|
965
|
+
if (sandbox.verbose) {
|
|
964
966
|
sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');
|
|
967
|
+
}
|
|
965
968
|
});
|
|
966
969
|
}
|
|
967
970
|
}
|
|
@@ -3089,7 +3092,7 @@ class JavaScript extends adapter_core_1.Adapter {
|
|
|
3089
3092
|
if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {
|
|
3090
3093
|
try {
|
|
3091
3094
|
const buffer = Buffer.from(JSON.parse((0, node_fs_1.readFileSync)(jsonFileName).toString()), 'base64');
|
|
3092
|
-
const jszip = await
|
|
3095
|
+
const jszip = await import('jszip');
|
|
3093
3096
|
const zip = await jszip.loadAsync(buffer);
|
|
3094
3097
|
let data;
|
|
3095
3098
|
if (zip) {
|
|
@@ -3117,7 +3120,7 @@ class JavaScript extends adapter_core_1.Adapter {
|
|
|
3117
3120
|
}
|
|
3118
3121
|
async sunTimeSchedules() {
|
|
3119
3122
|
if (this.config.createAstroStates) {
|
|
3120
|
-
if (!isNaN(this.config.longitude) && !isNaN(this.config.
|
|
3123
|
+
if (!isNaN(this.config.longitude) && !isNaN(this.config.latitude)) {
|
|
3121
3124
|
const calcDate = getAstroStartOfDay();
|
|
3122
3125
|
const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);
|
|
3123
3126
|
this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);
|