@paroicms/server-image-cache-engine 1.22.5 → 1.23.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.
Files changed (60) hide show
  1. package/ddl/image-cache.ddl.sql +16 -15
  2. package/dist/compute-variant-size.d.ts +4 -9
  3. package/dist/compute-variant-size.js +28 -38
  4. package/dist/compute-variant-size.js.map +1 -1
  5. package/dist/constants.d.ts +3 -0
  6. package/dist/constants.js +8 -0
  7. package/dist/constants.js.map +1 -1
  8. package/dist/db-init/ddl-migration.d.ts +1 -1
  9. package/dist/db-init/ddl-migration.js +1 -1
  10. package/dist/db-init/ddl-migration.js.map +1 -1
  11. package/dist/default-bo-favicon.js +2 -2
  12. package/dist/default-bo-favicon.js.map +1 -1
  13. package/dist/engine-types.d.ts +42 -19
  14. package/dist/image-cache-engine.d.ts +42 -36
  15. package/dist/image-cache-engine.js +107 -138
  16. package/dist/image-cache-engine.js.map +1 -1
  17. package/dist/image-utils.d.ts +6 -0
  18. package/dist/image-utils.js +12 -0
  19. package/dist/image-utils.js.map +1 -0
  20. package/dist/{api.d.ts → index.d.ts} +2 -1
  21. package/dist/{api.js → index.js} +3 -2
  22. package/dist/index.js.map +1 -0
  23. package/dist/internal/engine-context.d.ts +12 -6
  24. package/dist/internal/engine-context.js +1 -2
  25. package/dist/internal/engine-context.js.map +1 -1
  26. package/dist/internal/internal.types.d.ts +36 -16
  27. package/dist/internal/queries.d.ts +64 -38
  28. package/dist/internal/queries.js +246 -106
  29. package/dist/internal/queries.js.map +1 -1
  30. package/dist/internal/resizer.d.ts +6 -6
  31. package/dist/internal/resizer.js +9 -9
  32. package/dist/internal/resizer.js.map +1 -1
  33. package/dist/internal/task-processor.js +37 -34
  34. package/dist/internal/task-processor.js.map +1 -1
  35. package/dist/internal/utils.d.ts +16 -0
  36. package/dist/internal/utils.js +34 -0
  37. package/dist/internal/utils.js.map +1 -0
  38. package/dist/original-images-processing.d.ts +2 -2
  39. package/dist/original-images-processing.js +27 -14
  40. package/dist/original-images-processing.js.map +1 -1
  41. package/dist/owner-transaction/make-t-image-available.d.ts +7 -0
  42. package/dist/owner-transaction/make-t-image-available.js +122 -0
  43. package/dist/owner-transaction/make-t-image-available.js.map +1 -0
  44. package/dist/owner-transaction/owner-batch.d.ts +10 -0
  45. package/dist/owner-transaction/owner-batch.js +85 -0
  46. package/dist/owner-transaction/owner-batch.js.map +1 -0
  47. package/dist/owner-transaction/owner-image-manager.d.ts +11 -0
  48. package/dist/owner-transaction/owner-image-manager.js +44 -0
  49. package/dist/owner-transaction/owner-image-manager.js.map +1 -0
  50. package/dist/owner-transaction/owner-transaction-types.d.ts +12 -0
  51. package/dist/owner-transaction/owner-transaction-types.js +2 -0
  52. package/dist/owner-transaction/owner-transaction-types.js.map +1 -0
  53. package/dist/owner-transaction/owner-transaction.d.ts +13 -0
  54. package/dist/owner-transaction/owner-transaction.js +60 -0
  55. package/dist/owner-transaction/owner-transaction.js.map +1 -0
  56. package/dist/owner-transaction/owner-utils.d.ts +1 -0
  57. package/dist/owner-transaction/owner-utils.js +10 -0
  58. package/dist/owner-transaction/owner-utils.js.map +1 -0
  59. package/package.json +8 -8
  60. package/dist/api.js.map +0 -1
