@paroicms/server-image-cache-engine 1.1.0 → 1.2.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/ddl/image-cache.ddl.sql +13 -6
- package/dist/database/PaImageCache.entity.d.ts +2 -0
- package/dist/database/PaImageCache.entity.js +10 -0
- package/dist/database/PaImageCache.entity.js.map +1 -1
- package/dist/database/PaImageCacheUsed.entity.d.ts +5 -0
- package/dist/database/{PaImageCacheKey.entity.js → PaImageCacheUsed.entity.js} +11 -11
- package/dist/database/PaImageCacheUsed.entity.js.map +1 -0
- package/dist/database/queries.d.ts +10 -8
- package/dist/database/queries.js +22 -18
- package/dist/database/queries.js.map +1 -1
- package/dist/db-init/db-init.js +3 -3
- package/dist/db-init/db-init.js.map +1 -1
- package/dist/db-init/ddl-migration.d.ts +2 -2
- package/dist/db-init/ddl-migration.js +13 -28
- package/dist/db-init/ddl-migration.js.map +1 -1
- package/dist/default-bo-favicon.js +1 -1
- package/dist/default-bo-favicon.js.map +1 -1
- package/dist/engine-types.d.ts +6 -1
- package/dist/image-cache-engine.d.ts +7 -6
- package/dist/image-cache-engine.js +13 -6
- package/dist/image-cache-engine.js.map +1 -1
- package/dist/internal/internal.types.d.ts +4 -2
- package/dist/internal/resizer.d.ts +1 -1
- package/dist/internal/resizer.js +2 -2
- package/dist/internal/resizer.js.map +1 -1
- package/dist/internal/task-processor.js +11 -4
- package/dist/internal/task-processor.js.map +1 -1
- package/dist/original-images-processing.js +1 -7
- package/dist/original-images-processing.js.map +1 -1
- package/dist/public-helpers.d.ts +3 -1
- package/dist/public-helpers.js +13 -2
- package/dist/public-helpers.js.map +1 -1
- package/package.json +6 -6
- package/dist/database/PaImageCacheDependency.entity.d.ts +0 -4
- package/dist/database/PaImageCacheDependency.entity.js +0 -30
- package/dist/database/PaImageCacheDependency.entity.js.map +0 -1
- package/dist/database/PaImageCacheKey.entity.d.ts +0 -5
- package/dist/database/PaImageCacheKey.entity.js.map +0 -1
package/ddl/image-cache.ddl.sql
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
PRAGMA journal_mode = TRUNCATE;
|
|
2
2
|
PRAGMA foreign_keys = 1;
|
|
3
3
|
|
|
4
|
+
drop index if exists PaImageCacheUsed_usedKey_index;
|
|
5
|
+
drop table if exists PaImageCacheUsed;
|
|
6
|
+
drop table if exists PaImageCache;
|
|
7
|
+
drop table if exists PaDbMetadata;
|
|
8
|
+
|
|
4
9
|
create table PaDbMetadata (
|
|
5
10
|
dbSchema varchar(100) not null primary key,
|
|
6
11
|
dbVersion integer not null
|
|
7
12
|
);
|
|
8
13
|
|
|
9
|
-
insert into PaDbMetadata (dbSchema, dbVersion) values ('image-cache',
|
|
14
|
+
insert into PaDbMetadata (dbSchema, dbVersion) values ('image-cache', 5);
|
|
10
15
|
|
|
11
16
|
create table PaImageCache (
|
|
12
17
|
id integer not null primary key autoincrement,
|
|
13
|
-
|
|
18
|
+
resourceVersion varchar(100) not null,
|
|
19
|
+
slug varchar(200),
|
|
20
|
+
imageUid char(36) not null,
|
|
14
21
|
variantName varchar(250) not null,
|
|
15
22
|
mediaType varchar(100) not null,
|
|
16
23
|
weightB integer not null,
|
|
@@ -22,11 +29,11 @@ create table PaImageCache (
|
|
|
22
29
|
unique (imageUid, variantName)
|
|
23
30
|
);
|
|
24
31
|
|
|
25
|
-
create table
|
|
32
|
+
create table PaImageCacheUsed (
|
|
26
33
|
imageCacheId integer not null references PaImageCache (id) on delete cascade,
|
|
27
|
-
|
|
34
|
+
usedKey varchar(250) not null,
|
|
28
35
|
used tinyint(1) not null default 1,
|
|
29
|
-
primary key (imageCacheId,
|
|
36
|
+
primary key (imageCacheId, usedKey)
|
|
30
37
|
);
|
|
31
38
|
|
|
32
|
-
create index
|
|
39
|
+
create index PaImageCacheUsed_usedKey_index on PaImageCacheUsed (usedKey);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
export declare class PaImageCacheEntity {
|
|
3
3
|
id: string;
|
|
4
|
+
resourceVersion: string;
|
|
4
5
|
imageUid: string;
|
|
5
6
|
variantName: string;
|
|
6
7
|
mediaType: string;
|
|
@@ -10,4 +11,5 @@ export declare class PaImageCacheEntity {
|
|
|
10
11
|
ts: Date;
|
|
11
12
|
lastUseTs: Date;
|
|
12
13
|
binaryFile: Buffer;
|
|
14
|
+
slug?: string;
|
|
13
15
|
}
|
|
@@ -13,6 +13,7 @@ exports.PaImageCacheEntity = void 0;
|
|
|
13
13
|
const typeorm_1 = require("typeorm");
|
|
14
14
|
let PaImageCacheEntity = class PaImageCacheEntity {
|
|
15
15
|
id;
|
|
16
|
+
resourceVersion;
|
|
16
17
|
imageUid;
|
|
17
18
|
variantName;
|
|
18
19
|
mediaType;
|
|
@@ -22,12 +23,17 @@ let PaImageCacheEntity = class PaImageCacheEntity {
|
|
|
22
23
|
ts;
|
|
23
24
|
lastUseTs;
|
|
24
25
|
binaryFile;
|
|
26
|
+
slug;
|
|
25
27
|
};
|
|
26
28
|
exports.PaImageCacheEntity = PaImageCacheEntity;
|
|
27
29
|
__decorate([
|
|
28
30
|
(0, typeorm_1.PrimaryGeneratedColumn)(),
|
|
29
31
|
__metadata("design:type", String)
|
|
30
32
|
], PaImageCacheEntity.prototype, "id", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, typeorm_1.Column)({ type: "varchar" }),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], PaImageCacheEntity.prototype, "resourceVersion", void 0);
|
|
31
37
|
__decorate([
|
|
32
38
|
(0, typeorm_1.Column)(),
|
|
33
39
|
__metadata("design:type", String)
|
|
@@ -64,6 +70,10 @@ __decorate([
|
|
|
64
70
|
(0, typeorm_1.Column)({ type: "blob" }),
|
|
65
71
|
__metadata("design:type", Buffer)
|
|
66
72
|
], PaImageCacheEntity.prototype, "binaryFile", void 0);
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, typeorm_1.Column)({ type: "varchar", nullable: true }),
|
|
75
|
+
__metadata("design:type", String)
|
|
76
|
+
], PaImageCacheEntity.prototype, "slug", void 0);
|
|
67
77
|
exports.PaImageCacheEntity = PaImageCacheEntity = __decorate([
|
|
68
78
|
(0, typeorm_1.Entity)("PaImageCache"),
|
|
69
79
|
(0, typeorm_1.Unique)(["imageUid", "variantName"])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaImageCache.entity.js","sourceRoot":"","sources":["../../src/database/PaImageCache.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAyE;AAIlE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAE7B,EAAE,CAAU;IAGZ,QAAQ,CAAU;IAGlB,WAAW,CAAU;IAGrB,SAAS,CAAU;IAGnB,KAAK,CAAU;IAGf,MAAM,CAAU;IAGhB,OAAO,CAAU;IAGjB,EAAE,CAAQ;IAGV,SAAS,CAAQ;IAGjB,UAAU,CAAU;
|
|
1
|
+
{"version":3,"file":"PaImageCache.entity.js","sourceRoot":"","sources":["../../src/database/PaImageCache.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAyE;AAIlE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAE7B,EAAE,CAAU;IAGZ,eAAe,CAAU;IAGzB,QAAQ,CAAU;IAGlB,WAAW,CAAU;IAGrB,SAAS,CAAU;IAGnB,KAAK,CAAU;IAGf,MAAM,CAAU;IAGhB,OAAO,CAAU;IAGjB,EAAE,CAAQ;IAGV,SAAS,CAAQ;IAGjB,UAAU,CAAU;IAGpB,IAAI,CAAU;CACf,CAAA;AApCY,gDAAkB;AAE7B;IADC,IAAA,gCAAsB,GAAE;;8CACb;AAGZ;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;2DACH;AAGzB;IADC,IAAA,gBAAM,GAAE;;oDACS;AAGlB;IADC,IAAA,gBAAM,GAAE;;uDACY;AAGrB;IADC,IAAA,gBAAM,GAAE;;qDACU;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;iDACb;AAGf;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;kDACZ;AAGhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;mDACX;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC;8BAC5D,IAAI;8CAAC;AAGV;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC;8BACrD,IAAI;qDAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8BACZ,MAAM;sDAAC;AAGpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDAC9B;6BAnCH,kBAAkB;IAF9B,IAAA,gBAAM,EAAC,cAAc,CAAC;IACtB,IAAA,gBAAM,EAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;GACvB,kBAAkB,CAoC9B"}
|
|
@@ -9,27 +9,27 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.PaImageCacheUsedEntity = void 0;
|
|
13
13
|
const typeorm_1 = require("typeorm");
|
|
14
|
-
let
|
|
14
|
+
let PaImageCacheUsedEntity = class PaImageCacheUsedEntity {
|
|
15
15
|
imageCacheId;
|
|
16
|
-
|
|
16
|
+
usedKey;
|
|
17
17
|
used;
|
|
18
18
|
};
|
|
19
|
-
exports.
|
|
19
|
+
exports.PaImageCacheUsedEntity = PaImageCacheUsedEntity;
|
|
20
20
|
__decorate([
|
|
21
21
|
(0, typeorm_1.Column)({ type: "integer", primary: true }),
|
|
22
22
|
__metadata("design:type", String)
|
|
23
|
-
],
|
|
23
|
+
], PaImageCacheUsedEntity.prototype, "imageCacheId", void 0);
|
|
24
24
|
__decorate([
|
|
25
25
|
(0, typeorm_1.Column)({ primary: true }),
|
|
26
26
|
__metadata("design:type", String)
|
|
27
|
-
],
|
|
27
|
+
], PaImageCacheUsedEntity.prototype, "usedKey", void 0);
|
|
28
28
|
__decorate([
|
|
29
29
|
(0, typeorm_1.Column)({ type: "boolean", default: true }),
|
|
30
30
|
__metadata("design:type", Boolean)
|
|
31
|
-
],
|
|
32
|
-
exports.
|
|
33
|
-
(0, typeorm_1.Entity)("
|
|
34
|
-
],
|
|
35
|
-
//# sourceMappingURL=
|
|
31
|
+
], PaImageCacheUsedEntity.prototype, "used", void 0);
|
|
32
|
+
exports.PaImageCacheUsedEntity = PaImageCacheUsedEntity = __decorate([
|
|
33
|
+
(0, typeorm_1.Entity)("PaImageCacheUsed")
|
|
34
|
+
], PaImageCacheUsedEntity);
|
|
35
|
+
//# sourceMappingURL=PaImageCacheUsed.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaImageCacheUsed.entity.js","sourceRoot":"","sources":["../../src/database/PaImageCacheUsed.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAyC;AAGlC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAEjC,YAAY,CAAU;IAGtB,OAAO,CAAU;IAGjB,IAAI,CAAW;CAChB,CAAA;AATY,wDAAsB;AAEjC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4DACrB;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;uDACT;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;oDAC5B;iCARJ,sBAAsB;IADlC,IAAA,gBAAM,EAAC,kBAAkB,CAAC;GACd,sBAAsB,CASlC"}
|
|
@@ -3,14 +3,16 @@ import type { EntityManager } from "typeorm";
|
|
|
3
3
|
import type { CompleteVariantName, ImageVariantWithBinary } from "../engine-types";
|
|
4
4
|
import type { VariantEngineContext } from "../internal/engine-context";
|
|
5
5
|
export declare function insertIntoImageVariant(cn: EntityManager, data: {
|
|
6
|
+
resourceVersion: string;
|
|
6
7
|
imageUid: string;
|
|
7
8
|
variantName: CompleteVariantName;
|
|
9
|
+
slug?: string;
|
|
8
10
|
mediaType: string;
|
|
9
11
|
width: number;
|
|
10
12
|
height: number;
|
|
11
13
|
weightB: number;
|
|
12
14
|
binaryFile: Buffer;
|
|
13
|
-
},
|
|
15
|
+
}, usedKey: string): Promise<{
|
|
14
16
|
newId: string;
|
|
15
17
|
lastModified: string;
|
|
16
18
|
}>;
|
|
@@ -21,10 +23,10 @@ export declare function deleteVariants(cn: EntityManager, options: {
|
|
|
21
23
|
imageUids: string[];
|
|
22
24
|
}): Promise<void>;
|
|
23
25
|
/**
|
|
24
|
-
* @returns the list of cache
|
|
26
|
+
* @returns the list of cache usedKeys that were deleted
|
|
25
27
|
*/
|
|
26
28
|
export declare function deleteVariantsByDependencies(cn: EntityManager, options: {
|
|
27
|
-
|
|
29
|
+
usedKeys: string[];
|
|
28
30
|
}): Promise<number>;
|
|
29
31
|
export declare function fetchImageVariantWithBinary(ctx: Pick<VariantEngineContext, "cn" | "timeToIdleDays" | "appLog" | "siteName">, { imageUid, variantName, }: {
|
|
30
32
|
imageUid: string;
|
|
@@ -34,15 +36,15 @@ export declare function fetchImageVariantWithBinary(ctx: Pick<VariantEngineConte
|
|
|
34
36
|
id: string;
|
|
35
37
|
} | undefined>;
|
|
36
38
|
/**
|
|
37
|
-
* Delete the images that have no
|
|
39
|
+
* Delete the images that have no usedKey and that have not been used recently.
|
|
38
40
|
* @returns the number of cache identifiers that were deleted
|
|
39
41
|
*/
|
|
40
42
|
export declare function deleteUnusedVariants({ cn, timeToIdleDays, }: VariantEngineContext): Promise<number | undefined>;
|
|
41
|
-
export declare function
|
|
43
|
+
export declare function markOneUsedKeyAsUsed(ctx: Pick<VariantEngineContext, "cn">, { imageCacheId, usedKey, }: {
|
|
42
44
|
imageCacheId: string;
|
|
43
|
-
|
|
45
|
+
usedKey: string;
|
|
44
46
|
}): Promise<void>;
|
|
45
|
-
export declare function
|
|
46
|
-
|
|
47
|
+
export declare function markUsedKeyAsUnused(ctx: Pick<VariantEngineContext, "cn">, { usedKey, }: {
|
|
48
|
+
usedKey: string;
|
|
47
49
|
}): Promise<void>;
|
|
48
50
|
export declare function clearVariantCache({ cn }: VariantEngineContext): Promise<void>;
|
package/dist/database/queries.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.clearVariantCache = exports.
|
|
3
|
+
exports.clearVariantCache = exports.markUsedKeyAsUnused = exports.markOneUsedKeyAsUsed = exports.deleteUnusedVariants = exports.fetchImageVariantWithBinary = exports.deleteVariantsByDependencies = exports.deleteVariants = exports.insertIntoImageVariant = void 0;
|
|
4
4
|
const data_formatters_lib_1 = require("@paroi/data-formatters-lib");
|
|
5
5
|
const anywhere_lib_1 = require("@paroicms/anywhere-lib");
|
|
6
|
-
async function insertIntoImageVariant(cn, data,
|
|
6
|
+
async function insertIntoImageVariant(cn, data, usedKey) {
|
|
7
7
|
const result = await cn
|
|
8
8
|
.createQueryBuilder()
|
|
9
9
|
.insert()
|
|
@@ -31,10 +31,10 @@ async function insertIntoImageVariant(cn, data, cacheKey) {
|
|
|
31
31
|
await cn
|
|
32
32
|
.createQueryBuilder()
|
|
33
33
|
.insert()
|
|
34
|
-
.into("
|
|
34
|
+
.into("PaImageCacheUsed")
|
|
35
35
|
.values({
|
|
36
36
|
imageCacheId: newId,
|
|
37
|
-
|
|
37
|
+
usedKey,
|
|
38
38
|
})
|
|
39
39
|
.execute();
|
|
40
40
|
const row = await cn
|
|
@@ -64,14 +64,14 @@ async function deleteVariants(cn, options) {
|
|
|
64
64
|
}
|
|
65
65
|
exports.deleteVariants = deleteVariants;
|
|
66
66
|
/**
|
|
67
|
-
* @returns the list of cache
|
|
67
|
+
* @returns the list of cache usedKeys that were deleted
|
|
68
68
|
*/
|
|
69
69
|
async function deleteVariantsByDependencies(cn, options) {
|
|
70
70
|
const rows = await cn
|
|
71
71
|
.createQueryBuilder()
|
|
72
72
|
.select("k.imageCacheId", "imageCacheId")
|
|
73
|
-
.from("
|
|
74
|
-
.where("k.
|
|
73
|
+
.from("PaImageCacheUsed", "k")
|
|
74
|
+
.where("k.usedKey in (:...usedKeys)", { usedKeys: options.usedKeys })
|
|
75
75
|
.getRawMany();
|
|
76
76
|
const imageCacheIds = rows.map((row) => (0, data_formatters_lib_1.strVal)(row.imageCacheId));
|
|
77
77
|
await cn
|
|
@@ -94,6 +94,8 @@ async function fetchImageVariantWithBinary(ctx, { imageUid, variantName, }) {
|
|
|
94
94
|
.addSelect("v.binaryFile", "binaryFile")
|
|
95
95
|
.addSelect("v.ts", "ts")
|
|
96
96
|
.addSelect("v.lastUseTs", "lastUseTs")
|
|
97
|
+
.addSelect("v.resourceVersion", "resourceVersion")
|
|
98
|
+
.addSelect("v.slug", "slug")
|
|
97
99
|
.from("PaImageCache", "v")
|
|
98
100
|
.where("v.imageUid = :imageUid", { imageUid })
|
|
99
101
|
.andWhere("v.variantName = :variantName", { variantName })
|
|
@@ -106,6 +108,8 @@ async function fetchImageVariantWithBinary(ctx, { imageUid, variantName, }) {
|
|
|
106
108
|
return {
|
|
107
109
|
id,
|
|
108
110
|
variant: {
|
|
111
|
+
resourceVersion: (0, data_formatters_lib_1.strVal)(row.resourceVersion),
|
|
112
|
+
slug: (0, data_formatters_lib_1.strValOrUndef)(row.slug),
|
|
109
113
|
mediaType: (0, data_formatters_lib_1.strVal)(row.mediaType),
|
|
110
114
|
width: (0, data_formatters_lib_1.nbVal)(row.width),
|
|
111
115
|
height: (0, data_formatters_lib_1.nbVal)(row.height),
|
|
@@ -131,7 +135,7 @@ async function updateLastUseTsOfImageVariant(ctx, { id, lastUseTs, imageUid, var
|
|
|
131
135
|
.execute();
|
|
132
136
|
}
|
|
133
137
|
/**
|
|
134
|
-
* Delete the images that have no
|
|
138
|
+
* Delete the images that have no usedKey and that have not been used recently.
|
|
135
139
|
* @returns the number of cache identifiers that were deleted
|
|
136
140
|
*/
|
|
137
141
|
async function deleteUnusedVariants({ cn, timeToIdleDays, }) {
|
|
@@ -142,34 +146,34 @@ async function deleteUnusedVariants({ cn, timeToIdleDays, }) {
|
|
|
142
146
|
.where(`date(lastUseTs) < date(current_timestamp, '-${timeToIdleDays} day')`)
|
|
143
147
|
.andWhere(`not exists (
|
|
144
148
|
select 1
|
|
145
|
-
from
|
|
149
|
+
from PaImageCacheUsed k
|
|
146
150
|
where k.imageCacheId = PaImageCache.id and k.used = 1
|
|
147
151
|
)`)
|
|
148
152
|
.execute();
|
|
149
153
|
return result.affected ?? undefined;
|
|
150
154
|
}
|
|
151
155
|
exports.deleteUnusedVariants = deleteUnusedVariants;
|
|
152
|
-
async function
|
|
156
|
+
async function markOneUsedKeyAsUsed(ctx, { imageCacheId, usedKey, }) {
|
|
153
157
|
await ctx.cn
|
|
154
158
|
.createQueryBuilder()
|
|
155
|
-
.update("
|
|
159
|
+
.update("PaImageCacheUsed")
|
|
156
160
|
.set({ used: 1 })
|
|
157
161
|
.where("imageCacheId = :imageCacheId", { imageCacheId })
|
|
158
|
-
.andWhere("
|
|
162
|
+
.andWhere("usedKey = :usedKey", { usedKey })
|
|
159
163
|
.execute();
|
|
160
164
|
}
|
|
161
|
-
exports.
|
|
162
|
-
async function
|
|
165
|
+
exports.markOneUsedKeyAsUsed = markOneUsedKeyAsUsed;
|
|
166
|
+
async function markUsedKeyAsUnused(ctx, { usedKey, }) {
|
|
163
167
|
await ctx.cn
|
|
164
168
|
.createQueryBuilder()
|
|
165
|
-
.update("
|
|
169
|
+
.update("PaImageCacheUsed")
|
|
166
170
|
.set({ used: 0 })
|
|
167
|
-
.where("
|
|
171
|
+
.where("usedKey = :usedKey", { usedKey })
|
|
168
172
|
.execute();
|
|
169
173
|
}
|
|
170
|
-
exports.
|
|
174
|
+
exports.markUsedKeyAsUnused = markUsedKeyAsUnused;
|
|
171
175
|
async function clearVariantCache({ cn }) {
|
|
172
|
-
await cn.createQueryBuilder().delete().from("
|
|
176
|
+
await cn.createQueryBuilder().delete().from("PaImageCacheUsed").execute();
|
|
173
177
|
await cn.createQueryBuilder().delete().from("PaImageCache").execute();
|
|
174
178
|
}
|
|
175
179
|
exports.clearVariantCache = clearVariantCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/database/queries.ts"],"names":[],"mappings":";;;AAAA,oEAAmF;AACnF,yDAAkE;AAK3D,KAAK,UAAU,sBAAsB,CAC1C,EAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/database/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/db-init/db-init.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createOrOpenMainCn = void 0;
|
|
4
|
-
const node_path_1 = require("node:path");
|
|
5
4
|
const server_lib_1 = require("@paroicms/server-lib");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
6
|
const constants_1 = require("../constants");
|
|
7
7
|
const PaImageCache_entity_1 = require("../database/PaImageCache.entity");
|
|
8
|
-
const
|
|
8
|
+
const PaImageCacheUsed_entity_1 = require("../database/PaImageCacheUsed.entity");
|
|
9
9
|
const ddl_migration_1 = require("./ddl-migration");
|
|
10
10
|
async function createOrOpenMainCn({ sqliteFile, siteName, appLog, }) {
|
|
11
11
|
const { logNextQuery, typeOrmLogger } = (0, server_lib_1.createSqlLogger)({ appLog, siteName, dbSchemaName: ddl_migration_1.dbSchemaName });
|
|
@@ -16,7 +16,7 @@ async function createOrOpenMainCn({ sqliteFile, siteName, appLog, }) {
|
|
|
16
16
|
sqliteFile,
|
|
17
17
|
ddlFile: (0, node_path_1.join)(constants_1.packageDir, "ddl", "image-cache.ddl.sql"),
|
|
18
18
|
migrateDb,
|
|
19
|
-
entities: [PaImageCache_entity_1.PaImageCacheEntity,
|
|
19
|
+
entities: [PaImageCache_entity_1.PaImageCacheEntity, PaImageCacheUsed_entity_1.PaImageCacheUsedEntity],
|
|
20
20
|
logger: typeOrmLogger,
|
|
21
21
|
appLog,
|
|
22
22
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../src/db-init/db-init.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../src/db-init/db-init.ts"],"names":[],"mappings":";;;AAAA,qDAAkG;AAClG,yCAAiC;AAEjC,4CAA0C;AAC1C,yEAAqE;AACrE,iFAA6E;AAC7E,mDAKyB;AAElB,KAAK,UAAU,kBAAkB,CAAC,EACvC,UAAU,EACV,QAAQ,EACR,MAAM,GACmD;IACzD,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,IAAA,4BAAe,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAZ,4BAAY,EAAE,CAAC,CAAC;IAE5F,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,yCAA4B,EAAC;QACpD,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,IAAI;QACf,YAAY,EAAZ,4BAAY;QACZ,UAAU;QACV,OAAO,EAAE,IAAA,gBAAI,EAAC,sBAAU,EAAE,KAAK,EAAE,qBAAqB,CAAC;QACvD,SAAS;QACT,QAAQ,EAAE,CAAC,wCAAkB,EAAE,gDAAsB,CAAC;QACtD,MAAM,EAAE,aAAa;QACrB,MAAM;KACP,CAAC,CAAC;IAEH,KAAK,UAAU,SAAS,CAAC,EAAc;QACrC,MAAM,SAAS,GAAG,MAAM,IAAA,4BAAY,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,IAAI,SAAS,KAAK,8CAA8B,EAAE,CAAC;YACjD,MAAM,IAAA,+BAAe,EAAC,EAAE,EAAE;gBACxB,WAAW,EAAE,SAAS;gBACtB,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAClC,CAAC;AA/BD,gDA+BC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type AppLog } from "@paroicms/server-lib";
|
|
2
2
|
import type { DataSource } from "typeorm";
|
|
3
3
|
export declare const dbSchemaName = "image-cache";
|
|
4
|
-
export declare const currentVariantsDbSchemaVersion =
|
|
4
|
+
export declare const currentVariantsDbSchemaVersion = 5;
|
|
5
5
|
export declare function getDbVersion(cn: DataSource, { siteName }: {
|
|
6
6
|
siteName: string;
|
|
7
7
|
}): Promise<number>;
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.migrateMediasDb = exports.getDbVersion = exports.currentVariantsDbSchemaVersion = exports.dbSchemaName = void 0;
|
|
4
4
|
const data_formatters_lib_1 = require("@paroi/data-formatters-lib");
|
|
5
|
+
const server_lib_1 = require("@paroicms/server-lib");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
5
8
|
exports.dbSchemaName = "image-cache";
|
|
6
|
-
exports.currentVariantsDbSchemaVersion =
|
|
9
|
+
exports.currentVariantsDbSchemaVersion = 5;
|
|
7
10
|
async function getDbVersion(cn, { siteName }) {
|
|
8
11
|
const [row] = await cn.query(`select dbVersion from PaDbMetadata where dbSchema = '${exports.dbSchemaName}'`);
|
|
9
12
|
if (!row)
|
|
@@ -14,33 +17,15 @@ exports.getDbVersion = getDbVersion;
|
|
|
14
17
|
async function migrateMediasDb(cn, { fromVersion, siteName, appLog }) {
|
|
15
18
|
const toVersion = exports.currentVariantsDbSchemaVersion;
|
|
16
19
|
let currentVersion = fromVersion;
|
|
17
|
-
if (currentVersion
|
|
18
|
-
await cn.query("drop table
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
mediaType varchar(100) not null,
|
|
27
|
-
weightB integer not null,
|
|
28
|
-
width integer not null,
|
|
29
|
-
height integer not null,
|
|
30
|
-
ts timestamp not null default current_timestamp,
|
|
31
|
-
lastUseTs timestamp not null default current_timestamp,
|
|
32
|
-
binaryFile blob not null,
|
|
33
|
-
unique (imageUid, variantName)
|
|
34
|
-
)`);
|
|
35
|
-
await cn.query(`create table PaImageCacheKey (
|
|
36
|
-
imageCacheId integer not null references PaImageCache (id) on delete cascade,
|
|
37
|
-
cacheKey varchar(250) not null,
|
|
38
|
-
used tinyint(1) not null default 1,
|
|
39
|
-
primary key (imageCacheId, cacheKey)
|
|
40
|
-
)`);
|
|
41
|
-
await cn.query("create index PaImageCacheKey_cacheKey_index on PaImageCacheKey (cacheKey)");
|
|
42
|
-
await cn.query(`update PaDbMetadata set dbVersion = 4 where dbSchema = '${exports.dbSchemaName}'`);
|
|
43
|
-
currentVersion = 4;
|
|
20
|
+
if (currentVersion === 4) {
|
|
21
|
+
await cn.query("drop table PaImageCacheKey");
|
|
22
|
+
}
|
|
23
|
+
// We don't care losing cache data
|
|
24
|
+
// Warning: don't reset the image cache until the text cache is reset too
|
|
25
|
+
if (currentVersion < toVersion) {
|
|
26
|
+
appLog.info(`[${siteName}] reset the image-cache database`);
|
|
27
|
+
await (0, server_lib_1.executeDdl)(cn, (0, node_path_1.join)(constants_1.packageDir, "ddl", "image-cache.ddl.sql"));
|
|
28
|
+
currentVersion = await getDbVersion(cn, { siteName });
|
|
44
29
|
}
|
|
45
30
|
if (currentVersion !== toVersion) {
|
|
46
31
|
throw new Error(`[${siteName}] version of ${exports.dbSchemaName} database should be '${toVersion}', but is '${currentVersion}'`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ddl-migration.js","sourceRoot":"","sources":["../../src/db-init/ddl-migration.ts"],"names":[],"mappings":";;;AAAA,oEAAmD;
|
|
1
|
+
{"version":3,"file":"ddl-migration.js","sourceRoot":"","sources":["../../src/db-init/ddl-migration.ts"],"names":[],"mappings":";;;AAAA,oEAAmD;AAEnD,qDAA+D;AAC/D,yCAAiC;AAEjC,4CAA0C;AAE7B,QAAA,YAAY,GAAG,aAAa,CAAC;AAC7B,QAAA,8BAA8B,GAAG,CAAC,CAAC;AAEzC,KAAK,UAAU,YAAY,CAAC,EAAc,EAAE,EAAE,QAAQ,EAAwB;IACnF,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAC1B,wDAAwD,oBAAY,GAAG,CACxE,CAAC;IACF,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,QAAQ,uBAAuB,oBAAY,eAAe,CAAC,CAAC;IAC1F,OAAO,IAAA,2BAAK,EAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AACxD,CAAC;AAND,oCAMC;AAEM,KAAK,UAAU,eAAe,CACnC,EAAc,EACd,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAA6D;IAE5F,MAAM,SAAS,GAAG,sCAA8B,CAAC;IACjD,IAAI,cAAc,GAAG,WAAW,CAAC;IAEjC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC/C,CAAC;IAED,kCAAkC;IAClC,yEAAyE;IACzE,IAAI,cAAc,GAAG,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,kCAAkC,CAAC,CAAC;QAC5D,MAAM,IAAA,uBAAU,EAAC,EAAE,EAAE,IAAA,gBAAI,EAAC,sBAAU,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACrE,cAAc,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,IAAI,QAAQ,gBAAgB,oBAAY,wBAAwB,SAAS,cAAc,cAAc,GAAG,CACzG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CACT,IAAI,QAAQ,KAAK,oBAAY,+BAA+B,WAAW,OAAO,cAAc,EAAE,CAC/F,CAAC;AACJ,CAAC;AA5BD,0CA4BC"}
|
|
@@ -41,7 +41,7 @@ async function createDefaultBoFavicon(binaryFile) {
|
|
|
41
41
|
return {
|
|
42
42
|
width: result.info.width,
|
|
43
43
|
height: result.info.height,
|
|
44
|
-
weightB: result.
|
|
44
|
+
weightB: result.data.byteLength,
|
|
45
45
|
mediaType,
|
|
46
46
|
lossless: mediaType === "image/png" || mediaType === "image/webp",
|
|
47
47
|
binaryFile: result.data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-bo-favicon.js","sourceRoot":"","sources":["../src/default-bo-favicon.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,mEAAqD;AACrD,gDAAmE;AAGnE,MAAM,mBAAmB,GAAG;IAC1B,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,kBAAkB;CACtB,CAAC;AAEK,KAAK,UAAU,sBAAsB,CAAC,UAAkB;IAC7D,MAAM,SAAS,GAAG,IAAA,eAAK,EAAC,UAAU,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,IAAA,kCAAU,EAAC,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE3D,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,kCAAU,EAAC,GAAG,EAAE,CAC3C,SAAS;SACN,MAAM,CAAC;QACN,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,GAAG,EAAE,OAAO;KACb,CAAC;SACD,WAAW,EAAE;SACb,GAAG,EAAE;SACL,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CACzC,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEzC,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAU,EAAC,GAAG,EAAE,CACnC,IAAA,eAAK,EAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;SAC9C,IAAI,CAAC;QACJ,QAAQ,EAAE,IAAI;KACf,CAAC;SACD,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CACzC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAA,uCAA6B,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpE,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;QACxB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QAC1B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"default-bo-favicon.js","sourceRoot":"","sources":["../src/default-bo-favicon.ts"],"names":[],"mappings":"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"}
|
package/dist/engine-types.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export interface VariantSize {
|
|
|
15
15
|
completeVariantName: CompleteVariantName;
|
|
16
16
|
}
|
|
17
17
|
export interface NewVariantImage extends VariantSize {
|
|
18
|
+
resourceVersion: string;
|
|
19
|
+
slug?: string;
|
|
18
20
|
mediaType: string;
|
|
19
21
|
}
|
|
20
22
|
export interface NewImageProps {
|
|
@@ -22,7 +24,8 @@ export interface NewImageProps {
|
|
|
22
24
|
variantName: string;
|
|
23
25
|
autoCrop?: boolean;
|
|
24
26
|
mediaType?: string;
|
|
25
|
-
|
|
27
|
+
dependsOnUsedKey: string;
|
|
28
|
+
slug?: string;
|
|
26
29
|
}
|
|
27
30
|
export interface ImageRef {
|
|
28
31
|
imageUid: string;
|
|
@@ -33,6 +36,8 @@ export interface ImageRef {
|
|
|
33
36
|
avgHeight?: number;
|
|
34
37
|
}
|
|
35
38
|
export interface ImageVariantWithBinary {
|
|
39
|
+
resourceVersion: string;
|
|
40
|
+
slug?: string;
|
|
36
41
|
mediaType: string;
|
|
37
42
|
width: number;
|
|
38
43
|
height: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ImageCompressionQualityPolicy } from "@paroicms/anywhere-lib";
|
|
2
|
-
import type
|
|
2
|
+
import { type AppLog } from "@paroicms/server-lib";
|
|
3
3
|
import type { CompleteVariantName, GetOriginalImage, ImageRef, ImageVariantStorage, ImageVariantWithBinary, NewImageProps, NewVariantImage, VariantName } from "./engine-types";
|
|
4
4
|
import { type VariantEngineContext } from "./internal/engine-context";
|
|
5
5
|
export interface CreateImageCacheEngineOptions {
|
|
@@ -21,15 +21,16 @@ export declare class ImageCacheEngine {
|
|
|
21
21
|
imageUid: string;
|
|
22
22
|
variantName: CompleteVariantName;
|
|
23
23
|
}): Promise<ImageVariantWithBinary | undefined>;
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
resetUsedKey(options: {
|
|
25
|
+
usedKey: string;
|
|
26
26
|
}): Promise<void>;
|
|
27
27
|
makeImageAvailable(params: NewImageProps): NewVariantImage;
|
|
28
28
|
getOrCreateImageWithBinary(params: NewImageProps): Promise<ImageVariantWithBinary | undefined>;
|
|
29
29
|
conditionallyCreateImageVariantWithBinary(media: ImageRef, options: {
|
|
30
30
|
authorisedVariantNames: VariantName[];
|
|
31
31
|
variantName: CompleteVariantName;
|
|
32
|
-
|
|
32
|
+
dependsOnUsedKey: string;
|
|
33
|
+
slug?: string;
|
|
33
34
|
}): Promise<ImageVariantWithBinary | undefined>;
|
|
34
35
|
invalidate(options: {
|
|
35
36
|
imageUid: string;
|
|
@@ -37,10 +38,10 @@ export declare class ImageCacheEngine {
|
|
|
37
38
|
} | {
|
|
38
39
|
imageUids: string[];
|
|
39
40
|
} | {
|
|
40
|
-
|
|
41
|
+
usedKeys: string[];
|
|
41
42
|
}): Promise<void>;
|
|
42
43
|
/**
|
|
43
|
-
* Delete the images that have no
|
|
44
|
+
* Delete the images that have no usedKey and that have not been used recently.
|
|
44
45
|
*/
|
|
45
46
|
cleanUnusedValues(): Promise<void>;
|
|
46
47
|
clearCache(): Promise<void>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ImageCacheEngine = exports.createImageCacheEngine = void 0;
|
|
4
4
|
const async_lib_1 = require("@paroi/async-lib");
|
|
5
|
+
const server_lib_1 = require("@paroicms/server-lib");
|
|
5
6
|
const queries_1 = require("./database/queries");
|
|
6
7
|
const compute_variant_size_1 = require("./internal/compute-variant-size");
|
|
7
8
|
const engine_context_1 = require("./internal/engine-context");
|
|
@@ -29,14 +30,15 @@ class ImageCacheEngine {
|
|
|
29
30
|
});
|
|
30
31
|
return found ? found.variant : undefined;
|
|
31
32
|
}
|
|
32
|
-
async
|
|
33
|
-
await (0, queries_1.
|
|
33
|
+
async resetUsedKey(options) {
|
|
34
|
+
await (0, queries_1.markUsedKeyAsUnused)(this.#context, options);
|
|
34
35
|
}
|
|
35
36
|
makeImageAvailable(params) {
|
|
36
37
|
this.#checkStatus();
|
|
37
38
|
const imageUid = params.imageRef.imageUid;
|
|
38
39
|
const { width, height, completeVariantName } = (0, compute_variant_size_1.computeVariantSize)(params);
|
|
39
40
|
const taskKey = `${imageUid}:${completeVariantName}`;
|
|
41
|
+
const resourceVersion = (0, server_lib_1.generateResourceVersion)();
|
|
40
42
|
if (!this.#context.pendingTasks.has(taskKey)) {
|
|
41
43
|
this.#context.queue.push({
|
|
42
44
|
taskKey,
|
|
@@ -48,7 +50,9 @@ class ImageCacheEngine {
|
|
|
48
50
|
},
|
|
49
51
|
mediaType: params.imageRef.mediaType,
|
|
50
52
|
changeMediaTypeTo: params.mediaType,
|
|
51
|
-
|
|
53
|
+
dependsOnUsedKey: params.dependsOnUsedKey,
|
|
54
|
+
resourceVersion,
|
|
55
|
+
slug: params.slug,
|
|
52
56
|
});
|
|
53
57
|
this.#context.pendingTasks.set(taskKey, (0, async_lib_1.promiseToHandle)());
|
|
54
58
|
this.#startQueue();
|
|
@@ -58,6 +62,8 @@ class ImageCacheEngine {
|
|
|
58
62
|
height,
|
|
59
63
|
completeVariantName,
|
|
60
64
|
mediaType: params.mediaType ?? params.imageRef.mediaType,
|
|
65
|
+
resourceVersion,
|
|
66
|
+
slug: params.slug,
|
|
61
67
|
};
|
|
62
68
|
}
|
|
63
69
|
async getOrCreateImageWithBinary(params) {
|
|
@@ -77,7 +83,8 @@ class ImageCacheEngine {
|
|
|
77
83
|
autoCrop: false,
|
|
78
84
|
variantName: authorized.completeVariantName,
|
|
79
85
|
imageRef: media,
|
|
80
|
-
|
|
86
|
+
dependsOnUsedKey: options.dependsOnUsedKey,
|
|
87
|
+
slug: options.slug,
|
|
81
88
|
});
|
|
82
89
|
if (available.completeVariantName !== authorized.completeVariantName) {
|
|
83
90
|
throw new Error(`mismatch variants '${available.completeVariantName}' and '${authorized.completeVariantName}'`);
|
|
@@ -89,7 +96,7 @@ class ImageCacheEngine {
|
|
|
89
96
|
}
|
|
90
97
|
async invalidate(options) {
|
|
91
98
|
this.#checkStatus();
|
|
92
|
-
if ("
|
|
99
|
+
if ("usedKeys" in options) {
|
|
93
100
|
await (0, queries_1.deleteVariantsByDependencies)(this.#context.cn, options);
|
|
94
101
|
}
|
|
95
102
|
else {
|
|
@@ -97,7 +104,7 @@ class ImageCacheEngine {
|
|
|
97
104
|
}
|
|
98
105
|
}
|
|
99
106
|
/**
|
|
100
|
-
* Delete the images that have no
|
|
107
|
+
* Delete the images that have no usedKey and that have not been used recently.
|
|
101
108
|
*/
|
|
102
109
|
async cleanUnusedValues() {
|
|
103
110
|
this.#checkStatus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-cache-engine.js","sourceRoot":"","sources":["../src/image-cache-engine.ts"],"names":[],"mappings":";;;AAAA,gDAAmD;
|
|
1
|
+
{"version":3,"file":"image-cache-engine.js","sourceRoot":"","sources":["../src/image-cache-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { CompleteVariantName } from "../engine-types";
|
|
2
2
|
export interface TaskData {
|
|
3
3
|
taskKey: TaskKey;
|
|
4
|
+
resourceVersion: string;
|
|
5
|
+
imageUid: string;
|
|
4
6
|
variantName: CompleteVariantName;
|
|
5
7
|
imageSize: ImageSize;
|
|
6
|
-
imageUid: string;
|
|
7
8
|
mediaType: string;
|
|
8
9
|
changeMediaTypeTo?: string;
|
|
9
|
-
|
|
10
|
+
dependsOnUsedKey: string;
|
|
11
|
+
slug?: string;
|
|
10
12
|
}
|
|
11
13
|
export interface ImageSize {
|
|
12
14
|
width: number;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { ImageCompressionQualityPolicy } from "@paroicms/anywhere-lib";
|
|
3
3
|
import type { ImageVariantWithBinary } from "../engine-types";
|
|
4
4
|
import type { ImageSize } from "./internal.types";
|
|
5
|
-
export type UnsavedImageVariantWithBinary = Omit<ImageVariantWithBinary, "lastModified">;
|
|
5
|
+
export type UnsavedImageVariantWithBinary = Omit<ImageVariantWithBinary, "lastModified" | "resourceVersion" | "slug">;
|
|
6
6
|
export declare function resizeImage(options: {
|
|
7
7
|
binaryFile: Buffer;
|
|
8
8
|
imageSize: ImageSize;
|
package/dist/internal/resizer.js
CHANGED
|
@@ -24,7 +24,7 @@ async function resizeImage(options) {
|
|
|
24
24
|
return {
|
|
25
25
|
width: info.width,
|
|
26
26
|
height: info.height,
|
|
27
|
-
weightB:
|
|
27
|
+
weightB: data.byteLength,
|
|
28
28
|
mediaType: convertSharpFormatToMediaType(info.format),
|
|
29
29
|
binaryFile: data,
|
|
30
30
|
};
|
|
@@ -39,7 +39,7 @@ async function resizeIcoImage(options) {
|
|
|
39
39
|
return {
|
|
40
40
|
width: info.width,
|
|
41
41
|
height: info.height,
|
|
42
|
-
weightB:
|
|
42
|
+
weightB: binaryFile.byteLength,
|
|
43
43
|
mediaType: "image/x-icon",
|
|
44
44
|
binaryFile,
|
|
45
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resizer.js","sourceRoot":"","sources":["../../src/internal/resizer.ts"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAC1B,4CAA8E;AAE9E,oEAAsD;AAEtD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"resizer.js","sourceRoot":"","sources":["../../src/internal/resizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,9 +31,9 @@ async function excecuteTask(task, ctx) {
|
|
|
31
31
|
variantName: task.variantName,
|
|
32
32
|
});
|
|
33
33
|
if (found) {
|
|
34
|
-
await (0, queries_1.
|
|
34
|
+
await (0, queries_1.markOneUsedKeyAsUsed)(ctx, {
|
|
35
35
|
imageCacheId: found.id,
|
|
36
|
-
|
|
36
|
+
usedKey: task.dependsOnUsedKey,
|
|
37
37
|
});
|
|
38
38
|
return found.variant;
|
|
39
39
|
}
|
|
@@ -49,14 +49,21 @@ async function excecuteTask(task, ctx) {
|
|
|
49
49
|
qualityPolicy: ctx.qualityPolicy,
|
|
50
50
|
});
|
|
51
51
|
const { lastModified } = await (0, queries_1.insertIntoImageVariant)(ctx.cn, {
|
|
52
|
+
resourceVersion: task.resourceVersion,
|
|
52
53
|
imageUid: task.imageUid,
|
|
54
|
+
slug: task.slug,
|
|
53
55
|
mediaType: result.mediaType,
|
|
54
56
|
variantName: task.variantName,
|
|
55
57
|
width: result.width,
|
|
56
58
|
height: result.height,
|
|
57
59
|
weightB: result.weightB,
|
|
58
60
|
binaryFile: result.binaryFile,
|
|
59
|
-
}, task.
|
|
60
|
-
return {
|
|
61
|
+
}, task.dependsOnUsedKey);
|
|
62
|
+
return {
|
|
63
|
+
...result,
|
|
64
|
+
lastModified,
|
|
65
|
+
resourceVersion: task.resourceVersion,
|
|
66
|
+
slug: task.slug,
|
|
67
|
+
};
|
|
61
68
|
}
|
|
62
69
|
//# sourceMappingURL=task-processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-processor.js","sourceRoot":"","sources":["../../src/internal/task-processor.ts"],"names":[],"mappings":";;;AAAA,iDAI6B;AAI7B,uCAAwC;AAEjC,KAAK,UAAU,iBAAiB,CAAC,OAA6B;IACnE,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,MAAM;QAEjB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEjD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+BAA+B,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,WAAW,IAAI,EACvE,KAAK,EACL,IAAI,CACL,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AA3BD,8CA2BC;AAED,KAAK,UAAU,YAAY,CACzB,IAAc,EACd,GAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,IAAA,qCAA2B,EAAC,GAAG,EAAE;QACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;IACH,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAA
|
|
1
|
+
{"version":3,"file":"task-processor.js","sourceRoot":"","sources":["../../src/internal/task-processor.ts"],"names":[],"mappings":";;;AAAA,iDAI6B;AAI7B,uCAAwC;AAEjC,KAAK,UAAU,iBAAiB,CAAC,OAA6B;IACnE,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,MAAM;QAEjB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEjD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+BAA+B,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,WAAW,IAAI,EACvE,KAAK,EACL,IAAI,CACL,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AA3BD,8CA2BC;AAED,KAAK,UAAU,YAAY,CACzB,IAAc,EACd,GAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,IAAA,qCAA2B,EAAC,GAAG,EAAE;QACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;IACH,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAA,8BAAoB,EAAC,GAAG,EAAE;YAC9B,YAAY,EAAE,KAAK,CAAC,EAAE;YACtB,OAAO,EAAE,IAAI,CAAC,gBAAgB;SAC/B,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAW,EAAC;QAC/B,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,iBAAiB;YAC9B,CAAC,CAAC;gBACE,SAAS,EAAE,IAAI,CAAC,iBAAiB;aAClC;YACH,CAAC,CAAC,SAAS;QACb,aAAa,EAAE,GAAG,CAAC,aAAa;KACjC,CAAC,CAAC;IAEH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,gCAAsB,EACnD,GAAG,CAAC,EAAE,EACN;QACE,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,EACD,IAAI,CAAC,gBAAgB,CACtB,CAAC;IAEF,OAAO;QACL,GAAG,MAAM;QACT,YAAY;QACZ,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -66,16 +66,10 @@ async function convertToWebp({ input, qualityPolicy, areaLimitPx, lossless, }) {
|
|
|
66
66
|
quality,
|
|
67
67
|
})
|
|
68
68
|
.toBuffer({ resolveWithObject: true }));
|
|
69
|
-
// we keep it here for the moment
|
|
70
|
-
// console.log(
|
|
71
|
-
// `....convertToWebp: ${input.width}x${input.height} => ${info.width}x${info.height}, ${
|
|
72
|
-
// info.size / 1000
|
|
73
|
-
// }KB`,
|
|
74
|
-
// );
|
|
75
69
|
return {
|
|
76
70
|
width: info.width,
|
|
77
71
|
height: info.height,
|
|
78
|
-
weightB:
|
|
72
|
+
weightB: data.byteLength,
|
|
79
73
|
mediaType: "image/webp",
|
|
80
74
|
lossless,
|
|
81
75
|
binaryFile: data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"original-images-processing.js","sourceRoot":"","sources":["../src/original-images-processing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"original-images-processing.js","sourceRoot":"","sources":["../src/original-images-processing.ts"],"names":[],"mappings":"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"}
|
package/dist/public-helpers.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
import type { VariantName } from "./engine-types";
|
|
1
|
+
import type { CompleteVariantName, VariantName } from "./engine-types";
|
|
2
2
|
export declare function isVariantName(variantName: string): variantName is VariantName;
|
|
3
|
+
export declare function isCompleteVariantName(variantName: string): variantName is CompleteVariantName;
|
|
4
|
+
export declare function generateImageSlug(fromName?: string): string | undefined;
|
package/dist/public-helpers.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isVariantName = void 0;
|
|
3
|
+
exports.generateImageSlug = exports.isCompleteVariantName = exports.isVariantName = void 0;
|
|
4
|
+
const anywhere_lib_1 = require("@paroicms/anywhere-lib");
|
|
4
5
|
function isVariantName(variantName) {
|
|
5
|
-
return /^
|
|
6
|
+
return /^[0-9]+x|x[0-9]+|x[0-9]+x|[0-9]+x[0-9]+$/.test(variantName);
|
|
6
7
|
}
|
|
7
8
|
exports.isVariantName = isVariantName;
|
|
9
|
+
function isCompleteVariantName(variantName) {
|
|
10
|
+
return /^[0-9]+x[0-9]+$/.test(variantName);
|
|
11
|
+
}
|
|
12
|
+
exports.isCompleteVariantName = isCompleteVariantName;
|
|
13
|
+
function generateImageSlug(fromName) {
|
|
14
|
+
if (!fromName)
|
|
15
|
+
return;
|
|
16
|
+
return (0, anywhere_lib_1.generateSlug)(fromName).substring(0, 12).replace(/-$/g, "");
|
|
17
|
+
}
|
|
18
|
+
exports.generateImageSlug = generateImageSlug;
|
|
8
19
|
//# sourceMappingURL=public-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-helpers.js","sourceRoot":"","sources":["../src/public-helpers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"public-helpers.js","sourceRoot":"","sources":["../src/public-helpers.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAGtD,SAAgB,aAAa,CAAC,WAAmB;IAC/C,OAAO,0CAA0C,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtE,CAAC;AAFD,sCAEC;AAED,SAAgB,qBAAqB,CAAC,WAAmB;IACvD,OAAO,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAFD,sDAEC;AAED,SAAgB,iBAAiB,CAAC,QAAiB;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,OAAO,IAAA,2BAAY,EAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAHD,8CAGC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paroicms/server-image-cache-engine",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "The image variant engine that we use at Paroi.",
|
|
5
5
|
"author": "Paroi Team",
|
|
6
6
|
"main": "dist/api.js",
|
|
@@ -26,17 +26,17 @@
|
|
|
26
26
|
"eslint": "eslint ."
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@types/node": "~20.
|
|
29
|
+
"@types/node": "~20.12.8",
|
|
30
30
|
"rimraf": "~5.0.5",
|
|
31
|
-
"typescript": "~5.
|
|
31
|
+
"typescript": "~5.4.5"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@paroi/async-lib": "~0.1.2",
|
|
35
35
|
"@paroi/data-formatters-lib": "~0.1.2",
|
|
36
|
-
"@paroicms/server-lib": "1.
|
|
37
|
-
"@paroicms/anywhere-lib": "1.
|
|
36
|
+
"@paroicms/server-lib": "1.2.0",
|
|
37
|
+
"@paroicms/anywhere-lib": "1.4.0",
|
|
38
38
|
"ico-endec": "~0.1.6",
|
|
39
|
-
"sharp": "~0.33.
|
|
39
|
+
"sharp": "~0.33.3"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"typeorm": "0.3"
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.PaImageCacheDependencyEntity = void 0;
|
|
13
|
-
const typeorm_1 = require("typeorm");
|
|
14
|
-
let PaImageCacheDependencyEntity = class PaImageCacheDependencyEntity {
|
|
15
|
-
cacheId;
|
|
16
|
-
depKey;
|
|
17
|
-
};
|
|
18
|
-
exports.PaImageCacheDependencyEntity = PaImageCacheDependencyEntity;
|
|
19
|
-
__decorate([
|
|
20
|
-
(0, typeorm_1.Column)({ type: "integer", primary: true }),
|
|
21
|
-
__metadata("design:type", String)
|
|
22
|
-
], PaImageCacheDependencyEntity.prototype, "cacheId", void 0);
|
|
23
|
-
__decorate([
|
|
24
|
-
(0, typeorm_1.Column)({ primary: true }),
|
|
25
|
-
__metadata("design:type", String)
|
|
26
|
-
], PaImageCacheDependencyEntity.prototype, "depKey", void 0);
|
|
27
|
-
exports.PaImageCacheDependencyEntity = PaImageCacheDependencyEntity = __decorate([
|
|
28
|
-
(0, typeorm_1.Entity)("PaImageCacheDependency")
|
|
29
|
-
], PaImageCacheDependencyEntity);
|
|
30
|
-
//# sourceMappingURL=PaImageCacheDependency.entity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaImageCacheDependency.entity.js","sourceRoot":"","sources":["../../src/database/PaImageCacheDependency.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAyC;AAGlC,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAEvC,OAAO,CAAU;IAGjB,MAAM,CAAU;CACjB,CAAA;AANY,oEAA4B;AAEvC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;6DAC1B;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4DACV;uCALL,4BAA4B;IADxC,IAAA,gBAAM,EAAC,wBAAwB,CAAC;GACpB,4BAA4B,CAMxC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PaImageCacheKey.entity.js","sourceRoot":"","sources":["../../src/database/PaImageCacheKey.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAyC;AAGlC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAEhC,YAAY,CAAU;IAGtB,QAAQ,CAAU;IAGlB,IAAI,CAAW;CAChB,CAAA;AATY,sDAAqB;AAEhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;2DACrB;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;uDACR;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;mDAC5B;gCARJ,qBAAqB;IADjC,IAAA,gBAAM,EAAC,iBAAiB,CAAC;GACb,qBAAqB,CASjC"}
|