slonik-interceptor-query-logging 1.3.4 → 1.3.8

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.
@@ -45,7 +45,7 @@ const createQueryLoggingInterceptor = userConfiguration => {
45
45
  executionTime: (0, _prettyMs.default)(Number(process.hrtime.bigint() - context.queryInputTime) / 1000000),
46
46
  rowCount
47
47
  }, 'query execution result');
48
- return result;
48
+ return null;
49
49
  },
50
50
  beforeQueryExecution: async (context, query) => {
51
51
  let stackTrace;
@@ -58,7 +58,7 @@ export default (userConfiguration?: UserConfigurationType): InterceptorType => {
58
58
  rowCount,
59
59
  }, 'query execution result');
60
60
 
61
- return result;
61
+ return null;
62
62
  },
63
63
  beforeQueryExecution: async (context, query) => {
64
64
  let stackTrace;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/factories/createQueryLoggingInterceptor.js"],"names":["stringifyCallSite","callSite","fileName","lineNumber","columnNumber","defaultConfiguration","logValues","userConfiguration","configuration","afterQueryExecution","context","query","result","rowCount","notice","notices","message","log","info","autoExplain","debug","executionTime","Number","process","hrtime","bigint","queryInputTime","beforeQueryExecution","stackTrace","includes","values","value","Buffer","isBuffer","byteLength","sql","queryExecutionError","error"],"mappings":"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","sourcesContent":["// @flow\n\nimport {\n serializeError,\n} from 'serialize-error';\nimport type {\n InterceptorType,\n} from 'slonik';\nimport {\n filter,\n map,\n} from 'inline-loops.macro';\nimport prettyMs from 'pretty-ms';\nimport {\n getAutoExplainPayload,\n isAutoExplainJsonMessage,\n} from '../utilities';\n\n/**\n * @property logValues Dictates whether to include parameter values used to execute the query. (default: true)\n */\ntype UserConfigurationType = {|\n +logValues: boolean,\n|};\n\nconst stringifyCallSite = (callSite) => {\n return (callSite.fileName || '') + ':' + callSite.lineNumber + ':' + callSite.columnNumber;\n};\n\nconst defaultConfiguration = {\n logValues: true,\n};\n\nexport default (userConfiguration?: UserConfigurationType): InterceptorType => {\n const configuration = {\n ...defaultConfiguration,\n ...userConfiguration,\n };\n\n return {\n afterQueryExecution: (context, query, result) => {\n let rowCount: number | null = null;\n\n if (result.rowCount) {\n rowCount = result.rowCount;\n }\n\n for (const notice of result.notices) {\n if (isAutoExplainJsonMessage(notice.message)) {\n context.log.info({\n autoExplain: getAutoExplainPayload(notice.message),\n }, 'auto explain');\n }\n }\n\n context.log.debug({\n executionTime: prettyMs(Number(process.hrtime.bigint() - context.queryInputTime) / 1000000),\n rowCount,\n }, 'query execution result');\n\n return result;\n },\n beforeQueryExecution: async (context, query) => {\n let stackTrace;\n\n if (context.stackTrace) {\n stackTrace = map(\n filter(context.stackTrace, (callSite) => {\n // Hide the internal call sites.\n return callSite.fileName !== null && !callSite.fileName.includes('slonik') && !callSite.fileName.includes('next_tick');\n }),\n (callSite) => {\n return stringifyCallSite(callSite);\n },\n );\n }\n\n let values;\n\n if (configuration.logValues) {\n values = map(query.values, (value) => {\n if (Buffer.isBuffer(value)) {\n return '[Buffer ' + value.byteLength + ']';\n }\n\n return value;\n });\n }\n\n context.log.debug({\n sql: query.sql,\n stackTrace,\n values,\n }, 'executing query');\n\n return null;\n },\n queryExecutionError: (context, query, error) => {\n context.log.error({\n error: serializeError(error),\n }, 'query execution produced an error');\n\n return null;\n },\n };\n};\n"],"file":"createQueryLoggingInterceptor.js"}
1
+ {"version":3,"sources":["../../src/factories/createQueryLoggingInterceptor.js"],"names":["stringifyCallSite","callSite","fileName","lineNumber","columnNumber","defaultConfiguration","logValues","userConfiguration","configuration","afterQueryExecution","context","query","result","rowCount","notice","notices","message","log","info","autoExplain","debug","executionTime","Number","process","hrtime","bigint","queryInputTime","beforeQueryExecution","stackTrace","includes","values","value","Buffer","isBuffer","byteLength","sql","queryExecutionError","error"],"mappings":"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","sourcesContent":["// @flow\n\nimport {\n serializeError,\n} from 'serialize-error';\nimport type {\n InterceptorType,\n} from 'slonik';\nimport {\n filter,\n map,\n} from 'inline-loops.macro';\nimport prettyMs from 'pretty-ms';\nimport {\n getAutoExplainPayload,\n isAutoExplainJsonMessage,\n} from '../utilities';\n\n/**\n * @property logValues Dictates whether to include parameter values used to execute the query. (default: true)\n */\ntype UserConfigurationType = {|\n +logValues: boolean,\n|};\n\nconst stringifyCallSite = (callSite) => {\n return (callSite.fileName || '') + ':' + callSite.lineNumber + ':' + callSite.columnNumber;\n};\n\nconst defaultConfiguration = {\n logValues: true,\n};\n\nexport default (userConfiguration?: UserConfigurationType): InterceptorType => {\n const configuration = {\n ...defaultConfiguration,\n ...userConfiguration,\n };\n\n return {\n afterQueryExecution: (context, query, result) => {\n let rowCount: number | null = null;\n\n if (result.rowCount) {\n rowCount = result.rowCount;\n }\n\n for (const notice of result.notices) {\n if (isAutoExplainJsonMessage(notice.message)) {\n context.log.info({\n autoExplain: getAutoExplainPayload(notice.message),\n }, 'auto explain');\n }\n }\n\n context.log.debug({\n executionTime: prettyMs(Number(process.hrtime.bigint() - context.queryInputTime) / 1000000),\n rowCount,\n }, 'query execution result');\n\n return null;\n },\n beforeQueryExecution: async (context, query) => {\n let stackTrace;\n\n if (context.stackTrace) {\n stackTrace = map(\n filter(context.stackTrace, (callSite) => {\n // Hide the internal call sites.\n return callSite.fileName !== null && !callSite.fileName.includes('slonik') && !callSite.fileName.includes('next_tick');\n }),\n (callSite) => {\n return stringifyCallSite(callSite);\n },\n );\n }\n\n let values;\n\n if (configuration.logValues) {\n values = map(query.values, (value) => {\n if (Buffer.isBuffer(value)) {\n return '[Buffer ' + value.byteLength + ']';\n }\n\n return value;\n });\n }\n\n context.log.debug({\n sql: query.sql,\n stackTrace,\n values,\n }, 'executing query');\n\n return null;\n },\n queryExecutionError: (context, query, error) => {\n context.log.error({\n error: serializeError(error),\n }, 'query execution produced an error');\n\n return null;\n },\n };\n};\n"],"file":"createQueryLoggingInterceptor.js"}
package/package.json CHANGED
@@ -5,46 +5,46 @@
5
5
  "url": "http://gajus.com"
6
6
  },
