@php-wasm/logger 0.7.20 → 0.9.4

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/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=function(){var e;return typeof process<"u"&&((e=process.release)==null?void 0:e.name)==="node"?"NODE":typeof window<"u"?"WEB":typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?"WORKER":"NODE"}();if(b==="NODE"){let e=function(t){return new Promise(function(s,o){t.onload=t.onerror=function(n){t.onload=t.onerror=null,n.type==="load"?s(t.result):o(new Error("Failed to read the blob/file"))}})},r=function(){const t=new Uint8Array([1,2,3,4]),o=new File([t],"test").stream();try{return o.getReader({mode:"byob"}),!0}catch{return!1}};if(typeof File>"u"){class t extends Blob{constructor(o,n,i){super(o);let a;i!=null&&i.lastModified&&(a=new Date),(!a||isNaN(a.getFullYear()))&&(a=new Date),this.lastModifiedDate=a,this.lastModified=a.getMilliseconds(),this.name=n||""}}global.File=t}typeof Blob.prototype.arrayBuffer>"u"&&(Blob.prototype.arrayBuffer=function(){const s=new FileReader;return s.readAsArrayBuffer(this),e(s)}),typeof Blob.prototype.text>"u"&&(Blob.prototype.text=function(){const s=new FileReader;return s.readAsText(this),e(s)}),(typeof Blob.prototype.stream>"u"||!r())&&(Blob.prototype.stream=function(){let t=0;const s=this;return new ReadableStream({type:"bytes",autoAllocateChunkSize:512*1024,async pull(o){const n=o.byobRequest.view,a=await s.slice(t,t+n.byteLength).arrayBuffer(),u=new Uint8Array(a);new Uint8Array(n.buffer).set(u);const g=u.byteLength;o.byobRequest.respond(g),t+=g,t>=s.size&&o.close()}})})}if(b==="NODE"&&typeof CustomEvent>"u"){class e extends Event{constructor(t,s={}){super(t,s),this.detail=s.detail}initCustomEvent(){}}globalThis.CustomEvent=e}const v=(e,...r)=>{switch(typeof e.message=="string"?e.message=c(e.message):e.message.message&&typeof e.message.message=="string"&&(e.message.message=c(e.message.message)),e.severity){case"Debug":console.debug(e.message,...r);break;case"Info":console.info(e.message,...r);break;case"Warn":console.warn(e.message,...r);break;case"Error":console.error(e.message,...r);break;case"Fatal":console.error(e.message,...r);break;default:console.log(e.message,...r)}},M=e=>e instanceof Error?[e.message,e.stack].join(`
2
- `):JSON.stringify(e,null,2),w=[],m=e=>{w.push(e)},d=e=>{if(e.raw===!0)m(e.message);else{const r=L(typeof e.message=="object"?M(e.message):e.message,e.severity??"Info",e.prefix??"JavaScript");m(r)}};class E extends EventTarget{constructor(r=[]){super(),this.handlers=r,this.fatalErrorEvent="playground-fatal-error"}getLogs(){return this.handlers.includes(d)?[...w]:(this.error(`Logs aren't stored because the logToMemory handler isn't registered.
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=function(){var e;return typeof process<"u"&&((e=process.release)==null?void 0:e.name)==="node"?"NODE":typeof window<"u"?"WEB":typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?"WORKER":"NODE"}();if(w==="NODE"){let e=function(t){return new Promise(function(s,o){t.onload=t.onerror=function(n){t.onload=t.onerror=null,n.type==="load"?s(t.result):o(new Error("Failed to read the blob/file"))}})},r=function(){const t=new Uint8Array([1,2,3,4]),o=new File([t],"test").stream();try{return o.getReader({mode:"byob"}),!0}catch{return!1}};if(typeof File>"u"){class t extends Blob{constructor(o,n,i){super(o);let a;i!=null&&i.lastModified&&(a=new Date),(!a||isNaN(a.getFullYear()))&&(a=new Date),this.lastModifiedDate=a,this.lastModified=a.getMilliseconds(),this.name=n||""}}global.File=t}typeof Blob.prototype.arrayBuffer>"u"&&(Blob.prototype.arrayBuffer=function(){const s=new FileReader;return s.readAsArrayBuffer(this),e(s)}),typeof Blob.prototype.text>"u"&&(Blob.prototype.text=function(){const s=new FileReader;return s.readAsText(this),e(s)}),(typeof Blob.prototype.stream>"u"||!r())&&(Blob.prototype.stream=function(){let t=0;const s=this;return new ReadableStream({type:"bytes",autoAllocateChunkSize:512*1024,async pull(o){const n=o.byobRequest.view,a=await s.slice(t,t+n.byteLength).arrayBuffer(),u=new Uint8Array(a);new Uint8Array(n.buffer).set(u);const g=u.byteLength;o.byobRequest.respond(g),t+=g,t>=s.size&&o.close()}})})}if(w==="NODE"&&typeof CustomEvent>"u"){class e extends Event{constructor(t,s={}){super(t,s),this.detail=s.detail}initCustomEvent(){}}globalThis.CustomEvent=e}const E="playground-log",m=(e,...r)=>{M.dispatchEvent(new CustomEvent(E,{detail:{log:e,args:r}}))},O=(e,...r)=>{switch(typeof e.message=="string"?e.message=l(e.message):e.message.message&&typeof e.message.message=="string"&&(e.message.message=l(e.message.message)),e.severity){case"Debug":console.debug(e.message,...r);break;case"Info":console.info(e.message,...r);break;case"Warn":console.warn(e.message,...r);break;case"Error":console.error(e.message,...r);break;case"Fatal":console.error(e.message,...r);break;default:console.log(e.message,...r)}},P=e=>e instanceof Error?[e.message,e.stack].join(`
2
+ `):JSON.stringify(e,null,2),v=[],p=e=>{v.push(e)},f=e=>{if(e.raw===!0)p(e.message);else{const r=T(typeof e.message=="object"?P(e.message):e.message,e.severity??"Info",e.prefix??"JavaScript");p(r)}};class L extends EventTarget{constructor(r=[]){super(),this.handlers=r,this.fatalErrorEvent="playground-fatal-error"}getLogs(){return this.handlers.includes(f)?[...v]:(this.error(`Logs aren't stored because the logToMemory handler isn't registered.
3
3
  If you're using a custom logger instance, make sure to register logToMemory handler.
4
- `),[])}logMessage(r,...t){for(const s of this.handlers)s(r,...t)}log(r,...t){this.logMessage({message:r,severity:void 0,prefix:"JavaScript",raw:!1},...t)}debug(r,...t){this.logMessage({message:r,severity:"Debug",prefix:"JavaScript",raw:!1},...t)}info(r,...t){this.logMessage({message:r,severity:"Info",prefix:"JavaScript",raw:!1},...t)}warn(r,...t){this.logMessage({message:r,severity:"Warn",prefix:"JavaScript",raw:!1},...t)}error(r,...t){this.logMessage({message:r,severity:"Error",prefix:"JavaScript",raw:!1},...t)}}const T=()=>{try{if(process.env.NODE_ENV==="test")return[d]}catch{}return[d,v]},O=new E(T()),c=e=>e.replace(/\t/g,""),L=(e,r,t)=>{const s=new Date,o=new Intl.DateTimeFormat("en-GB",{year:"numeric",month:"short",day:"2-digit",timeZone:"UTC"}).format(s).replace(/ /g,"-"),n=new Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:"UTC",timeZoneName:"short"}).format(s),i=o+" "+n;return e=c(e),`[${i}] ${t} ${r}: ${e}`},P=(e,r)=>{e.addEventListener(e.fatalErrorEvent,r)};let f=0;const p="/wordpress/wp-content/debug.log",S=async e=>await e.fileExists(p)?await e.readFileAsText(p):"",k=(e,r)=>{r.addEventListener("request.end",async()=>{const t=await S(r);if(t.length>f){const s=t.substring(f);e.logMessage({message:s,raw:!0}),f=t.length}}),r.addEventListener("request.error",t=>{t=t,t.error&&(e.logMessage({message:`${t.error.message} ${t.error.stack}`,severity:"Fatal",prefix:t.source==="request"?"PHP":"WASM Crash"}),e.dispatchEvent(new CustomEvent(e.fatalErrorEvent,{detail:{logs:e.getLogs(),source:t.source}})))})},B=(e,r)=>{e.logMessage({message:`${r.message} in ${r.filename} on line ${r.lineno}:${r.colno}`,severity:"Error"})},y=(e,r)=>{if(!(r!=null&&r.reason))return;const t=(r==null?void 0:r.reason.stack)??r.reason;e.logMessage({message:t,severity:"Error"})};let l=0;const x=e=>{navigator.serviceWorker.addEventListener("message",r=>{var t,s,o;((t=r.data)==null?void 0:t.numberOfOpenPlaygroundTabs)!==void 0&&l!==((s=r.data)==null?void 0:s.numberOfOpenPlaygroundTabs)&&(l=(o=r.data)==null?void 0:o.numberOfOpenPlaygroundTabs,e.debug(`Number of open Playground tabs is: ${l}`))})};let h=!1;const D=e=>{h||(x(e),!(typeof window>"u")&&(window.addEventListener("error",r=>B(e,r)),window.addEventListener("unhandledrejection",r=>y(e,r)),window.addEventListener("rejectionhandled",r=>y(e,r)),h=!0))},W=e=>{e.addEventListener("activate",()=>{e.clients.matchAll().then(r=>{const t={numberOfOpenPlaygroundTabs:r.filter(s=>s.frameType==="top-level").length};for(const s of r)s.postMessage(t)})})};exports.Logger=E;exports.addCrashListener=P;exports.collectPhpLogs=k;exports.collectWindowErrors=D;exports.formatLogEntry=L;exports.logger=O;exports.prepareLogMessage=c;exports.reportServiceWorkerMetrics=W;
4
+ `),[])}logMessage(r,...t){for(const s of this.handlers)s(r,...t)}log(r,...t){this.logMessage({message:r,severity:void 0,prefix:"JavaScript",raw:!1},...t)}debug(r,...t){this.logMessage({message:r,severity:"Debug",prefix:"JavaScript",raw:!1},...t)}info(r,...t){this.logMessage({message:r,severity:"Info",prefix:"JavaScript",raw:!1},...t)}warn(r,...t){this.logMessage({message:r,severity:"Warn",prefix:"JavaScript",raw:!1},...t)}error(r,...t){this.logMessage({message:r,severity:"Error",prefix:"JavaScript",raw:!1},...t)}}const S=()=>{try{if(process.env.NODE_ENV==="test")return[f,m]}catch{}return[f,O,m]},M=new L(S()),l=e=>e.replace(/\t/g,""),T=(e,r,t)=>{const s=new Date,o=new Intl.DateTimeFormat("en-GB",{year:"numeric",month:"short",day:"2-digit",timeZone:"UTC"}).format(s).replace(/ /g,"-"),n=new Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZone:"UTC",timeZoneName:"short"}).format(s),i=o+" "+n;return e=l(e),`[${i}] ${t} ${r}: ${e}`},k=(e,r)=>{e.addEventListener(e.fatalErrorEvent,r)};let c=0;const y="/wordpress/wp-content/debug.log",B=async e=>await e.fileExists(y)?await e.readFileAsText(y):"",x=(e,r)=>{r.addEventListener("request.end",async()=>{const t=await B(r);if(t.length>c){const s=t.substring(c);e.logMessage({message:s,raw:!0}),c=t.length}}),r.addEventListener("request.error",t=>{t=t,t.error&&(e.logMessage({message:`${t.error.message} ${t.error.stack}`,severity:"Fatal",prefix:t.source==="request"?"PHP":"WASM Crash"}),e.dispatchEvent(new CustomEvent(e.fatalErrorEvent,{detail:{logs:e.getLogs(),source:t.source}})))})},D=(e,r)=>{e.logMessage({message:`${r.message} in ${r.filename} on line ${r.lineno}:${r.colno}`,severity:"Error"})},h=(e,r)=>{if(!(r!=null&&r.reason))return;const t=(r==null?void 0:r.reason.stack)??r.reason;e.logMessage({message:t,severity:"Error"})};let d=0;const C=e=>{navigator.serviceWorker.addEventListener("message",r=>{var t,s,o;((t=r.data)==null?void 0:t.numberOfOpenPlaygroundTabs)!==void 0&&d!==((s=r.data)==null?void 0:s.numberOfOpenPlaygroundTabs)&&(d=(o=r.data)==null?void 0:o.numberOfOpenPlaygroundTabs,e.debug(`Number of open Playground tabs is: ${d}`))})};let b=!1;const W=e=>{b||(C(e),!(typeof window>"u")&&(window.addEventListener("error",r=>D(e,r)),window.addEventListener("unhandledrejection",r=>h(e,r)),window.addEventListener("rejectionhandled",r=>h(e,r)),b=!0))},F=e=>{e.addEventListener("activate",()=>{e.clients.matchAll().then(r=>{const t={numberOfOpenPlaygroundTabs:r.filter(s=>s.frameType==="top-level").length};for(const s of r)s.postMessage(t)})})};exports.Logger=L;exports.addCrashListener=k;exports.collectPhpLogs=x;exports.collectWindowErrors=W;exports.formatLogEntry=T;exports.logEventType=E;exports.logger=M;exports.prepareLogMessage=l;exports.reportServiceWorkerMetrics=F;
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const b = function() {
1
+ const w = function() {
2
2
  var e;
3
3
  return typeof process < "u" && ((e = process.release) == null ? void 0 : e.name) === "node" ? "NODE" : typeof window < "u" ? "WEB" : (
4
4
  // @ts-ignore
@@ -6,7 +6,7 @@ const b = function() {
6
6
  self instanceof WorkerGlobalScope ? "WORKER" : "NODE"
7
7
  );
8
8
  }();
9
- if (b === "NODE") {
9
+ if (w === "NODE") {
10
10
  let e = function(t) {
11
11
  return new Promise(function(s, o) {
12
12
  t.onload = t.onerror = function(n) {
@@ -51,13 +51,13 @@ if (b === "NODE") {
51
51
  t + n.byteLength
52
52
  ).arrayBuffer(), u = new Uint8Array(a);
53
53
  new Uint8Array(n.buffer).set(u);
54
- const m = u.byteLength;
55
- o.byobRequest.respond(m), t += m, t >= s.size && o.close();
54
+ const g = u.byteLength;
55
+ o.byobRequest.respond(g), t += g, t >= s.size && o.close();
56
56
  }
57
57
  });
58
58
  });
59
59
  }
60
- if (b === "NODE" && typeof CustomEvent > "u") {
60
+ if (w === "NODE" && typeof CustomEvent > "u") {
61
61
  class e extends Event {
62
62
  constructor(t, s = {}) {
63
63
  super(t, s), this.detail = s.detail;
@@ -67,7 +67,16 @@ if (b === "NODE" && typeof CustomEvent > "u") {
67
67
  }
68
68
  globalThis.CustomEvent = e;
69
69
  }
70
- const E = (e, ...r) => {
70
+ const v = "playground-log", m = (e, ...r) => {
71
+ B.dispatchEvent(
72
+ new CustomEvent(v, {
73
+ detail: {
74
+ log: e,
75
+ args: r
76
+ }
77
+ })
78
+ );
79
+ }, L = (e, ...r) => {
71
80
  switch (typeof e.message == "string" ? e.message = l(e.message) : e.message.message && typeof e.message.message == "string" && (e.message.message = l(e.message.message)), e.severity) {
72
81
  case "Debug":
73
82
  console.debug(e.message, ...r);
@@ -87,22 +96,22 @@ const E = (e, ...r) => {
87
96
  default:
88
97
  console.log(e.message, ...r);
89
98
  }
90
- }, v = (e) => e instanceof Error ? [e.message, e.stack].join(`
91
- `) : JSON.stringify(e, null, 2), w = [], g = (e) => {
92
- w.push(e);
99
+ }, T = (e) => e instanceof Error ? [e.message, e.stack].join(`
100
+ `) : JSON.stringify(e, null, 2), E = [], p = (e) => {
101
+ E.push(e);
93
102
  }, d = (e) => {
94
103
  if (e.raw === !0)
95
- g(e.message);
104
+ p(e.message);
96
105
  else {
97
- const r = T(
98
- typeof e.message == "object" ? v(e.message) : e.message,
106
+ const r = O(
107
+ typeof e.message == "object" ? T(e.message) : e.message,
99
108
  e.severity ?? "Info",
100
109
  e.prefix ?? "JavaScript"
101
110
  );
102
- g(r);
111
+ p(r);
103
112
  }
104
113
  };
105
- class L extends EventTarget {
114
+ class M extends EventTarget {
106
115
  // constructor
107
116
  constructor(r = []) {
108
117
  super(), this.handlers = r, this.fatalErrorEvent = "playground-fatal-error";
@@ -112,7 +121,7 @@ class L extends EventTarget {
112
121
  * @returns string[]
113
122
  */
114
123
  getLogs() {
115
- return this.handlers.includes(d) ? [...w] : (this.error(`Logs aren't stored because the logToMemory handler isn't registered.
124
+ return this.handlers.includes(d) ? [...E] : (this.error(`Logs aren't stored because the logToMemory handler isn't registered.
116
125
  If you're using a custom logger instance, make sure to register logToMemory handler.
117
126
  `), []);
118
127
  }
@@ -214,14 +223,14 @@ class L extends EventTarget {
214
223
  );
215
224
  }
216
225
  }
217
- const M = () => {
226
+ const x = () => {
218
227
  try {
219
228
  if (process.env.NODE_ENV === "test")
220
- return [d];
229
+ return [d, m];
221
230
  } catch {
222
231
  }
223
- return [d, E];
224
- }, k = new L(M()), l = (e) => e.replace(/\t/g, ""), T = (e, r, t) => {
232
+ return [d, L, m];
233
+ }, B = new M(x()), l = (e) => e.replace(/\t/g, ""), O = (e, r, t) => {
225
234
  const s = /* @__PURE__ */ new Date(), o = new Intl.DateTimeFormat("en-GB", {
226
235
  year: "numeric",
227
236
  month: "short",
@@ -236,13 +245,13 @@ const M = () => {
236
245
  timeZoneName: "short"
237
246
  }).format(s), i = o + " " + n;
238
247
  return e = l(e), `[${i}] ${t} ${r}: ${e}`;
239
- }, P = (e, r) => {
248
+ }, S = (e, r) => {
240
249
  e.addEventListener(e.fatalErrorEvent, r);
241
250
  };
242
251
  let f = 0;
243
- const p = "/wordpress/wp-content/debug.log", x = async (e) => await e.fileExists(p) ? await e.readFileAsText(p) : "", D = (e, r) => {
252
+ const y = "/wordpress/wp-content/debug.log", k = async (e) => await e.fileExists(y) ? await e.readFileAsText(y) : "", C = (e, r) => {
244
253
  r.addEventListener("request.end", async () => {
245
- const t = await x(r);
254
+ const t = await k(r);
246
255
  if (t.length > f) {
247
256
  const s = t.substring(f);
248
257
  e.logMessage({
@@ -264,12 +273,12 @@ const p = "/wordpress/wp-content/debug.log", x = async (e) => await e.fileExists
264
273
  })
265
274
  ));
266
275
  });
267
- }, B = (e, r) => {
276
+ }, P = (e, r) => {
268
277
  e.logMessage({
269
278
  message: `${r.message} in ${r.filename} on line ${r.lineno}:${r.colno}`,
270
279
  severity: "Error"
271
280
  });
272
- }, y = (e, r) => {
281
+ }, h = (e, r) => {
273
282
  if (!(r != null && r.reason))
274
283
  return;
275
284
  const t = (r == null ? void 0 : r.reason.stack) ?? r.reason;
@@ -279,7 +288,7 @@ const p = "/wordpress/wp-content/debug.log", x = async (e) => await e.fileExists
279
288
  });
280
289
  };
281
290
  let c = 0;
282
- const O = (e) => {
291
+ const D = (e) => {
283
292
  navigator.serviceWorker.addEventListener("message", (r) => {
284
293
  var t, s, o;
285
294
  ((t = r.data) == null ? void 0 : t.numberOfOpenPlaygroundTabs) !== void 0 && c !== ((s = r.data) == null ? void 0 : s.numberOfOpenPlaygroundTabs) && (c = (o = r.data) == null ? void 0 : o.numberOfOpenPlaygroundTabs, e.debug(
@@ -287,19 +296,19 @@ const O = (e) => {
287
296
  ));
288
297
  });
289
298
  };
290
- let h = !1;
291
- const S = (e) => {
292
- h || (O(e), !(typeof window > "u") && (window.addEventListener(
299
+ let b = !1;
300
+ const F = (e) => {
301
+ b || (D(e), !(typeof window > "u") && (window.addEventListener(
293
302
  "error",
294
- (r) => B(e, r)
303
+ (r) => P(e, r)
295
304
  ), window.addEventListener(
296
305
  "unhandledrejection",
297
- (r) => y(e, r)
306
+ (r) => h(e, r)
298
307
  ), window.addEventListener(
299
308
  "rejectionhandled",
300
- (r) => y(e, r)
301
- ), h = !0));
302
- }, F = (e) => {
309
+ (r) => h(e, r)
310
+ ), b = !0));
311
+ }, R = (e) => {
303
312
  e.addEventListener("activate", () => {
304
313
  e.clients.matchAll().then((r) => {
305
314
  const t = {
@@ -314,12 +323,13 @@ const S = (e) => {
314
323
  });
315
324
  };
316
325
  export {
317
- L as Logger,
318
- P as addCrashListener,
319
- D as collectPhpLogs,
320
- S as collectWindowErrors,
321
- T as formatLogEntry,
322
- k as logger,
326
+ M as Logger,
327
+ S as addCrashListener,
328
+ C as collectPhpLogs,
329
+ F as collectWindowErrors,
330
+ O as formatLogEntry,
331
+ v as logEventType,
332
+ B as logger,
323
333
  l as prepareLogMessage,
324
- F as reportServiceWorkerMetrics
334
+ R as reportServiceWorkerMetrics
325
335
  };
@@ -0,0 +1,3 @@
1
+ import { LogHandler } from '../log-handlers';
2
+ export declare const logEventType = "playground-log";
3
+ export declare const logEvent: LogHandler;
package/lib/logger.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { logEventType } from './handlers/log-event';
1
2
  export type Log = {
2
3
  message: any;
3
4
  severity?: LogSeverity;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@php-wasm/logger",
3
- "version": "0.7.20",
3
+ "version": "0.9.4",
4
4
  "description": "A logger for PHP-wasm clients like Playground and WP-now.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,5 +27,5 @@
27
27
  "node": ">=18.18.0",
28
28
  "npm": ">=8.11.0"
29
29
  },
30
- "gitHead": "5915ef756c88da8dcb665f9f0e49ddc0c0b10d50"
30
+ "gitHead": "702bb9bed9c153ea23651059592aea19c1ba9be4"
31
31
  }