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
|
|
48
|
+
return null;
|
|
49
49
|
},
|
|
50
50
|
beforeQueryExecution: async (context, query) => {
|
|
51
51
|
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":";;;;;;;AAEA;;AAUA;;AACA;;;;AAYA,MAAMA,iBAAiB,GAAIC,QAAD,IAAc;AACtC,SAAO,CAACA,QAAQ,CAACC,QAAT,IAAqB,EAAtB,IAA4B,GAA5B,GAAkCD,QAAQ,CAACE,UAA3C,GAAwD,GAAxD,GAA8DF,QAAQ,CAACG,YAA9E;AACD,CAFD;;AAIA,MAAMC,oBAAoB,GAAG;AAC3BC,EAAAA,SAAS,EAAE;AADgB,CAA7B;;sCAIgBC,iB,IAA+D;AAC7E,QAAMC,aAAa,GAAG,EACpB,GAAGH,oBADiB;AAEpB,OAAGE;AAFiB,GAAtB;AAKA,SAAO;AACLE,IAAAA,mBAAmB,EAAE,CAACC,OAAD,EAAUC,KAAV,EAAiBC,MAAjB,KAA4B;AAC/C,UAAIC,QAAuB,GAAG,IAA9B;;AAEA,UAAID,MAAM,CAACC,QAAX,EAAqB;AACnBA,QAAAA,QAAQ,GAAGD,MAAM,CAACC,QAAlB;AACD;;AAED,WAAK,MAAMC,MAAX,IAAqBF,MAAM,CAACG,OAA5B,EAAqC;AACnC,YAAI,yCAAyBD,MAAM,CAACE,OAAhC,CAAJ,EAA8C;AAC5CN,UAAAA,OAAO,CAACO,GAAR,CAAYC,IAAZ,CAAiB;AACfC,YAAAA,WAAW,EAAE,sCAAsBL,MAAM,CAACE,OAA7B;AADE,WAAjB,EAEG,cAFH;AAGD;AACF;;AAEDN,MAAAA,OAAO,CAACO,GAAR,CAAYG,KAAZ,CAAkB;AAChBC,QAAAA,aAAa,EAAE,uBAASC,MAAM,CAACC,OAAO,CAACC,MAAR,CAAeC,MAAf,KAA0Bf,OAAO,CAACgB,cAAnC,CAAN,GAA2D,OAApE,CADC;AAEhBb,QAAAA;AAFgB,OAAlB,EAGG,wBAHH;AAKA,
|
|
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.
|
|
23
|
-
"pretty-ms": "^
|
|
21
|
+
"crack-json": "^1.3.0",
|
|
22
|
+
"pretty-ms": "^6.0.0",
|
|
24
23
|
"serialize-error": "^5.0.0",
|
|
25
|
-
"slonik": "^
|
|
24
|
+
"slonik": "^22.4.0"
|
|
26
25
|
},
|
|
27
26
|
"description": "Logs Slonik queries.",
|
|
28
27
|
"devDependencies": {
|
|
29
|
-
"@babel
|
|
30
|
-
"@babel/
|
|
31
|
-
"@babel/
|
|
32
|
-
"@babel/
|
|
33
|
-
"@babel/
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"babel-plugin-
|
|
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.
|
|
39
|
-
"eslint": "^6.
|
|
40
|
-
"eslint-config-canonical": "^
|
|
41
|
-
"flow-bin": "^0.
|
|
42
|
-
"flow-copy-source": "^2.0.
|
|
43
|
-
"husky": "^
|
|
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": "^
|
|
46
|
-
"semantic-release": "^
|
|
47
|
-
"sinon": "^
|
|
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.
|
|
94
|
+
"version": "1.3.8"
|
|
95
95
|
}
|