@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.
@@ -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;IA4B7C,sDAAsD;YACxC,eAAe;IAoD7B,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"}
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":"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"}
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<never>;
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":"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"}
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.77.134+c4e1e78e",
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.kv-store-temp": "0.30.2-feature.SPRIND.77.134+c4e1e78e",
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.77.134+c4e1e78e",
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": "c4e1e78eafc984160067d7008ce1b8baa5b122bc"
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 { IKeyValueStore, ValueStoreType } from '@sphereon/ssi-sdk.kv-store-temp'
2
- import { IAgentContext, IPluginMethodMap } from '@veramo/core'
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<never>
96
+ export type RequiredContext = IAgentContext<IAnomalyDetection>