@chainlink/external-adapter-framework 0.28.3 → 0.28.4

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/cache/redis.d.ts CHANGED
@@ -1,6 +1,11 @@
1
- import Redis from 'ioredis';
1
+ import Redis, { Result } from 'ioredis';
2
2
  import { Cache, CacheEntry } from './index';
3
3
  import { CacheTypes } from './metrics';
4
+ declare module 'ioredis' {
5
+ interface RedisCommander<Context> {
6
+ setExternalAdapterResponse(key: string, value: string, ttl: number): Result<string, Context>;
7
+ }
8
+ }
4
9
  /**
5
10
  * Redis implementation of a Cache. It uses a simple js Object, storing entries with both
6
11
  * a value and an expiration timestamp. Expired entries are deleted on reads (i.e. no background gc/upkeep).
@@ -11,7 +16,7 @@ export declare class RedisCache<T = unknown> implements Cache<T> {
11
16
  private client;
12
17
  type: CacheTypes;
13
18
  constructor(client: Redis);
14
- loadFunctions(): Promise<void>;
19
+ defineCommands(): void;
15
20
  get(key: string): Promise<Readonly<T> | undefined>;
16
21
  delete(key: string): Promise<void>;
17
22
  set(key: string, value: Readonly<T>, ttl: number): Promise<void>;
package/cache/redis.js CHANGED
@@ -15,29 +15,26 @@ class RedisCache {
15
15
  constructor(client) {
16
16
  this.client = client;
17
17
  this.type = metrics_2.CacheTypes.Redis;
18
- this.loadFunctions();
18
+ this.defineCommands();
19
19
  }
20
- async loadFunctions() {
21
- // Load custom function 'setExternalAdapterResponse' with lua script to redis that will skip overwriting successful cache response if the new value is error response
22
- const source = `#!lua name=ea
23
- redis.register_function('setExternalAdapterResponse', function(keys, args)
24
- local key = keys[1]
25
- local value = args[1]
26
- local ttl = tonumber(args[2])
27
- local json_value = cjson.decode(value)
28
- local key_exists = redis.call('EXISTS', key)
29
- if json_value.errorMessage and key_exists == 1 then
30
- local existing_json_value = cjson.decode(redis.call('GET', key))
31
- if existing_json_value.errorMessage then
32
- return redis.call('SET', key, value, 'PX', ttl)
33
- else
34
- return nil
35
- end
36
- else
37
- return redis.call('SET', key, value, 'PX', ttl)
38
- end
39
- end)`;
40
- this.client.function('LOAD', 'REPLACE', source);
20
+ defineCommands() {
21
+ // Load custom lua script 'setExternalAdapterResponse' to redis that will skip overwriting successful cache response if the new value is error response
22
+ const lua = `local key = KEYS[1]
23
+ local value = ARGV[1]
24
+ local ttl = tonumber(ARGV[2])
25
+ local json_value = cjson.decode(value)
26
+ local key_exists = redis.call('EXISTS', key)
27
+ if json_value.errorMessage and key_exists == 1 then
28
+ local existing_json_value = cjson.decode(redis.call('GET', key))
29
+ if existing_json_value.errorMessage then
30
+ return redis.call('SET', key, value, 'PX', ttl)
31
+ else
32
+ return nil
33
+ end
34
+ else
35
+ return redis.call('SET', key, value, 'PX', ttl)
36
+ end`;
37
+ this.client.defineCommand('setExternalAdapterResponse', { lua, numberOfKeys: 1 });
41
38
  }
42
39
  async get(key) {
43
40
  logger.trace(`Getting key ${key}`);
@@ -58,16 +55,16 @@ class RedisCache {
58
55
  }
59
56
  async set(key, value, ttl) {
60
57
  logger.trace(`Setting key ${key}`);
61
- await this.client.fcall('setExternalAdapterResponse', 1, key, JSON.stringify(value), ttl);
58
+ await this.client.setExternalAdapterResponse(key, JSON.stringify(value), ttl);
62
59
  // Record set command sent to Redis
63
- (0, metrics_1.recordRedisCommandMetric)(metrics_1.CMD_SENT_STATUS.SUCCESS, 'set');
60
+ (0, metrics_1.recordRedisCommandMetric)(metrics_1.CMD_SENT_STATUS.SUCCESS, 'setExternalAdapterResponse');
64
61
  }
65
62
  async setMany(entries, ttl) {
66
63
  logger.trace(`Setting a bunch of keys`);
67
64
  // Unfortunately, there's no ttl for mset
68
65
  let chain = this.client.multi();
69
66
  for (const entry of entries) {
70
- chain = chain.fcall('setExternalAdapterResponse', 1, entry.key, JSON.stringify(entry.value), ttl);
67
+ chain = chain.setExternalAdapterResponse(entry.key, JSON.stringify(entry.value), ttl);
71
68
  }
72
69
  await chain.exec();
73
70
  // Loop again, but this time to record these in metrics
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/cache/redis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/cache/redis.ts"],"names":[],"mappings":"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"}
package/cache/response.js CHANGED
@@ -22,12 +22,16 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
25
28
  Object.defineProperty(exports, "__esModule", { value: true });
26
29
  exports.ResponseCache = void 0;
27
30
  const util_1 = require("../util");
28
31
  const _1 = require("./");
29
32
  const cacheMetrics = __importStar(require("./metrics"));
30
33
  const utils_1 = require("../validation/utils");
34
+ const censor_list_1 = __importDefault(require("../util/censor/censor-list"));
31
35
  const logger = (0, util_1.makeLogger)('ResponseCache');
32
36
  /**
33
37
  * Special type of cache to store responses for this adapter.
@@ -46,10 +50,28 @@ class ResponseCache {
46
50
  * @param results - the entries to write to the cache
47
51
  */
