UNPKG

next-csrf

Version:

CSRF mitigation library for Next.js

1 lines 5.5 kB
{"ast":null,"code":"\"use strict\";\n\nexports.__esModule = true;\nexports.getEventSourceWrapper = getEventSourceWrapper;\nvar eventCallbacks = [];\n\nfunction EventSourceWrapper(options) {\n var source;\n var lastActivity = new Date();\n var listeners = [];\n\n if (!options.timeout) {\n options.timeout = 20 * 1000;\n }\n\n init();\n var timer = setInterval(function () {\n if (new Date() - lastActivity > options.timeout) {\n handleDisconnect();\n }\n }, options.timeout / 2);\n\n function init() {\n source = new window.EventSource(options.path);\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onmessage = handleMessage;\n }\n\n function handleOnline() {\n if (options.log) console.log('[HMR] connected');\n lastActivity = new Date();\n }\n\n function handleMessage(event) {\n lastActivity = new Date();\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](event);\n }\n\n eventCallbacks.forEach(function (cb) {\n if (!cb.unfiltered && event.data.indexOf('action') === -1) return;\n cb(event);\n });\n }\n\n function handleDisconnect() {\n clearInterval(timer);\n source.close();\n setTimeout(init, options.timeout);\n }\n\n return {\n close: function close() {\n clearInterval(timer);\n source.close();\n },\n addMessageListener: function addMessageListener(fn) {\n listeners.push(fn);\n }\n };\n}\n\n_c = EventSourceWrapper;\n\nfunction getEventSourceWrapper(options) {\n if (!options.ondemand) {\n return {\n addMessageListener: function addMessageListener(cb) {\n eventCallbacks.push(cb);\n }\n };\n }\n\n return EventSourceWrapper(options);\n}\n\nvar _c;\n\n$RefreshReg$(_c, \"EventSourceWrapper\");","map":{"version":3,"sources":["../../../../client/dev/error-overlay/eventsource.js"],"names":["eventCallbacks","lastActivity","listeners","options","init","timer","setInterval","handleDisconnect","source","window","console","i","cb","event","clearInterval","setTimeout","close","addMessageListener","EventSourceWrapper"],"mappings":";;;;AAAA,IAAMA,cAAc,GAApB,EAAA;;AAEA,SAAA,kBAAA,CAAA,OAAA,EAAqC;AACnC,MAAA,MAAA;AACA,MAAIC,YAAY,GAAG,IAAnB,IAAmB,EAAnB;AACA,MAAIC,SAAS,GAAb,EAAA;;AAEA,MAAI,CAACC,OAAO,CAAZ,OAAA,EAAsB;AACpBA,IAAAA,OAAO,CAAPA,OAAAA,GAAkB,KAAlBA,IAAAA;AAGFC;;AAAAA,EAAAA,IAAI;AACJ,MAAIC,KAAK,GAAGC,WAAW,CAAC,YAAY;AAClC,QAAI,IAAA,IAAA,KAAA,YAAA,GAA4BH,OAAO,CAAvC,OAAA,EAAiD;AAC/CI,MAAAA,gBAAgB;AAEnB;AAJsB,GAAA,EAIpBJ,OAAO,CAAPA,OAAAA,GAJH,CAAuB,CAAvB;;AAMA,WAAA,IAAA,GAAgB;AACdK,IAAAA,MAAM,GAAG,IAAIC,MAAM,CAAV,WAAA,CAAuBN,OAAO,CAAvCK,IAAS,CAATA;AACAA,IAAAA,MAAM,CAANA,MAAAA,GAAAA,YAAAA;AACAA,IAAAA,MAAM,CAANA,OAAAA,GAAAA,gBAAAA;AACAA,IAAAA,MAAM,CAANA,SAAAA,GAAAA,aAAAA;AAGF;;AAAA,WAAA,YAAA,GAAwB;AACtB,QAAIL,OAAO,CAAX,GAAA,EAAiBO,OAAO,CAAPA,GAAAA,CAAAA,iBAAAA;AACjBT,IAAAA,YAAY,GAAG,IAAfA,IAAe,EAAfA;AAGF;;AAAA,WAAA,aAAA,CAAA,KAAA,EAA8B;AAC5BA,IAAAA,YAAY,GAAG,IAAfA,IAAe,EAAfA;;AACA,SAAK,IAAIU,CAAC,GAAV,CAAA,EAAgBA,CAAC,GAAGT,SAAS,CAA7B,MAAA,EAAsCS,CAAtC,EAAA,EAA2C;AACzCT,MAAAA,SAAS,CAATA,CAAS,CAATA,CAAAA,KAAAA;AAGFF;;AAAAA,IAAAA,cAAc,CAAdA,OAAAA,CAAwBY,UAAAA,EAAD,EAAQ;AAC7B,UAAI,CAACA,EAAE,CAAH,UAAA,IAAkBC,KAAK,CAALA,IAAAA,CAAAA,OAAAA,CAAAA,QAAAA,MAAiC,CAAvD,CAAA,EAA2D;AAC3DD,MAAAA,EAAE,CAAFA,KAAE,CAAFA;AAFFZ,KAAAA;AAMF;;AAAA,WAAA,gBAAA,GAA4B;AAC1Bc,IAAAA,aAAa,CAAbA,KAAa,CAAbA;AACAN,IAAAA,MAAM,CAANA,KAAAA;AACAO,IAAAA,UAAU,CAAA,IAAA,EAAOZ,OAAO,CAAxBY,OAAU,CAAVA;AAGF;;AAAA,SAAO;AACLC,IAAAA,KAAK,EAAE,iBAAM;AACXF,MAAAA,aAAa,CAAbA,KAAa,CAAbA;AACAN,MAAAA,MAAM,CAANA,KAAAA;AAHG,KAAA;AAKLS,IAAAA,kBAAkB,EAAE,4BAAA,EAAA,EAAc;AAChCf,MAAAA,SAAS,CAATA,IAAAA,CAAAA,EAAAA;AANJ;AAAO,GAAP;AAWK;;KAzDP,kB;;AAyDO,SAAA,qBAAA,CAAA,OAAA,EAAwC;AAC7C,MAAI,CAACC,OAAO,CAAZ,QAAA,EAAuB;AACrB,WAAO;AACLc,MAAAA,kBAAkB,EAAGL,4BAAAA,EAAD,EAAQ;AAC1BZ,QAAAA,cAAc,CAAdA,IAAAA,CAAAA,EAAAA;AAFJ;AAAO,KAAP;AAMF;;AAAA,SAAOkB,kBAAkB,CAAzB,OAAyB,CAAzB;AACD","sourcesContent":["const eventCallbacks = []\n\nfunction EventSourceWrapper(options) {\n var source\n var lastActivity = new Date()\n var listeners = []\n\n if (!options.timeout) {\n options.timeout = 20 * 1000\n }\n\n init()\n var timer = setInterval(function () {\n if (new Date() - lastActivity > options.timeout) {\n handleDisconnect()\n }\n }, options.timeout / 2)\n\n function init() {\n source = new window.EventSource(options.path)\n source.onopen = handleOnline\n source.onerror = handleDisconnect\n source.onmessage = handleMessage\n }\n\n function handleOnline() {\n if (options.log) console.log('[HMR] connected')\n lastActivity = new Date()\n }\n\n function handleMessage(event) {\n lastActivity = new Date()\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](event)\n }\n\n eventCallbacks.forEach((cb) => {\n if (!cb.unfiltered && event.data.indexOf('action') === -1) return\n cb(event)\n })\n }\n\n function handleDisconnect() {\n clearInterval(timer)\n source.close()\n setTimeout(init, options.timeout)\n }\n\n return {\n close: () => {\n clearInterval(timer)\n source.close()\n },\n addMessageListener: function (fn) {\n listeners.push(fn)\n },\n }\n}\n\nexport function getEventSourceWrapper(options) {\n if (!options.ondemand) {\n return {\n addMessageListener: (cb) => {\n eventCallbacks.push(cb)\n },\n }\n }\n return EventSourceWrapper(options)\n}\n"]},"metadata":{},"sourceType":"script"}