@dereekb/firebase-server 13.25.1 → 13.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,28 @@ export declare const DEFAULT_COMPRESS_IMAGE_INITIAL_QUALITY = 85;
8
8
  export declare const DEFAULT_COMPRESS_IMAGE_MIN_QUALITY = 50;
9
9
  export declare const DEFAULT_COMPRESS_IMAGE_QUALITY_STEP = 10;
10
10
  export declare const DEFAULT_COMPRESS_IMAGE_FORMAT: CompressImageBufferToTargetSizeFormat;
11
+ /**
12
+ * Number of channels in raw pixel data (1 = grayscale, 2 = grayscale+alpha, 3 = RGB, 4 = RGBA/CMYK).
13
+ */
14
+ export type CompressImageRawPixelChannels = 1 | 2 | 3 | 4;
15
+ /**
16
+ * Describes raw, uncompressed pixel data passed as the input buffer to
17
+ * {@link compressImageBufferToTargetSize} (interleaved, 8 bits per channel).
18
+ */
19
+ export interface CompressImageBufferRawPixelInput {
20
+ /**
21
+ * Width of the raw image in pixels.
22
+ */
23
+ readonly width: number;
24
+ /**
25
+ * Height of the raw image in pixels.
26
+ */
27
+ readonly height: number;
28
+ /**
29
+ * Number of channels in the raw pixel data.
30
+ */
31
+ readonly channels: CompressImageRawPixelChannels;
32
+ }
11
33
  /**
12
34
  * Configuration for {@link compressImageBufferToTargetSize}.
13
35
  */
@@ -44,6 +66,13 @@ export interface CompressImageBufferToTargetSizeConfig {
44
66
  * Output format. Defaults to {@link DEFAULT_COMPRESS_IMAGE_FORMAT}.
45
67
  */
46
68
  readonly format?: Maybe<CompressImageBufferToTargetSizeFormat>;
69
+ /**
70
+ * When provided, `input` is treated as raw uncompressed pixel data with these
71
+ * dimensions instead of an encoded image. Raw input is always re-encoded to
72
+ * `format` — the raw bytes are never returned as the "smaller original", so the
73
+ * returned buffer is always a valid encoded image.
74
+ */
75
+ readonly rawPixelInput?: Maybe<CompressImageBufferRawPixelInput>;
47
76
  }
48
77
  /**
49
78
  * Result of {@link compressImageBufferToTargetSize}.
@@ -63,6 +92,10 @@ export interface CompressImageBufferToTargetSizeResult {
63
92
  readonly finalQuality: number;
64
93
  readonly finalWidth: number;
65
94
  readonly finalHeight: number;
95
+ /**
96
+ * Number of channels in the returned buffer (e.g. 1 = grayscale, 3 = RGB).
97
+ */
98
+ readonly finalChannels: number;
66
99
  /**
67
100
  * True if `compressedSizeBytes <= targetSizeBytes`.
68
101
  */
@@ -49,9 +49,9 @@ export interface CompressPdfImagesToTargetSizeContext {
49
49
  readonly imageStreamCount: number;
50
50
  /**
51
51
  * Breakdown of image XObjects by their PDF filter. If `hitTarget` is `false` and
52
- * this map only contains non-JPEG filters (e.g. `FlateDecode`, `CCITTFaxDecode`,
53
- * `JBIG2Decode`, `JPXDecode`), the v1 compressor cannot help — callers should
54
- * reject the upload or queue a downscale fallback.
52
+ * this map only contains filters this compressor cannot handle (e.g.
53
+ * `CCITTFaxDecode`, `JBIG2Decode`, `JPXDecode`), recompression cannot help —
54
+ * callers should reject the upload or queue a downscale fallback.
55
55
  */
56
56
  readonly imageStreamsByFilter: CompressPdfImageStreamsByFilter;
57
57
  }
@@ -71,8 +71,8 @@ export interface CompressPdfImagesToTargetSizeResult extends CompressPdfImagesTo
71
71
  */
