@cibule/image-sharp 0.2.0 → 0.3.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.
- package/dist/dts/packages/di/src/index.d.ts +1 -0
- package/dist/dts/packages/di/src/index.d.ts.map +1 -1
- package/dist/dts/packages/di/src/lib/run-in-injection-context.d.ts +3 -0
- package/dist/dts/packages/di/src/lib/run-in-injection-context.d.ts.map +1 -0
- package/dist/dts/packages/image/src/index.d.ts +1 -0
- package/dist/dts/packages/image/src/index.d.ts.map +1 -1
- package/dist/dts/packages/image/src/lib/image-transformer.d.ts.map +1 -1
- package/dist/dts/packages/image/src/lib/provider.d.ts +4 -0
- package/dist/dts/packages/image/src/lib/provider.d.ts.map +1 -0
- package/dist/dts/packages/storage/src/index.d.ts +2 -1
- package/dist/dts/packages/storage/src/index.d.ts.map +1 -1
- package/dist/dts/packages/storage/src/lib/file-storage-types.d.ts +1 -0
- package/dist/dts/packages/storage/src/lib/file-storage-types.d.ts.map +1 -1
- package/dist/dts/packages/storage/src/lib/file-storage.d.ts +3 -3
- package/dist/dts/packages/storage/src/lib/file-storage.d.ts.map +1 -1
- package/dist/dts/packages/storage/src/lib/in-memory-file-storage.d.ts +3 -3
- package/dist/dts/packages/storage/src/lib/in-memory-file-storage.d.ts.map +1 -1
- package/dist/dts/packages/storage/src/lib/local-file-storage.d.ts +3 -3
- package/dist/dts/packages/storage/src/lib/local-file-storage.d.ts.map +1 -1
- package/dist/dts/packages/storage/src/lib/provider.d.ts +4 -0
- package/dist/dts/packages/storage/src/lib/provider.d.ts.map +1 -0
- package/dist/dts/packages/storage/src/lib/to-uint8-array.d.ts +2 -1
- package/dist/dts/packages/storage/src/lib/to-uint8-array.d.ts.map +1 -1
- package/dist/index.cjs +58 -0
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +62 -0
- package/dist/index.js.map +3 -3
- package/package.json +3 -3
|
@@ -3,5 +3,6 @@ export { Injectable } from './lib/injectable';
|
|
|
3
3
|
export { InjectionToken } from './lib/injection-token';
|
|
4
4
|
export { Injector } from './lib/injector';
|
|
5
5
|
export type { ClassProvider, FactoryProvider, InjectOptions, Provider, SingleProvider, ValueProvider, } from './lib/provider';
|
|
6
|
+
export { runInInjectionContext } from './lib/run-in-injection-context';
|
|
6
7
|
export type { AbstractType, Token, Type } from './lib/token';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../di/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,EACR,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../di/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,EACR,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-in-injection-context.d.ts","sourceRoot":"","sources":["../../../../../../../di/src/lib/run-in-injection-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE3E"}
|
|
@@ -3,5 +3,6 @@ export { getContentType } from './lib/content-type-map';
|
|
|
3
3
|
export { ImageTransformer } from './lib/image-transformer';
|
|
4
4
|
export type { ImageTransformerAccessor } from './lib/image-transformer-accessor';
|
|
5
5
|
export { IMAGE_TRANSFORMER_ACCESSOR } from './lib/image-transformer-accessor';
|
|
6
|
+
export { provideImageTransformerAccessor } from './lib/provider';
|
|
6
7
|
export type { ImageFit, ImageFormat, PurgeCacheResult, TransformOptions, TransformResult, } from './lib/transform-options';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../image/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,EACvB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,YAAY,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../image/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,EACvB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AACjE,YAAY,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-transformer.d.ts","sourceRoot":"","sources":["../../../../../../../image/src/lib/image-transformer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-transformer.d.ts","sourceRoot":"","sources":["../../../../../../../image/src/lib/image-transformer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE/F,8BACsB,gBAAgB;IACpC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IACpF,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;CACjD"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Provider } from '@cibule/di';
|
|
2
|
+
import type { ImageTransformerAccessor } from './image-transformer-accessor';
|
|
3
|
+
export declare function provideImageTransformerAccessor(factory: () => ImageTransformerAccessor): Provider;
|
|
4
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../../../../image/src/lib/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAG7E,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,wBAAwB,GAAG,QAAQ,CAEjG"}
|
|
@@ -2,10 +2,11 @@ export { createReadableStream } from './lib/create-readable-stream';
|
|
|
2
2
|
export { FileStorage } from './lib/file-storage';
|
|
3
3
|
export type { FileStorageAccessor } from './lib/file-storage-accessor';
|
|
4
4
|
export { FILE_STORAGE_ACCESSOR } from './lib/file-storage-accessor';
|
|
5
|
-
export type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions, } from './lib/file-storage-types';
|
|
5
|
+
export type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions, UploadData, } from './lib/file-storage-types';
|
|
6
6
|
export { InMemoryFileStorage } from './lib/in-memory-file-storage';
|
|
7
7
|
export type { LocalFileStorageConfig } from './lib/local-file-storage';
|
|
8
8
|
export { LocalFileStorage } from './lib/local-file-storage';
|
|
9
|
+
export { provideFileStorageAccessor } from './lib/provider';
|
|
9
10
|
export type { StoredFile } from './lib/stored-file';
|
|
10
11
|
export { toUint8Array } from './lib/to-uint8-array';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../storage/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../storage/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,UAAU,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-storage-types.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/file-storage-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
|
|
1
|
+
{"version":3,"file":"file-storage-types.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/file-storage-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions } from './file-storage-types';
|
|
1
|
+
import type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions, UploadData } from './file-storage-types';
|
|
2
2
|
export declare abstract class FileStorage {
|
|
3
|
-
abstract upload(key: string, data:
|
|
3
|
+
abstract upload(key: string, data: UploadData, options?: FileUploadOptions): Promise<void>;
|
|
4
4
|
abstract download(key: string): Promise<FileStorageObject>;
|
|
5
5
|
abstract head(key: string): Promise<HeadResult | null>;
|
|
6
6
|
abstract delete(key: string): Promise<void>;
|
|
@@ -12,7 +12,7 @@ export declare abstract class FileStorage {
|
|
|
12
12
|
abstract createPresignedUploadUrl(key: string, options?: PresignOptions): Promise<PresignedUploadUrl | null>;
|
|
13
13
|
abstract initiateMultipartUpload(key: string): Promise<MultipartUploadInit>;
|
|
14
14
|
abstract createPresignedPartUrls(key: string, uploadId: string, parts: number[]): Promise<PresignedPartUrl[]>;
|
|
15
|
-
abstract uploadPart(key: string, uploadId: string, partNumber: number, data:
|
|
15
|
+
abstract uploadPart(key: string, uploadId: string, partNumber: number, data: UploadData): Promise<string>;
|
|
16
16
|
abstract completeMultipartUpload(key: string, uploadId: string, parts: CompletedPart[]): Promise<void>;
|
|
17
17
|
abstract abortMultipartUpload(key: string, uploadId: string): Promise<void>;
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/file-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/file-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,8BACsB,WAAW;IAC/B,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1F,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAE1D,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAEtD,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE3C,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAErD,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAE1C,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAE7C,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAEzF,QAAQ,CAAC,eAAe,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAEtC,QAAQ,CAAC,wBAAwB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAErC,QAAQ,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAE3E,QAAQ,CAAC,uBAAuB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAE9B,QAAQ,CAAC,UAAU,CACjB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC;IAElB,QAAQ,CAAC,uBAAuB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IAEhB,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5E"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { FileStorage } from './file-storage';
|
|
2
|
-
import type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions } from './file-storage-types';
|
|
2
|
+
import type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions, UploadData } from './file-storage-types';
|
|
3
3
|
export declare class InMemoryFileStorage extends FileStorage {
|
|
4
4
|
private readonly store;
|
|
5
5
|
private readonly uploads;
|
|
6
6
|
private readonly baseUrl;
|
|
7
7
|
constructor(baseUrl?: string);
|
|
8
|
-
upload(key: string, data:
|
|
8
|
+
upload(key: string, data: UploadData, options?: FileUploadOptions): Promise<void>;
|
|
9
9
|
download(key: string): Promise<FileStorageObject>;
|
|
10
10
|
head(key: string): Promise<HeadResult | null>;
|
|
11
11
|
delete(key: string): Promise<void>;
|
|
@@ -17,7 +17,7 @@ export declare class InMemoryFileStorage extends FileStorage {
|
|
|
17
17
|
createPresignedUploadUrl(_key: string, _options?: PresignOptions): Promise<PresignedUploadUrl | null>;
|
|
18
18
|
initiateMultipartUpload(key: string): Promise<MultipartUploadInit>;
|
|
19
19
|
createPresignedPartUrls(_key: string, _uploadId: string, _parts: number[]): Promise<PresignedPartUrl[]>;
|
|
20
|
-
uploadPart(_key: string, uploadId: string, partNumber: number, data:
|
|
20
|
+
uploadPart(_key: string, uploadId: string, partNumber: number, data: UploadData): Promise<string>;
|
|
21
21
|
completeMultipartUpload(_key: string, uploadId: string, parts: CompletedPart[]): Promise<void>;
|
|
22
22
|
abortMultipartUpload(_key: string, uploadId: string): Promise<void>;
|
|
23
23
|
clear(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-file-storage.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/in-memory-file-storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,
|
|
1
|
+
{"version":3,"file":"in-memory-file-storage.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/in-memory-file-storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACX,MAAM,sBAAsB,CAAC;AAM9B,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAEd,OAAO,SAAc;IAK3B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBjD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAW7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK5C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIjC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIpC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAahF,eAAe,CACpB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAU/B,wBAAwB,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAI9B,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMlE,uBAAuB,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIjB,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC;IAOX,uBAAuB,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IAkBT,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,KAAK,IAAI,IAAI;IAKpB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FileStorage } from './file-storage';
|
|
2
|
-
import type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions } from './file-storage-types';
|
|
2
|
+
import type { CompletedPart, FileStorageObject, FileUploadOptions, HeadResult, MultipartUploadInit, PresignedPartUrl, PresignedUploadUrl, PresignOptions, UploadData } from './file-storage-types';
|
|
3
3
|
export interface LocalFileStorageConfig {
|
|
4
4
|
readonly basePath: string;
|
|
5
5
|
}
|
|
@@ -7,7 +7,7 @@ export declare class LocalFileStorage extends FileStorage {
|
|
|
7
7
|
private readonly basePath;
|
|
8
8
|
private readonly partsDir;
|
|
9
9
|
constructor(config: LocalFileStorageConfig);
|
|
10
|
-
upload(key: string, data:
|
|
10
|
+
upload(key: string, data: UploadData, _options?: FileUploadOptions): Promise<void>;
|
|
11
11
|
download(key: string): Promise<FileStorageObject>;
|
|
12
12
|
head(key: string): Promise<HeadResult | null>;
|
|
13
13
|
delete(key: string): Promise<void>;
|
|
@@ -19,7 +19,7 @@ export declare class LocalFileStorage extends FileStorage {
|
|
|
19
19
|
createPresignedUploadUrl(_key: string, _options?: PresignOptions): Promise<PresignedUploadUrl | null>;
|
|
20
20
|
initiateMultipartUpload(key: string): Promise<MultipartUploadInit>;
|
|
21
21
|
createPresignedPartUrls(_key: string, _uploadId: string, _parts: number[]): Promise<PresignedPartUrl[]>;
|
|
22
|
-
uploadPart(_key: string, uploadId: string, partNumber: number, data:
|
|
22
|
+
uploadPart(_key: string, uploadId: string, partNumber: number, data: UploadData): Promise<string>;
|
|
23
23
|
completeMultipartUpload(key: string, uploadId: string, parts: CompletedPart[]): Promise<void>;
|
|
24
24
|
abortMultipartUpload(_key: string, uploadId: string): Promise<void>;
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-file-storage.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/local-file-storage.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,
|
|
1
|
+
{"version":3,"file":"local-file-storage.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/local-file-storage.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACX,MAAM,sBAAsB,CAAC;AAc9B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEf,MAAM,EAAE,sBAAsB;IAMpC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAcjD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAe7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUlD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIjC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI9B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQhF,eAAe,CAC1B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAO/B,wBAAwB,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAIxB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMxE,uBAAuB,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIjB,UAAU,CACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC;IAQL,uBAAuB,CAClC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IAqBH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKjF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGnE,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,mBAAmB,GAAG,QAAQ,CAEvF"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { UploadData } from './file-storage-types';
|
|
2
|
+
export declare function toUint8Array(input: UploadData): Promise<Uint8Array>;
|
|
2
3
|
//# sourceMappingURL=to-uint8-array.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-uint8-array.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/to-uint8-array.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"to-uint8-array.d.ts","sourceRoot":"","sources":["../../../../../../../storage/src/lib/to-uint8-array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBzE"}
|
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,12 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
9
|
+
var __typeError = (msg) => {
|
|
10
|
+
throw TypeError(msg);
|
|
11
|
+
};
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
14
|
var __export = (target, all) => {
|
|
9
15
|
for (var name in all)
|
|
10
16
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -26,6 +32,44 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
32
|
mod
|
|
27
33
|
));
|
|
28
34
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
|
+
var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
|
|
36
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
37
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
38
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
39
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
40
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
41
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
42
|
+
return value;
|
|
43
|
+
};
|
|
44
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
45
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
46
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
47
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
48
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
|
|
49
|
+
return __privateGet(this, extra);
|
|
50
|
+
}, set [name](x) {
|
|
51
|
+
return __privateSet(this, extra, x);
|
|
52
|
+
} }, name));
|
|
53
|
+
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
54
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
55
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
56
|
+
if (k) {
|
|
57
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
|
|
58
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
59
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
60
|
+
}
|
|
61
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
62
|
+
if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
63
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
64
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
65
|
+
}
|
|
66
|
+
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
67
|
+
};
|
|
68
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
69
|
+
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
70
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
71
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
72
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
29
73
|
|
|
30
74
|
// src/index.ts
|
|
31
75
|
var index_exports = {};
|
|
@@ -49,9 +93,20 @@ function getContentType(format) {
|
|
|
49
93
|
return FORMAT_TO_CONTENT_TYPE[format];
|
|
50
94
|
}
|
|
51
95
|
|
|
96
|
+
// ../di/src/lib/injectable.ts
|
|
97
|
+
function Injectable() {
|
|
98
|
+
return () => {
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
52
102
|
// ../image/src/lib/image-transformer.ts
|
|
103
|
+
var _ImageTransformer_decorators, _init;
|
|
104
|
+
_ImageTransformer_decorators = [Injectable()];
|
|
53
105
|
var ImageTransformer = class {
|
|
54
106
|
};
|
|
107
|
+
_init = __decoratorStart(null);
|
|
108
|
+
ImageTransformer = __decorateElement(_init, 0, "ImageTransformer", _ImageTransformer_decorators, ImageTransformer);
|
|
109
|
+
__runInitializers(_init, 1, ImageTransformer);
|
|
55
110
|
|
|
56
111
|
// ../storage/src/lib/create-readable-stream.ts
|
|
57
112
|
function createReadableStream(data) {
|
|
@@ -89,6 +144,9 @@ async function toUint8Array(input) {
|
|
|
89
144
|
if (input instanceof ArrayBuffer) {
|
|
90
145
|
return new Uint8Array(input);
|
|
91
146
|
}
|
|
147
|
+
if (input instanceof Blob) {
|
|
148
|
+
return new Uint8Array(await input.arrayBuffer());
|
|
149
|
+
}
|
|
92
150
|
const reader = input.getReader();
|
|
93
151
|
const chunks = [];
|
|
94
152
|
for (; ; ) {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../../image/src/lib/constants.ts", "../../image/src/lib/content-type-map.ts", "../../image/src/lib/image-transformer.ts", "../../storage/src/lib/create-readable-stream.ts", "../../storage/src/lib/concat-uint8-arrays.ts", "../../storage/src/lib/to-uint8-array.ts", "../src/lib/sharp-image-transformer.ts", "../src/lib/cache-key.ts"],
|
|
4
|
-
"sourcesContent": ["export { SharpImageTransformer } from './lib/sharp-image-transformer';\nexport type { SharpImageTransformerConfig } from './lib/sharp-image-transformer-config';\n", "export const ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920] as const;\n\nexport const ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80] as const;\n\nexport const DEFAULT_QUALITY = 80;\n\nexport const DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;\n", "import type { ImageFormat } from './transform-options';\n\nconst FORMAT_TO_CONTENT_TYPE: Record<ImageFormat, string> = {\n avif: 'image/avif',\n webp: 'image/webp',\n jpeg: 'image/jpeg',\n png: 'image/png',\n};\n\nexport function getContentType(format: ImageFormat): string {\n return FORMAT_TO_CONTENT_TYPE[format];\n}\n", "import type { PurgeCacheResult, TransformOptions, TransformResult } from './transform-options';\n\nexport abstract class ImageTransformer {\n abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;\n abstract purgeCache(): Promise<PurgeCacheResult>;\n}\n", "export function createReadableStream(data: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(new Uint8Array(data));\n controller.close();\n },\n });\n}\n", "export function concatUint8Arrays(chunks: Uint8Array[]): Uint8Array {\n if (chunks.length === 0) {\n return new Uint8Array(0);\n }\n\n if (chunks.length === 1) {\n return chunks[0] ?? new Uint8Array(0);\n }\n\n const totalLength = chunks.reduce((sum, c) => sum + c.byteLength, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n return result;\n}\n", "import { concatUint8Arrays } from './concat-uint8-arrays';\n\nexport async function toUint8Array(
|
|
5
|
-
"mappings": "
|
|
3
|
+
"sources": ["../src/index.ts", "../../image/src/lib/constants.ts", "../../image/src/lib/content-type-map.ts", "../../di/src/lib/injectable.ts", "../../image/src/lib/image-transformer.ts", "../../storage/src/lib/create-readable-stream.ts", "../../storage/src/lib/concat-uint8-arrays.ts", "../../storage/src/lib/to-uint8-array.ts", "../src/lib/sharp-image-transformer.ts", "../src/lib/cache-key.ts"],
|
|
4
|
+
"sourcesContent": ["export { SharpImageTransformer } from './lib/sharp-image-transformer';\nexport type { SharpImageTransformerConfig } from './lib/sharp-image-transformer-config';\n", "export const ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920] as const;\n\nexport const ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80] as const;\n\nexport const DEFAULT_QUALITY = 80;\n\nexport const DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;\n", "import type { ImageFormat } from './transform-options';\n\nconst FORMAT_TO_CONTENT_TYPE: Record<ImageFormat, string> = {\n avif: 'image/avif',\n webp: 'image/webp',\n jpeg: 'image/jpeg',\n png: 'image/png',\n};\n\nexport function getContentType(format: ImageFormat): string {\n return FORMAT_TO_CONTENT_TYPE[format];\n}\n", "import type { AbstractType, Type } from './token';\n\nexport function Injectable(): (target: Type<unknown> | AbstractType<unknown>) => void {\n return (): void => {};\n}\n", "import { Injectable } from '@cibule/di';\n\nimport type { PurgeCacheResult, TransformOptions, TransformResult } from './transform-options';\n\n@Injectable()\nexport abstract class ImageTransformer {\n abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;\n abstract purgeCache(): Promise<PurgeCacheResult>;\n}\n", "export function createReadableStream(data: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(new Uint8Array(data));\n controller.close();\n },\n });\n}\n", "export function concatUint8Arrays(chunks: Uint8Array[]): Uint8Array {\n if (chunks.length === 0) {\n return new Uint8Array(0);\n }\n\n if (chunks.length === 1) {\n return chunks[0] ?? new Uint8Array(0);\n }\n\n const totalLength = chunks.reduce((sum, c) => sum + c.byteLength, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n return result;\n}\n", "import { concatUint8Arrays } from './concat-uint8-arrays';\nimport type { UploadData } from './file-storage-types';\n\nexport async function toUint8Array(input: UploadData): Promise<Uint8Array> {\n if (input instanceof Uint8Array) {\n return input;\n }\n\n if (input instanceof ArrayBuffer) {\n return new Uint8Array(input);\n }\n\n if (input instanceof Blob) {\n return new Uint8Array(await input.arrayBuffer());\n }\n\n const reader = input.getReader();\n const chunks: Uint8Array[] = [];\n\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n chunks.push(value);\n }\n\n return concatUint8Arrays(chunks);\n}\n", "import type { PurgeCacheResult, TransformOptions, TransformResult } from '@cibule/image';\nimport { DEFAULT_QUALITY, getContentType, ImageTransformer } from '@cibule/image';\nimport { createReadableStream, toUint8Array } from '@cibule/storage';\nimport sharp from 'sharp';\n\nimport { buildCacheKey } from './cache-key';\nimport type { SharpImageTransformerConfig } from './sharp-image-transformer-config';\n\nexport class SharpImageTransformer extends ImageTransformer {\n private readonly cachePrefix: string;\n\n public constructor(private readonly config: SharpImageTransformerConfig) {\n super();\n this.cachePrefix = config.cachePrefix ?? 'thumbnails';\n }\n\n public async transform(key: string, options: TransformOptions): Promise<TransformResult> {\n const format = options.format ?? this.config.defaultFormat ?? 'avif';\n const quality = options.quality ?? DEFAULT_QUALITY;\n const fit = options.fit ?? 'cover';\n const cacheKey = buildCacheKey(\n key,\n { width: options.width, format, quality, fit },\n this.cachePrefix,\n );\n\n const cached = await this.config.cache.head(cacheKey);\n if (cached) {\n return this.serveCached(cacheKey, cached.size, cached.contentType ?? getContentType(format));\n }\n\n const sourceObject = await this.config.source.download(key);\n const sourceBytes = await toUint8Array(sourceObject.body);\n\n const { data, info } = await sharp(sourceBytes)\n .resize({ width: options.width, fit })\n .toFormat(format, { quality })\n .toBuffer({ resolveWithObject: true });\n\n const contentType = getContentType(format);\n await this.config.cache.upload(cacheKey, data, { contentType });\n\n return {\n body: createReadableStream(data),\n contentType,\n width: info.width,\n height: info.height,\n size: info.size,\n };\n }\n\n public async purgeCache(): Promise<PurgeCacheResult> {\n const keys = await this.config.cache.listKeys(this.cachePrefix);\n await Promise.all(keys.map(k => this.config.cache.delete(k)));\n return { purgedCount: keys.length };\n }\n\n private async serveCached(\n cacheKey: string,\n size: number,\n contentType: string,\n ): Promise<TransformResult> {\n const cached = await this.config.cache.download(cacheKey);\n const bytes = await toUint8Array(cached.body);\n const metadata = await sharp(bytes).metadata();\n\n return {\n body: createReadableStream(bytes),\n contentType,\n width: metadata.width ?? 0,\n height: metadata.height ?? 0,\n size,\n };\n }\n}\n", "import type { ImageFit, ImageFormat } from '@cibule/image';\n\nexport interface ResolvedTransformOptions {\n readonly width: number;\n readonly format: ImageFormat;\n readonly quality: number;\n readonly fit: ImageFit;\n}\n\nexport function buildCacheKey(\n sourceKey: string,\n options: ResolvedTransformOptions,\n prefix: string,\n): string {\n return `${prefix}/${sourceKey}/w${String(options.width)}_q${String(options.quality)}_${options.format}_${options.fit}`;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["sharp"]
|
|
7
7
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,51 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
|
|
5
|
+
var __typeError = (msg) => {
|
|
6
|
+
throw TypeError(msg);
|
|
7
|
+
};
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
10
|
+
var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
|
|
11
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
12
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
13
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
14
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
15
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
16
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
20
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
21
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
22
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
23
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
|
|
24
|
+
return __privateGet(this, extra);
|
|
25
|
+
}, set [name](x) {
|
|
26
|
+
return __privateSet(this, extra, x);
|
|
27
|
+
} }, name));
|
|
28
|
+
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
29
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
30
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
31
|
+
if (k) {
|
|
32
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
|
|
33
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
34
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
35
|
+
}
|
|
36
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
37
|
+
if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
38
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
39
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
40
|
+
}
|
|
41
|
+
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
42
|
+
};
|
|
43
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
44
|
+
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
45
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
46
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
47
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
48
|
+
|
|
1
49
|
// ../image/src/lib/constants.ts
|
|
2
50
|
var DEFAULT_QUALITY = 80;
|
|
3
51
|
var DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;
|
|
@@ -13,9 +61,20 @@ function getContentType(format) {
|
|
|
13
61
|
return FORMAT_TO_CONTENT_TYPE[format];
|
|
14
62
|
}
|
|
15
63
|
|
|
64
|
+
// ../di/src/lib/injectable.ts
|
|
65
|
+
function Injectable() {
|
|
66
|
+
return () => {
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
16
70
|
// ../image/src/lib/image-transformer.ts
|
|
71
|
+
var _ImageTransformer_decorators, _init;
|
|
72
|
+
_ImageTransformer_decorators = [Injectable()];
|
|
17
73
|
var ImageTransformer = class {
|
|
18
74
|
};
|
|
75
|
+
_init = __decoratorStart(null);
|
|
76
|
+
ImageTransformer = __decorateElement(_init, 0, "ImageTransformer", _ImageTransformer_decorators, ImageTransformer);
|
|
77
|
+
__runInitializers(_init, 1, ImageTransformer);
|
|
19
78
|
|
|
20
79
|
// ../storage/src/lib/create-readable-stream.ts
|
|
21
80
|
function createReadableStream(data) {
|
|
@@ -53,6 +112,9 @@ async function toUint8Array(input) {
|
|
|
53
112
|
if (input instanceof ArrayBuffer) {
|
|
54
113
|
return new Uint8Array(input);
|
|
55
114
|
}
|
|
115
|
+
if (input instanceof Blob) {
|
|
116
|
+
return new Uint8Array(await input.arrayBuffer());
|
|
117
|
+
}
|
|
56
118
|
const reader = input.getReader();
|
|
57
119
|
const chunks = [];
|
|
58
120
|
for (; ; ) {
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../image/src/lib/constants.ts", "../../image/src/lib/content-type-map.ts", "../../image/src/lib/image-transformer.ts", "../../storage/src/lib/create-readable-stream.ts", "../../storage/src/lib/concat-uint8-arrays.ts", "../../storage/src/lib/to-uint8-array.ts", "../src/lib/sharp-image-transformer.ts", "../src/lib/cache-key.ts"],
|
|
4
|
-
"sourcesContent": ["export const ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920] as const;\n\nexport const ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80] as const;\n\nexport const DEFAULT_QUALITY = 80;\n\nexport const DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;\n", "import type { ImageFormat } from './transform-options';\n\nconst FORMAT_TO_CONTENT_TYPE: Record<ImageFormat, string> = {\n avif: 'image/avif',\n webp: 'image/webp',\n jpeg: 'image/jpeg',\n png: 'image/png',\n};\n\nexport function getContentType(format: ImageFormat): string {\n return FORMAT_TO_CONTENT_TYPE[format];\n}\n", "import type { PurgeCacheResult, TransformOptions, TransformResult } from './transform-options';\n\nexport abstract class ImageTransformer {\n abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;\n abstract purgeCache(): Promise<PurgeCacheResult>;\n}\n", "export function createReadableStream(data: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(new Uint8Array(data));\n controller.close();\n },\n });\n}\n", "export function concatUint8Arrays(chunks: Uint8Array[]): Uint8Array {\n if (chunks.length === 0) {\n return new Uint8Array(0);\n }\n\n if (chunks.length === 1) {\n return chunks[0] ?? new Uint8Array(0);\n }\n\n const totalLength = chunks.reduce((sum, c) => sum + c.byteLength, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n return result;\n}\n", "import { concatUint8Arrays } from './concat-uint8-arrays';\n\nexport async function toUint8Array(
|
|
5
|
-
"mappings": "
|
|
3
|
+
"sources": ["../../image/src/lib/constants.ts", "../../image/src/lib/content-type-map.ts", "../../di/src/lib/injectable.ts", "../../image/src/lib/image-transformer.ts", "../../storage/src/lib/create-readable-stream.ts", "../../storage/src/lib/concat-uint8-arrays.ts", "../../storage/src/lib/to-uint8-array.ts", "../src/lib/sharp-image-transformer.ts", "../src/lib/cache-key.ts"],
|
|
4
|
+
"sourcesContent": ["export const ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920] as const;\n\nexport const ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80] as const;\n\nexport const DEFAULT_QUALITY = 80;\n\nexport const DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;\n", "import type { ImageFormat } from './transform-options';\n\nconst FORMAT_TO_CONTENT_TYPE: Record<ImageFormat, string> = {\n avif: 'image/avif',\n webp: 'image/webp',\n jpeg: 'image/jpeg',\n png: 'image/png',\n};\n\nexport function getContentType(format: ImageFormat): string {\n return FORMAT_TO_CONTENT_TYPE[format];\n}\n", "import type { AbstractType, Type } from './token';\n\nexport function Injectable(): (target: Type<unknown> | AbstractType<unknown>) => void {\n return (): void => {};\n}\n", "import { Injectable } from '@cibule/di';\n\nimport type { PurgeCacheResult, TransformOptions, TransformResult } from './transform-options';\n\n@Injectable()\nexport abstract class ImageTransformer {\n abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;\n abstract purgeCache(): Promise<PurgeCacheResult>;\n}\n", "export function createReadableStream(data: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(new Uint8Array(data));\n controller.close();\n },\n });\n}\n", "export function concatUint8Arrays(chunks: Uint8Array[]): Uint8Array {\n if (chunks.length === 0) {\n return new Uint8Array(0);\n }\n\n if (chunks.length === 1) {\n return chunks[0] ?? new Uint8Array(0);\n }\n\n const totalLength = chunks.reduce((sum, c) => sum + c.byteLength, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n\n return result;\n}\n", "import { concatUint8Arrays } from './concat-uint8-arrays';\nimport type { UploadData } from './file-storage-types';\n\nexport async function toUint8Array(input: UploadData): Promise<Uint8Array> {\n if (input instanceof Uint8Array) {\n return input;\n }\n\n if (input instanceof ArrayBuffer) {\n return new Uint8Array(input);\n }\n\n if (input instanceof Blob) {\n return new Uint8Array(await input.arrayBuffer());\n }\n\n const reader = input.getReader();\n const chunks: Uint8Array[] = [];\n\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n chunks.push(value);\n }\n\n return concatUint8Arrays(chunks);\n}\n", "import type { PurgeCacheResult, TransformOptions, TransformResult } from '@cibule/image';\nimport { DEFAULT_QUALITY, getContentType, ImageTransformer } from '@cibule/image';\nimport { createReadableStream, toUint8Array } from '@cibule/storage';\nimport sharp from 'sharp';\n\nimport { buildCacheKey } from './cache-key';\nimport type { SharpImageTransformerConfig } from './sharp-image-transformer-config';\n\nexport class SharpImageTransformer extends ImageTransformer {\n private readonly cachePrefix: string;\n\n public constructor(private readonly config: SharpImageTransformerConfig) {\n super();\n this.cachePrefix = config.cachePrefix ?? 'thumbnails';\n }\n\n public async transform(key: string, options: TransformOptions): Promise<TransformResult> {\n const format = options.format ?? this.config.defaultFormat ?? 'avif';\n const quality = options.quality ?? DEFAULT_QUALITY;\n const fit = options.fit ?? 'cover';\n const cacheKey = buildCacheKey(\n key,\n { width: options.width, format, quality, fit },\n this.cachePrefix,\n );\n\n const cached = await this.config.cache.head(cacheKey);\n if (cached) {\n return this.serveCached(cacheKey, cached.size, cached.contentType ?? getContentType(format));\n }\n\n const sourceObject = await this.config.source.download(key);\n const sourceBytes = await toUint8Array(sourceObject.body);\n\n const { data, info } = await sharp(sourceBytes)\n .resize({ width: options.width, fit })\n .toFormat(format, { quality })\n .toBuffer({ resolveWithObject: true });\n\n const contentType = getContentType(format);\n await this.config.cache.upload(cacheKey, data, { contentType });\n\n return {\n body: createReadableStream(data),\n contentType,\n width: info.width,\n height: info.height,\n size: info.size,\n };\n }\n\n public async purgeCache(): Promise<PurgeCacheResult> {\n const keys = await this.config.cache.listKeys(this.cachePrefix);\n await Promise.all(keys.map(k => this.config.cache.delete(k)));\n return { purgedCount: keys.length };\n }\n\n private async serveCached(\n cacheKey: string,\n size: number,\n contentType: string,\n ): Promise<TransformResult> {\n const cached = await this.config.cache.download(cacheKey);\n const bytes = await toUint8Array(cached.body);\n const metadata = await sharp(bytes).metadata();\n\n return {\n body: createReadableStream(bytes),\n contentType,\n width: metadata.width ?? 0,\n height: metadata.height ?? 0,\n size,\n };\n }\n}\n", "import type { ImageFit, ImageFormat } from '@cibule/image';\n\nexport interface ResolvedTransformOptions {\n readonly width: number;\n readonly format: ImageFormat;\n readonly quality: number;\n readonly fit: ImageFit;\n}\n\nexport function buildCacheKey(\n sourceKey: string,\n options: ResolvedTransformOptions,\n prefix: string,\n): string {\n return `${prefix}/${sourceKey}/w${String(options.width)}_q${String(options.quality)}_${options.format}_${options.fit}`;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cibule/image-sharp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@cibule/image": "
|
|
35
|
-
"@cibule/storage": "
|
|
34
|
+
"@cibule/image": "^0.3.0",
|
|
35
|
+
"@cibule/storage": "^0.3.0",
|
|
36
36
|
"sharp": "^0.33.0"
|
|
37
37
|
}
|
|
38
38
|
}
|