@sphereon/ssi-sdk.resource-resolver 0.30.2-feature.SPRIND.77.134 → 0.30.2-feature.SPRIND.83.208
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/dist/agent/ResourceResolver.d.ts +2 -0
- package/dist/agent/ResourceResolver.d.ts.map +1 -1
- package/dist/agent/ResourceResolver.js +24 -1
- package/dist/agent/ResourceResolver.js.map +1 -1
- package/dist/types/IResourceResolver.d.ts +8 -1
- package/dist/types/IResourceResolver.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/agent/ResourceResolver.ts +25 -2
- package/src/types/IResourceResolver.ts +11 -3
@@ -9,10 +9,12 @@ export declare class ResourceResolver implements IAgentPlugin {
|
|
9
9
|
private readonly defaultStoreId;
|
10
10
|
private readonly defaultNamespace;
|
11
11
|
private readonly defaultTtl;
|
12
|
+
private readonly detectLocation;
|
12
13
|
private readonly _resourceStores;
|
13
14
|
constructor(options?: ResourceResolverOptions);
|
14
15
|
/** {@inheritDoc IResourceResolver.resourceResolve} */
|
15
16
|
private resourceResolve;
|
17
|
+
private retrieveLocation;
|
16
18
|
/** {@inheritDoc IResourceResolver.resourceClearAllResources} */
|
17
19
|
private resourceClearAllResources;
|
18
20
|
/** {@inheritDoc IResourceResolver.resourceDefaultStoreId} */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ResourceResolver.d.ts","sourceRoot":"","sources":["../../src/agent/ResourceResolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAS3C,OAAO,EAIL,iBAAiB,EAKjB,uBAAuB,EAIxB,MAAM,4BAA4B,CAAA;AAEnC;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,QAAQ,CAAC,MAAM,MAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAMlC;IAED,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuC;gBAE3D,OAAO,CAAC,EAAE,uBAAuB;
|
1
|
+
{"version":3,"file":"ResourceResolver.d.ts","sourceRoot":"","sources":["../../src/agent/ResourceResolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAS3C,OAAO,EAIL,iBAAiB,EAKjB,uBAAuB,EAIxB,MAAM,4BAA4B,CAAA;AAEnC;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,QAAQ,CAAC,MAAM,MAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAMlC;IAED,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuC;gBAE3D,OAAO,CAAC,EAAE,uBAAuB;IA8B7C,sDAAsD;YACxC,eAAe;YA0Df,gBAAgB;IAc9B,gEAAgE;YAClD,yBAAyB;IAOvC,6DAA6D;YAC/C,sBAAsB;IAIpC,+DAA+D;YACjD,wBAAwB;IAItC,yDAAyD;YAC3C,kBAAkB;YAIlB,WAAW;YAUX,eAAe;IAe7B,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,MAAM;CAKf"}
|
@@ -50,10 +50,11 @@ class ResourceResolver {
|
|
50
50
|
resourceDefaultNamespace: this.resourceDefaultNamespace.bind(this),
|
51
51
|
resourceDefaultTtl: this.resourceDefaultTtl.bind(this),
|
52
52
|
};
|
53
|
-
const { defaultStore, defaultNamespace, resourceStores, ttl } = options !== null && options !== void 0 ? options : {};
|
53
|
+
const { defaultStore, defaultNamespace, resourceStores, ttl, detectLocation } = options !== null && options !== void 0 ? options : {};
|
54
54
|
this.defaultStoreId = defaultStore !== null && defaultStore !== void 0 ? defaultStore : '_default';
|
55
55
|
this.defaultNamespace = defaultNamespace !== null && defaultNamespace !== void 0 ? defaultNamespace : 'resources';
|
56
56
|
this.defaultTtl = ttl !== null && ttl !== void 0 ? ttl : 3600;
|
57
|
+
this.detectLocation = detectLocation !== null && detectLocation !== void 0 ? detectLocation : false;
|
57
58
|
if (resourceStores && resourceStores instanceof Map) {
|
58
59
|
this._resourceStores = resourceStores;
|
59
60
|
}
|
@@ -84,10 +85,15 @@ class ResourceResolver {
|
|
84
85
|
headers: new cross_fetch_1.Headers({ 'Content-Type': 'application/json' })
|
85
86
|
});
|
86
87
|
}
|
88
|
+
let location;
|
89
|
+
if (this.detectLocation) {
|
90
|
+
location = yield this.retrieveLocation(input, context);
|
91
|
+
}
|
87
92
|
const response = yield (0, cross_fetch_1.default)(input, init);
|
88
93
|
if (!(resolveOpts === null || resolveOpts === void 0 ? void 0 : resolveOpts.skipPersistence) && (response.status >= 200 && response.status < 300)) {
|
89
94
|
const serializedResponse = yield (0, ResourceResolverUtils_1.serializeResponse)(response);
|
90
95
|
const resource = {
|
96
|
+
location,
|
91
97
|
response: serializedResponse,
|
92
98
|
resourceType,
|
93
99
|
insertedAt: Date.now(),
|
@@ -107,6 +113,23 @@ class ResourceResolver {
|
|
107
113
|
return response;
|
108
114
|
});
|
109
115
|
}
|
116
|
+
retrieveLocation(input, context) {
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
118
|
+
let url;
|
119
|
+
if (input instanceof Request && input.url !== undefined && input.url !== null) {
|
120
|
+
url = new URL(input.url);
|
121
|
+
}
|
122
|
+
else if (input instanceof URL) {
|
123
|
+
url = input;
|
124
|
+
}
|
125
|
+
else {
|
126
|
+
throw Error(`input type is required to be RequestInfo | URL`);
|
127
|
+
}
|
128
|
+
return yield context.agent.lookupLocation({
|
129
|
+
ipOrHostname: url.hostname
|
130
|
+
});
|
131
|
+
});
|
132
|
+
}
|
110
133
|
/** {@inheritDoc IResourceResolver.resourceClearAllResources} */
|
111
134
|
resourceClearAllResources(args, context) {
|
112
135
|
return __awaiter(this, void 0, void 0, function* () {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ResourceResolver.js","sourceRoot":"","sources":["../../src/agent/ResourceResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2EAKwC;AAExC,2DAAsD;AACtD,oCAAiC;AACjC,0EAKuC;AAgBvC;;GAEG;AACH,MAAa,gBAAgB;
|
1
|
+
{"version":3,"file":"ResourceResolver.js","sourceRoot":"","sources":["../../src/agent/ResourceResolver.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { IKeyValueStore, ValueStoreType } from '@sphereon/ssi-sdk.kv-store-temp';
|
2
2
|
import { IAgentContext, IPluginMethodMap } from '@veramo/core';
|
3
|
+
import { IAnomalyDetection } from "@sphereon/ssi-sdk.anomaly-detection";
|
3
4
|
export interface IResourceResolver extends IPluginMethodMap {
|
4
5
|
resourceResolve(args: ResolveArgs, context: RequiredContext): Promise<Response>;
|
5
6
|
resourceClearAllResources(args: ClearAllResourcesArgs, context: RequiredContext): Promise<boolean>;
|
@@ -12,6 +13,7 @@ export type ResourceResolverOptions = {
|
|
12
13
|
defaultNamespace?: string;
|
13
14
|
resourceStores?: Map<string, IKeyValueStore<Resource>> | IKeyValueStore<Resource>;
|
14
15
|
ttl?: number;
|
16
|
+
detectLocation?: boolean;
|
15
17
|
};
|
16
18
|
export type ResolveArgs = {
|
17
19
|
input: RequestInfo | URL;
|
@@ -58,7 +60,12 @@ export type StoreArgs<T extends ValueStoreType> = {
|
|
58
60
|
stores: Map<string, IKeyValueStore<T>>;
|
59
61
|
storeId?: string;
|
60
62
|
};
|
63
|
+
export type Location = {
|
64
|
+
continent?: string;
|
65
|
+
country?: string;
|
66
|
+
};
|
61
67
|
export type Resource = {
|
68
|
+
location?: Location | null;
|
62
69
|
response: SerializedResponse;
|
63
70
|
resourceType: ResourceType;
|
64
71
|
insertedAt: number;
|
@@ -72,5 +79,5 @@ export type SerializedResponse = {
|
|
72
79
|
};
|
73
80
|
body: string;
|
74
81
|
};
|
75
|
-
export type RequiredContext = IAgentContext<
|
82
|
+
export type RequiredContext = IAgentContext<IAnomalyDetection>;
|
76
83
|
//# sourceMappingURL=IResourceResolver.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"IResourceResolver.d.ts","sourceRoot":"","sources":["../../src/types/IResourceResolver.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"IResourceResolver.d.ts","sourceRoot":"","sources":["../../src/types/IResourceResolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sphereon/ssi-sdk.resource-resolver",
|
3
|
-
"version": "0.30.2-feature.SPRIND.
|
3
|
+
"version": "0.30.2-feature.SPRIND.83.208+ce297f59",
|
4
4
|
"source": "src/index.ts",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -14,14 +14,15 @@
|
|
14
14
|
"build:clean": "tsc --build --clean && tsc --build"
|
15
15
|
},
|
16
16
|
"dependencies": {
|
17
|
-
"@sphereon/ssi-sdk.
|
17
|
+
"@sphereon/ssi-sdk.anomaly-detection": "0.30.2-feature.SPRIND.83.208+ce297f59",
|
18
|
+
"@sphereon/ssi-sdk.kv-store-temp": "0.30.2-feature.SPRIND.83.208+ce297f59",
|
18
19
|
"cross-fetch": "^3.1.8",
|
19
20
|
"debug": "^4.3.5",
|
20
21
|
"typeorm": "^0.3.20",
|
21
22
|
"uint8arrays": "^3.1.1"
|
22
23
|
},
|
23
24
|
"devDependencies": {
|
24
|
-
"@sphereon/ssi-sdk.agent-config": "0.30.2-feature.SPRIND.
|
25
|
+
"@sphereon/ssi-sdk.agent-config": "0.30.2-feature.SPRIND.83.208+ce297f59",
|
25
26
|
"@veramo/remote-client": "4.2.0",
|
26
27
|
"@veramo/remote-server": "4.2.0",
|
27
28
|
"nock": "^13.5.4",
|
@@ -48,5 +49,5 @@
|
|
48
49
|
"Resource Management",
|
49
50
|
"Caching"
|
50
51
|
],
|
51
|
-
"gitHead": "
|
52
|
+
"gitHead": "ce297f59acf4922603d6059eb86b0dabe3cbc4c5"
|
52
53
|
}
|
@@ -44,6 +44,7 @@ export class ResourceResolver implements IAgentPlugin {
|
|
44
44
|
private readonly defaultStoreId: string
|
45
45
|
private readonly defaultNamespace: string
|
46
46
|
private readonly defaultTtl: number
|
47
|
+
private readonly detectLocation: boolean
|
47
48
|
private readonly _resourceStores: Map<string, IKeyValueStore<Resource>>
|
48
49
|
|
49
50
|
constructor(options?: ResourceResolverOptions) {
|
@@ -51,12 +52,14 @@ export class ResourceResolver implements IAgentPlugin {
|
|
51
52
|
defaultStore,
|
52
53
|
defaultNamespace,
|
53
54
|
resourceStores,
|
54
|
-
ttl
|
55
|
+
ttl,
|
56
|
+
detectLocation
|
55
57
|
} = options ?? {}
|
56
58
|
|
57
59
|
this.defaultStoreId = defaultStore ?? '_default'
|
58
60
|
this.defaultNamespace = defaultNamespace ?? 'resources'
|
59
61
|
this.defaultTtl = ttl ?? 3600
|
62
|
+
this.detectLocation = detectLocation ?? false
|
60
63
|
|
61
64
|
if (resourceStores && resourceStores instanceof Map) {
|
62
65
|
this._resourceStores = resourceStores
|
@@ -101,10 +104,16 @@ export class ResourceResolver implements IAgentPlugin {
|
|
101
104
|
});
|
102
105
|
}
|
103
106
|
|
107
|
+
let location
|
108
|
+
if (this.detectLocation) {
|
109
|
+
location = await this.retrieveLocation(input, context)
|
110
|
+
}
|
111
|
+
|
104
112
|
const response = await fetch(input, init)
|
105
113
|
if (!resolveOpts?.skipPersistence && (response.status >= 200 && response.status < 300)) {
|
106
114
|
const serializedResponse = await serializeResponse(response);
|
107
|
-
const resource = {
|
115
|
+
const resource: Resource = {
|
116
|
+
location,
|
108
117
|
response: serializedResponse,
|
109
118
|
resourceType,
|
110
119
|
insertedAt: Date.now(),
|
@@ -127,6 +136,20 @@ export class ResourceResolver implements IAgentPlugin {
|
|
127
136
|
return response
|
128
137
|
}
|
129
138
|
|
139
|
+
private async retrieveLocation(input: RequestInfo | URL, context: RequiredContext) {
|
140
|
+
let url: URL
|
141
|
+
if (input instanceof Request && input.url !== undefined && input.url !== null) {
|
142
|
+
url = new URL(input.url)
|
143
|
+
} else if (input instanceof URL) {
|
144
|
+
url = input
|
145
|
+
} else {
|
146
|
+
throw Error(`input type is required to be RequestInfo | URL`)
|
147
|
+
}
|
148
|
+
return await context.agent.lookupLocation({
|
149
|
+
ipOrHostname: url.hostname
|
150
|
+
})
|
151
|
+
}
|
152
|
+
|
130
153
|
/** {@inheritDoc IResourceResolver.resourceClearAllResources} */
|
131
154
|
private async resourceClearAllResources(args: ClearAllResourcesArgs, context: RequiredContext): Promise<boolean> {
|
132
155
|
const { storeId } = args
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
1
|
+
import {IKeyValueStore, ValueStoreType} from '@sphereon/ssi-sdk.kv-store-temp'
|
2
|
+
import {IAgentContext, IPluginMethodMap} from '@veramo/core'
|
3
|
+
import {IAnomalyDetection} from "@sphereon/ssi-sdk.anomaly-detection";
|
3
4
|
|
4
5
|
export interface IResourceResolver extends IPluginMethodMap {
|
5
6
|
resourceResolve(args: ResolveArgs, context: RequiredContext): Promise<Response>
|
@@ -14,6 +15,7 @@ export type ResourceResolverOptions = {
|
|
14
15
|
defaultNamespace?: string
|
15
16
|
resourceStores?: Map<string, IKeyValueStore<Resource>> | IKeyValueStore<Resource>
|
16
17
|
ttl?: number
|
18
|
+
detectLocation?: boolean
|
17
19
|
}
|
18
20
|
|
19
21
|
export type ResolveArgs = {
|
@@ -71,7 +73,13 @@ export type StoreArgs<T extends ValueStoreType> = {
|
|
71
73
|
storeId?: string
|
72
74
|
}
|
73
75
|
|
76
|
+
export type Location = {
|
77
|
+
continent?: string
|
78
|
+
country?: string
|
79
|
+
}
|
80
|
+
|
74
81
|
export type Resource = {
|
82
|
+
location?: Location | null
|
75
83
|
response: SerializedResponse
|
76
84
|
resourceType: ResourceType
|
77
85
|
insertedAt: number
|
@@ -85,4 +93,4 @@ export type SerializedResponse = {
|
|
85
93
|
body: string
|
86
94
|
}
|
87
95
|
|
88
|
-
export type RequiredContext = IAgentContext<
|
96
|
+
export type RequiredContext = IAgentContext<IAnomalyDetection>
|