@ureq/business 0.0.2 → 0.0.3
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/README.md +129 -0
- package/dist/index.js +95 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +90 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/README.md
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# @ureq/business
|
|
2
|
+
|
|
3
|
+
业务抽象层,提供 Hash 和 Cache 服务的接口定义和默认实现。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @ureq/business
|
|
9
|
+
# 或
|
|
10
|
+
pnpm add @ureq/business
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
> 注意:通常作为 `@ureq/core` 的依赖自动安装,无需单独安装
|
|
14
|
+
|
|
15
|
+
## 功能
|
|
16
|
+
|
|
17
|
+
### HashService
|
|
18
|
+
|
|
19
|
+
提供请求哈希生成功能,用于请求去重和缓存键生成。
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import { DefaultHashService } from '@ureq/business';
|
|
23
|
+
|
|
24
|
+
const hashService = new DefaultHashService();
|
|
25
|
+
|
|
26
|
+
// 生成请求哈希
|
|
27
|
+
const hash = hashService.generateRequestHash(
|
|
28
|
+
'GET',
|
|
29
|
+
'/api/users',
|
|
30
|
+
null,
|
|
31
|
+
{ params: { page: 1 } }
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// 生成字符串哈希
|
|
35
|
+
const strHash = hashService.hashString('some-string');
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### CacheStore
|
|
39
|
+
|
|
40
|
+
提供缓存存储的接口定义。
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
interface CacheStore {
|
|
44
|
+
get<T>(key: string): Promise<T | null>;
|
|
45
|
+
set<T>(key: string, value: T, ttl: number): Promise<void>;
|
|
46
|
+
delete(key: string): Promise<void>;
|
|
47
|
+
clear(): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 接口
|
|
52
|
+
|
|
53
|
+
### HashService
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
interface HashService {
|
|
57
|
+
generateRequestHash(
|
|
58
|
+
method: string,
|
|
59
|
+
url: string,
|
|
60
|
+
data?: any,
|
|
61
|
+
options?: RequestOptions
|
|
62
|
+
): string;
|
|
63
|
+
|
|
64
|
+
hashString(str: string): string;
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### CacheStore
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
interface CacheStore {
|
|
72
|
+
get<T>(key: string): Promise<T | null>;
|
|
73
|
+
set<T>(key: string, value: T, ttl: number): Promise<void>;
|
|
74
|
+
delete(key: string): Promise<void>;
|
|
75
|
+
clear(): Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 自定义实现
|
|
80
|
+
|
|
81
|
+
### 自定义 HashService
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
import { HashService } from '@ureq/business';
|
|
85
|
+
|
|
86
|
+
class MyHashService implements HashService {
|
|
87
|
+
generateRequestHash(method: string, url: string, data?: any, options?: any): string {
|
|
88
|
+
// 自定义哈希生成逻辑
|
|
89
|
+
return `${method}:${url}`;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
hashString(str: string): string {
|
|
93
|
+
// 自定义字符串哈希
|
|
94
|
+
return btoa(str);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 自定义 CacheStore
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
import { CacheStore } from '@ureq/business';
|
|
103
|
+
|
|
104
|
+
class MyCache implements CacheStore {
|
|
105
|
+
async get<T>(key: string): Promise<T | null> {
|
|
106
|
+
// 实现获取逻辑
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async set<T>(key: string, value: T, ttl: number): Promise<void> {
|
|
110
|
+
// 实现存储逻辑
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
async delete(key: string): Promise<void> {
|
|
114
|
+
// 实现删除逻辑
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async clear(): Promise<void> {
|
|
118
|
+
// 实现清空逻辑
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 文档
|
|
124
|
+
|
|
125
|
+
查看完整文档:[https://sunny-117.github.io/ureq](https://sunny-117.github.io/ureq)
|
|
126
|
+
|
|
127
|
+
## License
|
|
128
|
+
|
|
129
|
+
MIT
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,96 @@
|
|
|
1
|
-
'use strict';
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var libHash = require('@ureq/lib-hash');
|
|
4
|
+
var libCacheStore = require('@ureq/lib-cache-store');
|
|
5
|
+
|
|
6
|
+
// src/interfaces/hash.ts
|
|
7
|
+
var DefaultHashService = class {
|
|
8
|
+
generateHash(input) {
|
|
9
|
+
let hash = 0;
|
|
10
|
+
for (let i = 0; i < input.length; i++) {
|
|
11
|
+
const char = input.charCodeAt(i);
|
|
12
|
+
hash = (hash << 5) - hash + char;
|
|
13
|
+
hash = hash & hash;
|
|
14
|
+
}
|
|
15
|
+
return hash.toString(36);
|
|
16
|
+
}
|
|
17
|
+
generateRequestHash(method, url, data, options) {
|
|
18
|
+
const parts = [
|
|
19
|
+
method.toUpperCase(),
|
|
20
|
+
url,
|
|
21
|
+
data ? JSON.stringify(data) : "",
|
|
22
|
+
options ? JSON.stringify(options) : ""
|
|
23
|
+
];
|
|
24
|
+
return this.generateHash(parts.join("|"));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// src/interfaces/cache.ts
|
|
29
|
+
var MemoryCacheStore = class {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.cache = /* @__PURE__ */ new Map();
|
|
32
|
+
}
|
|
33
|
+
get(key) {
|
|
34
|
+
const item = this.cache.get(key);
|
|
35
|
+
if (!item) return void 0;
|
|
36
|
+
if (item.expires && Date.now() > item.expires) {
|
|
37
|
+
this.cache.delete(key);
|
|
38
|
+
return void 0;
|
|
39
|
+
}
|
|
40
|
+
return item.value;
|
|
41
|
+
}
|
|
42
|
+
set(key, value, ttl) {
|
|
43
|
+
const expires = ttl ? Date.now() + ttl : void 0;
|
|
44
|
+
this.cache.set(key, { value, expires });
|
|
45
|
+
}
|
|
46
|
+
delete(key) {
|
|
47
|
+
this.cache.delete(key);
|
|
48
|
+
}
|
|
49
|
+
clear() {
|
|
50
|
+
this.cache.clear();
|
|
51
|
+
}
|
|
52
|
+
has(key) {
|
|
53
|
+
const item = this.cache.get(key);
|
|
54
|
+
if (!item) return false;
|
|
55
|
+
if (item.expires && Date.now() > item.expires) {
|
|
56
|
+
this.cache.delete(key);
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
var LibHashService = class {
|
|
63
|
+
generateHash(input) {
|
|
64
|
+
return libHash.generateHash(input);
|
|
65
|
+
}
|
|
66
|
+
generateRequestHash(method, url, data, options) {
|
|
67
|
+
return libHash.generateRequestHash(method, url, data, options);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
var LibCacheStore = class {
|
|
71
|
+
constructor(store) {
|
|
72
|
+
this.store = store || new libCacheStore.MemoryStore();
|
|
73
|
+
}
|
|
74
|
+
async get(key) {
|
|
75
|
+
return this.store.get(key);
|
|
76
|
+
}
|
|
77
|
+
async set(key, value, ttl) {
|
|
78
|
+
return this.store.set(key, value, ttl);
|
|
79
|
+
}
|
|
80
|
+
async delete(key) {
|
|
81
|
+
return this.store.delete(key);
|
|
82
|
+
}
|
|
83
|
+
async clear() {
|
|
84
|
+
return this.store.clear();
|
|
85
|
+
}
|
|
86
|
+
async has(key) {
|
|
87
|
+
return this.store.has(key);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
exports.DefaultHashService = DefaultHashService;
|
|
92
|
+
exports.LibCacheStore = LibCacheStore;
|
|
93
|
+
exports.LibHashService = LibHashService;
|
|
94
|
+
exports.MemoryCacheStore = MemoryCacheStore;
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
2
96
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interfaces/hash.ts","../src/interfaces/cache.ts","../src/services/hash.ts","../src/services/cache.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/interfaces/hash.ts","../src/interfaces/cache.ts","../src/services/hash.ts","../src/services/cache.ts"],"names":["generateHash","generateRequestHash","MemoryStore"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Hash service interface for generating request identifiers\n */\nexport interface HashService {\n /**\n * Generate a hash from a string input\n */\n generateHash(input: string): string;\n \n /**\n * Generate a hash for a request based on method, URL, data, and options\n */\n generateRequestHash(\n method: string,\n url: string,\n data?: any,\n options?: Record<string, any>\n ): string;\n}\n\n/**\n * Default hash service implementation using simple hash algorithm\n */\nexport class DefaultHashService implements HashService {\n generateHash(input: string): string {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return hash.toString(36);\n }\n\n generateRequestHash(\n method: string,\n url: string,\n data?: any,\n options?: Record<string, any>\n ): string {\n const parts = [\n method.toUpperCase(),\n url,\n data ? JSON.stringify(data) : '',\n options ? JSON.stringify(options) : ''\n ];\n return this.generateHash(parts.join('|'));\n }\n}\n","/**\n * Cache store interface for storing and retrieving cached data\n */\nexport interface CacheStore {\n /**\n * Get a value from the cache\n */\n get<T>(key: string): Promise<T | undefined> | T | undefined;\n \n /**\n * Set a value in the cache with optional TTL\n */\n set<T>(key: string, value: T, ttl?: number): Promise<void> | void;\n \n /**\n * Delete a value from the cache\n */\n delete(key: string): Promise<void> | void;\n \n /**\n * Clear all values from the cache\n */\n clear(): Promise<void> | void;\n \n /**\n * Check if a key exists in the cache\n */\n has(key: string): Promise<boolean> | boolean;\n}\n\n/**\n * Simple in-memory cache store implementation\n */\nexport class MemoryCacheStore implements CacheStore {\n private cache = new Map<string, { value: any; expires?: number }>();\n\n get<T>(key: string): T | undefined {\n const item = this.cache.get(key);\n if (!item) return undefined;\n \n if (item.expires && Date.now() > item.expires) {\n this.cache.delete(key);\n return undefined;\n }\n \n return item.value;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n const expires = ttl ? Date.now() + ttl : undefined;\n this.cache.set(key, { value, expires });\n }\n\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n has(key: string): boolean {\n const item = this.cache.get(key);\n if (!item) return false;\n \n if (item.expires && Date.now() > item.expires) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n}\n","import { generateHash, generateRequestHash } from '@ureq/lib-hash';\nimport { HashService } from '../interfaces/hash.js';\n\n/**\n * Hash service implementation using @ureq/lib-hash\n */\nexport class LibHashService implements HashService {\n generateHash(input: string): string {\n return generateHash(input);\n }\n\n generateRequestHash(\n method: string,\n url: string,\n data?: any,\n options?: Record<string, any>\n ): string {\n return generateRequestHash(method, url, data, options);\n }\n}\n","import { MemoryStore } from '@ureq/lib-cache-store';\nimport { CacheStore } from '../interfaces/cache.js';\n\n/**\n * Cache store implementation using @ureq/lib-cache-store\n */\nexport class LibCacheStore implements CacheStore {\n private store: MemoryStore;\n\n constructor(store?: MemoryStore) {\n this.store = store || new MemoryStore();\n }\n\n async get<T>(key: string): Promise<T | undefined> {\n return this.store.get<T>(key);\n }\n\n async set<T>(key: string, value: T, ttl?: number): Promise<void> {\n return this.store.set(key, value, ttl);\n }\n\n async delete(key: string): Promise<void> {\n return this.store.delete(key);\n }\n\n async clear(): Promise<void> {\n return this.store.clear();\n }\n\n async has(key: string): Promise<boolean> {\n return this.store.has(key);\n }\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,91 @@
|
|
|
1
|
-
import {generateHash,generateRequestHash}from'@ureq/lib-hash';
|
|
1
|
+
import { generateHash, generateRequestHash } from '@ureq/lib-hash';
|
|
2
|
+
import { MemoryStore } from '@ureq/lib-cache-store';
|
|
3
|
+
|
|
4
|
+
// src/interfaces/hash.ts
|
|
5
|
+
var DefaultHashService = class {
|
|
6
|
+
generateHash(input) {
|
|
7
|
+
let hash = 0;
|
|
8
|
+
for (let i = 0; i < input.length; i++) {
|
|
9
|
+
const char = input.charCodeAt(i);
|
|
10
|
+
hash = (hash << 5) - hash + char;
|
|
11
|
+
hash = hash & hash;
|
|
12
|
+
}
|
|
13
|
+
return hash.toString(36);
|
|
14
|
+
}
|
|
15
|
+
generateRequestHash(method, url, data, options) {
|
|
16
|
+
const parts = [
|
|
17
|
+
method.toUpperCase(),
|
|
18
|
+
url,
|
|
19
|
+
data ? JSON.stringify(data) : "",
|
|
20
|
+
options ? JSON.stringify(options) : ""
|
|
21
|
+
];
|
|
22
|
+
return this.generateHash(parts.join("|"));
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// src/interfaces/cache.ts
|
|
27
|
+
var MemoryCacheStore = class {
|
|
28
|
+
constructor() {
|
|
29
|
+
this.cache = /* @__PURE__ */ new Map();
|
|
30
|
+
}
|
|
31
|
+
get(key) {
|
|
32
|
+
const item = this.cache.get(key);
|
|
33
|
+
if (!item) return void 0;
|
|
34
|
+
if (item.expires && Date.now() > item.expires) {
|
|
35
|
+
this.cache.delete(key);
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
return item.value;
|
|
39
|
+
}
|
|
40
|
+
set(key, value, ttl) {
|
|
41
|
+
const expires = ttl ? Date.now() + ttl : void 0;
|
|
42
|
+
this.cache.set(key, { value, expires });
|
|
43
|
+
}
|
|
44
|
+
delete(key) {
|
|
45
|
+
this.cache.delete(key);
|
|
46
|
+
}
|
|
47
|
+
clear() {
|
|
48
|
+
this.cache.clear();
|
|
49
|
+
}
|
|
50
|
+
has(key) {
|
|
51
|
+
const item = this.cache.get(key);
|
|
52
|
+
if (!item) return false;
|
|
53
|
+
if (item.expires && Date.now() > item.expires) {
|
|
54
|
+
this.cache.delete(key);
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var LibHashService = class {
|
|
61
|
+
generateHash(input) {
|
|
62
|
+
return generateHash(input);
|
|
63
|
+
}
|
|
64
|
+
generateRequestHash(method, url, data, options) {
|
|
65
|
+
return generateRequestHash(method, url, data, options);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var LibCacheStore = class {
|
|
69
|
+
constructor(store) {
|
|
70
|
+
this.store = store || new MemoryStore();
|
|
71
|
+
}
|
|
72
|
+
async get(key) {
|
|
73
|
+
return this.store.get(key);
|
|
74
|
+
}
|
|
75
|
+
async set(key, value, ttl) {
|
|
76
|
+
return this.store.set(key, value, ttl);
|
|
77
|
+
}
|
|
78
|
+
async delete(key) {
|
|
79
|
+
return this.store.delete(key);
|
|
80
|
+
}
|
|
81
|
+
async clear() {
|
|
82
|
+
return this.store.clear();
|
|
83
|
+
}
|
|
84
|
+
async has(key) {
|
|
85
|
+
return this.store.has(key);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export { DefaultHashService, LibCacheStore, LibHashService, MemoryCacheStore };
|
|
90
|
+
//# sourceMappingURL=index.mjs.map
|
|
2
91
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interfaces/hash.ts","../src/interfaces/cache.ts","../src/services/hash.ts","../src/services/cache.ts"],"names":[
|
|
1
|
+
{"version":3,"sources":["../src/interfaces/hash.ts","../src/interfaces/cache.ts","../src/services/hash.ts","../src/services/cache.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Hash service interface for generating request identifiers\n */\nexport interface HashService {\n /**\n * Generate a hash from a string input\n */\n generateHash(input: string): string;\n \n /**\n * Generate a hash for a request based on method, URL, data, and options\n */\n generateRequestHash(\n method: string,\n url: string,\n data?: any,\n options?: Record<string, any>\n ): string;\n}\n\n/**\n * Default hash service implementation using simple hash algorithm\n */\nexport class DefaultHashService implements HashService {\n generateHash(input: string): string {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return hash.toString(36);\n }\n\n generateRequestHash(\n method: string,\n url: string,\n data?: any,\n options?: Record<string, any>\n ): string {\n const parts = [\n method.toUpperCase(),\n url,\n data ? JSON.stringify(data) : '',\n options ? JSON.stringify(options) : ''\n ];\n return this.generateHash(parts.join('|'));\n }\n}\n","/**\n * Cache store interface for storing and retrieving cached data\n */\nexport interface CacheStore {\n /**\n * Get a value from the cache\n */\n get<T>(key: string): Promise<T | undefined> | T | undefined;\n \n /**\n * Set a value in the cache with optional TTL\n */\n set<T>(key: string, value: T, ttl?: number): Promise<void> | void;\n \n /**\n * Delete a value from the cache\n */\n delete(key: string): Promise<void> | void;\n \n /**\n * Clear all values from the cache\n */\n clear(): Promise<void> | void;\n \n /**\n * Check if a key exists in the cache\n */\n has(key: string): Promise<boolean> | boolean;\n}\n\n/**\n * Simple in-memory cache store implementation\n */\nexport class MemoryCacheStore implements CacheStore {\n private cache = new Map<string, { value: any; expires?: number }>();\n\n get<T>(key: string): T | undefined {\n const item = this.cache.get(key);\n if (!item) return undefined;\n \n if (item.expires && Date.now() > item.expires) {\n this.cache.delete(key);\n return undefined;\n }\n \n return item.value;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n const expires = ttl ? Date.now() + ttl : undefined;\n this.cache.set(key, { value, expires });\n }\n\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n has(key: string): boolean {\n const item = this.cache.get(key);\n if (!item) return false;\n \n if (item.expires && Date.now() > item.expires) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n}\n","import { generateHash, generateRequestHash } from '@ureq/lib-hash';\nimport { HashService } from '../interfaces/hash.js';\n\n/**\n * Hash service implementation using @ureq/lib-hash\n */\nexport class LibHashService implements HashService {\n generateHash(input: string): string {\n return generateHash(input);\n }\n\n generateRequestHash(\n method: string,\n url: string,\n data?: any,\n options?: Record<string, any>\n ): string {\n return generateRequestHash(method, url, data, options);\n }\n}\n","import { MemoryStore } from '@ureq/lib-cache-store';\nimport { CacheStore } from '../interfaces/cache.js';\n\n/**\n * Cache store implementation using @ureq/lib-cache-store\n */\nexport class LibCacheStore implements CacheStore {\n private store: MemoryStore;\n\n constructor(store?: MemoryStore) {\n this.store = store || new MemoryStore();\n }\n\n async get<T>(key: string): Promise<T | undefined> {\n return this.store.get<T>(key);\n }\n\n async set<T>(key: string, value: T, ttl?: number): Promise<void> {\n return this.store.set(key, value, ttl);\n }\n\n async delete(key: string): Promise<void> {\n return this.store.delete(key);\n }\n\n async clear(): Promise<void> {\n return this.store.clear();\n }\n\n async has(key: string): Promise<boolean> {\n return this.store.has(key);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ureq/business",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Universal request library business logic",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@ureq/lib-hash": "0.0.
|
|
23
|
-
"@ureq/lib-cache-store": "0.0.
|
|
22
|
+
"@ureq/lib-hash": "0.0.3",
|
|
23
|
+
"@ureq/lib-cache-store": "0.0.3"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"tsup": "^8.3.6",
|