72
72
  readonly imagesCompressed: number;
73
73
  /**
74
- * Number of image XObjects that were skipped (unsupported filter, mask, indexed
75
- * color space, or per-image error).
74
+ * Number of image XObjects that were candidates but could not be recompressed
75
+ * (unsupported color space, bit depth or predictor, or a per-image error).
76
76
  */
77
77
  readonly imagesSkipped: number;
78
78
  /**
@@ -83,10 +83,15 @@ export interface CompressPdfImagesToTargetSizeResult extends CompressPdfImagesTo
83
83
  /**
84
84
  * Recompresses image XObjects embedded in a PDF to shrink its overall size.
85
85
  *
86
- * Only DCTDecode (JPEG) image streams are touched in this implementation — the
87
- * dominant case for "phone photo PDFs". Images using other filters (FlateDecode,
88
- * CCITTFax, JBIG2, JPEG2000), indexed/CMYK color spaces, or that carry a
89
- * `/SMask` (soft mask) are skipped and counted in `imagesSkipped`.
86
+ * Two stream kinds are recompressed to JPEG (DCTDecode):
87
+ * - DCTDecode (JPEG) image streams — the dominant case for "phone photo PDFs".
88
+ * - FlateDecode raster image streams (zlib-deflated raw pixels, 8 bits per
89
+ * component, DeviceRGB/DeviceGray/CalRGB/CalGray/ICCBased color spaces, with
90
+ * optional PNG/TIFF predictors) — the dominant case for scanner-produced PDFs.
91
+ *
92
+ * Images using other filters (CCITTFax, JBIG2, JPEG2000), indexed/CMYK/other
93
+ * color spaces, non-8-bit rasters, or that carry a `/SMask` or `/Mask` are
94
+ * skipped and counted in `imagesSkipped`.
90
95
  *
91
96
  * Throws on a malformed PDF — callers should catch and fall back to the original
92
97
  * bytes.
package/oidc/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/oidc",
3
- "version": "13.25.1",
3
+ "version": "13.27.0",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.25.1",
6
- "@dereekb/date": "13.25.1",
7
- "@dereekb/firebase": "13.25.1",
8
- "@dereekb/firebase-server": "13.25.1",
9
- "@dereekb/model": "13.25.1",
10
- "@dereekb/nestjs": "13.25.1",
11
- "@dereekb/rxjs": "13.25.1",
12
- "@dereekb/util": "13.25.1",
13
- "@dereekb/zoho": "13.25.1",
5
+ "@dereekb/analytics": "13.27.0",
6
+ "@dereekb/date": "13.27.0",
7
+ "@dereekb/firebase": "13.27.0",
8
+ "@dereekb/firebase-server": "13.27.0",
9
+ "@dereekb/model": "13.27.0",
10
+ "@dereekb/nestjs": "13.27.0",
11
+ "@dereekb/rxjs": "13.27.0",
12
+ "@dereekb/util": "13.27.0",
13
+ "@dereekb/zoho": "13.27.0",
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.25.1",
3
+ "version": "13.27.0",
4
4
  "sideEffects": false,
5
5
  "exports": {
6
6
  "./test": {
@@ -57,15 +57,15 @@
57
57
  "types": "./src/index.d.ts",
58
58
  "peerDependencies": {
59
59
  "@cantoo/pdf-lib": "^2.6.5",
60
- "@dereekb/analytics": "13.25.1",
61
- "@dereekb/date": "13.25.1",
62
- "@dereekb/dbx-core": "13.25.1",
63
- "@dereekb/firebase": "13.25.1",
64
- "@dereekb/model": "13.25.1",
65
- "@dereekb/nestjs": "13.25.1",
66
- "@dereekb/rxjs": "13.25.1",
67
- "@dereekb/util": "13.25.1",
68
- "@dereekb/zoho": "13.25.1",
60
+ "@dereekb/analytics": "13.27.0",
61
+ "@dereekb/date": "13.27.0",
62
+ "@dereekb/dbx-core": "13.27.0",
63
+ "@dereekb/firebase": "13.27.0",
64
+ "@dereekb/model": "13.27.0",
65
+ "@dereekb/nestjs": "13.27.0",
66
+ "@dereekb/rxjs": "13.27.0",
67
+ "@dereekb/util": "13.27.0",
68
+ "@dereekb/zoho": "13.27.0",
69
69
  "@google-cloud/firestore": "^7.11.6",
70
70
  "@google-cloud/storage": "^7.19.0",
71
71
  "@modelcontextprotocol/sdk": "1.29.0",
package/test/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/test",
3
- "version": "13.25.1",
3
+ "version": "13.27.0",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.25.1",
6
- "@dereekb/date": "13.25.1",
7
- "@dereekb/firebase": "13.25.1",
8
- "@dereekb/firebase-server": "13.25.1",
9
- "@dereekb/firebase-server/oidc": "13.25.1",
10
- "@dereekb/model": "13.25.1",
11
- "@dereekb/nestjs": "13.25.1",
12
- "@dereekb/rxjs": "13.25.1",
13
- "@dereekb/util": "13.25.1",
5
+ "@dereekb/analytics": "13.27.0",
6
+ "@dereekb/date": "13.27.0",
7
+ "@dereekb/firebase": "13.27.0",
8
+ "@dereekb/firebase-server": "13.27.0",
9
+ "@dereekb/firebase-server/oidc": "13.27.0",
10
+ "@dereekb/model": "13.27.0",
11
+ "@dereekb/nestjs": "13.27.0",
12
+ "@dereekb/rxjs": "13.27.0",
13
+ "@dereekb/util": "13.27.0",
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.25.1"
26
+ "@dereekb/nestjs": "13.27.0"
27
27
  },
28
28
  "exports": {
29
29
  "./package.json": "./package.json",
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/twilio",
3
- "version": "13.25.1",
3
+ "version": "13.27.0",
4
4
  "peerDependencies": {
5
- "@dereekb/date": "13.25.1",
6
- "@dereekb/firebase": "13.25.1",
7
- "@dereekb/firebase-server": "13.25.1",
8
- "@dereekb/model": "13.25.1",
9
- "@dereekb/nestjs": "13.25.1",
10
- "@dereekb/rxjs": "13.25.1",
11
- "@dereekb/util": "13.25.1"
5
+ "@dereekb/date": "13.27.0",
6
+ "@dereekb/firebase": "13.27.0",
7
+ "@dereekb/firebase-server": "13.27.0",
8
+ "@dereekb/model": "13.27.0",
9
+ "@dereekb/nestjs": "13.27.0",
10
+ "@dereekb/rxjs": "13.27.0",
11
+ "@dereekb/util": "13.27.0"
12
12
  },
13
13
  "exports": {
14
14
  "./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.25.1",
3
+ "version": "13.27.0",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.25.1",
6
- "@dereekb/date": "13.25.1",
7
- "@dereekb/model": "13.25.1",
8
- "@dereekb/nestjs": "13.25.1",
9
- "@dereekb/rxjs": "13.25.1",
10
- "@dereekb/firebase": "13.25.1",
11
- "@dereekb/util": "13.25.1",
12
- "@dereekb/zoho": "13.25.1"
5
+ "@dereekb/analytics": "13.27.0",
6
+ "@dereekb/date": "13.27.0",
7
+ "@dereekb/model": "13.27.0",
8
+ "@dereekb/nestjs": "13.27.0",
9
+ "@dereekb/rxjs": "13.27.0",
10
+ "@dereekb/firebase": "13.27.0",
11
+ "@dereekb/util": "13.27.0",
12
+ "@dereekb/zoho": "13.27.0"
13
13
  },
14
14
  "exports": {
15
15
  "./package.json": "./package.json",