@decaf-ts/logging 0.3.8 → 0.3.9

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.
Files changed (55) hide show
  1. package/dist/logging.cjs +587 -105
  2. package/dist/logging.esm.cjs +567 -102
  3. package/lib/constants.cjs +15 -6
  4. package/lib/constants.d.ts +7 -0
  5. package/lib/decorators.cjs +44 -27
  6. package/lib/decorators.d.ts +9 -0
  7. package/lib/environment.cjs +204 -0
  8. package/lib/environment.d.ts +86 -0
  9. package/lib/esm/constants.d.ts +7 -0
  10. package/lib/esm/constants.js +14 -5
  11. package/lib/esm/decorators.d.ts +9 -0
  12. package/lib/esm/decorators.js +43 -27
  13. package/lib/esm/environment.d.ts +86 -0
  14. package/lib/esm/environment.js +200 -0
  15. package/lib/esm/filters/LogFilter.d.ts +6 -0
  16. package/lib/esm/filters/LogFilter.js +7 -0
  17. package/lib/esm/filters/PatternFilter.d.ts +10 -0
  18. package/lib/esm/filters/PatternFilter.js +43 -0
  19. package/lib/esm/filters/index.d.ts +2 -0
  20. package/lib/esm/filters/index.js +3 -0
  21. package/lib/esm/index.d.ts +5 -2
  22. package/lib/esm/index.js +6 -3
  23. package/lib/esm/logging.d.ts +10 -11
  24. package/lib/esm/logging.js +38 -27
  25. package/lib/esm/text.d.ts +156 -0
  26. package/lib/esm/text.js +214 -0
  27. package/lib/esm/types.d.ts +31 -5
  28. package/lib/esm/types.js +1 -1
  29. package/lib/esm/web.d.ts +8 -0
  30. package/lib/esm/web.js +12 -0
  31. package/lib/esm/winston/winston.d.ts +2 -2
  32. package/lib/esm/winston/winston.js +4 -4
  33. package/lib/filters/LogFilter.cjs +11 -0
  34. package/lib/filters/LogFilter.d.ts +6 -0
  35. package/lib/filters/PatternFilter.cjs +47 -0
  36. package/lib/filters/PatternFilter.d.ts +10 -0
  37. package/lib/filters/index.cjs +19 -0
  38. package/lib/filters/index.d.ts +2 -0
  39. package/lib/index.cjs +6 -3
  40. package/lib/index.d.ts +5 -2
  41. package/lib/logging.cjs +37 -26
  42. package/lib/logging.d.ts +10 -11
  43. package/lib/text.cjs +227 -0
  44. package/lib/text.d.ts +156 -0
  45. package/lib/types.cjs +1 -1
  46. package/lib/types.d.ts +31 -5
  47. package/lib/web.cjs +15 -0
  48. package/lib/web.d.ts +8 -0
  49. package/lib/winston/winston.cjs +4 -4
  50. package/lib/winston/winston.d.ts +2 -2
  51. package/package.json +12 -3
  52. package/lib/esm/utils.d.ts +0 -12
  53. package/lib/esm/utils.js +0 -31
  54. package/lib/utils.cjs +0 -34
  55. package/lib/utils.d.ts +0 -12
@@ -32,10 +32,10 @@ export declare class WinstonLogger extends MiniLogger implements Logger {
32
32
  * @summary Overrides the base log method to use Winston for logging
33
33
  * @param {LogLevel} level - The log level of the message
34
34
  * @param {StringLike | Error} msg - The message to be logged or an Error object
35
- * @param {string} [stack] - Optional stack trace to include in the log
35
+ * @param {Error} [error] - Optional stack trace to include in the log
36
36
  * @return {void}
37
37
  */
38
- protected log(level: LogLevel, msg: StringLike | Error, stack?: string): void;
38
+ protected log(level: LogLevel, msg: StringLike | Error, error?: Error): void;
39
39
  }
