lib0 0.2.89 → 0.2.91

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 (43) hide show
  1. package/bin/0ecdsa-generate-keypair.d.ts +2 -0
  2. package/bin/0ecdsa-generate-keypair.d.ts.map +1 -0
  3. package/bin/0ecdsa-generate-keypair.js +14 -0
  4. package/coverage/tmp/coverage-151987-1709590293199-0.json +1 -0
  5. package/crypto/jwt.d.ts.map +1 -1
  6. package/crypto/jwt.js +6 -1
  7. package/crypto.test.d.ts.map +1 -1
  8. package/dist/bin/0ecdsa-generate-keypair.d.ts +2 -0
  9. package/dist/bin/0ecdsa-generate-keypair.d.ts.map +1 -0
  10. package/dist/crypto/jwt.d.ts.map +1 -1
  11. package/dist/crypto.test.d.ts.map +1 -1
  12. package/dist/jwt.cjs +7 -1
  13. package/dist/jwt.cjs.map +1 -1
  14. package/dist/logging.cjs +11 -2
  15. package/dist/logging.cjs.map +1 -1
  16. package/dist/logging.common.cjs +23 -7
  17. package/dist/logging.common.cjs.map +1 -1
  18. package/dist/logging.common.d.ts +1 -1
  19. package/dist/logging.common.d.ts.map +1 -1
  20. package/dist/logging.d.ts.map +1 -1
  21. package/dist/logging.node.cjs +10 -4
  22. package/dist/logging.node.cjs.map +1 -1
  23. package/dist/logging.node.d.ts +1 -1
  24. package/dist/logging.node.d.ts.map +1 -1
  25. package/dist/logging.test.d.ts +1 -0
  26. package/dist/logging.test.d.ts.map +1 -1
  27. package/logging.common.d.ts +1 -1
  28. package/logging.common.d.ts.map +1 -1
  29. package/logging.common.js +25 -7
  30. package/logging.d.ts.map +1 -1
  31. package/logging.js +11 -2
  32. package/logging.node.d.ts +1 -1
  33. package/logging.node.d.ts.map +1 -1
  34. package/logging.node.js +9 -4
  35. package/logging.test.d.ts +1 -0
  36. package/logging.test.d.ts.map +1 -1
  37. package/package.json +3 -2
  38. package/test.html +1 -0
  39. package/coverage/tmp/coverage-25880-1708188297584-0.json +0 -1
  40. package/dist/environment.test.d.ts +0 -2
  41. package/dist/environment.test.d.ts.map +0 -1
  42. package/environment.test.d.ts +0 -2
  43. package/environment.test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["jwt.js"],"names":[],"mappings":"AAoBO,sCAHI,SAAS,WACT,MAAM,uBAgBhB;AAMM,qCAHI,SAAS,OACT,MAAM;;;GAahB;AAOM,kCAFI,MAAM;;;EAQhB"}
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["jwt.js"],"names":[],"mappings":"AAqBO,sCAHI,SAAS,WACT,MAAM,uBAgBhB;AAMM,qCAHI,SAAS,OACT,MAAM;;;GAiBhB;AAOM,kCAFI,MAAM;;;EAQhB"}
package/crypto/jwt.js CHANGED
@@ -3,6 +3,7 @@ import * as buffer from '../buffer.js'
3
3
  import * as string from '../string.js'
4
4
  import * as json from '../json.js'
5
5
  import * as ecdsa from '../crypto/ecdsa.js'
6
+ import * as time from '../time.js'
6
7
 
