zeed 1.0.6 → 1.0.7
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 +42 -0
- package/dist/{chunk-NGWHIRSW.cjs → chunk-347XCKQ3.cjs} +2 -2
- package/dist/{chunk-NGWHIRSW.cjs.map → chunk-347XCKQ3.cjs.map} +1 -1
- package/dist/{chunk-RLZQGB46.js → chunk-3KT3LOJ7.js} +1 -1
- package/dist/chunk-3KT3LOJ7.js.map +1 -0
- package/dist/{chunk-4BA3NGWO.js → chunk-4YZUZA6T.js} +2 -2
- package/dist/chunk-E73OJBZY.js +5 -0
- package/dist/chunk-E73OJBZY.js.map +1 -0
- package/dist/{chunk-3LLI3ZXE.js → chunk-GA25YW67.js} +2 -2
- package/dist/chunk-H2LADFM2.cjs +3 -0
- package/dist/chunk-H2LADFM2.cjs.map +1 -0
- package/dist/{chunk-ELB5XMSE.cjs → chunk-J365UNXA.cjs} +1 -1
- package/dist/{chunk-ELB5XMSE.cjs.map → chunk-J365UNXA.cjs.map} +1 -1
- package/dist/{chunk-BHBLKKLY.js → chunk-JZOWTKX3.js} +2 -2
- package/dist/{chunk-PNXW32L4.cjs → chunk-KLTZERO2.cjs} +2 -2
- package/dist/{chunk-PNXW32L4.cjs.map → chunk-KLTZERO2.cjs.map} +1 -1
- package/dist/{chunk-GHJZDJH5.cjs → chunk-KYA5RPXA.cjs} +2 -2
- package/dist/chunk-KYA5RPXA.cjs.map +1 -0
- package/dist/{chunk-U6C7QBGS.cjs → chunk-L7JPF47T.cjs} +2 -2
- package/dist/{chunk-U6C7QBGS.cjs.map → chunk-L7JPF47T.cjs.map} +1 -1
- package/dist/{chunk-2DDWKR4S.cjs → chunk-LEQ4JFDP.cjs} +2 -2
- package/dist/{chunk-2DDWKR4S.cjs.map → chunk-LEQ4JFDP.cjs.map} +1 -1
- package/dist/chunk-PP2NUDMS.js +2 -0
- package/dist/chunk-PP2NUDMS.js.map +1 -0
- package/dist/chunk-RCU36FIV.cjs +5 -0
- package/dist/chunk-RCU36FIV.cjs.map +1 -0
- package/dist/{chunk-5PVKRZ5X.cjs → chunk-SJ2T57HC.cjs} +2 -2
- package/dist/{chunk-5PVKRZ5X.cjs.map → chunk-SJ2T57HC.cjs.map} +1 -1
- package/dist/chunk-SWWEOPS2.js +3 -0
- package/dist/chunk-SWWEOPS2.js.map +1 -0
- package/dist/{chunk-3JALVUC4.js → chunk-V2HAPUF4.js} +2 -2
- package/dist/{chunk-5QA5SS4R.js → chunk-V4SVIQPH.js} +2 -2
- package/dist/{chunk-7ILRJWTV.js → chunk-Y7EE7JM3.js} +2 -2
- package/dist/{chunk-62CQ6R6C.cjs → chunk-YE42OFHM.cjs} +2 -2
- package/dist/{chunk-62CQ6R6C.cjs.map → chunk-YE42OFHM.cjs.map} +1 -1
- package/dist/common/bin/index.cjs +1 -1
- package/dist/common/bin/index.js +1 -1
- package/dist/common/bin/lib0/buffer.cjs +1 -1
- package/dist/common/bin/lib0/buffer.js +1 -1
- package/dist/common/bin/lib0/decoding.cjs +1 -1
- package/dist/common/bin/lib0/decoding.js +1 -1
- package/dist/common/bin/lib0/encoding.cjs +1 -1
- package/dist/common/bin/lib0/encoding.js +1 -1
- package/dist/common/data/datauri.cjs +1 -1
- package/dist/common/data/datauri.js +1 -1
- package/dist/common/data/day-legacy.cjs +1 -1
- package/dist/common/data/day-legacy.js +1 -1
- package/dist/common/data/day.cjs +1 -1
- package/dist/common/data/day.d.cts +3 -0
- package/dist/common/data/day.d.ts +3 -0
- package/dist/common/data/day.js +1 -1
- package/dist/common/data/index.cjs +1 -1
- package/dist/common/data/index.js +1 -1
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.js +1 -1
- package/dist/common/schema/export-swift.cjs +1 -1
- package/dist/common/schema/export-swift.js +1 -1
- package/dist/common/schema/index.cjs +1 -1
- package/dist/common/schema/index.js +1 -1
- package/dist/common/schema/parse-args.cjs +1 -1
- package/dist/common/schema/parse-args.js +1 -1
- package/dist/common/schema/parse-env.cjs +1 -1
- package/dist/common/schema/parse-env.js +1 -1
- package/dist/common/schema/parse-object.cjs +1 -1
- package/dist/common/schema/parse-object.js +1 -1
- package/dist/common/test.cjs +1 -1
- package/dist/common/test.js +1 -1
- package/dist/index.all.cjs +1 -1
- package/dist/index.all.cjs.map +1 -1
- package/dist/index.all.d.cts +3 -0
- package/dist/index.all.d.ts +3 -0
- package/dist/index.all.js +1 -1
- package/dist/index.browser.cjs +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.node.cjs +1 -1
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.cts +3 -0
- package/dist/index.node.d.ts +3 -0
- package/dist/index.node.js +1 -1
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +3 -0
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.js +1 -1
- package/dist/node/log/index.cjs +1 -1
- package/dist/node/log/index.cjs.map +1 -1
- package/dist/node/log/index.d.cts +3 -0
- package/dist/node/log/index.d.ts +3 -0
- package/dist/node/log/index.js +1 -1
- package/dist/node/log/log-context-node.cjs +1 -1
- package/dist/node/log/log-context-node.cjs.map +1 -1
- package/dist/node/log/log-context-node.js +1 -1
- package/dist/node/log/log-file.cjs +1 -1
- package/dist/node/log/log-file.cjs.map +1 -1
- package/dist/node/log/log-file.d.cts +20 -1
- package/dist/node/log/log-file.d.ts +20 -1
- package/dist/node/log/log-file.js +1 -1
- package/dist/node/log/log-rotation.cjs +2 -0
- package/dist/node/log/log-rotation.cjs.map +1 -0
- package/dist/node/log/log-rotation.d.cts +112 -0
- package/dist/node/log/log-rotation.d.ts +112 -0
- package/dist/node/log/log-rotation.js +2 -0
- package/dist/node/log/log-rotation.js.map +1 -0
- package/package.json +3 -3
- package/src/common/data/day.ts +4 -3
- package/src/node/files.spec.ts +1 -0
- package/src/node/log/log-context-node.ts +2 -1
- package/src/node/log/log-file.spec.ts +71 -0
- package/src/node/log/log-file.ts +41 -2
- package/src/node/log/log-rotation.ts +888 -0
- package/dist/chunk-2ZCCBIH4.cjs +0 -3
- package/dist/chunk-2ZCCBIH4.cjs.map +0 -1
- package/dist/chunk-GHJZDJH5.cjs.map +0 -1
- package/dist/chunk-KBPVMFK3.js +0 -2
- package/dist/chunk-KBPVMFK3.js.map +0 -1
- package/dist/chunk-KXKKWAJL.js +0 -3
- package/dist/chunk-KXKKWAJL.js.map +0 -1
- package/dist/chunk-RLZQGB46.js.map +0 -1
- /package/dist/{chunk-4BA3NGWO.js.map → chunk-4YZUZA6T.js.map} +0 -0
- /package/dist/{chunk-3LLI3ZXE.js.map → chunk-GA25YW67.js.map} +0 -0
- /package/dist/{chunk-BHBLKKLY.js.map → chunk-JZOWTKX3.js.map} +0 -0
- /package/dist/{chunk-3JALVUC4.js.map → chunk-V2HAPUF4.js.map} +0 -0
- /package/dist/{chunk-5QA5SS4R.js.map → chunk-V4SVIQPH.js.map} +0 -0
- /package/dist/{chunk-7ILRJWTV.js.map → chunk-Y7EE7JM3.js.map} +0 -0
package/README.md
CHANGED
|
@@ -74,6 +74,48 @@ It is also possible to set (`Logger.setHandlers([handlers])`) or add (`Logger.re
|
|
|
74
74
|
- `LoggerNodeHandler(opt)`: Colorful logging for node.js - _(muted by default)_
|
|
75
75
|
- `LoggerFileHandler(path, opt)`: Write to file
|
|
76
76
|
|
|
77
|
+
The file handler supports optional log rotation. You can enable rotation by providing a `rotation` option with rotation settings:
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { LoggerFileHandler } from 'zeed'
|
|
81
|
+
|
|
82
|
+
// Enable rotation with default settings (10MB size, 5 files, gzip compression)
|
|
83
|
+
LoggerFileHandler('/var/log/app.log', {
|
|
84
|
+
rotation: true
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
// Rotate logs daily
|
|
88
|
+
LoggerFileHandler('/var/log/app.log', {
|
|
89
|
+
rotation: { interval: '1d' }
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
// Rotate when file reaches 10MB, keep max 5 files
|
|
93
|
+
LoggerFileHandler('/var/log/app.log', {
|
|
94
|
+
rotation: {
|
|
95
|
+
size: '10M',
|
|
96
|
+
maxFiles: 5,
|
|
97
|
+
compress: 'gzip'
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
// Rotate hourly with custom settings
|
|
102
|
+
LoggerFileHandler('/var/log/app.log', {
|
|
103
|
+
rotation: {
|
|
104
|
+
interval: '1h',
|
|
105
|
+
maxSize: '100M',
|
|
106
|
+
compress: true
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Available rotation options:
|
|
112
|
+
- `size`: Rotate when file reaches this size (e.g., `'10M'`, `'1G'`)
|
|
113
|
+
- `interval`: Rotate at time intervals (e.g., `'1d'`, `'1h'`, `'30m'`)
|
|
114
|
+
- `maxFiles`: Maximum number of rotated files to keep
|
|
115
|
+
- `maxSize`: Maximum total size of all log files
|
|
116
|
+
- `compress`: Compress rotated files (`true`, `'gzip'`, or custom compressor function)
|
|
117
|
+
- `rotate`: Number of files to keep in classical rotation mode
|
|
118
|
+
|
|
77
119
|
`opt` are general options like `level` for the log level or `filter` for custom filtering (see below). But it can also hold individual settings specific for a log handler.
|
|
78
120
|
|
|
79
121
|
Examples for custom loggers are [breadcrumb tracking in Sentry.io](https://gist.github.com/holtwick/949d04151586cec529a671859ebbb650) or showing notifications to users on errors in a UI.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLEQ4JFDPcjs = require('./chunk-LEQ4JFDP.cjs');var _chunkL7JPF47Tcjs = require('./chunk-L7JPF47T.cjs');var _chunkLUOFFB5Ncjs = require('./chunk-LUOFFB5N.cjs');var _chunkTJTAAHDBcjs = require('./chunk-TJTAAHDB.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var f=class f{async encode(r){let n=_chunkL7JPF47Tcjs.b.call(void 0, );return _chunkL7JPF47Tcjs.A.call(void 0, n,r),_chunkL7JPF47Tcjs.d.call(void 0, n)}async decode(r){return _chunkLEQ4JFDPcjs.A.call(void 0, _chunkLEQ4JFDPcjs.b.call(void 0, _chunkTJTAAHDBcjs.F.call(void 0, r)))}};_chunkP7XCQ7WVcjs.a.call(void 0, f,"BinaryEncoder");var $=f;function v(t){let r=_chunkL7JPF47Tcjs.b.call(void 0, );return _chunkL7JPF47Tcjs.A.call(void 0, r,t),_chunkL7JPF47Tcjs.d.call(void 0, r)}_chunkP7XCQ7WVcjs.a.call(void 0, v,"encodeJson");function z(t){return _chunkLEQ4JFDPcjs.A.call(void 0, _chunkLEQ4JFDPcjs.b.call(void 0, _chunkTJTAAHDBcjs.F.call(void 0, t)))}_chunkP7XCQ7WVcjs.a.call(void 0, z,"decodeJson");function G(t){let r=_chunkL7JPF47Tcjs.b.call(void 0, );return t!=null&&_chunkL7JPF47Tcjs.r.call(void 0, r,_chunkTJTAAHDBcjs.F.call(void 0, t)),{writeBytes:_chunkP7XCQ7WVcjs.a.call(void 0, (n,a)=>{let o=_chunkTJTAAHDBcjs.F.call(void 0, n);_chunkLUOFFB5Ncjs.c.call(void 0, !(a!=null&&o.length!==a),`Expected ${a} bytes, got ${o.length}`),_chunkL7JPF47Tcjs.r.call(void 0, r,o)},"writeBytes"),writeBytesVar:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.s.call(void 0, r,_chunkTJTAAHDBcjs.F.call(void 0, n)),"writeBytesVar"),writeUintVar:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.o.call(void 0, r,n),"writeUintVar"),writeUint8:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.h.call(void 0, r,n),"writeUint8"),writeUint16:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.j.call(void 0, r,n),"writeUint16"),writeUint32:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.l.call(void 0, r,n),"writeUint32"),writeIntVar:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.q.call(void 0, r,n),"writeIntVar"),writeFloat:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.w.call(void 0, r,n),"writeFloat"),writeStringVar:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.t.call(void 0, r,n),"writeStringVar"),write:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkL7JPF47Tcjs.A.call(void 0, r,n),"write"),getUint8Array:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkL7JPF47Tcjs.d.call(void 0, r),"getUint8Array"),getLength:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkL7JPF47Tcjs.c.call(void 0, r),"getLength")}}_chunkP7XCQ7WVcjs.a.call(void 0, G,"createBinaryStreamEncoder");function H(t){let r=_chunkLEQ4JFDPcjs.b.call(void 0, _chunkTJTAAHDBcjs.F.call(void 0, t));return{readBytes:_chunkP7XCQ7WVcjs.a.call(void 0, n=>_chunkLEQ4JFDPcjs.e.call(void 0, r,n),"readBytes"),readBytesVar:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.g.call(void 0, r),"readBytesVar"),readUintVar:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.f.call(void 0, r),"readUintVar"),readUint8:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.j.call(void 0, r),"readUint8"),readUint16:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.k.call(void 0, r),"readUint16"),readUint32:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.l.call(void 0, r),"readUint32"),readIntVar:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.q.call(void 0, r),"readIntVar"),readFloat:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.w.call(void 0, r),"readFloat"),readStringVar:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.t.call(void 0, r),"readStringVar"),read:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>_chunkLEQ4JFDPcjs.A.call(void 0, r),"read"),getOffset:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>r.pos||0,"getOffset")}}_chunkP7XCQ7WVcjs.a.call(void 0, H,"createBinaryStreamDecoder");function K(t=0){return{setBit:_chunkP7XCQ7WVcjs.a.call(void 0, (r,n=!0)=>n?t|=1<<r:t&=~(1<<r),"setBit"),unsetBit:_chunkP7XCQ7WVcjs.a.call(void 0, r=>t&=1<<r,"unsetBit"),toggleBit:_chunkP7XCQ7WVcjs.a.call(void 0, r=>t^=1<<r,"toggleBit"),getBit:_chunkP7XCQ7WVcjs.a.call(void 0, r=>(t&1<<r)!==0,"getBit"),getValue:_chunkP7XCQ7WVcjs.a.call(void 0, ()=>t,"getValue")}}_chunkP7XCQ7WVcjs.a.call(void 0, K,"bitfield");async function C(t){if(t.arrayBuffer)return await t.arrayBuffer();try{return new Promise((r,n)=>{try{let a=new FileReader;a.onloadend=()=>r(a.result),a.onerror=o=>n(o),a.onabort=o=>n(o),a.readAsArrayBuffer(t)}catch(a){n(a)}})}catch (e2){}}_chunkP7XCQ7WVcjs.a.call(void 0, C,"blobToArrayBuffer");async function M(t){let r=await C(t);if(r!=null)return _chunkTJTAAHDBcjs.F.call(void 0, r)}_chunkP7XCQ7WVcjs.a.call(void 0, M,"blobToUint8Array");exports.a = $; exports.b = v; exports.c = z; exports.d = G; exports.e = H; exports.f = K; exports.g = C; exports.h = M;
|
|
2
|
+
//# sourceMappingURL=chunk-347XCKQ3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-347XCKQ3.cjs","../src/common/bin/index.ts"],"names":["_BinaryEncoder","data","dataEncoder","createBinEncoder","writeAny","encodeToUint8Array","readAny","createDecoder","toUint8Array","__name","BinaryEncoder","encodeJson","decodeJson","createBinaryStreamEncoder","initialData","writeUint8Array","expectedLength","bin","assertCondition"],"mappings":"AAAA,iIAAyG,wDAA6H,wDAAyC,wDAAyC,wDAAyC,ICSpVA,CAAAA,CAAN,MAAMA,CAAiC,CAC5C,MAAM,MAAA,CAAOC,CAAAA,CAAgC,CAC3C,IAAMC,CAAAA,CAAcC,iCAAAA,CAAiB,CACrC,OAAAC,iCAAAA,CAASF,CAAaD,CAAI,CAAA,CACnBI,iCAAAA,CAA8B,CACvC,CAEA,MAAM,MAAA,CAAOJ,CAAAA,CAA8C,CACzD,OAAOK,iCAAAA,iCAAQC,iCAAcC,CAAiB,CAAC,CAAC,CAClD,CACF,CAAA,CAV8CC,iCAAAA,CAAAT,CAAA,eAAA,CAAA,CAAvC,IAAMU,CAAAA,CAANV,CAAAA,CAeA,SAASW,CAAAA,CAAWV,CAAAA,CAAuB,CAChD,IAAMC,CAAAA,CAAcC,iCAAAA,CAAiB,CACrC,OAAAC,iCAAAA,CAASF,CAAaD,CAAI,CAAA,CACnBI,iCAAAA,CAA8B,CACvC,CAJgBI,iCAAAA,CAAAE,CAAA,YAAA,CAAA,CAOT,SAASC,CAAAA,CAAWX,CAAAA,CAAqC,CAC9D,OAAOK,iCAAAA,iCAAQC,iCAAcC,CAAiB,CAAC,CAAC,CAClD,CAFgBC,iCAAAA,CAAAG,CAAA,YAAA,CAAA,CAOT,SAASC,CAAAA,CAA0BC,CAAAA,CAAwB,CAChE,IAAMZ,CAAAA,CAAcC,iCAAAA,CAAiB,CAErC,OAAIW,CAAAA,EAAe,IAAA,EACjBC,iCAAAA,CAAgBb,CAAaM,iCAAAA,CAAwB,CAAC,CAAA,CAEjD,CAEL,UAAA,CAAYC,iCAAAA,CAACR,CAAAA,CAAgBe,CAAAA,CAAAA,EAA2B,CACtD,IAAMC,CAAAA,CAAMT,iCAAAA,CAAiB,CAAA,CAC7BU,iCAAAA,CAAgB,CAAEF,CAAAA,EAAkB,IAAA,EAAQC,CAAAA,CAAI,MAAA,GAAWD,CAAAA,CAAAA,CAAiB,CAAA,SAAA,EAAYA,CAAc,CAAA,YAAA,EAAeC,CAAAA,CAAI,MAAM,CAAA,CAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-347XCKQ3.cjs","sourcesContent":[null,"import type { BinInput } from '../data/bin-types'\nimport type { Encoder } from '../msg/encoder'\nimport { assertCondition } from '../assert'\nimport { toUint8Array } from '../data/bin'\nimport { createDecoder, readAny, readFloat32, readUint8, readUint8Array, readUint16, readUint32, readVarInt, readVarString, readVarUint, readVarUint8Array } from './lib0/decoding'\nimport { createBinEncoder, encodeToUint8Array, length, writeAny, writeFloat32, writeUint8, writeUint8Array, writeUint16, writeUint32, writeVarInt, writeVarString, writeVarUint, writeVarUint8Array } from './lib0/encoding'\n\n// Use in Zeed channels\n\nexport class BinaryEncoder implements Encoder {\n async encode(data: any): Promise<Uint8Array> {\n const dataEncoder = createBinEncoder()\n writeAny(dataEncoder, data)\n return encodeToUint8Array(dataEncoder)\n }\n\n async decode(data: Uint8Array | ArrayBuffer): Promise<any> {\n return readAny(createDecoder(toUint8Array(data)))\n }\n}\n\n// Json like\n\n/** Encode any object, including Uint8Array data */\nexport function encodeJson(data: any): Uint8Array {\n const dataEncoder = createBinEncoder()\n writeAny(dataEncoder, data)\n return encodeToUint8Array(dataEncoder)\n}\n\n/** Decode any object, including Uint8Array data */\nexport function decodeJson(data: Uint8Array | ArrayBuffer): any {\n return readAny(createDecoder(toUint8Array(data)))\n}\n\n// Stream like\n\n/** Incrementally encode binary data */\nexport function createBinaryStreamEncoder(initialData?: BinInput) {\n const dataEncoder = createBinEncoder()\n\n if (initialData != null)\n writeUint8Array(dataEncoder, toUint8Array(initialData))\n\n return {\n /** Just writes the bytes. Length is not stored! */\n writeBytes: (data: BinInput, expectedLength: number) => {\n const bin = toUint8Array(data)\n assertCondition(!(expectedLength != null && bin.length !== expectedLength), `Expected ${expectedLength} bytes, got ${bin.length}`)\n writeUint8Array(dataEncoder, bin)\n },\n writeBytesVar: (data: BinInput) => writeVarUint8Array(dataEncoder, toUint8Array(data)),\n writeUintVar: (data: number) => writeVarUint(dataEncoder, data),\n writeUint8: (data: number) => writeUint8(dataEncoder, data),\n writeUint16: (data: number) => writeUint16(dataEncoder, data),\n writeUint32: (data: number) => writeUint32(dataEncoder, data),\n writeIntVar: (data: number) => writeVarInt(dataEncoder, data),\n writeFloat: (data: number) => writeFloat32(dataEncoder, data),\n writeStringVar: (data: string) => writeVarString(dataEncoder, data),\n write: (data: any) => writeAny(dataEncoder, data),\n getUint8Array: (): Uint8Array => encodeToUint8Array(dataEncoder),\n getLength: () => length(dataEncoder),\n }\n}\n\n/** Incrementally decode binary data */\nexport function createBinaryStreamDecoder(data: BinInput) {\n const dataDecoder = createDecoder(toUint8Array(data))\n return {\n readBytes: (len: number): Uint8Array => readUint8Array(dataDecoder, len),\n readBytesVar: (): Uint8Array => readVarUint8Array(dataDecoder),\n readUintVar: (): number => readVarUint(dataDecoder),\n readUint8: (): number => readUint8(dataDecoder),\n readUint16: (): number => readUint16(dataDecoder),\n readUint32: (): number => readUint32(dataDecoder),\n readIntVar: (): number => readVarInt(dataDecoder),\n readFloat: (): number => readFloat32(dataDecoder),\n readStringVar: (): string => readVarString(dataDecoder),\n read: (): any => readAny(dataDecoder),\n getOffset: (): number => dataDecoder.pos || 0,\n }\n}\n\n// https://stackoverflow.com/a/1436448/140927\nexport function bitfield(bitfield = 0) {\n return {\n setBit: (bit: number, value = true): number => value ? (bitfield |= 1 << bit) : (bitfield &= ~(1 << bit)),\n unsetBit: (bit: number): number => (bitfield &= 1 << bit),\n toggleBit: (bit: number): number => (bitfield ^= 1 << bit),\n getBit: (bit: number): boolean => (bitfield & (1 << bit)) !== 0,\n getValue: () => bitfield,\n }\n}\n\n// Cast\n\nexport async function blobToArrayBuffer(blob: Blob | File): Promise<ArrayBuffer | undefined> {\n if (blob.arrayBuffer)\n return await blob.arrayBuffer()\n\n // Fallback for older browsers\n try {\n return new Promise((resolve, reject) => {\n try {\n const reader = new FileReader()\n reader.onloadend = () => resolve(reader.result as ArrayBuffer)\n reader.onerror = err => reject(err)\n reader.onabort = err => reject(err)\n reader.readAsArrayBuffer(blob)\n }\n catch (err) {\n reject(err)\n }\n })\n }\n catch (err) {}\n}\n\nexport async function blobToUint8Array(blob: Blob | File): Promise<Uint8Array | undefined> {\n const buffer = await blobToArrayBuffer(blob)\n if (buffer != null)\n return toUint8Array(buffer)\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{s as o}from"./chunk-EN6IMU3D.js";import{a as r}from"./chunk-5NKC2EQJ.js";var m;function T(e=20000101){m=e}r(T,"setDayTest");var M=o;function l(e){return Math.floor(e/1e4)}r(l,"dayYear");function p(e){return Math.floor(e/100%100)}r(p,"dayMonth");function V(e){return Math.floor(e%100)}r(V,"dayDay");function g(e){return[l(e),p(e),V(e)]}r(g,"dayToParts");function i(e,t=!1){return t?new Date(`${d(e)}T00:00:00.000Z`):new Date(e/1e4,Math.max(0,e/100%100-1),Math.max(1,e%100))}r(i,"dayToDate");function c(){return m??u(new Date)}r(c,"dayFromToday");function S(e,t=!1){if(typeof e=="number")return e<100?void 0:e;if(typeof e=="string")return s(e);if(Array.isArray(e)&&e.length>=1)return f(...e);if(e instanceof Date)return u(e,t)}r(S,"dayFromAny");function h(e){return i(e,!0)}r(h,"dayToDateUTC");function F(e){return i(e,!0)}r(F,"dayToDateGMT");function u(e,t=!1){return t?s(e.toISOString()):e.getFullYear()*1e4+(e.getMonth()+1)*100+e.getDate()}r(u,"dayFromDate");function w(e){return u(e,!0)}r(w,"dayFromDateUTC");function A(e){return u(e,!0)}r(A,"dayFromDateGMT");function I(e,t=!0){return Math.floor(i(e,t).getTime()/1e3)}r(I,"dayToTimestampSeconds");function D(e,t=!0){return i(e,t).getTime()}r(D,"dayToTimestamp");function x(e,t=!0){return u(new Date(e),t)}r(x,"dayFromTimestamp");function Y(e,t=!0){return u(new Date(Math.floor(e*1e3)),t)}r(Y,"dayFromTimestampSeconds");function d(e,t="-"){let n=String(e);return n.slice(0,4)+t+n.slice(4,6)+t+n.slice(6,8)}r(d,"dayToString");function f(e,t=1,n=1){if(!(t<1||t>12||n<1||n>31))return e*1e4+t*100+n}r(f,"dayFromParts");function s(e){let t=String(e).replace(/\D/g,"").slice(0,8);if(t.length===8)return+t}r(s,"dayFromString");function _(e,t=0){let n=l(e),a=p(e);return t!==0&&(a+=t,n+=Math.floor((a-1)/12),a=Math.floor((a-1)%12)+1,a===0&&(a=12)),f(n,a,1)}r(_,"dayMonthStart");function C(e,t=0){let n=l(e);return f(n+t,1,1)}r(C,"dayYearStart");function y(e,t){return x(D(e)+t*o)}r(y,"dayOffset");function G(e,t){return Math.round((D(t)-D(e))/o)}r(G,"dayDiff");function O(e,t){let n=[];for(t==null&&(t=c()),e<0&&(e=y(t,e+1));e<=t;)n.push(e),e=y(e,1);return n}r(O,"dayRange");function*P(e,t){let n=[];for(t==null&&(t=c()),e<0&&(e=y(t,e+1));e<=t;)yield e,e=y(e,1);return n}r(P,"dayIterator");export{T as a,M as b,l as c,p as d,V as e,g as f,i as g,c as h,S as i,h as j,F as k,u as l,w as m,A as n,I as o,D as p,x as q,Y as r,d as s,f as t,s as u,_ as v,C as w,y as x,G as y,O as z,P as A};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-3KT3LOJ7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/data/day.ts"],"sourcesContent":["import { TIME_DAY_MS } from \"../time\"\n\n// Functionality variant\nlet testModeDay: number | undefined\n\n/**\n * Enable test mode for date functions by forcing \"today\" to a fixed day value.\n *\n * Use a numeric DayValue like 20000101 (YYYYMMDD). This is intended for tests\n * to make date-based logic deterministic. Call with no args to reset.\n *\n * @param ts - day to use as \"today\" in YYYYMMDD format (default: 20000101)\n */\nexport function setDayTest(ts = 20000101) {\n testModeDay = ts\n}\n\n/** \n * @deprecated use TIME_DAY_MS\n * Number of milliseconds in one calendar day (24 * 60 * 60 * 1000). */\nexport const DAY_MS = TIME_DAY_MS // 1000 * 60 * 60 * 24\n\n/** DayValue is a numeric date encoded as YYYYMMDD (for example 20250907). */\nexport type DayValue = number\n\n/**\n * Accepted inputs for day conversion helpers.\n * - DayValue or number: a YYYYMMDD numeric value\n * - string: a date string (parsed by digits)\n * - Date: JavaScript Date\n * - [year, month?, day?]: numeric parts\n */\nexport type DayInput =\n | DayValue\n | number\n | string\n | Date\n | [number, number?, number?]\n\n/**\n * Extract the year (YYYY) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns year as number (e.g. 2025)\n */\nexport function dayYear(day: DayValue): DayValue {\n return Math.floor(day / 10000)\n}\n\n/**\n * Extract the month (1-12) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns month number (1-12)\n */\nexport function dayMonth(day: DayValue): DayValue {\n return Math.floor((day / 100) % 100)\n}\n\n/**\n * Extract the day of month (1-31) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns day of month (1-31)\n */\nexport function dayDay(day: DayValue): DayValue {\n return Math.floor(day % 100)\n}\n\n/**\n * Split a DayValue into [year, month, day].\n *\n * @param day - day as YYYYMMDD\n * @returns tuple [year, month, day]\n */\nexport function dayToParts(day: DayValue): [number, number, number] {\n return [dayYear(day), dayMonth(day), dayDay(day)]\n}\n\n/**\n * Convert a DayValue to a JavaScript Date.\n *\n * By default returns a local Date at midnight for the day. If `utc` is true\n * the returned Date represents midnight UTC for that day.\n *\n * @param day - day as YYYYMMDD\n * @param utc - whether to construct the Date in UTC (default: false)\n * @returns Date object for the given day\n */\nexport function dayToDate(day: DayValue, utc = false): Date {\n return utc\n ? new Date(`${dayToString(day)}T00:00:00.000Z`)\n : new Date(\n day / 10000, // year\n Math.max(0, ((day / 100) % 100) - 1), // month\n Math.max(1, day % 100), // day\n )\n}\n\n/**\n * Return today's day as a DayValue (YYYYMMDD).\n *\n * If test mode has been enabled via `setDayTest` this returns the forced\n * value instead. Otherwise it uses the current local date.\n */\nexport function dayFromToday(): DayValue {\n return testModeDay ?? dayFromDate(new Date())\n}\n\n/**\n * Convert multiple input types to a DayValue (YYYYMMDD).\n *\n * Supports numbers (DayValue), strings, Date objects and [year, month?, day?]\n * tuples. Returns undefined for invalid or unsupported values.\n *\n * @param value - input to convert\n * @param utc - when converting from Date, interpret as UTC if true\n */\nexport function dayFromAny(\n value: DayInput,\n utc = false,\n): DayValue | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return value\n }\n else if (typeof value === 'string') {\n return dayFromString(value)\n }\n else if (Array.isArray(value) && value.length >= 1) {\n return dayFromParts(...value)\n }\n else if (value instanceof Date) {\n return dayFromDate(value, utc)\n // } else if (value instanceof Day) {\n // return value.days\n }\n}\n\n/** Convert a DayValue to a Date at midnight UTC. */\nexport function dayToDateUTC(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/**\n * @deprecated use dayToDateUTC\n *\n * Kept for backwards compatibility; returns a Date for midnight UTC.\n */\nexport function dayToDateGMT(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/**\n * Convert a JavaScript Date to a DayValue (YYYYMMDD).\n *\n * If `utc` is true the function uses the ISO string representation to\n * calculate the day in UTC. Otherwise it uses local date components.\n */\nexport function dayFromDate(date: Date, utc = false): DayValue {\n return (\n utc\n ? dayFromString(date.toISOString())\n : date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n )!\n}\n\n/** Convert a Date to DayValue using UTC. */\nexport function dayFromDateUTC(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n/** @deprecated use dayFromDateUTC */\n/**\n * Deprecated: use `dayFromDateUTC`.\n *\n * Kept for backwards compatibility; converts a Date to a UTC DayValue.\n */\nexport function dayFromDateGMT(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n\n/**\n * Convert a DayValue to a UNIX timestamp in seconds. Returns seconds since\n * epoch for midnight of the given day. Defaults to UTC.\n */\nexport function dayToTimestampSeconds(day: DayValue, utc = true): number {\n return Math.floor(dayToDate(day, utc).getTime() / 1000)\n}\n\n/**\n * Convert a DayValue to a timestamp in milliseconds for midnight of that day.\n * Defaults to UTC when constructing the Date.\n */\nexport function dayToTimestamp(day: DayValue, utc = true): number {\n return dayToDate(day, utc).getTime()\n}\n\n/**\n * Convert a timestamp in milliseconds to a DayValue. The timestamp is turned\n * into a Date and then converted; `utc` controls interpretation.\n */\nexport function dayFromTimestamp(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(ms), utc)\n}\n\n/**\n * Convert a UNIX timestamp in seconds to a DayValue.\n *\n * @param ms - seconds since epoch\n */\nexport function dayFromTimestampSeconds(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(Math.floor(ms * 1000)), utc)\n}\n\n/**\n * Format a DayValue as a string with an optional separator.\n *\n * Example: dayToString(20250907) -> \"2025-09-07\"\n */\nexport function dayToString(day: DayValue, sep = '-') {\n const baseString = String(day)\n return (\n baseString.slice(0, 4) + sep\n + baseString.slice(4, 6) + sep\n + baseString.slice(6, 8)\n )\n}\n\n/**\n * Build a DayValue from numeric parts. Returns undefined for invalid parts.\n *\n * @param year - full year (e.g. 2025)\n * @param month - 1-12 (default 1)\n * @param day - 1-31 (default 1)\n */\nexport function dayFromParts(\n year: number,\n month = 1,\n day = 1,\n): DayValue | undefined {\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return year * 10000 + month * 100 + day\n}\n \n/**\n * Parse a string into a DayValue by extracting up to 8 digits (YYYYMMDD).\n * Returns undefined for invalid results.\n * \n * Example:\n * dayValue === dayFromString(String(dayValue))\n */\nexport function dayFromString(value: string): DayValue | undefined {\n const string = String(value)\n .replace(/\\D/g, '')\n .slice(0, 8)\n if (string.length === 8)\n return +string\n}\n\n/**\n * Return the first day of the month for the given DayValue. An optional\n * `offset` (positive or negative) moves the result by months.\n *\n * @param day - source DayValue\n * @param offset - months to offset (default 0)\n */\nexport function dayMonthStart(day: DayValue, offset = 0): DayValue {\n let year = dayYear(day)\n let month = dayMonth(day)\n if (offset !== 0) {\n month += offset\n year += Math.floor((month - 1) / 12)\n month = Math.floor((month - 1) % 12) + 1\n if (month === 0)\n month = 12\n }\n return dayFromParts(year, month, 1)!\n}\n\n/**\n * Return the first day of the year for the given DayValue. `offset` moves\n * the year by the given amount.\n */\nexport function dayYearStart(day: DayValue, offset = 0): DayValue {\n const year = dayYear(day)\n return dayFromParts(year + offset, 1, 1)!\n}\n\n/**\n * Offset a DayValue by a number of days. Uses timestamp math to avoid local\n * DST issues.\n *\n * @param day - source DayValue\n * @param offset - days to add (negative to subtract)\n */\nexport function dayOffset(day: DayValue, offset: number): DayValue {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return dayFromTimestamp(dayToTimestamp(day) + offset * TIME_DAY_MS)\n}\n\n/**\n * Compute the difference in whole days between two DayValues (right - left).\n */\nexport function dayDiff(left: DayValue, right: DayValue): number {\n return Math.round((dayToTimestamp(right) - dayToTimestamp(left)) / TIME_DAY_MS)\n}\n\n/**\n * Return an array of DayValues from left to right (inclusive).\n *\n * If `right` is omitted it defaults to today. If `left` is negative it is\n * interpreted as an offset relative to `right` (e.g. -7 means the last 7 days).\n */\nexport function dayRange(left: DayValue, right?: DayValue): number[] {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n list.push(left)\n left = dayOffset(left, +1)\n }\n return list\n}\n\n/** Iterator, see dayRange */\n/**\n * Generator that yields DayValues from left to right (inclusive). Same rules\n * as `dayRange` regarding defaults and negative left values.\n */\nexport function* dayIterator(left: DayValue, right?: DayValue) {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n yield left\n left = dayOffset(left, +1)\n }\n return list\n}\n\n"],"mappings":"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","names":["testModeDay","setDayTest","ts","__name","DAY_MS","TIME_DAY_MS","dayYear","day","dayMonth","dayDay","dayToParts","dayToDate","utc","dayToString","dayFromToday","dayFromDate","dayFromAny","value","dayFromString","dayFromParts","dayToDateUTC","dayToDateGMT","date","dayFromDateUTC","dayFromDateGMT","dayToTimestampSeconds","dayToTimestamp","dayFromTimestamp","ms","dayFromTimestampSeconds","sep","baseString","year","month","string","dayMonthStart","offset","dayYearStart","dayOffset","dayDiff","left","right","dayRange","list","dayIterator"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as o}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as o}from"./chunk-3KT3LOJ7.js";import{p as s}from"./chunk-Z33SQXH7.js";import{a as e}from"./chunk-EN6IMU3D.js";import{a as t}from"./chunk-5NKC2EQJ.js";function f(){s("test"),e(),o()}t(f,"setTestMode");export{f as a};
|
|
2
|
+
//# sourceMappingURL=chunk-4YZUZA6T.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{a as l}from"./chunk-5NKC2EQJ.js";import{exec as $}from"child_process";import{access as C,constants as N,createReadStream as O,createWriteStream as F}from"fs";import{mkdir as U,open as m,readFile as B,rename as p,stat as y,unlink as D,writeFile as R}from"fs/promises";import{sep as u}from"path";import b from"process";import{Writable as G}from"stream";import{setTimeout as M}from"timers";import{TextDecoder as I}from"util";import{createGzip as H}from"zlib";async function x(s){return new Promise(t=>C(s,N.F_OK,e=>t(!e)))}l(x,"exists");var g=class g extends Error{constructor(){super("Too many destination file attempts");this.code="RFS-TOO-MANY"}};l(g,"RotatingFileStreamError");var c=g,w=class w extends G{constructor(t,e){let{encoding:i,history:r,maxFiles:n,maxSize:a,path:o}=e;super({decodeStrings:!0,defaultEncoding:i}),this.createGzip=H,this.exec=$,this.filename=(o||"")+t(null),this.fsCreateReadStream=O,this.fsCreateWriteStream=F,this.fsOpen=m,this.fsReadFile=B,this.fsStat=y,this.fsUnlink=D,this.generator=t,this.maxTimeout=2147483640,this.options=e,this.stdout=b.stdout,this.file=null,this.initPromise=null,this.timeout=null,this.timeoutPromise=null,this.prev=null,this.next=null,this.rotation=null,this.last="",this.finished=!1,this.size=0,(n||a)&&(e.history=(o||"")+(r||`${this.generator(null)}.txt`)),this.on("close",()=>this.finished?null:this.emit("finish")),this.on("finish",()=>this.finished=this.clear()),(async()=>{try{this.initPromise=this.init(),await this.initPromise,this.initPromise=null}catch{}})()}_destroy(t,e){this.refinal(t,e)}_final(t){this.refinal(void 0,t)}_write(t,e,i){this.rewrite([{chunk:t,encoding:e}],0,i)}_writev(t,e){this.rewrite(t,0,e)}async refinal(t,e){try{this.clear(),this.initPromise&&await this.initPromise,this.timeoutPromise&&await this.timeoutPromise,await this.reclose()}catch(i){return e(t||i)}e(t)}async rewrite(t,e,i){let{size:r,teeToStdout:n}=this.options;try{this.initPromise&&await this.initPromise;for(let a=0;a<t.length;++a){let{chunk:o}=t[a];this.size+=o.length,this.timeoutPromise&&await this.timeoutPromise,await this.file.write(o),n&&!this.stdout.destroyed&&this.stdout.write(o),r&&this.size>=r&&await this.rotate()}}catch(a){return i(a)}i()}async init(){let{immutable:t,initialRotation:e,interval:i,size:r}=this.options;if(t)return new Promise((a,o)=>b.nextTick(()=>this.immutate(!0).then(a).catch(h=>o(h))));let n;try{n=await y(this.filename)}catch(a){if(a.code!=="ENOENT")throw a;return this.reopen(0)}if(!n.isFile())throw new Error(`Can't write on: ${this.filename} (it is not a file)`);if(e){this.intervalBounds(this.now());let a=this.prev;if(this.intervalBounds(new Date(n.mtime.getTime())),a!==this.prev)return this.rotate()}return this.size=n.size,!r||n.size<r?this.reopen(n.size):(i&&this.intervalBounds(this.now()),this.rotate())}async makePath(t){return await U(t.split(u).slice(0,-1).join(u),{recursive:!0}),t}async reopen(t){let e;try{e=await m(this.filename,"a",this.options.mode)}catch(i){if(i.code!=="ENOENT")throw i;await this.makePath(this.filename),e=await m(this.filename,"a",this.options.mode)}this.file=e,this.size=t,this.interval(),this.emit("open",this.filename)}async reclose(){let{file:t}=this;if(t)return this.file=null,t.close()}now(){return new Date}async rotate(){let{immutable:t,rotate:e}=this.options;return this.size=0,this.rotation=this.now(),this.clear(),this.emit("rotation"),await this.reclose(),e?this.classical():t?this.immutate(!1):this.move()}async findName(){let{interval:t,path:e,intervalBoundary:i}=this.options;for(let r=1;r<1e3;++r){let n=(e||"")+this.generator(t&&i?new Date(this.prev):this.rotation,r);if(!await x(n))return n}throw new c}async move(){let{compress:t}=this.options,e=await this.findName();return await this.touch(e),t?await this.compress(e):await p(this.filename,e),this.rotated(e)}async touch(t){let e;try{e=await this.fsOpen(t,"a")}catch(i){if(i.code!=="ENOENT")throw i;await this.makePath(t),e=await m(t,"a")}return await e.close(),this.unlink(t)}async classical(){let{compress:t,path:e,rotate:i=0}=this.options,r="";for(let n=i;n>0;--n){let a=e+this.generator(n),o=n===1?this.filename:e+this.generator(n-1);if(await x(o))if(r||(r=a),n===1&&t)await this.compress(a);else try{await p(o,a)}catch(h){if(h.code!=="ENOENT")throw h;await this.makePath(a),await p(o,a)}}return this.rotated(r)}clear(){return this.timeout&&(clearTimeout(this.timeout),this.timeout=null),!0}intervalBoundsBig(t){let e=this.options.intervalUTC?t.getUTCFullYear():t.getFullYear(),i=this.options.intervalUTC?t.getUTCMonth():t.getMonth(),r=this.options.intervalUTC?t.getUTCDate():t.getDate(),n=this.options.intervalUTC?t.getUTCHours():t.getHours(),{num:a,unit:o}=this.options.interval;o==="M"?(r=1,n=0):o==="d"?n=0:n=Number.parseInt(n/a,10)*a,this.prev=new Date(e,i,r,n,0,0,0).getTime(),o==="M"?i+=a:o==="d"?r+=a:n+=a,this.next=new Date(e,i,r,n,0,0,0).getTime()}intervalBounds(t){let e=this.options.interval.unit;if(e==="M"||e==="d"||e==="h")this.intervalBoundsBig(t);else{let i=1e3*this.options.interval.num;e==="m"&&(i*=60),this.prev=Number.parseInt(String(t.getTime()/i),10)*i,this.next=this.prev+i}return new Date(this.prev)}interval(){if(!this.options.interval)return;this.intervalBounds(this.now());let t=l(async()=>{let i=this.next-this.now().getTime();if(i<=0)try{this.timeoutPromise=this.rotate(),await this.timeoutPromise,this.timeoutPromise=null}catch{}else this.timeout=M(t,i>this.maxTimeout?this.maxTimeout:i),this.timeout&&typeof this.timeout.unref=="function"&&this.timeout.unref()},"set");t()}async compress(t){let{compress:e}=this.options;return typeof e=="function"?await new Promise((i,r)=>{this.exec(e(this.filename,t),(n,a,o)=>{this.emit("external",a,o),n?r(n):i()})}):await this.gzip(t),this.unlink(this.filename)}async gzip(t){let{mode:e}=this.options,i=e?{mode:e}:{},r=this.fsCreateReadStream(this.filename,{}),n=this.fsCreateWriteStream(t,i),a=this.createGzip();return new Promise((o,h)=>{r.once("error",h),n.once("error",h),a.once("error",h),n.once("finish",o),r.pipe(a).pipe(n)})}async rotated(t){let{maxFiles:e,maxSize:i}=this.options;return(e||i)&&await this.history(t),this.emit("rotated",t),this.reopen(0)}async history(t){let{history:e,maxFiles:i,maxSize:r}=this.options,n=[],a=[t];try{e&&(a=[...(await this.fsReadFile(e,"utf8")).toString().split(`
|
|
2
|
+
`),t])}catch(o){if(o.code!=="ENOENT")throw o}for(let o of a)if(o)try{let h=await this.fsStat(o);h.isFile()?n.push({name:o,size:h.size,time:h.mtime.getTime()}):this.emit("warning",new Error(`File '${o}' contained in history is not a regular file`))}catch(h){if(h.code!=="ENOENT")throw h}if(n.sort((o,h)=>o.time-h.time),i)for(;n.length>i;){let o=n.shift();o&&await this.unlink(o.name),o&&this.emit("removed",o.name,!0)}if(r)for(;n.reduce((o,h)=>o+h.size,0)>r;){let o=n.shift();o&&await this.unlink(o.name),o&&this.emit("removed",o.name,!1)}e&&await R(e,`${n.map(o=>o.name).join(`
|
|
3
|
+
`)}
|
|
4
|
+
`,"utf-8"),this.emit("history")}async immutate(t){let{size:e}=this.options,i=this.now();for(let r=1;r<1e3;++r){let n=0,a;this.filename=this.options.path+this.generator(i,r);try{a=await this.fsStat(this.filename)}catch(o){if(o.code!=="ENOENT")throw o}if(a){if(n=a.size,!a.isFile())throw new Error(`Can't write on: '${this.filename}' (it is not a file)`);if(e&&n>=e)continue}if(t)return this.last=this.filename,this.reopen(n);await this.rotated(this.last),this.last=this.filename;return}throw new c}async unlink(t){try{await this.fsUnlink(t)}catch(e){if(e.code!=="ENOENT")throw e;this.emit("warning",e)}}};l(w,"RotatingFileStream");var v=w;function z(s){return(t,e,i)=>{let r=Number.parseInt(String(i),10);if(t!=="number"||Number.isNaN(r)||r<=0)throw new Error(`'${s}' option must be a positive integer number`)}}l(z,"buildNumberCheck");function f(s,t){return(e,i,r)=>{if(e!=="string")throw new Error(`Don't know how to handle 'options.${String(s)}' type: ${e}`);i[s]=t(r)}}l(f,"buildStringCheck");function P(s,t,e){let i={};if(i.num=Number.parseInt(s,10),Number.isNaN(i.num))throw new Error(`Unknown 'options.${t}' format: ${s}`);if(i.num<=0)throw new Error(`A positive integer number is expected for 'options.${t}'`);if(i.unit=s.replace(/^[ 0]*/g,"").substr(`${i.num}`.length,1),i.unit.length===0)throw new Error(`Missing unit for 'options.${t}'`);if(!e[i.unit])throw new Error(`Unknown 'options.${t}' unit: ${i.unit}`);return i}l(P,"checkMeasure");var W={M:!0,d:!0,h:!0,m:!0,s:!0};function d(s,t,e){if(Number.parseInt(e/s.num,10)*s.num!==e)throw new Error(`An integer divider of ${e} is expected as ${t} for 'options.interval'`)}l(d,"checkIntervalUnit");function A(s){let t=P(s,"interval",W);switch(t.unit){case"h":d(t,"hours",24);break;case"m":d(t,"minutes",60);break;case"s":d(t,"seconds",60);break}return t}l(A,"checkInterval");var K={B:!0,G:!0,K:!0,M:!0};function k(s){let t=P(s,"size",K);return t.unit==="K"?t.num*1024:t.unit==="M"?t.num*1048576:t.unit==="G"?t.num*1073741824:t.num}l(k,"checkSize");var E={encoding:l((s,t,e)=>new I(e),"encoding"),immutable:l(()=>{},"immutable"),initialRotation:l(()=>{},"initialRotation"),interval:f("interval",A),intervalBoundary:l(()=>{},"intervalBoundary"),intervalUTC:l(()=>{},"intervalUTC"),maxFiles:z("maxFiles"),maxSize:f("maxSize",k),mode:l(()=>{},"mode"),omitExtension:l(()=>{},"omitExtension"),rotate:z("rotate"),size:f("size",k),teeToStdout:l(()=>{},"teeToStdout"),compress:l((s,t,e)=>{if(e!==!1){if(!e)throw new Error("A value for 'options.compress' must be specified");if(s==="boolean")return t.compress=(i,r)=>`cat ${i} | gzip -c9 > ${r}`;if(s!=="function"){if(s!=="string")throw new Error(`Don't know how to handle 'options.compress' type: ${s}`);if(e!=="gzip")throw new Error(`Don't know how to handle compression method: ${e}`)}}},"compress"),history:l(s=>{if(s!=="string")throw new Error(`Don't know how to handle 'options.history' type: ${s}`)},"history"),path:l((s,t,e)=>{if(s!=="string")throw new Error(`Don't know how to handle 'options.path' type: ${s}`);e[e.length-1]!==u&&(t.path=e+u)},"path")};function Y(s){let t={};for(let e of Object.keys(s)){let i=e,r=s[i],n=typeof r;if(t[i]=r,!(i in E))throw new Error(`Unknown option: ${i}`);E[i](n,t,r)}return t.path||(t.path=""),t.interval||(delete t.immutable,delete t.initialRotation,delete t.intervalBoundary,delete t.intervalUTC),t.rotate&&(delete t.history,delete t.immutable,delete t.maxFiles,delete t.maxSize,delete t.intervalBoundary,delete t.intervalUTC),t.immutable&&delete t.compress,t.intervalBoundary||delete t.initialRotation,t}l(Y,"checkOpts");function j(s,t,e){return(i,r)=>{let n=r||0;return n?`${s}.${n}${t&&!e?".gz":""}`:s}}l(j,"createClassical");function _(s,t,e){let i=l(r=>(r>9?"":"0")+r,"pad");return(r,n)=>{if(!r)return s;let a=typeof r=="number"?new Date(r):r,o=`${a.getFullYear()}${i(a.getMonth()+1)}`,h=i(a.getDate()),T=i(a.getHours()),S=i(a.getMinutes());return`${o+h}-${T}${S}-${i(n||0)}-${s}${t&&!e?".gz":""}`}}l(_,"createGenerator");function it(s,t){if(typeof t>"u")t={};else if(typeof t!="object")throw new Error(`The "options" argument must be of type object. Received type ${typeof t}`);let e=Y(t),{compress:i,omitExtension:r}=e,n;if(typeof s=="string")n=e.rotate?j(s,!!i,!!r):_(s,!!i,!!r);else if(typeof s=="function")n=s;else throw new Error(`The "filename" argument must be one of type string or function. Received type ${typeof s}`);return new v(n,e)}l(it,"createStream");export{c as a,v as b,it as c};
|
|
5
|
+
//# sourceMappingURL=chunk-E73OJBZY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/node/log/log-rotation.ts"],"sourcesContent":["// MIT https://github.com/iccicci/rotating-file-stream\n\nimport type { Buffer } from 'node:buffer'\nimport type { Stats } from 'node:fs'\nimport type { FileHandle } from 'node:fs/promises'\nimport type { Readable } from 'node:stream'\nimport type { Gzip } from 'node:zlib'\nimport { exec } from 'node:child_process'\nimport { access, constants, createReadStream, createWriteStream } from 'node:fs'\nimport { mkdir, open, readFile, rename, stat, unlink, writeFile } from 'node:fs/promises'\nimport { sep } from 'node:path'\nimport process from 'node:process'\nimport { Writable } from 'node:stream'\nimport { setTimeout } from 'node:timers'\nimport { TextDecoder } from 'node:util'\nimport { createGzip } from 'node:zlib'\n\nasync function exists(filename: string): Promise<boolean> {\n return new Promise(resolve => access(filename, constants.F_OK, error => resolve(!error)))\n}\n\nexport class RotatingFileStreamError extends Error {\n public code = 'RFS-TOO-MANY'\n\n constructor() {\n super('Too many destination file attempts')\n }\n}\n\nexport type Compressor = (source: string, dest: string) => string\nexport type Generator = (time: number | Date | null, index?: number) => string\n\ninterface RotatingFileStreamEvents {\n // Inherited from Writable\n close: () => void\n drain: () => void\n error: (err: Error) => void\n finish: () => void\n pipe: (src: Readable) => void\n unpipe: (src: Readable) => void\n\n // RotatingFileStream defined\n external: (stdout: string, stderr: string) => void\n history: () => void\n open: (filename: string) => void\n removed: (filename: string, number: boolean) => void\n rotation: () => void\n rotated: (filename: string) => void\n warning: (error: Error) => void\n}\n\n// Flattened event signatures are available via 'RotatingFileStreamEvents' above.\n\nexport type IntervalUnit = 'M' | 'd' | 'h' | 'm' | 's'\nexport type Interval = `${number}${IntervalUnit}`\n\nexport type FileSizeUnit = 'B' | 'K' | 'M' | 'G'\nexport type FileSize = `${number}${FileSizeUnit}`\n\nexport interface Options {\n compress?: boolean | 'gzip' | Compressor\n encoding?: BufferEncoding\n history?: string\n immutable?: boolean\n initialRotation?: boolean\n interval?: Interval\n intervalBoundary?: boolean\n intervalUTC?: boolean\n maxFiles?: number\n maxSize?: FileSize\n mode?: number\n omitExtension?: boolean\n path?: string\n rotate?: number\n size?: FileSize\n teeToStdout?: boolean\n}\n\ninterface Opts {\n compress?: boolean | 'gzip' | Compressor\n encoding?: BufferEncoding\n history?: string\n immutable?: boolean\n initialRotation?: boolean\n interval?: { num: number, unit: IntervalUnit }\n intervalBoundary?: boolean\n intervalUTC?: boolean\n maxFiles?: number\n maxSize?: number\n mode?: number\n omitExtension?: boolean\n path?: string\n rotate?: number\n size?: number\n teeToStdout?: boolean\n}\n\ntype Callback = (error?: Error) => void\n\ninterface Chunk {\n chunk: Buffer\n encoding: BufferEncoding\n}\n\ninterface History {\n name: string\n size: number\n time: number\n}\n\nexport class RotatingFileStream extends Writable {\n private createGzip: () => Gzip\n private exec: typeof exec\n private file: FileHandle | null\n private filename: string\n private finished: boolean\n private fsCreateReadStream: typeof createReadStream\n private fsCreateWriteStream: typeof createWriteStream\n private fsOpen: typeof open\n private fsReadFile: typeof readFile\n private fsStat: typeof stat\n private fsUnlink: typeof unlink\n private generator: Generator\n private last: string\n private maxTimeout: number\n private next: number | null\n private options: Opts\n private size: number\n private stdout: typeof process.stdout\n private prev: number | null\n private rotation: Date | null\n private initPromise: Promise<void> | null\n private timeout: NodeJS.Timeout | null\n private timeoutPromise: Promise<void> | null\n\n constructor(generator: Generator, options: Opts) {\n const { encoding, history, maxFiles, maxSize, path } = options\n\n super({ decodeStrings: true, defaultEncoding: encoding })\n\n this.createGzip = createGzip\n this.exec = exec\n this.filename = (path || '') + generator(null)\n this.fsCreateReadStream = createReadStream\n this.fsCreateWriteStream = createWriteStream\n this.fsOpen = open\n this.fsReadFile = readFile\n this.fsStat = stat\n this.fsUnlink = unlink\n this.generator = generator\n this.maxTimeout = 2147483640\n this.options = options\n this.stdout = process.stdout\n this.file = null\n this.initPromise = null\n this.timeout = null\n this.timeoutPromise = null\n this.prev = null\n this.next = null\n this.rotation = null\n this.last = ''\n this.finished = false\n this.size = 0\n\n if (maxFiles || maxSize)\n options.history = (path || '') + (history || `${this.generator(null)}.txt`)\n\n this.on('close', () => (this.finished ? null : this.emit('finish')))\n this.on('finish', () => (this.finished = this.clear()));\n\n // In v15 was introduced the _constructor method to delay any _write(), _final() and _destroy() calls\n // Until v16 will be not deprecated we still need this.initPromise\n // https://nodejs.org/api/stream.html#stream_writable_construct_callback\n\n (async () => {\n try {\n this.initPromise = this.init()\n\n await this.initPromise\n this.initPromise = null\n }\n catch (e: any) {}\n })()\n }\n\n _destroy(error: Error, callback: Callback): void {\n this.refinal(error, callback)\n }\n\n _final(callback: Callback): void {\n this.refinal(undefined, callback)\n }\n\n _write(chunk: Buffer, encoding: BufferEncoding, callback: Callback): void {\n this.rewrite([{ chunk, encoding }], 0, callback)\n }\n\n _writev(chunks: Chunk[], callback: Callback): void {\n this.rewrite(chunks, 0, callback)\n }\n\n private async refinal(error: Error | undefined, callback: Callback): Promise<void> {\n try {\n this.clear()\n\n if (this.initPromise)\n await this.initPromise\n if (this.timeoutPromise)\n await this.timeoutPromise\n\n await this.reclose()\n }\n catch (e: any) {\n return callback(error || e)\n }\n\n callback(error)\n }\n\n private async rewrite(chunks: Chunk[], index: number, callback: Callback): Promise<void> {\n const { size, teeToStdout } = this.options\n\n try {\n if (this.initPromise)\n await this.initPromise\n\n for (let i = 0; i < chunks.length; ++i) {\n const { chunk } = chunks[i]\n\n this.size += chunk.length\n if (this.timeoutPromise)\n await this.timeoutPromise\n await this.file!.write(chunk)\n\n if (teeToStdout && !this.stdout.destroyed)\n this.stdout.write(chunk)\n if (size && this.size >= size)\n await this.rotate()\n }\n }\n catch (e: any) {\n return callback(e)\n }\n\n callback()\n }\n\n private async init(): Promise<void> {\n const { immutable, initialRotation, interval, size } = this.options\n\n // In v15 was introduced the _constructor method to delay any _write(), _final() and _destroy() calls\n // Once v16 will be deprecated we can restore only following line\n // if(immutable) return this.immutate(true);\n if (immutable)\n return new Promise<void>((resolve, reject) => process.nextTick(() => this.immutate(true).then(resolve).catch((err: any) => reject(err))))\n\n let stats: Stats\n\n try {\n stats = await stat(this.filename)\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n\n return this.reopen(0)\n }\n\n if (!stats.isFile())\n throw new Error(`Can't write on: ${this.filename} (it is not a file)`)\n\n if (initialRotation) {\n this.intervalBounds(this.now())\n const prev = this.prev\n this.intervalBounds(new Date(stats.mtime.getTime()))\n\n if (prev !== this.prev)\n return this.rotate()\n }\n\n this.size = stats.size\n if (!size || stats.size < size)\n return this.reopen(stats.size)\n if (interval)\n this.intervalBounds(this.now())\n\n return this.rotate()\n }\n\n private async makePath(name: string): Promise<string> {\n await mkdir(name.split(sep).slice(0, -1).join(sep), { recursive: true })\n return name\n }\n\n private async reopen(size: number): Promise<void> {\n let file: FileHandle\n\n try {\n file = await open(this.filename, 'a', this.options.mode)\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n\n await this.makePath(this.filename)\n file = await open(this.filename, 'a', this.options.mode)\n }\n\n this.file = file\n this.size = size\n this.interval()\n this.emit('open', this.filename)\n }\n\n private async reclose(): Promise<void> {\n const { file } = this\n\n if (!file)\n return\n\n this.file = null\n return file.close()\n }\n\n private now(): Date {\n return new Date()\n }\n\n private async rotate(): Promise<void> {\n const { immutable, rotate } = this.options\n\n this.size = 0\n this.rotation = this.now()\n\n this.clear()\n this.emit('rotation')\n await this.reclose()\n\n if (rotate)\n return this.classical()\n if (immutable)\n return this.immutate(false)\n\n return this.move()\n }\n\n private async findName(): Promise<string> {\n const { interval, path, intervalBoundary } = this.options\n\n for (let index = 1; index < 1000; ++index) {\n const filename = (path || '') + this.generator(interval && intervalBoundary ? new Date(this.prev as number) : this.rotation, index)\n\n if (!(await exists(filename)))\n return filename\n }\n\n throw new RotatingFileStreamError()\n }\n\n private async move(): Promise<void> {\n const { compress } = this.options\n\n const filename = await this.findName()\n await this.touch(filename)\n\n if (compress)\n await this.compress(filename)\n else await rename(this.filename, filename)\n\n return this.rotated(filename)\n }\n\n private async touch(filename: string): Promise<void> {\n let file: FileHandle\n\n try {\n file = await this.fsOpen(filename, 'a')\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n\n await this.makePath(filename)\n file = await open(filename, 'a')\n }\n\n await file.close()\n return this.unlink(filename)\n }\n\n private async classical(): Promise<void> {\n const { compress, path, rotate = 0 } = this.options\n let rotatedName = ''\n\n for (let count = rotate; count > 0; --count) {\n const currName = path + this.generator(count)\n const prevName = count === 1 ? this.filename : path + this.generator(count - 1)\n\n if (!(await exists(prevName)))\n continue\n if (!rotatedName)\n rotatedName = currName\n\n if (count === 1 && compress) {\n await this.compress(currName)\n }\n else {\n try {\n await rename(prevName, currName)\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n\n await this.makePath(currName)\n await rename(prevName, currName)\n }\n }\n }\n\n return this.rotated(rotatedName)\n }\n\n private clear(): boolean {\n if (this.timeout) {\n clearTimeout(this.timeout as NodeJS.Timeout)\n this.timeout = null\n }\n\n return true\n }\n\n private intervalBoundsBig(now: Date): void {\n const year = this.options.intervalUTC ? now.getUTCFullYear() : now.getFullYear()\n let month = this.options.intervalUTC ? now.getUTCMonth() : now.getMonth()\n let day = this.options.intervalUTC ? now.getUTCDate() : now.getDate()\n let hours = this.options.intervalUTC ? now.getUTCHours() : now.getHours()\n const { num, unit } = this.options.interval!\n\n if (unit === 'M') {\n day = 1\n hours = 0\n }\n else if (unit === 'd') {\n hours = 0\n }\n else {\n hours = Number.parseInt((hours / num) as unknown as string, 10) * num\n }\n\n this.prev = new Date(year, month, day, hours, 0, 0, 0).getTime()\n\n if (unit === 'M')\n month += num\n else if (unit === 'd')\n day += num\n else hours += num\n\n this.next = new Date(year, month, day, hours, 0, 0, 0).getTime()\n }\n\n private intervalBounds(now: Date): Date {\n const unit = this.options.interval!.unit\n\n if (unit === 'M' || unit === 'd' || unit === 'h') {\n this.intervalBoundsBig(now)\n }\n else {\n let period = 1000 * this.options.interval!.num\n\n if (unit === 'm')\n period *= 60\n\n this.prev = Number.parseInt(String(now.getTime() / period), 10) * period\n this.next = this.prev + period\n }\n\n // this.prev is guaranteed to be a number here\n return new Date(this.prev as number)\n }\n\n private interval(): void {\n if (!this.options.interval)\n return\n\n this.intervalBounds(this.now())\n\n const set = async (): Promise<void> => {\n const next = this.next as number\n const time = next - this.now().getTime()\n\n if (time <= 0) {\n try {\n this.timeoutPromise = this.rotate()\n\n await this.timeoutPromise\n this.timeoutPromise = null\n }\n catch (e: any) {}\n }\n else {\n this.timeout = setTimeout(set, time > this.maxTimeout ? this.maxTimeout : time)\n if (this.timeout && typeof (this.timeout as any).unref === 'function')\n (this.timeout as any).unref()\n }\n }\n\n set()\n }\n\n private async compress(filename: string): Promise<void> {\n const { compress } = this.options\n\n if (typeof compress === 'function') {\n await new Promise<void>((resolve, reject) => {\n this.exec(compress(this.filename, filename), (error, stdout, stderr) => {\n this.emit('external', stdout, stderr)\n error ? reject(error) : resolve()\n })\n })\n }\n else {\n await this.gzip(filename)\n }\n\n return this.unlink(this.filename)\n }\n\n private async gzip(filename: string): Promise<void> {\n const { mode } = this.options\n const options = mode ? { mode } : {}\n const inp = this.fsCreateReadStream(this.filename, {})\n const out = this.fsCreateWriteStream(filename, options)\n const zip = this.createGzip()\n\n return new Promise((resolve, reject) => {\n inp.once('error', reject)\n out.once('error', reject)\n zip.once('error', reject)\n out.once('finish', resolve)\n inp.pipe(zip).pipe(out)\n })\n }\n\n private async rotated(filename: string): Promise<void> {\n const { maxFiles, maxSize } = this.options\n\n if (maxFiles || maxSize)\n await this.history(filename)\n\n this.emit('rotated', filename)\n\n return this.reopen(0)\n }\n\n private async history(filename: string): Promise<void> {\n const { history, maxFiles, maxSize } = this.options\n const res: History[] = []\n let files = [filename]\n\n try {\n if (history) {\n const content = await this.fsReadFile(history, 'utf8')\n\n files = [...content.toString().split('\\n'), filename]\n }\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n }\n\n for (const file of files) {\n if (file) {\n try {\n const stats = await this.fsStat(file)\n\n if (stats.isFile()) {\n res.push({\n name: file,\n size: stats.size,\n time: stats.mtime.getTime(),\n })\n }\n else {\n this.emit('warning', new Error(`File '${file}' contained in history is not a regular file`))\n }\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n }\n }\n }\n\n res.sort((a, b) => a.time - b.time)\n\n if (maxFiles) {\n while (res.length > maxFiles) {\n const file = res.shift()\n\n if (file)\n await this.unlink(file.name)\n if (file)\n this.emit('removed', file.name, true)\n }\n }\n\n if (maxSize) {\n while (res.reduce((size, file) => size + file.size, 0) > maxSize) {\n const file = res.shift()\n\n if (file)\n await this.unlink(file.name)\n if (file)\n this.emit('removed', file.name, false)\n }\n }\n\n if (history)\n await writeFile(history, `${res.map(e => e.name).join('\\n')}\\n`, 'utf-8')\n this.emit('history')\n }\n\n private async immutate(first: boolean): Promise<void> {\n const { size } = this.options\n const now = this.now()\n\n for (let index = 1; index < 1000; ++index) {\n let fileSize = 0\n let stats: Stats | undefined\n\n this.filename = this.options.path + this.generator(now, index)\n\n try {\n const s = await this.fsStat(this.filename)\n stats = s\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n }\n\n if (stats) {\n fileSize = stats.size\n\n if (!stats.isFile())\n throw new Error(`Can't write on: '${this.filename}' (it is not a file)`)\n if (size && fileSize >= size)\n continue\n }\n\n if (first) {\n this.last = this.filename\n\n return this.reopen(fileSize)\n }\n\n await this.rotated(this.last)\n this.last = this.filename\n\n return\n }\n\n throw new RotatingFileStreamError()\n }\n\n private async unlink(filename: string): Promise<void> {\n try {\n await this.fsUnlink(filename)\n }\n catch (e: any) {\n if (e.code !== 'ENOENT')\n throw e\n\n this.emit('warning', e)\n }\n }\n}\n\nfunction buildNumberCheck(field: string): (type: string, options: Opts, value: number) => void {\n return (type: string, options: Opts, value: number): void => {\n const converted: number = Number.parseInt(String(value), 10)\n\n if (type !== 'number' || Number.isNaN(converted) || converted <= 0)\n throw new Error(`'${field}' option must be a positive integer number`)\n }\n}\n\nfunction buildStringCheck(field: keyof Opts, check: (value: string) => any) {\n return (type: string, options: Opts, value: string): void => {\n if (type !== 'string')\n throw new Error(`Don't know how to handle 'options.${String(field)}' type: ${type}`)\n\n options[field] = check(value) as never\n }\n}\n\nfunction checkMeasure(value: string, what: string, units: any): any {\n const ret: any = {}\n\n ret.num = Number.parseInt(value, 10)\n\n if (Number.isNaN(ret.num))\n throw new Error(`Unknown 'options.${what}' format: ${value}`)\n if (ret.num <= 0)\n throw new Error(`A positive integer number is expected for 'options.${what}'`)\n\n ret.unit = value.replace(/^[ 0]*/g, '').substr((`${ret.num}`).length, 1)\n\n if (ret.unit.length === 0)\n throw new Error(`Missing unit for 'options.${what}'`)\n if (!units[ret.unit])\n throw new Error(`Unknown 'options.${what}' unit: ${ret.unit}`)\n\n return ret\n}\n\nconst intervalUnits: any = { M: true, d: true, h: true, m: true, s: true }\n\nfunction checkIntervalUnit(ret: any, unit: string, amount: number): void {\n if (Number.parseInt((amount / ret.num) as unknown as string, 10) * ret.num !== amount)\n throw new Error(`An integer divider of ${amount} is expected as ${unit} for 'options.interval'`)\n}\n\nfunction checkInterval(value: string): any {\n const ret = checkMeasure(value, 'interval', intervalUnits)\n\n switch (ret.unit) {\n case 'h':\n checkIntervalUnit(ret, 'hours', 24)\n break\n\n case 'm':\n checkIntervalUnit(ret, 'minutes', 60)\n break\n\n case 's':\n checkIntervalUnit(ret, 'seconds', 60)\n break\n }\n\n return ret\n}\n\nconst sizeUnits: any = { B: true, G: true, K: true, M: true }\n\nfunction checkSize(value: string): any {\n const ret = checkMeasure(value, 'size', sizeUnits)\n\n if (ret.unit === 'K')\n return ret.num * 1024\n if (ret.unit === 'M')\n return ret.num * 1048576\n if (ret.unit === 'G')\n return ret.num * 1073741824\n\n return ret.num\n}\n\nconst checks: any = {\n encoding: (type: string, options: Opts, value: string): any => new TextDecoder(value),\n immutable: (): void => {},\n initialRotation: (): void => {},\n interval: buildStringCheck('interval', checkInterval),\n intervalBoundary: (): void => {},\n intervalUTC: (): void => {},\n maxFiles: buildNumberCheck('maxFiles'),\n maxSize: buildStringCheck('maxSize', checkSize),\n mode: (): void => {},\n omitExtension: (): void => {},\n rotate: buildNumberCheck('rotate'),\n size: buildStringCheck('size', checkSize),\n teeToStdout: (): void => {},\n ...{\n compress: (type: string, options: Opts, value: boolean | string | Compressor): any => {\n if (value === false)\n return\n if (!value)\n throw new Error('A value for \\'options.compress\\' must be specified')\n if (type === 'boolean')\n return (options.compress = (source: string, dest: string): string => `cat ${source} | gzip -c9 > ${dest}`)\n if (type === 'function')\n return\n if (type !== 'string')\n throw new Error(`Don't know how to handle 'options.compress' type: ${type}`)\n if ((value as unknown as string) !== 'gzip')\n throw new Error(`Don't know how to handle compression method: ${value}`)\n },\n history: (type: string): void => {\n if (type !== 'string')\n throw new Error(`Don't know how to handle 'options.history' type: ${type}`)\n },\n path: (type: string, options: Opts, value: string): void => {\n if (type !== 'string')\n throw new Error(`Don't know how to handle 'options.path' type: ${type}`)\n if (value[value.length - 1] !== sep)\n options.path = value + sep\n },\n },\n}\n\nfunction checkOpts(options: Options): Opts {\n const ret: Opts = {}\n for (const k of Object.keys(options)) {\n const opt = k as keyof Options\n const value = options[opt]\n const type = typeof value\n\n // assign raw value first\n ;(ret as any)[opt as string] = value as any\n\n if (!(opt in checks))\n throw new Error(`Unknown option: ${opt}`)\n\n checks[opt](type, ret, value as any)\n }\n\n if (!ret.path)\n ret.path = ''\n\n if (!ret.interval) {\n delete ret.immutable\n delete ret.initialRotation\n delete ret.intervalBoundary\n delete ret.intervalUTC\n }\n\n if (ret.rotate) {\n delete ret.history\n delete ret.immutable\n delete ret.maxFiles\n delete ret.maxSize\n delete ret.intervalBoundary\n delete ret.intervalUTC\n }\n\n if (ret.immutable)\n delete ret.compress\n if (!ret.intervalBoundary)\n delete ret.initialRotation\n\n return ret\n}\n\nfunction createClassical(filename: string, compress: boolean, omitExtension: boolean): Generator {\n return (time: number | Date | null, index?: number): string => {\n const idx = index || 0\n return (idx ? `${filename}.${idx}${compress && !omitExtension ? '.gz' : ''}` : filename)\n }\n}\n\nfunction createGenerator(filename: string, compress: boolean, omitExtension: boolean): Generator {\n const pad = (num: number): string => (num > 9 ? '' : '0') + num\n\n return (time: number | Date | null, index?: number): string => {\n if (!time)\n return filename\n\n const t = typeof time === 'number' ? new Date(time) : time\n\n const month = `${t.getFullYear()}${pad(t.getMonth() + 1)}`\n const day = pad(t.getDate())\n const hour = pad(t.getHours())\n const minute = pad(t.getMinutes())\n\n return `${month + day}-${hour}${minute}-${pad(index || 0)}-${filename}${compress && !omitExtension ? '.gz' : ''}`\n }\n}\n\nexport function createStream(filename: string | Generator, options?: Options): RotatingFileStream {\n if (typeof options === 'undefined')\n options = {}\n else if (typeof options !== 'object')\n throw new Error(`The \"options\" argument must be of type object. Received type ${typeof options}`)\n\n const opts = checkOpts(options)\n const { compress, omitExtension } = opts\n let generator: Generator\n\n if (typeof filename === 'string')\n generator = (opts.rotate ? createClassical(filename, !!compress, !!omitExtension) : createGenerator(filename, !!compress, !!omitExtension))\n else if (typeof filename === 'function')\n generator = filename\n else throw new Error(`The \"filename\" argument must be one of type string or function. Received type ${typeof filename}`)\n\n return new RotatingFileStream(generator, opts)\n}\n"],"mappings":"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","names":["exec","access","constants","createReadStream","createWriteStream","mkdir","open","readFile","rename","stat","unlink","writeFile","sep","process","Writable","setTimeout","TextDecoder","createGzip","exists","filename","resolve","access","constants","error","__name","_RotatingFileStreamError","RotatingFileStreamError","_RotatingFileStream","Writable","generator","options","encoding","history","maxFiles","maxSize","path","createGzip","exec","createReadStream","createWriteStream","open","readFile","stat","unlink","process","callback","chunk","chunks","e","index","size","teeToStdout","i","immutable","initialRotation","interval","reject","err","stats","prev","name","mkdir","sep","file","rotate","intervalBoundary","compress","rename","rotatedName","count","currName","prevName","now","year","month","day","hours","num","unit","period","set","time","setTimeout","stdout","stderr","mode","inp","out","zip","res","files","a","b","writeFile","first","fileSize","RotatingFileStream","buildNumberCheck","field","type","value","converted","buildStringCheck","check","checkMeasure","what","units","ret","intervalUnits","checkIntervalUnit","amount","checkInterval","sizeUnits","checkSize","checks","TextDecoder","source","dest","checkOpts","k","opt","createClassical","omitExtension","idx","createGenerator","pad","t","hour","minute","createStream","opts"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A as d,b as u,e as b,f as A,g as w,j as B,k as p,l,q as g,t as V,w as I}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{A as d,b as u,e as b,f as A,g as w,j as B,k as p,l,q as g,t as V,w as I}from"./chunk-Y7EE7JM3.js";import{A as s,b as y,c as x,d as m,h as F,j as E,l as S,o as P,q as h,r as c,s as T,t as D,w as J}from"./chunk-V2HAPUF4.js";import{c as U}from"./chunk-U4XHGYBM.js";import{F as i}from"./chunk-PDYLHAQH.js";import{a as e}from"./chunk-5NKC2EQJ.js";var f=class f{async encode(r){let n=y();return s(n,r),m(n)}async decode(r){return d(u(i(r)))}};e(f,"BinaryEncoder");var $=f;function v(t){let r=y();return s(r,t),m(r)}e(v,"encodeJson");function z(t){return d(u(i(t)))}e(z,"decodeJson");function G(t){let r=y();return t!=null&&c(r,i(t)),{writeBytes:e((n,a)=>{let o=i(n);U(!(a!=null&&o.length!==a),`Expected ${a} bytes, got ${o.length}`),c(r,o)},"writeBytes"),writeBytesVar:e(n=>T(r,i(n)),"writeBytesVar"),writeUintVar:e(n=>P(r,n),"writeUintVar"),writeUint8:e(n=>F(r,n),"writeUint8"),writeUint16:e(n=>E(r,n),"writeUint16"),writeUint32:e(n=>S(r,n),"writeUint32"),writeIntVar:e(n=>h(r,n),"writeIntVar"),writeFloat:e(n=>J(r,n),"writeFloat"),writeStringVar:e(n=>D(r,n),"writeStringVar"),write:e(n=>s(r,n),"write"),getUint8Array:e(()=>m(r),"getUint8Array"),getLength:e(()=>x(r),"getLength")}}e(G,"createBinaryStreamEncoder");function H(t){let r=u(i(t));return{readBytes:e(n=>b(r,n),"readBytes"),readBytesVar:e(()=>w(r),"readBytesVar"),readUintVar:e(()=>A(r),"readUintVar"),readUint8:e(()=>B(r),"readUint8"),readUint16:e(()=>p(r),"readUint16"),readUint32:e(()=>l(r),"readUint32"),readIntVar:e(()=>g(r),"readIntVar"),readFloat:e(()=>I(r),"readFloat"),readStringVar:e(()=>V(r),"readStringVar"),read:e(()=>d(r),"read"),getOffset:e(()=>r.pos||0,"getOffset")}}e(H,"createBinaryStreamDecoder");function K(t=0){return{setBit:e((r,n=!0)=>n?t|=1<<r:t&=~(1<<r),"setBit"),unsetBit:e(r=>t&=1<<r,"unsetBit"),toggleBit:e(r=>t^=1<<r,"toggleBit"),getBit:e(r=>(t&1<<r)!==0,"getBit"),getValue:e(()=>t,"getValue")}}e(K,"bitfield");async function C(t){if(t.arrayBuffer)return await t.arrayBuffer();try{return new Promise((r,n)=>{try{let a=new FileReader;a.onloadend=()=>r(a.result),a.onerror=o=>n(o),a.onabort=o=>n(o),a.readAsArrayBuffer(t)}catch(a){n(a)}})}catch{}}e(C,"blobToArrayBuffer");async function M(t){let r=await C(t);if(r!=null)return i(r)}e(M,"blobToUint8Array");export{$ as a,v as b,z as c,G as d,H as e,K as f,C as g,M as h};
|
|
2
|
+
//# sourceMappingURL=chunk-GA25YW67.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunkRCU36FIVcjs = require('./chunk-RCU36FIV.cjs');var _chunkM2SGUTDHcjs = require('./chunk-M2SGUTDH.cjs');var _chunkDV7JJRFVcjs = require('./chunk-DV7JJRFV.cjs');var _chunkSEQAFKIVcjs = require('./chunk-SEQAFKIV.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var _fs = require('fs');var _path = require('path');var _process = require('process'); var _process2 = _interopRequireDefault(_process);var L={};function W(e){if(e)return e===!0?{size:"10M",maxFiles:5,compress:"gzip"}:e}_chunkP7XCQ7WVcjs.a.call(void 0, W,"getRotationOptions");function C(e,O={}){let{level:v=void 0,filter:b=void 0,time:$=!0,pretty:w=!1,rotation:F}=O;e=_path.resolve.call(void 0, _process2.default.cwd(),e),_fs.mkdirSync.call(void 0, _path.dirname.call(void 0, e),{recursive:!0});let a=W(F),R=a?_chunkRCU36FIVcjs.c.call(void 0, e,a):_fs.createWriteStream.call(void 0, e,{flags:"a"}),k=_chunkDV7JJRFVcjs.b.call(void 0, b),y=_chunkDV7JJRFVcjs.d.call(void 0, v);return o=>{if(!y(o.level)||!k(o.name))return;let t=$?`${new Date().toISOString()} `:"",s=o.name||"",l=L[s||""];l==null&&(L[s]=l);let n=[`[${s||"*"}]`,_chunkM2SGUTDHcjs.b.call(void 0, o.messages,{pretty:w})];function r(...H){R.write(`${H.join(" ")}
|
|
2
|
+
`)}switch(_chunkP7XCQ7WVcjs.a.call(void 0, r,"write"),o.level){case 1:r(`${t}I|* `,...n);break;case 2:r(`${t}W|** `,...n);break;case 3:r(`${t}E|***`,...n);break;default:r(`${t}D| `,...n);break}}}_chunkP7XCQ7WVcjs.a.call(void 0, C,"LoggerFileHandler");exports.a = C;
|
|
3
|
+
//# sourceMappingURL=chunk-H2LADFM2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-H2LADFM2.cjs","../src/node/log/log-file.ts"],"names":["namespaces","getRotationOptions","rotation","__name","LoggerFileHandler","path","opt","level","filter","time","pretty","resolve","process","mkdirSync","dirname","rotationOpts","stream","createStream","createWriteStream","matchesNamespace","useNamespaceFilter","matchesLevel","useLevelFilter","msg","timeNow"],"mappings":"AAAA,iOAAwC,wDAAyC,wDAA2C,wDAAuD,wDAAyC,wBCE/K,4BACZ,oFACb,IAuBdA,CAAAA,CAAkC,CAAC,CAAA,CAEzC,SAASC,CAAAA,CAAmBC,CAAAA,CAA8E,CACxG,EAAA,CAAKA,CAAAA,CAEL,OAAIA,CAAAA,GAAa,CAAA,CAAA,CACR,CACL,IAAA,CAAM,KAAA,CACN,QAAA,CAAU,CAAA,CACV,QAAA,CAAU,MACZ,CAAA,CAEKA,CACT,CAXSC,iCAAAA,CAAAF,CAAA,oBAAA,CAAA,CAaF,SAASG,CAAAA,CAAkBC,CAAAA,CAAcC,CAAAA,CAA6B,CAAC,CAAA,CAAG,CAC/E,GAAM,CACJ,KAAA,CAAAC,CAAAA,CAAQ,KAAA,CAAA,CACR,MAAA,CAAAC,CAAAA,CAAS,KAAA,CAAA,CACT,IAAA,CAAAC,CAAAA,CAAO,CAAA,CAAA,CACP,MAAA,CAAAC,CAAAA,CAAS,CAAA,CAAA,CACT,QAAA,CAAAR,CACF,CAAA,CAAII,CAAAA,CACJD,CAAAA,CAAOM,2BAAAA,iBAAQC,CAAQ,GAAA,CAAI,CAAA,CAAGP,CAAI,CAAA,CAClCQ,2BAAAA,2BAAUC,CAAY,CAAA,CAAG,CAAE,SAAA,CAAW,CAAA,CAAK,CAAC,CAAA,CAG5C,IAAMC,CAAAA,CAAed,CAAAA,CAAmBC,CAAQ,CAAA,CAC1Cc,CAAAA,CAASD,CAAAA,CACXE,iCAAAA,CAAaZ,CAAMU,CAAY,CAAA,CAC/BG,mCAAAA,CAAkBb,CAAM,CAAE,KAAA,CAAO,GAAI,CAAC,CAAA,CAEpCc,CAAAA,CAAmBC,iCAAAA,CAAyB,CAAA,CAC5CC,CAAAA,CAAeC,iCAAAA,CAAoB,CAAA,CACzC,OAAQC,CAAAA,EAAoB,CAG1B,EAAA,CAFI,CAACF,CAAAA,CAAaE,CAAAA,CAAI,KAAK,CAAA,EAEvB,CAACJ,CAAAA,CAAiBI,CAAAA,CAAI,IAAI,CAAA,CAC5B,MAAA,CAEF,IAAMC,CAAAA,CAAUf,CAAAA,CAAO,CAAA,EAAA;AAzBX","file":"/home/runner/work/zeed/zeed/dist/chunk-H2LADFM2.cjs","sourcesContent":[null,"import type { LogHandlerOptions, LogMessage } from '../../common/log/log-base'\nimport type { Options as RotationOptions } from './log-rotation'\nimport { createWriteStream, mkdirSync } from 'node:fs'\nimport { dirname, resolve } from 'node:path'\nimport process from 'node:process'\nimport { renderMessages } from '../../common/data/message'\nimport { LogLevelError, LogLevelInfo, LogLevelWarn } from '../../common/log/log-base'\nimport { useLevelFilter, useNamespaceFilter } from '../../common/log/log-filter'\nimport { createStream } from './log-rotation'\n\ninterface LogFileHandlerOptions extends LogHandlerOptions {\n /**\n * Optional rotation options for log files. When provided, enables automatic log rotation.\n * Can be:\n * - `true`: Use default rotation settings (10MB size, 5 files, gzip compression)\n * - Rotation options object: Customize rotation behavior\n *\n * Examples:\n * - Enable with defaults: { rotation: true }\n * - Rotate daily: { rotation: { interval: '1d' } }\n * - Rotate when file reaches 10MB: { rotation: { size: '10M' } }\n * - Keep max 5 files: { rotation: { maxFiles: 5 } }\n * - Compress rotated files: { rotation: { compress: 'gzip' } }\n */\n rotation?: boolean | RotationOptions\n}\n\nconst namespaces: Record<string, any> = {}\n\nfunction getRotationOptions(rotation: boolean | RotationOptions | undefined): RotationOptions | undefined {\n if (!rotation)\n return undefined\n if (rotation === true) {\n return {\n size: '10M',\n maxFiles: 5,\n compress: 'gzip',\n }\n }\n return rotation\n}\n\nexport function LoggerFileHandler(path: string, opt: LogFileHandlerOptions = {}) {\n const {\n level = undefined,\n filter = undefined,\n time = true,\n pretty = false,\n rotation,\n } = opt\n path = resolve(process.cwd(), path)\n mkdirSync(dirname(path), { recursive: true })\n\n // Use rotating stream if rotation options are provided\n const rotationOpts = getRotationOptions(rotation)\n const stream = rotationOpts\n ? createStream(path, rotationOpts)\n : createWriteStream(path, { flags: 'a' })\n\n const matchesNamespace = useNamespaceFilter(filter)\n const matchesLevel = useLevelFilter(level)\n return (msg: LogMessage) => {\n if (!matchesLevel(msg.level))\n return\n if (!matchesNamespace(msg.name))\n return\n\n const timeNow = time ? `${new Date().toISOString()} ` : ''\n const name = msg.name || ''\n const ninfo = namespaces[name || '']\n if (ninfo == null)\n namespaces[name] = ninfo\n\n const args: string[] = [\n `[${name || '*'}]`,\n renderMessages(msg.messages, { pretty }),\n ]\n\n function write(...args: string[]): void {\n stream.write(`${args.join('\\t')}\\n`)\n }\n\n switch (msg.level) {\n case LogLevelInfo:\n write(`${timeNow}I|* `, ...args)\n break\n case LogLevelWarn:\n write(`${timeNow}W|** `, ...args)\n break\n case LogLevelError:\n write(`${timeNow}E|***`, ...args)\n break\n default:\n write(`${timeNow}D| `, ...args)\n break\n }\n }\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkJN5FOZ4Acjs = require('./chunk-JN5FOZ4A.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var m;function T(e=20000101){m=e}_chunkP7XCQ7WVcjs.a.call(void 0, T,"setDayTest");var M=_chunkJN5FOZ4Acjs.s;function l(e){return Math.floor(e/1e4)}_chunkP7XCQ7WVcjs.a.call(void 0, l,"dayYear");function p(e){return Math.floor(e/100%100)}_chunkP7XCQ7WVcjs.a.call(void 0, p,"dayMonth");function V(e){return Math.floor(e%100)}_chunkP7XCQ7WVcjs.a.call(void 0, V,"dayDay");function g(e){return[l(e),p(e),V(e)]}_chunkP7XCQ7WVcjs.a.call(void 0, g,"dayToParts");function i(e,t=!1){return t?new Date(`${d(e)}T00:00:00.000Z`):new Date(e/1e4,Math.max(0,e/100%100-1),Math.max(1,e%100))}_chunkP7XCQ7WVcjs.a.call(void 0, i,"dayToDate");function c(){return _nullishCoalesce(m, () => (u(new Date)))}_chunkP7XCQ7WVcjs.a.call(void 0, c,"dayFromToday");function S(e,t=!1){if(typeof e=="number")return e<100?void 0:e;if(typeof e=="string")return s(e);if(Array.isArray(e)&&e.length>=1)return f(...e);if(e instanceof Date)return u(e,t)}_chunkP7XCQ7WVcjs.a.call(void 0, S,"dayFromAny");function h(e){return i(e,!0)}_chunkP7XCQ7WVcjs.a.call(void 0, h,"dayToDateUTC");function F(e){return i(e,!0)}_chunkP7XCQ7WVcjs.a.call(void 0, F,"dayToDateGMT");function u(e,t=!1){return t?s(e.toISOString()):e.getFullYear()*1e4+(e.getMonth()+1)*100+e.getDate()}_chunkP7XCQ7WVcjs.a.call(void 0, u,"dayFromDate");function w(e){return u(e,!0)}_chunkP7XCQ7WVcjs.a.call(void 0, w,"dayFromDateUTC");function A(e){return u(e,!0)}_chunkP7XCQ7WVcjs.a.call(void 0, A,"dayFromDateGMT");function I(e,t=!0){return Math.floor(i(e,t).getTime()/1e3)}_chunkP7XCQ7WVcjs.a.call(void 0, I,"dayToTimestampSeconds");function D(e,t=!0){return i(e,t).getTime()}_chunkP7XCQ7WVcjs.a.call(void 0, D,"dayToTimestamp");function x(e,t=!0){return u(new Date(e),t)}_chunkP7XCQ7WVcjs.a.call(void 0, x,"dayFromTimestamp");function Y(e,t=!0){return u(new Date(Math.floor(e*1e3)),t)}_chunkP7XCQ7WVcjs.a.call(void 0, Y,"dayFromTimestampSeconds");function d(e,t="-"){let n=String(e);return n.slice(0,4)+t+n.slice(4,6)+t+n.slice(6,8)}_chunkP7XCQ7WVcjs.a.call(void 0, d,"dayToString");function f(e,t=1,n=1){if(!(t<1||t>12||n<1||n>31))return e*1e4+t*100+n}_chunkP7XCQ7WVcjs.a.call(void 0, f,"dayFromParts");function s(e){let t=String(e).replace(/\D/g,"").slice(0,8);if(t.length===8)return+t}_chunkP7XCQ7WVcjs.a.call(void 0, s,"dayFromString");function _(e,t=0){let n=l(e),a=p(e);return t!==0&&(a+=t,n+=Math.floor((a-1)/12),a=Math.floor((a-1)%12)+1,a===0&&(a=12)),f(n,a,1)}_chunkP7XCQ7WVcjs.a.call(void 0, _,"dayMonthStart");function C(e,t=0){let n=l(e);return f(n+t,1,1)}_chunkP7XCQ7WVcjs.a.call(void 0, C,"dayYearStart");function y(e,t){return x(D(e)+t*_chunkJN5FOZ4Acjs.s)}_chunkP7XCQ7WVcjs.a.call(void 0, y,"dayOffset");function G(e,t){return Math.round((D(t)-D(e))/_chunkJN5FOZ4Acjs.s)}_chunkP7XCQ7WVcjs.a.call(void 0, G,"dayDiff");function O(e,t){let n=[];for(t==null&&(t=c()),e<0&&(e=y(t,e+1));e<=t;)n.push(e),e=y(e,1);return n}_chunkP7XCQ7WVcjs.a.call(void 0, O,"dayRange");function*P(e,t){let n=[];for(t==null&&(t=c()),e<0&&(e=y(t,e+1));e<=t;)yield e,e=y(e,1);return n}_chunkP7XCQ7WVcjs.a.call(void 0, P,"dayIterator");exports.a = T; exports.b = M; exports.c = l; exports.d = p; exports.e = V; exports.f = g; exports.g = i; exports.h = c; exports.i = S; exports.j = h; exports.k = F; exports.l = u; exports.m = w; exports.n = A; exports.o = I; exports.p = D; exports.q = x; exports.r = Y; exports.s = d; exports.t = f; exports.u = s; exports.v = _; exports.w = C; exports.x = y; exports.y = G; exports.z = O; exports.A = P;
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-J365UNXA.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-ELB5XMSE.cjs","../src/common/data/day.ts"],"names":["testModeDay","setDayTest","ts","__name","DAY_MS","TIME_DAY_MS","dayYear","day","dayMonth","dayDay","dayToParts","dayToDate","utc"],"mappings":"AAAA,qOAAwC,wDAAyC,ICG7EA,CAAAA,CAUG,SAASC,CAAAA,CAAWC,CAAAA,CAAK,QAAA,CAAU,CACxCF,CAAAA,CAAcE,CAChB,CAFgBC,iCAAAA,CAAAF,CAAA,YAAA,CAAA,CAOT,IAAMG,CAAAA,CAASC,mBAAAA,CAyBf,SAASC,CAAAA,CAAQC,CAAAA,CAAyB,CAC/C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAK,CAC/B,CAFgBJ,iCAAAA,CAAAG,CAAA,SAAA,CAAA,CAUT,SAASE,CAAAA,CAASD,CAAAA,CAAyB,CAChD,OAAO,IAAA,CAAK,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAO,GAAG,CACrC,CAFgBJ,iCAAAA,CAAAK,CAAA,UAAA,CAAA,CAUT,SAASC,CAAAA,CAAOF,CAAAA,CAAyB,CAC9C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAG,CAC7B,CAFgBJ,iCAAAA,CAAAM,CAAA,QAAA,CAAA,CAUT,SAASC,CAAAA,CAAWH,CAAAA,CAAyC,CAClE,MAAO,CAACD,CAAAA,CAAQC,CAAG,CAAA,CAAGC,CAAAA,CAASD,CAAG,CAAA,CAAGE,CAAAA,CAAOF,CAAG,CAAC,CAClD,CAFgBJ,iCAAAA,CAAAO,CAAA,YAAA,CAAA,CAcT,SAASC,CAAAA,CAAUJ,CAAAA,CAAeK,CAAAA,CAAM,CAAA,CAAA,CAAa,CAC1D,OAAOA,CAAAA,CACH,IAAI,IAAA,CAAK,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-ELB5XMSE.cjs","sourcesContent":[null,"import { TIME_DAY_MS } from \"../time\"\n\n// Functionality variant\nlet testModeDay: number | undefined\n\n/**\n * Enable test mode for date functions by forcing \"today\" to a fixed day value.\n *\n * Use a numeric DayValue like 20000101 (YYYYMMDD). This is intended for tests\n * to make date-based logic deterministic. Call with no args to reset.\n *\n * @param ts - day to use as \"today\" in YYYYMMDD format (default: 20000101)\n */\nexport function setDayTest(ts = 20000101) {\n testModeDay = ts\n}\n\n/** \n * @deprecated use TIME_DAY_MS\n * Number of milliseconds in one calendar day (24 * 60 * 60 * 1000). */\nexport const DAY_MS = TIME_DAY_MS // 1000 * 60 * 60 * 24\n\n/** DayValue is a numeric date encoded as YYYYMMDD (for example 20250907). */\nexport type DayValue = number\n\n/**\n * Accepted inputs for day conversion helpers.\n * - DayValue or number: a YYYYMMDD numeric value\n * - string: a date string (parsed by digits)\n * - Date: JavaScript Date\n * - [year, month?, day?]: numeric parts\n */\nexport type DayInput =\n | DayValue\n | number\n | string\n | Date\n | [number, number?, number?]\n\n/**\n * Extract the year (YYYY) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns year as number (e.g. 2025)\n */\nexport function dayYear(day: DayValue): DayValue {\n return Math.floor(day / 10000)\n}\n\n/**\n * Extract the month (1-12) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns month number (1-12)\n */\nexport function dayMonth(day: DayValue): DayValue {\n return Math.floor((day / 100) % 100)\n}\n\n/**\n * Extract the day of month (1-31) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns day of month (1-31)\n */\nexport function dayDay(day: DayValue): DayValue {\n return Math.floor(day % 100)\n}\n\n/**\n * Split a DayValue into [year, month, day].\n *\n * @param day - day as YYYYMMDD\n * @returns tuple [year, month, day]\n */\nexport function dayToParts(day: DayValue): [number, number, number] {\n return [dayYear(day), dayMonth(day), dayDay(day)]\n}\n\n/**\n * Convert a DayValue to a JavaScript Date.\n *\n * By default returns a local Date at midnight for the day. If `utc` is true\n * the returned Date represents midnight UTC for that day.\n *\n * @param day - day as YYYYMMDD\n * @param utc - whether to construct the Date in UTC (default: false)\n * @returns Date object for the given day\n */\nexport function dayToDate(day: DayValue, utc = false): Date {\n return utc\n ? new Date(`${dayToString(day)}T00:00:00.000Z`)\n : new Date(\n day / 10000, // year\n Math.max(0, ((day / 100) % 100) - 1), // month\n Math.max(1, day % 100), // day\n )\n}\n\n/**\n * Return today's day as a DayValue (YYYYMMDD).\n *\n * If test mode has been enabled via `setDayTest` this returns the forced\n * value instead. Otherwise it uses the current local date.\n */\nexport function dayFromToday(): DayValue {\n return testModeDay ?? dayFromDate(new Date())\n}\n\n/**\n * Convert multiple input types to a DayValue (YYYYMMDD).\n *\n * Supports numbers (DayValue), strings, Date objects and [year, month?, day?]\n * tuples. Returns undefined for invalid or unsupported values.\n *\n * @param value - input to convert\n * @param utc - when converting from Date, interpret as UTC if true\n */\nexport function dayFromAny(\n value: DayInput,\n utc = false,\n): DayValue | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return value\n }\n else if (typeof value === 'string') {\n return dayFromString(value)\n }\n else if (Array.isArray(value) && value.length >= 1) {\n return dayFromParts(...value)\n }\n else if (value instanceof Date) {\n return dayFromDate(value, utc)\n // } else if (value instanceof Day) {\n // return value.days\n }\n}\n\n/** Convert a DayValue to a Date at midnight UTC. */\nexport function dayToDateUTC(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/**\n * @deprecated use dayToDateUTC\n *\n * Kept for backwards compatibility; returns a Date for midnight UTC.\n */\nexport function dayToDateGMT(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/**\n * Convert a JavaScript Date to a DayValue (YYYYMMDD).\n *\n * If `utc` is true the function uses the ISO string representation to\n * calculate the day in UTC. Otherwise it uses local date components.\n */\nexport function dayFromDate(date: Date, utc = false): DayValue {\n return (\n utc\n ? dayFromString(date.toISOString())\n : date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n )!\n}\n\n/** Convert a Date to DayValue using UTC. */\nexport function dayFromDateUTC(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n/** @deprecated use dayFromDateUTC */\n/**\n * Deprecated: use `dayFromDateUTC`.\n *\n * Kept for backwards compatibility; converts a Date to a UTC DayValue.\n */\nexport function dayFromDateGMT(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n\n/**\n * Convert a DayValue to a UNIX timestamp in seconds. Returns seconds since\n * epoch for midnight of the given day. Defaults to UTC.\n */\nexport function dayToTimestampSeconds(day: DayValue, utc = true): number {\n return Math.floor(dayToDate(day, utc).getTime() / 1000)\n}\n\n/**\n * Convert a DayValue to a timestamp in milliseconds for midnight of that day.\n * Defaults to UTC when constructing the Date.\n */\nexport function dayToTimestamp(day: DayValue, utc = true): number {\n return dayToDate(day, utc).getTime()\n}\n\n/**\n * Convert a timestamp in milliseconds to a DayValue. The timestamp is turned\n * into a Date and then converted; `utc` controls interpretation.\n */\nexport function dayFromTimestamp(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(ms), utc)\n}\n\n/**\n * Convert a UNIX timestamp in seconds to a DayValue.\n *\n * @param ms - seconds since epoch\n */\nexport function dayFromTimestampSeconds(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(Math.floor(ms * 1000)), utc)\n}\n\n/**\n * Format a DayValue as a string with an optional separator.\n *\n * Example: dayToString(20250907) -> \"2025-09-07\"\n */\nexport function dayToString(day: DayValue, sep = '-') {\n const baseString = String(day)\n return (\n baseString.slice(0, 4) + sep\n + baseString.slice(4, 6) + sep\n + baseString.slice(6, 8)\n )\n}\n\n/// Day value from parts, returns undefined if invalid\n/**\n * Build a DayValue from numeric parts. Returns undefined for invalid parts.\n *\n * @param year - full year (e.g. 2025)\n * @param month - 1-12 (default 1)\n * @param day - 1-31 (default 1)\n */\nexport function dayFromParts(\n year: number,\n month = 1,\n day = 1,\n): DayValue | undefined {\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return year * 10000 + month * 100 + day\n}\n\n/// Day value from string, returns undefined if invalid\n/**\n * Parse a string into a DayValue by extracting up to 8 digits (YYYYMMDD).\n * Returns undefined for invalid results.\n */\nexport function dayFromString(value: string): DayValue | undefined {\n const string = String(value)\n .replace(/\\D/g, '')\n .slice(0, 8)\n if (string.length === 8)\n return +string\n}\n\n/**\n * Return the first day of the month for the given DayValue. An optional\n * `offset` (positive or negative) moves the result by months.\n *\n * @param day - source DayValue\n * @param offset - months to offset (default 0)\n */\nexport function dayMonthStart(day: DayValue, offset = 0): DayValue {\n let year = dayYear(day)\n let month = dayMonth(day)\n if (offset !== 0) {\n month += offset\n year += Math.floor((month - 1) / 12)\n month = Math.floor((month - 1) % 12) + 1\n if (month === 0)\n month = 12\n }\n return dayFromParts(year, month, 1)!\n}\n\n/**\n * Return the first day of the year for the given DayValue. `offset` moves\n * the year by the given amount.\n */\nexport function dayYearStart(day: DayValue, offset = 0): DayValue {\n const year = dayYear(day)\n return dayFromParts(year + offset, 1, 1)!\n}\n\n/**\n * Offset a DayValue by a number of days. Uses timestamp math to avoid local\n * DST issues.\n *\n * @param day - source DayValue\n * @param offset - days to add (negative to subtract)\n */\nexport function dayOffset(day: DayValue, offset: number): DayValue {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return dayFromTimestamp(dayToTimestamp(day) + offset * TIME_DAY_MS)\n}\n\n/**\n * Compute the difference in whole days between two DayValues (right - left).\n */\nexport function dayDiff(left: DayValue, right: DayValue): number {\n return Math.round((dayToTimestamp(right) - dayToTimestamp(left)) / TIME_DAY_MS)\n}\n\n/**\n * Return an array of DayValues from left to right (inclusive).\n *\n * If `right` is omitted it defaults to today. If `left` is negative it is\n * interpreted as an offset relative to `right` (e.g. -7 means the last 7 days).\n */\nexport function dayRange(left: DayValue, right?: DayValue): number[] {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n list.push(left)\n left = dayOffset(left, +1)\n }\n return list\n}\n\n/** Iterator, see dayRange */\n/**\n * Generator that yields DayValues from left to right (inclusive). Same rules\n * as `dayRange` regarding defaults and negative left values.\n */\nexport function* dayIterator(left: DayValue, right?: DayValue) {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n yield left\n left = dayOffset(left, +1)\n }\n return list\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-J365UNXA.cjs","../src/common/data/day.ts"],"names":["testModeDay","setDayTest","ts","__name","DAY_MS","TIME_DAY_MS","dayYear","day","dayMonth","dayDay","dayToParts","dayToDate","utc"],"mappings":"AAAA,qOAAwC,wDAAyC,ICG7EA,CAAAA,CAUG,SAASC,CAAAA,CAAWC,CAAAA,CAAK,QAAA,CAAU,CACxCF,CAAAA,CAAcE,CAChB,CAFgBC,iCAAAA,CAAAF,CAAA,YAAA,CAAA,CAOT,IAAMG,CAAAA,CAASC,mBAAAA,CAyBf,SAASC,CAAAA,CAAQC,CAAAA,CAAyB,CAC/C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAK,CAC/B,CAFgBJ,iCAAAA,CAAAG,CAAA,SAAA,CAAA,CAUT,SAASE,CAAAA,CAASD,CAAAA,CAAyB,CAChD,OAAO,IAAA,CAAK,KAAA,CAAOA,CAAAA,CAAM,GAAA,CAAO,GAAG,CACrC,CAFgBJ,iCAAAA,CAAAK,CAAA,UAAA,CAAA,CAUT,SAASC,CAAAA,CAAOF,CAAAA,CAAyB,CAC9C,OAAO,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAM,GAAG,CAC7B,CAFgBJ,iCAAAA,CAAAM,CAAA,QAAA,CAAA,CAUT,SAASC,CAAAA,CAAWH,CAAAA,CAAyC,CAClE,MAAO,CAACD,CAAAA,CAAQC,CAAG,CAAA,CAAGC,CAAAA,CAASD,CAAG,CAAA,CAAGE,CAAAA,CAAOF,CAAG,CAAC,CAClD,CAFgBJ,iCAAAA,CAAAO,CAAA,YAAA,CAAA,CAcT,SAASC,CAAAA,CAAUJ,CAAAA,CAAeK,CAAAA,CAAM,CAAA,CAAA,CAAa,CAC1D,OAAOA,CAAAA,CACH,IAAI,IAAA,CAAK,CAAA,EAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-J365UNXA.cjs","sourcesContent":[null,"import { TIME_DAY_MS } from \"../time\"\n\n// Functionality variant\nlet testModeDay: number | undefined\n\n/**\n * Enable test mode for date functions by forcing \"today\" to a fixed day value.\n *\n * Use a numeric DayValue like 20000101 (YYYYMMDD). This is intended for tests\n * to make date-based logic deterministic. Call with no args to reset.\n *\n * @param ts - day to use as \"today\" in YYYYMMDD format (default: 20000101)\n */\nexport function setDayTest(ts = 20000101) {\n testModeDay = ts\n}\n\n/** \n * @deprecated use TIME_DAY_MS\n * Number of milliseconds in one calendar day (24 * 60 * 60 * 1000). */\nexport const DAY_MS = TIME_DAY_MS // 1000 * 60 * 60 * 24\n\n/** DayValue is a numeric date encoded as YYYYMMDD (for example 20250907). */\nexport type DayValue = number\n\n/**\n * Accepted inputs for day conversion helpers.\n * - DayValue or number: a YYYYMMDD numeric value\n * - string: a date string (parsed by digits)\n * - Date: JavaScript Date\n * - [year, month?, day?]: numeric parts\n */\nexport type DayInput =\n | DayValue\n | number\n | string\n | Date\n | [number, number?, number?]\n\n/**\n * Extract the year (YYYY) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns year as number (e.g. 2025)\n */\nexport function dayYear(day: DayValue): DayValue {\n return Math.floor(day / 10000)\n}\n\n/**\n * Extract the month (1-12) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns month number (1-12)\n */\nexport function dayMonth(day: DayValue): DayValue {\n return Math.floor((day / 100) % 100)\n}\n\n/**\n * Extract the day of month (1-31) from a DayValue.\n *\n * @param day - day as YYYYMMDD\n * @returns day of month (1-31)\n */\nexport function dayDay(day: DayValue): DayValue {\n return Math.floor(day % 100)\n}\n\n/**\n * Split a DayValue into [year, month, day].\n *\n * @param day - day as YYYYMMDD\n * @returns tuple [year, month, day]\n */\nexport function dayToParts(day: DayValue): [number, number, number] {\n return [dayYear(day), dayMonth(day), dayDay(day)]\n}\n\n/**\n * Convert a DayValue to a JavaScript Date.\n *\n * By default returns a local Date at midnight for the day. If `utc` is true\n * the returned Date represents midnight UTC for that day.\n *\n * @param day - day as YYYYMMDD\n * @param utc - whether to construct the Date in UTC (default: false)\n * @returns Date object for the given day\n */\nexport function dayToDate(day: DayValue, utc = false): Date {\n return utc\n ? new Date(`${dayToString(day)}T00:00:00.000Z`)\n : new Date(\n day / 10000, // year\n Math.max(0, ((day / 100) % 100) - 1), // month\n Math.max(1, day % 100), // day\n )\n}\n\n/**\n * Return today's day as a DayValue (YYYYMMDD).\n *\n * If test mode has been enabled via `setDayTest` this returns the forced\n * value instead. Otherwise it uses the current local date.\n */\nexport function dayFromToday(): DayValue {\n return testModeDay ?? dayFromDate(new Date())\n}\n\n/**\n * Convert multiple input types to a DayValue (YYYYMMDD).\n *\n * Supports numbers (DayValue), strings, Date objects and [year, month?, day?]\n * tuples. Returns undefined for invalid or unsupported values.\n *\n * @param value - input to convert\n * @param utc - when converting from Date, interpret as UTC if true\n */\nexport function dayFromAny(\n value: DayInput,\n utc = false,\n): DayValue | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return value\n }\n else if (typeof value === 'string') {\n return dayFromString(value)\n }\n else if (Array.isArray(value) && value.length >= 1) {\n return dayFromParts(...value)\n }\n else if (value instanceof Date) {\n return dayFromDate(value, utc)\n // } else if (value instanceof Day) {\n // return value.days\n }\n}\n\n/** Convert a DayValue to a Date at midnight UTC. */\nexport function dayToDateUTC(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/**\n * @deprecated use dayToDateUTC\n *\n * Kept for backwards compatibility; returns a Date for midnight UTC.\n */\nexport function dayToDateGMT(day: DayValue): Date {\n return dayToDate(day, true)\n}\n\n/**\n * Convert a JavaScript Date to a DayValue (YYYYMMDD).\n *\n * If `utc` is true the function uses the ISO string representation to\n * calculate the day in UTC. Otherwise it uses local date components.\n */\nexport function dayFromDate(date: Date, utc = false): DayValue {\n return (\n utc\n ? dayFromString(date.toISOString())\n : date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n )!\n}\n\n/** Convert a Date to DayValue using UTC. */\nexport function dayFromDateUTC(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n/** @deprecated use dayFromDateUTC */\n/**\n * Deprecated: use `dayFromDateUTC`.\n *\n * Kept for backwards compatibility; converts a Date to a UTC DayValue.\n */\nexport function dayFromDateGMT(date: Date): DayValue {\n return dayFromDate(date, true)\n}\n\n\n/**\n * Convert a DayValue to a UNIX timestamp in seconds. Returns seconds since\n * epoch for midnight of the given day. Defaults to UTC.\n */\nexport function dayToTimestampSeconds(day: DayValue, utc = true): number {\n return Math.floor(dayToDate(day, utc).getTime() / 1000)\n}\n\n/**\n * Convert a DayValue to a timestamp in milliseconds for midnight of that day.\n * Defaults to UTC when constructing the Date.\n */\nexport function dayToTimestamp(day: DayValue, utc = true): number {\n return dayToDate(day, utc).getTime()\n}\n\n/**\n * Convert a timestamp in milliseconds to a DayValue. The timestamp is turned\n * into a Date and then converted; `utc` controls interpretation.\n */\nexport function dayFromTimestamp(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(ms), utc)\n}\n\n/**\n * Convert a UNIX timestamp in seconds to a DayValue.\n *\n * @param ms - seconds since epoch\n */\nexport function dayFromTimestampSeconds(ms: number, utc = true): DayValue {\n return dayFromDate(new Date(Math.floor(ms * 1000)), utc)\n}\n\n/**\n * Format a DayValue as a string with an optional separator.\n *\n * Example: dayToString(20250907) -> \"2025-09-07\"\n */\nexport function dayToString(day: DayValue, sep = '-') {\n const baseString = String(day)\n return (\n baseString.slice(0, 4) + sep\n + baseString.slice(4, 6) + sep\n + baseString.slice(6, 8)\n )\n}\n\n/**\n * Build a DayValue from numeric parts. Returns undefined for invalid parts.\n *\n * @param year - full year (e.g. 2025)\n * @param month - 1-12 (default 1)\n * @param day - 1-31 (default 1)\n */\nexport function dayFromParts(\n year: number,\n month = 1,\n day = 1,\n): DayValue | undefined {\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return year * 10000 + month * 100 + day\n}\n \n/**\n * Parse a string into a DayValue by extracting up to 8 digits (YYYYMMDD).\n * Returns undefined for invalid results.\n * \n * Example:\n * dayValue === dayFromString(String(dayValue))\n */\nexport function dayFromString(value: string): DayValue | undefined {\n const string = String(value)\n .replace(/\\D/g, '')\n .slice(0, 8)\n if (string.length === 8)\n return +string\n}\n\n/**\n * Return the first day of the month for the given DayValue. An optional\n * `offset` (positive or negative) moves the result by months.\n *\n * @param day - source DayValue\n * @param offset - months to offset (default 0)\n */\nexport function dayMonthStart(day: DayValue, offset = 0): DayValue {\n let year = dayYear(day)\n let month = dayMonth(day)\n if (offset !== 0) {\n month += offset\n year += Math.floor((month - 1) / 12)\n month = Math.floor((month - 1) % 12) + 1\n if (month === 0)\n month = 12\n }\n return dayFromParts(year, month, 1)!\n}\n\n/**\n * Return the first day of the year for the given DayValue. `offset` moves\n * the year by the given amount.\n */\nexport function dayYearStart(day: DayValue, offset = 0): DayValue {\n const year = dayYear(day)\n return dayFromParts(year + offset, 1, 1)!\n}\n\n/**\n * Offset a DayValue by a number of days. Uses timestamp math to avoid local\n * DST issues.\n *\n * @param day - source DayValue\n * @param offset - days to add (negative to subtract)\n */\nexport function dayOffset(day: DayValue, offset: number): DayValue {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return dayFromTimestamp(dayToTimestamp(day) + offset * TIME_DAY_MS)\n}\n\n/**\n * Compute the difference in whole days between two DayValues (right - left).\n */\nexport function dayDiff(left: DayValue, right: DayValue): number {\n return Math.round((dayToTimestamp(right) - dayToTimestamp(left)) / TIME_DAY_MS)\n}\n\n/**\n * Return an array of DayValues from left to right (inclusive).\n *\n * If `right` is omitted it defaults to today. If `left` is negative it is\n * interpreted as an offset relative to `right` (e.g. -7 means the last 7 days).\n */\nexport function dayRange(left: DayValue, right?: DayValue): number[] {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n list.push(left)\n left = dayOffset(left, +1)\n }\n return list\n}\n\n/** Iterator, see dayRange */\n/**\n * Generator that yields DayValues from left to right (inclusive). Same rules\n * as `dayRange` regarding defaults and negative left values.\n */\nexport function* dayIterator(left: DayValue, right?: DayValue) {\n const list: number[] = []\n\n if (right == null)\n right = dayFromToday()\n\n if (left < 0)\n left = dayOffset(right, left + 1)\n\n while (left <= right) {\n yield left\n left = dayOffset(left, +1)\n }\n return list\n}\n\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as f}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as f}from"./chunk-3KT3LOJ7.js";import{h as u}from"./chunk-6EQDC7VW.js";import{a as i}from"./chunk-5NKC2EQJ.js";var e=class e{get value(){return this.days}constructor(t){if(typeof t=="number"){this.days=t;return}if(t!=null&&(t=e.from(t)?.days),t==null){let r=new Date;this.days=r.getFullYear()*1e4+(r.getMonth()+1)*100+r.getDate()}else this.days=t}static fromNumber(t){return new e(t)}static fromString(t){return e.from(+t.replace(/\D/g,"").slice(0,8))}static fromDate(t,r=!1){return r?e.fromString(t.toISOString().substr(0,10)):e.from(t.getFullYear()*1e4+(t.getMonth()+1)*100+t.getDate())}static fromDateUTC(t){return e.fromDate(t,!0)}static fromDateGMT(t){return e.fromDate(t,!0)}static from(t,r=!1){if(typeof t=="number")return t<100?void 0:new e(t);if(typeof t=="string")return e.fromString(t);if(Array.isArray(t)&&t.length===3){let[a,n=1,s=1]=t;return n<1||n>12||s<1||s>31?void 0:new e(a*1e4+n*100+s)}else{if(t instanceof Date)return e.fromDate(t,r);if(t instanceof e)return t}}toNumber(){return this.days}toJson(){return this.days}toString(t="-"){let r=String(this.days);return r.slice(0,4)+t+r.slice(4,6)+t+r.slice(6,8)}toDate(t=!1){return t?new Date(`${this.toString()}T00:00:00.000Z`):new Date(this.days/1e4,this.days/100%100-1,this.days%100)}toDateUTC(){return this.toDate(!0)}toDateGMT(){return this.toDate(!0)}get year(){return Math.floor(this.days/1e4)}get month(){return Math.floor(this.days/100%100)}get day(){return Math.floor(this.days%100)}dayOffset(t){return e.fromDateUTC(new Date(this.toDateUTC().getTime()+t*f))}monthStart(){return e.from([this.year,this.month,1])}yearStart(){return e.from([this.year,1,1])}monthOffset(t){let r=this.month+t,a=Math.floor((r-1)%12)+1;a===0&&(a=12);let n=Math.floor((r-1)/12);return e.from([this.year+n,a,this.day])}daysUntil(t){return Math.round((new e(t)?.toDateUTC().getTime()-this.toDateUTC().getTime())/f)}yesterday(){return this.dayOffset(-1)}tomorrow(){return this.dayOffset(1)}};i(e,"Day");var o=e;async function h(y,t,r){let a=o.from(y),n=o.from(t);for(;a&&n&&a?.days<=n?.days;){let s=r(a);u(s)&&await s,a=a.dayOffset(1)}}i(h,"forEachDay");function c(){return new o}i(c,"today");function g(y){return new o(y)}i(g,"day");function d(y){return o.fromDate(new Date(y)).days}i(d,"dateStringToDays");export{o as a,h as b,c,g as d,d as e};
|
|
2
|
+
//# sourceMappingURL=chunk-JZOWTKX3.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkJ365UNXAcjs = require('./chunk-J365UNXA.cjs');var _chunk7UA33BQWcjs = require('./chunk-7UA33BQW.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var e=class e{get value(){return this.days}constructor(t){if(typeof t=="number"){this.days=t;return}if(t!=null&&(t=_optionalChain([e, 'access', _ => _.from, 'call', _2 => _2(t), 'optionalAccess', _3 => _3.days])),t==null){let r=new Date;this.days=r.getFullYear()*1e4+(r.getMonth()+1)*100+r.getDate()}else this.days=t}static fromNumber(t){return new e(t)}static fromString(t){return e.from(+t.replace(/\D/g,"").slice(0,8))}static fromDate(t,r=!1){return r?e.fromString(t.toISOString().substr(0,10)):e.from(t.getFullYear()*1e4+(t.getMonth()+1)*100+t.getDate())}static fromDateUTC(t){return e.fromDate(t,!0)}static fromDateGMT(t){return e.fromDate(t,!0)}static from(t,r=!1){if(typeof t=="number")return t<100?void 0:new e(t);if(typeof t=="string")return e.fromString(t);if(Array.isArray(t)&&t.length===3){let[a,n=1,s=1]=t;return n<1||n>12||s<1||s>31?void 0:new e(a*1e4+n*100+s)}else{if(t instanceof Date)return e.fromDate(t,r);if(t instanceof e)return t}}toNumber(){return this.days}toJson(){return this.days}toString(t="-"){let r=String(this.days);return r.slice(0,4)+t+r.slice(4,6)+t+r.slice(6,8)}toDate(t=!1){return t?new Date(`${this.toString()}T00:00:00.000Z`):new Date(this.days/1e4,this.days/100%100-1,this.days%100)}toDateUTC(){return this.toDate(!0)}toDateGMT(){return this.toDate(!0)}get year(){return Math.floor(this.days/1e4)}get month(){return Math.floor(this.days/100%100)}get day(){return Math.floor(this.days%100)}dayOffset(t){return e.fromDateUTC(new Date(this.toDateUTC().getTime()+t*_chunkJ365UNXAcjs.b))}monthStart(){return e.from([this.year,this.month,1])}yearStart(){return e.from([this.year,1,1])}monthOffset(t){let r=this.month+t,a=Math.floor((r-1)%12)+1;a===0&&(a=12);let n=Math.floor((r-1)/12);return e.from([this.year+n,a,this.day])}daysUntil(t){return Math.round((_optionalChain([new e(t), 'optionalAccess', _4 => _4.toDateUTC, 'call', _5 => _5(), 'access', _6 => _6.getTime, 'call', _7 => _7()])-this.toDateUTC().getTime())/_chunkJ365UNXAcjs.b)}yesterday(){return this.dayOffset(-1)}tomorrow(){return this.dayOffset(1)}};_chunkP7XCQ7WVcjs.a.call(void 0, e,"Day");var o=e;async function h(y,t,r){let a=o.from(y),n=o.from(t);for(;a&&n&&_optionalChain([a, 'optionalAccess', _8 => _8.days])<=_optionalChain([n, 'optionalAccess', _9 => _9.days]);){let s=r(a);_chunk7UA33BQWcjs.h.call(void 0, s)&&await s,a=a.dayOffset(1)}}_chunkP7XCQ7WVcjs.a.call(void 0, h,"forEachDay");function c(){return new o}_chunkP7XCQ7WVcjs.a.call(void 0, c,"today");function g(y){return new o(y)}_chunkP7XCQ7WVcjs.a.call(void 0, g,"day");function d(y){return o.fromDate(new Date(y)).days}_chunkP7XCQ7WVcjs.a.call(void 0, d,"dateStringToDays");exports.a = o; exports.b = h; exports.c = c; exports.d = g; exports.e = d;
|
|
2
|
+
//# sourceMappingURL=chunk-KLTZERO2.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-KLTZERO2.cjs","../src/common/data/day-legacy.ts"],"names":["_Day","days","date","n","dateString","utc","value","year","month","day","sep","baseString"],"mappings":"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","file":"/home/runner/work/zeed/zeed/dist/chunk-KLTZERO2.cjs","sourcesContent":[null,"import { isPromise } from '../exec/promise'\nimport type { DayInput, DayValue } from './day'\nimport { DAY_MS } from './day'\n\n// See also and alternatives:\n// https://blog.openreplay.com/is-it-time-for-the-javascript-temporal-api\n// https://github.com/iamkun/dayjs\n// https://github.com/date-fns/date-fns\n\nexport type DayInputLegacy = DayInput | Day\n\n/**\n * Date represented as positive integer value. Years smaller 0 are not supported.\n * @deprecated\n */\nexport class Day {\n days: DayValue\n\n get value() {\n return this.days\n }\n\n constructor(days?: DayInputLegacy) {\n if (typeof days === 'number') {\n this.days = days\n return\n }\n\n if (days != null)\n days = Day.from(days)?.days\n\n if (days == null) {\n const date = new Date()\n this.days\n = date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate()\n }\n else {\n this.days = days\n }\n }\n\n static fromNumber(n: number): Day {\n return new Day(n)\n }\n\n static fromString(dateString: string): Day | undefined {\n return Day.from(+dateString.replace(/\\D/g, '').slice(0, 8))\n }\n\n static fromDate(date: Date, utc = false): Day {\n return (\n utc\n ? Day.fromString(date.toISOString().substr(0, 10))\n : Day.from(\n date.getFullYear() * 10000\n + (date.getMonth() + 1) * 100\n + date.getDate(),\n )\n ) as Day\n }\n\n static fromDateUTC(date: Date): Day {\n return Day.fromDate(date, true)\n }\n\n /** @deprecated use fromDateUTC */\n static fromDateGMT(date: Date): Day {\n return Day.fromDate(date, true)\n }\n\n static from(value: DayInputLegacy, utc = false): Day | undefined {\n if (typeof value === 'number') {\n if (value < 100)\n return\n return new Day(value)\n }\n else if (typeof value === 'string') {\n return Day.fromString(value)\n }\n else if (Array.isArray(value) && value.length === 3) {\n const [year, month = 1, day = 1] = value\n if (month < 1 || month > 12 || day < 1 || day > 31)\n return\n return new Day(year * 10000 + month * 100 + day)\n }\n else if (value instanceof Date) {\n return Day.fromDate(value, utc)\n }\n else if (value instanceof Day) {\n return value\n }\n }\n\n toNumber(): number {\n return this.days\n }\n\n // Transformer\n\n /** Just for future extensions */\n toJson() {\n return this.days\n }\n\n toString(sep = '-') {\n const baseString = String(this.days)\n return (\n baseString.slice(0, 4)\n + sep\n + baseString.slice(4, 6)\n + sep\n + baseString.slice(6, 8)\n )\n }\n\n toDate(utc = false): Date {\n return utc\n ? new Date(`${this.toString()}T00:00:00.000Z`)\n : new Date(\n this.days / 10000, // year\n ((this.days / 100) % 100) - 1, // month\n this.days % 100, // day\n )\n }\n\n toDateUTC() {\n return this.toDate(true)\n }\n\n /** @deprecated use toDateUTC */\n toDateGMT() {\n return this.toDate(true)\n }\n\n get year() {\n return Math.floor(this.days / 10000)\n }\n\n get month() {\n return Math.floor((this.days / 100) % 100)\n }\n\n get day() {\n return Math.floor(this.days % 100)\n }\n\n // Calculations\n\n dayOffset(offset: number): Day {\n // Important! Don't use local time here due to summer/winter time days can\n // be longer or shorter!\n return Day.fromDateUTC(\n new Date(this.toDateUTC().getTime() + offset * DAY_MS),\n )\n }\n\n monthStart(): Day {\n return Day.from([this.year, this.month, 1])!\n }\n\n yearStart(): Day {\n return Day.from([this.year, 1, 1])!\n }\n\n /** Very stupid approach, only works for days <= 28 */\n monthOffset(offset: number): Day {\n const m = this.month + offset\n let mm = Math.floor((m - 1) % 12) + 1\n if (mm === 0)\n mm = 12\n const yy = Math.floor((m - 1) / 12)\n // log(\"calc\", m, mm, yy, [this.year + yy, mm, this.day])\n return Day.from([this.year + yy, mm, this.day])!\n }\n\n daysUntil(otherDay: DayInputLegacy): number {\n return Math.round(\n (new Day(otherDay)?.toDateUTC().getTime() - this.toDateUTC().getTime())\n / DAY_MS,\n )\n }\n\n // Shortcuts\n\n yesterday() {\n return this.dayOffset(-1)\n }\n\n tomorrow() {\n return this.dayOffset(+1)\n }\n}\n\nexport async function forEachDay(\n from: DayInputLegacy,\n to: DayInputLegacy,\n handler: (date: Day) => Promise<void> | void,\n) {\n let start = Day.from(from)\n const end = Day.from(to)\n // eslint-disable-next-line no-unmodified-loop-condition\n while (start && end && start?.days <= end?.days) {\n const result = handler(start)\n if (isPromise(result))\n await result\n start = start.dayOffset(+1)\n }\n}\n\nexport function today(): Day {\n return new Day()\n}\n\n/** @deprecated */\nexport function day(days?: DayInputLegacy): Day {\n return new Day(days)\n}\n\nexport function dateStringToDays(dateString: string): number {\n return Day.fromDate(new Date(dateString)).days\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkH2LADFM2cjs = require('./chunk-H2LADFM2.cjs');var _chunkMI62AGNOcjs = require('./chunk-MI62AGNO.cjs');var _chunkIA2OMOCBcjs = require('./chunk-IA2OMOCB.cjs');var _chunkIBQVKUC7cjs = require('./chunk-IBQVKUC7.cjs');var _chunk3P4XRJ23cjs = require('./chunk-3P4XRJ23.cjs');var _chunkYBK6FIAJcjs = require('./chunk-YBK6FIAJ.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var _process = require('process'); var _process2 = _interopRequireDefault(_process);function v(r,t){return _chunkYBK6FIAJcjs.a.call(void 0, g=>{let i=[_chunkMI62AGNOcjs.d.call(void 0, {padding:32,nameBrackets:!1})],m=_nullishCoalesce(_process2.default.env.ZEED_LOG, () => (_process2.default.env.LOG)),L=_chunk3P4XRJ23cjs.f.call(void 0, _process2.default.env.ZEED_TIME,!0),c=_chunk3P4XRJ23cjs.f.call(void 0, _process2.default.env.ZEED_PRETTY,!1),E=_chunk3P4XRJ23cjs.f.call(void 0, _process2.default.env.ZEED_ROTATE,!1);m&&i.unshift(_chunkH2LADFM2cjs.a.call(void 0, _chunkIA2OMOCBcjs.e.call(void 0, m),{time:L,pretty:c,rotation:E})),g.setHandlers(i)})(r,t)}_chunkP7XCQ7WVcjs.a.call(void 0, v,"Logger");function C(r,t,g){return _chunkIBQVKUC7cjs.a.call(void 0, v,r,t,g)}_chunkP7XCQ7WVcjs.a.call(void 0, C,"LoggerFromConfig");exports.a = v; exports.b = C;
|
|
2
|
+
//# sourceMappingURL=chunk-KYA5RPXA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/zeed/zeed/dist/chunk-KYA5RPXA.cjs","../src/node/log/log-context-node.ts"],"names":["Logger","name","level","getGlobalLogger","context","handlers","LoggerNodeHandler","logFilePath","process","time","valueToBoolean","pretty","rotation","LoggerFileHandler","toPath","__name","LoggerFromConfig","config","_LoggerFromConfig"],"mappings":"AAAA,qUAAwC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,wDAAyC,oFCE1Q,SAQJA,CAAAA,CAAOC,CAAAA,CAAeC,CAAAA,CAA4C,CAChF,OAAOC,iCAAAA,CAAiBC,EAAY,CAClC,IAAMC,CAAAA,CAAW,CACfC,iCAAAA,CACE,OAAA,CAAS,EAAA,CACT,YAAA,CAAc,CAAA,CAEhB,CAAC,CACH,CAAA,CAEMC,CAAAA,kBAAcC,iBAAAA,CAAQ,GAAA,CAAI,QAAA,SAAYA,iBAAAA,CAAQ,GAAA,CAAI,KAAA,CAClDC,CAAAA,CAAOC,iCAAAA,iBAAeF,CAAQ,GAAA,CAAI,SAAA,CAAW,CAAA,CAAI,CAAA,CACjDG,CAAAA,CAASD,iCAAAA,iBAAeF,CAAQ,GAAA,CAAI,WAAA,CAAa,CAAA,CAAK,CAAA,CACtDI,CAAAA,CAAWF,iCAAAA,iBAAeF,CAAQ,GAAA,CAAI,WAAA,CAAa,CAAA,CAAK,CAAA,CAC1DD,CAAAA,EACFF,CAAAA,CAAS,OAAA,CAAQQ,iCAAAA,iCAAkBC,CAAkB,CAAA,CAAG,CAAE,IAAA,CAAAL,CAAAA,CAAM,MAAA,CAAAE,CAAAA,CAAQ,QAAA,CAAAC,CAAS,CAAC,CAAC,CAAA,CAErFR,CAAAA,CAAQ,WAAA,CAAYC,CAAQ,CAC9B,CAAC,CAAA,CAAEJ,CAAAA,CAAMC,CAAK,CAChB,CAnBgBa,iCAAAA,CAAAf,CAAA,QAAA,CAAA,CAsBT,SAASgB,CAAAA,CAAiBC,CAAAA,CAAmBhB,CAAAA,CAAcC,CAAAA,CAA4C,CAC5G,OAAOgB,iCAAAA,CAAkBlB,CAAQiB,CAAAA,CAAQhB,CAAAA,CAAMC,CAAK,CACtD,CAFgBa,iCAAAA,CAAAC,CAAA,kBAAA,CAAA,CAAA,6BAAA","file":"/home/runner/work/zeed/zeed/dist/chunk-KYA5RPXA.cjs","sourcesContent":[null,"import type { LoggerInterface, LogLevelAliasType } from '../../common/log/log-base'\nimport type { LogConfig } from '../../common/log/log-config'\nimport process from 'node:process'\nimport { valueToBoolean } from '../../common/data/convert'\nimport { getGlobalLogger } from '../../common/log/log'\nimport { _LoggerFromConfig } from '../../common/log/log-config'\nimport { toPath } from '../env'\nimport { LoggerFileHandler } from './log-file'\nimport { LoggerNodeHandler } from './log-node'\n\nexport function Logger(name?: string, level?: LogLevelAliasType): LoggerInterface {\n return getGlobalLogger((context) => {\n const handlers = [\n LoggerNodeHandler({\n padding: 32,\n nameBrackets: false,\n // levelHelper: false,\n }),\n ]\n\n const logFilePath = process.env.ZEED_LOG ?? process.env.LOG\n const time = valueToBoolean(process.env.ZEED_TIME, true)\n const pretty = valueToBoolean(process.env.ZEED_PRETTY, false)\n const rotation = valueToBoolean(process.env.ZEED_ROTATE, false)\n if (logFilePath)\n handlers.unshift(LoggerFileHandler(toPath(logFilePath), { time, pretty, rotation }))\n\n context.setHandlers(handlers)\n })(name, level)\n}\n\n/** See LogConfig */\nexport function LoggerFromConfig(config: LogConfig, name: string, level?: LogLevelAliasType): LoggerInterface {\n return _LoggerFromConfig(Logger, config, name, level)\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkL5XYQBG4cjs = require('./chunk-L5XYQBG4.cjs');var _chunk4TLMJAZBcjs = require('./chunk-4TLMJAZB.cjs');var _chunkJJKWFF7Bcjs = require('./chunk-JJKWFF7B.cjs');var _chunkP7XCQ7WVcjs = require('./chunk-P7XCQ7WV.cjs');var U=class U{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}};_chunkP7XCQ7WVcjs.a.call(void 0, U,"BinEncoder");var x=U;function q(){return new x}_chunkP7XCQ7WVcjs.a.call(void 0, q,"createBinEncoder");function F(t){let n=t.cpos;for(let i=0;i<t.bufs.length;i++)n+=t.bufs[i].length;return n}_chunkP7XCQ7WVcjs.a.call(void 0, F,"length");function L(t){let n=new Uint8Array(F(t)),i=0;for(let e=0;e<t.bufs.length;e++){let o=t.bufs[e];n.set(o,i),i+=o.length}return n.set(_chunk4TLMJAZBcjs.a.call(void 0, t.cbuf.buffer,0,t.cpos),i),n}_chunkP7XCQ7WVcjs.a.call(void 0, L,"encodeToUint8Array");function M(t,n){let i=t.cbuf.length;i-t.cpos<n&&(t.bufs.push(_chunk4TLMJAZBcjs.a.call(void 0, t.cbuf.buffer,0,t.cpos)),t.cbuf=new Uint8Array(Math.max(i,n)*2),t.cpos=0)}_chunkP7XCQ7WVcjs.a.call(void 0, M,"verifyLen");function f(t,n){let i=t.cbuf.length;t.cpos===i&&(t.bufs.push(t.cbuf),t.cbuf=new Uint8Array(i*2),t.cpos=0),t.cbuf[t.cpos++]=n}_chunkP7XCQ7WVcjs.a.call(void 0, f,"write");function g(t,n,i){let e=null;for(let o=0;o<t.bufs.length&&e===null;o++){let u=t.bufs[o];n<u.length?e=u:n-=u.length}e===null&&(e=t.cbuf),e[n]=i}_chunkP7XCQ7WVcjs.a.call(void 0, g,"set");var G=f,H= exports.i =g;function J(t,n){f(t,n&255),f(t,n>>>8&255)}_chunkP7XCQ7WVcjs.a.call(void 0, J,"writeUint16");function K(t,n,i){g(t,n,i&255),g(t,n+1,i>>>8&255)}_chunkP7XCQ7WVcjs.a.call(void 0, K,"setUint16");function Q(t,n){for(let i=0;i<4;i++)f(t,n&255),n>>>=8}_chunkP7XCQ7WVcjs.a.call(void 0, Q,"writeUint32");function W(t,n){for(let i=3;i>=0;i--)f(t,n>>>8*i&255)}_chunkP7XCQ7WVcjs.a.call(void 0, W,"writeUint32BigEndian");function X(t,n,i){for(let e=0;e<4;e++)g(t,n+e,i&255),i>>>=8}_chunkP7XCQ7WVcjs.a.call(void 0, X,"setUint32");function c(t,n){for(;n>127;)f(t,128|127&n),n=Math.floor(n/128);f(t,127&n)}_chunkP7XCQ7WVcjs.a.call(void 0, c,"writeVarUint");function v(t){return t!==0?t<0:1/t<0}_chunkP7XCQ7WVcjs.a.call(void 0, v,"isNegativeZero");function D(t,n){let i=v(n);for(i&&(n=-n),f(t,(n>63?128:0)|(i?64:0)|63&n),n=Math.floor(n/64);n>0;)f(t,(n>127?128:0)|127&n),n=Math.floor(n/128)}_chunkP7XCQ7WVcjs.a.call(void 0, D,"writeVarInt");function T(t,n){let i=t.cbuf.length,e=t.cpos,o=Math.min(i-e,n.length),u=n.length-o;t.cbuf.set(n.subarray(0,o),e),t.cpos+=o,u>0&&(t.bufs.push(t.cbuf),t.cbuf=new Uint8Array(Math.max(i*2,u)),t.cbuf.set(n.subarray(o)),t.cpos=u)}_chunkP7XCQ7WVcjs.a.call(void 0, T,"writeUint8Array");function k(t,n){c(t,n.byteLength),T(t,n)}_chunkP7XCQ7WVcjs.a.call(void 0, k,"writeVarUint8Array");var b,I;function N(t,n){if(b==null&&(b=new Uint8Array(3e4),I=b.length/3),n.length<I){let i=_chunkJJKWFF7Bcjs.e.call(void 0, ).encodeInto(n,b).written||0;c(t,i);for(let e=0;e<i;e++)f(t,b[e])}else k(t,_chunkJJKWFF7Bcjs.f.call(void 0, n))}_chunkP7XCQ7WVcjs.a.call(void 0, N,"_writeVarStringNative");function C(t,n){let i=unescape(encodeURIComponent(n)),e=i.length;c(t,e);for(let o=0;o<e;o++)f(t,i.codePointAt(o))}_chunkP7XCQ7WVcjs.a.call(void 0, C,"_writeVarStringPolyfill");function V(t,n){return _optionalChain([_chunkJJKWFF7Bcjs.e.call(void 0, ), 'optionalAccess', _2 => _2.encodeInto])?N(t,n):C(t,n)}_chunkP7XCQ7WVcjs.a.call(void 0, V,"writeVarString");function Y(t,n){return T(t,L(n))}_chunkP7XCQ7WVcjs.a.call(void 0, Y,"writeBinaryEncoder");function B(t,n){M(t,n);let i=new DataView(t.cbuf.buffer,t.cpos,n);return t.cpos+=n,i}_chunkP7XCQ7WVcjs.a.call(void 0, B,"writeOnDataView");function P(t,n){return B(t,4).setFloat32(0,n,!1)}_chunkP7XCQ7WVcjs.a.call(void 0, P,"writeFloat32");function _(t,n){return B(t,8).setFloat64(0,n,!1)}_chunkP7XCQ7WVcjs.a.call(void 0, _,"writeFloat64");function j(t,n){return B(t,8).setBigInt64(0,n,!1)}_chunkP7XCQ7WVcjs.a.call(void 0, j,"writeBigInt64");function $(t,n){return B(t,8).setBigUint64(0,n,!1)}_chunkP7XCQ7WVcjs.a.call(void 0, $,"writeBigUint64");var p;function O(t){return p==null&&(p=new DataView(new ArrayBuffer(4))),p.setFloat32(0,t),p.getFloat32(0)===t}_chunkP7XCQ7WVcjs.a.call(void 0, O,"isFloat32");function S(t,n){switch(typeof n){case"string":f(t,119),V(t,n);break;case"number":Number.isInteger(n)&&Math.abs(n)<=2147483647?(f(t,125),D(t,n)):O(n)?(f(t,124),P(t,n)):(f(t,123),_(t,n));break;case"bigint":f(t,122),j(t,n);break;case"object":if(n===null)f(t,126);else if(Array.isArray(n)){f(t,117),c(t,n.length);for(let i=0;i<n.length;i++)S(t,n[i])}else if(n instanceof Uint8Array)f(t,116),k(t,n);else{f(t,118);let i=Object.keys(n);i.sort(),c(t,i.length);for(let e=0;e<i.length;e++){let o=i[e];V(t,o),S(t,n[o])}}break;case"boolean":f(t,n?120:121);break;default:f(t,127)}}_chunkP7XCQ7WVcjs.a.call(void 0, S,"writeAny");exports.a = x; exports.b = q; exports.c = F; exports.d = L; exports.e = M; exports.f = f; exports.g = g; exports.h = G; exports.i = H; exports.j = J; exports.k = K; exports.l = Q; exports.m = W; exports.n = X; exports.o = c; exports.p = v; exports.q = D; exports.r = T; exports.s = k; exports.t = V; exports.u = Y; exports.v = B; exports.w = P; exports.x = _; exports.y = j; exports.z = $; exports.A = S;
|
|
2
|
+
//# sourceMappingURL=chunk-L7JPF47T.cjs.map
|