inray 0.0.2 → 0.0.4
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/LICENSE.md +1 -0
- package/README.md +220 -36
- package/dist/async/abortable.d.ts +2 -2
- package/dist/async/abortable.d.ts.map +1 -1
- package/dist/async/abortable.js.map +1 -1
- package/dist/caching/mod.d.ts +2 -0
- package/dist/caching/mod.d.ts.map +1 -0
- package/dist/caching/mod.js +2 -0
- package/dist/caching/mod.js.map +1 -0
- package/dist/caching/src/cache.d.ts +89 -0
- package/dist/caching/src/cache.d.ts.map +1 -0
- package/dist/caching/src/cache.js +309 -0
- package/dist/caching/src/cache.js.map +1 -0
- package/dist/caching/src/hashing/cache.d.ts +92 -0
- package/dist/caching/src/hashing/cache.d.ts.map +1 -0
- package/dist/caching/src/hashing/cache.js +119 -0
- package/dist/caching/src/hashing/cache.js.map +1 -0
- package/dist/caching/src/hashing/hooks/eventified.d.ts +157 -0
- package/dist/caching/src/hashing/hooks/eventified.d.ts.map +1 -0
- package/dist/caching/src/hashing/hooks/eventified.js +333 -0
- package/dist/caching/src/hashing/hooks/eventified.js.map +1 -0
- package/dist/caching/src/hashing/hooks/index.d.ts +199 -0
- package/dist/caching/src/hashing/hooks/index.d.ts.map +1 -0
- package/dist/caching/src/hashing/hooks/index.js +383 -0
- package/dist/caching/src/hashing/hooks/index.js.map +1 -0
- package/dist/caching/src/hashing/hooks/types.d.ts +217 -0
- package/dist/caching/src/hashing/hooks/types.d.ts.map +1 -0
- package/dist/caching/src/hashing/hooks/types.js +10 -0
- package/dist/caching/src/hashing/hooks/types.js.map +1 -0
- package/dist/caching/src/hashing/index.d.ts +236 -0
- package/dist/caching/src/hashing/index.d.ts.map +1 -0
- package/dist/caching/src/hashing/index.js +447 -0
- package/dist/caching/src/hashing/index.js.map +1 -0
- package/dist/caching/src/hashing/providers/crc.d.ts +15 -0
- package/dist/caching/src/hashing/providers/crc.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/crc.js +49 -0
- package/dist/caching/src/hashing/providers/crc.js.map +1 -0
- package/dist/caching/src/hashing/providers/crypto.d.ts +19 -0
- package/dist/caching/src/hashing/providers/crypto.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/crypto.js +28 -0
- package/dist/caching/src/hashing/providers/crypto.js.map +1 -0
- package/dist/caching/src/hashing/providers/djb2.d.ts +60 -0
- package/dist/caching/src/hashing/providers/djb2.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/djb2.js +92 -0
- package/dist/caching/src/hashing/providers/djb2.js.map +1 -0
- package/dist/caching/src/hashing/providers/fnv1.d.ts +33 -0
- package/dist/caching/src/hashing/providers/fnv1.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/fnv1.js +68 -0
- package/dist/caching/src/hashing/providers/fnv1.js.map +1 -0
- package/dist/caching/src/hashing/providers/murmur.d.ts +81 -0
- package/dist/caching/src/hashing/providers/murmur.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/murmur.js +173 -0
- package/dist/caching/src/hashing/providers/murmur.js.map +1 -0
- package/dist/caching/src/hashing/providers.d.ts +126 -0
- package/dist/caching/src/hashing/providers.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers.js +163 -0
- package/dist/caching/src/hashing/providers.js.map +1 -0
- package/dist/caching/src/hashing/types.d.ts +340 -0
- package/dist/caching/src/hashing/types.d.ts.map +1 -0
- package/dist/caching/src/hashing/types.js +10 -0
- package/dist/caching/src/hashing/types.js.map +1 -0
- package/dist/caching/src/keyValue/capabilities.d.ts +161 -0
- package/dist/caching/src/keyValue/capabilities.d.ts.map +1 -0
- package/dist/caching/src/keyValue/capabilities.js +334 -0
- package/dist/caching/src/keyValue/capabilities.js.map +1 -0
- package/dist/caching/src/keyValue/event-manager.d.ts +27 -0
- package/dist/caching/src/keyValue/event-manager.d.ts.map +1 -0
- package/dist/caching/src/keyValue/event-manager.js +88 -0
- package/dist/caching/src/keyValue/event-manager.js.map +1 -0
- package/dist/caching/src/keyValue/generic-store.d.ts +243 -0
- package/dist/caching/src/keyValue/generic-store.d.ts.map +1 -0
- package/dist/caching/src/keyValue/generic-store.js +295 -0
- package/dist/caching/src/keyValue/generic-store.js.map +1 -0
- package/dist/caching/src/keyValue/hooks-manager.d.ts +21 -0
- package/dist/caching/src/keyValue/hooks-manager.d.ts.map +1 -0
- package/dist/caching/src/keyValue/hooks-manager.js +59 -0
- package/dist/caching/src/keyValue/hooks-manager.js.map +1 -0
- package/dist/caching/src/keyValue/index.d.ts +334 -0
- package/dist/caching/src/keyValue/index.d.ts.map +1 -0
- package/dist/caching/src/keyValue/index.js +796 -0
- package/dist/caching/src/keyValue/index.js.map +1 -0
- package/dist/caching/src/keyValue/serialize/serialize.d.ts +12 -0
- package/dist/caching/src/keyValue/serialize/serialize.d.ts.map +1 -0
- package/dist/caching/src/keyValue/serialize/serialize.js +64 -0
- package/dist/caching/src/keyValue/serialize/serialize.js.map +1 -0
- package/dist/caching/src/keyValue/stats-manager.d.ts +27 -0
- package/dist/caching/src/keyValue/stats-manager.d.ts.map +1 -0
- package/dist/caching/src/keyValue/stats-manager.js +64 -0
- package/dist/caching/src/keyValue/stats-manager.js.map +1 -0
- package/dist/caching/src/keyValue/types.d.ts +22 -0
- package/dist/caching/src/keyValue/types.d.ts.map +1 -0
- package/dist/caching/src/keyValue/types.js +11 -0
- package/dist/caching/src/keyValue/types.js.map +1 -0
- package/dist/caching/src/keyv-adapter.d.ts +40 -0
- package/dist/caching/src/keyv-adapter.d.ts.map +1 -0
- package/dist/caching/src/keyv-adapter.js +56 -0
- package/dist/caching/src/keyv-adapter.js.map +1 -0
- package/dist/caching/src/utils/cache-tags.d.ts +275 -0
- package/dist/caching/src/utils/cache-tags.d.ts.map +1 -0
- package/dist/caching/src/utils/cache-tags.js +407 -0
- package/dist/caching/src/utils/cache-tags.js.map +1 -0
- package/dist/caching/src/utils/cacheable-item-types.d.ts +35 -0
- package/dist/caching/src/utils/cacheable-item-types.d.ts.map +1 -0
- package/dist/caching/src/utils/cacheable-item-types.js +10 -0
- package/dist/caching/src/utils/cacheable-item-types.js.map +1 -0
- package/dist/caching/src/utils/coalesce-async.d.ts +29 -0
- package/dist/caching/src/utils/coalesce-async.d.ts.map +1 -0
- package/dist/caching/src/utils/coalesce-async.js +88 -0
- package/dist/caching/src/utils/coalesce-async.js.map +1 -0
- package/dist/caching/src/utils/hash.d.ts +55 -0
- package/dist/caching/src/utils/hash.d.ts.map +1 -0
- package/dist/caching/src/utils/hash.js +116 -0
- package/dist/caching/src/utils/hash.js.map +1 -0
- package/dist/caching/src/utils/index.d.ts +24 -0
- package/dist/caching/src/utils/index.d.ts.map +1 -0
- package/dist/caching/src/utils/index.js +21 -0
- package/dist/caching/src/utils/index.js.map +1 -0
- package/dist/caching/src/utils/is-keyv-instance.d.ts +10 -0
- package/dist/caching/src/utils/is-keyv-instance.d.ts.map +1 -0
- package/dist/caching/src/utils/is-keyv-instance.js +37 -0
- package/dist/caching/src/utils/is-keyv-instance.js.map +1 -0
- package/dist/caching/src/utils/is-object.d.ts +10 -0
- package/dist/caching/src/utils/is-object.d.ts.map +1 -0
- package/dist/caching/src/utils/is-object.js +13 -0
- package/dist/caching/src/utils/is-object.js.map +1 -0
- package/dist/caching/src/utils/less-than.d.ts +10 -0
- package/dist/caching/src/utils/less-than.d.ts.map +1 -0
- package/dist/caching/src/utils/less-than.js +13 -0
- package/dist/caching/src/utils/less-than.js.map +1 -0
- package/dist/caching/src/utils/memoize.d.ts +107 -0
- package/dist/caching/src/utils/memoize.d.ts.map +1 -0
- package/dist/caching/src/utils/memoize.js +201 -0
- package/dist/caching/src/utils/memoize.js.map +1 -0
- package/dist/caching/src/utils/mock-cacheable.d.ts +28 -0
- package/dist/caching/src/utils/mock-cacheable.d.ts.map +1 -0
- package/dist/caching/src/utils/mock-cacheable.js +87 -0
- package/dist/caching/src/utils/mock-cacheable.js.map +1 -0
- package/dist/caching/src/utils/run-if-fn.d.ts +12 -0
- package/dist/caching/src/utils/run-if-fn.d.ts.map +1 -0
- package/dist/caching/src/utils/run-if-fn.js +12 -0
- package/dist/caching/src/utils/run-if-fn.js.map +1 -0
- package/dist/caching/src/utils/shorthand-time.d.ts +27 -0
- package/dist/caching/src/utils/shorthand-time.d.ts.map +1 -0
- package/dist/caching/src/utils/shorthand-time.js +96 -0
- package/dist/caching/src/utils/shorthand-time.js.map +1 -0
- package/dist/caching/src/utils/sleep.d.ts +10 -0
- package/dist/caching/src/utils/sleep.d.ts.map +1 -0
- package/dist/caching/src/utils/sleep.js +11 -0
- package/dist/caching/src/utils/sleep.js.map +1 -0
- package/dist/caching/src/utils/stats.d.ts +354 -0
- package/dist/caching/src/utils/stats.d.ts.map +1 -0
- package/dist/caching/src/utils/stats.js +593 -0
- package/dist/caching/src/utils/stats.js.map +1 -0
- package/dist/caching/src/utils/ttl.d.ts +58 -0
- package/dist/caching/src/utils/ttl.d.ts.map +1 -0
- package/dist/caching/src/utils/ttl.js +77 -0
- package/dist/caching/src/utils/ttl.js.map +1 -0
- package/dist/logtape/logtape/level.d.ts +1 -2
- package/dist/logtape/logtape/level.d.ts.map +1 -1
- package/dist/logtape/logtape/level.js +1 -1
- package/dist/logtape/logtape/level.js.map +1 -1
- package/dist/logtape/logtape/mod.d.ts +1 -1
- package/dist/logtape/logtape/mod.d.ts.map +1 -1
- package/dist/logtape/logtape/mod.js +1 -1
- package/dist/logtape/logtape/mod.js.map +1 -1
- package/dist/utils/mod.d.ts +1 -1
- package/dist/utils/mod.d.ts.map +1 -1
- package/dist/utils/mod.js.map +1 -1
- package/dist/utils/validation/inRangeOfMaxInt32.d.ts +2 -0
- package/dist/utils/validation/inRangeOfMaxInt32.d.ts.map +1 -0
- package/dist/utils/validation/inRangeOfMaxInt32.js +4 -0
- package/dist/utils/validation/inRangeOfMaxInt32.js.map +1 -0
- package/dist/utils/validation/isEmail.d.ts +2 -0
- package/dist/utils/validation/isEmail.d.ts.map +1 -0
- package/dist/utils/validation/isEmail.js +7 -0
- package/dist/utils/validation/isEmail.js.map +1 -0
- package/dist/utils/validation/isEmptyObject.d.ts +9 -0
- package/dist/utils/validation/isEmptyObject.d.ts.map +1 -0
- package/dist/utils/validation/isEmptyObject.js +16 -0
- package/dist/utils/validation/isEmptyObject.js.map +1 -0
- package/dist/utils/validation/isNotEmptyString.d.ts +7 -0
- package/dist/utils/validation/isNotEmptyString.d.ts.map +1 -0
- package/dist/utils/validation/isNotEmptyString.js +17 -0
- package/dist/utils/validation/isNotEmptyString.js.map +1 -0
- package/dist/utils/validation/isPositiveInteger.d.ts +2 -0
- package/dist/utils/validation/isPositiveInteger.d.ts.map +1 -0
- package/dist/utils/validation/isPositiveInteger.js +7 -0
- package/dist/utils/validation/isPositiveInteger.js.map +1 -0
- package/dist/utils/validation/isUuid.d.ts +2 -0
- package/dist/utils/validation/isUuid.d.ts.map +1 -0
- package/dist/utils/validation/isUuid.js +7 -0
- package/dist/utils/validation/isUuid.js.map +1 -0
- package/dist/utils/validation/isUuidArray.d.ts +2 -0
- package/dist/utils/validation/isUuidArray.d.ts.map +1 -0
- package/dist/utils/validation/isUuidArray.js +7 -0
- package/dist/utils/validation/isUuidArray.js.map +1 -0
- package/dist/utils/validation/isValidFileName.d.ts +2 -0
- package/dist/utils/validation/isValidFileName.d.ts.map +1 -0
- package/dist/utils/validation/isValidFileName.js +33 -0
- package/dist/utils/validation/isValidFileName.js.map +1 -0
- package/dist/utils/validation/isValidUrlLike.d.ts +6 -0
- package/dist/utils/validation/isValidUrlLike.d.ts.map +1 -0
- package/dist/utils/validation/isValidUrlLike.js +8 -0
- package/dist/utils/validation/isValidUrlLike.js.map +1 -0
- package/dist/utils/validation/mod.d.ts +21 -0
- package/dist/utils/validation/mod.d.ts.map +1 -0
- package/dist/utils/validation/mod.js +21 -0
- package/dist/utils/validation/mod.js.map +1 -0
- package/dist/utils/validation/vEnvBoolean.d.ts +3 -0
- package/dist/utils/validation/vEnvBoolean.d.ts.map +1 -0
- package/dist/utils/validation/vEnvBoolean.js +5 -0
- package/dist/utils/validation/vEnvBoolean.js.map +1 -0
- package/dist/utils/validation/vEnvBooleanOrUndefined.d.ts +3 -0
- package/dist/utils/validation/vEnvBooleanOrUndefined.d.ts.map +1 -0
- package/dist/utils/validation/vEnvBooleanOrUndefined.js +5 -0
- package/dist/utils/validation/vEnvBooleanOrUndefined.js.map +1 -0
- package/dist/utils/validation/vEnvLogLevel.d.ts +4 -0
- package/dist/utils/validation/vEnvLogLevel.d.ts.map +1 -0
- package/dist/utils/validation/vEnvLogLevel.js +6 -0
- package/dist/utils/validation/vEnvLogLevel.js.map +1 -0
- package/dist/utils/validation/vFileName.d.ts +4 -0
- package/dist/utils/validation/vFileName.d.ts.map +1 -0
- package/dist/utils/validation/vFileName.js +21 -0
- package/dist/utils/validation/vFileName.js.map +1 -0
- package/dist/utils/validation/vISO8601DateTime.d.ts +5 -0
- package/dist/utils/validation/vISO8601DateTime.d.ts.map +1 -0
- package/dist/utils/validation/vISO8601DateTime.js +37 -0
- package/dist/utils/validation/vISO8601DateTime.js.map +1 -0
- package/dist/utils/validation/vLatinInput.d.ts +3 -0
- package/dist/utils/validation/vLatinInput.d.ts.map +1 -0
- package/dist/utils/validation/vLatinInput.js +3 -0
- package/dist/utils/validation/vLatinInput.js.map +1 -0
- package/dist/utils/validation/vOmniBoolean.d.ts +3 -0
- package/dist/utils/validation/vOmniBoolean.d.ts.map +1 -0
- package/dist/utils/validation/vOmniBoolean.js +10 -0
- package/dist/utils/validation/vOmniBoolean.js.map +1 -0
- package/dist/utils/validation/vQueryBoolean.d.ts +3 -0
- package/dist/utils/validation/vQueryBoolean.d.ts.map +1 -0
- package/dist/utils/validation/vQueryBoolean.js +7 -0
- package/dist/utils/validation/vQueryBoolean.js.map +1 -0
- package/dist/utils/validation/vQueryEmailArray.d.ts +9 -0
- package/dist/utils/validation/vQueryEmailArray.d.ts.map +1 -0
- package/dist/utils/validation/vQueryEmailArray.js +29 -0
- package/dist/utils/validation/vQueryEmailArray.js.map +1 -0
- package/dist/utils/validation/vQueryNumberArray.d.ts +10 -0
- package/dist/utils/validation/vQueryNumberArray.d.ts.map +1 -0
- package/dist/utils/validation/vQueryNumberArray.js +32 -0
- package/dist/utils/validation/vQueryNumberArray.js.map +1 -0
- package/dist/utils/validation/vQueryStringifiedEnumArray.d.ts +3 -0
- package/dist/utils/validation/vQueryStringifiedEnumArray.d.ts.map +1 -0
- package/dist/utils/validation/vQueryStringifiedEnumArray.js +25 -0
- package/dist/utils/validation/vQueryStringifiedEnumArray.js.map +1 -0
- package/dist/utils/validation/vQueryUuidArray.d.ts +9 -0
- package/dist/utils/validation/vQueryUuidArray.d.ts.map +1 -0
- package/dist/utils/validation/vQueryUuidArray.js +27 -0
- package/dist/utils/validation/vQueryUuidArray.js.map +1 -0
- package/package.json +19 -3
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: hookified (v1.15.1)
|
|
3
|
+
* - Copyright (c) Jared Wray
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import { Eventified } from './eventified.ts';
|
|
10
|
+
import type { Hook, HookEntry, HookifiedOptions } from './types.ts';
|
|
11
|
+
export type { Hook, HookEntry, HookifiedOptions };
|
|
12
|
+
export declare class Hookified extends Eventified {
|
|
13
|
+
private readonly _hooks;
|
|
14
|
+
private _throwOnHookError;
|
|
15
|
+
private _enforceBeforeAfter;
|
|
16
|
+
private _deprecatedHooks;
|
|
17
|
+
private _allowDeprecated;
|
|
18
|
+
constructor(options?: HookifiedOptions);
|
|
19
|
+
/**
|
|
20
|
+
* Gets all hooks
|
|
21
|
+
* @returns {Map<string, Hook[]>}
|
|
22
|
+
*/
|
|
23
|
+
get hooks(): Map<string, Hook[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
26
|
+
* @returns {boolean}
|
|
27
|
+
* @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
|
|
28
|
+
*/
|
|
29
|
+
get throwHookErrors(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
32
|
+
* @param {boolean} value
|
|
33
|
+
* @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
|
|
34
|
+
*/
|
|
35
|
+
set throwHookErrors(value: boolean);
|
|
36
|
+
/**
|
|
37
|
+
* Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
38
|
+
* @returns {boolean}
|
|
39
|
+
*/
|
|
40
|
+
get throwOnHookError(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
43
|
+
* @param {boolean} value
|
|
44
|
+
*/
|
|
45
|
+
set throwOnHookError(value: boolean);
|
|
46
|
+
/**
|
|
47
|
+
* Gets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
|
|
48
|
+
* @returns {boolean}
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
get enforceBeforeAfter(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Sets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
|
|
54
|
+
* @param {boolean} value
|
|
55
|
+
*/
|
|
56
|
+
set enforceBeforeAfter(value: boolean);
|
|
57
|
+
/**
|
|
58
|
+
* Gets the map of deprecated hook names to deprecation messages.
|
|
59
|
+
* @returns {Map<string, string>}
|
|
60
|
+
*/
|
|
61
|
+
get deprecatedHooks(): Map<string, string>;
|
|
62
|
+
/**
|
|
63
|
+
* Sets the map of deprecated hook names to deprecation messages.
|
|
64
|
+
* @param {Map<string, string>} value
|
|
65
|
+
*/
|
|
66
|
+
set deprecatedHooks(value: Map<string, string>);
|
|
67
|
+
/**
|
|
68
|
+
* Gets whether deprecated hooks are allowed to be registered and executed. Default is true.
|
|
69
|
+
* @returns {boolean}
|
|
70
|
+
*/
|
|
71
|
+
get allowDeprecated(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Sets whether deprecated hooks are allowed to be registered and executed. Default is true.
|
|
74
|
+
* @param {boolean} value
|
|
75
|
+
*/
|
|
76
|
+
set allowDeprecated(value: boolean);
|
|
77
|
+
/**
|
|
78
|
+
* Validates hook event name if enforceBeforeAfter is enabled
|
|
79
|
+
* @param {string} event - The event name to validate
|
|
80
|
+
* @throws {Error} If enforceBeforeAfter is true and event doesn't start with 'before' or 'after'
|
|
81
|
+
*/
|
|
82
|
+
private validateHookName;
|
|
83
|
+
/**
|
|
84
|
+
* Checks if a hook is deprecated and emits a warning if it is
|
|
85
|
+
* @param {string} event - The event name to check
|
|
86
|
+
* @returns {boolean} - Returns true if the hook should proceed, false if it should be blocked
|
|
87
|
+
*/
|
|
88
|
+
private checkDeprecatedHook;
|
|
89
|
+
/**
|
|
90
|
+
* Adds a handler function for a specific event
|
|
91
|
+
* @param {string} event
|
|
92
|
+
* @param {Hook} handler - this can be async or sync
|
|
93
|
+
* @returns {void}
|
|
94
|
+
*/
|
|
95
|
+
onHook(event: string, handler: Hook): void;
|
|
96
|
+
/**
|
|
97
|
+
* Adds a handler function for a specific event
|
|
98
|
+
* @param {HookEntry} hookEntry
|
|
99
|
+
* @returns {void}
|
|
100
|
+
*/
|
|
101
|
+
onHookEntry(hookEntry: HookEntry): void;
|
|
102
|
+
/**
|
|
103
|
+
* Alias for onHook. This is provided for compatibility with other libraries that use the `addHook` method.
|
|
104
|
+
* @param {string} event
|
|
105
|
+
* @param {Hook} handler - this can be async or sync
|
|
106
|
+
* @returns {void}
|
|
107
|
+
*/
|
|
108
|
+
addHook(event: string, handler: Hook): void;
|
|
109
|
+
/**
|
|
110
|
+
* Adds a handler function for a specific event
|
|
111
|
+
* @param {Array<HookEntry>} hooks
|
|
112
|
+
* @returns {void}
|
|
113
|
+
*/
|
|
114
|
+
onHooks(hooks: HookEntry[]): void;
|
|
115
|
+
/**
|
|
116
|
+
* Adds a handler function for a specific event that runs before all other handlers
|
|
117
|
+
* @param {string} event
|
|
118
|
+
* @param {Hook} handler - this can be async or sync
|
|
119
|
+
* @returns {void}
|
|
120
|
+
*/
|
|
121
|
+
prependHook(event: string, handler: Hook): void;
|
|
122
|
+
/**
|
|
123
|
+
* Adds a handler that only executes once for a specific event before all other handlers
|
|
124
|
+
* @param event
|
|
125
|
+
* @param handler
|
|
126
|
+
*/
|
|
127
|
+
prependOnceHook(event: string, handler: Hook): void;
|
|
128
|
+
/**
|
|
129
|
+
* Adds a handler that only executes once for a specific event
|
|
130
|
+
* @param event
|
|
131
|
+
* @param handler
|
|
132
|
+
*/
|
|
133
|
+
onceHook(event: string, handler: Hook): void;
|
|
134
|
+
/**
|
|
135
|
+
* Removes a handler function for a specific event
|
|
136
|
+
* @param {string} event
|
|
137
|
+
* @param {Hook} handler
|
|
138
|
+
* @returns {void}
|
|
139
|
+
*/
|
|
140
|
+
removeHook(event: string, handler: Hook): void;
|
|
141
|
+
/**
|
|
142
|
+
* Removes all handlers for a specific event
|
|
143
|
+
* @param {Array<HookEntry>} hooks
|
|
144
|
+
* @returns {void}
|
|
145
|
+
*/
|
|
146
|
+
removeHooks(hooks: HookEntry[]): void;
|
|
147
|
+
/**
|
|
148
|
+
* Calls all handlers for a specific event
|
|
149
|
+
* @param {string} event
|
|
150
|
+
* @param {T[]} arguments_
|
|
151
|
+
* @returns {Promise<void>}
|
|
152
|
+
*/
|
|
153
|
+
hook<T>(event: string, ...arguments_: T[]): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Calls all synchronous handlers for a specific event.
|
|
156
|
+
* Async handlers (declared with `async` keyword) are silently skipped.
|
|
157
|
+
*
|
|
158
|
+
* Note: The `hook` method is preferred as it executes both sync and async functions.
|
|
159
|
+
* Use `hookSync` only when you specifically need synchronous execution.
|
|
160
|
+
* @param {string} event
|
|
161
|
+
* @param {T[]} arguments_
|
|
162
|
+
* @returns {void}
|
|
163
|
+
*/
|
|
164
|
+
hookSync<T>(event: string, ...arguments_: T[]): void;
|
|
165
|
+
/**
|
|
166
|
+
* Prepends the word `before` to your hook. Example is event is `test`, the before hook is `before:test`.
|
|
167
|
+
* @param {string} event - The event name
|
|
168
|
+
* @param {T[]} arguments_ - The arguments to pass to the hook
|
|
169
|
+
*/
|
|
170
|
+
beforeHook<T>(event: string, ...arguments_: T[]): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* Prepends the word `after` to your hook. Example is event is `test`, the after hook is `after:test`.
|
|
173
|
+
* @param {string} event - The event name
|
|
174
|
+
* @param {T[]} arguments_ - The arguments to pass to the hook
|
|
175
|
+
*/
|
|
176
|
+
afterHook<T>(event: string, ...arguments_: T[]): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Calls all handlers for a specific event. This is an alias for `hook` and is provided for
|
|
179
|
+
* compatibility with other libraries that use the `callHook` method.
|
|
180
|
+
* @param {string} event
|
|
181
|
+
* @param {T[]} arguments_
|
|
182
|
+
* @returns {Promise<void>}
|
|
183
|
+
*/
|
|
184
|
+
callHook<T>(event: string, ...arguments_: T[]): Promise<void>;
|
|
185
|
+
/**
|
|
186
|
+
* Gets all hooks for a specific event
|
|
187
|
+
* @param {string} event
|
|
188
|
+
* @returns {Hook[]}
|
|
189
|
+
*/
|
|
190
|
+
getHooks(event: string): Hook[] | undefined;
|
|
191
|
+
/**
|
|
192
|
+
* Removes all hooks
|
|
193
|
+
* @returns {void}
|
|
194
|
+
*/
|
|
195
|
+
clearHooks(): void;
|
|
196
|
+
}
|
|
197
|
+
export { Eventified } from './eventified.ts';
|
|
198
|
+
export type { EventEmitterOptions, EventListener, IEventEmitter, Logger } from './types.ts';
|
|
199
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/hooks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: hookified (v1.15.1)
|
|
3
|
+
* - Copyright (c) Jared Wray
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
import { Eventified } from "./eventified.js";
|
|
10
|
+
export class Hookified extends Eventified {
|
|
11
|
+
_hooks;
|
|
12
|
+
_throwOnHookError = false;
|
|
13
|
+
_enforceBeforeAfter = false;
|
|
14
|
+
_deprecatedHooks;
|
|
15
|
+
_allowDeprecated = true;
|
|
16
|
+
constructor(options) {
|
|
17
|
+
super({
|
|
18
|
+
logger: options?.logger,
|
|
19
|
+
throwOnEmitError: options?.throwOnEmitError,
|
|
20
|
+
throwOnEmptyListeners: options?.throwOnEmptyListeners
|
|
21
|
+
});
|
|
22
|
+
this._hooks = new Map();
|
|
23
|
+
this._deprecatedHooks = options?.deprecatedHooks ? new Map(options.deprecatedHooks) : new Map();
|
|
24
|
+
if (options?.throwOnHookError !== undefined) {
|
|
25
|
+
this._throwOnHookError = options.throwOnHookError;
|
|
26
|
+
}
|
|
27
|
+
else if (options?.throwHookErrors !== undefined) {
|
|
28
|
+
this._throwOnHookError = options.throwHookErrors;
|
|
29
|
+
}
|
|
30
|
+
if (options?.enforceBeforeAfter !== undefined) {
|
|
31
|
+
this._enforceBeforeAfter = options.enforceBeforeAfter;
|
|
32
|
+
}
|
|
33
|
+
if (options?.allowDeprecated !== undefined) {
|
|
34
|
+
this._allowDeprecated = options.allowDeprecated;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets all hooks
|
|
39
|
+
* @returns {Map<string, Hook[]>}
|
|
40
|
+
*/
|
|
41
|
+
get hooks() {
|
|
42
|
+
return this._hooks;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
46
|
+
* @returns {boolean}
|
|
47
|
+
* @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
|
|
48
|
+
*/
|
|
49
|
+
get throwHookErrors() {
|
|
50
|
+
return this._throwOnHookError;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
54
|
+
* @param {boolean} value
|
|
55
|
+
* @deprecated - this will be deprecated in version 2. Please use throwOnHookError.
|
|
56
|
+
*/
|
|
57
|
+
set throwHookErrors(value) {
|
|
58
|
+
this._throwOnHookError = value;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Gets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
62
|
+
* @returns {boolean}
|
|
63
|
+
*/
|
|
64
|
+
get throwOnHookError() {
|
|
65
|
+
return this._throwOnHookError;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Sets whether an error should be thrown when a hook throws an error. Default is false and only emits an error event.
|
|
69
|
+
* @param {boolean} value
|
|
70
|
+
*/
|
|
71
|
+
set throwOnHookError(value) {
|
|
72
|
+
this._throwOnHookError = value;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Gets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
|
|
76
|
+
* @returns {boolean}
|
|
77
|
+
* @default false
|
|
78
|
+
*/
|
|
79
|
+
get enforceBeforeAfter() {
|
|
80
|
+
return this._enforceBeforeAfter;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Sets whether to enforce that all hook names start with 'before' or 'after'. Default is false.
|
|
84
|
+
* @param {boolean} value
|
|
85
|
+
*/
|
|
86
|
+
set enforceBeforeAfter(value) {
|
|
87
|
+
this._enforceBeforeAfter = value;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Gets the map of deprecated hook names to deprecation messages.
|
|
91
|
+
* @returns {Map<string, string>}
|
|
92
|
+
*/
|
|
93
|
+
get deprecatedHooks() {
|
|
94
|
+
return this._deprecatedHooks;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Sets the map of deprecated hook names to deprecation messages.
|
|
98
|
+
* @param {Map<string, string>} value
|
|
99
|
+
*/
|
|
100
|
+
set deprecatedHooks(value) {
|
|
101
|
+
this._deprecatedHooks = value;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Gets whether deprecated hooks are allowed to be registered and executed. Default is true.
|
|
105
|
+
* @returns {boolean}
|
|
106
|
+
*/
|
|
107
|
+
get allowDeprecated() {
|
|
108
|
+
return this._allowDeprecated;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Sets whether deprecated hooks are allowed to be registered and executed. Default is true.
|
|
112
|
+
* @param {boolean} value
|
|
113
|
+
*/
|
|
114
|
+
set allowDeprecated(value) {
|
|
115
|
+
this._allowDeprecated = value;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Validates hook event name if enforceBeforeAfter is enabled
|
|
119
|
+
* @param {string} event - The event name to validate
|
|
120
|
+
* @throws {Error} If enforceBeforeAfter is true and event doesn't start with 'before' or 'after'
|
|
121
|
+
*/
|
|
122
|
+
validateHookName(event) {
|
|
123
|
+
if (this._enforceBeforeAfter) {
|
|
124
|
+
const eventValue = event.trim().toLocaleLowerCase();
|
|
125
|
+
if (!eventValue.startsWith('before') && !eventValue.startsWith('after')) {
|
|
126
|
+
throw new Error(`Hook event "${event}" must start with "before" or "after" when enforceBeforeAfter is enabled`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Checks if a hook is deprecated and emits a warning if it is
|
|
132
|
+
* @param {string} event - The event name to check
|
|
133
|
+
* @returns {boolean} - Returns true if the hook should proceed, false if it should be blocked
|
|
134
|
+
*/
|
|
135
|
+
checkDeprecatedHook(event) {
|
|
136
|
+
if (this._deprecatedHooks.has(event)) {
|
|
137
|
+
const message = this._deprecatedHooks.get(event);
|
|
138
|
+
const warningMessage = `Hook "${event}" is deprecated${message ? `: ${message}` : ''}`;
|
|
139
|
+
// Emit deprecation warning event
|
|
140
|
+
this.emit('warn', { hook: event, message: warningMessage });
|
|
141
|
+
// Return false if deprecated hooks are not allowed
|
|
142
|
+
return this._allowDeprecated;
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Adds a handler function for a specific event
|
|
148
|
+
* @param {string} event
|
|
149
|
+
* @param {Hook} handler - this can be async or sync
|
|
150
|
+
* @returns {void}
|
|
151
|
+
*/
|
|
152
|
+
onHook(event, handler) {
|
|
153
|
+
this.onHookEntry({ event, handler });
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Adds a handler function for a specific event
|
|
157
|
+
* @param {HookEntry} hookEntry
|
|
158
|
+
* @returns {void}
|
|
159
|
+
*/
|
|
160
|
+
onHookEntry(hookEntry) {
|
|
161
|
+
this.validateHookName(hookEntry.event);
|
|
162
|
+
if (!this.checkDeprecatedHook(hookEntry.event)) {
|
|
163
|
+
return; // Skip registration if deprecated hooks are not allowed
|
|
164
|
+
}
|
|
165
|
+
const eventHandlers = this._hooks.get(hookEntry.event);
|
|
166
|
+
if (eventHandlers) {
|
|
167
|
+
eventHandlers.push(hookEntry.handler);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this._hooks.set(hookEntry.event, [hookEntry.handler]);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Alias for onHook. This is provided for compatibility with other libraries that use the `addHook` method.
|
|
175
|
+
* @param {string} event
|
|
176
|
+
* @param {Hook} handler - this can be async or sync
|
|
177
|
+
* @returns {void}
|
|
178
|
+
*/
|
|
179
|
+
addHook(event, handler) {
|
|
180
|
+
this.onHookEntry({ event, handler });
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Adds a handler function for a specific event
|
|
184
|
+
* @param {Array<HookEntry>} hooks
|
|
185
|
+
* @returns {void}
|
|
186
|
+
*/
|
|
187
|
+
onHooks(hooks) {
|
|
188
|
+
for (const hook of hooks) {
|
|
189
|
+
this.onHook(hook.event, hook.handler);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Adds a handler function for a specific event that runs before all other handlers
|
|
194
|
+
* @param {string} event
|
|
195
|
+
* @param {Hook} handler - this can be async or sync
|
|
196
|
+
* @returns {void}
|
|
197
|
+
*/
|
|
198
|
+
prependHook(event, handler) {
|
|
199
|
+
this.validateHookName(event);
|
|
200
|
+
if (!this.checkDeprecatedHook(event)) {
|
|
201
|
+
return; // Skip registration if deprecated hooks are not allowed
|
|
202
|
+
}
|
|
203
|
+
const eventHandlers = this._hooks.get(event);
|
|
204
|
+
if (eventHandlers) {
|
|
205
|
+
eventHandlers.unshift(handler);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
this._hooks.set(event, [handler]);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Adds a handler that only executes once for a specific event before all other handlers
|
|
213
|
+
* @param event
|
|
214
|
+
* @param handler
|
|
215
|
+
*/
|
|
216
|
+
prependOnceHook(event, handler) {
|
|
217
|
+
this.validateHookName(event);
|
|
218
|
+
if (!this.checkDeprecatedHook(event)) {
|
|
219
|
+
return; // Skip registration if deprecated hooks are not allowed
|
|
220
|
+
}
|
|
221
|
+
// biome-ignore lint/suspicious/noExplicitAny: this is for any parameter compatibility
|
|
222
|
+
const hook = async (...arguments_) => {
|
|
223
|
+
this.removeHook(event, hook);
|
|
224
|
+
return handler(...arguments_);
|
|
225
|
+
};
|
|
226
|
+
this.prependHook(event, hook);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Adds a handler that only executes once for a specific event
|
|
230
|
+
* @param event
|
|
231
|
+
* @param handler
|
|
232
|
+
*/
|
|
233
|
+
onceHook(event, handler) {
|
|
234
|
+
this.validateHookName(event);
|
|
235
|
+
if (!this.checkDeprecatedHook(event)) {
|
|
236
|
+
return; // Skip registration if deprecated hooks are not allowed
|
|
237
|
+
}
|
|
238
|
+
// biome-ignore lint/suspicious/noExplicitAny: this is for any parameter compatibility
|
|
239
|
+
const hook = async (...arguments_) => {
|
|
240
|
+
this.removeHook(event, hook);
|
|
241
|
+
return handler(...arguments_);
|
|
242
|
+
};
|
|
243
|
+
this.onHook(event, hook);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Removes a handler function for a specific event
|
|
247
|
+
* @param {string} event
|
|
248
|
+
* @param {Hook} handler
|
|
249
|
+
* @returns {void}
|
|
250
|
+
*/
|
|
251
|
+
removeHook(event, handler) {
|
|
252
|
+
this.validateHookName(event);
|
|
253
|
+
if (!this.checkDeprecatedHook(event)) {
|
|
254
|
+
return; // Skip removal if deprecated hooks are not allowed
|
|
255
|
+
}
|
|
256
|
+
const eventHandlers = this._hooks.get(event);
|
|
257
|
+
if (eventHandlers) {
|
|
258
|
+
const index = eventHandlers.indexOf(handler);
|
|
259
|
+
if (index !== -1) {
|
|
260
|
+
eventHandlers.splice(index, 1);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Removes all handlers for a specific event
|
|
266
|
+
* @param {Array<HookEntry>} hooks
|
|
267
|
+
* @returns {void}
|
|
268
|
+
*/
|
|
269
|
+
removeHooks(hooks) {
|
|
270
|
+
for (const hook of hooks) {
|
|
271
|
+
this.removeHook(hook.event, hook.handler);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Calls all handlers for a specific event
|
|
276
|
+
* @param {string} event
|
|
277
|
+
* @param {T[]} arguments_
|
|
278
|
+
* @returns {Promise<void>}
|
|
279
|
+
*/
|
|
280
|
+
async hook(event, ...arguments_) {
|
|
281
|
+
this.validateHookName(event);
|
|
282
|
+
if (!this.checkDeprecatedHook(event)) {
|
|
283
|
+
return; // Skip execution if deprecated hooks are not allowed
|
|
284
|
+
}
|
|
285
|
+
const eventHandlers = this._hooks.get(event);
|
|
286
|
+
if (eventHandlers) {
|
|
287
|
+
for (const handler of eventHandlers) {
|
|
288
|
+
try {
|
|
289
|
+
await handler(...arguments_);
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
const message = `${event}: ${error.message}`;
|
|
293
|
+
this.emit('error', new Error(message));
|
|
294
|
+
if (this._throwOnHookError) {
|
|
295
|
+
throw new Error(message);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Calls all synchronous handlers for a specific event.
|
|
303
|
+
* Async handlers (declared with `async` keyword) are silently skipped.
|
|
304
|
+
*
|
|
305
|
+
* Note: The `hook` method is preferred as it executes both sync and async functions.
|
|
306
|
+
* Use `hookSync` only when you specifically need synchronous execution.
|
|
307
|
+
* @param {string} event
|
|
308
|
+
* @param {T[]} arguments_
|
|
309
|
+
* @returns {void}
|
|
310
|
+
*/
|
|
311
|
+
hookSync(event, ...arguments_) {
|
|
312
|
+
this.validateHookName(event);
|
|
313
|
+
if (!this.checkDeprecatedHook(event)) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
const eventHandlers = this._hooks.get(event);
|
|
317
|
+
if (eventHandlers) {
|
|
318
|
+
for (const handler of eventHandlers) {
|
|
319
|
+
// Skip async functions silently
|
|
320
|
+
if (handler.constructor.name === 'AsyncFunction') {
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
try {
|
|
324
|
+
handler(...arguments_);
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
const message = `${event}: ${error.message}`;
|
|
328
|
+
this.emit('error', new Error(message));
|
|
329
|
+
if (this._throwOnHookError) {
|
|
330
|
+
throw new Error(message);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Prepends the word `before` to your hook. Example is event is `test`, the before hook is `before:test`.
|
|
338
|
+
* @param {string} event - The event name
|
|
339
|
+
* @param {T[]} arguments_ - The arguments to pass to the hook
|
|
340
|
+
*/
|
|
341
|
+
async beforeHook(event, ...arguments_) {
|
|
342
|
+
await this.hook(`before:${event}`, ...arguments_);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Prepends the word `after` to your hook. Example is event is `test`, the after hook is `after:test`.
|
|
346
|
+
* @param {string} event - The event name
|
|
347
|
+
* @param {T[]} arguments_ - The arguments to pass to the hook
|
|
348
|
+
*/
|
|
349
|
+
async afterHook(event, ...arguments_) {
|
|
350
|
+
await this.hook(`after:${event}`, ...arguments_);
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Calls all handlers for a specific event. This is an alias for `hook` and is provided for
|
|
354
|
+
* compatibility with other libraries that use the `callHook` method.
|
|
355
|
+
* @param {string} event
|
|
356
|
+
* @param {T[]} arguments_
|
|
357
|
+
* @returns {Promise<void>}
|
|
358
|
+
*/
|
|
359
|
+
async callHook(event, ...arguments_) {
|
|
360
|
+
await this.hook(event, ...arguments_);
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Gets all hooks for a specific event
|
|
364
|
+
* @param {string} event
|
|
365
|
+
* @returns {Hook[]}
|
|
366
|
+
*/
|
|
367
|
+
getHooks(event) {
|
|
368
|
+
this.validateHookName(event);
|
|
369
|
+
if (!this.checkDeprecatedHook(event)) {
|
|
370
|
+
return undefined; // Return undefined if deprecated hooks are not allowed
|
|
371
|
+
}
|
|
372
|
+
return this._hooks.get(event);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Removes all hooks
|
|
376
|
+
* @returns {void}
|
|
377
|
+
*/
|
|
378
|
+
clearHooks() {
|
|
379
|
+
this._hooks.clear();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
export { Eventified } from "./eventified.js";
|
|
383
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/caching/src/hashing/hooks/index.ts"],"names":[],"mappings":"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"}
|