@procedures/client 0.2.0 → 0.2.1
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/CHANGELOG.md +6 -0
- package/README.md +4 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/browser.d.ts +1 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/procedures/invoke.d.ts +6 -1
- package/dist/procedures/invoke.d.ts.map +1 -1
- package/dist/procedures/invoke.js +2 -2
- package/dist/procedures/invoke.js.map +1 -1
- package/dist/server/host-policy.d.ts +3 -3
- package/dist/server/host-policy.d.ts.map +1 -1
- package/dist/server/procedure-server.d.ts +2 -2
- package/dist/server/procedure-server.d.ts.map +1 -1
- package/dist/server/procedure-server.js.map +1 -1
- package/package.json +1 -1
- package/src/browser.ts +1 -0
- package/src/procedures/invoke.ts +10 -4
- package/src/server/host-policy.ts +3 -3
- package/src/server/procedure-server.ts +2 -2
- package/dist/client/middleware/batching.d.ts +0 -102
- package/dist/client/middleware/batching.d.ts.map +0 -1
- package/dist/client/middleware/batching.js +0 -245
- package/dist/client/middleware/batching.js.map +0 -1
- package/dist/collections/async/async-queue.d.ts +0 -144
- package/dist/collections/async/async-queue.d.ts.map +0 -1
- package/dist/collections/async/async-queue.js +0 -347
- package/dist/collections/async/async-queue.js.map +0 -1
- package/dist/collections/async/channels.d.ts +0 -188
- package/dist/collections/async/channels.d.ts.map +0 -1
- package/dist/collections/async/channels.js +0 -312
- package/dist/collections/async/channels.js.map +0 -1
- package/dist/collections/behaviors/bounded.d.ts +0 -79
- package/dist/collections/behaviors/bounded.d.ts.map +0 -1
- package/dist/collections/behaviors/bounded.js +0 -384
- package/dist/collections/behaviors/bounded.js.map +0 -1
- package/dist/collections/behaviors/evented.d.ts +0 -154
- package/dist/collections/behaviors/evented.d.ts.map +0 -1
- package/dist/collections/behaviors/evented.js +0 -299
- package/dist/collections/behaviors/evented.js.map +0 -1
- package/dist/collections/behaviors/lru.d.ts +0 -84
- package/dist/collections/behaviors/lru.d.ts.map +0 -1
- package/dist/collections/behaviors/lru.js +0 -330
- package/dist/collections/behaviors/lru.js.map +0 -1
- package/dist/collections/behaviors/readonly.d.ts +0 -73
- package/dist/collections/behaviors/readonly.d.ts.map +0 -1
- package/dist/collections/behaviors/readonly.js +0 -158
- package/dist/collections/behaviors/readonly.js.map +0 -1
- package/dist/collections/behaviors/safe.d.ts +0 -163
- package/dist/collections/behaviors/safe.d.ts.map +0 -1
- package/dist/collections/behaviors/safe.js +0 -172
- package/dist/collections/behaviors/safe.js.map +0 -1
- package/dist/collections/behaviors/synchronized.d.ts +0 -88
- package/dist/collections/behaviors/synchronized.d.ts.map +0 -1
- package/dist/collections/behaviors/synchronized.js +0 -294
- package/dist/collections/behaviors/synchronized.js.map +0 -1
- package/dist/collections/behaviors/ttl.d.ts +0 -118
- package/dist/collections/behaviors/ttl.d.ts.map +0 -1
- package/dist/collections/behaviors/ttl.js +0 -338
- package/dist/collections/behaviors/ttl.js.map +0 -1
- package/dist/collections/core/effects.d.ts +0 -176
- package/dist/collections/core/effects.d.ts.map +0 -1
- package/dist/collections/core/effects.js +0 -180
- package/dist/collections/core/effects.js.map +0 -1
- package/dist/collections/core/events.d.ts +0 -192
- package/dist/collections/core/events.d.ts.map +0 -1
- package/dist/collections/core/events.js +0 -291
- package/dist/collections/core/events.js.map +0 -1
- package/dist/collections/core/middleware.d.ts +0 -231
- package/dist/collections/core/middleware.d.ts.map +0 -1
- package/dist/collections/core/middleware.js +0 -161
- package/dist/collections/core/middleware.js.map +0 -1
- package/dist/collections/core/policies.d.ts +0 -220
- package/dist/collections/core/policies.d.ts.map +0 -1
- package/dist/collections/core/policies.js +0 -48
- package/dist/collections/core/policies.js.map +0 -1
- package/dist/collections/core/traits.d.ts +0 -142
- package/dist/collections/core/traits.d.ts.map +0 -1
- package/dist/collections/core/traits.js +0 -8
- package/dist/collections/core/traits.js.map +0 -1
- package/dist/collections/examples.d.ts +0 -13
- package/dist/collections/examples.d.ts.map +0 -1
- package/dist/collections/examples.js +0 -302
- package/dist/collections/examples.js.map +0 -1
- package/dist/collections/fx/collectors.d.ts +0 -190
- package/dist/collections/fx/collectors.d.ts.map +0 -1
- package/dist/collections/fx/collectors.js +0 -369
- package/dist/collections/fx/collectors.js.map +0 -1
- package/dist/collections/fx/iter.d.ts +0 -166
- package/dist/collections/fx/iter.d.ts.map +0 -1
- package/dist/collections/fx/iter.js +0 -421
- package/dist/collections/fx/iter.js.map +0 -1
- package/dist/collections/impl/array-deque.d.ts +0 -107
- package/dist/collections/impl/array-deque.d.ts.map +0 -1
- package/dist/collections/impl/array-deque.js +0 -381
- package/dist/collections/impl/array-deque.js.map +0 -1
- package/dist/collections/impl/array-list.d.ts +0 -101
- package/dist/collections/impl/array-list.d.ts.map +0 -1
- package/dist/collections/impl/array-list.js +0 -387
- package/dist/collections/impl/array-list.js.map +0 -1
- package/dist/collections/impl/hash-map.d.ts +0 -141
- package/dist/collections/impl/hash-map.d.ts.map +0 -1
- package/dist/collections/impl/hash-map.js +0 -450
- package/dist/collections/impl/hash-map.js.map +0 -1
- package/dist/collections/impl/hash-set.d.ts +0 -125
- package/dist/collections/impl/hash-set.d.ts.map +0 -1
- package/dist/collections/impl/hash-set.js +0 -264
- package/dist/collections/impl/hash-set.js.map +0 -1
- package/dist/collections/impl/linked-hash-map.d.ts +0 -141
- package/dist/collections/impl/linked-hash-map.d.ts.map +0 -1
- package/dist/collections/impl/linked-hash-map.js +0 -472
- package/dist/collections/impl/linked-hash-map.js.map +0 -1
- package/dist/collections/impl/linked-list.d.ts +0 -109
- package/dist/collections/impl/linked-list.d.ts.map +0 -1
- package/dist/collections/impl/linked-list.js +0 -491
- package/dist/collections/impl/linked-list.js.map +0 -1
- package/dist/collections/impl/priority-queue.d.ts +0 -134
- package/dist/collections/impl/priority-queue.d.ts.map +0 -1
- package/dist/collections/impl/priority-queue.js +0 -336
- package/dist/collections/impl/priority-queue.js.map +0 -1
- package/dist/collections/impl/tree-map.d.ts +0 -146
- package/dist/collections/impl/tree-map.d.ts.map +0 -1
- package/dist/collections/impl/tree-map.js +0 -781
- package/dist/collections/impl/tree-map.js.map +0 -1
- package/dist/collections/impl/tree-set.d.ts +0 -112
- package/dist/collections/impl/tree-set.d.ts.map +0 -1
- package/dist/collections/impl/tree-set.js +0 -374
- package/dist/collections/impl/tree-set.js.map +0 -1
- package/dist/collections/index.d.ts +0 -105
- package/dist/collections/index.d.ts.map +0 -1
- package/dist/collections/index.js +0 -135
- package/dist/collections/index.js.map +0 -1
- package/dist/collections/interfaces/collection.d.ts +0 -119
- package/dist/collections/interfaces/collection.d.ts.map +0 -1
- package/dist/collections/interfaces/collection.js +0 -8
- package/dist/collections/interfaces/collection.js.map +0 -1
- package/dist/collections/interfaces/list.d.ts +0 -247
- package/dist/collections/interfaces/list.d.ts.map +0 -1
- package/dist/collections/interfaces/list.js +0 -8
- package/dist/collections/interfaces/list.js.map +0 -1
- package/dist/collections/interfaces/map.d.ts +0 -344
- package/dist/collections/interfaces/map.d.ts.map +0 -1
- package/dist/collections/interfaces/map.js +0 -8
- package/dist/collections/interfaces/map.js.map +0 -1
- package/dist/collections/interfaces/queue.d.ts +0 -304
- package/dist/collections/interfaces/queue.d.ts.map +0 -1
- package/dist/collections/interfaces/queue.js +0 -8
- package/dist/collections/interfaces/queue.js.map +0 -1
- package/dist/collections/interfaces/set.d.ts +0 -137
- package/dist/collections/interfaces/set.d.ts.map +0 -1
- package/dist/collections/interfaces/set.js +0 -8
- package/dist/collections/interfaces/set.js.map +0 -1
- package/dist/collections/storage/api.d.ts +0 -109
- package/dist/collections/storage/api.d.ts.map +0 -1
- package/dist/collections/storage/api.js +0 -182
- package/dist/collections/storage/api.js.map +0 -1
- package/dist/collections/storage/hybrid.d.ts +0 -164
- package/dist/collections/storage/hybrid.d.ts.map +0 -1
- package/dist/collections/storage/hybrid.js +0 -416
- package/dist/collections/storage/hybrid.js.map +0 -1
- package/dist/collections/storage/index.d.ts +0 -16
- package/dist/collections/storage/index.d.ts.map +0 -1
- package/dist/collections/storage/index.js +0 -13
- package/dist/collections/storage/index.js.map +0 -1
- package/dist/collections/storage/interface.d.ts +0 -141
- package/dist/collections/storage/interface.d.ts.map +0 -1
- package/dist/collections/storage/interface.js +0 -23
- package/dist/collections/storage/interface.js.map +0 -1
- package/dist/collections/storage/memory.d.ts +0 -68
- package/dist/collections/storage/memory.d.ts.map +0 -1
- package/dist/collections/storage/memory.js +0 -154
- package/dist/collections/storage/memory.js.map +0 -1
- package/dist/collections/utils/defaults.d.ts +0 -135
- package/dist/collections/utils/defaults.d.ts.map +0 -1
- package/dist/collections/utils/defaults.js +0 -322
- package/dist/collections/utils/defaults.js.map +0 -1
- package/dist/collections/utils/factories.d.ts +0 -144
- package/dist/collections/utils/factories.d.ts.map +0 -1
- package/dist/collections/utils/factories.js +0 -293
- package/dist/collections/utils/factories.js.map +0 -1
- package/dist/collections/utils/helpers.d.ts +0 -137
- package/dist/collections/utils/helpers.d.ts.map +0 -1
- package/dist/collections/utils/helpers.js +0 -221
- package/dist/collections/utils/helpers.js.map +0 -1
- package/dist/collections.d.ts +0 -12
- package/dist/collections.d.ts.map +0 -1
- package/dist/collections.js +0 -10
- package/dist/collections.js.map +0 -1
- package/dist/components/define.d.ts +0 -134
- package/dist/components/define.d.ts.map +0 -1
- package/dist/components/define.js +0 -486
- package/dist/components/define.js.map +0 -1
- package/dist/components/index.d.ts +0 -39
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -38
- package/dist/components/index.js.map +0 -1
- package/dist/components/types.d.ts +0 -264
- package/dist/components/types.d.ts.map +0 -1
- package/dist/components/types.js +0 -46
- package/dist/components/types.js.map +0 -1
- package/dist/procedures/storage/adapter.d.ts +0 -148
- package/dist/procedures/storage/adapter.d.ts.map +0 -1
- package/dist/procedures/storage/adapter.js +0 -214
- package/dist/procedures/storage/adapter.js.map +0 -1
- package/dist/procedures/storage/api.d.ts +0 -125
- package/dist/procedures/storage/api.d.ts.map +0 -1
- package/dist/procedures/storage/api.js +0 -220
- package/dist/procedures/storage/api.js.map +0 -1
- package/dist/procedures/storage/factory.d.ts +0 -134
- package/dist/procedures/storage/factory.d.ts.map +0 -1
- package/dist/procedures/storage/factory.js +0 -166
- package/dist/procedures/storage/factory.js.map +0 -1
- package/dist/procedures/storage/hybrid.d.ts +0 -193
- package/dist/procedures/storage/hybrid.d.ts.map +0 -1
- package/dist/procedures/storage/hybrid.js +0 -519
- package/dist/procedures/storage/hybrid.js.map +0 -1
- package/dist/procedures/storage/index.d.ts +0 -17
- package/dist/procedures/storage/index.d.ts.map +0 -1
- package/dist/procedures/storage/index.js +0 -17
- package/dist/procedures/storage/index.js.map +0 -1
- package/dist/procedures/storage/procedures.d.ts +0 -39
- package/dist/procedures/storage/procedures.d.ts.map +0 -1
- package/dist/procedures/storage/procedures.js +0 -261
- package/dist/procedures/storage/procedures.js.map +0 -1
- package/dist/procedures/storage/serialization.d.ts +0 -123
- package/dist/procedures/storage/serialization.d.ts.map +0 -1
- package/dist/procedures/storage/serialization.js +0 -216
- package/dist/procedures/storage/serialization.js.map +0 -1
- package/dist/procedures/storage/synced-registry.d.ts +0 -246
- package/dist/procedures/storage/synced-registry.d.ts.map +0 -1
- package/dist/procedures/storage/synced-registry.js +0 -575
- package/dist/procedures/storage/synced-registry.js.map +0 -1
- package/dist/procedures/storage/types.d.ts +0 -130
- package/dist/procedures/storage/types.d.ts.map +0 -1
- package/dist/procedures/storage/types.js +0 -8
- package/dist/procedures/storage/types.js.map +0 -1
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Middleware composition system for collections.
|
|
3
|
-
*
|
|
4
|
-
* Provides the core composition mechanism that allows behaviors to be
|
|
5
|
-
* layered on top of collections using the decorator pattern.
|
|
6
|
-
*
|
|
7
|
-
* This is a specialized form of the unified middleware system (common/src/middleware)
|
|
8
|
-
* optimized for synchronous collection operations. While the unified system supports
|
|
9
|
-
* both sync and async with explicit context objects, collections use a simpler pattern
|
|
10
|
-
* where the collection instance itself serves as the context.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* const list = compose(
|
|
14
|
-
* safeList(),
|
|
15
|
-
* eventedList(),
|
|
16
|
-
* boundedList({ capacity: 100 })
|
|
17
|
-
* )(arrayList<number>())
|
|
18
|
-
*/
|
|
19
|
-
import type { Collection } from "../interfaces/collection.js";
|
|
20
|
-
/**
|
|
21
|
-
* A middleware is a function that takes a collection and returns
|
|
22
|
-
* an enhanced version of that collection.
|
|
23
|
-
*
|
|
24
|
-
* This maps to the unified middleware pattern where:
|
|
25
|
-
* - The "context" is the collection itself (passed directly, not in a context object)
|
|
26
|
-
* - Execution is synchronous (no Promises)
|
|
27
|
-
* - Type transformation is tracked through In -> Out
|
|
28
|
-
*
|
|
29
|
-
* Middleware can:
|
|
30
|
-
* - Intercept method calls
|
|
31
|
-
* - Add new capabilities
|
|
32
|
-
* - Transform inputs/outputs
|
|
33
|
-
* - Delegate to the next layer
|
|
34
|
-
*
|
|
35
|
-
* @template In The input collection type
|
|
36
|
-
* @template Out The output collection type (defaults to In if not specified)
|
|
37
|
-
*/
|
|
38
|
-
export type Middleware<In = any, Out extends In = In> = (next: In) => Out;
|
|
39
|
-
/**
|
|
40
|
-
* Composes multiple middleware layers into a single enhancer function.
|
|
41
|
-
*
|
|
42
|
-
* Uses reduceRight to create an "onion" pattern where the first middleware
|
|
43
|
-
* is the outermost layer (runs first when calling into the collection).
|
|
44
|
-
*
|
|
45
|
-
* The type system properly tracks capability additions through composition.
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* // Layer order (outer to inner):
|
|
49
|
-
* // 1. safe - converts throws to Option/Result
|
|
50
|
-
* // 2. evented - emits events on mutations
|
|
51
|
-
* // 3. bounded - enforces capacity limits
|
|
52
|
-
* // 4. base - the underlying ArrayList
|
|
53
|
-
* const enhancer = compose(
|
|
54
|
-
* safeList(),
|
|
55
|
-
* eventedList(),
|
|
56
|
-
* boundedList({ capacity: 100 })
|
|
57
|
-
* )
|
|
58
|
-
* const list = enhancer(arrayList<number>())
|
|
59
|
-
* // Type: List<number> & SafeCollection & EventedCollection & BoundedCollection
|
|
60
|
-
*
|
|
61
|
-
* @param layers The middleware layers to compose
|
|
62
|
-
* @returns A function that applies all layers to a base collection
|
|
63
|
-
*/
|
|
64
|
-
export declare function compose<C, R1 extends C>(m1: Middleware<C, R1>): (base: C) => R1;
|
|
65
|
-
export declare function compose<C, R1 extends C, R2 extends R1>(m1: Middleware<R1, R2>, m2: Middleware<C, R1>): (base: C) => R2;
|
|
66
|
-
export declare function compose<C, R1 extends C, R2 extends R1, R3 extends R2>(m1: Middleware<R2, R3>, m2: Middleware<R1, R2>, m3: Middleware<C, R1>): (base: C) => R3;
|
|
67
|
-
export declare function compose<C, R1 extends C, R2 extends R1, R3 extends R2, R4 extends R3>(m1: Middleware<R3, R4>, m2: Middleware<R2, R3>, m3: Middleware<R1, R2>, m4: Middleware<C, R1>): (base: C) => R4;
|
|
68
|
-
export declare function compose<C, R1 extends C, R2 extends R1, R3 extends R2, R4 extends R3, R5 extends R4>(m1: Middleware<R4, R5>, m2: Middleware<R3, R4>, m3: Middleware<R2, R3>, m4: Middleware<R1, R2>, m5: Middleware<C, R1>): (base: C) => R5;
|
|
69
|
-
export declare function compose<C>(...layers: Middleware<any, any>[]): (base: C) => any;
|
|
70
|
-
/**
|
|
71
|
-
* Utility to check if a collection has a specific capability.
|
|
72
|
-
* Useful for middleware that wants to conditionally enhance behavior.
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* if (hasCapability(collection, 'on')) {
|
|
76
|
-
* // Collection supports events
|
|
77
|
-
* collection.on('add', handler)
|
|
78
|
-
* }
|
|
79
|
-
*/
|
|
80
|
-
export declare const hasCapability: <C extends Collection<any>, K extends keyof any>(collection: C, capability: K) => collection is C & Record<K, unknown>;
|
|
81
|
-
/**
|
|
82
|
-
* Marker interface for collections that support events.
|
|
83
|
-
* Middleware can use this to detect event capability.
|
|
84
|
-
*/
|
|
85
|
-
export interface Evented<E extends Record<string, any>> {
|
|
86
|
-
/**
|
|
87
|
-
* Subscribe to an event.
|
|
88
|
-
* @returns Unsubscribe function
|
|
89
|
-
*/
|
|
90
|
-
on<K extends keyof E>(event: K, handler: (payload: E[K]) => void): () => void;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Marker interface for collections that support async operations.
|
|
94
|
-
*/
|
|
95
|
-
export interface Async<T> {
|
|
96
|
-
/**
|
|
97
|
-
* Async iterator for consuming elements.
|
|
98
|
-
*/
|
|
99
|
-
[Symbol.asyncIterator](): AsyncIterator<T>;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Marker interface for collections that are bounded.
|
|
103
|
-
*/
|
|
104
|
-
export interface BoundedCollection {
|
|
105
|
-
/** Maximum capacity */
|
|
106
|
-
readonly capacity: number;
|
|
107
|
-
/** Whether collection is at capacity */
|
|
108
|
-
readonly isFull: boolean;
|
|
109
|
-
/** Remaining space */
|
|
110
|
-
readonly remainingCapacity: number;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Marker interface for collections that support safe (Option/Result) operations.
|
|
114
|
-
*/
|
|
115
|
-
export interface SafeCollection {
|
|
116
|
-
/**
|
|
117
|
-
* Namespace for safe operations that return Option/Result instead of throwing.
|
|
118
|
-
*/
|
|
119
|
-
readonly safe: unknown;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Type helper to extract the element type from a collection.
|
|
123
|
-
*/
|
|
124
|
-
export type ElementType<C> = C extends {
|
|
125
|
-
[Symbol.iterator](): Iterator<infer T>;
|
|
126
|
-
} ? T : C extends {
|
|
127
|
-
get(index: number): infer T;
|
|
128
|
-
} ? T : C extends {
|
|
129
|
-
peek(): infer T;
|
|
130
|
-
} ? T : never;
|
|
131
|
-
/**
|
|
132
|
-
* Type helper to make all methods of a type return their async equivalents.
|
|
133
|
-
*/
|
|
134
|
-
export type Asyncify<C> = {
|
|
135
|
-
[K in keyof C]: C[K] extends (...args: infer Args) => infer R ? (...args: Args) => Promise<R> : C[K];
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* Helper to create a proxy that intercepts method calls.
|
|
139
|
-
* Useful for implementing middleware that needs to wrap method invocations.
|
|
140
|
-
*
|
|
141
|
-
* @example
|
|
142
|
-
* const logged = interceptMethods(collection, (target, method, args) => {
|
|
143
|
-
* console.log(`Calling ${String(method)} with`, args)
|
|
144
|
-
* const result = Reflect.apply(target[method], target, args)
|
|
145
|
-
* console.log(`Result:`, result)
|
|
146
|
-
* return result
|
|
147
|
-
* })
|
|
148
|
-
*/
|
|
149
|
-
export declare const interceptMethods: <C extends object>(target: C, interceptor: (target: C, method: keyof C, args: unknown[]) => unknown) => C;
|
|
150
|
-
/**
|
|
151
|
-
* Helper to create a readonly view of a collection by blocking mutating methods.
|
|
152
|
-
*
|
|
153
|
-
* @param mutatingMethods Set of method names that should be blocked
|
|
154
|
-
* @param errorMessage Custom error message to throw
|
|
155
|
-
*/
|
|
156
|
-
export declare const blockMethods: <C extends object>(target: C, mutatingMethods: Set<string | symbol>, errorMessage?: string) => C;
|
|
157
|
-
/**
|
|
158
|
-
* Helper to delegate method calls to a target while maintaining correct context.
|
|
159
|
-
* Useful when wrapping collections.
|
|
160
|
-
*/
|
|
161
|
-
export declare const delegate: <C extends object, T extends C>(target: T, wrapper: Partial<C>) => C;
|
|
162
|
-
/**
|
|
163
|
-
* Utility type to add optional capabilities to a collection type.
|
|
164
|
-
*/
|
|
165
|
-
export type WithCapability<C, Cap> = C & Cap;
|
|
166
|
-
/**
|
|
167
|
-
* Builder pattern helper for fluent API construction.
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
* class ListBuilder<T> {
|
|
171
|
-
* private middleware: Middleware<List<T>>[] = []
|
|
172
|
-
*
|
|
173
|
-
* bounded(capacity: number) {
|
|
174
|
-
* this.middleware.push(boundedList({ capacity }))
|
|
175
|
-
* return this
|
|
176
|
-
* }
|
|
177
|
-
*
|
|
178
|
-
* evented() {
|
|
179
|
-
* this.middleware.push(eventedList())
|
|
180
|
-
* return this
|
|
181
|
-
* }
|
|
182
|
-
*
|
|
183
|
-
* build(): List<T> {
|
|
184
|
-
* return compose(...this.middleware)(arrayList<T>())
|
|
185
|
-
* }
|
|
186
|
-
* }
|
|
187
|
-
*/
|
|
188
|
-
export declare abstract class CollectionBuilder<C> {
|
|
189
|
-
protected middleware: Middleware<C>[];
|
|
190
|
-
/**
|
|
191
|
-
* Apply a custom middleware.
|
|
192
|
-
*/
|
|
193
|
-
use(middleware: Middleware<C>): this;
|
|
194
|
-
/**
|
|
195
|
-
* Build the final collection by composing all middleware with the base.
|
|
196
|
-
*/
|
|
197
|
-
abstract build(): C;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Utility to create a middleware that only enhances specific methods.
|
|
201
|
-
*
|
|
202
|
-
* @example
|
|
203
|
-
* const logAdd = enhanceMethod('add', (original, args) => {
|
|
204
|
-
* console.log('Adding:', args[0])
|
|
205
|
-
* return original(...args)
|
|
206
|
-
* })
|
|
207
|
-
*/
|
|
208
|
-
export declare const enhanceMethod: <C extends object, K extends keyof C & string>(methodName: K, enhancer: (original: C[K] extends (...args: infer Args) => infer R ? (...args: Args) => R : never, args: C[K] extends (...args: infer Args) => any ? Args : never) => C[K] extends (...args: any[]) => infer R_1 ? R_1 : never) => Middleware<C>;
|
|
209
|
-
/**
|
|
210
|
-
* Combines multiple middleware into a single middleware.
|
|
211
|
-
* Useful for creating reusable middleware bundles.
|
|
212
|
-
*
|
|
213
|
-
* Bundle has the same composition semantics as compose - the first middleware
|
|
214
|
-
* is the outermost layer, and types are tracked through the chain.
|
|
215
|
-
*
|
|
216
|
-
* @example
|
|
217
|
-
* const standardBehaviors = bundle(
|
|
218
|
-
* boundedList({ capacity: 1000 }),
|
|
219
|
-
* eventedList(),
|
|
220
|
-
* safeList()
|
|
221
|
-
* )
|
|
222
|
-
*
|
|
223
|
-
* const list = compose(standardBehaviors)(arrayList<number>())
|
|
224
|
-
*/
|
|
225
|
-
export declare function bundle<C, R1 extends C>(m1: Middleware<C, R1>): Middleware<C, R1>;
|
|
226
|
-
export declare function bundle<C, R1 extends C, R2 extends R1>(m1: Middleware<R1, R2>, m2: Middleware<C, R1>): Middleware<C, R2>;
|
|
227
|
-
export declare function bundle<C, R1 extends C, R2 extends R1, R3 extends R2>(m1: Middleware<R2, R3>, m2: Middleware<R1, R2>, m3: Middleware<C, R1>): Middleware<C, R3>;
|
|
228
|
-
export declare function bundle<C, R1 extends C, R2 extends R1, R3 extends R2, R4 extends R3>(m1: Middleware<R3, R4>, m2: Middleware<R2, R3>, m3: Middleware<R1, R2>, m4: Middleware<C, R1>): Middleware<C, R4>;
|
|
229
|
-
export declare function bundle<C, R1 extends C, R2 extends R1, R3 extends R2, R4 extends R3, R5 extends R4>(m1: Middleware<R4, R5>, m2: Middleware<R3, R4>, m3: Middleware<R2, R3>, m4: Middleware<R1, R2>, m5: Middleware<C, R1>): Middleware<C, R5>;
|
|
230
|
-
export declare function bundle<C>(...middleware: Middleware<any, any>[]): Middleware<C, any>;
|
|
231
|
-
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/collections/core/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Middleware composition system for collections.
|
|
3
|
-
*
|
|
4
|
-
* Provides the core composition mechanism that allows behaviors to be
|
|
5
|
-
* layered on top of collections using the decorator pattern.
|
|
6
|
-
*
|
|
7
|
-
* This is a specialized form of the unified middleware system (common/src/middleware)
|
|
8
|
-
* optimized for synchronous collection operations. While the unified system supports
|
|
9
|
-
* both sync and async with explicit context objects, collections use a simpler pattern
|
|
10
|
-
* where the collection instance itself serves as the context.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* const list = compose(
|
|
14
|
-
* safeList(),
|
|
15
|
-
* eventedList(),
|
|
16
|
-
* boundedList({ capacity: 100 })
|
|
17
|
-
* )(arrayList<number>())
|
|
18
|
-
*/
|
|
19
|
-
// Implementation
|
|
20
|
-
export function compose(...layers) {
|
|
21
|
-
return (base) => layers.reduceRight((acc, layer) => layer(acc), base);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Utility to check if a collection has a specific capability.
|
|
25
|
-
* Useful for middleware that wants to conditionally enhance behavior.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* if (hasCapability(collection, 'on')) {
|
|
29
|
-
* // Collection supports events
|
|
30
|
-
* collection.on('add', handler)
|
|
31
|
-
* }
|
|
32
|
-
*/
|
|
33
|
-
export const hasCapability = (collection, capability) => {
|
|
34
|
-
return capability in collection;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Helper to create a proxy that intercepts method calls.
|
|
38
|
-
* Useful for implementing middleware that needs to wrap method invocations.
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* const logged = interceptMethods(collection, (target, method, args) => {
|
|
42
|
-
* console.log(`Calling ${String(method)} with`, args)
|
|
43
|
-
* const result = Reflect.apply(target[method], target, args)
|
|
44
|
-
* console.log(`Result:`, result)
|
|
45
|
-
* return result
|
|
46
|
-
* })
|
|
47
|
-
*/
|
|
48
|
-
export const interceptMethods = (target, interceptor) => {
|
|
49
|
-
return new Proxy(target, {
|
|
50
|
-
get(t, prop, receiver) {
|
|
51
|
-
const value = Reflect.get(t, prop, receiver);
|
|
52
|
-
if (typeof value === "function" && typeof prop === "string") {
|
|
53
|
-
return function (...args) {
|
|
54
|
-
return interceptor(t, prop, args);
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
return value;
|
|
58
|
-
},
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
/**
|
|
62
|
-
* Helper to create a readonly view of a collection by blocking mutating methods.
|
|
63
|
-
*
|
|
64
|
-
* @param mutatingMethods Set of method names that should be blocked
|
|
65
|
-
* @param errorMessage Custom error message to throw
|
|
66
|
-
*/
|
|
67
|
-
export const blockMethods = (target, mutatingMethods, errorMessage = "Operation not allowed") => {
|
|
68
|
-
return new Proxy(target, {
|
|
69
|
-
get(t, prop, receiver) {
|
|
70
|
-
const value = Reflect.get(t, prop, receiver);
|
|
71
|
-
if (typeof value === "function" && mutatingMethods.has(prop)) {
|
|
72
|
-
return () => {
|
|
73
|
-
throw new Error(errorMessage);
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
return value;
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Helper to delegate method calls to a target while maintaining correct context.
|
|
82
|
-
* Useful when wrapping collections.
|
|
83
|
-
*/
|
|
84
|
-
export const delegate = (target, wrapper) => {
|
|
85
|
-
return new Proxy(target, {
|
|
86
|
-
get(t, prop, receiver) {
|
|
87
|
-
// If wrapper has the property, use it
|
|
88
|
-
if (prop in wrapper) {
|
|
89
|
-
return Reflect.get(wrapper, prop, receiver);
|
|
90
|
-
}
|
|
91
|
-
// Otherwise delegate to target
|
|
92
|
-
const value = Reflect.get(t, prop, receiver);
|
|
93
|
-
// Bind methods to maintain correct 'this' context
|
|
94
|
-
if (typeof value === "function") {
|
|
95
|
-
return value.bind(t);
|
|
96
|
-
}
|
|
97
|
-
return value;
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* Builder pattern helper for fluent API construction.
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* class ListBuilder<T> {
|
|
106
|
-
* private middleware: Middleware<List<T>>[] = []
|
|
107
|
-
*
|
|
108
|
-
* bounded(capacity: number) {
|
|
109
|
-
* this.middleware.push(boundedList({ capacity }))
|
|
110
|
-
* return this
|
|
111
|
-
* }
|
|
112
|
-
*
|
|
113
|
-
* evented() {
|
|
114
|
-
* this.middleware.push(eventedList())
|
|
115
|
-
* return this
|
|
116
|
-
* }
|
|
117
|
-
*
|
|
118
|
-
* build(): List<T> {
|
|
119
|
-
* return compose(...this.middleware)(arrayList<T>())
|
|
120
|
-
* }
|
|
121
|
-
* }
|
|
122
|
-
*/
|
|
123
|
-
export class CollectionBuilder {
|
|
124
|
-
middleware = [];
|
|
125
|
-
/**
|
|
126
|
-
* Apply a custom middleware.
|
|
127
|
-
*/
|
|
128
|
-
use(middleware) {
|
|
129
|
-
this.middleware.push(middleware);
|
|
130
|
-
return this;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Utility to create a middleware that only enhances specific methods.
|
|
135
|
-
*
|
|
136
|
-
* @example
|
|
137
|
-
* const logAdd = enhanceMethod('add', (original, args) => {
|
|
138
|
-
* console.log('Adding:', args[0])
|
|
139
|
-
* return original(...args)
|
|
140
|
-
* })
|
|
141
|
-
*/
|
|
142
|
-
export const enhanceMethod = (methodName, enhancer) => {
|
|
143
|
-
return (next) => {
|
|
144
|
-
return new Proxy(next, {
|
|
145
|
-
get(target, prop, receiver) {
|
|
146
|
-
const value = Reflect.get(target, prop, receiver);
|
|
147
|
-
if (prop === methodName && typeof value === "function") {
|
|
148
|
-
return function (...args) {
|
|
149
|
-
return enhancer(value.bind(target), args);
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
return value;
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
};
|
|
156
|
-
};
|
|
157
|
-
// Implementation
|
|
158
|
-
export function bundle(...middleware) {
|
|
159
|
-
return (next) => compose(...middleware)(next);
|
|
160
|
-
}
|
|
161
|
-
//# sourceMappingURL=middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/collections/core/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Policy types for configurable collection behaviors.
|
|
3
|
-
*
|
|
4
|
-
* Policies define how collections handle edge cases like overflow,
|
|
5
|
-
* underflow, and eviction. These are used by behavior decorators
|
|
6
|
-
* to provide flexible, composable behavior.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Policy for handling overflow when adding to a full bounded collection.
|
|
10
|
-
*
|
|
11
|
-
* - 'throw': Throw an error when attempting to add to a full collection
|
|
12
|
-
* - 'drop-oldest': Remove the oldest element and add the new one
|
|
13
|
-
* - 'drop-newest': Ignore the new element (don't add it)
|
|
14
|
-
* - 'reject': Return false/None but don't throw (graceful failure)
|
|
15
|
-
* - 'grow': Automatically increase capacity (becomes unbounded)
|
|
16
|
-
* - 'block': For async collections, wait until space is available
|
|
17
|
-
*/
|
|
18
|
-
export type OverflowPolicy = "throw" | "drop-oldest" | "drop-newest" | "reject" | "grow" | "block";
|
|
19
|
-
/**
|
|
20
|
-
* Context information provided when overflow occurs.
|
|
21
|
-
*/
|
|
22
|
-
export interface OverflowContext<T> {
|
|
23
|
-
/** The element that triggered the overflow. */
|
|
24
|
-
readonly newElement: T;
|
|
25
|
-
/** Current size of the collection. */
|
|
26
|
-
readonly currentSize: number;
|
|
27
|
-
/** Maximum capacity of the collection. */
|
|
28
|
-
readonly capacity: number;
|
|
29
|
-
/** Timestamp when overflow occurred. */
|
|
30
|
-
readonly timestamp: number;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Callback invoked when overflow occurs.
|
|
34
|
-
* Can be used for logging, metrics, or custom handling.
|
|
35
|
-
*/
|
|
36
|
-
export type OverflowHandler<T> = (context: OverflowContext<T>) => void;
|
|
37
|
-
/**
|
|
38
|
-
* Policy for handling underflow when removing from an empty collection.
|
|
39
|
-
*
|
|
40
|
-
* - 'throw': Throw an error when attempting to remove from empty collection
|
|
41
|
-
* - 'return-none': Return None/undefined (graceful failure)
|
|
42
|
-
* - 'return-default': Return a default value provided by user
|
|
43
|
-
* - 'block': For async collections, wait until an element is available
|
|
44
|
-
*/
|
|
45
|
-
export type UnderflowPolicy = "throw" | "return-none" | "return-default" | "block";
|
|
46
|
-
/**
|
|
47
|
-
* Context information provided when underflow occurs.
|
|
48
|
-
*/
|
|
49
|
-
export interface UnderflowContext {
|
|
50
|
-
/** The operation that triggered the underflow. */
|
|
51
|
-
readonly operation: string;
|
|
52
|
-
/** Timestamp when underflow occurred. */
|
|
53
|
-
readonly timestamp: number;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Callback invoked when underflow occurs.
|
|
57
|
-
*/
|
|
58
|
-
export type UnderflowHandler = (context: UnderflowContext) => void;
|
|
59
|
-
/**
|
|
60
|
-
* Policy for choosing which element to evict from a bounded collection.
|
|
61
|
-
*
|
|
62
|
-
* - 'lru': Least Recently Used - evict element not accessed for longest time
|
|
63
|
-
* - 'lfu': Least Frequently Used - evict element accessed least often
|
|
64
|
-
* - 'fifo': First In First Out - evict oldest inserted element
|
|
65
|
-
* - 'lifo': Last In First Out - evict newest inserted element (stack-like)
|
|
66
|
-
* - 'random': Evict a random element
|
|
67
|
-
* - 'ttl': Time To Live - evict elements that have expired
|
|
68
|
-
* - 'priority': Evict element with lowest priority
|
|
69
|
-
* - 'custom': User-provided eviction function
|
|
70
|
-
*/
|
|
71
|
-
export type EvictionPolicy = "lru" | "lfu" | "fifo" | "lifo" | "random" | "ttl" | "priority" | "custom";
|
|
72
|
-
/**
|
|
73
|
-
* Metadata tracked for eviction decisions.
|
|
74
|
-
*/
|
|
75
|
-
export interface EvictionMetadata {
|
|
76
|
-
/** When the element was inserted. */
|
|
77
|
-
readonly insertedAt: number;
|
|
78
|
-
/** When the element was last accessed. */
|
|
79
|
-
lastAccessedAt: number;
|
|
80
|
-
/** How many times the element has been accessed. */
|
|
81
|
-
accessCount: number;
|
|
82
|
-
/** Time-to-live expiration timestamp (if applicable). */
|
|
83
|
-
readonly expiresAt?: number;
|
|
84
|
-
/** Priority value (higher = more important, if applicable). */
|
|
85
|
-
readonly priority?: number;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Information about an element that can be evicted.
|
|
89
|
-
*/
|
|
90
|
-
export interface EvictionCandidate<T> {
|
|
91
|
-
/** The element value. */
|
|
92
|
-
readonly element: T;
|
|
93
|
-
/** Eviction metadata for this element. */
|
|
94
|
-
readonly metadata: EvictionMetadata;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Custom eviction function.
|
|
98
|
-
* Given candidates, returns the element to evict.
|
|
99
|
-
*/
|
|
100
|
-
export type EvictionSelector<T> = (candidates: EvictionCandidate<T>[]) => T | undefined;
|
|
101
|
-
/**
|
|
102
|
-
* Policy for retrying failed async operations.
|
|
103
|
-
*/
|
|
104
|
-
export interface RetryPolicy {
|
|
105
|
-
/** Maximum number of retry attempts. */
|
|
106
|
-
readonly maxAttempts: number;
|
|
107
|
-
/** Initial delay in milliseconds. */
|
|
108
|
-
readonly initialDelay: number;
|
|
109
|
-
/** Backoff strategy. */
|
|
110
|
-
readonly backoff: "none" | "linear" | "exponential";
|
|
111
|
-
/** Maximum delay cap (for backoff). */
|
|
112
|
-
readonly maxDelay?: number;
|
|
113
|
-
/** Jitter to add randomness and avoid thundering herd. */
|
|
114
|
-
readonly jitter?: boolean;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Context for retry decisions.
|
|
118
|
-
*/
|
|
119
|
-
export interface RetryContext {
|
|
120
|
-
/** Current attempt number (1-indexed). */
|
|
121
|
-
readonly attempt: number;
|
|
122
|
-
/** The error that caused the retry. */
|
|
123
|
-
readonly error: unknown;
|
|
124
|
-
/** Elapsed time since first attempt. */
|
|
125
|
-
readonly elapsedMs: number;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Callback to determine if an error is retryable.
|
|
129
|
-
*/
|
|
130
|
-
export type RetryPredicate = (context: RetryContext) => boolean;
|
|
131
|
-
/**
|
|
132
|
-
* Policy for resolving conflicts when same key is modified concurrently.
|
|
133
|
-
*
|
|
134
|
-
* - 'last-write-wins': Most recent write takes precedence
|
|
135
|
-
* - 'first-write-wins': First write takes precedence
|
|
136
|
-
* - 'merge': Call merge function to combine values
|
|
137
|
-
* - 'throw': Throw an error on conflict
|
|
138
|
-
*/
|
|
139
|
-
export type ConflictResolutionPolicy = "last-write-wins" | "first-write-wins" | "merge" | "throw";
|
|
140
|
-
/**
|
|
141
|
-
* Function to merge conflicting values.
|
|
142
|
-
*/
|
|
143
|
-
export type MergeFunction<T> = (current: T, incoming: T) => T;
|
|
144
|
-
/**
|
|
145
|
-
* Policy for when to compact internal storage.
|
|
146
|
-
*/
|
|
147
|
-
export interface CompactionPolicy {
|
|
148
|
-
/** Compact when capacity utilization drops below this ratio (0-1). */
|
|
149
|
-
readonly minLoadFactor?: number;
|
|
150
|
-
/** Compact when wasted space exceeds this many elements. */
|
|
151
|
-
readonly maxWastedSpace?: number;
|
|
152
|
-
/** Automatically compact on every removal. */
|
|
153
|
-
readonly autoCompact?: boolean;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Policy for how to grow capacity when needed.
|
|
157
|
-
*/
|
|
158
|
-
export interface GrowthPolicy {
|
|
159
|
-
/** Growth strategy. */
|
|
160
|
-
readonly strategy: "double" | "linear" | "golden-ratio" | "custom";
|
|
161
|
-
/** For linear growth, how many elements to add. */
|
|
162
|
-
readonly linearIncrement?: number;
|
|
163
|
-
/** For custom growth, a function to calculate new capacity. */
|
|
164
|
-
readonly customGrowth?: (currentCapacity: number) => number;
|
|
165
|
-
/** Maximum capacity limit (prevent unbounded growth). */
|
|
166
|
-
readonly maxCapacity?: number;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Validation action when an invalid element is encountered.
|
|
170
|
-
*
|
|
171
|
-
* - 'throw': Throw an error
|
|
172
|
-
* - 'drop': Silently drop the invalid element
|
|
173
|
-
* - 'coerce': Attempt to coerce to valid type
|
|
174
|
-
* - 'log': Log warning but allow
|
|
175
|
-
*/
|
|
176
|
-
export type ValidationPolicy = "throw" | "drop" | "coerce" | "log";
|
|
177
|
-
/**
|
|
178
|
-
* Context for validation failures.
|
|
179
|
-
*/
|
|
180
|
-
export interface ValidationContext<T> {
|
|
181
|
-
/** The invalid element. */
|
|
182
|
-
readonly element: T;
|
|
183
|
-
/** Validation error message/details. */
|
|
184
|
-
readonly error: unknown;
|
|
185
|
-
/** The operation that triggered validation. */
|
|
186
|
-
readonly operation: string;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Callback invoked on validation failures.
|
|
190
|
-
*/
|
|
191
|
-
export type ValidationHandler<T> = (context: ValidationContext<T>) => void;
|
|
192
|
-
/**
|
|
193
|
-
* Default overflow policy: throw an error.
|
|
194
|
-
*/
|
|
195
|
-
export declare const DEFAULT_OVERFLOW_POLICY: OverflowPolicy;
|
|
196
|
-
/**
|
|
197
|
-
* Default underflow policy: throw an error.
|
|
198
|
-
*/
|
|
199
|
-
export declare const DEFAULT_UNDERFLOW_POLICY: UnderflowPolicy;
|
|
200
|
-
/**
|
|
201
|
-
* Default eviction policy: FIFO (oldest first).
|
|
202
|
-
*/
|
|
203
|
-
export declare const DEFAULT_EVICTION_POLICY: EvictionPolicy;
|
|
204
|
-
/**
|
|
205
|
-
* Default retry policy: 3 attempts with exponential backoff.
|
|
206
|
-
*/
|
|
207
|
-
export declare const DEFAULT_RETRY_POLICY: RetryPolicy;
|
|
208
|
-
/**
|
|
209
|
-
* Default conflict resolution: last write wins.
|
|
210
|
-
*/
|
|
211
|
-
export declare const DEFAULT_CONFLICT_POLICY: ConflictResolutionPolicy;
|
|
212
|
-
/**
|
|
213
|
-
* Default growth policy: double capacity.
|
|
214
|
-
*/
|
|
215
|
-
export declare const DEFAULT_GROWTH_POLICY: GrowthPolicy;
|
|
216
|
-
/**
|
|
217
|
-
* Default validation policy: throw on invalid.
|
|
218
|
-
*/
|
|
219
|
-
export declare const DEFAULT_VALIDATION_POLICY: ValidationPolicy;
|
|
220
|
-
//# sourceMappingURL=policies.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/collections/core/policies.ts"],"names":[],"mappings":"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"}
|