40
40
  /**
41
41
  * @description Factory function for creating Winston loggers
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/logging",
3
- "version": "0.3.8",
3
+ "version": "0.3.9",
4
4
  "description": "simple winston inspired wrapper for cross lib logging",
5
5
  "type": "module",
6
6
  "exports": {
@@ -32,14 +32,23 @@
32
32
  "coverage": "rimraf ./workdocs/reports/data/*.json && npm run test:all -- --coverage --config=./workdocs/reports/jest.coverage.config.ts",
33
33
  "lint": "eslint .",
34
34
  "lint-fix": "eslint --fix .",
35
- "prepare-pr": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
35
+ "prepare-pr": "npm run repo:pr && npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
36
36
  "prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
37
37
  "release": "./bin/tag-release.sh",
38
38
  "clean-publish": "npx clean-publish",
39
39
  "drawings": "for FILE in workdocs/drawings/*.drawio; do echo \"converting $FILE to image...\" && docker run --rm -v $(pwd):/data rlespinasse/drawio-export --format png $FILE; done && cp -rf workdocs/drawings/export/* workdocs/resources/",
40
40
  "uml": "cd workdocs/uml && for FILE in ./*.puml; do docker run --rm -v $(pwd):/work -w /work miy4/plantuml -DPLANTUML_LIMIT_SIZE=8192 -tpng $FILE; done && cd ../.. && cp -fr workdocs/uml/*.png workdocs/resources/",
41
41
  "docs": "npx rimraf ./docs && mkdir docs && npx build-scripts --docs",
42
- "publish-docs": "docker run -it --rm --user $(id -u):$(id -g) -v \"$(pwd)/workdocs/confluence:/content\" -e ATLASSIAN_API_TOKEN=$(cat .confluence-token) ghcr.io/markdown-confluence/publish:latest"
42
+ "publish-docs": "docker run -it --rm --user $(id -u):$(id -g) -v \"$(pwd)/workdocs/confluence:/content\" -e ATLASSIAN_API_TOKEN=$(cat .confluence-token) ghcr.io/markdown-confluence/publish:latest",
43
+ "repo:init": "codex exec \"$(cat ./.codex/prompts/repo-setup.md)\nbase_path is `./`, initialize the repository\"",
44
+ "repo:setup": "codex exec \"$(cat ./.codex/prompts/repo-setup.md)\nbase_path is ./\"",
45
+ "repo:doc": "codex exec \"$(cat ./.codex/prompts/doc.md) $(cat ./.codex/prompts/bulk-docs.md)\nbase_path is ./\"",
46
+ "repo:tests": "codex exec \"$(cat ./.codex/prompts/bulk-tests.md)\nbase_path is ./ and coverage is 95%\" -s workspace-write",
47
+ "repo:readme": "codex exec \"$(cat ./.codex/prompts/update-readme.md)\nbase_path is ./\"",
48
+ "repo:pr": "npm run repo:doc && npm run repo:tests && npm run repo:readme",
49
+ "codex": "codex -s workspace-write",
50
+ "codex-run": "codex -s workspace-write exec",
51
+ "sync-codex": "./bin/sync-codex.sh"
43
52
  },
44
53
  "repository": {
45
54
  "type": "git",
@@ -1,12 +0,0 @@
1
- /**
2
- * @summary Util function to provide string format functionality similar to C#'s string.format
3
- *
4
- * @param {string} string
5
- * @param {Array<string | number> | Record<string, any>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
6
- * @return {string} formatted string
7
- *
8
- * @function stringFormat
9
- * @memberOf module:logging
10
- * @category Model
11
- */
12
- export declare function stringFormat(string: string, ...args: (string | number | Record<string, any>)[]): string;
package/lib/esm/utils.js DELETED
@@ -1,31 +0,0 @@
1
- /**
2
- * @summary Util function to provide string format functionality similar to C#'s string.format
3
- *
4
- * @param {string} string
5
- * @param {Array<string | number> | Record<string, any>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
6
- * @return {string} formatted string
7
- *
8
- * @function stringFormat
9
- * @memberOf module:logging
10
- * @category Model
11
- */
12
- export function stringFormat(string, ...args) {
13
- if (args.length > 1) {
14
- if (!args.every((arg) => typeof arg === "string" || typeof arg === "number"))
15
- throw new Error(`Only string and number arguments are supported for multiple replacements.`);
16
- }
17
- if (args.length === 1 && typeof args[0] === "object") {
18
- const obj = args[0];
19
- return Object.entries(obj).reduce((acc, [key, val]) => {
20
- return acc.replace(new RegExp(`\\{${key}\\}`, "g"), function () {
21
- return val;
22
- });
23
- }, string);
24
- }
25
- return string.replace(/{(\d+)}/g, function (match, number) {
26
- return typeof args[number] !== "undefined"
27
- ? args[number].toString()
28
- : "undefined";
29
- });
30
- }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLE1BQWMsRUFDZCxHQUFHLElBQStDO0lBRWxELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixJQUNFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztZQUV4RSxNQUFNLElBQUksS0FBSyxDQUNiLDJFQUEyRSxDQUM1RSxDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBd0IsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7WUFDcEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ2xELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEtBQUssRUFBRSxNQUFNO1FBQ3ZELE9BQU8sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssV0FBVztZQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QixDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byBwcm92aWRlIHN0cmluZyBmb3JtYXQgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIEMjJ3Mgc3RyaW5nLmZvcm1hdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IFJlY29yZDxzdHJpbmcsIGFueT59IFthcmdzXSByZXBsYWNlbWVudHMgbWFkZSBieSBvcmRlciBvZiBhcHBlYXJhbmNlIChyZXBsYWNlbWVudDAgd2lsIHJlcGxhY2UgezB9IGFuZCBzbyBvbilcbiAqIEByZXR1cm4ge3N0cmluZ30gZm9ybWF0dGVkIHN0cmluZ1xuICpcbiAqIEBmdW5jdGlvbiBzdHJpbmdGb3JtYXRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6bG9nZ2luZ1xuICogQGNhdGVnb3J5IE1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdGb3JtYXQoXG4gIHN0cmluZzogc3RyaW5nLFxuICAuLi5hcmdzOiAoc3RyaW5nIHwgbnVtYmVyIHwgUmVjb3JkPHN0cmluZywgYW55PilbXVxuKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoXG4gICAgICAhYXJncy5ldmVyeSgoYXJnKSA9PiB0eXBlb2YgYXJnID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpXG4gICAgKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgT25seSBzdHJpbmcgYW5kIG51bWJlciBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZCBmb3IgbXVsdGlwbGUgcmVwbGFjZW1lbnRzLmBcbiAgICAgICk7XG4gIH1cblxuICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3NbMF0gPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBvYmogPSBhcmdzWzBdIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iaikucmVkdWNlKChhY2MsIFtrZXksIHZhbF0pID0+IHtcbiAgICAgIHJldHVybiBhY2MucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxceyR7a2V5fVxcXFx9YCwgXCJnXCIpLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9KTtcbiAgICB9LCBzdHJpbmcpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xuICAgIHJldHVybiB0eXBlb2YgYXJnc1tudW1iZXJdICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICA/IGFyZ3NbbnVtYmVyXS50b1N0cmluZygpXG4gICAgICA6IFwidW5kZWZpbmVkXCI7XG4gIH0pO1xufVxuIl19
package/lib/utils.cjs DELETED
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stringFormat = stringFormat;
4
- /**
5
- * @summary Util function to provide string format functionality similar to C#'s string.format
6
- *
7
- * @param {string} string
8
- * @param {Array<string | number> | Record<string, any>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
9
- * @return {string} formatted string
10
- *
11
- * @function stringFormat
12
- * @memberOf module:logging
13
- * @category Model
14
- */
15
- function stringFormat(string, ...args) {
16
- if (args.length > 1) {
17
- if (!args.every((arg) => typeof arg === "string" || typeof arg === "number"))
18
- throw new Error(`Only string and number arguments are supported for multiple replacements.`);
19
- }
20
- if (args.length === 1 && typeof args[0] === "object") {
21
- const obj = args[0];
22
- return Object.entries(obj).reduce((acc, [key, val]) => {
23
- return acc.replace(new RegExp(`\\{${key}\\}`, "g"), function () {
24
- return val;
25
- });
26
- }, string);
27
- }
28
- return string.replace(/{(\d+)}/g, function (match, number) {
29
- return typeof args[number] !== "undefined"
30
- ? args[number].toString()
31
- : "undefined";
32
- });
33
- }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxvQ0EyQkM7QUF0Q0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLFlBQVksQ0FDMUIsTUFBYyxFQUNkLEdBQUcsSUFBK0M7SUFFbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BCLElBQ0UsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO1lBRXhFLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkVBQTJFLENBQzVFLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUF3QixDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUNwRCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDbEQsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsS0FBSyxFQUFFLE1BQU07UUFDdkQsT0FBTyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxXQUFXO1lBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3pCLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIHByb3ZpZGUgc3RyaW5nIGZvcm1hdCBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gQyMncyBzdHJpbmcuZm9ybWF0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHBhcmFtIHtBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgUmVjb3JkPHN0cmluZywgYW55Pn0gW2FyZ3NdIHJlcGxhY2VtZW50cyBtYWRlIGJ5IG9yZGVyIG9mIGFwcGVhcmFuY2UgKHJlcGxhY2VtZW50MCB3aWwgcmVwbGFjZSB7MH0gYW5kIHNvIG9uKVxuICogQHJldHVybiB7c3RyaW5nfSBmb3JtYXR0ZWQgc3RyaW5nXG4gKlxuICogQGZ1bmN0aW9uIHN0cmluZ0Zvcm1hdFxuICogQG1lbWJlck9mIG1vZHVsZTpsb2dnaW5nXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0Zvcm1hdChcbiAgc3RyaW5nOiBzdHJpbmcsXG4gIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtdXG4pIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgIGlmIChcbiAgICAgICFhcmdzLmV2ZXJ5KChhcmcpID0+IHR5cGVvZiBhcmcgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGFyZyA9PT0gXCJudW1iZXJcIilcbiAgICApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBPbmx5IHN0cmluZyBhbmQgbnVtYmVyIGFyZ3VtZW50cyBhcmUgc3VwcG9ydGVkIGZvciBtdWx0aXBsZSByZXBsYWNlbWVudHMuYFxuICAgICAgKTtcbiAgfVxuXG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXJnc1swXSA9PT0gXCJvYmplY3RcIikge1xuICAgIGNvbnN0IG9iaiA9IGFyZ3NbMF0gYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgcmV0dXJuIGFjYy5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFx7JHtrZXl9XFxcXH1gLCBcImdcIiksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH0pO1xuICAgIH0sIHN0cmluZyk7XG4gIH1cblxuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL3soXFxkKyl9L2csIGZ1bmN0aW9uIChtYXRjaCwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhcmdzW251bWJlcl0gIT09IFwidW5kZWZpbmVkXCJcbiAgICAgID8gYXJnc1tudW1iZXJdLnRvU3RyaW5nKClcbiAgICAgIDogXCJ1bmRlZmluZWRcIjtcbiAgfSk7XG59XG4iXX0=
package/lib/utils.d.ts DELETED
@@ -1,12 +0,0 @@
1
- /**
2
- * @summary Util function to provide string format functionality similar to C#'s string.format
3
- *
4
- * @param {string} string
5
- * @param {Array<string | number> | Record<string, any>} [args] replacements made by order of appearance (replacement0 wil replace {0} and so on)
6
- * @return {string} formatted string
7
- *
8
- * @function stringFormat
9
- * @memberOf module:logging
10
- * @category Model
11
- */
12
- export declare function stringFormat(string: string, ...args: (string | number | Record<string, any>)[]): string;