nightingale 13.0.0 → 14.0.0
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/CHANGELOG.md +19 -0
- package/dist/definitions/config.d.ts.map +1 -1
- package/dist/index-browser.es.js +1 -1
- package/dist/index-browser.es.js.map +1 -1
- package/dist/index-browsermodern.es.js +1 -1
- package/dist/index-browsermodern.es.js.map +1 -1
- package/dist/{index-node16.mjs → index-node18.mjs} +2 -2
- package/dist/index-node18.mjs.map +1 -0
- package/package.json +25 -24
- package/src/config.ts +6 -3
- package/dist/index-node16.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [14.0.0](https://github.com/christophehurpeau/nightingale/compare/v13.0.0...v14.0.0) (2023-06-30)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### ⚠ BREAKING CHANGES
|
|
10
|
+
|
|
11
|
+
* **deps:** require node 18
|
|
12
|
+
* requires node 18
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* requires node 18 ([4452b11](https://github.com/christophehurpeau/nightingale/commit/4452b116188e58c293be85e462e04922f7ad51f0))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Miscellaneous Chores
|
|
20
|
+
|
|
21
|
+
* **deps:** update dependency @pob/root to v8 ([#760](https://github.com/christophehurpeau/nightingale/issues/760)) ([22dc3cc](https://github.com/christophehurpeau/nightingale/commit/22dc3cceabdfd465d04ee36fec8fdac31febab69))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
# [13.0.0](https://github.com/christophehurpeau/nightingale/compare/v12.1.4...v13.0.0) (2022-11-19)
|
|
7
26
|
|
|
8
27
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAkEvE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAQhD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,IAAI,CAI/D"}
|
package/dist/index-browser.es.js
CHANGED
|
@@ -3,7 +3,7 @@ export { Logger } from 'nightingale-logger';
|
|
|
3
3
|
export { Level, Level as levels } from 'nightingale-levels';
|
|
4
4
|
|
|
5
5
|
var globalOrWindow = typeof global !== 'undefined' ? global : window;
|
|
6
|
-
if (process.env.NODE_ENV !==
|
|
6
|
+
if (process.env.NODE_ENV !== 'production' && globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS) {
|
|
7
7
|
throw new Error('nightingale: update all to ^5.0.0');
|
|
8
8
|
}
|
|
9
9
|
if (!globalOrWindow.__NIGHTINGALE_CONFIG) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser.es.js","sources":["../src/config.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from 'nightingale-logger';\nimport type { Handler } from 'nightingale-types';\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (
|
|
1
|
+
{"version":3,"file":"index-browser.es.js","sources":["../src/config.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from 'nightingale-logger';\nimport type { Handler, Level } from 'nightingale-types';\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (\n process.env.NODE_ENV !== 'production' &&\n globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS\n) {\n throw new Error('nightingale: update all to ^5.0.0');\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n if (config.key) {\n throw new Error('Cannot have key and keys for the same config');\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error('Cannot have handler and handlers for the same config');\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n 'Cannot have processors and processors for the same config',\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log('nightingale: warning: config overridden');\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? 'unshift' : 'push'](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Logger } from 'nightingale-logger';\n\nexport { Logger } from 'nightingale-logger';\nexport { Level, Level as levels } from 'nightingale-levels';\nexport { configure, addConfig } from './config';\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n 'nightingale:listenUnhandledErrors',\n 'UnhandledErrors',\n ),\n): void {\n process.on('uncaughtException', (error) => {\n logger.error('uncaughtException', { error, unhandled: true });\n });\n process.on('unhandledRejection', (error) => {\n logger.error('unhandledRejection', { error, unhandled: true });\n });\n}\n"],"names":["globalOrWindow","global","window","process","env","NODE_ENV","__NIGHTINGALE_GLOBAL_HANDLERS","Error","__NIGHTINGALE_CONFIG","__NIGHTINGALE_LOGGER_MAP_CACHE","Map","__NIGHTINGALE_CONFIG_DEFAULT","handlers","processors","clearCache","clear","handleConfig","config","keys","pattern","key","handler","processor","configure","length","console","log","map","addConfig","unshift","configIsForKey","includes","test","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","globalCache","existingCache","get","loggerConfig","filter","some","_loggerConfig$handler","_loggerConfig$process","push","apply","stop","set","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","level","_globalOrWindow$__NIG","minLevel","isHandling","listenUnhandledErrors","logger","Logger","on","error","unhandled"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ export { Logger } from 'nightingale-logger';
|
|
|
3
3
|
export { Level, Level as levels } from 'nightingale-levels';
|
|
4
4
|
|
|
5
5
|
const globalOrWindow = typeof global !== 'undefined' ? global : window;
|
|
6
|
-
if (process.env.NODE_ENV !==
|
|
6
|
+
if (process.env.NODE_ENV !== 'production' && globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS) {
|
|
7
7
|
throw new Error('nightingale: update all to ^5.0.0');
|
|
8
8
|
}
|
|
9
9
|
if (!globalOrWindow.__NIGHTINGALE_CONFIG) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browsermodern.es.js","sources":["../src/config.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from 'nightingale-logger';\nimport type { Handler } from 'nightingale-types';\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (
|
|
1
|
+
{"version":3,"file":"index-browsermodern.es.js","sources":["../src/config.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from 'nightingale-logger';\nimport type { Handler, Level } from 'nightingale-types';\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (\n process.env.NODE_ENV !== 'production' &&\n globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS\n) {\n throw new Error('nightingale: update all to ^5.0.0');\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n if (config.key) {\n throw new Error('Cannot have key and keys for the same config');\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error('Cannot have handler and handlers for the same config');\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n 'Cannot have processors and processors for the same config',\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log('nightingale: warning: config overridden');\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? 'unshift' : 'push'](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Logger } from 'nightingale-logger';\n\nexport { Logger } from 'nightingale-logger';\nexport { Level, Level as levels } from 'nightingale-levels';\nexport { configure, addConfig } from './config';\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n 'nightingale:listenUnhandledErrors',\n 'UnhandledErrors',\n ),\n): void {\n process.on('uncaughtException', (error) => {\n logger.error('uncaughtException', { error, unhandled: true });\n });\n process.on('unhandledRejection', (error) => {\n logger.error('unhandledRejection', { error, unhandled: true });\n });\n}\n"],"names":["globalOrWindow","global","window","process","env","NODE_ENV","__NIGHTINGALE_GLOBAL_HANDLERS","Error","__NIGHTINGALE_CONFIG","__NIGHTINGALE_LOGGER_MAP_CACHE","Map","__NIGHTINGALE_CONFIG_DEFAULT","handlers","processors","clearCache","clear","handleConfig","config","keys","pattern","key","handler","processor","configure","length","console","log","map","addConfig","unshift","configIsForKey","includes","test","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","globalCache","existingCache","get","loggerConfig","filter","some","push","stop","set","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","level","minLevel","isHandling","listenUnhandledErrors","logger","Logger","on","error","unhandled"],"mappings":";;;;AAGA,MAAMA,cAA6B,GACjC,OAAOC,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAIC,MAAwB,CAAA;AAEpE,IACEC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,IACrCL,cAAc,CAACM,6BAA6B,EAC5C;AACA,EAAA,MAAM,IAAIC,KAAK,CAAC,mCAAmC,CAAC,CAAA;AACtD,CAAA;AAEA,IAAI,CAACP,cAAc,CAACQ,oBAAoB,EAAE;EACxCR,cAAc,CAACQ,oBAAoB,GAAG,EAAE,CAAA;AACxCR,EAAAA,cAAc,CAACS,8BAA8B,GAAG,IAAIC,GAAG,EAGpD,CAAA;EACHV,cAAc,CAACW,4BAA4B,GAAG;AAC5CC,IAAAA,QAAQ,EAAE,EAAE;AACZC,IAAAA,UAAU,EAAE,EAAA;GACb,CAAA;AACH,CAAA;AAEA,SAASC,UAAUA,GAAS;AAC1Bd,EAAAA,cAAc,CAACS,8BAA8B,CAACM,KAAK,EAAE,CAAA;AACvD,CAAA;AAEA,SAASC,YAAYA,CAACC,MAAc,EAAU;EAC5C,IAAIA,MAAM,CAACC,IAAI,EAAE;IACf,IAAID,MAAM,CAACE,OAAO,EAAE;AAClB,MAAA,MAAM,IAAIZ,KAAK,CAAC,iDAAiD,CAAC,CAAA;AACpE,KAAA;IACA,IAAIU,MAAM,CAACG,GAAG,EAAE;AACd,MAAA,MAAM,IAAIb,KAAK,CAAC,8CAA8C,CAAC,CAAA;AACjE,KAAA;AACF,GAAC,MAAM,IAAIU,MAAM,CAACG,GAAG,EAAE;IACrB,IAAIH,MAAM,CAACE,OAAO,EAAE;AAClB,MAAA,MAAM,IAAIZ,KAAK,CAAC,iDAAiD,CAAC,CAAA;AACpE,KAAA;AACAU,IAAAA,MAAM,CAACC,IAAI,GAAG,CAACD,MAAM,CAACG,GAAG,CAAC,CAAA;IAC1B,OAAOH,MAAM,CAACG,GAAG,CAAA;AACnB,GAAA;EAEA,IAAIH,MAAM,CAACI,OAAO,EAAE;IAClB,IAAIJ,MAAM,CAACL,QAAQ,EAAE;AACnB,MAAA,MAAM,IAAIL,KAAK,CAAC,sDAAsD,CAAC,CAAA;AACzE,KAAA;AACAU,IAAAA,MAAM,CAACL,QAAQ,GAAG,CAACK,MAAM,CAACI,OAAO,CAAC,CAAA;IAClC,OAAOJ,MAAM,CAACI,OAAO,CAAA;AACvB,GAAA;EAEA,IAAIJ,MAAM,CAACK,SAAS,EAAE;IACpB,IAAIL,MAAM,CAACJ,UAAU,EAAE;AACrB,MAAA,MAAM,IAAIN,KAAK,CACb,2DACF,CAAC,CAAA;AACH,KAAA;AACAU,IAAAA,MAAM,CAACJ,UAAU,GAAG,CAACI,MAAM,CAACK,SAAS,CAAC,CAAA;IACtC,OAAOL,MAAM,CAACK,SAAS,CAAA;AACzB,GAAA;AAEA,EAAA,OAAOL,MAAM,CAAA;AACf,CAAA;AAEO,SAASM,SAASA,CAACN,MAAgB,EAAQ;AAChD,EAAA,IAAIjB,cAAc,CAACQ,oBAAoB,CAACgB,MAAM,GAAG,CAAC,EAAE;AAClD;AACAC,IAAAA,OAAO,CAACC,GAAG,CAAC,yCAAyC,CAAC,CAAA;AACxD,GAAA;AAEAZ,EAAAA,UAAU,EAAE,CAAA;EACZd,cAAc,CAACQ,oBAAoB,GAAGS,MAAM,CAACU,GAAG,CAACX,YAAY,CAAC,CAAA;AAChE,CAAA;AAEO,SAASY,SAASA,CAACX,MAAc,EAAEY,OAAO,GAAG,KAAK,EAAQ;AAC/DZ,EAAAA,MAAM,GAAGD,YAAY,CAACC,MAAM,CAAC,CAAA;EAC7BjB,cAAc,CAACQ,oBAAoB,CAACqB,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,CAACZ,MAAM,CAAC,CAAA;AACzEH,EAAAA,UAAU,EAAE,CAAA;AACd,CAAA;AAEA,MAAMgB,cAAc,GAAIV,GAAW,IAAMH,MAAc,IAAK;AAC1D,EAAA,IAAIA,MAAM,CAACC,IAAI,EAAE,OAAOD,MAAM,CAACC,IAAI,CAACa,QAAQ,CAACX,GAAG,CAAC,CAAA;AACjD,EAAA,IAAIH,MAAM,CAACE,OAAO,EAAE,OAAOF,MAAM,CAACE,OAAO,CAACa,IAAI,CAACZ,GAAG,CAAC,CAAA;AACnD,EAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAEDpB,cAAc,CAACiC,mCAAmC,GAChDb,GAAW,IACc;AACzB,EAAA,MAAMc,WAAW,GAAGlC,cAAc,CAACS,8BAA8B,CAAA;AAEjE,EAAA,MAAM0B,aAAa,GAAGD,WAAW,CAACE,GAAG,CAAChB,GAAG,CAAC,CAAA;AAE1C,EAAA,IAAIe,aAAa,EAAE;AACjB,IAAA,OAAOA,aAAa,CAAA;AACtB,GAAA;AAEA,EAAA,MAAME,YAAkC,GAAG;AACzCzB,IAAAA,QAAQ,EAAE,EAAE;AACZC,IAAAA,UAAU,EAAE,EAAA;GACb,CAAA;AAEDb,EAAAA,cAAc,CAACQ,oBAAoB,CAChC8B,MAAM,CAACR,cAAc,CAACV,GAAG,CAAC,CAAC,CAC3BmB,IAAI,CAAEtB,MAAc,IAAK;AACxB,IAAA,IAAIA,MAAM,CAACL,QAAQ,EAAEyB,YAAY,CAACzB,QAAQ,CAAC4B,IAAI,CAAC,GAAGvB,MAAM,CAACL,QAAQ,CAAC,CAAA;AACnE,IAAA,IAAIK,MAAM,CAACJ,UAAU,EAAEwB,YAAY,CAACxB,UAAU,CAAC2B,IAAI,CAAC,GAAGvB,MAAM,CAACJ,UAAU,CAAC,CAAA;IACzE,OAAOI,MAAM,CAACwB,IAAI,CAAA;AACpB,GAAC,CAAC,CAAA;AAEJP,EAAAA,WAAW,CAACQ,GAAG,CAACtB,GAAG,EAAEiB,YAAY,CAAC,CAAA;AAClC,EAAA,OAAOA,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,IAAIrC,cAAc,CAAC2C,0CAA0C,EAAE;AAC7D3C,EAAAA,cAAc,CAAC2C,0CAA0C,GAAG,CAC1DvB,GAAW,EACXwB,KAAY,KACa;IACzB,MAAM;MAAEhC,QAAQ;AAAEC,MAAAA,UAAAA;AAAiC,KAAC,GAClDb,cAAc,CAACiC,mCAAmC,CAACb,GAAG,CAAC,CAAA;IAEzD,OAAO;MACLR,QAAQ,EAAEA,QAAQ,CAAC0B,MAAM,CACtBjB,OAAgB,IACfuB,KAAK,IAAIvB,OAAO,CAACwB,QAAQ,KACxB,CAACxB,OAAO,CAACyB,UAAU,IAAIzB,OAAO,CAACyB,UAAU,CAACF,KAAK,EAAExB,GAAG,CAAC,CAC1D,CAAC;AACDP,MAAAA,UAAAA;KACD,CAAA;GACF,CAAA;AACH;;AC/HA;AACA;AACA;AACA;AACO,SAASkC,qBAAqBA,CACnCC,MAAc,GAAG,IAAIC,MAAM,CACzB,mCAAmC,EACnC,iBACF,CAAC,EACK;AACN9C,EAAAA,OAAO,CAAC+C,EAAE,CAAC,mBAAmB,EAAGC,KAAK,IAAK;AACzCH,IAAAA,MAAM,CAACG,KAAK,CAAC,mBAAmB,EAAE;MAAEA,KAAK;AAAEC,MAAAA,SAAS,EAAE,IAAA;AAAK,KAAC,CAAC,CAAA;AAC/D,GAAC,CAAC,CAAA;AACFjD,EAAAA,OAAO,CAAC+C,EAAE,CAAC,oBAAoB,EAAGC,KAAK,IAAK;AAC1CH,IAAAA,MAAM,CAACG,KAAK,CAAC,oBAAoB,EAAE;MAAEA,KAAK;AAAEC,MAAAA,SAAS,EAAE,IAAA;AAAK,KAAC,CAAC,CAAA;AAChE,GAAC,CAAC,CAAA;AACJ;;;;"}
|
|
@@ -3,7 +3,7 @@ export { Logger } from 'nightingale-logger';
|
|
|
3
3
|
export { Level, Level as levels } from 'nightingale-levels';
|
|
4
4
|
|
|
5
5
|
const globalOrWindow = typeof global !== 'undefined' ? global : window;
|
|
6
|
-
if (process.env.NODE_ENV !==
|
|
6
|
+
if (process.env.NODE_ENV !== 'production' && globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS) {
|
|
7
7
|
throw new Error('nightingale: update all to ^5.0.0');
|
|
8
8
|
}
|
|
9
9
|
if (!globalOrWindow.__NIGHTINGALE_CONFIG) {
|
|
@@ -117,4 +117,4 @@ function listenUnhandledErrors(logger = new Logger('nightingale:listenUnhandledE
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
export { addConfig, configure, listenUnhandledErrors };
|
|
120
|
-
//# sourceMappingURL=index-
|
|
120
|
+
//# sourceMappingURL=index-node18.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-node18.mjs","sources":["../src/config.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from 'nightingale-logger';\nimport type { Handler, Level } from 'nightingale-types';\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (\n process.env.NODE_ENV !== 'production' &&\n globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS\n) {\n throw new Error('nightingale: update all to ^5.0.0');\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n if (config.key) {\n throw new Error('Cannot have key and keys for the same config');\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error('Cannot have handler and handlers for the same config');\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n 'Cannot have processors and processors for the same config',\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log('nightingale: warning: config overridden');\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? 'unshift' : 'push'](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: Level,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Logger } from 'nightingale-logger';\n\nexport { Logger } from 'nightingale-logger';\nexport { Level, Level as levels } from 'nightingale-levels';\nexport { configure, addConfig } from './config';\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n 'nightingale:listenUnhandledErrors',\n 'UnhandledErrors',\n ),\n): void {\n process.on('uncaughtException', (error) => {\n logger.error('uncaughtException', { error, unhandled: true });\n });\n process.on('unhandledRejection', (error) => {\n logger.error('unhandledRejection', { error, unhandled: true });\n });\n}\n"],"names":["globalOrWindow","global","window","process","env","NODE_ENV","__NIGHTINGALE_GLOBAL_HANDLERS","Error","__NIGHTINGALE_CONFIG","__NIGHTINGALE_LOGGER_MAP_CACHE","Map","__NIGHTINGALE_CONFIG_DEFAULT","handlers","processors","clearCache","clear","handleConfig","config","keys","pattern","key","handler","processor","configure","length","console","log","map","addConfig","unshift","configIsForKey","includes","test","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","globalCache","existingCache","get","loggerConfig","filter","some","push","stop","set","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","level","minLevel","isHandling","listenUnhandledErrors","logger","Logger","on","error","unhandled"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nightingale",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.0.0",
|
|
4
4
|
"description": "Logger for browser and node",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"logger"
|
|
@@ -15,16 +15,18 @@
|
|
|
15
15
|
"homepage": "https://github.com/christophehurpeau/nightingale",
|
|
16
16
|
"type": "module",
|
|
17
17
|
"engines": {
|
|
18
|
-
"node": ">=
|
|
18
|
+
"node": ">=18.12.0"
|
|
19
19
|
},
|
|
20
|
-
"browserslist":
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
"browserslist": {
|
|
21
|
+
"production": [
|
|
22
|
+
"defaults",
|
|
23
|
+
"> 0.2%",
|
|
24
|
+
"not ie < 12",
|
|
25
|
+
"not safari < 10",
|
|
26
|
+
"not ios_saf < 10"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"main": "./dist/index-node18.mjs",
|
|
28
30
|
"types": "./dist/definitions/index.d.ts",
|
|
29
31
|
"module": "./dist/index-browser.es.js",
|
|
30
32
|
"browser": "./dist/index-browser.es.js",
|
|
@@ -32,7 +34,7 @@
|
|
|
32
34
|
"./package.json": "./package.json",
|
|
33
35
|
".": {
|
|
34
36
|
"node": {
|
|
35
|
-
"import": "./dist/index-
|
|
37
|
+
"import": "./dist/index-node18.mjs"
|
|
36
38
|
},
|
|
37
39
|
"browser": {
|
|
38
40
|
"browser:modern": {
|
|
@@ -45,7 +47,7 @@
|
|
|
45
47
|
"sideEffects": false,
|
|
46
48
|
"scripts": {
|
|
47
49
|
"build": "yarn clean:build && rollup --config rollup.config.mjs && yarn run build:definitions",
|
|
48
|
-
"build:definitions": "tsc -p",
|
|
50
|
+
"build:definitions": "tsc -p tsconfig.json",
|
|
49
51
|
"clean": "yarn clean:build",
|
|
50
52
|
"clean:build": "pob-babel-clean-out dist",
|
|
51
53
|
"lint": "yarn run lint:eslint",
|
|
@@ -58,7 +60,7 @@
|
|
|
58
60
|
"babelEnvs": [
|
|
59
61
|
{
|
|
60
62
|
"target": "node",
|
|
61
|
-
"version": "
|
|
63
|
+
"version": "18"
|
|
62
64
|
},
|
|
63
65
|
{
|
|
64
66
|
"target": "browser",
|
|
@@ -73,18 +75,17 @@
|
|
|
73
75
|
]
|
|
74
76
|
},
|
|
75
77
|
"dependencies": {
|
|
76
|
-
"@types/node": ">=
|
|
77
|
-
"nightingale-levels": "
|
|
78
|
-
"nightingale-logger": "
|
|
79
|
-
"nightingale-types": "
|
|
78
|
+
"@types/node": ">=18.0.0",
|
|
79
|
+
"nightingale-levels": "14.0.0",
|
|
80
|
+
"nightingale-logger": "14.0.0",
|
|
81
|
+
"nightingale-types": "14.0.0"
|
|
80
82
|
},
|
|
81
83
|
"devDependencies": {
|
|
82
|
-
"@babel/core": "7.
|
|
83
|
-
"@babel/preset-env": "7.
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"typescript": "4.9.3"
|
|
84
|
+
"@babel/core": "7.22.5",
|
|
85
|
+
"@babel/preset-env": "7.22.5",
|
|
86
|
+
"nightingale-string": "14.0.0",
|
|
87
|
+
"pob-babel": "36.1.0",
|
|
88
|
+
"typescript": "5.1.6"
|
|
88
89
|
},
|
|
89
|
-
"gitHead": "
|
|
90
|
+
"gitHead": "bc20e0f093a4fecd4d87f9374f6dbc375c09c25e"
|
|
90
91
|
}
|
package/src/config.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { ComputedConfigForKey, Config } from 'nightingale-logger';
|
|
2
|
-
import type { Handler } from 'nightingale-types';
|
|
2
|
+
import type { Handler, Level } from 'nightingale-types';
|
|
3
3
|
|
|
4
4
|
const globalOrWindow: typeof global =
|
|
5
5
|
typeof global !== 'undefined' ? global : (window as typeof global);
|
|
6
6
|
|
|
7
|
-
if (
|
|
7
|
+
if (
|
|
8
|
+
process.env.NODE_ENV !== 'production' &&
|
|
9
|
+
globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS
|
|
10
|
+
) {
|
|
8
11
|
throw new Error('nightingale: update all to ^5.0.0');
|
|
9
12
|
}
|
|
10
13
|
|
|
@@ -114,7 +117,7 @@ globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (
|
|
|
114
117
|
if (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {
|
|
115
118
|
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (
|
|
116
119
|
key: string,
|
|
117
|
-
level:
|
|
120
|
+
level: Level,
|
|
118
121
|
): ComputedConfigForKey => {
|
|
119
122
|
const { handlers, processors }: ComputedConfigForKey =
|
|
120
123
|
globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-node16.mjs","sources":["../src/config.ts","../src/index.ts"],"sourcesContent":["import type { ComputedConfigForKey, Config } from 'nightingale-logger';\nimport type { Handler } from 'nightingale-types';\n\nconst globalOrWindow: typeof global =\n typeof global !== 'undefined' ? global : (window as typeof global);\n\nif (__DEV__ && globalOrWindow.__NIGHTINGALE_GLOBAL_HANDLERS) {\n throw new Error('nightingale: update all to ^5.0.0');\n}\n\nif (!globalOrWindow.__NIGHTINGALE_CONFIG) {\n globalOrWindow.__NIGHTINGALE_CONFIG = [];\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE = new Map<\n string,\n ComputedConfigForKey\n >();\n globalOrWindow.__NIGHTINGALE_CONFIG_DEFAULT = {\n handlers: [],\n processors: [],\n };\n}\n\nfunction clearCache(): void {\n globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE.clear();\n}\n\nfunction handleConfig(config: Config): Config {\n if (config.keys) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n if (config.key) {\n throw new Error('Cannot have key and keys for the same config');\n }\n } else if (config.key) {\n if (config.pattern) {\n throw new Error('Cannot have key and pattern for the same config');\n }\n config.keys = [config.key];\n delete config.key;\n }\n\n if (config.handler) {\n if (config.handlers) {\n throw new Error('Cannot have handler and handlers for the same config');\n }\n config.handlers = [config.handler];\n delete config.handler;\n }\n\n if (config.processor) {\n if (config.processors) {\n throw new Error(\n 'Cannot have processors and processors for the same config',\n );\n }\n config.processors = [config.processor];\n delete config.processor;\n }\n\n return config;\n}\n\nexport function configure(config: Config[]): void {\n if (globalOrWindow.__NIGHTINGALE_CONFIG.length > 0) {\n // eslint-disable-next-line no-console\n console.log('nightingale: warning: config overridden');\n }\n\n clearCache();\n globalOrWindow.__NIGHTINGALE_CONFIG = config.map(handleConfig);\n}\n\nexport function addConfig(config: Config, unshift = false): void {\n config = handleConfig(config);\n globalOrWindow.__NIGHTINGALE_CONFIG[unshift ? 'unshift' : 'push'](config);\n clearCache();\n}\n\nconst configIsForKey = (key: string) => (config: Config) => {\n if (config.keys) return config.keys.includes(key);\n if (config.pattern) return config.pattern.test(key);\n return true;\n};\n\nglobalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER = (\n key: string,\n): ComputedConfigForKey => {\n const globalCache = globalOrWindow.__NIGHTINGALE_LOGGER_MAP_CACHE;\n\n const existingCache = globalCache.get(key);\n\n if (existingCache) {\n return existingCache;\n }\n\n const loggerConfig: ComputedConfigForKey = {\n handlers: [],\n processors: [],\n };\n\n globalOrWindow.__NIGHTINGALE_CONFIG\n .filter(configIsForKey(key))\n .some((config: Config) => {\n if (config.handlers) loggerConfig.handlers.push(...config.handlers);\n if (config.processors) loggerConfig.processors.push(...config.processors);\n return config.stop;\n });\n\n globalCache.set(key, loggerConfig);\n return loggerConfig;\n};\n\nif (globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD) {\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD = (\n key: string,\n level: number,\n ): ComputedConfigForKey => {\n const { handlers, processors }: ComputedConfigForKey =\n globalOrWindow.__NIGHTINGALE_GET_CONFIG_FOR_LOGGER(key);\n\n return {\n handlers: handlers.filter(\n (handler: Handler) =>\n level >= handler.minLevel &&\n (!handler.isHandling || handler.isHandling(level, key)),\n ),\n processors,\n };\n };\n}\n","import { Logger } from 'nightingale-logger';\n\nexport { Logger } from 'nightingale-logger';\nexport { Level, Level as levels } from 'nightingale-levels';\nexport { configure, addConfig } from './config';\n\n/**\n * listen to uncaughtException and unhandledRejection\n * @param {Logger} [logger]\n */\nexport function listenUnhandledErrors(\n logger: Logger = new Logger(\n 'nightingale:listenUnhandledErrors',\n 'UnhandledErrors',\n ),\n): void {\n process.on('uncaughtException', (error) => {\n logger.error('uncaughtException', { error, unhandled: true });\n });\n process.on('unhandledRejection', (error) => {\n logger.error('unhandledRejection', { error, unhandled: true });\n });\n}\n"],"names":["globalOrWindow","global","window","__NIGHTINGALE_GLOBAL_HANDLERS","Error","__NIGHTINGALE_CONFIG","__NIGHTINGALE_LOGGER_MAP_CACHE","Map","__NIGHTINGALE_CONFIG_DEFAULT","handlers","processors","clearCache","clear","handleConfig","config","keys","pattern","key","handler","processor","configure","length","console","log","map","addConfig","unshift","configIsForKey","includes","test","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER","globalCache","existingCache","get","loggerConfig","filter","some","push","stop","set","__NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD","level","minLevel","isHandling","listenUnhandledErrors","logger","Logger","process","on","error","unhandled"],"mappings":"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"}
|