@acmekit/caching 2.13.38 → 2.13.39

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAIhB,OAAO,oBAAoB,MAAM,yBAAyB,CAAA;;;;AAE1D,wBAGE;AAGF,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAIhB,OAAO,oBAAoB,MAAM,yBAAyB,CAAA;;;;AAW1D,wBA8BE;AAGF,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -5,11 +5,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  require("./types");
7
7
  const utils_1 = require("@acmekit/framework/utils");
8
+ const modules_sdk_1 = require("@acmekit/framework/modules-sdk");
8
9
  const hash_1 = __importDefault(require("./loaders/hash"));
9
- const providers_1 = __importDefault(require("./loaders/providers"));
10
10
  const cache_module_1 = __importDefault(require("./services/cache-module"));
11
+ const memory_cache_1 = require("./providers/memory-cache");
12
+ const strategy_1 = require("./utils/strategy");
13
+ const types_1 = require("./types");
14
+ const awilix_1 = require("@acmekit/framework/awilix");
11
15
  exports.default = (0, utils_1.Module)(utils_1.Modules.CACHING, {
12
16
  service: cache_module_1.default,
13
- loaders: [hash_1.default, providers_1.default],
17
+ loaders: [
18
+ hash_1.default,
19
+ (0, modules_sdk_1.createProvidersLoader)({
20
+ prefix: types_1.CachingProviderRegistrationPrefix,
21
+ identifiersKey: types_1.CachingIdentifiersRegistrationName,
22
+ moduleName: "caching",
23
+ defaults: [
24
+ {
25
+ service: memory_cache_1.MemoryCachingProvider,
26
+ id: memory_cache_1.MemoryCachingProvider.identifier,
27
+ options: (opts) => {
28
+ const inMemory = opts?.in_memory ?? {};
29
+ const { enable: _enable, ...rest } = inMemory;
30
+ return rest;
31
+ },
32
+ condition: (opts) => opts?.in_memory?.enable ===
33
+ true,
34
+ },
35
+ ],
36
+ defaultProviderKey: types_1.CachingDefaultProvider,
37
+ requireDefault: true,
38
+ onRegistered: async ({ container }) => {
39
+ container.register("strategy", (0, awilix_1.asValue)(strategy_1.DefaultCacheStrategy));
40
+ },
41
+ }),
42
+ ],
14
43
  });