48
52
  async write(transportName, results) {
53
+ const censorList = censor_list_1.default.getAll();
49
54
  const entries = results.map((r) => {
55
+ let censoredResponse;
56
+ if (!censorList.length) {
57
+ censoredResponse = r.response;
58
+ }
59
+ else {
60
+ try {
61
+ censoredResponse = (0, util_1.censor)(r.response, censorList, true);
62
+ }
63
+ catch (error) {
64
+ logger.error(`Error censoring response: ${error}`);
65
+ censoredResponse = {
66
+ statusCode: 502,
67
+ errorMessage: 'Response could not be censored due to an error',
68
+ timestamps: r.response.timestamps,
69
+ };
70
+ }
71
+ }
50
72
  const response = {
51
- ...r.response,
52
- statusCode: r.response.statusCode || 200,
73
+ ...censoredResponse,
74
+ statusCode: censoredResponse.statusCode || 200,
53
75
  };
54
76
  if (this.adapterSettings.METRICS_ENABLED &&
55
77
  this.adapterSettings.EXPERIMENTAL_METRICS_ENABLED) {
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/cache/response.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,kCAOgB;AAEhB,yBAA8D;AAC9D,wDAAyC;AACzC,+CAA+C;AAE/C,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,eAAe,CAAC,CAAA;AAE1C;;GAEG;AACH,MAAa,aAAa;IAYxB,YAAY,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EACf,YAAY,GAOb;QACC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAA8C,CAAA;QACxE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,aAAqB,EAAE,OAAuC;QACxE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,MAAM,QAAQ,GAAmC;gBAC/C,GAAG,CAAC,CAAC,QAAQ;gBACb,UAAU,EAAG,CAAC,CAAC,QAA6C,CAAC,UAAU,IAAI,GAAG;aAC/E,CAAA;YAED,IACE,IAAI,CAAC,eAAe,CAAC,eAAe;gBACpC,IAAI,CAAC,eAAe,CAAC,4BAA4B,EACjD;gBACA,QAAQ,CAAC,IAAI,GAAG;oBACd,OAAO,EAAE;wBACP,MAAM,EAAE,IAAA,kBAAe,EACrB;4BACE,eAAe,EAAE,IAAI,CAAC,eAAe;4BACrC,eAAe,EAAE,IAAI,CAAC,eAAe;yBACtC,EACD,CAAC,CAAC,MAAM,CACT;qBACF;iBACF,CAAA;aACF;YAED,IAAI,QAAQ,CAAC,UAAU,EAAE,2BAA2B,KAAK,SAAS,EAAE;gBAClE,MAAM,kBAAkB,GAAG,iBAAS,CAAC,iBAAiB,EAAE,CAAA;gBACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAA;gBAClF,IAAI,KAAK,EAAE;oBACT,MAAM,CAAC,IAAI,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAA;iBAC5D;aACF;YAED,OAAO;gBACL,GAAG,EAAE,IAAA,oBAAiB,EAAC;oBACrB,aAAa;oBACb,IAAI,EAAE,CAAC,CAAC,MAAM;oBACd,eAAe,EAAE,IAAI,CAAC,eAAe;oBACrC,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;iBACtC,CAAC;gBACF,KAAK,EAAE,QAAQ;aACP,CAAA;QACZ,CAAC,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAA;QAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE;YACpC,wGAAwG;YACxG,MAAM,QAAQ,GAAG,KAAmC,CAAA;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAA;YAC7C,IAAI,MAAM,EAAE;gBACV,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAA;gBACrE,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAA;gBAE/D,0EAA0E;gBAC1E,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC1E,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAA;aAC7C;SACF;QAED,OAAM;IACR,CAAC;CACF;AAtGD,sCAsGC"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/cache/response.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainlink/external-adapter-framework",
3
- "version": "0.28.3",
3
+ "version": "0.28.4",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "dependencies": {
@@ -18,8 +18,8 @@
18
18
  "build": "mkdir -p ./dist/src && cp package.json dist/src && cp README.md dist/src && tsc",
19
19
  "dev": "DEBUG=true tsnd --respawn --transpile-only --project tsconfig.json './src/test.ts'",
20
20
  "generate-docs": "typedoc src/**/*.ts",
21
- "lint-fix": "eslint --max-warnings=0 --fix ./src && prettier --write ./src/**/*.ts ./*.{json,js,yaml}",
22
- "lint": "eslint --max-warnings=0 ./src && prettier --check ./src/**/*.ts ./*.{json,js,yaml}",
21
+ "lint-fix": "eslint --max-warnings=0 --fix . && prettier --write ./src/**/*.ts ./test/**/*.ts ./*.{json,js,yaml}",
22
+ "lint": "eslint --max-warnings=0 . && prettier --check ./src/**/*.ts ./test/**/*.ts ./*.{json,js,yaml}",
23
23
  "portal-path": "echo \"portal:$(readlink -f ./dist/src)\"",
24
24
  "start": "ts-node -e 'import(`./src/examples/${process.argv[1]}/src/index`).then(ea => ea.server())'",
25
25
  "test-debug": "EA_HOST=localhost LOG_LEVEL=trace DEBUG=true EA_PORT=0 c8 ava --verbose",
package/util/logger.d.ts CHANGED
@@ -55,4 +55,4 @@ export declare const makeLogger: (layer: string) => pino.Logger<{
55
55
  } | undefined;
56
56
  } & pino.ChildLoggerOptions>;
57
57
  export declare const loggingContextMiddleware: (req: AdapterRequest, res: FastifyReply, done: HookHandlerDoneFunction) => void;
58
- export declare function censor(obj: any, censorList: CensorKeyValue[]): any;
58
+ export declare function censor(obj: any, censorList: CensorKeyValue[], throwOnError?: boolean): any;
package/util/logger.js CHANGED
@@ -115,7 +115,7 @@ const loggingContextMiddleware = (req, res, done) => {
115
115
  exports.loggingContextMiddleware = loggingContextMiddleware;
116
116
  // Obj is typed as "any" because it could be a variety of structures in the logger
117
117
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
- function censor(obj, censorList) {
118
+ function censor(obj, censorList, throwOnError = false) {
119
119
  let stringified = '';
120
120
  try {
121
121
  // JSON.stringify(obj) will fail if obj contains a circular reference.
@@ -123,6 +123,9 @@ function censor(obj, censorList) {
123
123
  stringified = JSON.stringify(obj);
124
124
  }
125
125
  catch (e) {
126
+ if (throwOnError) {
127
+ throw e;
128
+ }
126
129
  return '[Unknown]';
127
130
  }
128
131
  censorList.forEach((entry) => {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/util/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,sCAAkD;AAGlD,mCAAmC;AACnC,uDAAoD;AACpD,uEAAiE;AAEpD,QAAA,iBAAiB,GAAG,IAAI,oCAAiB,EAAE,CAAA;AAMxD,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE;QACP,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,wCAAwC;QAChD,aAAa,EAAE,wDAAwD;QACvE,aAAa,EAAE,uBAAuB;KACvC;CACF,CAAA;AAED,wEAAwE;AACxE,MAAM,UAAU,GAAG,IAAA,cAAI,EAAC;IACtB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,+BAAsB,CAAC,SAAS,CAAC,OAAO;IAC1F,UAAU,EAAE;QACV,KAAK,CAAC,KAAK;YACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QACzB,CAAC;KACF;IACD,KAAK,EAAE;QACL,SAAS,CAAC,SAAS,EAAE,MAAM;YACzB,iCAAiC;YACjC,MAAM,UAAU,GAAG,qBAAU,CAAC,MAAM,EAAE,CAAA;YACtC,OAAO,MAAM,CAAC,KAAK,CACjB,IAAI,EACJ,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAA2B,CAC1E,CAAA;QACH,CAAC;KACF;IACD,KAAK;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,OAAO,EAAE;YACrD,MAAM,KAAK,GAAG,yBAAiB,CAAC,QAAQ,EAAW,CAAA;YACnD,IAAI,KAAK,EAAE;gBACT,OAAO;oBACL,aAAa,EAAE,KAAK,CAAC,aAAa;iBACnC,CAAA;aACF;SACF;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IACD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;CACxE,CAAC,CAAA;AAEW,QAAA,MAAM,GAAG;IACpB,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,wBAAwB;IACxB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,yBAAyB;IACzB,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,YAAY;IACZ,wBAAwB;CACzB,CAAA;AAEM,MAAM,YAAY,GAAG,CAAC,MAAgB,EAAE,EAAE;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;IACd,OAAO,GAAG,EAAE;QACV,KAAK,EAAE,CAAA;QACP,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,KAAK,GAAG,CAAC,CAAA;SACV;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,CAAA;AACH,CAAC,CAAA;AATY,QAAA,YAAY,gBASxB;AAED,MAAM,YAAY,GAAG,IAAA,oBAAY,EAAC,cAAM,CAAC,CAAA;AAEzC;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAC1C,UAAU,CAAC,KAAK,CAAC;IACf,KAAK;IACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;CACpE,CAAC,CAAA;AAJS,QAAA,UAAU,cAInB;AAEG,MAAM,wBAAwB,GAAG,CACtC,GAAmB,EACnB,GAAiB,EACjB,IAA6B,EAC7B,EAAE;IACF,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,IAAA,mBAAU,GAAE,CAAA;IACrE,yBAAiB,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE;QAC3D,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AATY,QAAA,wBAAwB,4BASpC;AAED,kFAAkF;AAClF,8DAA8D;AAC9D,SAAgB,MAAM,CAAC,GAAQ,EAAE,UAA4B;IAC3D,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,IAAI;QACF,sEAAsE;QACtE,8DAA8D;QAC9D,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;KAClC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,WAAW,CAAA;KACnB;IACD,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAChC,CAAC;AAbD,wBAaC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/util/logger.ts"],"names":[],"mappings":"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"}