{"_id":"@arena-im/arena-cf-worker","_rev":"21-2f945a7cf85ca3dc0d54156858fc7c84","name":"@arena-im/arena-cf-worker","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.6":{"name":"@arena-im/arena-cf-worker","version":"0.0.6","keywords":["arena","cloudflare","worker","workers"],"author":{"url":"https://www.arena.im","name":"Cesar William Alvarenga","email":"cesar@arena.im"},"license":"ISC","_id":"@arena-im/arena-cf-worker@0.0.6","maintainers":[{"name":"cesar_arena","email":"cesar@arena.im"},{"name":"stationfynpm","email":"services@stationfy.com"}],"dist":{"shasum":"4683b5bd44b0ee76ecb1cbb16bc66189612293da","tarball":"https://registry.npmjs.org/@arena-im/arena-cf-worker/-/arena-cf-worker-0.0.6.tgz","fileCount":3,"integrity":"sha512-Vwa5M5Q1IqGsKJ/aw9fRXeEYJzR/saQ/gbV+Hcf/zg8uKRyZ4oCAHjIYirBUmN8K2fVH2RIoDmRTCkUhntI/cw==","signatures":[{"sig":"MEQCIHNecqJVInXqe5UCc9HOwNzm1HOXdk6gTkFlomVIFJMcAiADR8wh0rz9GZ9IJpmw1ch6qhcNwHGf+fy9KJa2PjzjHA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeeSPICRA9TVsSAnZWagAAoYMP+QHLi89L0EMyHv9bzNBq\nKxH+dniIhvBi2796jU+tHSceR9NFKc+zFeNj/SmhDKlZOTX0edVZxIKciHXt\nFkLfEQb07AKOeASrwSKZXETlNni3OT7Vh6Te4WPTQIo2/sMTPYw7+hPKgvhk\nUnY5lagai3zD1ekjfxSMt3YUtvx3Nyg+9T5YywAlp3RuXaISJjtQzVROSgEm\njhtdywupOHFyS1or/pfxtMpiS10O+XjgJu98g2xP2RDF1n4PsRxx5QTxX3NC\nmYSpgqSeMOT15yFIg+CAbHg8iiE3MOTe7IPbMPFXcWuwvA6FlH5Hi0wAF12D\nN87g2+1ZMQj+P3ghYLkpvl132SvnPJQ0UVt04lghM8kHbBk889BKCPTdx5/v\nG0GxS1CrK1un3cNaxbOvLi2el5YB8Cefh0fyKL8VdncG4A6TWMzFkRV58+vm\nxPRWtDK/bP0IPUs/C07OS3aC02uIb8xWVkqhGnOw1tGUiXm8IBv4OvcIKwoX\nVtZcJssir052K3BWsNhy7HmMD9rhhpKtuLy6g3C4tCs+V5VL7BUd31h5qIRV\nRnZ6yt6NhZSAb/Uoe9K6hJyEQB+jPT32GgXIfGHRCnz0H6rCZzWHRlhjzKJj\nHq51yUsqHwcBlpqeL028fw6e7Dd/azCZaGflOMT4UIcI7IKWZL/IxaBuTH1V\ntIGM\r\n=EahL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"cesar_arena","email":"cesar@arena.im"},"_npmVersion":"6.9.0","description":"A Arena Cloudflare Worker to insert SEO JSON-LD into pages for arena events","directories":{},"_nodeVersion":"10.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arena-cf-worker_0.0.6_1584997319930_0.8212541586065099","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@arena-im/arena-cf-worker","version":"0.0.7","keywords":["arena","cloudflare","worker","workers"],"author":{"url":"https://www.arena.im","name":"Cesar William Alvarenga","email":"cesar@arena.im"},"license":"ISC","_id":"@arena-im/arena-cf-worker@0.0.7","maintainers":[{"name":"cesar_arena","email":"cesar@arena.im"},{"name":"stationfynpm","email":"services@stationfy.com"}],"dist":{"shasum":"d4de343cd48d312966fda0056401a678f848739d","tarball":"https://registry.npmjs.org/@arena-im/arena-cf-worker/-/arena-cf-worker-0.0.7.tgz","fileCount":3,"integrity":"sha512-90uQH5c7Hyb+TZjXc/PUnewzEmePAur8cM/z17v6KF+T9RTSsMuCv0rWAdGpAamT7sCVUUkAtoyM69bs8wj6Lw==","signatures":[{"sig":"MEUCIQDMK737uc2i/TImkoIvCV46qB4XKsL9sjoJKZpSA88g3AIgASfsjE5FZsxZUEHlah/iffVAUR5AAkYvhjJTI7g2PZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh113rCRA9TVsSAnZWagAAGU0P/1ILo+clVZyAzppQH+E8\nGGSD5koMhutmKTjx41AUyrx67yCLv/CtIIw3/M3wfIIrU5mFn5A+OgRculkr\nVdhJo0umHg8RN8qhBMu2LsdW7IcT18GJ3HlzsbRX32jUnoNjh9bQfaBMuNw3\ndx++A8CFwuDtcdJa1HPATvlxYCGTwmPGy4+KvXHX4eMVxhLHKPBFBY7aa38V\nPM39pzh1kYO/jbHDXODUXrHBowv9OgxCs1y4I6WEdXd35CFH0OV89GS1rh0T\n0yjY+4JHEMTal2lNNOdxIcvN129SPK2NLDkXGob3JbV8JFLGv5gJhqj6XT6A\nZWpNEUzxTObFthsZWqy3g98FFRH39klme62xTYHswuY5CnsJuw+NFcQiQXt2\nzpKx/NJmZpoMrKDglrjr3g+qsggAMEmnd6qXeCsevqAw6o3ACF5++Ko9Lc6G\n61TzdGd7BVgLgMCgmEVvDsjn4r41+sC2Qyi1MVJ/Z1OaC3Ux9hCosuq1HqOn\ne0fV1zsnBiCDhx3U+w7AQA7J7j/CDq4Ascu4kIgsSFiJ38dOOXhC9qf3gDCQ\nWnToHVdSGSVnHAlLRz0ldbahgcYaPajH5JHJCkJjkZ1w16CJuoQ6uF5xm8aJ\nAofB14BGLExNZV3bE8Hkpl2Rld+qwXpHEvdfWajmCw89peB7Q0s99Qo+x5NM\nY4hG\r\n=xClh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"cesar_arena","email":"cesar@arena.im"},"_npmVersion":"6.9.0","description":"A Arena Cloudflare Worker to insert SEO JSON-LD into pages for arena events","directories":{},"_nodeVersion":"10.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/arena-cf-worker_0.0.7_1584997438203_0.13958795818849468","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-03-23T21:01:59.696Z","modified":"2025-12-08T22:56:35.681Z","0.0.6":"2020-03-23T21:02:00.058Z","0.0.7":"2020-03-23T21:03:58.303Z"},"author":{"url":"https://www.arena.im","name":"Cesar William Alvarenga","email":"cesar@arena.im"},"license":"ISC","keywords":["arena","cloudflare","worker","workers"],"description":"A Arena Cloudflare Worker to insert SEO JSON-LD into pages for arena events","maintainers":[{"email":"services@stationfy.com","name":"stationfynpm"},{"email":"cesar@arena.im","name":"cesar_arena"},{"email":"larissa@arena.im","name":"larissadornelas"},{"email":"engineering-owner@arena.im","name":"arena-eng-owner"},{"email":"edgard@arena.im","name":"edgard.arena"}],"readme":"# Arena Cloudflare Worker\n\n## What's a Worker\n\nA Cloudflare Worker is a piece of JavaScript code that runs every time you access a specific route on a website proxied by Cloudflare. The code is executed every request *before* they reach Cloudflare's cache. This means Worker responses are no cached (although requests made by the worker to other web services might be cached with the appropriate caching headers).\n\n## Arena Cloudflare Worker\n\nThe Arena Cloudflare Worker can be used to improve your SEO based on the events that you have using the Arena.im events. To start using this worker first you have to have a Cloudflare account and associate with your domain and an Arena.im account.\n\nThere are two ways to create a worker on Cloudflare Workers, the first one is using the Wrangler CLI (recommended), and another one is creating the Worker using the Cloudflare dashboard.\n\n## Create Worker using Wrangler CLI (recommended)\n\nManually create/modifying Worker's code could get complicated, especially since we might want to automate all steps to deploy a Web application.\n\nTo automate that use the Wrangler Cloudflare Worker's CLI tool. https://developers.cloudflare.com/workers/tooling/wrangler/\n\n### Install Wrangler with npm\n\nYou can install wrangler using NPM:\n\n```bash\n$ npm i @cloudflare/wrangler -g\n```\n\n### Configuration\n\nConfigure your global Cloudflare user. This is an interactive command that will prompt you for your API token:\n\n```bash\n$ wrangler config\n```\n\nYou can create an API token going to the main Account dashboard and click on \"Get your API token\".\n\nAfter that, you can generate a Worker.\n\n### Generate a Worker\n\nYou can generate a new Worker with the default template running this command:\n\n```bash\n$ wrangler generate arena-worker\n```\n\n### Install Arena Cloudflare Worker\n\nEnter in the `arena-worker` a then install the Arena Cloudflare Worker:\n\n```bash\n$ cd arena-worker\n$ npm install --save @arena-im/arena-cf-worker\n```\n\n### Set your Account ID and type\n\nTo publish your `arena-worker` you need to set your Account ID. You can find your Account ID on the main Account dashboard under `API > Account ID`.\n\nWith your Account ID, you can open the file `arena-worker/wrangler.toml` and put your id on `account_id`.\n\nNow you have to change the `type` from `javascript` to `webpack`.\n\n### Edit your Worker\n\nOpen the file `arena-worker/index.js`remove all lines and put the following code snippet:\n\n```javascript\nimport ArenaHandleRequest from '@arena-im/arena-cf-worker'\n\naddEventListener('fetch', event => {\n  event.respondWith(ArenaHandleRequest(event.request))\n})\n```\n\n### Publish\n\nPublish the Arena Worker to Cloudflare.\n\n```bash\n$ wrangler publish\n```\n\n### Add route\n\nOnce published we can make the routing to run this worker on your domain, perhaps even on a single route path. For this, we need to go to the main Account dashboard and select the Workers tab.\n\n![workers_tab](https://user-images.githubusercontent.com/248140/77326885-392b0a80-6cf9-11ea-8d99-93ad3f2e88f4.png)\n\nAdd a route with your route, for example `https://yourdomain/posts/*` and select your recently deployed `arena-worker` Worker.\n\n![add_route](https://user-images.githubusercontent.com/248140/77333011-93c86480-6d01-11ea-9436-af255f48c2ce.png)\n\nNow we can access directly that URL: for example https://yourdomain/posts/hello and check that the SEO is working on this page.\n\n## Create Worker using the Cloudflare dashboard\n\n### Create a Worker\n\nThen we can create a worker on the worker tab. Click on the Workers tab then on \"Manage Workers\". On the Workers' panel click on \"Create a Worker\".\n\n![workers_tab](https://user-images.githubusercontent.com/248140/77326885-392b0a80-6cf9-11ea-8d99-93ad3f2e88f4.png)\n\n![create_worker](https://user-images.githubusercontent.com/248140/77334729-f4f13780-6d03-11ea-8c25-6b30dc76a23c.png)\n\n### Edit the worker\n\nIn the Workers Panel create a new Worker, change the name (I used `arena-worker`) and remove all code in the Script tab and insert the code snippet below and then click on \"Save and Deploy\".\n\n```javascript\nvar ARENA_CF_WORKER_VERSION=\"0.0.1\";!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,function(){const e={};function t(t){if(!e[t])return null;return new Date>e[t].expires?null:e[t].value}const n=(new HTMLRewriter).on(\"div\",new class{element(e){e.hasAttribute(\"data-event\")&&e.hasAttribute(\"data-publisher\")&&t(`${e.getAttribute(\"data-publisher\")}-${e.getAttribute(\"data-event\")}`)&&e.after(t(`${e.getAttribute(\"data-publisher\")}-${e.getAttribute(\"data-event\")}`),{html:!0})}});async function i(i){const r=await fetch(i);try{const n=r.clone(),i=await n.text();await async function(n){const i=function(e){const t=function(e){const t=[];let n=0;for(;n<e.length;){let i=e.indexOf('<div id=\"arena-live\"',n);if(-1===i&&(i=e.indexOf('<div class=\"arena-liveblog\"',n)),-1===i)break;const r=e.indexOf(\"</div>\",i+1),a=e.substring(i,r+6);t.push(a),n=r+7}return t}(e),n=[];return t.forEach(e=>{const t=function(e){let t=e.indexOf(\"data-publisher=\");if(-1===t)return null;const n=e.indexOf('\"',t+16);return e.substring(t+16,n)}(e);if(!t)return;const i=function(e){let t=e.indexOf(\"data-event=\");if(-1===t)return null;const n=e.indexOf('\"',t+12);return e.substring(t+12,n)}(e);i&&n.push({publisherSlug:t,eventSlug:i})}),n}(n);for await(let n of i){if(t(`${n.publisherSlug}-${n.eventSlug}`))continue;const i=await fetch(`https://cached-api.arena.im/v1/liveblog/${n.publisherSlug}/${n.eventSlug}/ldjson`),u=await i.text();r=`${n.publisherSlug}-${n.eventSlug}`,a=u,e[r]={expires:new Date((new Date).getTime()+864e5),value:a}}var r,a}(i)}catch(e){console.error(\"Cannot generate SEO schema tags\")}return n.transform(r)}return\"undefined\"!=typeof globalThis&&(globalThis.ArenaHandleRequest=i),i});\n\naddEventListener('fetch', event => {\n  event.respondWith(ArenaHandleRequest(event.request))\n})\n```\n\n![editor](https://user-images.githubusercontent.com/248140/77335642-2e767280-6d05-11ea-8c20-c9081cebffb2.png)\n\n### Add route\n\nOnce deployed we can make the routing to run this worker on your domain, perhaps even on a single route path. For this, we need to go to the main Account dashboard and select the Workers tab.\n\n![workers_tab](https://user-images.githubusercontent.com/248140/77326885-392b0a80-6cf9-11ea-8d99-93ad3f2e88f4.png)\n\nAdd a route with your route, for example `https://yourdomain/posts/*` and select your recently deployed `arena-worker` Worker.\n\n![add_route](https://user-images.githubusercontent.com/248140/77333011-93c86480-6d01-11ea-9436-af255f48c2ce.png)\n\nNow you can access directly that URL: for example https://yourdomain/posts/hello and check that the SEO is working on this page.\n","readmeFilename":"README.md"}