15
44
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mBAAgB;AAChB,oDAA0D;AAC1D,0DAAoD;AACpD,oEAA8D;AAC9D,2EAA0D;AAE1D,kBAAe,IAAA,cAAM,EAAC,eAAO,CAAC,OAAO,EAAE;IACrC,OAAO,EAAE,sBAAoB;IAC7B,OAAO,EAAE,CAAC,cAAQ,EAAE,mBAAa,CAAC;CACnC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,mBAAgB;AAChB,oDAA0D;AAC1D,gEAAsE;AACtE,0DAAoD;AACpD,2EAA0D;AAC1D,2DAAgE;AAChE,+CAAuD;AACvD,mCAKgB;AAChB,sDAAmD;AAEnD,kBAAe,IAAA,cAAM,EAAC,eAAO,CAAC,OAAO,EAAE;IACrC,OAAO,EAAE,sBAAoB;IAC7B,OAAO,EAAE;QACP,cAAQ;QACR,IAAA,mCAAqB,EAAC;YACpB,MAAM,EAAE,yCAAiC;YACzC,cAAc,EAAE,0CAAkC;YAClD,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE;gBACR;oBACE,OAAO,EAAE,oCAAqB;oBAC9B,EAAE,EAAE,oCAAqB,CAAC,UAAU;oBACpC,OAAO,EAAE,CAAC,IAA6B,EAAE,EAAE;wBACzC,MAAM,QAAQ,GACX,IAAI,EAAE,SAA+C,IAAI,EAAE,CAAA;wBAC9D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAA;wBAC7C,OAAO,IAA+B,CAAA;oBACxC,CAAC;oBACD,SAAS,EAAE,CAAC,IAA6B,EAAE,EAAE,CAC1C,IAAI,EAAE,SAA+C,EAAE,MAAM;wBAC9D,IAAI;iBACP;aACF;YACD,kBAAkB,EAAE,8BAAsB;YAC1C,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;gBACpC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAA,gBAAO,EAAC,+BAAoB,CAAC,CAAC,CAAA;YAC/D,CAAC;SACF,CAAC;KACH;CACF,CAAC,CAAA"}
@@ -1,12 +1,9 @@
1
- import { Constructor, ICachingProviderService, Logger } from "@acmekit/framework/types";
2
- type InjectedDependencies = {
3
- [key: `cp_${string}`]: ICachingProviderService;
4
- logger?: Logger;
1
+ import { ICachingProviderService } from "@acmekit/framework/types";
2
+ declare const CacheProviderService_base: new (container: Record<string, unknown>) => {
3
+ readonly __container__: Record<string, unknown>;
4
+ readonly providers: import("@acmekit/framework/utils").ProviderRegistry<ICachingProviderService>;
5
5
  };
6
- export default class CacheProviderService {
7
- #private;
8
- constructor(container: InjectedDependencies);
9
- static getRegistrationIdentifier(providerClass: Constructor<ICachingProviderService>): string;
6
+ export default class CacheProviderService extends CacheProviderService_base {
10
7
  retrieveProvider(providerId: string): ICachingProviderService;
11
8
  }
12
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"cache-provider.d.ts","sourceRoot":"","sources":["../../src/services/cache-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,MAAM,EACP,MAAM,0BAA0B,CAAA;AAIjC,KAAK,oBAAoB,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,GAAG,uBAAuB,CAAA;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,oBAAoB;;gBAI3B,SAAS,EAAE,oBAAoB;IAO3C,MAAM,CAAC,yBAAyB,CAC9B,aAAa,EAAE,WAAW,CAAC,uBAAuB,CAAC;IAW9C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,uBAAuB;CAuBrE"}
1
+ {"version":3,"file":"cache-provider.d.ts","sourceRoot":"","sources":["../../src/services/cache-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACxB,MAAM,0BAA0B,CAAA;;;;;AAOjC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,yBAIhD;IACO,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,uBAAuB;CAGrE"}
@@ -1,53 +1,15 @@
1
1
  "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
- var _CacheProviderService_container, _CacheProviderService_logger;
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
3
  const utils_1 = require("@acmekit/framework/utils");
16
4
  const types_1 = require("../types");
17
- class CacheProviderService {
18
- constructor(container) {
19
- _CacheProviderService_container.set(this, void 0);
20
- _CacheProviderService_logger.set(this, void 0);
21
- __classPrivateFieldSet(this, _CacheProviderService_container, container, "f");
22
- __classPrivateFieldSet(this, _CacheProviderService_logger, container["logger"]
23
- ? container.logger
24
- : console, "f");
25
- }
26
- static getRegistrationIdentifier(providerClass) {
27
- if (!providerClass.identifier) {
28
- throw new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.INVALID_ARGUMENT, `Trying to register a caching provider without an identifier.`);
29
- }
30
- return `${providerClass.identifier}`;
31
- }
5
+ class CacheProviderService extends (0, utils_1.ProviderService)({
6
+ prefix: types_1.CachingProviderRegistrationPrefix,
7
+ identifiersKey: types_1.CachingIdentifiersRegistrationName,
8
+ moduleName: "caching",
9
+ }) {
32
10
  retrieveProvider(providerId) {
33
- try {
34
- return __classPrivateFieldGet(this, _CacheProviderService_container, "f")[`${types_1.CachingProviderRegistrationPrefix}${providerId}`];
35
- }
36
- catch (err) {
37
- if (err.name === "AwilixResolutionError") {
38
- const errMessage = `
39
- Unable to retrieve the caching provider with id: ${providerId}
40
- Please make sure that the provider is registered in the container and it is configured correctly in your project configuration file.`;
41
- // Log full error for debugging
42
- __classPrivateFieldGet(this, _CacheProviderService_logger, "f").error(`AwilixResolutionError: ${err.message}`, err);
43
- throw new Error(errMessage);
44
- }
45
- const errMessage = `Unable to retrieve the caching provider with id: ${providerId}, the following error occurred: ${err.message}`;
46
- __classPrivateFieldGet(this, _CacheProviderService_logger, "f").error(errMessage);
47
- throw new Error(errMessage);
48
- }
11
+ return this.providers.resolve(providerId);
49
12
  }
50
13
  }
51
- _CacheProviderService_container = new WeakMap(), _CacheProviderService_logger = new WeakMap();
52
14
  exports.default = CacheProviderService;
53
15
  //# sourceMappingURL=cache-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache-provider.js","sourceRoot":"","sources":["../../src/services/cache-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAKA,oDAAuD;AACvD,oCAA4D;AAO5D,MAAqB,oBAAoB;IAIvC,YAAY,SAA+B;QAH3C,kDAAgC;QAChC,+CAAe;QAGb,uBAAA,IAAI,mCAAc,SAAS,MAAA,CAAA;QAC3B,uBAAA,IAAI,gCAAW,SAAS,CAAC,QAAQ,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,MAAM;YAClB,CAAC,CAAE,OAA6B,MAAA,CAAA;IACpC,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,aAAmD;QAEnD,IAAI,CAAE,aAAqB,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,oBAAY,CACpB,oBAAY,CAAC,KAAK,CAAC,gBAAgB,EACnC,8DAA8D,CAC/D,CAAA;QACH,CAAC;QACD,OAAO,GAAI,aAAqB,CAAC,UAAU,EAAE,CAAA;IAC/C,CAAC;IAEM,gBAAgB,CAAC,UAAkB;QACxC,IAAI,CAAC;YACH,OAAO,uBAAA,IAAI,uCAAW,CACpB,GAAG,yCAAiC,GAAG,UAAU,EAAE,CACpD,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG;oDACyB,UAAU;qIACuE,CAAA;gBAE7H,+BAA+B;gBAC/B,uBAAA,IAAI,oCAAQ,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;gBAEhE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;YAC7B,CAAC;YAED,MAAM,UAAU,GAAG,oDAAoD,UAAU,mCAAmC,GAAG,CAAC,OAAO,EAAE,CAAA;YACjI,uBAAA,IAAI,oCAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAE9B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;CACF;;kBA9CoB,oBAAoB"}
1
+ {"version":3,"file":"cache-provider.js","sourceRoot":"","sources":["../../src/services/cache-provider.ts"],"names":[],"mappings":";;AAGA,oDAA0D;AAC1D,oCAGiB;AAEjB,MAAqB,oBAAqB,SAAQ,IAAA,uBAAe,EAA0B;IACzF,MAAM,EAAE,yCAAiC;IACzC,cAAc,EAAE,0CAAkC;IAClD,UAAU,EAAE,SAAS;CACtB,CAAC;IACO,gBAAgB,CAAC,UAAkB;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;CACF;AARD,uCAQC"}
@@ -1 +1 @@
1
- {"root":["../src/index.ts","../src/loaders/hash.ts","../src/loaders/providers.ts","../src/providers/memory-cache.ts","../src/services/cache-module.ts","../src/services/cache-provider.ts","../src/services/index.ts","../src/types/index.ts","../src/utils/parser.ts","../src/utils/strategy.ts","../src/utils/__tests__/parser.test.ts"],"version":"5.9.3"}
1
+ {"root":["../src/index.ts","../src/loaders/hash.ts","../src/providers/memory-cache.ts","../src/services/cache-module.ts","../src/services/cache-provider.ts","../src/services/index.ts","../src/types/index.ts","../src/utils/parser.ts","../src/utils/strategy.ts","../src/utils/__tests__/parser.test.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acmekit/caching",
3
- "version": "2.13.38",
3
+ "version": "2.13.39",
4
4
  "description": "Caching Module for AcmeKit",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
@@ -28,12 +28,12 @@
28
28
  "test:integration": "../../../node_modules/.bin/jest --passWithNoTests --forceExit --testPathPattern=\"integration-tests/__tests__/.*\\.ts\""
29
29
  },
30
30
  "devDependencies": {
31
- "@acmekit/framework": "2.13.38",
32
- "@acmekit/test-utils": "2.13.38",
31
+ "@acmekit/framework": "2.13.39",
32
+ "@acmekit/test-utils": "2.13.39",
33
33
  "awilix": "^8.0.1"
34
34
  },
35
35
  "peerDependencies": {
36
- "@acmekit/framework": "2.13.38",
36
+ "@acmekit/framework": "2.13.39",
37
37
  "awilix": "^8.0.1"
38
38
  },
39
39
  "dependencies": {
@@ -1,5 +0,0 @@
1
- import { LoaderOptions, ModulesSdkTypes } from "@acmekit/framework/types";
2
- import { CachingModuleOptions } from "../types";
3
- declare const _default: ({ container, options, }: LoaderOptions<(ModulesSdkTypes.ModuleServiceInitializeOptions | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions) & CachingModuleOptions>) => Promise<void>;
4
- export default _default;
5
- //# sourceMappingURL=providers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAMzE,OAAO,EAGL,oBAAoB,EAErB,MAAM,QAAQ,CAAA;yBAwBO,yBAGnB,aAAa,CACd,CACI,eAAe,CAAC,8BAA8B,GAC9C,eAAe,CAAC,6CAA6C,CAChE,GACC,oBAAoB,CACvB,KAAG,OAAO,CAAC,IAAI,CAAC;AATjB,wBAqEC"}
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const modules_sdk_1 = require("@acmekit/framework/modules-sdk");
4
- const utils_1 = require("@acmekit/framework/utils");
5
- const _services_1 = require("../services");
6
- const _types_1 = require("../types");
7
- const awilix_1 = require("awilix");
8
- const memory_cache_1 = require("../providers/memory-cache");
9
- const strategy_1 = require("../utils/strategy");
10
- const registrationFn = async (klass, container, { id }) => {
11
- const key = _services_1.CachingProviderService.getRegistrationIdentifier(klass);
12
- if (!id) {
13
- throw new Error(`No "id" provided for provider ${key}`);
14
- }
15
- const regKey = (0, utils_1.getProviderRegistrationKey)({
16
- providerId: id,
17
- providerIdentifier: key,
18
- });
19
- container.register({
20
- [_types_1.CachingProviderRegistrationPrefix + id]: (0, awilix_1.aliasTo)(regKey),
21
- });
22
- container.registerAdd(_types_1.CachingIdentifiersRegistrationName, (0, awilix_1.asValue)(key));
23
- };
24
- exports.default = async ({ container, options, }) => {
25
- container.registerAdd(_types_1.CachingIdentifiersRegistrationName, (0, awilix_1.asValue)(undefined));
26
- const strategy = strategy_1.DefaultCacheStrategy; // Re enable custom strategy another time
27
- container.register("strategy", (0, awilix_1.asValue)(strategy));
28
- const inMemoryOptions = options?.in_memory ?? {};
29
- const { enable: isInMemoryEnabled, ...restInmemoryOptions } = inMemoryOptions;
30
- if (isInMemoryEnabled) {
31
- // MemoryCachingProvider - default provider
32
- container.register({
33
- [_types_1.CachingProviderRegistrationPrefix + memory_cache_1.MemoryCachingProvider.identifier]: (0, awilix_1.asFunction)((cradle) => new memory_cache_1.MemoryCachingProvider(cradle, restInmemoryOptions), {
34
- lifetime: awilix_1.Lifetime.SINGLETON,
35
- }),
36
- });
37
- container.registerAdd(_types_1.CachingIdentifiersRegistrationName, (0, awilix_1.asValue)(memory_cache_1.MemoryCachingProvider.identifier));
38
- container.register(_types_1.CachingDefaultProvider, (0, awilix_1.asValue)(memory_cache_1.MemoryCachingProvider.identifier));
39
- }
40
- // Load other providers
41
- await (0, modules_sdk_1.moduleProviderLoader)({
42
- container,
43
- providers: options?.providers || [],
44
- registerServiceFn: registrationFn,
45
- });
46
- const isSingleProvider = options?.providers?.length === 1;
47
- let hasDefaultProvider = false;
48
- for (const provider of options?.providers || []) {
49
- if (provider.is_default || isSingleProvider) {
50
- hasDefaultProvider = true;
51
- container.register(_types_1.CachingDefaultProvider, (0, awilix_1.asValue)(provider.id));
52
- }
53
- }
54
- const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
55
- if (!hasDefaultProvider) {
56
- if (isInMemoryEnabled) {
57
- logger.warn(`[caching-module]: No default caching provider defined. Using "${container.resolve(_types_1.CachingDefaultProvider)}" as default.`);
58
- }
59
- else {
60
- throw new Error("[caching-module]: No providers have been configured and the built in memory cache has not been enabled.");
61
- }
62
- }
63
- };
64
- //# sourceMappingURL=providers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":"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"}