7
7
  "ava": {
8
+ "babel": {
9
+ "compileAsTests": [
10
+ "test/helpers/**/*"
11
+ ]
12
+ },
8
13
  "files": [
9
- "test/**/*"
10
- ],
11
- "helpers": [
12
- "test/helpers/**/*"
14
+ "test/slonik-interceptor-query-logging/**/*"
13
15
  ],
14
16
  "require": [
15
17
  "@babel/register"
16
- ],
17
- "sources": [
18
- "src/**/*"
19
18
  ]
20
19
  },
21
20
  "dependencies": {
22
- "crack-json": "^1.2.1",
23
- "pretty-ms": "^5.0.0",
21
+ "crack-json": "^1.3.0",
22
+ "pretty-ms": "^6.0.0",
24
23
  "serialize-error": "^5.0.0",
25
- "slonik": "^19.5.0"
24
+ "slonik": "^22.4.0"
26
25
  },
27
26
  "description": "Logs Slonik queries.",
28
27
  "devDependencies": {
29
- "@babel/cli": "^7.6.4",
30
- "@babel/core": "^7.6.4",
31
- "@babel/plugin-transform-flow-strip-types": "^7.6.3",
32
- "@babel/preset-env": "^7.6.3",
33
- "@babel/register": "^7.6.2",
34
- "ava": "^2.4.0",
35
- "babel-plugin-istanbul": "^5.2.0",
36
- "babel-plugin-macros": "^2.6.1",
28
+ "@ava/babel": "^1.0.1",
29
+ "@babel/cli": "^7.8.4",
30
+ "@babel/core": "^7.8.4",
31
+ "@babel/plugin-transform-flow-strip-types": "^7.8.3",
32
+ "@babel/preset-env": "^7.8.4",
33
+ "@babel/register": "^7.8.3",
34
+ "ava": "^3.3.0",
35
+ "babel-plugin-istanbul": "^6.0.0",
36
+ "babel-plugin-macros": "^2.8.0",
37
37
  "babel-plugin-transform-export-default-name": "^2.0.4",
38
- "coveralls": "^3.0.7",
39
- "eslint": "^6.6.0",
40
- "eslint-config-canonical": "^17.8.0",
41
- "flow-bin": "^0.111.1",
42
- "flow-copy-source": "^2.0.8",
43
- "husky": "^3.0.9",
38
+ "coveralls": "^3.0.9",
39
+ "eslint": "^6.8.0",
40
+ "eslint-config-canonical": "^18.1.1",
41
+ "flow-bin": "^0.118.0",
42
+ "flow-copy-source": "^2.0.9",
43
+ "husky": "^4.2.3",
44
44
  "inline-loops.macro": "^1.2.2",
45
- "nyc": "^14.1.1",
46
- "semantic-release": "^15.13.29",
47
- "sinon": "^7.5.0"
45
+ "nyc": "^15.0.0",
46
+ "semantic-release": "^17.0.3",
47
+ "sinon": "^8.1.1"
48
48
  },
49
49
  "engines": {
50
50
  "node": ">=8.0"
@@ -91,5 +91,5 @@
91
91
  "lint": "eslint ./src ./test && flow",
92
92
  "test": "NODE_ENV=test nyc ava --verbose --serial"
93
93
  },
94
- "version": "1.3.4"
94
+ "version": "1.3.8"
95
95
  }
@@ -58,7 +58,7 @@ export default (userConfiguration?: UserConfigurationType): InterceptorType => {
58
58
  rowCount,
59
59
  }, 'query execution result');
60
60
 
61
- return result;
61
+ return null;
62
62
  },
63
63
  beforeQueryExecution: async (context, query) => {
64
64
  let stackTrace;