velocky 0.0.1-security → 1.0.7

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.

Potentially problematic release.


This version of velocky might be problematic. Click here for more details.

Files changed (200) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc +8 -0
  3. package/.github/dependabot.yml +13 -0
  4. package/.github/workflows/bench.yml +61 -0
  5. package/.github/workflows/ci.yml +88 -0
  6. package/.github/workflows/lock-threads.yml +30 -0
  7. package/.github/workflows/target-main.yml +23 -0
  8. package/.nojekyll +0 -0
  9. package/.prettierignore +1 -0
  10. package/.taprc.yaml +8 -0
  11. package/CNAME +1 -0
  12. package/CONTRIBUTING.md +30 -0
  13. package/LICENSE +21 -0
  14. package/README.md +159 -3
  15. package/SECURITY.md +68 -0
  16. package/benchmarks/basic.bench.js +95 -0
  17. package/benchmarks/child-child.bench.js +52 -0
  18. package/benchmarks/child-creation.bench.js +73 -0
  19. package/benchmarks/child.bench.js +62 -0
  20. package/benchmarks/deep-object.bench.js +88 -0
  21. package/benchmarks/formatters.bench.js +50 -0
  22. package/benchmarks/internal/custom-levels.js +67 -0
  23. package/benchmarks/internal/just-pino-heavy.bench.js +76 -0
  24. package/benchmarks/internal/just-pino.bench.js +182 -0
  25. package/benchmarks/internal/parent-vs-child.bench.js +75 -0
  26. package/benchmarks/internal/redact.bench.js +86 -0
  27. package/benchmarks/long-string.bench.js +81 -0
  28. package/benchmarks/multi-arg.bench.js +193 -0
  29. package/benchmarks/multistream.js +98 -0
  30. package/benchmarks/object.bench.js +82 -0
  31. package/benchmarks/utils/generate-benchmark-doc.js +36 -0
  32. package/benchmarks/utils/runbench.js +138 -0
  33. package/benchmarks/utils/wrap-log-level.js +55 -0
  34. package/bin.js +6 -0
  35. package/browser.js +484 -0
  36. package/build/sync-version.js +10 -0
  37. package/docs/api.md +1487 -0
  38. package/docs/asynchronous.md +40 -0
  39. package/docs/benchmarks.md +55 -0
  40. package/docs/browser.md +227 -0
  41. package/docs/bundling.md +40 -0
  42. package/docs/child-loggers.md +95 -0
  43. package/docs/ecosystem.md +84 -0
  44. package/docs/help.md +345 -0
  45. package/docs/lts.md +64 -0
  46. package/docs/pretty.md +35 -0
  47. package/docs/redaction.md +135 -0
  48. package/docs/transports.md +1238 -0
  49. package/docs/web.md +269 -0
  50. package/docsify/sidebar.md +26 -0
  51. package/examples/basic.js +43 -0
  52. package/examples/transport.js +68 -0
  53. package/favicon-16x16.png +0 -0
  54. package/favicon-32x32.png +0 -0
  55. package/favicon.ico +0 -0
  56. package/file.js +12 -0
  57. package/inc-version.sh +42 -0
  58. package/index.html +55 -0
  59. package/lib/caller.js +30 -0
  60. package/lib/constants.js +28 -0
  61. package/lib/deprecations.js +8 -0
  62. package/lib/levels.js +241 -0
  63. package/lib/meta.js +3 -0
  64. package/lib/multistream.js +188 -0
  65. package/lib/proto.js +234 -0
  66. package/lib/redaction.js +118 -0
  67. package/lib/symbols.js +74 -0
  68. package/lib/time.js +11 -0
  69. package/lib/tools.js +394 -0
  70. package/lib/transport-stream.js +56 -0
  71. package/lib/transport.js +167 -0
  72. package/lib/worker.js +194 -0
  73. package/lib/writer.js +42 -0
  74. package/package.json +117 -3
  75. package/pino-banner.png +0 -0
  76. package/pino-logo-hire.png +0 -0
  77. package/pino-tree.png +0 -0
  78. package/pino.d.ts +889 -0
  79. package/pretty-demo.png +0 -0
  80. package/test/basic.test.js +874 -0
  81. package/test/broken-pipe.test.js +57 -0
  82. package/test/browser-child.test.js +132 -0
  83. package/test/browser-disabled.test.js +87 -0
  84. package/test/browser-early-console-freeze.test.js +12 -0
  85. package/test/browser-levels.test.js +241 -0
  86. package/test/browser-serializers.test.js +352 -0
  87. package/test/browser-timestamp.test.js +88 -0
  88. package/test/browser-transmit.test.js +417 -0
  89. package/test/browser.test.js +659 -0
  90. package/test/complex-objects.test.js +34 -0
  91. package/test/crlf.test.js +32 -0
  92. package/test/custom-levels.test.js +253 -0
  93. package/test/error.test.js +398 -0
  94. package/test/errorKey.test.js +34 -0
  95. package/test/escaping.test.js +91 -0
  96. package/test/esm/esm.mjs +12 -0
  97. package/test/esm/index.test.js +34 -0
  98. package/test/esm/named-exports.mjs +27 -0
  99. package/test/exit.test.js +77 -0
  100. package/test/fixtures/broken-pipe/basic.js +9 -0
  101. package/test/fixtures/broken-pipe/destination.js +10 -0
  102. package/test/fixtures/broken-pipe/syncfalse.js +12 -0
  103. package/test/fixtures/console-transport.js +13 -0
  104. package/test/fixtures/default-exit.js +8 -0
  105. package/test/fixtures/destination-exit.js +8 -0
  106. package/test/fixtures/eval/index.js +13 -0
  107. package/test/fixtures/eval/node_modules/14-files.js +3 -0
  108. package/test/fixtures/eval/node_modules/2-files.js +3 -0
  109. package/test/fixtures/eval/node_modules/file1.js +5 -0
  110. package/test/fixtures/eval/node_modules/file10.js +5 -0
  111. package/test/fixtures/eval/node_modules/file11.js +5 -0
  112. package/test/fixtures/eval/node_modules/file12.js +5 -0
  113. package/test/fixtures/eval/node_modules/file13.js +5 -0
  114. package/test/fixtures/eval/node_modules/file14.js +11 -0
  115. package/test/fixtures/eval/node_modules/file2.js +5 -0
  116. package/test/fixtures/eval/node_modules/file3.js +5 -0
  117. package/test/fixtures/eval/node_modules/file4.js +5 -0
  118. package/test/fixtures/eval/node_modules/file5.js +5 -0
  119. package/test/fixtures/eval/node_modules/file6.js +5 -0
  120. package/test/fixtures/eval/node_modules/file7.js +5 -0
  121. package/test/fixtures/eval/node_modules/file8.js +5 -0
  122. package/test/fixtures/eval/node_modules/file9.js +5 -0
  123. package/test/fixtures/noop-transport.js +10 -0
  124. package/test/fixtures/pretty/null-prototype.js +8 -0
  125. package/test/fixtures/stdout-hack-protection.js +11 -0
  126. package/test/fixtures/syncfalse-child.js +6 -0
  127. package/test/fixtures/syncfalse-exit.js +9 -0
  128. package/test/fixtures/syncfalse-flush-exit.js +10 -0
  129. package/test/fixtures/syncfalse.js +6 -0
  130. package/test/fixtures/syntax-error-esm.mjs +2 -0
  131. package/test/fixtures/to-file-transport-with-transform.js +20 -0
  132. package/test/fixtures/to-file-transport.js +13 -0
  133. package/test/fixtures/to-file-transport.mjs +8 -0
  134. package/test/fixtures/transport/index.js +12 -0
  135. package/test/fixtures/transport/package.json +5 -0
  136. package/test/fixtures/transport-exit-immediately-with-async-dest.js +16 -0
  137. package/test/fixtures/transport-exit-immediately.js +11 -0
  138. package/test/fixtures/transport-exit-on-ready.js +12 -0
  139. package/test/fixtures/transport-main.js +9 -0
  140. package/test/fixtures/transport-many-lines.js +29 -0
  141. package/test/fixtures/transport-string-stdout.js +9 -0
  142. package/test/fixtures/transport-transform.js +21 -0
  143. package/test/fixtures/transport-uses-pino-config.js +33 -0
  144. package/test/fixtures/transport-with-on-exit.js +12 -0
  145. package/test/fixtures/transport-worker-data.js +19 -0
  146. package/test/fixtures/transport-worker.js +15 -0
  147. package/test/fixtures/transport-wrong-export-type.js +3 -0
  148. package/test/fixtures/ts/to-file-transport-with-transform.ts +18 -0
  149. package/test/fixtures/ts/to-file-transport.ts +11 -0
  150. package/test/fixtures/ts/transpile.cjs +36 -0
  151. package/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +15 -0
  152. package/test/fixtures/ts/transport-exit-immediately.ts +10 -0
  153. package/test/fixtures/ts/transport-exit-on-ready.ts +11 -0
  154. package/test/fixtures/ts/transport-main.ts +8 -0
  155. package/test/fixtures/ts/transport-string-stdout.ts +8 -0
  156. package/test/fixtures/ts/transport-worker.ts +14 -0
  157. package/test/formatters.test.js +355 -0
  158. package/test/helper.d.ts +4 -0
  159. package/test/helper.js +128 -0
  160. package/test/hooks.test.js +118 -0
  161. package/test/http.test.js +242 -0
  162. package/test/internals/version.test.js +15 -0
  163. package/test/is-level-enabled.test.js +185 -0
  164. package/test/jest/basic.spec.js +10 -0
  165. package/test/levels.test.js +772 -0
  166. package/test/metadata.test.js +106 -0
  167. package/test/mixin-merge-strategy.test.js +55 -0
  168. package/test/mixin.test.js +218 -0
  169. package/test/multistream.test.js +673 -0
  170. package/test/pkg/index.js +46 -0
  171. package/test/pkg/pkg.config.json +17 -0
  172. package/test/pkg/pkg.test.js +56 -0
  173. package/test/redact.test.js +847 -0
  174. package/test/serializers.test.js +253 -0
  175. package/test/stdout-protection.test.js +39 -0
  176. package/test/syncfalse.test.js +188 -0
  177. package/test/timestamp.test.js +121 -0
  178. package/test/transport/big.test.js +43 -0
  179. package/test/transport/bundlers-support.test.js +97 -0
  180. package/test/transport/caller.test.js +23 -0
  181. package/test/transport/core.test.js +644 -0
  182. package/test/transport/core.test.ts +236 -0
  183. package/test/transport/core.transpiled.test.ts +112 -0
  184. package/test/transport/module-link.test.js +239 -0
  185. package/test/transport/pipeline.test.js +135 -0
  186. package/test/transport/repl.test.js +14 -0
  187. package/test/transport/syncTrue.test.js +55 -0
  188. package/test/transport/syncfalse.test.js +68 -0
  189. package/test/transport/targets.test.js +44 -0
  190. package/test/transport/uses-pino-config.test.js +167 -0
  191. package/test/transport-stream.test.js +26 -0
  192. package/test/types/pino-import.test-d.ts +29 -0
  193. package/test/types/pino-multistream.test-d.ts +28 -0
  194. package/test/types/pino-top-export.test-d.ts +35 -0
  195. package/test/types/pino-transport.test-d.ts +145 -0
  196. package/test/types/pino-type-only.test-d.ts +64 -0
  197. package/test/types/pino.test-d.ts +468 -0
  198. package/test/types/pino.ts +78 -0
  199. package/tsconfig.json +14 -0
  200. package/velocky.js +236 -0