7
8
  /**
8
9
  * @param {Object} data
@@ -45,9 +46,13 @@ export const verifyJwt = async (publicKey, jwt) => {
45
46
  if (!verified) {
46
47
  throw new Error('Invalid JWT')
47
48
  }
49
+ const payload = _parse(payloadBase64)
50
+ if (payload.exp != null && time.getUnixTime() > payload.exp) {
51
+ throw new Error('Expired JWT')
52
+ }
48
53
  return {
49
54
  header: _parse(headerBase64),
50
- payload: _parse(payloadBase64)
55
+ payload
51
56
  }
52
57
  }
53
58
 
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["crypto.test.js"],"names":[],"mappings":"AAWO,6BAFI,EAAE,QAAQ,iBAkBpB;AAKM,mCAFI,EAAE,QAAQ,iBAoCpB;AAKM,0CAFI,EAAE,QAAQ,iBA8BpB;AAKM,qCAFI,EAAE,QAAQ,iBAgDpB;AAKM,8CAFI,EAAE,QAAQ,iBAwCpB;AAKM,iDAFI,EAAE,QAAQ,iBA2EpB;AAKM,gCAFI,EAAE,QAAQ,iBAapB;mBA3RkB,cAAc"}
1
+ {"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["crypto.test.js"],"names":[],"mappings":"AAYO,6BAFI,EAAE,QAAQ,iBA8BpB;AAKM,mCAFI,EAAE,QAAQ,iBAoCpB;AAKM,0CAFI,EAAE,QAAQ,iBA8BpB;AAKM,qCAFI,EAAE,QAAQ,iBAgDpB;AAKM,8CAFI,EAAE,QAAQ,iBAwCpB;AAKM,iDAFI,EAAE,QAAQ,iBA2EpB;AAKM,gCAFI,EAAE,QAAQ,iBAapB;mBAvSkB,cAAc"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=0ecdsa-generate-keypair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"0ecdsa-generate-keypair.d.ts","sourceRoot":"","sources":["../../bin/0ecdsa-generate-keypair.js"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../crypto/jwt.js"],"names":[],"mappings":"AAoBO,sCAHI,SAAS,WACT,MAAM,uBAgBhB;AAMM,qCAHI,SAAS,OACT,MAAM;;;GAahB;AAOM,kCAFI,MAAM;;;EAQhB"}
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../crypto/jwt.js"],"names":[],"mappings":"AAqBO,sCAHI,SAAS,WACT,MAAM,uBAgBhB;AAMM,qCAHI,SAAS,OACT,MAAM;;;GAiBhB;AAOM,kCAFI,MAAM;;;EAQhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["../crypto.test.js"],"names":[],"mappings":"AAWO,6BAFI,EAAE,QAAQ,iBAkBpB;AAKM,mCAFI,EAAE,QAAQ,iBAoCpB;AAKM,0CAFI,EAAE,QAAQ,iBA8BpB;AAKM,qCAFI,EAAE,QAAQ,iBAgDpB;AAKM,8CAFI,EAAE,QAAQ,iBAwCpB;AAKM,iDAFI,EAAE,QAAQ,iBA2EpB;AAKM,gCAFI,EAAE,QAAQ,iBAapB;mBA3RkB,cAAc"}
1
+ {"version":3,"file":"crypto.test.d.ts","sourceRoot":"","sources":["../crypto.test.js"],"names":[],"mappings":"AAYO,6BAFI,EAAE,QAAQ,iBA8BpB;AAKM,mCAFI,EAAE,QAAQ,iBAoCpB;AAKM,0CAFI,EAAE,QAAQ,iBA8BpB;AAKM,qCAFI,EAAE,QAAQ,iBAgDpB;AAKM,8CAFI,EAAE,QAAQ,iBAwCpB;AAKM,iDAFI,EAAE,QAAQ,iBA2EpB;AAKM,gCAFI,EAAE,QAAQ,iBAapB;mBAvSkB,cAAc"}
package/dist/jwt.cjs CHANGED
@@ -7,6 +7,7 @@ var buffer = require('./buffer-f11b8d4d.cjs');
7
7
  var string = require('./string-6d104757.cjs');
8
8
  var json = require('./json-092190a1.cjs');
9
9
  var ecdsa = require('./ecdsa.cjs');
10
+ var time = require('./time-bc2081b9.cjs');
10
11
  require('./environment-f4d7c3e5.cjs');
11
12
  require('./map-0dabcc55.cjs');
12
13
  require('./conditions-f5c0c102.cjs');
@@ -22,6 +23,7 @@ require('./binary-ac8e39e2.cjs');
22
23
  require('./decoding-000d097f.cjs');
23
24
  require('lib0/webcrypto');
24
25
  require('./common.cjs');
26
+ require('./metric.cjs');
25
27
 
26
28
  /**
27
29
  * @param {Object} data
@@ -64,9 +66,13 @@ const verifyJwt = async (publicKey, jwt) => {
64
66
  if (!verified) {
65
67
  throw new Error('Invalid JWT')
66
68
  }
69
+ const payload = _parse(payloadBase64);
70
+ if (payload.exp != null && time.getUnixTime() > payload.exp) {
71
+ throw new Error('Expired JWT')
72
+ }
67
73
  return {
68
74
  header: _parse(headerBase64),
69
- payload: _parse(payloadBase64)
75
+ payload
70
76
  }
71
77
  };
72
78
 
package/dist/jwt.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.cjs","sources":["../crypto/jwt.js"],"sourcesContent":["import * as error from '../error.js'\nimport * as buffer from '../buffer.js'\nimport * as string from '../string.js'\nimport * as json from '../json.js'\nimport * as ecdsa from '../crypto/ecdsa.js'\n\n/**\n * @param {Object} data\n */\nconst _stringify = data => buffer.toBase64UrlEncoded(string.encodeUtf8(json.stringify(data)))\n\n/**\n * @param {string} base64url\n */\nconst _parse = base64url => json.parse(string.decodeUtf8(buffer.fromBase64UrlEncoded(base64url)))\n\n/**\n * @param {CryptoKey} privateKey\n * @param {Object} payload\n */\nexport const encodeJwt = (privateKey, payload) => {\n const { name: algName, namedCurve: algCurve } = /** @type {any} */ (privateKey.algorithm)\n /* c8 ignore next 3 */\n if (algName !== 'ECDSA' || algCurve !== 'P-384') {\n error.unexpectedCase()\n }\n const header = {\n alg: 'ES384',\n typ: 'JWT'\n }\n const jwt = _stringify(header) + '.' + _stringify(payload)\n return ecdsa.sign(privateKey, string.encodeUtf8(jwt)).then(signature =>\n jwt + '.' + buffer.toBase64UrlEncoded(signature)\n )\n}\n\n/**\n * @param {CryptoKey} publicKey\n * @param {string} jwt\n */\nexport const verifyJwt = async (publicKey, jwt) => {\n const [headerBase64, payloadBase64, signatureBase64] = jwt.split('.')\n const verified = await ecdsa.verify(publicKey, buffer.fromBase64UrlEncoded(signatureBase64), string.encodeUtf8(headerBase64 + '.' + payloadBase64))\n /* c8 ignore next 3 */\n if (!verified) {\n throw new Error('Invalid JWT')\n }\n return {\n header: _parse(headerBase64),\n payload: _parse(payloadBase64)\n }\n}\n\n/**\n * Decode a jwt without verifying it. Probably a bad idea to use this. Only use if you know the jwt was already verified!\n *\n * @param {string} jwt\n */\nexport const unsafeDecode = jwt => {\n const [headerBase64, payloadBase64] = jwt.split('.')\n return {\n header: _parse(headerBase64),\n payload: _parse(payloadBase64)\n }\n}\n"],"names":["buffer.toBase64UrlEncoded","string.encodeUtf8","json.stringify","json.parse","string.decodeUtf8","buffer.fromBase64UrlEncoded","error.unexpectedCase","ecdsa.sign","ecdsa.verify"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA;AACA;AACA;AACA,MAAM,UAAU,GAAG,IAAI,IAAIA,yBAAyB,CAACC,iBAAiB,CAACC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAC;AAC7F;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,SAAS,IAAIC,UAAU,CAACC,iBAAiB,CAACC,2BAA2B,CAAC,SAAS,CAAC,CAAC,EAAC;AACjG;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,CAAC,UAAU,EAAE,OAAO,KAAK;AAClD,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,UAAU,CAAC,SAAS,EAAC;AAC3F;AACA,EAAE,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE;AACnD,IAAIC,oBAAoB,GAAE;AAC1B,GAAG;AACH,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,GAAG,EAAE,OAAO;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAG;AACH,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,OAAO,EAAC;AAC5D,EAAE,OAAOC,UAAU,CAAC,UAAU,EAAEN,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtE,IAAI,GAAG,GAAG,GAAG,GAAGD,yBAAyB,CAAC,SAAS,CAAC;AACpD,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,OAAO,SAAS,EAAE,GAAG,KAAK;AACnD,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAC;AACvE,EAAE,MAAM,QAAQ,GAAG,MAAMQ,YAAY,CAAC,SAAS,EAAEH,2BAA2B,CAAC,eAAe,CAAC,EAAEJ,iBAAiB,CAAC,YAAY,GAAG,GAAG,GAAG,aAAa,CAAC,EAAC;AACrJ;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;AAClC,GAAG;AACH,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;AAChC,IAAI,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC;AAClC,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,GAAG,IAAI;AACnC,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAC;AACtD,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;AAChC,IAAI,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC;AAClC,GAAG;AACH;;;;;;"}
1
+ {"version":3,"file":"jwt.cjs","sources":["../crypto/jwt.js"],"sourcesContent":["import * as error from '../error.js'\nimport * as buffer from '../buffer.js'\nimport * as string from '../string.js'\nimport * as json from '../json.js'\nimport * as ecdsa from '../crypto/ecdsa.js'\nimport * as time from '../time.js'\n\n/**\n * @param {Object} data\n */\nconst _stringify = data => buffer.toBase64UrlEncoded(string.encodeUtf8(json.stringify(data)))\n\n/**\n * @param {string} base64url\n */\nconst _parse = base64url => json.parse(string.decodeUtf8(buffer.fromBase64UrlEncoded(base64url)))\n\n/**\n * @param {CryptoKey} privateKey\n * @param {Object} payload\n */\nexport const encodeJwt = (privateKey, payload) => {\n const { name: algName, namedCurve: algCurve } = /** @type {any} */ (privateKey.algorithm)\n /* c8 ignore next 3 */\n if (algName !== 'ECDSA' || algCurve !== 'P-384') {\n error.unexpectedCase()\n }\n const header = {\n alg: 'ES384',\n typ: 'JWT'\n }\n const jwt = _stringify(header) + '.' + _stringify(payload)\n return ecdsa.sign(privateKey, string.encodeUtf8(jwt)).then(signature =>\n jwt + '.' + buffer.toBase64UrlEncoded(signature)\n )\n}\n\n/**\n * @param {CryptoKey} publicKey\n * @param {string} jwt\n */\nexport const verifyJwt = async (publicKey, jwt) => {\n const [headerBase64, payloadBase64, signatureBase64] = jwt.split('.')\n const verified = await ecdsa.verify(publicKey, buffer.fromBase64UrlEncoded(signatureBase64), string.encodeUtf8(headerBase64 + '.' + payloadBase64))\n /* c8 ignore next 3 */\n if (!verified) {\n throw new Error('Invalid JWT')\n }\n const payload = _parse(payloadBase64)\n if (payload.exp != null && time.getUnixTime() > payload.exp) {\n throw new Error('Expired JWT')\n }\n return {\n header: _parse(headerBase64),\n payload\n }\n}\n\n/**\n * Decode a jwt without verifying it. Probably a bad idea to use this. Only use if you know the jwt was already verified!\n *\n * @param {string} jwt\n */\nexport const unsafeDecode = jwt => {\n const [headerBase64, payloadBase64] = jwt.split('.')\n return {\n header: _parse(headerBase64),\n payload: _parse(payloadBase64)\n }\n}\n"],"names":["buffer.toBase64UrlEncoded","string.encodeUtf8","json.stringify","json.parse","string.decodeUtf8","buffer.fromBase64UrlEncoded","error.unexpectedCase","ecdsa.sign","ecdsa.verify","time.getUnixTime"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;AACA;AACA;AACA,MAAM,UAAU,GAAG,IAAI,IAAIA,yBAAyB,CAACC,iBAAiB,CAACC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAC;AAC7F;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,SAAS,IAAIC,UAAU,CAACC,iBAAiB,CAACC,2BAA2B,CAAC,SAAS,CAAC,CAAC,EAAC;AACjG;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,CAAC,UAAU,EAAE,OAAO,KAAK;AAClD,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,UAAU,CAAC,SAAS,EAAC;AAC3F;AACA,EAAE,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE;AACnD,IAAIC,oBAAoB,GAAE;AAC1B,GAAG;AACH,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,GAAG,EAAE,OAAO;AAChB,IAAI,GAAG,EAAE,KAAK;AACd,IAAG;AACH,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,OAAO,EAAC;AAC5D,EAAE,OAAOC,UAAU,CAAC,UAAU,EAAEN,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtE,IAAI,GAAG,GAAG,GAAG,GAAGD,yBAAyB,CAAC,SAAS,CAAC;AACpD,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACY,MAAC,SAAS,GAAG,OAAO,SAAS,EAAE,GAAG,KAAK;AACnD,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAC;AACvE,EAAE,MAAM,QAAQ,GAAG,MAAMQ,YAAY,CAAC,SAAS,EAAEH,2BAA2B,CAAC,eAAe,CAAC,EAAEJ,iBAAiB,CAAC,YAAY,GAAG,GAAG,GAAG,aAAa,CAAC,EAAC;AACrJ;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;AAClC,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAC;AACvC,EAAE,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,IAAIQ,gBAAgB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;AAC/D,IAAI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;AAClC,GAAG;AACH,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;AAChC,IAAI,OAAO;AACX,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,GAAG,IAAI;AACnC,EAAE,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAC;AACtD,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC;AAChC,IAAI,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC;AAClC,GAAG;AACH;;;;;;"}
package/dist/logging.cjs CHANGED
@@ -43,11 +43,14 @@ const _browserStyleMap = {
43
43
  };
44
44
 
45
45
  /**
46
- * @param {Array<string|Symbol|Object|number>} args
46
+ * @param {Array<string|Symbol|Object|number|function():any>} args
47
47
  * @return {Array<string|object|number>}
48
48
  */
49
49
  /* c8 ignore start */
50
50
  const computeBrowserLoggingArgs = (args) => {
51
+ if (args.length === 1 && args[0]?.constructor === Function) {
52
+ args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]());
53
+ }
51
54
  const strBuilder = [];
52
55
  const styles = [];
53
56
  const currentStyle = map.create();
@@ -64,6 +67,9 @@ const computeBrowserLoggingArgs = (args) => {
64
67
  if (style !== undefined) {
65
68
  currentStyle.set(style.left, style.right);
66
69
  } else {
70
+ if (arg === undefined) {
71
+ break
72
+ }
67
73
  if (arg.constructor === String || arg.constructor === Number) {
68
74
  const style = dom.mapToStyleString(currentStyle);
69
75
  if (i > 0 || style.length > 0) {
@@ -206,12 +212,15 @@ const _computeLineSpans = (args) => {
206
212
  // try with formatting until we find something unsupported
207
213
  let i = 0;
208
214
  for (; i < args.length; i++) {
209
- const arg = args[i];
215
+ let arg = args[i];
210
216
  // @ts-ignore
211
217
  const style = _browserStyleMap[arg];
212
218
  if (style !== undefined) {
213
219
  currentStyle.set(style.left, style.right);
214
220
  } else {
221
+ if (arg === undefined) {
222
+ arg = 'undefined ';
223
+ }
215
224
  if (arg.constructor === String || arg.constructor === Number) {
216
225
  // @ts-ignore
217
226
  const span = dom.element('span', [
@@ -1 +1 @@
1
- {"version":3,"file":"logging.cjs","sources":["../logging.js"],"sourcesContent":["/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as set from './set.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as common from './logging.common.js'\n\nexport { BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR } from './logging.common.js'\n\n/**\n * @type {Object<Symbol,pair.Pair<string,string>>}\n */\nconst _browserStyleMap = {\n [common.BOLD]: pair.create('font-weight', 'bold'),\n [common.UNBOLD]: pair.create('font-weight', 'normal'),\n [common.BLUE]: pair.create('color', 'blue'),\n [common.GREEN]: pair.create('color', 'green'),\n [common.GREY]: pair.create('color', 'grey'),\n [common.RED]: pair.create('color', 'red'),\n [common.PURPLE]: pair.create('color', 'purple'),\n [common.ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [common.UNCOLOR]: pair.create('color', 'black')\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\n/* c8 ignore start */\nconst computeBrowserLoggingArgs = (args) => {\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array<string|Object|number>}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\n/* c8 ignore start */\nconst computeLoggingArgs = env.supportsColor\n ? computeBrowserLoggingArgs\n : common.computeNoColorLoggingArgs\n/* c8 ignore stop */\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.print(args))\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(common.ORANGE)\n vconsoles.forEach((vc) => vc.print(args))\n}\n/* c8 ignore stop */\n\n/**\n * @param {Error} err\n */\n/* c8 ignore start */\nexport const printError = (err) => {\n console.error(err)\n vconsoles.forEach((vc) => vc.printError(err))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\n/* c8 ignore start */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log(\n '%c ',\n `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`\n )\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach((vc) => vc.printImg(url, height))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} base64\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printImgBase64 = (base64, height) =>\n printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.group(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupEnd())\n}\n\n/**\n * @param {function():Node} createNode\n */\n/* c8 ignore next 2 */\nexport const printDom = (createNode) =>\n vconsoles.forEach((vc) => vc.printDom(createNode()))\n\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printCanvas = (canvas, height) =>\n printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = set.create()\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<Element>}\n */\n/* c8 ignore start */\nconst _computeLineSpans = (args) => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [\n pair.create('style', dom.mapToStyleString(currentStyle))\n ], [dom.text(arg.toString())])\n if (span.innerHTML === '') {\n span.innerHTML = '&nbsp;'\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(\n dom.element('span', [], [dom.text(/** @type {string} */ (content))])\n )\n }\n }\n return spans\n}\n/* c8 ignore stop */\n\nconst lineStyle =\n 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* c8 ignore start */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [\n pair.create('hidden', collapsed),\n pair.create('style', 'color:grey;font-size:120%;')\n ], [dom.text('▼')])\n const triangleRight = dom.element('span', [\n pair.create('hidden', !collapsed),\n pair.create('style', 'color:grey;font-size:125%;')\n ], [dom.text('▶')])\n const content = dom.element(\n 'div',\n [pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )],\n [triangleDown, triangleRight, dom.text(' ')].concat(\n _computeLineSpans(args)\n )\n )\n const nextContainer = dom.element('div', [\n pair.create('hidden', collapsed)\n ])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', (_event) => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('div', [\n pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )\n ], _computeLineSpans(args))\n ])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([common.RED, common.BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('img', [\n pair.create('src', url),\n pair.create('height', `${math.round(height * 1.5)}px`)\n ])\n ])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n/* c8 ignore stop */\n\n/**\n * @param {Element} dom\n */\n/* c8 ignore next */\nexport const createVConsole = (dom) => new VConsole(dom)\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (moduleName) => common.createModuleLogger(print, moduleName)\n"],"names":["common.BOLD","pair.create","common.UNBOLD","common.BLUE","common.GREEN","common.GREY","common.RED","common.PURPLE","common.ORANGE","common.UNCOLOR","map.create","dom.mapToStyleString","env.supportsColor","common.computeNoColorLoggingArgs","env.isBrowser","set.create","dom.element","dom.text","json.stringify","eventloop.enqueue","dom.append","dom.addEventListener","math.round","common.createModuleLogger"],"mappings":"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"}
1
+ {"version":3,"file":"logging.cjs","sources":["../logging.js"],"sourcesContent":["/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as set from './set.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as common from './logging.common.js'\n\nexport { BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR } from './logging.common.js'\n\n/**\n * @type {Object<Symbol,pair.Pair<string,string>>}\n */\nconst _browserStyleMap = {\n [common.BOLD]: pair.create('font-weight', 'bold'),\n [common.UNBOLD]: pair.create('font-weight', 'normal'),\n [common.BLUE]: pair.create('color', 'blue'),\n [common.GREEN]: pair.create('color', 'green'),\n [common.GREY]: pair.create('color', 'grey'),\n [common.RED]: pair.create('color', 'red'),\n [common.PURPLE]: pair.create('color', 'purple'),\n [common.ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [common.UNCOLOR]: pair.create('color', 'black')\n}\n\n/**\n * @param {Array<string|Symbol|Object|number|function():any>} args\n * @return {Array<string|object|number>}\n */\n/* c8 ignore start */\nconst computeBrowserLoggingArgs = (args) => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]())\n }\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array<string|Object|number>}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg === undefined) {\n break\n }\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\n/* c8 ignore start */\nconst computeLoggingArgs = env.supportsColor\n ? computeBrowserLoggingArgs\n : common.computeNoColorLoggingArgs\n/* c8 ignore stop */\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.print(args))\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(common.ORANGE)\n vconsoles.forEach((vc) => vc.print(args))\n}\n/* c8 ignore stop */\n\n/**\n * @param {Error} err\n */\n/* c8 ignore start */\nexport const printError = (err) => {\n console.error(err)\n vconsoles.forEach((vc) => vc.printError(err))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\n/* c8 ignore start */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log(\n '%c ',\n `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`\n )\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach((vc) => vc.printImg(url, height))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} base64\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printImgBase64 = (base64, height) =>\n printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.group(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupEnd())\n}\n\n/**\n * @param {function():Node} createNode\n */\n/* c8 ignore next 2 */\nexport const printDom = (createNode) =>\n vconsoles.forEach((vc) => vc.printDom(createNode()))\n\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printCanvas = (canvas, height) =>\n printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = set.create()\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<Element>}\n */\n/* c8 ignore start */\nconst _computeLineSpans = (args) => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n let arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg === undefined) {\n arg = 'undefined '\n }\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [\n pair.create('style', dom.mapToStyleString(currentStyle))\n ], [dom.text(arg.toString())])\n if (span.innerHTML === '') {\n span.innerHTML = '&nbsp;'\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(\n dom.element('span', [], [dom.text(/** @type {string} */ (content))])\n )\n }\n }\n return spans\n}\n/* c8 ignore stop */\n\nconst lineStyle =\n 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* c8 ignore start */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [\n pair.create('hidden', collapsed),\n pair.create('style', 'color:grey;font-size:120%;')\n ], [dom.text('▼')])\n const triangleRight = dom.element('span', [\n pair.create('hidden', !collapsed),\n pair.create('style', 'color:grey;font-size:125%;')\n ], [dom.text('▶')])\n const content = dom.element(\n 'div',\n [pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )],\n [triangleDown, triangleRight, dom.text(' ')].concat(\n _computeLineSpans(args)\n )\n )\n const nextContainer = dom.element('div', [\n pair.create('hidden', collapsed)\n ])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', (_event) => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('div', [\n pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )\n ], _computeLineSpans(args))\n ])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([common.RED, common.BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('img', [\n pair.create('src', url),\n pair.create('height', `${math.round(height * 1.5)}px`)\n ])\n ])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n/* c8 ignore stop */\n\n/**\n * @param {Element} dom\n */\n/* c8 ignore next */\nexport const createVConsole = (dom) => new VConsole(dom)\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (moduleName) => common.createModuleLogger(print, moduleName)\n"],"names":["common.BOLD","pair.create","common.UNBOLD","common.BLUE","common.GREEN","common.GREY","common.RED","common.PURPLE","common.ORANGE","common.UNCOLOR","map.create","dom.mapToStyleString","env.supportsColor","common.computeNoColorLoggingArgs","env.isBrowser","set.create","dom.element","dom.text","json.stringify","eventloop.enqueue","dom.append","dom.addEventListener","math.round","common.createModuleLogger"],"mappings":"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"}
@@ -6,6 +6,7 @@ var symbol = require('./symbol-c5caa724.cjs');
6
6
  var time = require('./time-bc2081b9.cjs');
7
7
  var environment = require('./environment-f4d7c3e5.cjs');
8
8
  var _function = require('./function-314fdc56.cjs');
9
+ var json = require('./json-092190a1.cjs');
9
10
  require('./metric.cjs');
10
11
  require('./math-08e068f9.cjs');
11
12
  require('./map-0dabcc55.cjs');
@@ -28,16 +29,19 @@ const UNCOLOR = symbol.create();
28
29
 
29
30
  /* c8 ignore start */
30
31
  /**
31
- * @param {Array<string|Symbol|Object|number>} args
32
+ * @param {Array<undefined|string|Symbol|Object|number|function():any>} args
32
33
  * @return {Array<string|object|number>}
33
34
  */
34
35
  const computeNoColorLoggingArgs = args => {
36
+ if (args.length === 1 && args[0]?.constructor === Function) {
37
+ args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]());
38
+ }
35
39
  const logArgs = [];
36
40
  // try with formatting until we find something unsupported
37
41
  let i = 0;
38
42
  for (; i < args.length; i++) {
39
43
  const arg = args[i];
40
- if (arg.constructor === String || arg.constructor === Number) ; else if (arg.constructor === Object) {
44
+ if (arg === undefined) ; else if (arg.constructor === String || arg.constructor === Number) ; else if (arg.constructor === Object) {
41
45
  logArgs.push(JSON.stringify(arg));
42
46
  }
43
47
  }
@@ -66,6 +70,9 @@ const createModuleLogger = (_print, moduleName) => {
66
70
  return !doLogging
67
71
  ? _function.nop
68
72
  : (...args) => {
73
+ if (args.length === 1 && args[0]?.constructor === Function) {
74
+ args = args[0]();
75
+ }
69
76
  const timeNow = time.getUnixTime();
70
77
  const timeDiff = timeNow - lastLoggingTime;
71
78
  lastLoggingTime = timeNow;
@@ -73,11 +80,20 @@ const createModuleLogger = (_print, moduleName) => {
73
80
  color,
74
81
  moduleName,
75
82
  UNCOLOR,
76
- ...args.map((arg) =>
77
- (typeof arg === 'string' || typeof arg === 'symbol')
78
- ? arg
79
- : JSON.stringify(arg)
80
- ),
83
+ ...args.map((arg) => {
84
+ if (arg != null && arg.constructor === Uint8Array) {
85
+ arg = Array.from(arg);
86
+ }
87
+ const t = typeof arg;
88
+ switch (t) {
89
+ case 'string':
90
+ case 'symbol':
91
+ return arg
92
+ default: {
93
+ return json.stringify(arg)
94
+ }
95
+ }
96
+ }),
81
97
  color,
82
98
  ' +' + timeDiff + 'ms'
83
99
  );
@@ -1 +1 @@
1
- {"version":3,"file":"logging.common.cjs","sources":["../logging.common.js"],"sourcesContent":["import * as symbol from './symbol.js'\nimport * as time from './time.js'\nimport * as env from './environment.js'\nimport * as func from './function.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\nexport const computeNoColorLoggingArgs = args => {\n const strBuilder = []\n const logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else if (arg.constructor === Object) {\n logArgs.push(JSON.stringify(arg))\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/* c8 ignore start */\n/**\n * @param {function(...any):void} _print\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (_print, moduleName) => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null &&\n (debugRegexVar === '*' || debugRegexVar === 'true' ||\n new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n return !doLogging\n ? func.nop\n : (...args) => {\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n _print(\n color,\n moduleName,\n UNCOLOR,\n ...args.map((arg) =>\n (typeof arg === 'string' || typeof arg === 'symbol')\n ? arg\n : JSON.stringify(arg)\n ),\n color,\n ' +' + timeDiff + 'ms'\n )\n }\n}\n/* c8 ignore stop */\n"],"names":["symbol.create","time.getUnixTime","env.getVariable","func.nop"],"mappings":";;;;;;;;;;;;;;;;;;AAKY,MAAC,IAAI,GAAGA,aAAa,GAAE;AACvB,MAAC,MAAM,GAAGA,aAAa,GAAE;AACzB,MAAC,IAAI,GAAGA,aAAa,GAAE;AACvB,MAAC,IAAI,GAAGA,aAAa,GAAE;AACvB,MAAC,KAAK,GAAGA,aAAa,GAAE;AACxB,MAAC,GAAG,GAAGA,aAAa,GAAE;AACtB,MAAC,MAAM,GAAGA,aAAa,GAAE;AACzB,MAAC,MAAM,GAAGA,aAAa,GAAE;AACzB,MAAC,OAAO,GAAGA,aAAa,GAAE;AACtC;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,yBAAyB,GAAG,IAAI,IAAI;AAEjD,EAAE,MAAM,OAAO,GAAG,GAAE;AACpB;AACA,EAAE,IAAI,CAAC,GAAG,EAAC;AACX,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;AACvB,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAE7D,MAAM,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE;AAC3C,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAC;AACvC,KAAK;AACL,GAAG;AACH,EAAE,OAAO,OAAO;AAChB,EAAC;AACD;AACA;AACA,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAC;AACnD,IAAI,SAAS,GAAG,EAAC;AACjB,IAAI,eAAe,GAAGC,gBAAgB,GAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,kBAAkB,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK;AAC1D,EAAE,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAC;AACxC,EAAE,MAAM,aAAa,GAAGC,uBAAe,CAAC,KAAK,EAAC;AAC9C,EAAE,MAAM,SAAS,GAAG,aAAa,KAAK,IAAI;AAC1C,KAAK,aAAa,KAAK,GAAG,IAAI,aAAa,KAAK,MAAM;AACtD,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC;AACvD,EAAE,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,aAAa,CAAC,OAAM;AACpD,EAAE,UAAU,IAAI,KAAI;AACpB,EAAE,OAAO,CAAC,SAAS;AACnB,MAAMC,aAAQ;AACd,MAAM,CAAC,GAAG,IAAI,KAAK;AACnB,QAAQ,MAAM,OAAO,GAAGF,gBAAgB,GAAE;AAC1C,QAAQ,MAAM,QAAQ,GAAG,OAAO,GAAG,gBAAe;AAClD,QAAQ,eAAe,GAAG,QAAO;AACjC,QAAQ,MAAM;AACd,UAAU,KAAK;AACf,UAAU,UAAU;AACpB,UAAU,OAAO;AACjB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AAC1B,YAAY,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ;AAC/D,gBAAgB,GAAG;AACnB,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACnC,WAAW;AACX,UAAU,KAAK;AACf,UAAU,IAAI,GAAG,QAAQ,GAAG,IAAI;AAChC,UAAS;AACT,OAAO;AACP,EAAC;AACD;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"logging.common.cjs","sources":["../logging.common.js"],"sourcesContent":["import * as symbol from './symbol.js'\nimport * as time from './time.js'\nimport * as env from './environment.js'\nimport * as func from './function.js'\nimport * as json from './json.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/* c8 ignore start */\n/**\n * @param {Array<undefined|string|Symbol|Object|number|function():any>} args\n * @return {Array<string|object|number>}\n */\nexport const computeNoColorLoggingArgs = args => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]())\n }\n const strBuilder = []\n const logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n if (arg === undefined) {\n strBuilder.push('undefined')\n } else if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else if (arg.constructor === Object) {\n logArgs.push(JSON.stringify(arg))\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/* c8 ignore start */\n/**\n * @param {function(...any):void} _print\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (_print, moduleName) => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null &&\n (debugRegexVar === '*' || debugRegexVar === 'true' ||\n new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n return !doLogging\n ? func.nop\n : (...args) => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = args[0]()\n }\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n _print(\n color,\n moduleName,\n UNCOLOR,\n ...args.map((arg) => {\n if (arg != null && arg.constructor === Uint8Array) {\n arg = Array.from(arg)\n }\n const t = typeof arg\n switch (t) {\n case 'string':\n case 'symbol':\n return arg\n default: {\n return json.stringify(arg)\n }\n }\n }),\n color,\n ' +' + timeDiff + 'ms'\n )\n }\n}\n/* c8 ignore stop */\n"],"names":["symbol.create","time.getUnixTime","env.getVariable","func.nop","json.stringify"],"mappings":"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"}
@@ -7,6 +7,6 @@ export const RED: symbol;
7
7
  export const PURPLE: symbol;
8
8
  export const ORANGE: symbol;
9
9
  export const UNCOLOR: symbol;
10
- export function computeNoColorLoggingArgs(args: Array<string | Symbol | Object | number>): Array<string | object | number>;
10
+ export function computeNoColorLoggingArgs(args: Array<undefined | string | Symbol | Object | number | (() => any)>): Array<string | object | number>;
11
11
  export function createModuleLogger(_print: (...args: any[]) => void, moduleName: string): (...args: any[]) => void;
12
12
  //# sourceMappingURL=logging.common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.common.d.ts","sourceRoot":"","sources":["../logging.common.js"],"names":[],"mappings":"AAKA,0BAAmC;AACnC,4BAAqC;AACrC,0BAAmC;AACnC,0BAAmC;AACnC,2BAAoC;AACpC,yBAAkC;AAClC,4BAAqC;AACrC,4BAAqC;AACrC,6BAAsC;AAO/B,gDAHI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,GACjC,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,CAgBtC;AAaM,qDAJgB,GAAG,OAAE,IAAI,cACrB,MAAM,aACO,GAAG,OAAE,IAAI,CA6BhC"}
1
+ {"version":3,"file":"logging.common.d.ts","sourceRoot":"","sources":["../logging.common.js"],"names":[],"mappings":"AAMA,0BAAmC;AACnC,4BAAqC;AACrC,0BAAmC;AACnC,0BAAmC;AACnC,2BAAoC;AACpC,yBAAkC;AAClC,4BAAqC;AACrC,4BAAqC;AACrC,6BAAsC;AAO/B,gDAHI,MAAM,SAAS,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,UAAY,GAAG,CAAA,CAAC,GAC1D,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,CAqBtC;AAaM,qDAJgB,GAAG,OAAE,IAAI,cACrB,MAAM,aACO,GAAG,OAAE,IAAI,CAyChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../logging.js"],"names":[],"mappings":"AA6FO,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAMM,8BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAOM,gCAHI,KAAK,QAMf;AAQM,8BAJI,MAAM,UACN,MAAM,QAYhB;AAQM,uCAJI,MAAM,UACN,MAAM,QAIoC;AAK9C,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAKM,wCAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAEM,iCAIN;AAMM,2CAHe,IAAI,QAI4B;AAO/C,oCAJI,iBAAiB,UACjB,MAAM,QAIqB;AAEtC,iCAAqC;AAqDrC;IACE;;OAEG;IACH,iBAFW,OAAO,EAUjB;IAPC,aAAc;IACd;;OAEG;IACH,YAFU,OAAO,CAES;IAC1B,cAAc;IAIhB;;;OAGG;IACH,YAHW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,cAClC,OAAO,QAoCjB;IAED;;OAEG;IACH,qBAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAI5C;IAED,iBAQC;IAED;;OAEG;IACH,YAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAa5C;IAED;;OAEG;IACH,gBAFW,KAAK,QAIf;IAED;;;OAGG;IACH,cAHW,MAAM,UACN,MAAM,QAWhB;IAED;;OAEG;IACH,eAFW,IAAI,QAMd;IAED,gBAIC;CACF;AAOM,oCAHI,OAAO,YAGsC;AAMjD,+CAHI,MAAM,aACO,GAAG,OAAE,IAAI,CAE6D"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../logging.js"],"names":[],"mappings":"AAmGO,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAMM,8BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAOM,gCAHI,KAAK,QAMf;AAQM,8BAJI,MAAM,UACN,MAAM,QAYhB;AAQM,uCAJI,MAAM,UACN,MAAM,QAIoC;AAK9C,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAKM,wCAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAEM,iCAIN;AAMM,2CAHe,IAAI,QAI4B;AAO/C,oCAJI,iBAAiB,UACjB,MAAM,QAIqB;AAEtC,iCAAqC;AAwDrC;IACE;;OAEG;IACH,iBAFW,OAAO,EAUjB;IAPC,aAAc;IACd;;OAEG;IACH,YAFU,OAAO,CAES;IAC1B,cAAc;IAIhB;;;OAGG;IACH,YAHW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,cAClC,OAAO,QAoCjB;IAED;;OAEG;IACH,qBAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAI5C;IAED,iBAQC;IAED;;OAEG;IACH,YAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAa5C;IAED;;OAEG;IACH,gBAFW,KAAK,QAIf;IAED;;;OAGG;IACH,cAHW,MAAM,UACN,MAAM,QAWhB;IAED;;OAEG;IACH,eAFW,IAAI,QAMd;IAED,gBAIC;CACF;AAOM,oCAHI,OAAO,YAGsC;AAMjD,+CAHI,MAAM,aACO,GAAG,OAAE,IAAI,CAE6D"}
@@ -16,6 +16,7 @@ require('./symbol-c5caa724.cjs');
16
16
  require('./time-bc2081b9.cjs');
17
17
  require('./metric.cjs');
18
18
  require('./math-08e068f9.cjs');
19
+ require('./json-092190a1.cjs');
19
20
 
20
21
  /**
21
22
  * Isomorphic logging module with support for colors!
@@ -37,10 +38,13 @@ const _nodeStyleMap = {
37
38
 
38
39
  /* c8 ignore start */
39
40
  /**
40
- * @param {Array<string|Symbol|Object|number>} args
41
- * @return {Array<string|object|number>}
41
+ * @param {Array<string|undefined|Symbol|Object|number|function():Array<any>>} args
42
+ * @return {Array<string|object|number|undefined>}
42
43
  */
43
44
  const computeNodeLoggingArgs = (args) => {
45
+ if (args.length === 1 && args[0]?.constructor === Function) {
46
+ args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]());
47
+ }
44
48
  const strBuilder = [];
45
49
  const logArgs = [];
46
50
  // try with formatting until we find something unsupported
@@ -52,7 +56,9 @@ const computeNodeLoggingArgs = (args) => {
52
56
  if (style !== undefined) {
53
57
  strBuilder.push(style);
54
58
  } else {
55
- if (arg.constructor === String || arg.constructor === Number) {
59
+ if (arg === undefined) {
60
+ break
61
+ } else if (arg.constructor === String || arg.constructor === Number) {
56
62
  strBuilder.push(arg);
57
63
  } else {
58
64
  break
@@ -82,7 +88,7 @@ const computeLoggingArgs = environment.supportsColor
82
88
  /* c8 ignore stop */
83
89
 
84
90
  /**
85
- * @param {Array<string|Symbol|Object|number>} args
91
+ * @param {Array<string|Symbol|Object|number|undefined>} args
86
92
  */
87
93
  const print = (...args) => {
88
94
  console.log(...computeLoggingArgs(args));
@@ -1 +1 @@
1
- {"version":3,"file":"logging.node.cjs","sources":["../logging.node.js"],"sourcesContent":["/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as common from './logging.common.js'\n\nexport { BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR } from './logging.common.js'\n\nconst _nodeStyleMap = {\n [common.BOLD]: '\\u001b[1m',\n [common.UNBOLD]: '\\u001b[2m',\n [common.BLUE]: '\\x1b[34m',\n [common.GREEN]: '\\x1b[32m',\n [common.GREY]: '\\u001b[37m',\n [common.RED]: '\\x1b[31m',\n [common.PURPLE]: '\\x1b[35m',\n [common.ORANGE]: '\\x1b[38;5;208m',\n [common.UNCOLOR]: '\\x1b[0m'\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\nconst computeNodeLoggingArgs = (args) => {\n const strBuilder = []\n const logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _nodeStyleMap[arg]\n if (style !== undefined) {\n strBuilder.push(style)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n strBuilder.push('\\x1b[0m')\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\n/* c8 ignore start */\nconst computeLoggingArgs = env.supportsColor\n ? computeNodeLoggingArgs\n : common.computeNoColorLoggingArgs\n/* c8 ignore stop */\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n}\n/* c8 ignore stop */\n\n/**\n * @param {Error} err\n */\n/* c8 ignore start */\nexport const printError = (err) => {\n console.error(err)\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} _url image location\n * @param {number} _height height of the image in pixel\n */\n/* c8 ignore start */\nexport const printImg = (_url, _height) => {\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} base64\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printImgBase64 = (base64, height) =>\n printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\n/* c8 ignore next 3 */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\n/* c8 ignore next 3 */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n}\n\n/* c8 ignore next 3 */\nexport const groupEnd = () => {\n console.groupEnd()\n}\n\n/**\n * @param {function():Node} _createNode\n */\n/* c8 ignore next 2 */\nexport const printDom = (_createNode) => {}\n\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printCanvas = (canvas, height) =>\n printImg(canvas.toDataURL(), height)\n\n/**\n * @param {Element} _dom\n */\n/* c8 ignore next */\nexport const createVConsole = (_dom) => {}\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\n/* c8 ignore next */\nexport const createModuleLogger = (moduleName) => common.createModuleLogger(print, moduleName)\n"],"names":["common.BOLD","common.UNBOLD","common.BLUE","common.GREEN","common.GREY","common.RED","common.PURPLE","common.ORANGE","common.UNCOLOR","env.supportsColor","common.computeNoColorLoggingArgs","common.createModuleLogger"],"mappings":"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"}
1
+ {"version":3,"file":"logging.node.cjs","sources":["../logging.node.js"],"sourcesContent":["/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as common from './logging.common.js'\n\nexport { BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR } from './logging.common.js'\n\nconst _nodeStyleMap = {\n [common.BOLD]: '\\u001b[1m',\n [common.UNBOLD]: '\\u001b[2m',\n [common.BLUE]: '\\x1b[34m',\n [common.GREEN]: '\\x1b[32m',\n [common.GREY]: '\\u001b[37m',\n [common.RED]: '\\x1b[31m',\n [common.PURPLE]: '\\x1b[35m',\n [common.ORANGE]: '\\x1b[38;5;208m',\n [common.UNCOLOR]: '\\x1b[0m'\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|undefined|Symbol|Object|number|function():Array<any>>} args\n * @return {Array<string|object|number|undefined>}\n */\nconst computeNodeLoggingArgs = (args) => {\n if (args.length === 1 && args[0]?.constructor === Function) {\n args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]())\n }\n const strBuilder = []\n const logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _nodeStyleMap[arg]\n if (style !== undefined) {\n strBuilder.push(style)\n } else {\n if (arg === undefined) {\n break\n } else if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n strBuilder.push('\\x1b[0m')\n logArgs.push(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\n/* c8 ignore start */\nconst computeLoggingArgs = env.supportsColor\n ? computeNodeLoggingArgs\n : common.computeNoColorLoggingArgs\n/* c8 ignore stop */\n\n/**\n * @param {Array<string|Symbol|Object|number|undefined>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n}\n/* c8 ignore stop */\n\n/**\n * @param {Error} err\n */\n/* c8 ignore start */\nexport const printError = (err) => {\n console.error(err)\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} _url image location\n * @param {number} _height height of the image in pixel\n */\n/* c8 ignore start */\nexport const printImg = (_url, _height) => {\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} base64\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printImgBase64 = (base64, height) =>\n printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\n/* c8 ignore next 3 */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\n/* c8 ignore next 3 */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n}\n\n/* c8 ignore next 3 */\nexport const groupEnd = () => {\n console.groupEnd()\n}\n\n/**\n * @param {function():Node} _createNode\n */\n/* c8 ignore next 2 */\nexport const printDom = (_createNode) => {}\n\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printCanvas = (canvas, height) =>\n printImg(canvas.toDataURL(), height)\n\n/**\n * @param {Element} _dom\n */\n/* c8 ignore next */\nexport const createVConsole = (_dom) => {}\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\n/* c8 ignore next */\nexport const createModuleLogger = (moduleName) => common.createModuleLogger(print, moduleName)\n"],"names":["common.BOLD","common.UNBOLD","common.BLUE","common.GREEN","common.GREY","common.RED","common.PURPLE","common.ORANGE","common.UNCOLOR","env.supportsColor","common.computeNoColorLoggingArgs","common.createModuleLogger"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export function print(...args: Array<string | Symbol | Object | number>): void;
1
+ export function print(...args: Array<string | Symbol | Object | number | undefined>): void;
2
2
  export function warn(...args: Array<string | Symbol | Object | number>): void;
3
3
  export function printError(err: Error): void;
4
4
  export function printImg(_url: string, _height: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"logging.node.d.ts","sourceRoot":"","sources":["../logging.node.js"],"names":[],"mappings":"AAwEO,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAI5C;AAMM,8BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAI5C;AAOM,gCAHI,KAAK,QAKf;AAQM,+BAJI,MAAM,WACN,MAAM,QAKhB;AAQM,uCAJI,MAAM,UACN,MAAM,QAIoC;AAM9C,+BAHI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAK5C;AAMM,wCAHI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAK5C;AAGM,iCAEN;AAMM,4CAHe,IAAI,QAGiB;AAOpC,oCAJI,iBAAiB,UACjB,MAAM,QAIqB;AAM/B,qCAHI,OAAO,QAGwB;AAOnC,+CAJI,MAAM,aACO,GAAG,OAAE,IAAI,CAG6D"}
1
+ {"version":3,"file":"logging.node.d.ts","sourceRoot":"","sources":["../logging.node.js"],"names":[],"mappings":"AA6EO,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,SAAS,CAAC,QAItD;AAMM,8BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAI5C;AAOM,gCAHI,KAAK,QAKf;AAQM,+BAJI,MAAM,WACN,MAAM,QAKhB;AAQM,uCAJI,MAAM,UACN,MAAM,QAIoC;AAM9C,+BAHI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAK5C;AAMM,wCAHI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAK5C;AAGM,iCAEN;AAMM,4CAHe,IAAI,QAGiB;AAOpC,oCAJI,iBAAiB,UACjB,MAAM,QAIqB;AAM/B,qCAHI,OAAO,QAGwB;AAOnC,+CAJI,MAAM,aACO,GAAG,OAAE,IAAI,CAG6D"}
@@ -1,2 +1,3 @@
1
1
  export function testLogging(): void;
2
+ export function testModuleLogger(): void;
2
3
  //# sourceMappingURL=logging.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.test.d.ts","sourceRoot":"","sources":["../logging.test.js"],"names":[],"mappings":"AAEO,oCAcN"}
1
+ {"version":3,"file":"logging.test.d.ts","sourceRoot":"","sources":["../logging.test.js"],"names":[],"mappings":"AAEO,oCAgBN;AAEM,yCAON"}
@@ -7,6 +7,6 @@ export const RED: symbol;
7
7
  export const PURPLE: symbol;
8
8
  export const ORANGE: symbol;
9
9
  export const UNCOLOR: symbol;
10
- export function computeNoColorLoggingArgs(args: Array<string | Symbol | Object | number>): Array<string | object | number>;
10
+ export function computeNoColorLoggingArgs(args: Array<undefined | string | Symbol | Object | number | (() => any)>): Array<string | object | number>;
11
11
  export function createModuleLogger(_print: (...args: any[]) => void, moduleName: string): (...args: any[]) => void;
12
12
  //# sourceMappingURL=logging.common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.common.d.ts","sourceRoot":"","sources":["logging.common.js"],"names":[],"mappings":"AAKA,0BAAmC;AACnC,4BAAqC;AACrC,0BAAmC;AACnC,0BAAmC;AACnC,2BAAoC;AACpC,yBAAkC;AAClC,4BAAqC;AACrC,4BAAqC;AACrC,6BAAsC;AAO/B,gDAHI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,GACjC,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,CAgBtC;AAaM,qDAJgB,GAAG,OAAE,IAAI,cACrB,MAAM,aACO,GAAG,OAAE,IAAI,CA6BhC"}
1
+ {"version":3,"file":"logging.common.d.ts","sourceRoot":"","sources":["logging.common.js"],"names":[],"mappings":"AAMA,0BAAmC;AACnC,4BAAqC;AACrC,0BAAmC;AACnC,0BAAmC;AACnC,2BAAoC;AACpC,yBAAkC;AAClC,4BAAqC;AACrC,4BAAqC;AACrC,6BAAsC;AAO/B,gDAHI,MAAM,SAAS,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,UAAY,GAAG,CAAA,CAAC,GAC1D,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,CAqBtC;AAaM,qDAJgB,GAAG,OAAE,IAAI,cACrB,MAAM,aACO,GAAG,OAAE,IAAI,CAyChC"}
package/logging.common.js CHANGED
@@ -2,6 +2,7 @@ import * as symbol from './symbol.js'
2
2
  import * as time from './time.js'
3
3
  import * as env from './environment.js'
4
4
  import * as func from './function.js'
5
+ import * as json from './json.js'
5
6
 
6
7
  export const BOLD = symbol.create()
7
8
  export const UNBOLD = symbol.create()
@@ -15,17 +16,22 @@ export const UNCOLOR = symbol.create()
15
16
 
16
17
  /* c8 ignore start */
17
18
  /**
18
- * @param {Array<string|Symbol|Object|number>} args
19
+ * @param {Array<undefined|string|Symbol|Object|number|function():any>} args
19
20
  * @return {Array<string|object|number>}
20
21
  */
21
22
  export const computeNoColorLoggingArgs = args => {
23
+ if (args.length === 1 && args[0]?.constructor === Function) {
24
+ args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]())
25
+ }
22
26
  const strBuilder = []
23
27
  const logArgs = []
24
28
  // try with formatting until we find something unsupported
25
29
  let i = 0
26
30
  for (; i < args.length; i++) {
27
31
  const arg = args[i]
28
- if (arg.constructor === String || arg.constructor === Number) {
32
+ if (arg === undefined) {
33
+ strBuilder.push('undefined')
34
+ } else if (arg.constructor === String || arg.constructor === Number) {
29
35
  strBuilder.push(arg)
30
36
  } else if (arg.constructor === Object) {
31
37
  logArgs.push(JSON.stringify(arg))
@@ -56,6 +62,9 @@ export const createModuleLogger = (_print, moduleName) => {
56
62
  return !doLogging
57
63
  ? func.nop
58
64
  : (...args) => {
65
+ if (args.length === 1 && args[0]?.constructor === Function) {
66
+ args = args[0]()
67
+ }
59
68
  const timeNow = time.getUnixTime()
60
69
  const timeDiff = timeNow - lastLoggingTime
61
70
  lastLoggingTime = timeNow
@@ -63,11 +72,20 @@ export const createModuleLogger = (_print, moduleName) => {
63
72
  color,
64
73
  moduleName,
65
74
  UNCOLOR,
66
- ...args.map((arg) =>
67
- (typeof arg === 'string' || typeof arg === 'symbol')
68
- ? arg
69
- : JSON.stringify(arg)
70
- ),
75
+ ...args.map((arg) => {
76
+ if (arg != null && arg.constructor === Uint8Array) {
77
+ arg = Array.from(arg)
78
+ }
79
+ const t = typeof arg
80
+ switch (t) {
81
+ case 'string':
82
+ case 'symbol':
83
+ return arg
84
+ default: {
85
+ return json.stringify(arg)
86
+ }
87
+ }
88
+ }),
71
89
  color,
72
90
  ' +' + timeDiff + 'ms'
73
91
  )
package/logging.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["logging.js"],"names":[],"mappings":"AA6FO,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAMM,8BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAOM,gCAHI,KAAK,QAMf;AAQM,8BAJI,MAAM,UACN,MAAM,QAYhB;AAQM,uCAJI,MAAM,UACN,MAAM,QAIoC;AAK9C,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAKM,wCAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAEM,iCAIN;AAMM,2CAHe,IAAI,QAI4B;AAO/C,oCAJI,iBAAiB,UACjB,MAAM,QAIqB;AAEtC,iCAAqC;AAqDrC;IACE;;OAEG;IACH,iBAFW,OAAO,EAUjB;IAPC,aAAc;IACd;;OAEG;IACH,YAFU,OAAO,CAES;IAC1B,cAAc;IAIhB;;;OAGG;IACH,YAHW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,cAClC,OAAO,QAoCjB;IAED;;OAEG;IACH,qBAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAI5C;IAED,iBAQC;IAED;;OAEG;IACH,YAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAa5C;IAED;;OAEG;IACH,gBAFW,KAAK,QAIf;IAED;;;OAGG;IACH,cAHW,MAAM,UACN,MAAM,QAWhB;IAED;;OAEG;IACH,eAFW,IAAI,QAMd;IAED,gBAIC;CACF;AAOM,oCAHI,OAAO,YAGsC;AAMjD,+CAHI,MAAM,aACO,GAAG,OAAE,IAAI,CAE6D"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["logging.js"],"names":[],"mappings":"AAmGO,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAMM,8BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAOM,gCAHI,KAAK,QAMf;AAQM,8BAJI,MAAM,UACN,MAAM,QAYhB;AAQM,uCAJI,MAAM,UACN,MAAM,QAIoC;AAK9C,+BAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAKM,wCAFI,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAM5C;AAEM,iCAIN;AAMM,2CAHe,IAAI,QAI4B;AAO/C,oCAJI,iBAAiB,UACjB,MAAM,QAIqB;AAEtC,iCAAqC;AAwDrC;IACE;;OAEG;IACH,iBAFW,OAAO,EAUjB;IAPC,aAAc;IACd;;OAEG;IACH,YAFU,OAAO,CAES;IAC1B,cAAc;IAIhB;;;OAGG;IACH,YAHW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,cAClC,OAAO,QAoCjB;IAED;;OAEG;IACH,qBAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAI5C;IAED,iBAQC;IAED;;OAEG;IACH,YAFW,MAAM,MAAM,GAAC,MAAM,GAAC,MAAM,GAAC,MAAM,CAAC,QAa5C;IAED;;OAEG;IACH,gBAFW,KAAK,QAIf;IAED;;;OAGG;IACH,cAHW,MAAM,UACN,MAAM,QAWhB;IAED;;OAEG;IACH,eAFW,IAAI,QAMd;IAED,gBAIC;CACF;AAOM,oCAHI,OAAO,YAGsC;AAMjD,+CAHI,MAAM,aACO,GAAG,OAAE,IAAI,CAE6D"}
package/logging.js CHANGED
@@ -32,11 +32,14 @@ const _browserStyleMap = {
32
32
  }
33
33
 
34
34
  /**
35
- * @param {Array<string|Symbol|Object|number>} args
35
+ * @param {Array<string|Symbol|Object|number|function():any>} args
36
36
  * @return {Array<string|object|number>}
37
37
  */
38
38
  /* c8 ignore start */
39
39
  const computeBrowserLoggingArgs = (args) => {
40
+ if (args.length === 1 && args[0]?.constructor === Function) {
41
+ args = /** @type {Array<string|Symbol|Object|number>} */ (/** @type {[function]} */ (args)[0]())
42
+ }
40
43
  const strBuilder = []
41
44
  const styles = []
42
45
  const currentStyle = map.create()
@@ -53,6 +56,9 @@ const computeBrowserLoggingArgs = (args) => {
53
56
  if (style !== undefined) {
54
57
  currentStyle.set(style.left, style.right)
55
58
  } else {
59
+ if (arg === undefined) {
60
+ break
61
+ }
56
62
  if (arg.constructor === String || arg.constructor === Number) {
57
63
  const style = dom.mapToStyleString(currentStyle)
58
64
  if (i > 0 || style.length > 0) {
@@ -195,12 +201,15 @@ const _computeLineSpans = (args) => {
195
201
  // try with formatting until we find something unsupported
196
202
  let i = 0
197
203
  for (; i < args.length; i++) {
198
- const arg = args[i]
204
+ let arg = args[i]
199
205
  // @ts-ignore
200
206
  const style = _browserStyleMap[arg]
201
207
  if (style !== undefined) {
202
208
  currentStyle.set(style.left, style.right)
203
209
  } else {
210
+ if (arg === undefined) {
211
+ arg = 'undefined '
212
+ }
204
213
  if (arg.constructor === String || arg.constructor === Number) {
205
214
  // @ts-ignore
206
215
  const span = dom.element('span', [
package/logging.node.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export function print(...args: Array<string | Symbol | Object | number>): void;
1
+ export function print(...args: Array<string | Symbol | Object | number | undefined>): void;
2
2
  export function warn(...args: Array<string | Symbol | Object | number>): void;
3
3
  export function printError(err: Error): void;
4
4
  export function printImg(_url: string, _height: number): void;