@dereekb/firebase-server 13.11.11 → 13.11.13
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/mailgun/package.json +9 -9
- package/model/index.cjs.js +1122 -281
- package/model/index.esm.js +1113 -282
- package/model/package.json +12 -10
- package/model/src/lib/storagefile/extension/compress.image.d.ts +94 -0
- package/model/src/lib/storagefile/extension/compress.pdf.d.ts +78 -0
- package/model/src/lib/storagefile/extension/index.d.ts +2 -0
- package/model/src/lib/storagefile/index.d.ts +1 -0
- package/oidc/package.json +10 -10
- package/package.json +10 -10
- package/test/package.json +11 -11
- package/zoho/package.json +9 -9
package/model/package.json
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/model",
|
|
3
|
-
"version": "13.11.
|
|
3
|
+
"version": "13.11.13",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.11.
|
|
6
|
-
"@dereekb/date": "13.11.
|
|
7
|
-
"@dereekb/firebase": "13.11.
|
|
8
|
-
"@dereekb/firebase-server": "13.11.
|
|
9
|
-
"@dereekb/model": "13.11.
|
|
10
|
-
"@dereekb/nestjs": "13.11.
|
|
11
|
-
"@dereekb/rxjs": "13.11.
|
|
12
|
-
"@dereekb/util": "13.11.
|
|
5
|
+
"@dereekb/analytics": "13.11.13",
|
|
6
|
+
"@dereekb/date": "13.11.13",
|
|
7
|
+
"@dereekb/firebase": "13.11.13",
|
|
8
|
+
"@dereekb/firebase-server": "13.11.13",
|
|
9
|
+
"@dereekb/model": "13.11.13",
|
|
10
|
+
"@dereekb/nestjs": "13.11.13",
|
|
11
|
+
"@dereekb/rxjs": "13.11.13",
|
|
12
|
+
"@dereekb/util": "13.11.13",
|
|
13
13
|
"@nestjs/common": "^11.1.19",
|
|
14
14
|
"@nestjs/config": "^4.0.4",
|
|
15
15
|
"archiver": "^7.0.1",
|
|
16
16
|
"date-fns": "^4.1.0",
|
|
17
17
|
"firebase-functions": "^7.2.5",
|
|
18
|
-
"make-error": "^1.3.6"
|
|
18
|
+
"make-error": "^1.3.6",
|
|
19
|
+
"@cantoo/pdf-lib": "^2.6.5",
|
|
20
|
+
"sharp": "0.34.5"
|
|
19
21
|
},
|
|
20
22
|
"exports": {
|
|
21
23
|
"./package.json": "./package.json",
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { type Maybe } from '@dereekb/util';
|
|
2
|
+
/**
|
|
3
|
+
* Format the compressed image buffer is encoded as.
|
|
4
|
+
*/
|
|
5
|
+
export type CompressImageBufferToTargetSizeFormat = 'jpeg' | 'png' | 'webp';
|
|
6
|
+
export declare const DEFAULT_COMPRESS_IMAGE_MAX_DIMENSION = 4096;
|
|
7
|
+
export declare const DEFAULT_COMPRESS_IMAGE_INITIAL_QUALITY = 85;
|
|
8
|
+
export declare const DEFAULT_COMPRESS_IMAGE_MIN_QUALITY = 50;
|
|
9
|
+
export declare const DEFAULT_COMPRESS_IMAGE_QUALITY_STEP = 10;
|
|
10
|
+
export declare const DEFAULT_COMPRESS_IMAGE_FORMAT: CompressImageBufferToTargetSizeFormat;
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for {@link compressImageBufferToTargetSize}.
|
|
13
|
+
*/
|
|
14
|
+
export interface CompressImageBufferToTargetSizeConfig {
|
|
15
|
+
/**
|
|
16
|
+
* Target maximum size in bytes for the output. Acts as a soft target — if the
|
|
17
|
+
* smallest encoding still exceeds this, the best-effort result is returned with
|
|
18
|
+
* `hitTarget: false`.
|
|
19
|
+
*/
|
|
20
|
+
readonly targetSizeBytes: number;
|
|
21
|
+
/**
|
|
22
|
+
* Maximum dimension (longest side, in pixels) of the output image. Images larger
|
|
23
|
+
* than this on either axis are scaled down preserving aspect ratio.
|
|
24
|
+
*
|
|
25
|
+
* Defaults to {@link DEFAULT_COMPRESS_IMAGE_MAX_DIMENSION}.
|
|
26
|
+
*/
|
|
27
|
+
readonly maxDimension?: Maybe<number>;
|
|
28
|
+
/**
|
|
29
|
+
* Initial quality (1-100) to try when encoding. Stepped down by `qualityStep` until
|
|
30
|
+
* the output fits `targetSizeBytes` or `minQuality` is reached. Ignored for PNG.
|
|
31
|
+
*
|
|
32
|
+
* Defaults to {@link DEFAULT_COMPRESS_IMAGE_INITIAL_QUALITY}.
|
|
33
|
+
*/
|
|
34
|
+
readonly initialQuality?: Maybe<number>;
|
|
35
|
+
/**
|
|
36
|
+
* Minimum quality (1-100) the iterator will drop to. Defaults to {@link DEFAULT_COMPRESS_IMAGE_MIN_QUALITY}.
|
|
37
|
+
*/
|
|
38
|
+
readonly minQuality?: Maybe<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Quality decrement applied each iteration. Defaults to {@link DEFAULT_COMPRESS_IMAGE_QUALITY_STEP}.
|
|
41
|
+
*/
|
|
42
|
+
readonly qualityStep?: Maybe<number>;
|
|
43
|
+
/**
|
|
44
|
+
* Output format. Defaults to {@link DEFAULT_COMPRESS_IMAGE_FORMAT}.
|
|
45
|
+
*/
|
|
46
|
+
readonly format?: Maybe<CompressImageBufferToTargetSizeFormat>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Result of {@link compressImageBufferToTargetSize}.
|
|
50
|
+
*/
|
|
51
|
+
export interface CompressImageBufferToTargetSizeResult {
|
|
52
|
+
/**
|
|
53
|
+
* Best-effort compressed image bytes. Falls back to the original input if no
|
|
54
|
+
* encoding produced a smaller result.
|
|
55
|
+
*/
|
|
56
|
+
readonly buffer: Buffer;
|
|
57
|
+
readonly originalSizeBytes: number;
|
|
58
|
+
readonly compressedSizeBytes: number;
|
|
59
|
+
/**
|
|
60
|
+
* Quality the returned buffer was encoded at. Zero for PNG (no quality knob) and
|
|
61
|
+
* 100 when the original was returned unchanged.
|
|
62
|
+
*/
|
|
63
|
+
readonly finalQuality: number;
|
|
64
|
+
readonly finalWidth: number;
|
|
65
|
+
readonly finalHeight: number;
|
|
66
|
+
/**
|
|
67
|
+
* True if `compressedSizeBytes <= targetSizeBytes`.
|
|
68
|
+
*/
|
|
69
|
+
readonly hitTarget: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Compresses an image buffer toward a target byte size by resizing down to a max
|
|
73
|
+
* dimension and iteratively lowering the encoder quality. Returns the best result
|
|
74
|
+
* found; falls back to the original buffer if no encoding beat it.
|
|
75
|
+
*
|
|
76
|
+
* Throws on unreadable input — callers should catch errors and decide whether to
|
|
77
|
+
* fall back to the original bytes.
|
|
78
|
+
*
|
|
79
|
+
* @param input - The image bytes to compress.
|
|
80
|
+
* @param config - Target size and encoder parameters.
|
|
81
|
+
* @returns The best-effort compressed result plus metadata about what was applied.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* const result = await compressImageBufferToTargetSize(buffer, {
|
|
86
|
+
* targetSizeBytes: 2 * 1024 * 1024,
|
|
87
|
+
* maxDimension: 2048
|
|
88
|
+
* });
|
|
89
|
+
* if (result.hitTarget) {
|
|
90
|
+
* await file.upload(result.buffer);
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export declare function compressImageBufferToTargetSize(input: Buffer, config: CompressImageBufferToTargetSizeConfig): Promise<CompressImageBufferToTargetSizeResult>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { type Maybe } from '@dereekb/util';
|
|
2
|
+
export declare const DEFAULT_COMPRESS_PDF_IMAGE_MAX_DIMENSION = 2048;
|
|
3
|
+
export declare const DEFAULT_COMPRESS_PDF_IMAGE_QUALITY = 75;
|
|
4
|
+
export declare const DEFAULT_COMPRESS_PDF_IMAGE_SIZE_THRESHOLD_BYTES: number;
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for {@link compressPdfImagesToTargetSize}.
|
|
7
|
+
*/
|
|
8
|
+
export interface CompressPdfImagesToTargetSizeConfig {
|
|
9
|
+
/**
|
|
10
|
+
* Target maximum size in bytes for the output PDF. Acts as a soft target — if the
|
|
11
|
+
* best-effort recompression still exceeds this, the result is returned with `hitTarget: false`.
|
|
12
|
+
*/
|
|
13
|
+
readonly targetSizeBytes: number;
|
|
14
|
+
/**
|
|
15
|
+
* Maximum dimension (longest side) of embedded images after recompression.
|
|
16
|
+
* Defaults to {@link DEFAULT_COMPRESS_PDF_IMAGE_MAX_DIMENSION}.
|
|
17
|
+
*/
|
|
18
|
+
readonly imageMaxDimension?: Maybe<number>;
|
|
19
|
+
/**
|
|
20
|
+
* JPEG quality applied when re-encoding extracted images. Defaults to
|
|
21
|
+
* {@link DEFAULT_COMPRESS_PDF_IMAGE_QUALITY}.
|
|
22
|
+
*/
|
|
23
|
+
readonly imageQuality?: Maybe<number>;
|
|
24
|
+
/**
|
|
25
|
+
* Images smaller than this byte size are left untouched (tiny icons / logos are
|
|
26
|
+
* not worth recompressing). Defaults to {@link DEFAULT_COMPRESS_PDF_IMAGE_SIZE_THRESHOLD_BYTES}.
|
|
27
|
+
*/
|
|
28
|
+
readonly imageSizeThresholdBytes?: Maybe<number>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result of {@link compressPdfImagesToTargetSize}.
|
|
32
|
+
*/
|
|
33
|
+
export interface CompressPdfImagesToTargetSizeResult {
|
|
34
|
+
/**
|
|
35
|
+
* Best-effort compressed PDF bytes. Equal to the original buffer if recompression
|
|
36
|
+
* produced no smaller result.
|
|
37
|
+
*/
|
|
38
|
+
readonly buffer: Buffer;
|
|
39
|
+
readonly originalSizeBytes: number;
|
|
40
|
+
readonly compressedSizeBytes: number;
|
|
41
|
+
/**
|
|
42
|
+
* Number of image XObjects that were successfully recompressed.
|
|
43
|
+
*/
|
|
44
|
+
readonly imagesCompressed: number;
|
|
45
|
+
/**
|
|
46
|
+
* Number of image XObjects that were skipped (unsupported filter, mask, indexed
|
|
47
|
+
* color space, or per-image error).
|
|
48
|
+
*/
|
|
49
|
+
readonly imagesSkipped: number;
|
|
50
|
+
/**
|
|
51
|
+
* True if `compressedSizeBytes <= targetSizeBytes`.
|
|
52
|
+
*/
|
|
53
|
+
readonly hitTarget: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Recompresses image XObjects embedded in a PDF to shrink its overall size.
|
|
57
|
+
*
|
|
58
|
+
* Only DCTDecode (JPEG) image streams are touched in this implementation — the
|
|
59
|
+
* dominant case for "phone photo PDFs". Images using other filters (FlateDecode,
|
|
60
|
+
* CCITTFax, JBIG2, JPEG2000), indexed/CMYK color spaces, or that carry a
|
|
61
|
+
* `/SMask` (soft mask) are skipped and counted in `imagesSkipped`.
|
|
62
|
+
*
|
|
63
|
+
* Throws on a malformed PDF — callers should catch and fall back to the original
|
|
64
|
+
* bytes.
|
|
65
|
+
*
|
|
66
|
+
* @param input - The PDF bytes to compress.
|
|
67
|
+
* @param config - Target size and image recompression parameters.
|
|
68
|
+
* @returns The best-effort compressed PDF plus per-image counters.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const result = await compressPdfImagesToTargetSize(buffer, {
|
|
73
|
+
* targetSizeBytes: 6 * 1024 * 1024
|
|
74
|
+
* });
|
|
75
|
+
* const finalBytes = result.hitTarget ? result.buffer : buffer;
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare function compressPdfImagesToTargetSize(input: Buffer, config: CompressPdfImagesToTargetSizeConfig): Promise<CompressPdfImagesToTargetSizeResult>;
|
package/oidc/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/oidc",
|
|
3
|
-
"version": "13.11.
|
|
3
|
+
"version": "13.11.13",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.11.
|
|
6
|
-
"@dereekb/date": "13.11.
|
|
7
|
-
"@dereekb/firebase": "13.11.
|
|
8
|
-
"@dereekb/firebase-server": "13.11.
|
|
9
|
-
"@dereekb/model": "13.11.
|
|
10
|
-
"@dereekb/nestjs": "13.11.
|
|
11
|
-
"@dereekb/rxjs": "13.11.
|
|
12
|
-
"@dereekb/util": "13.11.
|
|
13
|
-
"@dereekb/zoho": "13.11.
|
|
5
|
+
"@dereekb/analytics": "13.11.13",
|
|
6
|
+
"@dereekb/date": "13.11.13",
|
|
7
|
+
"@dereekb/firebase": "13.11.13",
|
|
8
|
+
"@dereekb/firebase-server": "13.11.13",
|
|
9
|
+
"@dereekb/model": "13.11.13",
|
|
10
|
+
"@dereekb/nestjs": "13.11.13",
|
|
11
|
+
"@dereekb/rxjs": "13.11.13",
|
|
12
|
+
"@dereekb/util": "13.11.13",
|
|
13
|
+
"@dereekb/zoho": "13.11.13",
|
|
14
14
|
"@nestjs/common": "^11.1.19",
|
|
15
15
|
"@nestjs/config": "^4.0.4",
|
|
16
16
|
"express": "^5.2.1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server",
|
|
3
|
-
"version": "13.11.
|
|
3
|
+
"version": "13.11.13",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"exports": {
|
|
6
6
|
"./test": {
|
|
@@ -44,15 +44,15 @@
|
|
|
44
44
|
"main": "./index.cjs.js",
|
|
45
45
|
"types": "./src/index.d.ts",
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@dereekb/analytics": "13.11.
|
|
48
|
-
"@dereekb/date": "13.11.
|
|
49
|
-
"@dereekb/dbx-core": "13.11.
|
|
50
|
-
"@dereekb/firebase": "13.11.
|
|
51
|
-
"@dereekb/model": "13.11.
|
|
52
|
-
"@dereekb/nestjs": "13.11.
|
|
53
|
-
"@dereekb/rxjs": "13.11.
|
|
54
|
-
"@dereekb/util": "13.11.
|
|
55
|
-
"@dereekb/zoho": "13.11.
|
|
47
|
+
"@dereekb/analytics": "13.11.13",
|
|
48
|
+
"@dereekb/date": "13.11.13",
|
|
49
|
+
"@dereekb/dbx-core": "13.11.13",
|
|
50
|
+
"@dereekb/firebase": "13.11.13",
|
|
51
|
+
"@dereekb/model": "13.11.13",
|
|
52
|
+
"@dereekb/nestjs": "13.11.13",
|
|
53
|
+
"@dereekb/rxjs": "13.11.13",
|
|
54
|
+
"@dereekb/util": "13.11.13",
|
|
55
|
+
"@dereekb/zoho": "13.11.13",
|
|
56
56
|
"@google-cloud/firestore": "^7.11.6",
|
|
57
57
|
"@google-cloud/storage": "^7.19.0",
|
|
58
58
|
"@nestjs/common": "^11.1.19",
|
package/test/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/test",
|
|
3
|
-
"version": "13.11.
|
|
3
|
+
"version": "13.11.13",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.11.
|
|
6
|
-
"@dereekb/date": "13.11.
|
|
7
|
-
"@dereekb/firebase": "13.11.
|
|
8
|
-
"@dereekb/firebase-server": "13.11.
|
|
9
|
-
"@dereekb/firebase-server/oidc": "13.11.
|
|
10
|
-
"@dereekb/model": "13.11.
|
|
11
|
-
"@dereekb/nestjs": "13.11.
|
|
12
|
-
"@dereekb/rxjs": "13.11.
|
|
13
|
-
"@dereekb/util": "13.11.
|
|
5
|
+
"@dereekb/analytics": "13.11.13",
|
|
6
|
+
"@dereekb/date": "13.11.13",
|
|
7
|
+
"@dereekb/firebase": "13.11.13",
|
|
8
|
+
"@dereekb/firebase-server": "13.11.13",
|
|
9
|
+
"@dereekb/firebase-server/oidc": "13.11.13",
|
|
10
|
+
"@dereekb/model": "13.11.13",
|
|
11
|
+
"@dereekb/nestjs": "13.11.13",
|
|
12
|
+
"@dereekb/rxjs": "13.11.13",
|
|
13
|
+
"@dereekb/util": "13.11.13",
|
|
14
14
|
"@google-cloud/firestore": "^7.11.6",
|
|
15
15
|
"@google-cloud/storage": "^7.19.0",
|
|
16
16
|
"@nestjs/common": "^11.1.19",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"supertest": "^7.2.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@dereekb/nestjs": "13.11.
|
|
26
|
+
"@dereekb/nestjs": "13.11.13"
|
|
27
27
|
},
|
|
28
28
|
"exports": {
|
|
29
29
|
"./package.json": "./package.json",
|
package/zoho/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/zoho",
|
|
3
|
-
"version": "13.11.
|
|
3
|
+
"version": "13.11.13",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.11.
|
|
6
|
-
"@dereekb/date": "13.11.
|
|
7
|
-
"@dereekb/model": "13.11.
|
|
8
|
-
"@dereekb/nestjs": "13.11.
|
|
9
|
-
"@dereekb/rxjs": "13.11.
|
|
10
|
-
"@dereekb/firebase": "13.11.
|
|
11
|
-
"@dereekb/util": "13.11.
|
|
12
|
-
"@dereekb/zoho": "13.11.
|
|
5
|
+
"@dereekb/analytics": "13.11.13",
|
|
6
|
+
"@dereekb/date": "13.11.13",
|
|
7
|
+
"@dereekb/model": "13.11.13",
|
|
8
|
+
"@dereekb/nestjs": "13.11.13",
|
|
9
|
+
"@dereekb/rxjs": "13.11.13",
|
|
10
|
+
"@dereekb/firebase": "13.11.13",
|
|
11
|
+
"@dereekb/util": "13.11.13",
|
|
12
|
+
"@dereekb/zoho": "13.11.13"
|
|
13
13
|
},
|
|
14
14
|
"exports": {
|
|
15
15
|
"./package.json": "./package.json",
|