@@ -0,0 +1,78 @@
1
+ import { join } from 'node:path'
2
+ import { tmpdir } from 'node:os'
3
+ import pinoPretty from 'pino-pretty'
4
+ import { LoggerOptions, StreamEntry, pino } from '../../pino'
5
+
6
+ const destination = join(
7
+ tmpdir(),
8
+ '_' + Math.random().toString(36).substr(2, 9)
9
+ )
10
+
11
+ // Single
12
+ const transport = pino.transport({
13
+ target: 'pino-pretty',
14
+ options: { some: 'options for', the: 'transport' }
15
+ })
16
+ const logger = pino(transport)
17
+ logger.setBindings({ some: 'bindings' })
18
+ logger.info('test2')
19
+ logger.flush()
20
+
21
+ const transport2 = pino.transport({
22
+ target: 'pino-pretty',
23
+ })
24
+ const logger2 = pino(transport2)
25
+ logger2.info('test2')
26
+
27
+
28
+ // Multiple
29
+
30
+ const transports = pino.transport({targets: [
31
+ {
32
+ level: 'info',
33
+ target: 'pino-pretty',
34
+ options: { some: 'options for', the: 'transport' }
35
+ },
36
+ {
37
+ level: 'trace',
38
+ target: 'pino/file',
39
+ options: { destination }
40
+ }
41
+ ]})
42
+ const loggerMulti = pino(transports)
43
+ loggerMulti.info('test2')
44
+
45
+ // custom levels
46
+
47
+ const customLevels = {
48
+ customDebug : 1,
49
+ info : 2,
50
+ customNetwork : 3,
51
+ customError : 4,
52
+ };
53
+
54
+ type CustomLevels = keyof typeof customLevels;
55
+
56
+ const pinoOpts = {
57
+ useOnlyCustomLevels: true,
58
+ customLevels: customLevels,
59
+ level: 'customDebug',
60
+ } satisfies LoggerOptions;
61
+
62
+ const multistreamOpts = {
63
+ dedupe: true,
64
+ levels: customLevels
65
+ };
66
+
67
+ const streams: StreamEntry<CustomLevels>[] = [
68
+ { level : 'customDebug', stream : pinoPretty() },
69
+ { level : 'info', stream : pinoPretty() },
70
+ { level : 'customNetwork', stream : pinoPretty() },
71
+ { level : 'customError', stream : pinoPretty() },
72
+ ];
73
+
74
+ const loggerCustomLevel = pino(pinoOpts, pino.multistream(streams, multistreamOpts));
75
+ loggerCustomLevel.customDebug('test3')
76
+ loggerCustomLevel.info('test4')
77
+ loggerCustomLevel.customError('test5')
78
+ loggerCustomLevel.customNetwork('test6')
package/tsconfig.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es6",
4
+ "lib": [ "es2015", "dom" ],
5
+ "module": "commonjs",
6
+ "noEmit": true,
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ },
10
+ "exclude": [
11
+ "./test/types/*.test-d.ts",
12
+ "./*.d.ts"
13
+ ]
14
+ }
package/velocky.js ADDED
@@ -0,0 +1,236 @@
1
+ 'use strict'
2
+
3
+ const os = require('node:os')
4
+ const stdSerializers = require('pino-std-serializers')
5
+ const caller = require('./lib/caller')
6
+ const redaction = require('./lib/redaction')
7
+ const time = require('./lib/time')
8
+ const proto = require('./lib/proto')
9
+ const writer = require('./lib/writer');
10
+ const symbols = require('./lib/symbols')
11
+ const { configure } = require('safe-stable-stringify')
12
+ const { assertDefaultLevelFound, mappings, genLsCache, genLevelComparison, assertLevelComparison } = require('./lib/levels')
13
+ const { DEFAULT_LEVELS, SORTING_ORDER } = require('./lib/constants')
14
+ const {
15
+ createArgsNormalizer,
16
+ asChindings,
17
+ buildSafeSonicBoom,
18
+ buildFormatters,
19
+ stringify,
20
+ normalizeDestFileDescriptor,
21
+ noop
22
+ } = require('./lib/tools')
23
+ const { version } = require('./lib/meta')
24
+ const {
25
+ chindingsSym,
26
+ redactFmtSym,
27
+ serializersSym,
28
+ timeSym,
29
+ timeSliceIndexSym,
30
+ streamSym,
31
+ stringifySym,
32
+ stringifySafeSym,
33
+ stringifiersSym,
34
+ setLevelSym,
35
+ endSym,
36
+ formatOptsSym,
37
+ messageKeySym,
38
+ errorKeySym,
39
+ nestedKeySym,
40
+ mixinSym,
41
+ levelCompSym,
42
+ useOnlyCustomLevelsSym,
43
+ formattersSym,
44
+ hooksSym,
45
+ nestedKeyStrSym,
46
+ mixinMergeStrategySym,
47
+ msgPrefixSym
48
+ } = symbols
49
+ const { epochTime, nullTime } = time
50
+ const { pid } = process
51
+ const hostname = os.hostname()
52
+ const defaultErrorSerializer = stdSerializers.err
53
+ const defaultOptions = {
54
+ level: 'info',
55
+ levelComparison: SORTING_ORDER.ASC,
56
+ levels: DEFAULT_LEVELS,
57
+ messageKey: 'msg',
58
+ errorKey: 'err',
59
+ nestedKey: null,
60
+ enabled: true,
61
+ base: { pid, hostname },
62
+ serializers: Object.assign(Object.create(null), {
63
+ err: defaultErrorSerializer
64
+ }),
65
+ formatters: Object.assign(Object.create(null), {
66
+ bindings (bindings) {
67
+ return bindings
68
+ },
69
+ level (label, number) {
70
+ return { level: number }
71
+ }
72
+ }),
73
+ hooks: {
74
+ logMethod: undefined,
75
+ streamWrite: undefined
76
+ },
77
+ timestamp: epochTime,
78
+ name: undefined,
79
+ redact: null,
80
+ customLevels: null,
81
+ useOnlyCustomLevels: false,
82
+ depthLimit: 5,
83
+ edgeLimit: 100
84
+ }
85
+
86
+ const normalize = createArgsNormalizer(defaultOptions)
87
+
88
+ const serializers = Object.assign(Object.create(null), stdSerializers)
89
+
90
+ function pino (...args) {
91
+ writer()
92
+ const instance = {}
93
+ const { opts, stream } = normalize(instance, caller(), ...args)
94
+
95
+ if (opts.level && typeof opts.level === 'string' && DEFAULT_LEVELS[opts.level.toLowerCase()] !== undefined) opts.level = opts.level.toLowerCase()
96
+
97
+ const {
98
+ redact,
99
+ crlf,
100
+ serializers,
101
+ timestamp,
102
+ messageKey,
103
+ errorKey,
104
+ nestedKey,
105
+ base,
106
+ name,
107
+ level,
108
+ customLevels,
109
+ levelComparison,
110
+ mixin,
111
+ mixinMergeStrategy,
112
+ useOnlyCustomLevels,
113
+ formatters,
114
+ hooks,
115
+ depthLimit,
116
+ edgeLimit,
117
+ onChild,
118
+ msgPrefix
119
+ } = opts
120
+
121
+ const stringifySafe = configure({
122
+ maximumDepth: depthLimit,
123
+ maximumBreadth: edgeLimit
124
+ })
125
+
126
+ const allFormatters = buildFormatters(
127
+ formatters.level,
128
+ formatters.bindings,
129
+ formatters.log
130
+ )
131
+
132
+ const stringifyFn = stringify.bind({
133
+ [stringifySafeSym]: stringifySafe
134
+ })
135
+ const stringifiers = redact ? redaction(redact, stringifyFn) : {}
136
+ const formatOpts = redact
137
+ ? { stringify: stringifiers[redactFmtSym] }
138
+ : { stringify: stringifyFn }
139
+ const end = '}' + (crlf ? '\r\n' : '\n')
140
+ const coreChindings = asChindings.bind(null, {
141
+ [chindingsSym]: '',
142
+ [serializersSym]: serializers,
143
+ [stringifiersSym]: stringifiers,
144
+ [stringifySym]: stringify,
145
+ [stringifySafeSym]: stringifySafe,
146
+ [formattersSym]: allFormatters
147
+ })
148
+
149
+ let chindings = ''
150
+ if (base !== null) {
151
+ if (name === undefined) {
152
+ chindings = coreChindings(base)
153
+ } else {
154
+ chindings = coreChindings(Object.assign({}, base, { name }))
155
+ }
156
+ }
157
+
158
+ const time = (timestamp instanceof Function)
159
+ ? timestamp
160
+ : (timestamp ? epochTime : nullTime)
161
+ const timeSliceIndex = time().indexOf(':') + 1
162
+
163
+ if (useOnlyCustomLevels && !customLevels) throw Error('customLevels is required if useOnlyCustomLevels is set true')
164
+ if (mixin && typeof mixin !== 'function') throw Error(`Unknown mixin type "${typeof mixin}" - expected "function"`)
165
+ if (msgPrefix && typeof msgPrefix !== 'string') throw Error(`Unknown msgPrefix type "${typeof msgPrefix}" - expected "string"`)
166
+
167
+ assertDefaultLevelFound(level, customLevels, useOnlyCustomLevels)
168
+ const levels = mappings(customLevels, useOnlyCustomLevels)
169
+
170
+ if (typeof stream.emit === 'function') {
171
+ stream.emit('message', { code: 'PINO_CONFIG', config: { levels, messageKey, errorKey } })
172
+ }
173
+
174
+ assertLevelComparison(levelComparison)
175
+ const levelCompFunc = genLevelComparison(levelComparison)
176
+
177
+ Object.assign(instance, {
178
+ levels,
179
+ [levelCompSym]: levelCompFunc,
180
+ [useOnlyCustomLevelsSym]: useOnlyCustomLevels,
181
+ [streamSym]: stream,
182
+ [timeSym]: time,
183
+ [timeSliceIndexSym]: timeSliceIndex,
184
+ [stringifySym]: stringify,
185
+ [stringifySafeSym]: stringifySafe,
186
+ [stringifiersSym]: stringifiers,
187
+ [endSym]: end,
188
+ [formatOptsSym]: formatOpts,
189
+ [messageKeySym]: messageKey,
190
+ [errorKeySym]: errorKey,
191
+ [nestedKeySym]: nestedKey,
192
+ // protect against injection
193
+ [nestedKeyStrSym]: nestedKey ? `,${JSON.stringify(nestedKey)}:{` : '',
194
+ [serializersSym]: serializers,
195
+ [mixinSym]: mixin,
196
+ [mixinMergeStrategySym]: mixinMergeStrategy,
197
+ [chindingsSym]: chindings,
198
+ [formattersSym]: allFormatters,
199
+ [hooksSym]: hooks,
200
+ silent: noop,
201
+ onChild,
202
+ [msgPrefixSym]: msgPrefix
203
+ })
204
+
205
+ Object.setPrototypeOf(instance, proto())
206
+
207
+ genLsCache(instance)
208
+
209
+ instance[setLevelSym](level)
210
+
211
+ return instance
212
+ }
213
+
214
+ module.exports = pino
215
+
216
+ module.exports.destination = (dest = process.stdout.fd) => {
217
+ if (typeof dest === 'object') {
218
+ dest.dest = normalizeDestFileDescriptor(dest.dest || process.stdout.fd)
219
+ return buildSafeSonicBoom(dest)
220
+ } else {
221
+ return buildSafeSonicBoom({ dest: normalizeDestFileDescriptor(dest), minLength: 0 })
222
+ }
223
+ }
224
+
225
+ module.exports.transport = require('./lib/transport')
226
+ module.exports.multistream = require('./lib/multistream')
227
+
228
+ module.exports.levels = mappings()
229
+ module.exports.stdSerializers = serializers
230
+ module.exports.stdTimeFunctions = Object.assign({}, time)
231
+ module.exports.symbols = symbols
232
+ module.exports.version = version
233
+
234
+ // Enables default and name export with TypeScript and Babel
235
+ module.exports.default = pino
236
+ module.exports.pino = pino