@travetto/cache 3.4.5 → 4.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/service.ts +2 -2
- package/src/util.ts +1 -1
- package/support/test/service.ts +13 -12
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@travetto/cache",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-rc.0",
|
|
4
4
|
"description": "Caching functionality with decorators for declarative use.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"directory": "module/cache"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@travetto/di": "^
|
|
29
|
-
"@travetto/model": "^
|
|
28
|
+
"@travetto/di": "^4.0.0-rc.0",
|
|
29
|
+
"@travetto/model": "^4.0.0-rc.0"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@travetto/test": "^
|
|
33
|
-
"@travetto/transformer": "^
|
|
32
|
+
"@travetto/test": "^4.0.0-rc.0",
|
|
33
|
+
"@travetto/transformer": "^4.0.0-rc.0"
|
|
34
34
|
},
|
|
35
35
|
"peerDependenciesMeta": {
|
|
36
36
|
"@travetto/transformer": {
|
package/src/service.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExpiresAt, Model, ModelExpirySupport, NotFoundError } from '@travetto/model';
|
|
2
2
|
import { Text } from '@travetto/schema';
|
|
3
3
|
import { Inject, Injectable } from '@travetto/di';
|
|
4
|
-
import {
|
|
4
|
+
import { Env } from '@travetto/base';
|
|
5
5
|
import { isStorageSupported } from '@travetto/model/src/internal/service/common';
|
|
6
6
|
|
|
7
7
|
import { CacheError } from './error';
|
|
@@ -35,7 +35,7 @@ export class CacheService {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
async postConstruct(): Promise<void> {
|
|
38
|
-
if (isStorageSupported(this.#modelService) &&
|
|
38
|
+
if (isStorageSupported(this.#modelService) && Env.dynamic) {
|
|
39
39
|
await this.#modelService.createModel?.(CacheRecord);
|
|
40
40
|
}
|
|
41
41
|
}
|
package/src/util.ts
CHANGED
package/support/test/service.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import timers from 'node:timers/promises';
|
|
2
3
|
|
|
3
4
|
import { Suite, Test } from '@travetto/test';
|
|
4
5
|
import { ModelExpirySupport } from '@travetto/model';
|
|
5
6
|
import { Inject, Injectable } from '@travetto/di';
|
|
6
7
|
import { InjectableSuite } from '@travetto/di/support/test/suite';
|
|
7
8
|
import { ModelSuite } from '@travetto/model/support/test/suite';
|
|
8
|
-
import { Class
|
|
9
|
+
import { Class } from '@travetto/base';
|
|
9
10
|
import { Schema } from '@travetto/schema';
|
|
10
11
|
|
|
11
12
|
import { Cache, EvictCache } from '../../src/decorator';
|
|
@@ -28,37 +29,37 @@ class SampleService {
|
|
|
28
29
|
|
|
29
30
|
@Cache('source')
|
|
30
31
|
async basic(num: number) {
|
|
31
|
-
await
|
|
32
|
+
await timers.setTimeout(100);
|
|
32
33
|
return num * 2;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
@Cache('source', '.5s')
|
|
36
37
|
async agesQuickly(num: number) {
|
|
37
|
-
await
|
|
38
|
+
await timers.setTimeout(100);
|
|
38
39
|
return num * 3;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
@Cache('source', 200, { extendOnAccess: true })
|
|
42
43
|
async ageExtension(num: number) {
|
|
43
|
-
await
|
|
44
|
+
await timers.setTimeout(100);
|
|
44
45
|
return num * 3;
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
@Cache('source')
|
|
48
49
|
async complexInput(config: object, size: number) {
|
|
49
|
-
await
|
|
50
|
+
await timers.setTimeout(100);
|
|
50
51
|
return { length: Object.keys(config).length, size };
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
@Cache('source', { key: config => config.a })
|
|
54
55
|
async customKey(config: object, size: number) {
|
|
55
|
-
await
|
|
56
|
+
await timers.setTimeout(100);
|
|
56
57
|
return { length: Object.keys(config).length, size };
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
@Cache('source', { keySpace: 'user.id', reinstate: x => User.from(x as User) })
|
|
60
61
|
async getUser(userId: string) {
|
|
61
|
-
await
|
|
62
|
+
await timers.setTimeout(100);
|
|
62
63
|
|
|
63
64
|
return {
|
|
64
65
|
id: userId,
|
|
@@ -68,7 +69,7 @@ class SampleService {
|
|
|
68
69
|
|
|
69
70
|
@EvictCache('source', { keySpace: 'user.id' })
|
|
70
71
|
async deleteUser(userId: string) {
|
|
71
|
-
await
|
|
72
|
+
await timers.setTimeout(100);
|
|
72
73
|
return true;
|
|
73
74
|
}
|
|
74
75
|
}
|
|
@@ -112,7 +113,7 @@ export abstract class CacheServiceSuite {
|
|
|
112
113
|
assert(diff > 75);
|
|
113
114
|
assert(res === 30);
|
|
114
115
|
|
|
115
|
-
await
|
|
116
|
+
await timers.setTimeout(510);
|
|
116
117
|
|
|
117
118
|
start = Date.now();
|
|
118
119
|
res = await service.agesQuickly(10);
|
|
@@ -132,7 +133,7 @@ export abstract class CacheServiceSuite {
|
|
|
132
133
|
assert(res === 30);
|
|
133
134
|
|
|
134
135
|
for (let i = 0; i < 2; i += 1) {
|
|
135
|
-
await
|
|
136
|
+
await timers.setTimeout(55);
|
|
136
137
|
|
|
137
138
|
start = Date.now();
|
|
138
139
|
res = await service.ageExtension(10);
|
|
@@ -141,7 +142,7 @@ export abstract class CacheServiceSuite {
|
|
|
141
142
|
assert(res === 30);
|
|
142
143
|
}
|
|
143
144
|
|
|
144
|
-
await
|
|
145
|
+
await timers.setTimeout(210);
|
|
145
146
|
start = Date.now();
|
|
146
147
|
res = await service.ageExtension(10);
|
|
147
148
|
diff = Date.now() - start;
|