@depup/zone-eu__mailsplit 5.4.16-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,153 @@
1
+ EUROOPA LIIDU TARKVARA VABA KASUTUSE LITSENTS v. 1.2
2
+ EUPL © Euroopa Liit 2007, 2016
3
+
4
+ Euroopa Liidu tarkvara vaba kasutuse litsents („EUPL“) kehtib allpool määratletud teose suhtes, mida levitatakse vastavalt käesoleva litsentsi tingimustele. Teost on keelatud kasutada muul viisil kui vastavalt käesoleva litsentsi tingimustele niivõrd, kuivõrd sellise kasutamise suhtes kehtivad teose autoriõiguse omaja õigused).
5
+
6
+ Teost levitatakse vastavalt käesoleva litsentsi tingimustele, kui allpool määratletud litsentsiandja paneb vahetult teose autoriõiguse märke järele järgmise märke:
7
+
8
+ Litsentsitud EUPL alusel
9
+
10
+ või on muul viisil väljendanud soovi litsentsida originaalteos EUPL alusel.
11
+
12
+ 1. Mõisted
13
+ Käesolevas litsentsis kasutatakse järgmisi mõisteid:
14
+
15
+ — „litsents“ – käesolev litsents;
16
+
17
+ — „originaalteos“ – teos või tarkvara, mida litsentsiandja käesoleva litsentsi alusel levitab või edastab ning mis on kättesaadav lähtekoodina ja teatavatel juhtudel ka täitmiskoodina;
18
+
19
+ — „tuletatud teos“ – teos või tarkvara, mida litsentsisaajal on olnud võimalik luua tuginedes originaalteosele või selle muudetud versioonile. Käesolevas litsentsis ei määratleta muudatuse ulatust või sõltuvust originaalteosest, mis on vajalik selleks, et klassifitseerida teos tuletatud teoseks; selline ulatus määratakse kindlaks vastavalt artiklis 15 nimetatud riigis kehtivatele autoriõigust käsitlevatele õigusaktidele;
20
+
21
+ — „teos“ – originaalteos või sellest tuletatud teosed;
22
+
23
+ — „lähtekood“ – teose inimloetav vorm, mida inimestel on kõige lihtsam uurida ja muuta;
24
+
25
+ — „täitmiskood“ – igasugune kood, mille on tavaliselt koostanud arvuti ja mis on mõeldud arvuti poolt programmina tõlgendamiseks;
26
+
27
+ — „litsentsiandja“ – füüsiline või juriidiline isik, kes levitab või edastab teost litsentsi alusel;
28
+
29
+ — „edasiarendaja“ – füüsiline või juriidiline isik, kes muudab teost litsentsi alusel või osaleb muul moel tuletatud teose loomises;
30
+
31
+ — „litsentsisaaja“ või „Teie“ – iga füüsiline või juriidiline isik, kes kasutab teost ükskõik mis moel vastavalt litsentsi tingimustele;
32
+
33
+ — „levitamine“ või „edastamine“ – teose koopiate müümine, teisele isikule andmine, laenutamine, rentimine, levitamine, edastamine, ülekandmine või teose koopiate või selle oluliste funktsioonide muul viisil teistele füüsilistele või juriidilistele isikutele kättesaadavaks tegemine võrgus või võrguväliselt.
34
+
35
+ 2. Litsentsiga antavate õiguste ulatus
36
+ Käesolevaga annab litsentsiandja Teile ülemaailmse, tasuta, all-litsentsi andmise õigusega lihtlitsentsi, mille alusel võite teha originaalteose autoriõiguse kehtivusaja jooksul järgmist:
37
+
38
+ — kasutada teost mis tahes eesmärgil ja mis tahes viisil,
39
+
40
+ — teost reprodutseerida,
41
+
42
+ — teost muuta ja luua teosel põhinevaid tuletatud teoseid,
43
+
44
+ — teost või selle koopiaid üldsusele edastada, sealhulgas neid kättesaadavaks teha või eksponeerida, samuti avalikult esitada,
45
+
46
+ — teost või selle koopiaid levitada,
47
+
48
+ — teost või selle koopiaid laenutada ja rentida,
49
+
50
+ — anda all-litsentse teose või selle koopiate suhtes kehtivate õiguste kohta.
51
+
52
+ Neid õigusi võib teostada mistahes praegu tuntud või hiljem leiutatud keskkonnas, toel või formaadis, ja sellises ulatuses, nagu lubab kohaldatav õigus.
53
+
54
+ Riikides, kus kehtivad isiklikud õigused, loobub litsentsiandja seadusega lubatud ulatuses oma õigusest teostada isiklikke õigusi, et oleks võimalik eespool loetletud varalisi õigusi litsentsida.
55
+
56
+ Litsentsiandja annab litsentsisaajale tasuta lihtlitsentsi kõigi litsentsiandjale kuuluvate patentide kasutamiseks ulatuses, mis on vajalik teose suhtes käesoleva litsentsiga antud õiguste kasutamiseks.
57
+
58
+ 3. Lähtekoodi edastamine
59
+ Litsentsiandja võib teose kättesaadavaks teha kas lähtekoodi või täitmiskoodi kujul. Kui teos tehakse kättesaadavaks täitmiskoodi kujul, lisab litsentsiandja igale tema poolt levitatavale teose koopiale lähtekoodi masinloetava koopia või näitab teose autoriõiguse märke järele lisatud märkega ära hoidla, kust lähtekood on kergesti ja tasuta kättesaadav seni, kuni litsentsiandja jätkab teose levitamist või edastamist.
60
+
61
+ 4. Autoriõiguse piiramine
62
+ Käesolev litsents ei võta litsentsisaajalt võimalusi, mis tulenevad teose õiguste omaja ainuõiguste suhtes kehtestatud eranditest või ainuõiguste piiramisest, nende õiguste ammendumisest või muudest nende õiguste suhtes kohaldatavatest piirangutest.
63
+
64
+ 5. Litsentsisaaja kohustused
65
+ Eespool nimetatud õigused antakse litsentsisaajale tingimusel, et ta peab kinni teatavatest piirangutest ja täidab teatavaid talle pandud kohustusi. Need kohustused on järgmised:
66
+
67
+ Õigus autorsusele. Litsentsisaaja hoiab puutumatuna kõik autoriõiguse, patentide ja kaubamärkide kohta käivad märked ja kõik märked, mis viitavad litsentsile ja garantii puudumisele. Litsentsisaaja peab teose iga tema poolt levitatavale või edastatavale koopiale lisama nimetatud märgete koopiad ja litsentsi koopia. Litsentsisaaja peab tagama, et iga tuletatud teos kannab selget märget selle kohta, et teost on muudetud ja muutmise kuupäeva.
68
+ Klausel vaba kasutamise tagamise kohta (copyleft). Kui litsentsisaaja levitab või edastab originaalteose või tuletatud teoste koopiaid, toimub see levitamine või edastamine vastavalt käesoleva litsentsi tingimustele või käesoleva litsentsi hilisema versiooni tingimustele, välja arvatud juhul, kui originaalteost levitatakse ainult vastavalt litsentsi käesolevale versioonile (näiteks märkides „ainult EUPL v.1.2“). Litsentsisaaja ei tohi (litsentsiandjaks saades) teosele või tuletatud teosele lisada ega kehtestada mingeid lisatingimusi, mis muudavad või piiravad litsentsi tingimusi.
69
+ Ühilduvuse klausel. Kui litsentsisaaja levitab või edastab tuletatud teoseid või nende koopiaid, mis põhinevad nii teosel kui ka teisel, käesoleva litsentsiga ühilduva litsentsi alusel litsentsitud teosel, võib see levitamine või edastamine toimuda vastavalt nimetatud ühilduva litsentsi tingimustele. Käesolevas klauslis tähendab „ühilduv litsents“ käesoleva litsentsi lisas loetletud litsentse. Kui litsentsisaaja ühilduvale litsentsile vastavad kohustused on vastuolus tema kohustustega vastavalt käesolevale litsentsile, loetakse kehtivaks ühilduva litsentsi kohased kohustused.
70
+ Lähtekoodi lisamine. Teose koopiate levitamisel või edastamisel lisab litsentsisaaja igale koopiale lähtekoodi masinloetava koopia või näitab ära hoidla, kust lähtekood on kergesti ja tasuta kättesaadav seni, kuni litsentsisaaja jätkab teose levitamist või edastamist.
71
+ Õiguskaitse. Käesoleva litsentsiga ei anta luba kasutada litsentsiandja ärinimesid, kaubamärke, teenindusmärke või nimesid, välja arvatud juhul, kui see on vajalik mõistlikuks ja tavapäraseks kasutamiseks teose päritolu kirjeldamisel ja autoriõiguse märke sisu reprodutseerimisel.
72
+ 6. Autorsuse ahel
73
+ Esialgne litsentsiandja tagab, et käesoleva litsentsiga antav autoriõigus originaalteosele kuulub talle või on talle litsentsitud ja et tal on õigus seda litsentsiga edasi anda.
74
+
75
+ Iga edasiarendaja tagab, et autoriõigus tema poolt teosele tehtavatele muudatustele kuulub talle või on talle litsentsitud ja et tal on õigus litsentsi anda.
76
+
77
+ Iga kord, kui Te võtate vastu litsentsi, annavad esialgne litsentsiandja ja hilisemad edasiarendajad Teile litsentsi nende osaluse kasutamiseks teoses vastavalt käesoleva litsentsi tingimustele.
78
+
79
+ 7. Garantii puudumine
80
+ Teos on veel pooleli ja arvukad edasiarendajad parendavad seda järjepidevalt. See ei ole lõpetatud teos ja võib seetõttu sisaldada defekte ja programmivigu, mis on omased seda liiki arendustegevusele.
81
+
82
+ Seetõttu levitatakse teost litsentsi alusel „sellisena, nagu see on“ ilma teose suhtes kehtiva garantiita, muu hulgas garantiita kaubandusliku kvaliteedi kohta, garantiita sobivuse kohta mingi kindla eesmärgi jaoks, garantiita defektide ja vigade puudumise kohta, garantiita täpsuse kohta ja selle kohta, et ei ole rikutud muid intellektuaalse omandi õigusi peale käesoleva litsentsi artiklis 6 nimetatud autoriõiguse.
83
+
84
+ Käesolev garantii puudumise klausel on litsentsi oluline osa ja teosele õiguste andmise eeltingimus.
85
+
86
+ 8. Vastutuse välistamine
87
+ Välja arvatud tahtliku õiguserikkumise või füüsilistele isikutele tekitatud otsese kahju puhul, ei vastuta litsentsiandja mitte mingil juhul litsentsi või teose kasutamise tagajärjel tekkinud mistahes otsese või kaudse, varalise või moraalse kahju eest, muu hulgas maineväärtuse langusest tekkinud kahju, tööseisakute, arvutirikke ja talitlushäirete, andmete kadumise ja ärikahju eest, isegi juhul kui litsentsiandjat on sellise kahju tekkimise võimalikkusest teavitatud. Litsentsiandja vastutab siiski vastavalt tootevastutust käsitlevatele õigusaktidele niivõrd, kuivõrd need õigusaktid on teose suhtes kohaldatavad.
88
+
89
+ 9. Lisakokkulepped
90
+ Teose levitamisel võite Te sõlmida lisakokkuleppe, milles määratakse kindlaks käesoleva litsentsiga vastavuses olevad kohustused või teenused. Kuid kui olete nõus võtma kohustusi, võite Te tegutseda ainult iseenda nimel ja vastutusel, mitte esialgse litsentsiandja või teiste edasiarendajate nimel, ja ainult juhul, kui Te nõustute vabastama edasiarendajad vastutusest, kaitsma ja hoidma neid kahju tekkimise eest vastutuse või nõuete osas, mida nende vastu võidakse esitada selle tagajärjel, et Teie pakute garantiid või võtate lisavastutuse.
91
+
92
+ 10. Litsentsiga nõustumine
93
+ Käesoleva litsentsi sätetega saab nõustuda, klõpsates ikoonile „Nõustun“ litsentsi teksti näitava akna all või väljendades nõusolekut muul sarnasel viisil vastavalt kehtivatele õigusaktidele. Sellele ikoonile klõpsates väljendate selgelt ja pöördumatult oma nõusolekut käesoleva litsentsi ja kõigi selle tingimuste suhtes.
94
+
95
+ Samuti nõustute pöördumatult käesoleva litsentsi ja kõigi selle tingimustega, kui teostate Teile käesoleva litsentsi artikliga 2 antud õigusi, näiteks kasutate teost, loote tuletatud teose või levitate või edastate teost või selle koopiaid.
96
+
97
+ 11. Üldsuse teavitamine
98
+ Juhul, kui Te kasutate teose levitamiseks või edastamiseks elektroonilisi sidevahendeid (näiteks võimaldate teose allalaadimist veebisaidilt), tuleb levitamiskanalil või andmekandjal (näiteks veebisaidil) teha üldsusele kättesaadavaks vähemalt kohaldatava õiguse alusel kohustuslik teave litsentsiandja ja litsentsi kohta ning selle kohta, kuidas see on litsentsisaajale kättesaadav, litsentsilepingu sõlmimise kohta ja selle kohta, kuidas litsentsisaaja saab litsentsi säilitada ja reprodutseerida.
99
+
100
+ 12. Litsentsi lõppemine
101
+ Litsents ja sellega antud õigused lõppevad automaatselt juhul, kui litsentsisaaja rikub litsentsi tingimusi.
102
+
103
+ Sellise lõppemise korral ei lõpe ühegi sellise isiku litsents, kes sai teose litsentsisaajalt vastavalt litsentsi tingimustele, juhul kui see isik täidab jätkuvalt litsentsi tingimusi.
104
+
105
+ 13. Muud sätted
106
+ Ilma et see piiraks litsentsi artikli 9 kohaldamist, sisaldab litsents kogu kokkulepet, mis osapoolte vahel seose teosega on.
107
+
108
+ Kui mõni litsentsi säte on vastavalt kohaldatavatele õigusaktidele kehtetu või seda ei ole võimalik jõustada, ei mõjuta see litsentsi kui terviku kehtivust ega jõustatavust. Sellist sätet tõlgendatakse või muudetakse nii nagu vaja, et see kehtiks ja saaks tagada selle täitmise.
109
+
110
+ Euroopa Komisjon võib avaldada käesoleva litsentsi muid keeleversioone või uusi versioone või lisa uuendatud versioone, kuivõrd see on vajalik ja mõistlik, vähendamata sellega litsentsiga antavate õiguste ulatust. Litsentsi uued versioonid avaldatakse kordumatu versiooninumbriga.
111
+
112
+ Käesoleva litsentsi kõik keeleversioonid, mille Euroopa Komisjon on heaks kiitnud, on võrdväärsed. Osapooled võivad kasutada enda valitud keeleversiooni.
113
+
114
+ 14. Kohtualluvus
115
+ Ilma et see piiraks konkreetse osapooltevahelise kokkuleppe kohaldamist,
116
+
117
+ — kuuluvad käesoleva litsentsi tõlgendamisest tulenevad kohtuvaidlused Euroopa Liidu institutsioonide, organite, büroode või asutuste kui litsentsiandja ja mistahes litsentsisaaja vahel Euroopa Liidu Kohtu pädevusse, nagu on sätestatud Euroopa Liidu toimimise lepingu artiklis 272,
118
+
119
+ — kuuluvad käesoleva litsentsi tõlgendamisest tulenevad kohtuvaidlused muude osapoolte vahel selle pädeva kohtu ainupädevusse, kelle tööpiirkonnas asub litsentsiandja elukoht või peamine tegevuskoht.
120
+
121
+ 15. Kohaldatav õigus
122
+ Ilma et see piiraks konkreetse osapooltevahelise kokkuleppe kohaldamist,
123
+
124
+ — kohaldatakse käesoleva litsentsi suhtes selle Euroopa Liidu liikmesriigi õigust, kus paikneb litsentsiandja peakorter, elukoht või asukoht,
125
+
126
+ — kohaldatakse litsentsi suhtes Belgia õigust, kui litsentsiandja peakorter, elukoht või asukoht asub väljaspool Euroopa Liidu liikmesriike.
127
+
128
+ Liide
129
+ Euroopa Liidu tarkvara vaba kasutuse litsentsi artiklis 5 osutatud „ühilduvad litsentsid“ on järgmised:
130
+
131
+ — GNU General Public License (GPL) v. 2, v. 3
132
+
133
+ — GNU Affero General Public License (AGPL) v. 3
134
+
135
+ — Open Software License (OSL) v. 2.1, v. 3.0
136
+
137
+ — Eclipse Public License (EPL) v. 1.0
138
+
139
+ — CeCILL v. 2.0, v. 2.1
140
+
141
+ — Mozilla Public Licence (MPL) v. 2
142
+
143
+ — GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
144
+
145
+ — Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) muude teoste puhul peale tarkvara
146
+
147
+ — European Union Public Licence (EUPL) v. 1.1, v. 1.2
148
+
149
+ — Québec Free and Open-Source Licence – Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+)
150
+
151
+ Euroopa Komisjon võib käesolevat lisa ajakohastada loetletud litsentside hilisemate versioonidega ilma, et peaks selleks koostama EUPLi uue versiooni, eeldusel et nende litsentsidega tagatakse käesoleva litsentsi artiklis 2 sätestatud õigused ja kaitstakse hõlmatud lähtekoodi eksklusiivse omastamise eest.
152
+
153
+ Kõigi muude käesoleva liite muudatuste või täienduste jaoks on vaja koostada EUPLi uus versioon.
package/LICENSE.MIT ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2011-2019, 2024 Andris Reinman and Zone Media OÜ
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # @depup/zone-eu__mailsplit
2
+
3
+ > Dependency-bumped version of [@zone-eu/mailsplit](https://www.npmjs.com/package/@zone-eu/mailsplit)
4
+
5
+ Generated by [DepUp](https://github.com/depup/npm) -- all production
6
+ dependencies bumped to latest versions.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install @depup/zone-eu__mailsplit
12
+ ```
13
+
14
+ | Field | Value |
15
+ |-------|-------|
16
+ | Original | [@zone-eu/mailsplit](https://www.npmjs.com/package/@zone-eu/mailsplit) @ 5.4.16 |
17
+ | Processed | 2026-09-13 |
18
+ | Smoke test | passed |
19
+ | Deps updated | 0 |
20
+
21
+ ---
22
+
23
+ Source: https://github.com/depup/npm | Original: https://www.npmjs.com/package/@zone-eu/mailsplit
24
+
25
+ License inherited from the original package.
package/changes.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "bumped": {},
3
+ "timestamp": "2026-09-13T00:56:35.730Z",
4
+ "totalUpdated": 0
5
+ }
package/index.d.ts ADDED
@@ -0,0 +1,97 @@
1
+ /// <reference types="node" />
2
+
3
+ import Splitter = require('./lib/message-splitter');
4
+ import Joiner = require('./lib/message-joiner');
5
+ import Rewriter = require('./lib/node-rewriter');
6
+ import Streamer = require('./lib/node-streamer');
7
+ import ChunkedPassthrough = require('./lib/chunked-passthrough');
8
+ import Headers = require('./lib/headers');
9
+ import MimeNode = require('./lib/mime-node');
10
+
11
+ export {
12
+ /** Splits raw message bytes into MIME node and content chunks. */
13
+ Splitter,
14
+
15
+ /** Joins MIME node and content chunks back into raw message bytes. */
16
+ Joiner,
17
+
18
+ /** Rewrites body content for MIME nodes selected by a filter function. */
19
+ Rewriter,
20
+
21
+ /** Streams decoded body content for MIME nodes selected by a filter function. */
22
+ Streamer,
23
+
24
+ /** Buffers byte input and emits larger Buffer chunks. */
25
+ ChunkedPassthrough,
26
+
27
+ /** Parses, mutates, and rebuilds message header blocks. */
28
+ Headers,
29
+
30
+ /** Represents one parsed MIME node and its header/body metadata. */
31
+ MimeNode
32
+ };
33
+
34
+ export type {
35
+ /** Value that is either present as `T` or explicitly unavailable as `false`. */
36
+ Maybe,
37
+
38
+ /** Single item in an IMAP-style MIME part number. */
39
+ PartNumberItem,
40
+
41
+ /** IMAP-style path to a MIME part. */
42
+ PartNumber,
43
+
44
+ /** Options passed through to libmime instances. */
45
+ LibmimeOptions,
46
+
47
+ /** Configuration for `Splitter` and MIME node parsing. */
48
+ SplitterOptions,
49
+
50
+ /** Configuration for `ChunkedPassthrough`. */
51
+ ChunkedPassthroughOptions,
52
+
53
+ /** Configuration for format=flowed decoding. */
54
+ FlowedDecoderOptions,
55
+
56
+ /** Parsed raw header line with a normalized lookup key. */
57
+ HeaderLine,
58
+
59
+ /** Decoded structured header value. */
60
+ DecodedHeader,
61
+
62
+ /** Data or body bytes emitted by `Splitter`. */
63
+ MessageChunk,
64
+
65
+ /** Sentinel input used internally by rewriter/streamer transforms. */
66
+ EmptyChunk,
67
+
68
+ /** Object emitted by `Splitter`. */
69
+ SplitterChunk,
70
+
71
+ /** Object accepted by rewriter and streamer transforms. */
72
+ RewriterInput,
73
+
74
+ /** Predicate used to select MIME nodes. */
75
+ FilterFunc,
76
+
77
+ /** Error object that may include a Node-style string code. */
78
+ ErrorWithCode,
79
+
80
+ /** Callback that resumes processing after a selected node stream ends. */
81
+ ContinueCallback,
82
+
83
+ /** Content transform stream used for decoded or encoded node bodies. */
84
+ ContentStream,
85
+
86
+ /** Decoder stream with an internal readable-state guard. */
87
+ DecoderStream,
88
+
89
+ /** Internal splitter grouping state. */
90
+ SplitterGroup,
91
+
92
+ /** Payload emitted with `Rewriter`'s `node` event. */
93
+ RewriterNode,
94
+
95
+ /** Payload emitted with `Streamer`'s `node` event. */
96
+ StreamerNode
97
+ } from './lib/types';
package/index.js ADDED
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ const MessageSplitter = require('./lib/message-splitter');
4
+ const MessageJoiner = require('./lib/message-joiner');
5
+ const NodeRewriter = require('./lib/node-rewriter');
6
+ const NodeStreamer = require('./lib/node-streamer');
7
+ const Headers = require('./lib/headers');
8
+ const ChunkedPassthrough = require('./lib/chunked-passthrough');
9
+ const MimeNode = require('./lib/mime-node');
10
+
11
+ /** @type {typeof import('.')} */
12
+ module.exports = {
13
+ Splitter: MessageSplitter,
14
+ Joiner: MessageJoiner,
15
+ Rewriter: NodeRewriter,
16
+ Streamer: NodeStreamer,
17
+ ChunkedPassthrough,
18
+ Headers,
19
+ MimeNode
20
+ };
@@ -0,0 +1,59 @@
1
+ import { Transform } from 'node:stream';
2
+ import type { ChunkedPassthroughOptions } from './types';
3
+
4
+ /** Transform stream that buffers byte input and emits larger Buffer chunks. */
5
+ declare class ChunkedPassthrough extends Transform {
6
+ /**
7
+ * Creates a chunking passthrough transform that accepts Buffer input and emits Buffer chunks.
8
+ *
9
+ * @param options Optional chunk size configuration.
10
+ */
11
+ constructor(options?: ChunkedPassthroughOptions);
12
+
13
+ /**
14
+ * Registers a listener for buffered byte chunks.
15
+ *
16
+ * @param event Event name.
17
+ * @param listener Receives each buffered Buffer chunk.
18
+ * @returns This passthrough instance.
19
+ */
20
+ on(event: 'data', listener: (data: Buffer) => void): this;
21
+
22
+ /**
23
+ * Registers a one-time listener for the next buffered byte chunk.
24
+ *
25
+ * @param event Event name.
26
+ * @param listener Receives the next buffered Buffer chunk.
27
+ * @returns This passthrough instance.
28
+ */
29
+ once(event: 'data', listener: (data: Buffer) => void): this;
30
+
31
+ /**
32
+ * Adds a listener for buffered byte chunks.
33
+ *
34
+ * @param event Event name.
35
+ * @param listener Receives each buffered Buffer chunk.
36
+ * @returns This passthrough instance.
37
+ */
38
+ addListener(event: 'data', listener: (data: Buffer) => void): this;
39
+
40
+ /**
41
+ * Prepends a listener for buffered byte chunks.
42
+ *
43
+ * @param event Event name.
44
+ * @param listener Receives each buffered Buffer chunk.
45
+ * @returns This passthrough instance.
46
+ */
47
+ prependListener(event: 'data', listener: (data: Buffer) => void): this;
48
+
49
+ /**
50
+ * Emits a buffered byte chunk.
51
+ *
52
+ * @param event Event name.
53
+ * @param data Buffer chunk to emit.
54
+ * @returns `true` when the event had listeners.
55
+ */
56
+ emit(event: 'data', data: Buffer): boolean;
57
+ }
58
+
59
+ export = ChunkedPassthrough;
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ const { Transform } = require('stream');
4
+
5
+ /**
6
+ * Transform stream that buffers byte input and emits larger Buffer chunks.
7
+ */
8
+ class ChunkedPassthrough extends Transform {
9
+ /**
10
+ * @param {import('..').ChunkedPassthroughOptions} [options]
11
+ */
12
+ constructor(options = {}) {
13
+ let config = {
14
+ readableObjectMode: true,
15
+ writableObjectMode: false
16
+ };
17
+ super(config);
18
+ this.chunkSize = options.chunkSize || 64 * 1024; // 64KB default
19
+ this.buffer = Buffer.alloc(0);
20
+ }
21
+
22
+ /**
23
+ * @param {Buffer} chunk
24
+ * @param {BufferEncoding} encoding
25
+ * @param {import('stream').TransformCallback} callback
26
+ * @returns {void}
27
+ */
28
+ _transform(chunk, encoding, callback) {
29
+ this.buffer = Buffer.concat([this.buffer, chunk]);
30
+
31
+ if (this.buffer.length >= this.chunkSize) {
32
+ this.push(this.buffer);
33
+ this.buffer = Buffer.alloc(0);
34
+ }
35
+
36
+ callback();
37
+ }
38
+
39
+ /**
40
+ * @param {import('stream').TransformCallback} callback
41
+ * @returns {void}
42
+ */
43
+ _flush(callback) {
44
+ // Send remaining data
45
+ if (this.buffer.length > 0) {
46
+ this.push(this.buffer);
47
+ this.buffer = Buffer.alloc(0);
48
+ }
49
+ callback();
50
+ }
51
+ }
52
+
53
+ module.exports = ChunkedPassthrough;
@@ -0,0 +1,59 @@
1
+ import { Transform } from 'node:stream';
2
+ import type { FlowedDecoderOptions } from './types';
3
+
4
+ /** Transform stream that decodes `text/plain; format=flowed` content. */
5
+ declare class FlowedDecoder extends Transform {
6
+ /**
7
+ * Creates a flowed text decoder that accepts encoded text bytes and emits decoded Buffer chunks.
8
+ *
9
+ * @param config Optional flowed text and charset decoding settings.
10
+ */
11
+ constructor(config?: FlowedDecoderOptions);
12
+
13
+ /**
14
+ * Registers a listener for decoded flowed text bytes.
15
+ *
16
+ * @param event Event name.
17
+ * @param listener Receives decoded Buffer chunks.
18
+ * @returns This decoder instance.
19
+ */
20
+ on(event: 'data', listener: (data: Buffer) => void): this;
21
+
22
+ /**
23
+ * Registers a one-time listener for the next decoded flowed text chunk.
24
+ *
25
+ * @param event Event name.
26
+ * @param listener Receives the next decoded Buffer chunk.
27
+ * @returns This decoder instance.
28
+ */
29
+ once(event: 'data', listener: (data: Buffer) => void): this;
30
+
31
+ /**
32
+ * Adds a listener for decoded flowed text bytes.
33
+ *
34
+ * @param event Event name.
35
+ * @param listener Receives decoded Buffer chunks.
36
+ * @returns This decoder instance.
37
+ */
38
+ addListener(event: 'data', listener: (data: Buffer) => void): this;
39
+
40
+ /**
41
+ * Prepends a listener for decoded flowed text bytes.
42
+ *
43
+ * @param event Event name.
44
+ * @param listener Receives decoded Buffer chunks.
45
+ * @returns This decoder instance.
46
+ */
47
+ prependListener(event: 'data', listener: (data: Buffer) => void): this;
48
+
49
+ /**
50
+ * Emits a decoded flowed text chunk.
51
+ *
52
+ * @param event Event name.
53
+ * @param data Buffer chunk to emit.
54
+ * @returns `true` when the event had listeners.
55
+ */
56
+ emit(event: 'data', data: Buffer): boolean;
57
+ }
58
+
59
+ export = FlowedDecoder;
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ // Helper class to decode format=flowed text nodes
4
+
5
+ const Transform = require('stream').Transform;
6
+ const libmime = require('libmime');
7
+
8
+ /** @typedef {import('..').FlowedDecoderOptions} FlowedDecoderOptions */
9
+
10
+ const Libmime = /** @type {any} */ (libmime.Libmime);
11
+
12
+ /**
13
+ * Transform stream that decodes text/plain format=flowed content.
14
+ *
15
+ * @param {FlowedDecoderOptions} [config] Flowed text and charset decoding settings.
16
+ */
17
+ class FlowedDecoder extends Transform {
18
+ /**
19
+ * @param {FlowedDecoderOptions} [config] Flowed text and charset decoding settings.
20
+ */
21
+ constructor(config) {
22
+ super();
23
+ this.config = config || {};
24
+
25
+ /** @type {Buffer[]} */
26
+ this.chunks = [];
27
+ this.chunklen = 0;
28
+
29
+ this.libmime = new Libmime({ Iconv: this.config.Iconv });
30
+ }
31
+
32
+ /**
33
+ * @param {Buffer | string} chunk
34
+ * @param {BufferEncoding} encoding
35
+ * @param {import('stream').TransformCallback} callback
36
+ * @returns {void}
37
+ */
38
+ _transform(chunk, encoding, callback) {
39
+ if (!chunk || !chunk.length) {
40
+ return callback();
41
+ }
42
+
43
+ if (typeof chunk === 'string') {
44
+ chunk = Buffer.from(chunk, encoding);
45
+ }
46
+
47
+ this.chunks.push(chunk);
48
+ this.chunklen += chunk.length;
49
+
50
+ callback();
51
+ }
52
+
53
+ /**
54
+ * @param {import('stream').TransformCallback} callback
55
+ * @returns {void}
56
+ */
57
+ _flush(callback) {
58
+ if (this.chunklen) {
59
+ let currentBody = Buffer.concat(this.chunks, this.chunklen);
60
+
61
+ if (this.config.encoding === 'base64') {
62
+ currentBody = Buffer.from(currentBody.toString('binary'), 'base64');
63
+ }
64
+
65
+ let content = this.libmime.decodeFlowed(currentBody.toString('binary'), this.config.delSp);
66
+ this.push(Buffer.from(content, 'binary'));
67
+ }
68
+ return callback();
69
+ }
70
+ }
71
+
72
+ module.exports = FlowedDecoder;