@visulima/email 1.0.0-alpha.13 → 1.0.0-alpha.15

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/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ ## @visulima/email [1.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/email@1.0.0-alpha.14...@visulima/email@1.0.0-alpha.15) (2026-04-22)
2
+
3
+ ## @visulima/email [1.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/email@1.0.0-alpha.13...@visulima/email@1.0.0-alpha.14) (2026-04-22)
4
+
5
+ ### Bug Fixes
6
+
7
+ * **email:** resolve eslint and formatting issues ([50c6fb1](https://github.com/visulima/visulima/commit/50c6fb14a6f72e40d168fcb57908fa9489417e9a))
8
+ * **email:** resolve eslint and formatting issues ([ad82020](https://github.com/visulima/visulima/commit/ad82020ded7fffdbba89b6befd2522a908cffe81))
9
+ * **email:** resolve eslint issues and format code ([8fd689c](https://github.com/visulima/visulima/commit/8fd689c12e9c21f7222597bbf99a6fe431b5f0d4))
10
+ * Remove JSR configuration generation script and generated jsr.json files ([#616](https://github.com/visulima/visulima/issues/616)) ([533744b](https://github.com/visulima/visulima/commit/533744b103b74896941db5b727173e617a27a63b))
11
+
12
+ ### Miscellaneous Chores
13
+
14
+ * bump engines.node to ^22.14.0 || >=24.10.0 ([c3d0931](https://github.com/visulima/visulima/commit/c3d0931d1504e4f21ebf50ea680cfa7ce4ba15ce))
15
+ * **email:** apply formatter and lint fixes across providers ([addf346](https://github.com/visulima/visulima/commit/addf346653b0400de7a944b1d5573efc9654fe30))
16
+ * **email:** apply pending changes ([002c978](https://github.com/visulima/visulima/commit/002c9781033e9b2eae08257867b136dccdd11160))
17
+ * **email:** enforce curly braces and apply lint fixes ([2d82544](https://github.com/visulima/visulima/commit/2d82544bd769eef2935565a4df2c0c98b2cb8262))
18
+ * fixed jsr.json ([5d85e51](https://github.com/visulima/visulima/commit/5d85e5179de38e284ec433b14d77c71a1619c8d6))
19
+
20
+ ### Code Refactoring
21
+
22
+ * replace inline import() types with top-level imports ([4569a4c](https://github.com/visulima/visulima/commit/4569a4ca04723da069f985855dcfab292f7347e1))
23
+
24
+
25
+ ### Dependencies
26
+
27
+ * **@visulima/disposable-email-domains:** upgraded to 1.0.0-alpha.13
28
+
1
29
  ## @visulima/email [1.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/email@1.0.0-alpha.12...@visulima/email@1.0.0-alpha.13) (2026-04-08)
2
30
 
3
31
  ### Bug Fixes
package/LICENSE.md CHANGED
@@ -61,131 +61,6 @@ Repository: git+https://github.com/visulima/visulima.git
61
61
  > MIT
62
62
  >
63
63
  > # Bundled dependencies:
64
- > ## @visulima/path
65
- > License: MIT
66
- > By: Daniel Bannert
67
- > Repository: git+https://github.com/visulima/visulima.git
68
- >
69
- > > MIT License
70
- > >
71
- > > Copyright (c) 2026 visulima
72
- > >
73
- > > Permission is hereby granted, free of charge, to any person obtaining a copy
74
- > > of this software and associated documentation files (the "Software"), to deal
75
- > > in the Software without restriction, including without limitation the rights
76
- > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
77
- > > copies of the Software, and to permit persons to whom the Software is
78
- > > furnished to do so, subject to the following conditions:
79
- > >
80
- > > The above copyright notice and this permission notice shall be included in all
81
- > > copies or substantial portions of the Software.
82
- > >
83
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
84
- > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
85
- > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
86
- > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
87
- > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
88
- > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
89
- > > SOFTWARE.
90
- > >
91
- > > ---
92
- > >
93
- > > MIT License
94
- > >
95
- > > Copyright (c) Pooya Parsa <pooya@pi0.io> - Daniel Roe <daniel@roe.dev>
96
- > >
97
- > > Permission is hereby granted, free of charge, to any person obtaining a copy
98
- > > of this software and associated documentation files (the "Software"), to deal
99
- > > in the Software without restriction, including without limitation the rights
100
- > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
101
- > > copies of the Software, and to permit persons to whom the Software is
102
- > > furnished to do so, subject to the following conditions:
103
- > >
104
- > > The above copyright notice and this permission notice shall be included in all
105
- > > copies or substantial portions of the Software.
106
- > >
107
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
108
- > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
109
- > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
110
- > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
111
- > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
112
- > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
113
- > > SOFTWARE.
114
- > >
115
- > > ---
116
- > >
117
- > > Copyright Joyent, Inc. and other Node contributors.
118
- > >
119
- > > Permission is hereby granted, free of charge, to any person obtaining a
120
- > > copy of this software and associated documentation files (the
121
- > > "Software"), to deal in the Software without restriction, including
122
- > > without limitation the rights to use, copy, modify, merge, publish,
123
- > > distribute, sublicense, and/or sell copies of the Software, and to permit
124
- > > persons to whom the Software is furnished to do so, subject to the
125
- > > following conditions:
126
- > >
127
- > > The above copyright notice and this permission notice shall be included
128
- > > in all copies or substantial portions of the Software.
129
- > >
130
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
131
- > > OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
132
- > > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
133
- > > NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
134
- > > DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
135
- > > OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
136
- > > USE OR OTHER DEALINGS IN THE SOFTWARE.
137
- > >
138
- > > ---
139
- > >
140
- > > Bundled zeptomatch (https://github.com/fabiospampinato/zeptomatch)
141
- > >
142
- > > The MIT License (MIT)
143
- > >
144
- > > Copyright (c) 2023-present Fabio Spampinato
145
- > >
146
- > > Permission is hereby granted, free of charge, to any person obtaining a
147
- > > copy of this software and associated documentation files (the "Software"),
148
- > > to deal in the Software without restriction, including without limitation
149
- > > the rights to use, copy, modify, merge, publish, distribute, sublicense,
150
- > > and/or sell copies of the Software, and to permit persons to whom the
151
- > > Software is furnished to do so, subject to the following conditions:
152
- > >
153
- > > The above copyright notice and this permission notice shall be included in
154
- > > all copies or substantial portions of the Software.
155
- > >
156
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
157
- > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
158
- > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
159
- > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
160
- > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
161
- > > FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
162
- > > DEALINGS IN THE SOFTWARE.
163
- > >
164
- > >
165
- > >
166
- > > # Licenses of bundled dependencies
167
- > > The published @visulima/path artifact additionally contains code with the following licenses:
168
- > > MIT
169
- > >
170
- > > # Bundled dependencies:
171
- > > ## binary-extensions
172
- > > License: MIT
173
- > > By: Sindre Sorhus
174
- > > Repository: sindresorhus/binary-extensions
175
- > >
176
- > > > MIT License
177
- > > >
178
- > > > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
179
- > > > Copyright (c) Paul Miller (https://paulmillr.com)
180
- > > >
181
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
182
- > > >
183
- > > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
184
- > > >
185
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
186
- >
187
- > ---------------------------------------
188
- >
189
64
  > ## is-plain-obj
190
65
  > License: MIT
191
66
  > By: Sindre Sorhus
@@ -234,7 +109,7 @@ Repository: git+https://github.com/visulima/visulima.git
234
109
  >
235
110
  > # Licenses of bundled dependencies
236
111
  > The published @visulima/fs artifact additionally contains code with the following licenses:
237
- > MIT
112
+ > ISC, MIT
238
113
  >
239
114
  > # Bundled dependencies:
240
115
  > ## @visulima/error
@@ -271,131 +146,6 @@ Repository: git+https://github.com/visulima/visulima.git
271
146
  > > MIT
272
147
  > >
273
148
  > > # Bundled dependencies:
274
- > > ## @visulima/path
275
- > > License: MIT
276
- > > By: Daniel Bannert
277
- > > Repository: git+https://github.com/visulima/visulima.git
278
- > >
279
- > > > MIT License
280
- > > >
281
- > > > Copyright (c) 2026 visulima
282
- > > >
283
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy
284
- > > > of this software and associated documentation files (the "Software"), to deal
285
- > > > in the Software without restriction, including without limitation the rights
286
- > > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
287
- > > > copies of the Software, and to permit persons to whom the Software is
288
- > > > furnished to do so, subject to the following conditions:
289
- > > >
290
- > > > The above copyright notice and this permission notice shall be included in all
291
- > > > copies or substantial portions of the Software.
292
- > > >
293
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
294
- > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
295
- > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
296
- > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
297
- > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
298
- > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
299
- > > > SOFTWARE.
300
- > > >
301
- > > > ---
302
- > > >
303
- > > > MIT License
304
- > > >
305
- > > > Copyright (c) Pooya Parsa <pooya@pi0.io> - Daniel Roe <daniel@roe.dev>
306
- > > >
307
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy
308
- > > > of this software and associated documentation files (the "Software"), to deal
309
- > > > in the Software without restriction, including without limitation the rights
310
- > > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
311
- > > > copies of the Software, and to permit persons to whom the Software is
312
- > > > furnished to do so, subject to the following conditions:
313
- > > >
314
- > > > The above copyright notice and this permission notice shall be included in all
315
- > > > copies or substantial portions of the Software.
316
- > > >
317
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
318
- > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
319
- > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
320
- > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
321
- > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
322
- > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
323
- > > > SOFTWARE.
324
- > > >
325
- > > > ---
326
- > > >
327
- > > > Copyright Joyent, Inc. and other Node contributors.
328
- > > >
329
- > > > Permission is hereby granted, free of charge, to any person obtaining a
330
- > > > copy of this software and associated documentation files (the
331
- > > > "Software"), to deal in the Software without restriction, including
332
- > > > without limitation the rights to use, copy, modify, merge, publish,
333
- > > > distribute, sublicense, and/or sell copies of the Software, and to permit
334
- > > > persons to whom the Software is furnished to do so, subject to the
335
- > > > following conditions:
336
- > > >
337
- > > > The above copyright notice and this permission notice shall be included
338
- > > > in all copies or substantial portions of the Software.
339
- > > >
340
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
341
- > > > OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
342
- > > > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
343
- > > > NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
344
- > > > DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
345
- > > > OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
346
- > > > USE OR OTHER DEALINGS IN THE SOFTWARE.
347
- > > >
348
- > > > ---
349
- > > >
350
- > > > Bundled zeptomatch (https://github.com/fabiospampinato/zeptomatch)
351
- > > >
352
- > > > The MIT License (MIT)
353
- > > >
354
- > > > Copyright (c) 2023-present Fabio Spampinato
355
- > > >
356
- > > > Permission is hereby granted, free of charge, to any person obtaining a
357
- > > > copy of this software and associated documentation files (the "Software"),
358
- > > > to deal in the Software without restriction, including without limitation
359
- > > > the rights to use, copy, modify, merge, publish, distribute, sublicense,
360
- > > > and/or sell copies of the Software, and to permit persons to whom the
361
- > > > Software is furnished to do so, subject to the following conditions:
362
- > > >
363
- > > > The above copyright notice and this permission notice shall be included in
364
- > > > all copies or substantial portions of the Software.
365
- > > >
366
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
367
- > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
368
- > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
369
- > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
370
- > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
371
- > > > FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
372
- > > > DEALINGS IN THE SOFTWARE.
373
- > > >
374
- > > >
375
- > > >
376
- > > > # Licenses of bundled dependencies
377
- > > > The published @visulima/path artifact additionally contains code with the following licenses:
378
- > > > MIT
379
- > > >
380
- > > > # Bundled dependencies:
381
- > > > ## binary-extensions
382
- > > > License: MIT
383
- > > > By: Sindre Sorhus
384
- > > > Repository: sindresorhus/binary-extensions
385
- > > >
386
- > > > > MIT License
387
- > > > >
388
- > > > > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
389
- > > > > Copyright (c) Paul Miller (https://paulmillr.com)
390
- > > > >
391
- > > > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
392
- > > > >
393
- > > > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
394
- > > > >
395
- > > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
396
- > >
397
- > > ---------------------------------------
398
- > >
399
149
  > > ## is-plain-obj
400
150
  > > License: MIT
401
151
  > > By: Sindre Sorhus
@@ -430,6 +180,73 @@ Repository: git+https://github.com/visulima/visulima.git
430
180
  >
431
181
  > ---------------------------------------
432
182
  >
183
+ > ## fdir
184
+ > License: MIT
185
+ > By: thecodrr
186
+ > Repository: git+https://github.com/thecodrr/fdir.git
187
+ >
188
+ > > Copyright 2023 Abdullah Atta
189
+ > >
190
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
191
+ > >
192
+ > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
193
+ > >
194
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
195
+ >
196
+ > ---------------------------------------
197
+ >
198
+ > ## glob-parent
199
+ > License: ISC
200
+ > By: Gulp Team, Elan Shanker, Blaine Bublitz
201
+ > Repository: gulpjs/glob-parent
202
+ >
203
+ > > The ISC License
204
+ > >
205
+ > > Copyright (c) 2015, 2019 Elan Shanker, 2021 Blaine Bublitz <blaine.bublitz@gmail.com>, Eric Schoffstall <yo@contra.io> and other contributors
206
+ > >
207
+ > > Permission to use, copy, modify, and/or distribute this software for any
208
+ > > purpose with or without fee is hereby granted, provided that the above
209
+ > > copyright notice and this permission notice appear in all copies.
210
+ > >
211
+ > > THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
212
+ > > WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
213
+ > > MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
214
+ > > ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
215
+ > > WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
216
+ > > ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
217
+ > > IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
218
+ >
219
+ > ---------------------------------------
220
+ >
221
+ > ## is-extglob
222
+ > License: MIT
223
+ > By: Jon Schlinkert
224
+ > Repository: jonschlinkert/is-extglob
225
+ >
226
+ > > The MIT License (MIT)
227
+ > >
228
+ > > Copyright (c) 2014-2016, Jon Schlinkert
229
+ > >
230
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
231
+ > > of this software and associated documentation files (the "Software"), to deal
232
+ > > in the Software without restriction, including without limitation the rights
233
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
234
+ > > copies of the Software, and to permit persons to whom the Software is
235
+ > > furnished to do so, subject to the following conditions:
236
+ > >
237
+ > > The above copyright notice and this permission notice shall be included in
238
+ > > all copies or substantial portions of the Software.
239
+ > >
240
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
241
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
242
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
243
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
244
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
245
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
246
+ > > THE SOFTWARE.
247
+ >
248
+ > ---------------------------------------
249
+ >
433
250
  > ## is-fs-case-sensitive
434
251
  > License: MIT
435
252
  > By: Hiroki Osame
@@ -457,6 +274,93 @@ Repository: git+https://github.com/visulima/visulima.git
457
274
  > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
458
275
  > > SOFTWARE.
459
276
  >
277
+ > ---------------------------------------
278
+ >
279
+ > ## is-glob
280
+ > License: MIT
281
+ > By: Jon Schlinkert, Brian Woodward, Daniel Perez
282
+ > Repository: micromatch/is-glob
283
+ >
284
+ > > The MIT License (MIT)
285
+ > >
286
+ > > Copyright (c) 2014-2017, Jon Schlinkert.
287
+ > >
288
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
289
+ > > of this software and associated documentation files (the "Software"), to deal
290
+ > > in the Software without restriction, including without limitation the rights
291
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
292
+ > > copies of the Software, and to permit persons to whom the Software is
293
+ > > furnished to do so, subject to the following conditions:
294
+ > >
295
+ > > The above copyright notice and this permission notice shall be included in
296
+ > > all copies or substantial portions of the Software.
297
+ > >
298
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
299
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
300
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
301
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
302
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
303
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
304
+ > > THE SOFTWARE.
305
+ >
306
+ > ---------------------------------------
307
+ >
308
+ > ## picomatch
309
+ > License: MIT
310
+ > By: Jon Schlinkert
311
+ > Repository: micromatch/picomatch
312
+ >
313
+ > > The MIT License (MIT)
314
+ > >
315
+ > > Copyright (c) 2017-present, Jon Schlinkert.
316
+ > >
317
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
318
+ > > of this software and associated documentation files (the "Software"), to deal
319
+ > > in the Software without restriction, including without limitation the rights
320
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
321
+ > > copies of the Software, and to permit persons to whom the Software is
322
+ > > furnished to do so, subject to the following conditions:
323
+ > >
324
+ > > The above copyright notice and this permission notice shall be included in
325
+ > > all copies or substantial portions of the Software.
326
+ > >
327
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
328
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
329
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
330
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
331
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
332
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
333
+ > > THE SOFTWARE.
334
+ >
335
+ > ---------------------------------------
336
+ >
337
+ > ## tinyglobby
338
+ > License: MIT
339
+ > By: Superchupu
340
+ > Repository: git+https://github.com/SuperchupuDev/tinyglobby.git
341
+ >
342
+ > > MIT License
343
+ > >
344
+ > > Copyright (c) 2024 Madeline Gurriarán
345
+ > >
346
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
347
+ > > of this software and associated documentation files (the "Software"), to deal
348
+ > > in the Software without restriction, including without limitation the rights
349
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
350
+ > > copies of the Software, and to permit persons to whom the Software is
351
+ > > furnished to do so, subject to the following conditions:
352
+ > >
353
+ > > The above copyright notice and this permission notice shall be included in all
354
+ > > copies or substantial portions of the Software.
355
+ > >
356
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
357
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
358
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
359
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
360
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
361
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
362
+ > > SOFTWARE.
363
+ >
460
364
  >
461
365
  >
462
366
  >
@@ -701,131 +605,6 @@ Repository: git+https://github.com/visulima/visulima.git
701
605
  > MIT
702
606
  >
703
607
  > # Bundled dependencies:
704
- > ## @visulima/path
705
- > License: MIT
706
- > By: Daniel Bannert
707
- > Repository: git+https://github.com/visulima/visulima.git
708
- >
709
- > > MIT License
710
- > >
711
- > > Copyright (c) 2026 visulima
712
- > >
713
- > > Permission is hereby granted, free of charge, to any person obtaining a copy
714
- > > of this software and associated documentation files (the "Software"), to deal
715
- > > in the Software without restriction, including without limitation the rights
716
- > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
717
- > > copies of the Software, and to permit persons to whom the Software is
718
- > > furnished to do so, subject to the following conditions:
719
- > >
720
- > > The above copyright notice and this permission notice shall be included in all
721
- > > copies or substantial portions of the Software.
722
- > >
723
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
724
- > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
725
- > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
726
- > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
727
- > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
728
- > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
729
- > > SOFTWARE.
730
- > >
731
- > > ---
732
- > >
733
- > > MIT License
734
- > >
735
- > > Copyright (c) Pooya Parsa <pooya@pi0.io> - Daniel Roe <daniel@roe.dev>
736
- > >
737
- > > Permission is hereby granted, free of charge, to any person obtaining a copy
738
- > > of this software and associated documentation files (the "Software"), to deal
739
- > > in the Software without restriction, including without limitation the rights
740
- > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
741
- > > copies of the Software, and to permit persons to whom the Software is
742
- > > furnished to do so, subject to the following conditions:
743
- > >
744
- > > The above copyright notice and this permission notice shall be included in all
745
- > > copies or substantial portions of the Software.
746
- > >
747
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
748
- > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
749
- > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
750
- > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
751
- > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
752
- > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
753
- > > SOFTWARE.
754
- > >
755
- > > ---
756
- > >
757
- > > Copyright Joyent, Inc. and other Node contributors.
758
- > >
759
- > > Permission is hereby granted, free of charge, to any person obtaining a
760
- > > copy of this software and associated documentation files (the
761
- > > "Software"), to deal in the Software without restriction, including
762
- > > without limitation the rights to use, copy, modify, merge, publish,
763
- > > distribute, sublicense, and/or sell copies of the Software, and to permit
764
- > > persons to whom the Software is furnished to do so, subject to the
765
- > > following conditions:
766
- > >
767
- > > The above copyright notice and this permission notice shall be included
768
- > > in all copies or substantial portions of the Software.
769
- > >
770
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
771
- > > OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
772
- > > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
773
- > > NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
774
- > > DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
775
- > > OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
776
- > > USE OR OTHER DEALINGS IN THE SOFTWARE.
777
- > >
778
- > > ---
779
- > >
780
- > > Bundled zeptomatch (https://github.com/fabiospampinato/zeptomatch)
781
- > >
782
- > > The MIT License (MIT)
783
- > >
784
- > > Copyright (c) 2023-present Fabio Spampinato
785
- > >
786
- > > Permission is hereby granted, free of charge, to any person obtaining a
787
- > > copy of this software and associated documentation files (the "Software"),
788
- > > to deal in the Software without restriction, including without limitation
789
- > > the rights to use, copy, modify, merge, publish, distribute, sublicense,
790
- > > and/or sell copies of the Software, and to permit persons to whom the
791
- > > Software is furnished to do so, subject to the following conditions:
792
- > >
793
- > > The above copyright notice and this permission notice shall be included in
794
- > > all copies or substantial portions of the Software.
795
- > >
796
- > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
797
- > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
798
- > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
799
- > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
800
- > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
801
- > > FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
802
- > > DEALINGS IN THE SOFTWARE.
803
- > >
804
- > >
805
- > >
806
- > > # Licenses of bundled dependencies
807
- > > The published @visulima/path artifact additionally contains code with the following licenses:
808
- > > MIT
809
- > >
810
- > > # Bundled dependencies:
811
- > > ## binary-extensions
812
- > > License: MIT
813
- > > By: Sindre Sorhus
814
- > > Repository: sindresorhus/binary-extensions
815
- > >
816
- > > > MIT License
817
- > > >
818
- > > > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
819
- > > > Copyright (c) Paul Miller (https://paulmillr.com)
820
- > > >
821
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
822
- > > >
823
- > > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
824
- > > >
825
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
826
- >
827
- > ---------------------------------------
828
- >
829
608
  > ## is-plain-obj
830
609
  > License: MIT
831
610
  > By: Sindre Sorhus
@@ -874,7 +653,7 @@ Repository: git+https://github.com/visulima/visulima.git
874
653
  >
875
654
  > # Licenses of bundled dependencies
876
655
  > The published @visulima/fs artifact additionally contains code with the following licenses:
877
- > MIT
656
+ > ISC, MIT
878
657
  >
879
658
  > # Bundled dependencies:
880
659
  > ## @visulima/error
@@ -911,131 +690,6 @@ Repository: git+https://github.com/visulima/visulima.git
911
690
  > > MIT
912
691
  > >
913
692
  > > # Bundled dependencies:
914
- > > ## @visulima/path
915
- > > License: MIT
916
- > > By: Daniel Bannert
917
- > > Repository: git+https://github.com/visulima/visulima.git
918
- > >
919
- > > > MIT License
920
- > > >
921
- > > > Copyright (c) 2026 visulima
922
- > > >
923
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy
924
- > > > of this software and associated documentation files (the "Software"), to deal
925
- > > > in the Software without restriction, including without limitation the rights
926
- > > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
927
- > > > copies of the Software, and to permit persons to whom the Software is
928
- > > > furnished to do so, subject to the following conditions:
929
- > > >
930
- > > > The above copyright notice and this permission notice shall be included in all
931
- > > > copies or substantial portions of the Software.
932
- > > >
933
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
934
- > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
935
- > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
936
- > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
937
- > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
938
- > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
939
- > > > SOFTWARE.
940
- > > >
941
- > > > ---
942
- > > >
943
- > > > MIT License
944
- > > >
945
- > > > Copyright (c) Pooya Parsa <pooya@pi0.io> - Daniel Roe <daniel@roe.dev>
946
- > > >
947
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy
948
- > > > of this software and associated documentation files (the "Software"), to deal
949
- > > > in the Software without restriction, including without limitation the rights
950
- > > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
951
- > > > copies of the Software, and to permit persons to whom the Software is
952
- > > > furnished to do so, subject to the following conditions:
953
- > > >
954
- > > > The above copyright notice and this permission notice shall be included in all
955
- > > > copies or substantial portions of the Software.
956
- > > >
957
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
958
- > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
959
- > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
960
- > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
961
- > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
962
- > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
963
- > > > SOFTWARE.
964
- > > >
965
- > > > ---
966
- > > >
967
- > > > Copyright Joyent, Inc. and other Node contributors.
968
- > > >
969
- > > > Permission is hereby granted, free of charge, to any person obtaining a
970
- > > > copy of this software and associated documentation files (the
971
- > > > "Software"), to deal in the Software without restriction, including
972
- > > > without limitation the rights to use, copy, modify, merge, publish,
973
- > > > distribute, sublicense, and/or sell copies of the Software, and to permit
974
- > > > persons to whom the Software is furnished to do so, subject to the
975
- > > > following conditions:
976
- > > >
977
- > > > The above copyright notice and this permission notice shall be included
978
- > > > in all copies or substantial portions of the Software.
979
- > > >
980
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
981
- > > > OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
982
- > > > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
983
- > > > NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
984
- > > > DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
985
- > > > OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
986
- > > > USE OR OTHER DEALINGS IN THE SOFTWARE.
987
- > > >
988
- > > > ---
989
- > > >
990
- > > > Bundled zeptomatch (https://github.com/fabiospampinato/zeptomatch)
991
- > > >
992
- > > > The MIT License (MIT)
993
- > > >
994
- > > > Copyright (c) 2023-present Fabio Spampinato
995
- > > >
996
- > > > Permission is hereby granted, free of charge, to any person obtaining a
997
- > > > copy of this software and associated documentation files (the "Software"),
998
- > > > to deal in the Software without restriction, including without limitation
999
- > > > the rights to use, copy, modify, merge, publish, distribute, sublicense,
1000
- > > > and/or sell copies of the Software, and to permit persons to whom the
1001
- > > > Software is furnished to do so, subject to the following conditions:
1002
- > > >
1003
- > > > The above copyright notice and this permission notice shall be included in
1004
- > > > all copies or substantial portions of the Software.
1005
- > > >
1006
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1007
- > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1008
- > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1009
- > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1010
- > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1011
- > > > FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1012
- > > > DEALINGS IN THE SOFTWARE.
1013
- > > >
1014
- > > >
1015
- > > >
1016
- > > > # Licenses of bundled dependencies
1017
- > > > The published @visulima/path artifact additionally contains code with the following licenses:
1018
- > > > MIT
1019
- > > >
1020
- > > > # Bundled dependencies:
1021
- > > > ## binary-extensions
1022
- > > > License: MIT
1023
- > > > By: Sindre Sorhus
1024
- > > > Repository: sindresorhus/binary-extensions
1025
- > > >
1026
- > > > > MIT License
1027
- > > > >
1028
- > > > > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
1029
- > > > > Copyright (c) Paul Miller (https://paulmillr.com)
1030
- > > > >
1031
- > > > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1032
- > > > >
1033
- > > > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1034
- > > > >
1035
- > > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1036
- > >
1037
- > > ---------------------------------------
1038
- > >
1039
693
  > > ## is-plain-obj
1040
694
  > > License: MIT
1041
695
  > > By: Sindre Sorhus
@@ -1070,6 +724,73 @@ Repository: git+https://github.com/visulima/visulima.git
1070
724
  >
1071
725
  > ---------------------------------------
1072
726
  >
727
+ > ## fdir
728
+ > License: MIT
729
+ > By: thecodrr
730
+ > Repository: git+https://github.com/thecodrr/fdir.git
731
+ >
732
+ > > Copyright 2023 Abdullah Atta
733
+ > >
734
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
735
+ > >
736
+ > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
737
+ > >
738
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
739
+ >
740
+ > ---------------------------------------
741
+ >
742
+ > ## glob-parent
743
+ > License: ISC
744
+ > By: Gulp Team, Elan Shanker, Blaine Bublitz
745
+ > Repository: gulpjs/glob-parent
746
+ >
747
+ > > The ISC License
748
+ > >
749
+ > > Copyright (c) 2015, 2019 Elan Shanker, 2021 Blaine Bublitz <blaine.bublitz@gmail.com>, Eric Schoffstall <yo@contra.io> and other contributors
750
+ > >
751
+ > > Permission to use, copy, modify, and/or distribute this software for any
752
+ > > purpose with or without fee is hereby granted, provided that the above
753
+ > > copyright notice and this permission notice appear in all copies.
754
+ > >
755
+ > > THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
756
+ > > WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
757
+ > > MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
758
+ > > ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
759
+ > > WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
760
+ > > ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
761
+ > > IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
762
+ >
763
+ > ---------------------------------------
764
+ >
765
+ > ## is-extglob
766
+ > License: MIT
767
+ > By: Jon Schlinkert
768
+ > Repository: jonschlinkert/is-extglob
769
+ >
770
+ > > The MIT License (MIT)
771
+ > >
772
+ > > Copyright (c) 2014-2016, Jon Schlinkert
773
+ > >
774
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
775
+ > > of this software and associated documentation files (the "Software"), to deal
776
+ > > in the Software without restriction, including without limitation the rights
777
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
778
+ > > copies of the Software, and to permit persons to whom the Software is
779
+ > > furnished to do so, subject to the following conditions:
780
+ > >
781
+ > > The above copyright notice and this permission notice shall be included in
782
+ > > all copies or substantial portions of the Software.
783
+ > >
784
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
785
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
786
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
787
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
788
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
789
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
790
+ > > THE SOFTWARE.
791
+ >
792
+ > ---------------------------------------
793
+ >
1073
794
  > ## is-fs-case-sensitive
1074
795
  > License: MIT
1075
796
  > By: Hiroki Osame
@@ -1097,6 +818,93 @@ Repository: git+https://github.com/visulima/visulima.git
1097
818
  > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1098
819
  > > SOFTWARE.
1099
820
  >
821
+ > ---------------------------------------
822
+ >
823
+ > ## is-glob
824
+ > License: MIT
825
+ > By: Jon Schlinkert, Brian Woodward, Daniel Perez
826
+ > Repository: micromatch/is-glob
827
+ >
828
+ > > The MIT License (MIT)
829
+ > >
830
+ > > Copyright (c) 2014-2017, Jon Schlinkert.
831
+ > >
832
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
833
+ > > of this software and associated documentation files (the "Software"), to deal
834
+ > > in the Software without restriction, including without limitation the rights
835
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
836
+ > > copies of the Software, and to permit persons to whom the Software is
837
+ > > furnished to do so, subject to the following conditions:
838
+ > >
839
+ > > The above copyright notice and this permission notice shall be included in
840
+ > > all copies or substantial portions of the Software.
841
+ > >
842
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
843
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
844
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
845
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
846
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
847
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
848
+ > > THE SOFTWARE.
849
+ >
850
+ > ---------------------------------------
851
+ >
852
+ > ## picomatch
853
+ > License: MIT
854
+ > By: Jon Schlinkert
855
+ > Repository: micromatch/picomatch
856
+ >
857
+ > > The MIT License (MIT)
858
+ > >
859
+ > > Copyright (c) 2017-present, Jon Schlinkert.
860
+ > >
861
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
862
+ > > of this software and associated documentation files (the "Software"), to deal
863
+ > > in the Software without restriction, including without limitation the rights
864
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
865
+ > > copies of the Software, and to permit persons to whom the Software is
866
+ > > furnished to do so, subject to the following conditions:
867
+ > >
868
+ > > The above copyright notice and this permission notice shall be included in
869
+ > > all copies or substantial portions of the Software.
870
+ > >
871
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
872
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
873
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
874
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
875
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
876
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
877
+ > > THE SOFTWARE.
878
+ >
879
+ > ---------------------------------------
880
+ >
881
+ > ## tinyglobby
882
+ > License: MIT
883
+ > By: Superchupu
884
+ > Repository: git+https://github.com/SuperchupuDev/tinyglobby.git
885
+ >
886
+ > > MIT License
887
+ > >
888
+ > > Copyright (c) 2024 Madeline Gurriarán
889
+ > >
890
+ > > Permission is hereby granted, free of charge, to any person obtaining a copy
891
+ > > of this software and associated documentation files (the "Software"), to deal
892
+ > > in the Software without restriction, including without limitation the rights
893
+ > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
894
+ > > copies of the Software, and to permit persons to whom the Software is
895
+ > > furnished to do so, subject to the following conditions:
896
+ > >
897
+ > > The above copyright notice and this permission notice shall be included in all
898
+ > > copies or substantial portions of the Software.
899
+ > >
900
+ > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
901
+ > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
902
+ > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
903
+ > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
904
+ > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
905
+ > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
906
+ > > SOFTWARE.
907
+ >
1100
908
  >
1101
909
  >
1102
910
  >
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{detectMimeType as o,generateContentId as t,readFileAsBuffer as a}from"./packem_shared/detectMimeType-iprkVO8e.js";import{default as i}from"./packem_shared/EmailError-zm2ffVav.js";import{default as m}from"./packem_shared/RequiredOptionError-CevW3u2K.js";import{Mail as l,createMail as x}from"./packem_shared/Mail-e4KlaSct.js";import{MailMessage as s}from"./packem_shared/MailMessage-CeVZvVfv.js";import{defineProvider as u}from"./packem_shared/defineProvider-CtLH0VBE.js";export{i as EmailError,l as Mail,s as MailMessage,m as RequiredOptionError,x as createMail,u as defineProvider,o as detectMimeType,t as generateContentId,a as readFileAsBuffer};
1
+ import{detectMimeType as o,generateContentId as t,readFileAsBuffer as a}from"./packem_shared/detectMimeType-bo5oxfnt.js";import{default as i}from"./packem_shared/EmailError-zm2ffVav.js";import{default as m}from"./packem_shared/RequiredOptionError-CevW3u2K.js";import{Mail as l,createMail as x}from"./packem_shared/Mail-D93oo_9g.js";import{MailMessage as s}from"./packem_shared/MailMessage-BvaH5tZZ.js";import{defineProvider as u}from"./packem_shared/defineProvider-CtLH0VBE.js";export{i as EmailError,l as Mail,s as MailMessage,m as RequiredOptionError,x as createMail,u as defineProvider,o as detectMimeType,t as generateContentId,a as readFileAsBuffer};
@@ -1 +1 @@
1
- var p=Object.defineProperty;var l=(o,e)=>p(o,"name",{value:e,configurable:!0});import{MailMessage as f}from"./MailMessage-CeVZvVfv.js";import{z as b}from"./build-mime-message-6xstxaUV.js";import{c as m}from"./create-logger-BiWdqFNg.js";import{i as n}from"./headers-to-record-Qo124ImV.js";var y=Object.defineProperty,C=l((o,e)=>y(o,"name",{value:e,configurable:!0}),"s");class h extends f{static{l(this,"DraftMailMessage")}static{C(this,"DraftMailMessage")}constructor(){super(),this.header("X-Unsent","1")}}var M=Object.defineProperty,c=l((o,e)=>M(o,"name",{value:e,configurable:!0}),"n");const v=c((o,e,s)=>{e.success&&e.data?o&&o.info("Email sent successfully",{messageId:e.data.messageId,provider:e.data.provider}):o&&o.error("Email send failed",{error:e.error,provider:s})},"logSendResult");class d{static{l(this,"Mail")}static{c(this,"Mail")}static extractErrorMessages(e){return e instanceof Error?[e.message]:[String(e??"Unknown error")]}provider;logger;loggerInstance;globalConfig;constructor(e){this.provider=e}setLogger(e){return this.loggerInstance=e,this.logger=m("Mail",e),this}setFrom(e){return this.globalConfig??={},this.globalConfig.from=e,this.logger&&this.logger.debug("Default from address updated",{from:e.email}),this}setReplyTo(e){return this.globalConfig??={},this.globalConfig.replyTo=e,this.logger&&this.logger.debug("Default reply-to address updated",{replyTo:e.email}),this}setHeaders(e){if(this.globalConfig??={},this.globalConfig.headers=e,this.logger){const s=n(e);this.logger.debug("Default headers updated",{count:Object.keys(s).length,headers:Object.keys(s)})}return this}async draft(e){let s=e instanceof f||e instanceof h?await this.buildDraftFromMessage(e):await this.buildDraftFromOptions(e);s=this.applyGlobalConfig(s);const t=s.headers?n(s.headers):{};s.headers={...t,"X-Unsent":"1"};const r=await b(s);return this.logger&&this.logger.debug("Draft created successfully in EML format",{from:s.from.email,size:r.length,subject:s.subject,to:Array.isArray(s.to)?s.to.length:1}),r}async send(e){if(e instanceof h)throw new TypeError("Cannot send draft messages. Convert to MailMessage first or remove X-Unsent header.");let s;if(e instanceof f)this.logger&&this.logger.debug("Sending MailMessage instance"),this.loggerInstance&&e.setLogger(this.loggerInstance),s=await e.build();else{const r=e;this.logger&&this.logger.debug("Sending email with options",{subject:r.subject,to:Array.isArray(r.to)?r.to.length:1}),s=r}s=this.applyGlobalConfig(s);const t=await this.provider.sendEmail(s);return v(this.logger,t,this.provider.name??"unknown"),t}async*sendMany(e,s){const t=this.provider.name;let r=0,g=0,i=0;this.logger&&this.logger.debug("Starting batch email send",{provider:t});for await(const u of e){if(u instanceof h)throw new TypeError("Cannot send draft messages. Convert to MailMessage first or remove X-Unsent header.");if(s?.signal?.aborted){this.logger&&this.logger.warn("Batch send operation was aborted",{failed:i,processed:r,successful:g}),yield{errorMessages:["Send operation was aborted"],provider:t,successful:!1};return}r+=1;try{const a=await this.send(u);a.success&&a.data?(g+=1,this.logger&&this.logger.debug(`Email ${r} sent successfully`,{messageId:a.data.messageId}),yield{messageId:a.data.messageId,provider:a.data.provider??t,response:a.data.response,successful:!0,timestamp:a.data.timestamp}):(i+=1,this.logger&&this.logger.error(`Email ${r} send failed`,{error:a.error}),yield{errorMessages:d.extractErrorMessages(a.error),provider:t,successful:!1})}catch(a){i+=1,this.logger&&this.logger.error(`Email ${r} send failed with exception`,a),yield{errorMessages:d.extractErrorMessages(a),provider:t,successful:!1}}}this.logger&&this.logger.debug("Batch email send completed",{failureCount:i,processedCount:r,provider:t,successCount:g})}async buildDraftFromMessage(e){return this.logger&&this.logger.debug("Creating draft from MailMessage instance"),this.loggerInstance&&e.setLogger(this.loggerInstance),this.applyGlobalConfigToMessage(e),await e.build()}async buildDraftFromOptions(e){return this.logger&&this.logger.debug("Creating draft from email options",{subject:e.subject,to:Array.isArray(e.to)?e.to.length:1}),e}applyGlobalConfigToMessage(e){const s=this.globalConfig?.from;s&&!e.getFrom()&&e.from(s);const t=this.globalConfig?.replyTo;if(t&&!e.getReplyTo()&&e.replyTo(t),this.globalConfig?.headers){const r=n(this.globalConfig.headers);Object.entries(r).forEach(([g,i])=>{e.header(g,i)})}}applyGlobalConfig(e){if(!this.globalConfig)return e;const s={...e};if(!s.from&&this.globalConfig.from&&(s.from=this.globalConfig.from,this.logger&&this.logger.debug("Applied global from address",{from:this.globalConfig.from.email})),!s.replyTo&&this.globalConfig.replyTo&&(s.replyTo=this.globalConfig.replyTo,this.logger&&this.logger.debug("Applied global reply-to address",{replyTo:this.globalConfig.replyTo.email})),this.globalConfig.headers){const t=n(this.globalConfig.headers),r=s.headers?n(s.headers):{};s.headers={...t,...r},this.logger&&this.logger.debug("Merged global headers",{globalCount:Object.keys(t).length,messageCount:Object.keys(r).length})}return s}}const D=c(o=>new d(o),"createMail");export{d as Mail,D as createMail};
1
+ var p=Object.defineProperty;var l=(o,e)=>p(o,"name",{value:e,configurable:!0});import{MailMessage as f}from"./MailMessage-BvaH5tZZ.js";import{z as b}from"./build-mime-message-6xstxaUV.js";import{c as m}from"./create-logger-BiWdqFNg.js";import{i as n}from"./headers-to-record-Qo124ImV.js";var y=Object.defineProperty,C=l((o,e)=>y(o,"name",{value:e,configurable:!0}),"s");class h extends f{static{l(this,"DraftMailMessage")}static{C(this,"DraftMailMessage")}constructor(){super(),this.header("X-Unsent","1")}}var M=Object.defineProperty,c=l((o,e)=>M(o,"name",{value:e,configurable:!0}),"n");const v=c((o,e,s)=>{e.success&&e.data?o&&o.info("Email sent successfully",{messageId:e.data.messageId,provider:e.data.provider}):o&&o.error("Email send failed",{error:e.error,provider:s})},"logSendResult");class d{static{l(this,"Mail")}static{c(this,"Mail")}static extractErrorMessages(e){return e instanceof Error?[e.message]:[String(e??"Unknown error")]}provider;logger;loggerInstance;globalConfig;constructor(e){this.provider=e}setLogger(e){return this.loggerInstance=e,this.logger=m("Mail",e),this}setFrom(e){return this.globalConfig??={},this.globalConfig.from=e,this.logger&&this.logger.debug("Default from address updated",{from:e.email}),this}setReplyTo(e){return this.globalConfig??={},this.globalConfig.replyTo=e,this.logger&&this.logger.debug("Default reply-to address updated",{replyTo:e.email}),this}setHeaders(e){if(this.globalConfig??={},this.globalConfig.headers=e,this.logger){const s=n(e);this.logger.debug("Default headers updated",{count:Object.keys(s).length,headers:Object.keys(s)})}return this}async draft(e){let s=e instanceof f||e instanceof h?await this.buildDraftFromMessage(e):await this.buildDraftFromOptions(e);s=this.applyGlobalConfig(s);const t=s.headers?n(s.headers):{};s.headers={...t,"X-Unsent":"1"};const r=await b(s);return this.logger&&this.logger.debug("Draft created successfully in EML format",{from:s.from.email,size:r.length,subject:s.subject,to:Array.isArray(s.to)?s.to.length:1}),r}async send(e){if(e instanceof h)throw new TypeError("Cannot send draft messages. Convert to MailMessage first or remove X-Unsent header.");let s;if(e instanceof f)this.logger&&this.logger.debug("Sending MailMessage instance"),this.loggerInstance&&e.setLogger(this.loggerInstance),s=await e.build();else{const r=e;this.logger&&this.logger.debug("Sending email with options",{subject:r.subject,to:Array.isArray(r.to)?r.to.length:1}),s=r}s=this.applyGlobalConfig(s);const t=await this.provider.sendEmail(s);return v(this.logger,t,this.provider.name??"unknown"),t}async*sendMany(e,s){const t=this.provider.name;let r=0,g=0,i=0;this.logger&&this.logger.debug("Starting batch email send",{provider:t});for await(const u of e){if(u instanceof h)throw new TypeError("Cannot send draft messages. Convert to MailMessage first or remove X-Unsent header.");if(s?.signal?.aborted){this.logger&&this.logger.warn("Batch send operation was aborted",{failed:i,processed:r,successful:g}),yield{errorMessages:["Send operation was aborted"],provider:t,successful:!1};return}r+=1;try{const a=await this.send(u);a.success&&a.data?(g+=1,this.logger&&this.logger.debug(`Email ${r} sent successfully`,{messageId:a.data.messageId}),yield{messageId:a.data.messageId,provider:a.data.provider??t,response:a.data.response,successful:!0,timestamp:a.data.timestamp}):(i+=1,this.logger&&this.logger.error(`Email ${r} send failed`,{error:a.error}),yield{errorMessages:d.extractErrorMessages(a.error),provider:t,successful:!1})}catch(a){i+=1,this.logger&&this.logger.error(`Email ${r} send failed with exception`,a),yield{errorMessages:d.extractErrorMessages(a),provider:t,successful:!1}}}this.logger&&this.logger.debug("Batch email send completed",{failureCount:i,processedCount:r,provider:t,successCount:g})}async buildDraftFromMessage(e){return this.logger&&this.logger.debug("Creating draft from MailMessage instance"),this.loggerInstance&&e.setLogger(this.loggerInstance),this.applyGlobalConfigToMessage(e),await e.build()}async buildDraftFromOptions(e){return this.logger&&this.logger.debug("Creating draft from email options",{subject:e.subject,to:Array.isArray(e.to)?e.to.length:1}),e}applyGlobalConfigToMessage(e){const s=this.globalConfig?.from;s&&!e.getFrom()&&e.from(s);const t=this.globalConfig?.replyTo;if(t&&!e.getReplyTo()&&e.replyTo(t),this.globalConfig?.headers){const r=n(this.globalConfig.headers);Object.entries(r).forEach(([g,i])=>{e.header(g,i)})}}applyGlobalConfig(e){if(!this.globalConfig)return e;const s={...e};if(!s.from&&this.globalConfig.from&&(s.from=this.globalConfig.from,this.logger&&this.logger.debug("Applied global from address",{from:this.globalConfig.from.email})),!s.replyTo&&this.globalConfig.replyTo&&(s.replyTo=this.globalConfig.replyTo,this.logger&&this.logger.debug("Applied global reply-to address",{replyTo:this.globalConfig.replyTo.email})),this.globalConfig.headers){const t=n(this.globalConfig.headers),r=s.headers?n(s.headers):{};s.headers={...t,...r},this.logger&&this.logger.debug("Merged global headers",{globalCount:Object.keys(t).length,messageCount:Object.keys(r).length})}return s}}const D=c(o=>new d(o),"createMail");export{d as Mail,D as createMail};
@@ -1 +1 @@
1
- var A=Object.defineProperty;var d=(n,e)=>A(n,"name",{value:e,configurable:!0});import{createRequire as b}from"node:module";import C from"ical-generator";import{readFileAsBuffer as u,detectMimeType as g,generateContentId as m}from"./detectMimeType-iprkVO8e.js";import p from"../template-engines/html-to-text.js";import{c as E}from"./create-logger-BiWdqFNg.js";import{i as l}from"./headers-to-record-Qo124ImV.js";const T=b(import.meta.url),a=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,f=d(n=>{if(typeof a<"u"&&a.versions&&a.versions.node){const[e,t]=a.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return a.getBuiltinModule(n)}return T(n)},"__cjs_getBuiltinModule"),{basename:c}=f("node:path"),{fileURLToPath:x}=f("node:url");var w=Object.defineProperty,y=d((n,e)=>w(n,"name",{value:e,configurable:!0}),"l");const o=y(n=>Array.isArray(n)?n.map(e=>typeof e=="string"?{email:e}:e):typeof n=="string"?[{email:n}]:[n],"normalizeAddresses");class M{static{d(this,"MailMessage")}static{y(this,"MailMessage")}fromAddress;toAddresses=[];ccAddresses=[];bccAddresses=[];subjectText="";textContent;textCharset="utf8";autoTextEnabled=!0;htmlContent;htmlCharset="utf8";dateValue;returnPathAddress;senderAddress;headers={};attachments=[];replyToAddress;priorityValue;tagsValue=[];signer;encrypter;logger;icalEventData;from(e){return this.fromAddress=typeof e=="string"?{email:e}:e,this}to(e){return this.toAddresses.length=0,this.toAddresses.push(...o(e)),this}cc(e){return this.ccAddresses.length=0,this.ccAddresses.push(...o(e)),this}bcc(e){return this.bccAddresses.length=0,this.bccAddresses.push(...o(e)),this}subject(e){return this.subjectText=e,this}text(e,t="utf8"){return this.textContent=e,this.textCharset=t,this}html(e,t="utf8"){return this.htmlContent=e,this.htmlCharset=t,this}header(e,t){return this.headers[e]=t,this}setHeaders(e){const t=l(e);return Object.assign(this.headers,t),this}async attachFromPath(e,t){try{const s=await u(e),i=t?.filename??(c(e)||"attachment"),r=t?.contentType??g(i);this.attachments.push({cid:t?.cid,content:s,contentDisposition:t?.contentDisposition??"attachment",contentType:r,encoding:t?.encoding,filename:i,headers:t?.headers}),this.logger&&this.logger.debug(`Attachment added from path: ${e}`,{contentType:r,filename:i})}catch(s){throw this.logger&&this.logger.error(`Failed to attach file from path: ${e}`,s),s}return this}attachData(e,t){const s=t.contentType??g(t.filename);return this.attachments.push({cid:t.cid,content:e,contentDisposition:t.contentDisposition??"attachment",contentType:s,encoding:t.encoding,filename:t.filename,headers:t.headers}),this.logger&&this.logger.debug("Attachment added from data",{contentType:s,filename:t.filename}),this}async embedFromPath(e,t){try{const s=await u(e),i=t?.filename??(c(e)||"inline"),r=t?.contentType??g(i),h=m(i);return this.attachments.push({cid:h,content:s,contentDisposition:"inline",contentType:r,filename:i}),this.logger&&this.logger.debug(`Inline attachment embedded from path: ${e}`,{cid:h,contentType:r,filename:i}),h}catch(s){throw this.logger&&this.logger.error(`Failed to embed file from path: ${e}`,s),s}}embedData(e,t,s){const i=s?.contentType??g(t),r=m(t);return this.attachments.push({cid:r,content:e,contentDisposition:"inline",contentType:i,filename:t}),this.logger&&this.logger.debug("Inline attachment embedded from data",{cid:r,contentType:i,filename:t}),r}replyTo(e){return this.replyToAddress=typeof e=="string"?{email:e}:e,this}date(e){return this.dateValue=typeof e=="string"?new Date(e):e,this.logger&&this.logger.debug("Date header set",{date:this.dateValue.toISOString()}),this}returnPath(e){return this.returnPathAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Return-path address set",{returnPath:this.returnPathAddress.email}),this}sender(e){return this.senderAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Sender address set",{sender:this.senderAddress.email}),this}addTo(e){return this.toAddresses.push(...o(e)),this}addCc(e){return this.ccAddresses.push(...o(e)),this}addBcc(e){return this.bccAddresses.push(...o(e)),this}addReplyTo(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.replyToAddress=typeof s=="string"?{email:s}:s}return this}addFrom(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.fromAddress=typeof s=="string"?{email:s}:s}return this}priority(e){return this.priorityValue=e,this}tags(e){return this.tagsValue=Array.isArray(e)?e:[e],this}sign(e){return this.signer=e,this.logger&&this.logger.debug("Email signer configured"),this}encrypt(e){return this.encrypter=e,this.logger&&this.logger.debug("Email encrypter configured"),this}setLogger(e){return this.logger=E("MailMessage",e),this}icalEvent(e,t){if(typeof e=="function"){const s=C();e(s),this.icalEventData={content:s.toString(),...t}}else this.icalEventData={content:e,...t};return this.logger&&this.logger.debug("Calendar event attached",{method:t?.method}),this}icalEventFromFile(e,t){const s=typeof e=="string"?e:x(e);return this.icalEventData={path:s,...t},this.logger&&this.logger.debug(`Calendar event attached from file: ${s}`,{method:t?.method}),this}icalEventFromUrl(e,t){return this.icalEventData={href:e,...t},this.logger&&this.logger.debug(`Calendar event attached from URL: ${e}`,{method:t?.method}),this}async view(e,t,s,i){try{const r=i?.autoText!==!1;this.autoTextEnabled=r,this.logger&&this.logger.debug("Rendering template",{autoText:r});const h=await e(t,s,i);this.html(h),r&&h&&this.tryAutoGenerateText(h),this.logger&&this.logger.debug("Template rendered successfully")}catch(r){throw this.logger&&this.logger.error("Failed to render template",r),new Error(`Failed to render template: ${r.message}`)}return this}async viewText(e,t,s,i){try{this.logger&&this.logger.debug("Rendering text template");const r=await e(t,s,i);if(typeof r=="string")this.text(r),this.logger&&this.logger.debug("Text template rendered successfully");else throw new TypeError("Text renderer must return a string")}catch(r){throw this.logger&&this.logger.error("Failed to render text template",r),new Error(`Failed to render text template: ${r.message}`)}return this}async build(){if(this.logger&&this.logger.debug("Building email message"),this.fromAddress||this.throwAndLogError("From address is required","Build failed: from address is required"),this.toAddresses.length===0&&this.throwAndLogError("At least one recipient is required","Build failed: at least one recipient is required"),this.subjectText||this.throwAndLogError("Subject is required","Build failed: subject is required"),this.htmlContent&&!this.textContent&&this.autoTextEnabled)try{this.textContent=p(this.htmlContent),this.logger&&this.logger.debug("Auto-generated text content from HTML")}catch{this.logger&&this.logger.debug("Failed to convert HTML to text; proceeding without text content.")}!this.textContent&&!this.htmlContent&&this.throwAndLogError("Either text or html content is required","Build failed: either text or html content is required");let e={from:this.fromAddress,html:this.htmlContent,subject:this.subjectText,text:this.textContent,to:this.toAddresses.length===1?this.toAddresses[0]:this.toAddresses};return this.ccAddresses.length>0&&(e.cc=this.ccAddresses.length===1?this.ccAddresses[0]:this.ccAddresses),this.bccAddresses.length>0&&(e.bcc=this.bccAddresses.length===1?this.bccAddresses[0]:this.bccAddresses),Object.keys(this.headers).length>0&&(e.headers=this.headers),this.attachments.length>0&&(e.attachments=this.attachments,this.logger&&this.logger.debug(`Email includes ${this.attachments.length} attachment(s)`)),this.replyToAddress&&(e.replyTo=this.replyToAddress),this.priorityValue&&(e.priority=this.priorityValue),this.tagsValue.length>0&&(e.tags=this.tagsValue),this.icalEventData&&(e.icalEvent=this.icalEventData,this.logger&&this.logger.debug("Email includes calendar event")),this.dateValue&&(e.headers={...l(e.headers??{}),Date:this.dateValue.toUTCString()}),this.returnPathAddress&&(e.headers={...l(e.headers??{}),"Return-Path":this.returnPathAddress.email}),this.senderAddress&&(e.headers={...l(e.headers??{}),Sender:this.senderAddress.email}),this.signer&&(this.logger&&this.logger.debug("Signing email message"),e=await this.signer.sign(e),this.logger&&this.logger.debug("Email message signed successfully")),this.encrypter&&(this.logger&&this.logger.debug("Encrypting email message"),e=await this.encrypter.encrypt(e),this.logger&&this.logger.debug("Email message encrypted successfully")),this.logger&&this.logger.debug("Email message built successfully",{bcc:this.bccAddresses.length,cc:this.ccAddresses.length,hasHtml:!!this.htmlContent,hasText:!!this.textContent,to:this.toAddresses.length}),e}getSubject(){return this.subjectText}getFrom(){return this.fromAddress}getTo(){return[...this.toAddresses]}getCc(){return[...this.ccAddresses]}getBcc(){return[...this.bccAddresses]}getReplyTo(){return this.replyToAddress}getSender(){return this.senderAddress}getReturnPath(){return this.returnPathAddress}getDate(){return this.dateValue}getPriority(){return this.priorityValue}getTextBody(){return this.textContent}getTextCharset(){return this.textCharset}getHtmlBody(){return this.htmlContent}getHtmlCharset(){return this.htmlCharset}getAttachments(){return[...this.attachments]}tryAutoGenerateText(e){try{const t=p(e);t&&!this.textContent&&this.text(t),this.logger&&this.logger.debug("Auto-generated text content from HTML template")}catch(t){this.logger&&this.logger.warn("Failed to auto-generate text from HTML template",t)}}throwAndLogError(e,t){const s=new Error(e);throw this.logger&&this.logger.error(t??e),s}}export{M as MailMessage,M as default};
1
+ var A=Object.defineProperty;var d=(n,e)=>A(n,"name",{value:e,configurable:!0});import{createRequire as b}from"node:module";import C from"ical-generator";import{readFileAsBuffer as u,detectMimeType as g,generateContentId as m}from"./detectMimeType-bo5oxfnt.js";import p from"../template-engines/html-to-text.js";import{c as E}from"./create-logger-BiWdqFNg.js";import{i as l}from"./headers-to-record-Qo124ImV.js";const T=b(import.meta.url),a=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,f=d(n=>{if(typeof a<"u"&&a.versions&&a.versions.node){const[e,t]=a.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return a.getBuiltinModule(n)}return T(n)},"__cjs_getBuiltinModule"),{basename:c}=f("node:path"),{fileURLToPath:x}=f("node:url");var w=Object.defineProperty,y=d((n,e)=>w(n,"name",{value:e,configurable:!0}),"l");const o=y(n=>Array.isArray(n)?n.map(e=>typeof e=="string"?{email:e}:e):typeof n=="string"?[{email:n}]:[n],"normalizeAddresses");class M{static{d(this,"MailMessage")}static{y(this,"MailMessage")}fromAddress;toAddresses=[];ccAddresses=[];bccAddresses=[];subjectText="";textContent;textCharset="utf8";autoTextEnabled=!0;htmlContent;htmlCharset="utf8";dateValue;returnPathAddress;senderAddress;headers={};attachments=[];replyToAddress;priorityValue;tagsValue=[];signer;encrypter;logger;icalEventData;from(e){return this.fromAddress=typeof e=="string"?{email:e}:e,this}to(e){return this.toAddresses.length=0,this.toAddresses.push(...o(e)),this}cc(e){return this.ccAddresses.length=0,this.ccAddresses.push(...o(e)),this}bcc(e){return this.bccAddresses.length=0,this.bccAddresses.push(...o(e)),this}subject(e){return this.subjectText=e,this}text(e,t="utf8"){return this.textContent=e,this.textCharset=t,this}html(e,t="utf8"){return this.htmlContent=e,this.htmlCharset=t,this}header(e,t){return this.headers[e]=t,this}setHeaders(e){const t=l(e);return Object.assign(this.headers,t),this}async attachFromPath(e,t){try{const s=await u(e),i=t?.filename??(c(e)||"attachment"),r=t?.contentType??g(i);this.attachments.push({cid:t?.cid,content:s,contentDisposition:t?.contentDisposition??"attachment",contentType:r,encoding:t?.encoding,filename:i,headers:t?.headers}),this.logger&&this.logger.debug(`Attachment added from path: ${e}`,{contentType:r,filename:i})}catch(s){throw this.logger&&this.logger.error(`Failed to attach file from path: ${e}`,s),s}return this}attachData(e,t){const s=t.contentType??g(t.filename);return this.attachments.push({cid:t.cid,content:e,contentDisposition:t.contentDisposition??"attachment",contentType:s,encoding:t.encoding,filename:t.filename,headers:t.headers}),this.logger&&this.logger.debug("Attachment added from data",{contentType:s,filename:t.filename}),this}async embedFromPath(e,t){try{const s=await u(e),i=t?.filename??(c(e)||"inline"),r=t?.contentType??g(i),h=m(i);return this.attachments.push({cid:h,content:s,contentDisposition:"inline",contentType:r,filename:i}),this.logger&&this.logger.debug(`Inline attachment embedded from path: ${e}`,{cid:h,contentType:r,filename:i}),h}catch(s){throw this.logger&&this.logger.error(`Failed to embed file from path: ${e}`,s),s}}embedData(e,t,s){const i=s?.contentType??g(t),r=m(t);return this.attachments.push({cid:r,content:e,contentDisposition:"inline",contentType:i,filename:t}),this.logger&&this.logger.debug("Inline attachment embedded from data",{cid:r,contentType:i,filename:t}),r}replyTo(e){return this.replyToAddress=typeof e=="string"?{email:e}:e,this}date(e){return this.dateValue=typeof e=="string"?new Date(e):e,this.logger&&this.logger.debug("Date header set",{date:this.dateValue.toISOString()}),this}returnPath(e){return this.returnPathAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Return-path address set",{returnPath:this.returnPathAddress.email}),this}sender(e){return this.senderAddress=typeof e=="string"?{email:e}:e,this.logger&&this.logger.debug("Sender address set",{sender:this.senderAddress.email}),this}addTo(e){return this.toAddresses.push(...o(e)),this}addCc(e){return this.ccAddresses.push(...o(e)),this}addBcc(e){return this.bccAddresses.push(...o(e)),this}addReplyTo(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.replyToAddress=typeof s=="string"?{email:s}:s}return this}addFrom(e){const t=Array.isArray(e)?e:[e];if(t.length>0){const s=t[0];this.fromAddress=typeof s=="string"?{email:s}:s}return this}priority(e){return this.priorityValue=e,this}tags(e){return this.tagsValue=Array.isArray(e)?e:[e],this}sign(e){return this.signer=e,this.logger&&this.logger.debug("Email signer configured"),this}encrypt(e){return this.encrypter=e,this.logger&&this.logger.debug("Email encrypter configured"),this}setLogger(e){return this.logger=E("MailMessage",e),this}icalEvent(e,t){if(typeof e=="function"){const s=C();e(s),this.icalEventData={content:s.toString(),...t}}else this.icalEventData={content:e,...t};return this.logger&&this.logger.debug("Calendar event attached",{method:t?.method}),this}icalEventFromFile(e,t){const s=typeof e=="string"?e:x(e);return this.icalEventData={path:s,...t},this.logger&&this.logger.debug(`Calendar event attached from file: ${s}`,{method:t?.method}),this}icalEventFromUrl(e,t){return this.icalEventData={href:e,...t},this.logger&&this.logger.debug(`Calendar event attached from URL: ${e}`,{method:t?.method}),this}async view(e,t,s,i){try{const r=i?.autoText!==!1;this.autoTextEnabled=r,this.logger&&this.logger.debug("Rendering template",{autoText:r});const h=await e(t,s,i);this.html(h),r&&h&&this.tryAutoGenerateText(h),this.logger&&this.logger.debug("Template rendered successfully")}catch(r){throw this.logger&&this.logger.error("Failed to render template",r),new Error(`Failed to render template: ${r.message}`)}return this}async viewText(e,t,s,i){try{this.logger&&this.logger.debug("Rendering text template");const r=await e(t,s,i);if(typeof r=="string")this.text(r),this.logger&&this.logger.debug("Text template rendered successfully");else throw new TypeError("Text renderer must return a string")}catch(r){throw this.logger&&this.logger.error("Failed to render text template",r),new Error(`Failed to render text template: ${r.message}`)}return this}async build(){if(this.logger&&this.logger.debug("Building email message"),this.fromAddress||this.throwAndLogError("From address is required","Build failed: from address is required"),this.toAddresses.length===0&&this.throwAndLogError("At least one recipient is required","Build failed: at least one recipient is required"),this.subjectText||this.throwAndLogError("Subject is required","Build failed: subject is required"),this.htmlContent&&!this.textContent&&this.autoTextEnabled)try{this.textContent=p(this.htmlContent),this.logger&&this.logger.debug("Auto-generated text content from HTML")}catch{this.logger&&this.logger.debug("Failed to convert HTML to text; proceeding without text content.")}!this.textContent&&!this.htmlContent&&this.throwAndLogError("Either text or html content is required","Build failed: either text or html content is required");let e={from:this.fromAddress,html:this.htmlContent,subject:this.subjectText,text:this.textContent,to:this.toAddresses.length===1?this.toAddresses[0]:this.toAddresses};return this.ccAddresses.length>0&&(e.cc=this.ccAddresses.length===1?this.ccAddresses[0]:this.ccAddresses),this.bccAddresses.length>0&&(e.bcc=this.bccAddresses.length===1?this.bccAddresses[0]:this.bccAddresses),Object.keys(this.headers).length>0&&(e.headers=this.headers),this.attachments.length>0&&(e.attachments=this.attachments,this.logger&&this.logger.debug(`Email includes ${this.attachments.length} attachment(s)`)),this.replyToAddress&&(e.replyTo=this.replyToAddress),this.priorityValue&&(e.priority=this.priorityValue),this.tagsValue.length>0&&(e.tags=this.tagsValue),this.icalEventData&&(e.icalEvent=this.icalEventData,this.logger&&this.logger.debug("Email includes calendar event")),this.dateValue&&(e.headers={...l(e.headers??{}),Date:this.dateValue.toUTCString()}),this.returnPathAddress&&(e.headers={...l(e.headers??{}),"Return-Path":this.returnPathAddress.email}),this.senderAddress&&(e.headers={...l(e.headers??{}),Sender:this.senderAddress.email}),this.signer&&(this.logger&&this.logger.debug("Signing email message"),e=await this.signer.sign(e),this.logger&&this.logger.debug("Email message signed successfully")),this.encrypter&&(this.logger&&this.logger.debug("Encrypting email message"),e=await this.encrypter.encrypt(e),this.logger&&this.logger.debug("Email message encrypted successfully")),this.logger&&this.logger.debug("Email message built successfully",{bcc:this.bccAddresses.length,cc:this.ccAddresses.length,hasHtml:!!this.htmlContent,hasText:!!this.textContent,to:this.toAddresses.length}),e}getSubject(){return this.subjectText}getFrom(){return this.fromAddress}getTo(){return[...this.toAddresses]}getCc(){return[...this.ccAddresses]}getBcc(){return[...this.bccAddresses]}getReplyTo(){return this.replyToAddress}getSender(){return this.senderAddress}getReturnPath(){return this.returnPathAddress}getDate(){return this.dateValue}getPriority(){return this.priorityValue}getTextBody(){return this.textContent}getTextCharset(){return this.textCharset}getHtmlBody(){return this.htmlContent}getHtmlCharset(){return this.htmlCharset}getAttachments(){return[...this.attachments]}tryAutoGenerateText(e){try{const t=p(e);t&&!this.textContent&&this.text(t),this.logger&&this.logger.debug("Auto-generated text content from HTML template")}catch(t){this.logger&&this.logger.warn("Failed to auto-generate text from HTML template",t)}}throwAndLogError(e,t){const s=new Error(e);throw this.logger&&this.logger.error(t??e),s}}export{M as MailMessage,M as default};
@@ -0,0 +1 @@
1
+ var l=Object.defineProperty;var a=(e,r)=>l(e,"name",{value:r,configurable:!0});import{B as n}from"./readFile-BAVMZg5e-C4whBIPd.js";import i from"mime";var c=Object.defineProperty,t=a((e,r)=>c(e,"name",{value:r,configurable:!0}),"e");const d=t(e=>i.getType(e)??"application/octet-stream","detectMimeType"),g=t(e=>{const r=e.replaceAll(/[^a-z0-9]/gi,"-").replaceAll(/-+/g,"-").replaceAll(/^-|-$/g,"").toLowerCase(),o=Math.random().toString(36).slice(2,9);return`${r}-${o}@email`},"generateContentId"),s=t(e=>n(e,{buffer:!0}),"readFileAsBuffer");export{d as detectMimeType,g as generateContentId,s as readFileAsBuffer};
@@ -1 +1 @@
1
- var A=Object.defineProperty;var y=(i,r)=>A(i,"name",{value:r,configurable:!0});import{createRequire as P}from"node:module";import m from"./EmailError-zm2ffVav.js";import T from"./RequiredOptionError-CevW3u2K.js";import{s as R}from"./generate-message-id-D4uA8gkj.js";import{i as S}from"./headers-to-record-Qo124ImV.js";import{m as h}from"./make-request--BdZNxIl.js";import{c as _,P as z,u as j,h as I}from"./provider-base-Cmzx6BTO.js";import{d as E}from"./validate-email-options-DPo3SgC0.js";import{defineProvider as q}from"./defineProvider-CtLH0VBE.js";import{a as U}from"./attachment-processor-DsmIomKc.js";import{b as v,c as k}from"./address-formatter-Cm_E_ZMa.js";const C=P(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=y(i=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[r,n]=u.versions.node.split(".").map(Number);if(r>22||r===22&&n>=3||r===20&&n>=16)return u.getBuiltinModule(i)}return C(i)},"__cjs_getBuiltinModule"),{Buffer:b}=$("node:buffer");var M=Object.defineProperty,K=y((i,r)=>M(i,"name",{value:r,configurable:!0}),"T");const s="mailgun",B="https://api.mailgun.net",O=3e4,x=3,D=K(i=>{const r=[];for(const[n,o]of Object.entries(i))if(o!=null)if(Array.isArray(o))for(const e of o)r.push(`${encodeURIComponent(n)}=${encodeURIComponent(String(e))}`);else typeof o=="object"?r.push(`${encodeURIComponent(n)}=${encodeURIComponent(JSON.stringify(o))}`):r.push(`${encodeURIComponent(n)}=${encodeURIComponent(String(o))}`);return r.join("&")},"objectToFormData"),ee=q((i={})=>{if(!i.apiKey)throw new T(s,"apiKey");if(!i.domain)throw new T(s,"domain");const r={apiKey:i.apiKey,debug:i.debug??!1,domain:i.domain,endpoint:i.endpoint??B,retries:i.retries??x,timeout:i.timeout??O,...i.logger&&{logger:i.logger}},n=new z,o=_(s,i.logger);return{endpoint:r.endpoint,features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!0,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new m(s,"Email ID is required to retrieve email details"),success:!1};await n.ensureInitialized(()=>this.initialize(),s);const a={Authorization:`Basic ${b.from(`api:${r.apiKey}`).toString("base64")}`,"Content-Type":"application/json"};o.debug("Retrieving email details",{id:e});const t=await j(async()=>h(`${r.endpoint}/v3/${r.domain}/events?message-id=${encodeURIComponent(e)}&limit=1`,{headers:a,method:"GET",timeout:r.timeout}),r.retries);if(!t.success)return o.debug("API request failed when retrieving email",t.error),{error:new m(s,`Failed to retrieve email: ${t.error instanceof Error?t.error.message:"Unknown error"}`,{cause:t.error}),success:!1};o.debug("Email details retrieved successfully");const p=t.data?.items??[],g=p.length>0?p[0]:void 0;return{data:g?.message?.headers??g?.storage??void 0,success:!0}}catch(a){return{error:I(s,"retrieve email",a,o),success:!1}}},async initialize(){await n.ensureInitialized(async()=>{if(!await this.isAvailable())throw new m(s,"Mailgun API not available or invalid API key/domain");o.debug("Provider initialized successfully")},s)},async isAvailable(){try{const e={Authorization:`Basic ${b.from(`api:${r.apiKey}`).toString("base64")}`,"Content-Type":"application/json"};o.debug("Checking Mailgun API availability");const a=await h(`${r.endpoint}/v3/domains/${r.domain}`,{headers:e,method:"GET",timeout:r.timeout});if(o.debug("Mailgun API availability check response:",{error:a.error instanceof Error?a.error.message:void 0,statusCode:a.data?.statusCode,success:a.success}),!a.success||!a.data||typeof a.data!="object")return!1;const{statusCode:t}=a.data;return typeof t=="number"&&t>=200&&t<300}catch(e){return o.debug("Error checking availability:",e),!1}},name:s,options:r,async sendEmail(e){try{const a=E(e);if(a.length>0)return{error:new m(s,`Invalid email options: ${a.join(", ")}`),success:!1};await n.ensureInitialized(()=>this.initialize(),s);const t={from:k(e.from),to:v(e.to).join(",")};if(e.subject&&(t.subject=e.subject),e.cc&&(t.cc=v(e.cc).join(",")),e.bcc&&(t.bcc=v(e.bcc).join(",")),e.replyTo&&(t["h:Reply-To"]=k(e.replyTo)),e.html&&(t.html=e.html),e.text&&(t.text=e.text),e.template&&(t.template=e.template,e.templateVariables))for(const[d,c]of Object.entries(e.templateVariables))t[`v:${d}`]=c;if(e.tags&&e.tags.length>0&&(t["o:tag"]=e.tags),e.campaignId&&(t["o:campaign"]=e.campaignId),e.deliveryTime&&(t["o:deliverytime"]=typeof e.deliveryTime=="number"?new Date(e.deliveryTime*1e3).toUTCString():e.deliveryTime),e.clickTracking!==void 0&&(t["o:clicktracking"]=e.clickTracking?"yes":"no"),e.openTracking!==void 0&&(t["o:tracking"]=e.openTracking?"yes":"no"),e.unsubscribeTracking!==void 0&&(t["o:tracking-clicks"]=e.unsubscribeTracking?"yes":"no"),e.testMode&&(t["o:testmode"]="yes"),e.requireTls&&(t["o:require-tls"]="yes"),e.skipVerification&&(t["o:skip-verification"]="yes"),e.headers){const d=S(e.headers);for(const[c,f]of Object.entries(d))t[`h:${c}`]=f}if(e.attachments&&e.attachments.length>0){const d=await Promise.all(e.attachments.map((c,f)=>U(c,s,f)));for(const c of d)t[c.key]=c.content}o.debug("Sending email via Mailgun API",{subject:t.subject,to:t.to});const p={Authorization:`Basic ${b.from(`api:${r.apiKey}`).toString("base64")}`,"Content-Type":"application/x-www-form-urlencoded"},g=D(t),l=await j(async()=>h(`${r.endpoint}/v3/${r.domain}/messages`,{headers:p,method:"POST",timeout:r.timeout},g),r.retries);if(!l.success)return o.debug("API request failed when sending email",l.error),{error:l.error??new m(s,"Failed to send email"),success:!1};const w=l.data?.body?.id??R();return o.debug("Email sent successfully",{messageId:w}),{data:{messageId:w,provider:s,response:l.data,sent:!0,timestamp:new Date},success:!0}}catch(a){return{error:I(s,"send email",a,o),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{ee as default};
1
+ var A=Object.defineProperty;var y=(i,r)=>A(i,"name",{value:r,configurable:!0});import{createRequire as P}from"node:module";import m from"./EmailError-zm2ffVav.js";import T from"./RequiredOptionError-CevW3u2K.js";import{s as R}from"./generate-message-id-D4uA8gkj.js";import{i as S}from"./headers-to-record-Qo124ImV.js";import{m as h}from"./make-request--BdZNxIl.js";import{c as _,P as z,u as j,h as I}from"./provider-base-Cmzx6BTO.js";import{d as E}from"./validate-email-options-DPo3SgC0.js";import{defineProvider as q}from"./defineProvider-CtLH0VBE.js";import{b as v,c as k}from"./address-formatter-Cm_E_ZMa.js";import{a as U}from"./attachment-processor-DsmIomKc.js";const C=P(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,$=y(i=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[r,n]=u.versions.node.split(".").map(Number);if(r>22||r===22&&n>=3||r===20&&n>=16)return u.getBuiltinModule(i)}return C(i)},"__cjs_getBuiltinModule"),{Buffer:b}=$("node:buffer");var M=Object.defineProperty,K=y((i,r)=>M(i,"name",{value:r,configurable:!0}),"T");const s="mailgun",B="https://api.mailgun.net",O=3e4,x=3,D=K(i=>{const r=[];for(const[n,o]of Object.entries(i))if(o!=null)if(Array.isArray(o))for(const e of o)r.push(`${encodeURIComponent(n)}=${encodeURIComponent(String(e))}`);else typeof o=="object"?r.push(`${encodeURIComponent(n)}=${encodeURIComponent(JSON.stringify(o))}`):r.push(`${encodeURIComponent(n)}=${encodeURIComponent(String(o))}`);return r.join("&")},"objectToFormData"),ee=q((i={})=>{if(!i.apiKey)throw new T(s,"apiKey");if(!i.domain)throw new T(s,"domain");const r={apiKey:i.apiKey,debug:i.debug??!1,domain:i.domain,endpoint:i.endpoint??B,retries:i.retries??x,timeout:i.timeout??O,...i.logger&&{logger:i.logger}},n=new z,o=_(s,i.logger);return{endpoint:r.endpoint,features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!0,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new m(s,"Email ID is required to retrieve email details"),success:!1};await n.ensureInitialized(()=>this.initialize(),s);const a={Authorization:`Basic ${b.from(`api:${r.apiKey}`).toString("base64")}`,"Content-Type":"application/json"};o.debug("Retrieving email details",{id:e});const t=await j(async()=>h(`${r.endpoint}/v3/${r.domain}/events?message-id=${encodeURIComponent(e)}&limit=1`,{headers:a,method:"GET",timeout:r.timeout}),r.retries);if(!t.success)return o.debug("API request failed when retrieving email",t.error),{error:new m(s,`Failed to retrieve email: ${t.error instanceof Error?t.error.message:"Unknown error"}`,{cause:t.error}),success:!1};o.debug("Email details retrieved successfully");const p=t.data?.items??[],g=p.length>0?p[0]:void 0;return{data:g?.message?.headers??g?.storage??void 0,success:!0}}catch(a){return{error:I(s,"retrieve email",a,o),success:!1}}},async initialize(){await n.ensureInitialized(async()=>{if(!await this.isAvailable())throw new m(s,"Mailgun API not available or invalid API key/domain");o.debug("Provider initialized successfully")},s)},async isAvailable(){try{const e={Authorization:`Basic ${b.from(`api:${r.apiKey}`).toString("base64")}`,"Content-Type":"application/json"};o.debug("Checking Mailgun API availability");const a=await h(`${r.endpoint}/v3/domains/${r.domain}`,{headers:e,method:"GET",timeout:r.timeout});if(o.debug("Mailgun API availability check response:",{error:a.error instanceof Error?a.error.message:void 0,statusCode:a.data?.statusCode,success:a.success}),!a.success||!a.data||typeof a.data!="object")return!1;const{statusCode:t}=a.data;return typeof t=="number"&&t>=200&&t<300}catch(e){return o.debug("Error checking availability:",e),!1}},name:s,options:r,async sendEmail(e){try{const a=E(e);if(a.length>0)return{error:new m(s,`Invalid email options: ${a.join(", ")}`),success:!1};await n.ensureInitialized(()=>this.initialize(),s);const t={from:k(e.from),to:v(e.to).join(",")};if(e.subject&&(t.subject=e.subject),e.cc&&(t.cc=v(e.cc).join(",")),e.bcc&&(t.bcc=v(e.bcc).join(",")),e.replyTo&&(t["h:Reply-To"]=k(e.replyTo)),e.html&&(t.html=e.html),e.text&&(t.text=e.text),e.template&&(t.template=e.template,e.templateVariables))for(const[d,c]of Object.entries(e.templateVariables))t[`v:${d}`]=c;if(e.tags&&e.tags.length>0&&(t["o:tag"]=e.tags),e.campaignId&&(t["o:campaign"]=e.campaignId),e.deliveryTime&&(t["o:deliverytime"]=typeof e.deliveryTime=="number"?new Date(e.deliveryTime*1e3).toUTCString():e.deliveryTime),e.clickTracking!==void 0&&(t["o:clicktracking"]=e.clickTracking?"yes":"no"),e.openTracking!==void 0&&(t["o:tracking"]=e.openTracking?"yes":"no"),e.unsubscribeTracking!==void 0&&(t["o:tracking-clicks"]=e.unsubscribeTracking?"yes":"no"),e.testMode&&(t["o:testmode"]="yes"),e.requireTls&&(t["o:require-tls"]="yes"),e.skipVerification&&(t["o:skip-verification"]="yes"),e.headers){const d=S(e.headers);for(const[c,f]of Object.entries(d))t[`h:${c}`]=f}if(e.attachments&&e.attachments.length>0){const d=await Promise.all(e.attachments.map((c,f)=>U(c,s,f)));for(const c of d)t[c.key]=c.content}o.debug("Sending email via Mailgun API",{subject:t.subject,to:t.to});const p={Authorization:`Basic ${b.from(`api:${r.apiKey}`).toString("base64")}`,"Content-Type":"application/x-www-form-urlencoded"},g=D(t),l=await j(async()=>h(`${r.endpoint}/v3/${r.domain}/messages`,{headers:p,method:"POST",timeout:r.timeout},g),r.retries);if(!l.success)return o.debug("API request failed when sending email",l.error),{error:l.error??new m(s,"Failed to send email"),success:!1};const w=l.data?.body?.id??R();return o.debug("Email sent successfully",{messageId:w}),{data:{messageId:w,provider:s,response:l.data,sent:!0,timestamp:new Date},success:!0}}catch(a){return{error:I(s,"send email",a,o),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{ee as default};
@@ -1 +1 @@
1
- import d from"./EmailError-zm2ffVav.js";import T from"./RequiredOptionError-CevW3u2K.js";import{s as P}from"./generate-message-id-D4uA8gkj.js";import{i as w}from"./headers-to-record-Qo124ImV.js";import{m as u}from"./make-request--BdZNxIl.js";import{c as I,P as A,u as f,h}from"./provider-base-Cmzx6BTO.js";import{s as C,a as S}from"./sanitize-header-wWav-Scu.js";import{d as j}from"./validate-email-options-DPo3SgC0.js";import{defineProvider as E}from"./defineProvider-CtLH0VBE.js";import{b as z}from"./attachment-processor-DsmIomKc.js";import{b as p,c as v}from"./address-formatter-Cm_E_ZMa.js";const r="postmark",M="https://api.postmarkapp.com",$=3e4,O=3,V=E((o={})=>{if(!o.serverToken)throw new T(r,"serverToken");const s={debug:o.debug??!1,endpoint:o.endpoint??M,retries:o.retries??O,serverToken:o.serverToken,timeout:o.timeout??$,...o.logger&&{logger:o.logger}},m=new A,i=I(r,o.logger);return{endpoint:s.endpoint,features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new d(r,"Email ID is required to retrieve email details"),success:!1};await m.ensureInitialized(()=>this.initialize(),r);const a={"Content-Type":"application/json","X-Postmark-Server-Token":s.serverToken};i.debug("Retrieving email details",{id:e});const t=await f(async()=>u(`${s.endpoint}/messages/outbound/${e}/details`,{headers:a,method:"GET",timeout:s.timeout}),s.retries);return t.success?(i.debug("Email details retrieved successfully"),{data:t.data?.body,success:!0}):(i.debug("API request failed when retrieving email",t.error),{error:new d(r,`Failed to retrieve email: ${t.error instanceof Error?t.error.message:"Unknown error"}`,{cause:t.error}),success:!1})}catch(a){return{error:h(r,"retrieve email",a,i),success:!1}}},async initialize(){await m.ensureInitialized(async()=>{if(!await this.isAvailable())throw new d(r,"Postmark API not available or invalid server token");i.debug("Provider initialized successfully")},r)},async isAvailable(){try{const e={"Content-Type":"application/json","X-Postmark-Server-Token":s.serverToken};i.debug("Checking Postmark API availability");const a=await u(`${s.endpoint}/server`,{headers:e,method:"GET",timeout:s.timeout});return i.debug("Postmark API availability check response:",{error:a.error instanceof Error?a.error.message:void 0,statusCode:a.data?.statusCode,success:a.success}),!!(a.success&&a.data&&typeof a.data=="object"&&"statusCode"in a.data&&typeof a.data.statusCode=="number"&&a.data.statusCode>=200&&a.data.statusCode<300)}catch(e){return i.debug("Error checking availability:",e),!1}},name:r,options:s,async sendEmail(e){try{const a=j(e);if(a.length>0)return{error:new d(r,`Invalid email options: ${a.join(", ")}`),success:!1};await m.ensureInitialized(()=>this.initialize(),r);const t={From:v(e.from),Subject:e.subject,To:p(e.to).join(",")};if(e.html&&(t.HtmlBody=e.html),e.text&&(t.TextBody=e.text),e.cc&&(t.Cc=p(e.cc).join(",")),e.bcc&&(t.Bcc=p(e.bcc).join(",")),e.replyTo&&(t.ReplyTo=v(e.replyTo)),e.templateId?(t.TemplateId=e.templateId,e.templateModel&&(t.TemplateModel=e.templateModel)):e.templateAlias&&(t.TemplateAlias=e.templateAlias,e.templateModel&&(t.TemplateModel=e.templateModel)),e.trackOpens!==void 0&&(t.TrackOpens=e.trackOpens),e.trackLinks!==void 0&&(t.TrackLinks=e.trackLinks),e.inlineCss!==void 0&&(t.InlineCss=e.inlineCss),e.messageStream&&(t.MessageStream=e.messageStream),e.metadata&&(t.Metadata=e.metadata),e.tags&&e.tags.length>0){const[l]=e.tags;t.Tag=l}if(e.headers){const l=w(e.headers),c=[];for(const[b,y]of Object.entries(l))c.push({Name:S(b),Value:C(String(y))});c.length>0&&(t.Headers=c)}e.attachments&&e.attachments.length>0&&(t.Attachments=await Promise.all(e.attachments.map(async l=>z(l,r)))),i.debug("Sending email via Postmark API",{subject:t.Subject,to:t.To});const k={"Content-Type":"application/json","X-Postmark-Server-Token":s.serverToken},n=await f(async()=>u(`${s.endpoint}/email`,{headers:k,method:"POST",timeout:s.timeout},JSON.stringify(t)),s.retries);if(!n.success)return i.debug("API request failed when sending email",n.error),{error:n.error??new d(r,"Failed to send email"),success:!1};const g=n.data?.body?.MessageID??P();return i.debug("Email sent successfully",{messageId:g}),{data:{messageId:g,provider:r,response:n.data,sent:!0,timestamp:new Date},success:!0}}catch(a){return{error:h(r,"send email",a,i),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{V as default};
1
+ import d from"./EmailError-zm2ffVav.js";import T from"./RequiredOptionError-CevW3u2K.js";import{s as P}from"./generate-message-id-D4uA8gkj.js";import{i as w}from"./headers-to-record-Qo124ImV.js";import{m as u}from"./make-request--BdZNxIl.js";import{c as I,P as A,u as f,h}from"./provider-base-Cmzx6BTO.js";import{s as C,a as S}from"./sanitize-header-wWav-Scu.js";import{d as j}from"./validate-email-options-DPo3SgC0.js";import{defineProvider as E}from"./defineProvider-CtLH0VBE.js";import{b as p,c as v}from"./address-formatter-Cm_E_ZMa.js";import{b as z}from"./attachment-processor-DsmIomKc.js";const r="postmark",M="https://api.postmarkapp.com",$=3e4,O=3,V=E((o={})=>{if(!o.serverToken)throw new T(r,"serverToken");const s={debug:o.debug??!1,endpoint:o.endpoint??M,retries:o.retries??O,serverToken:o.serverToken,timeout:o.timeout??$,...o.logger&&{logger:o.logger}},m=new A,i=I(r,o.logger);return{endpoint:s.endpoint,features:{attachments:!0,batchSending:!0,customHeaders:!0,html:!0,replyTo:!0,scheduling:!1,tagging:!0,templates:!0,tracking:!0},async getEmail(e){try{if(!e)return{error:new d(r,"Email ID is required to retrieve email details"),success:!1};await m.ensureInitialized(()=>this.initialize(),r);const a={"Content-Type":"application/json","X-Postmark-Server-Token":s.serverToken};i.debug("Retrieving email details",{id:e});const t=await f(async()=>u(`${s.endpoint}/messages/outbound/${e}/details`,{headers:a,method:"GET",timeout:s.timeout}),s.retries);return t.success?(i.debug("Email details retrieved successfully"),{data:t.data?.body,success:!0}):(i.debug("API request failed when retrieving email",t.error),{error:new d(r,`Failed to retrieve email: ${t.error instanceof Error?t.error.message:"Unknown error"}`,{cause:t.error}),success:!1})}catch(a){return{error:h(r,"retrieve email",a,i),success:!1}}},async initialize(){await m.ensureInitialized(async()=>{if(!await this.isAvailable())throw new d(r,"Postmark API not available or invalid server token");i.debug("Provider initialized successfully")},r)},async isAvailable(){try{const e={"Content-Type":"application/json","X-Postmark-Server-Token":s.serverToken};i.debug("Checking Postmark API availability");const a=await u(`${s.endpoint}/server`,{headers:e,method:"GET",timeout:s.timeout});return i.debug("Postmark API availability check response:",{error:a.error instanceof Error?a.error.message:void 0,statusCode:a.data?.statusCode,success:a.success}),!!(a.success&&a.data&&typeof a.data=="object"&&"statusCode"in a.data&&typeof a.data.statusCode=="number"&&a.data.statusCode>=200&&a.data.statusCode<300)}catch(e){return i.debug("Error checking availability:",e),!1}},name:r,options:s,async sendEmail(e){try{const a=j(e);if(a.length>0)return{error:new d(r,`Invalid email options: ${a.join(", ")}`),success:!1};await m.ensureInitialized(()=>this.initialize(),r);const t={From:v(e.from),Subject:e.subject,To:p(e.to).join(",")};if(e.html&&(t.HtmlBody=e.html),e.text&&(t.TextBody=e.text),e.cc&&(t.Cc=p(e.cc).join(",")),e.bcc&&(t.Bcc=p(e.bcc).join(",")),e.replyTo&&(t.ReplyTo=v(e.replyTo)),e.templateId?(t.TemplateId=e.templateId,e.templateModel&&(t.TemplateModel=e.templateModel)):e.templateAlias&&(t.TemplateAlias=e.templateAlias,e.templateModel&&(t.TemplateModel=e.templateModel)),e.trackOpens!==void 0&&(t.TrackOpens=e.trackOpens),e.trackLinks!==void 0&&(t.TrackLinks=e.trackLinks),e.inlineCss!==void 0&&(t.InlineCss=e.inlineCss),e.messageStream&&(t.MessageStream=e.messageStream),e.metadata&&(t.Metadata=e.metadata),e.tags&&e.tags.length>0){const[l]=e.tags;t.Tag=l}if(e.headers){const l=w(e.headers),c=[];for(const[b,y]of Object.entries(l))c.push({Name:S(b),Value:C(String(y))});c.length>0&&(t.Headers=c)}e.attachments&&e.attachments.length>0&&(t.Attachments=await Promise.all(e.attachments.map(async l=>z(l,r)))),i.debug("Sending email via Postmark API",{subject:t.Subject,to:t.To});const k={"Content-Type":"application/json","X-Postmark-Server-Token":s.serverToken},n=await f(async()=>u(`${s.endpoint}/email`,{headers:k,method:"POST",timeout:s.timeout},JSON.stringify(t)),s.retries);if(!n.success)return i.debug("API request failed when sending email",n.error),{error:n.error??new d(r,"Failed to send email"),success:!1};const g=n.data?.body?.MessageID??P();return i.debug("Email sent successfully",{messageId:g}),{data:{messageId:g,provider:r,response:n.data,sent:!0,timestamp:new Date},success:!0}}catch(a){return{error:h(r,"send email",a,i),success:!1}}},async validateCredentials(){return this.isAvailable()}}});export{V as default};
@@ -1 +1 @@
1
- import{default as e}from"../../packem_shared/mailgunProvider-B18_T6SA.js";export{e as mailgunProvider};
1
+ import{default as e}from"../../packem_shared/mailgunProvider-BAg_jpfi.js";export{e as mailgunProvider};
@@ -1 +1 @@
1
- import{default as a}from"../../packem_shared/postmarkProvider-uCLyHARt.js";export{a as postmarkProvider};
1
+ import{default as a}from"../../packem_shared/postmarkProvider-Ddr-1xR4.js";export{a as postmarkProvider};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/email",
3
- "version": "1.0.0-alpha.13",
3
+ "version": "1.0.0-alpha.15",
4
4
  "description": "A comprehensive email library with multi-provider support, crypto utilities, and template engines",
5
5
  "keywords": [
6
6
  "visulima",
@@ -263,19 +263,19 @@
263
263
  "CHANGELOG.md"
264
264
  ],
265
265
  "dependencies": {
266
- "@visulima/disposable-email-domains": "1.0.0-alpha.12",
266
+ "@visulima/disposable-email-domains": "1.0.0-alpha.13",
267
267
  "html-to-text": "^9.0.5",
268
- "ical-generator": "10.1.0",
269
- "lru-cache": "11.3.3",
268
+ "ical-generator": "10.2.0",
269
+ "lru-cache": "11.3.5",
270
270
  "mime": "^4.1.0"
271
271
  },
272
272
  "peerDependencies": {
273
273
  "@opentelemetry/api": "^1.0.0 || ^2.0.0",
274
- "@react-email/render": "^2.0.5",
274
+ "@react-email/render": "^2.0.7",
275
275
  "@vue-email/render": "0.0.9",
276
- "asn1js": "3.0.7",
276
+ "asn1js": "3.0.10",
277
277
  "handlebars": "4.7.9",
278
- "mjml": "4.18.0",
278
+ "mjml": "5.0.1",
279
279
  "nodemailer": ">=7",
280
280
  "pkijs": "3.4.0"
281
281
  },
@@ -306,7 +306,7 @@
306
306
  }
307
307
  },
308
308
  "engines": {
309
- "node": ">=22.13 <=25.x"
309
+ "node": "^22.14.0 || >=24.10.0"
310
310
  },
311
311
  "publishConfig": {
312
312
  "access": "public",
@@ -1 +0,0 @@
1
- var o=Object.defineProperty;var a=(e,r)=>o(e,"name",{value:r,configurable:!0});import{B as l}from"./readFile-BAVMZg5e-C4whBIPd.js";import i from"mime";var c=Object.defineProperty,t=a((e,r)=>c(e,"name",{value:r,configurable:!0}),"e");const s=t(e=>i.getType(e)??"application/octet-stream","detectMimeType"),d=t(e=>{const r=e.replaceAll(/[^a-z0-9]/gi,"-").replaceAll(/-+/g,"-").replaceAll(/^-|-$/g,"").toLowerCase(),n=Math.random().toString(36).slice(2,9);return`${r}-${n}@email`},"generateContentId"),g=t(async e=>l(e,{buffer:!0}),"readFileAsBuffer");export{s as detectMimeType,d as generateContentId,g as readFileAsBuffer};