@@ -0,0 +1,60 @@
1
+ import { fetchStoredCacheItems } from "../internal/queries.js";
2
+ import { makeTaskKey, toTransactionCacheItem } from "../internal/utils.js";
3
+ import { makeTransactionImageAvailable } from "./make-t-image-available.js";
4
+ import { createOwnerImageManager } from "./owner-image-manager.js";
5
+ export function createOwnerTransaction(options) {
6
+ const { engine: { context: engineContext, startQueue, addPending }, ownerHandle, isHandleReusable, canBeRetrievedByOwner, } = options;
7
+ let opened = true;
8
+ let initialFetchDone = false;
9
+ const otContext = {
10
+ engineContext,
11
+ startQueue,
12
+ ownerHandle,
13
+ isHandleReusable,
14
+ canBeRetrievedByOwner,
15
+ ownerImageManager: createOwnerImageManager({
16
+ ownerHandle,
17
+ isHandleReusable,
18
+ engineContext,
19
+ }),
20
+ localCache: new Map(),
21
+ };
22
+ const removePending = addPending(async () => {
23
+ if (!opened)
24
+ return;
25
+ opened = false;
26
+ await otContext.ownerImageManager.flush();
27
+ });
28
+ return {
29
+ async makeImageAvailable(inputs, options = {}) {
30
+ checkStatus();
31
+ if (!initialFetchDone) {
32
+ initialFetchDone = true;
33
+ if (options.optimizeForBatch) {
34
+ const fetched = await fetchStoredCacheItems(engineContext, ownerHandle);
35
+ for (const item of fetched) {
36
+ const taskKey = makeTaskKey(item.variant);
37
+ otContext.localCache.set(taskKey, toTransactionCacheItem(item));
38
+ }
39
+ }
40
+ }
41
+ return await makeTransactionImageAvailable(otContext, inputs, options);
42
+ },
43
+ async flush() {
44
+ checkStatus();
45
+ await otContext.ownerImageManager.flush();
46
+ },
47
+ async close() {
48
+ checkStatus();
49
+ removePending();
50
+ opened = false;
51
+ await otContext.ownerImageManager.flush();
52
+ },
53
+ };
54
+ function checkStatus() {
55
+ if (!opened)
56
+ throw new Error(`ImageCacheUseTransaction "${ownerHandle}" is closed`);
57
+ options.engine.checkStatus();
58
+ }
59
+ }
60
+ //# sourceMappingURL=owner-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-transaction.js","sourceRoot":"","sources":["../../src/owner-transaction/owner-transaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,MAAM,UAAU,sBAAsB,CAAC,OAUtC;IACC,MAAM,EACJ,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,EAC1D,WAAW,EACX,gBAAgB,EAChB,qBAAqB,GACtB,GAAG,OAAO,CAAC;IAEZ,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,MAAM,SAAS,GAA4B;QACzC,aAAa;QACb,UAAU;QACV,WAAW;QACX,gBAAgB;QAChB,qBAAqB;QACrB,iBAAiB,EAAE,uBAAuB,CAAC;YACzC,WAAW;YACX,gBAAgB;YAChB,aAAa;SACd,CAAC;QACF,UAAU,EAAE,IAAI,GAAG,EAAE;KACtB,CAAC;IAEF,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,GAAG,KAAK,CAAC;QACf,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE;YAC3C,WAAW,EAAE,CAAC;YAEd,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,gBAAgB,GAAG,IAAI,CAAC;gBACxB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBAC7B,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;oBACxE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;wBAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC1C,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,MAAM,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QAED,KAAK,CAAC,KAAK;YACT,WAAW,EAAE,CAAC;YACd,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,KAAK;YACT,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;YAChB,MAAM,GAAG,KAAK,CAAC;YACf,MAAM,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC5C,CAAC;KACF,CAAC;IAEF,SAAS,WAAW;QAClB,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,aAAa,CAAC,CAAC;QACpF,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function promiseToHandleSafely<T>(): import("@paroi/async-lib").PromiseToHandle<T>;
@@ -0,0 +1,10 @@
1
+ import { promiseToHandle } from "@paroi/async-lib";
2
+ export function promiseToHandleSafely() {
3
+ const result = promiseToHandle();
4
+ result.promise.catch(() => {
5
+ // No-op: errors are logged in the task processor, and the promise can be used by the caller but
6
+ // it's optional.
7
+ });
8
+ return result;
9
+ }
10
+ //# sourceMappingURL=owner-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-utils.js","sourceRoot":"","sources":["../../src/owner-transaction/owner-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,eAAe,EAAK,CAAC;IACpC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;QACxB,gGAAgG;QAChG,iBAAiB;IACnB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/server-image-cache-engine",
3
- "version": "1.22.5",
3
+ "version": "1.23.0",
4
4
  "description": "The image variant engine that we use at Paroi.",
5
5
  "author": "Paroi Team",
6
6
  "keywords": [
@@ -17,14 +17,14 @@
17
17
  },
18
18
  "license": "MIT",
19
19
  "type": "module",
20
- "main": "dist/api.js",
21
- "typings": "dist/api.d.ts",
20
+ "main": "dist/index.js",
21
+ "typings": "dist/index.d.ts",
22
22
  "scripts": {
23
23
  "build": "tsc",
24
24
  "clear": "rimraf dist/*",
25
25
  "dev": "tsc --watch --preserveWatchOutput",
26
26
  "test": "vitest",
27
- "test:run": "vitest run"
27
+ "test:once": "vitest run"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "~22.14.1",
@@ -35,10 +35,10 @@
35
35
  "dependencies": {
36
36
  "@paroi/async-lib": "~0.3.1",
37
37
  "@paroi/data-formatters-lib": "~0.4.0",
38
- "@paroicms/internal-anywhere-lib": "1.28.0",
39
- "@paroicms/internal-server-lib": "1.15.5",
40
- "@paroicms/public-anywhere-lib": "0.22.0",
41
- "@paroicms/public-server-lib": "0.33.0",
38
+ "@paroicms/internal-anywhere-lib": "1.29.0",
39
+ "@paroicms/internal-server-lib": "1.16.0",
40
+ "@paroicms/public-anywhere-lib": "0.23.0",
41
+ "@paroicms/public-server-lib": "0.34.0",
42
42
  "ico-endec": "~0.1.6",
43
43
  "sharp": "~0.33.4"
44
44
  },
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC"}