From d0bdc048576a90e6c2c643f4c64243552a16f420 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 4 Sep 2024 10:33:19 +0200 Subject: [PATCH 1/6] chore: apply linter suggestions --- CHANGELOG.md | 4 + Dockerfile | 2 +- biome.json | 3 +- bun.lockb | Bin 335792 -> 336080 bytes config/index.js | 2 +- package.json | 12 +-- src/ingest/auth/login/post.js | 2 +- src/ingest/auth/middleware/verify.js | 2 +- src/ingest/auth/refresh/post.js | 2 +- src/ingest/ingest.test.js | 98 +++++++++++++--------- src/ingest/router.js | 40 ++------- src/ingest/subscriptions/get.js | 2 +- src/ingest/subscriptions/list.js | 4 +- src/utils/response/badRequest.js | 2 +- src/utils/response/internalServerError.js | 2 +- src/utils/response/notFound.js | 2 +- src/utils/response/ok.js | 2 +- src/utils/secrets/get.js | 2 +- 18 files changed, 90 insertions(+), 93 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab0b1bd5..ac21fbc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.9.1] - 2024-09-04 + +- chore: apply linter suggestions + ## [1.9.0] - 2024-08-19 - feat: enable event duplication for service migrations diff --git a/Dockerfile b/Dockerfile index b23a9940..ff322d50 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /web/app COPY . . # Install dependencies -RUN bun install +RUN bun install --frozen-lockfile --production # Load desired node image FROM node:22-alpine diff --git a/biome.json b/biome.json index ec22e05c..614f25ed 100644 --- a/biome.json +++ b/biome.json @@ -5,7 +5,8 @@ }, "formatter": { "indentStyle": "tab", - "formatWithErrors": true + "formatWithErrors": true, + "lineWidth": 120 }, "javascript": { "formatter": { diff --git a/bun.lockb b/bun.lockb index 2ca61188a7bdb115785ac6b516abfd8b94ffc9dd..ccbe28036a8c8f459bc32887c76174099c13e038 100755 GIT binary patch delta 49091 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 K(>_PNhW`Q4mih+( delta 48920 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 Z_qzB(OC0r_Iv!G*x;SPWaMW{9{SV0t8H@k` diff --git a/config/index.js b/config/index.js index 35a7229a..122dbf48 100644 --- a/config/index.js +++ b/config/index.js @@ -32,7 +32,7 @@ if (!process.env.SERVICE_NAME) exitWithError('SERVICE_NAME not found') // set static envs const stage = process.env.STAGE.toLowerCase() const protocol = stage === 'dev' ? 'http' : 'https' -const hostname = stage === 'dev' ? 'localhost' : `eventhub-ingest.ard.de` +const hostname = stage === 'dev' ? 'localhost' : 'eventhub-ingest.ard.de' const port = process.env.PORT || 8080 const serviceName = process.env.SERVICE_NAME diff --git a/package.json b/package.json index 28afe494..3c22ed1d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ard-eventhub", - "version": "1.9.0", + "version": "1.9.1", "description": "ARD system to distribute real-time (live) metadata for primarily radio broadcasts.", "main": "./src/ingest/index.js", "engines": { @@ -28,15 +28,15 @@ "license": "EUPL-1.2", "dependencies": { "@google-cloud/datastore": "^9.1.0", - "@google-cloud/pubsub": "^4.5.0", + "@google-cloud/pubsub": "^4.7.0", "@google-cloud/secret-manager": "^5.6.0", "@swrlab/utils": "^2.0.1-beta", "compression": "^1.7.4", - "dd-trace": "^5.21.0", + "dd-trace": "^5.22.0", "express": "^4.19.2", - "express-openapi-validator": "^5.3.1", - "firebase-admin": "^12.3.1", - "google-auth-library": "^9.13.0", + "express-openapi-validator": "^5.3.4", + "firebase-admin": "^12.4.0", + "google-auth-library": "^9.14.1", "jsonwebtoken": "^9.0.2", "luxon": "^3.5.0", "slug": "^9.1.0", diff --git a/src/ingest/auth/login/post.js b/src/ingest/auth/login/post.js index 537c6ebb..d826494c 100644 --- a/src/ingest/auth/login/post.js +++ b/src/ingest/auth/login/post.js @@ -22,7 +22,7 @@ module.exports = async (req, res) => { // send email + password for verification, receive login and user object try { login = await firebase.signInWithEmailAndPassword(req.body.email, req.body.password) - } catch (error) { + } catch (_error) { return response.badRequest(req, res, { status: 500 }) } diff --git a/src/ingest/auth/middleware/verify.js b/src/ingest/auth/middleware/verify.js index 28b05ffd..6b6d20f4 100644 --- a/src/ingest/auth/middleware/verify.js +++ b/src/ingest/auth/middleware/verify.js @@ -29,7 +29,6 @@ module.exports = async (req, res, next) => { }) return res.sendStatus(401) } - // extract token ;[authorization] = authorization.match(regexp) @@ -43,6 +42,7 @@ module.exports = async (req, res, next) => { level: 'notice', message: 'user token invalid', source, + error, data: { ...req.headers, authorization: 'hidden' }, }) return res.status(403).json(ERROR_JSON) diff --git a/src/ingest/auth/refresh/post.js b/src/ingest/auth/refresh/post.js index eade97dc..4a1b7a52 100644 --- a/src/ingest/auth/refresh/post.js +++ b/src/ingest/auth/refresh/post.js @@ -22,7 +22,7 @@ module.exports = async (req, res) => { // swap previously received refresh token for new id token try { login = await firebase.refreshToken(req.body.refreshToken) - } catch (error) { + } catch (_error) { return response.badRequest(req, res, { status: 500 }) } diff --git a/src/ingest/ingest.test.js b/src/ingest/ingest.test.js index 2c4c23c5..5af3be7d 100644 --- a/src/ingest/ingest.test.js +++ b/src/ingest/ingest.test.js @@ -8,6 +8,7 @@ */ // Require dependencies +const { describe, it, before } = require('mocha') const chai = require('chai') const chaiHttp = require('chai-http') const { DateTime } = require('luxon') @@ -17,7 +18,7 @@ const logger = require('../utils/logger') // Init chai functions const { expect } = chai -const should = chai.should() +chai.should() // Use chaiHttp chai.use(chaiHttp) @@ -81,10 +82,11 @@ describe(`POST ${loginPath}`, () => { password: testUserPass, } - chai.request(server) + chai + .request(server) .post(loginPath) .send(loginRequest) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 200) testAuthKeys(res.body) done() @@ -103,10 +105,11 @@ describe(`POST ${refreshPath}`, () => { refreshToken: refreshToken, } - chai.request(server) + chai + .request(server) .post(refreshPath) .send(refreshRequest) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 200) testAuthKeys(res.body) done() @@ -127,10 +130,11 @@ if (testUserReset === true) { email: testUser, } - chai.request(server) + chai + .request(server) .post(resetPath) .send(resetRequest) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 200) done() }) @@ -185,32 +189,35 @@ const event = { describe(`POST ${eventPath}`, () => { it('test invalid auth for POST /event', (done) => { - chai.request(server) + chai + .request(server) .post(eventPath) .send(event) - .end((err, res) => { + .end((_err, res) => { testMissingAuth(res) done() }) }) it('test invalid auth for POST /event', (done) => { - chai.request(server) + chai + .request(server) .post(eventPath) .set('Authorization', `Bearer invalid${accessToken}`) .send(event) - .end((err, res) => { + .end((_err, res) => { testFailedAuth(res) done() }) }) it('publish a new event', (done) => { - chai.request(server) + chai + .request(server) .post(eventPath) .set('Authorization', `Bearer ${accessToken}`) .send(event) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 201) testEventKeys(res.body) done() @@ -219,11 +226,12 @@ describe(`POST ${eventPath}`, () => { it('publish a new event with expired time', (done) => { event.start = DateTime.now().minus({ minutes: 3 }).toISO() - chai.request(server) + chai + .request(server) .post(eventPath) .set('Authorization', `Bearer ${accessToken}`) .send(event) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 400) done() }) @@ -231,11 +239,12 @@ describe(`POST ${eventPath}`, () => { it('publish a new event with invalid time', (done) => { event.start = `${DateTime.now().toISO()}00` - chai.request(server) + chai + .request(server) .post(eventPath) .set('Authorization', `Bearer ${accessToken}`) .send(event) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 400) done() }) @@ -243,11 +252,12 @@ describe(`POST ${eventPath}`, () => { it('publish a new event with invalid externalId in references', (done) => { event.references[1].externalId = null - chai.request(server) + chai + .request(server) .post(eventPath) .set('Authorization', `Bearer ${accessToken}`) .send(event) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 400) done() }) @@ -271,20 +281,22 @@ function testTopicKeys(body) { describe(`GET ${topicPath}`, () => { it(`test auth for GET ${topicPath}`, (done) => { - chai.request(server) + chai + .request(server) .get(topicPath) .set('Authorization', `Bearer invalid${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testFailedAuth(res) done() }) }) it('list all available topics', (done) => { - chai.request(server) + chai + .request(server) .get(topicPath) .set('Authorization', `Bearer ${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 200) res.body.should.be.a('array') res.body.every((i) => testTopicKeys(i)) @@ -333,22 +345,24 @@ describe(`POST ${subscriptPath}`, () => { }) it(`test auth for POST ${subscriptPath}`, (done) => { - chai.request(server) + chai + .request(server) .post(subscriptPath) .set('Authorization', `Bearer invalid${accessToken}`) .send(subscription) - .end((err, res) => { + .end((_err, res) => { testFailedAuth(res) done() }) }) it('add a new subscription to this user', (done) => { - chai.request(server) + chai + .request(server) .post(subscriptPath) .set('Authorization', `Bearer ${accessToken}`) .send(subscription) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 201) testSubscriptionKeys(res.body) // Store subscription name for further tests @@ -360,20 +374,22 @@ describe(`POST ${subscriptPath}`, () => { describe(`GET ${subscriptPath}`, () => { it(`test auth for GET ${subscriptPath}`, (done) => { - chai.request(server) + chai + .request(server) .get(subscriptPath) .set('Authorization', `Bearer invalid${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testFailedAuth(res) done() }) }) it('list all subscriptions for this user', (done) => { - chai.request(server) + chai + .request(server) .get(subscriptPath) .set('Authorization', `Bearer ${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 200) res.body.should.be.a('array') res.body.every((i) => testSubscriptionKeys(i)) @@ -384,20 +400,22 @@ describe(`GET ${subscriptPath}`, () => { describe(`GET ${subscriptPath}/{name}`, () => { it(`test auth for GET ${subscriptPath}/{name}`, (done) => { - chai.request(server) + chai + .request(server) .get(`${subscriptPath}/${subscriptionName}`) .set('Authorization', `Bearer invalid${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testFailedAuth(res) done() }) }) it('get details about single subscription from this user', (done) => { - chai.request(server) + chai + .request(server) .get(`${subscriptPath}/${subscriptionName}`) .set('Authorization', `Bearer ${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 200) testSubscriptionKeys(res.body) done() @@ -407,20 +425,22 @@ describe(`GET ${subscriptPath}/{name}`, () => { describe(`DELETE ${subscriptPath}/{name}`, () => { it(`test auth for DELETE ${subscriptPath}/{name}`, (done) => { - chai.request(server) + chai + .request(server) .delete(`${subscriptPath}/${subscriptionName}`) .set('Authorization', `Bearer invalid${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testFailedAuth(res) done() }) }) it('remove a single subscription by this user', (done) => { - chai.request(server) + chai + .request(server) .delete(`${subscriptPath}/${subscriptionName}`) .set('Authorization', `Bearer ${accessToken}`) - .end((err, res) => { + .end((_err, res) => { testResponse(res, 200) res.body.should.be.a('object') res.body.should.have.property('valid').eql(true) diff --git a/src/ingest/router.js b/src/ingest/router.js index ff606314..0fff9e8f 100644 --- a/src/ingest/router.js +++ b/src/ingest/router.js @@ -1,10 +1,3 @@ -/* - - ard-eventhub - by SWR Audio Lab - -*/ - // import express.router const { isIncluded } = require('@swrlab/utils/packages/strings') const express = require('express') @@ -29,16 +22,11 @@ router.use( apiSpec: './openapi.yaml', validateRequests: true, validateResponses: false, - ignorePaths: (path) => - path.startsWith('/openapi') || - path === '/' || - path === '/health' || - path === '/pubsub', + ignorePaths: (path) => path.startsWith('/openapi') || path === '/' || path === '/health' || path === '/pubsub', formats: { 'iso8601-timestamp': { type: 'string', - validate: (value) => - isIncluded(value, 'T') && DateTime.fromISO(value).isValid, + validate: (value) => isIncluded(value, 'T') && DateTime.fromISO(value).isValid, }, }, }) @@ -49,9 +37,7 @@ const response = require('../utils/response') // register swagger endpoints router.get('/openapi/openapi.json', (_req, res) => res.json(swaggerDocument)) -router.get('/openapi/openapi.yaml', (_req, res) => - res.sendFile('openapi.yaml', { root: '.' }) -) +router.get('/openapi/openapi.yaml', (_req, res) => res.sendFile('openapi.yaml', { root: '.' })) router.use('/openapi', swaggerUi.serve, swaggerUi.setup({}, swaggerConfig)) // load auth middleware @@ -69,16 +55,8 @@ router.post('/pubsub/', require('./pubsub/verify'), require('./pubsub')) router.get('/subscriptions/', authVerify, require('./subscriptions/list')) router.post('/subscriptions/', authVerify, require('./subscriptions/post')) -router.get( - '/subscriptions/:subscriptionName', - authVerify, - require('./subscriptions/get') -) -router.delete( - '/subscriptions/:subscriptionName', - authVerify, - require('./subscriptions/delete') -) +router.get('/subscriptions/:subscriptionName', authVerify, require('./subscriptions/get')) +router.delete('/subscriptions/:subscriptionName', authVerify, require('./subscriptions/delete')) router.get('/topics/', authVerify, require('./topics/list')) router.get('/topics/:topicName', authVerify, require('./topics/list')) @@ -89,18 +67,14 @@ router.get(['/', '/health'], (_req, res) => { }) // set which error message to return (other may contain private information) -const allowedErrors = [ - 'Authorization header required', - 'GET method not allowed', -] +const allowedErrors = ['Authorization header required', 'GET method not allowed'] // set openapi error handler router.use((err, req, res, _next) => { // set error message let useOriginalError = false if (allowedErrors.includes(err.message)) useOriginalError = true - if (err.message.includes('must have required property') !== -1) - useOriginalError = true + if (err.message.includes('must have required property') !== -1) useOriginalError = true return response.badRequest(req, res, { message: useOriginalError ? err.message : 'Bad request', diff --git a/src/ingest/subscriptions/get.js b/src/ingest/subscriptions/get.js index b818ac8e..fb3d7f0f 100644 --- a/src/ingest/subscriptions/get.js +++ b/src/ingest/subscriptions/get.js @@ -22,7 +22,7 @@ module.exports = async (req, res) => { try { subscription = await pubsub.getSubscription(subscriptionName) subscription = subscription.limited - } catch (error) { + } catch (_error) { return response.notFound(req, res, { status: 404, message: `Subscription '${subscriptionName}' not found`, diff --git a/src/ingest/subscriptions/list.js b/src/ingest/subscriptions/list.js index 0dbd56de..b4af5279 100644 --- a/src/ingest/subscriptions/list.js +++ b/src/ingest/subscriptions/list.js @@ -18,9 +18,7 @@ module.exports = async (req, res) => { let subscriptions = await pubsub.getSubscriptions() // verify if user is allowed to list subscriptions (same institution) - subscriptions = subscriptions.filter( - (subscription) => subscription?.institutionId === req.user.institutionId - ) + subscriptions = subscriptions.filter((subscription) => subscription?.institutionId === req.user.institutionId) // return data return res.status(200).json(subscriptions) diff --git a/src/utils/response/badRequest.js b/src/utils/response/badRequest.js index fe98a38c..49afeb91 100644 --- a/src/utils/response/badRequest.js +++ b/src/utils/response/badRequest.js @@ -13,7 +13,7 @@ module.exports = (req, res, err) => { errors: err.errors, trace: req.headers['x-cloud-trace-context'] || null, }) - } catch (error) { + } catch (_error) { return res.sendStatus(500) } } diff --git a/src/utils/response/internalServerError.js b/src/utils/response/internalServerError.js index 26b48801..b99adcf2 100644 --- a/src/utils/response/internalServerError.js +++ b/src/utils/response/internalServerError.js @@ -11,7 +11,7 @@ module.exports = (req, res) => { message: 'Internal Server Error', trace: req.headers['x-cloud-trace-context'] || null, }) - } catch (error) { + } catch (_error) { return res.sendStatus(500) } } diff --git a/src/utils/response/notFound.js b/src/utils/response/notFound.js index 2cd42091..729739b8 100644 --- a/src/utils/response/notFound.js +++ b/src/utils/response/notFound.js @@ -13,7 +13,7 @@ module.exports = (req, res, err) => { errors: err.errors, trace: req.headers['x-cloud-trace-context'] || null, }) - } catch (error) { + } catch (_error) { return res.sendStatus(500) } } diff --git a/src/utils/response/ok.js b/src/utils/response/ok.js index 144beccb..9e7a476c 100644 --- a/src/utils/response/ok.js +++ b/src/utils/response/ok.js @@ -11,7 +11,7 @@ module.exports = (req, res, data, status) => { ...data, trace: req.headers['x-cloud-trace-context'] || null, }) - } catch (error) { + } catch (_error) { return res.sendStatus(500) } } diff --git a/src/utils/secrets/get.js b/src/utils/secrets/get.js index dccfa690..2cf91d7b 100644 --- a/src/utils/secrets/get.js +++ b/src/utils/secrets/get.js @@ -20,7 +20,7 @@ module.exports = async (name) => { let json = null try { json = JSON.parse(payload) - } catch (error) { + } catch (_error) { // do nothing } From e41996e9d41a1420c956e3a016987f1e67e052e9 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 4 Sep 2024 10:35:40 +0200 Subject: [PATCH 2/6] refact: rename config files --- .editorconfig | 2 +- config/{coreIdPrefixes.json => core-id-prefixes.json} | 0 config/{dtsKeys.js => dts-keys.js} | 0 config/index.js | 2 +- config/{swaggerUI.js => swagger-ui.js} | 0 src/ingest/router.js | 2 +- src/utils/plugins/dts/event.js | 8 +++----- 7 files changed, 6 insertions(+), 8 deletions(-) rename config/{coreIdPrefixes.json => core-id-prefixes.json} (100%) rename config/{dtsKeys.js => dts-keys.js} (100%) rename config/{swaggerUI.js => swagger-ui.js} (100%) diff --git a/.editorconfig b/.editorconfig index 81f76721..a376964a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,7 +9,7 @@ charset = utf-8 end_of_line = lf indent_style = tab indent_size = 8 -print_width = 111 +print_width = 120 trim_trailing_whitespace = true insert_final_newline = true diff --git a/config/coreIdPrefixes.json b/config/core-id-prefixes.json similarity index 100% rename from config/coreIdPrefixes.json rename to config/core-id-prefixes.json diff --git a/config/dtsKeys.js b/config/dts-keys.js similarity index 100% rename from config/dtsKeys.js rename to config/dts-keys.js diff --git a/config/index.js b/config/index.js index 122dbf48..d642f4bc 100644 --- a/config/index.js +++ b/config/index.js @@ -7,7 +7,7 @@ // import version from package.json const { version } = require('../package.json') -const coreIdPrefixes = require('./coreIdPrefixes.json') +const coreIdPrefixes = require('./core-id-prefixes.json') // load winston logger const logger = require('../src/utils/logger') diff --git a/config/swaggerUI.js b/config/swagger-ui.js similarity index 100% rename from config/swaggerUI.js rename to config/swagger-ui.js diff --git a/src/ingest/router.js b/src/ingest/router.js index 0fff9e8f..90439496 100644 --- a/src/ingest/router.js +++ b/src/ingest/router.js @@ -7,7 +7,7 @@ const OpenApiValidator = require('express-openapi-validator') // load swagger UI const swaggerUi = require('swagger-ui-express') const swaggerDocument = require('../../openapi.json') -const swaggerConfig = require('../../config/swaggerUI') +const swaggerConfig = require('../../config/swagger-ui') // set up router const router = express.Router() diff --git a/src/utils/plugins/dts/event.js b/src/utils/plugins/dts/event.js index 0a3825e5..3f7890c3 100644 --- a/src/utils/plugins/dts/event.js +++ b/src/utils/plugins/dts/event.js @@ -13,7 +13,7 @@ const logger = require('../../logger') const undici = require('../../undici') // load keys -const { credentials, endpoints, permittedExcludedFields } = require('../../../../config/dtsKeys') +const { credentials, endpoints, permittedExcludedFields } = require('../../../../config/dts-keys') // load config const config = require('../../../../config') @@ -88,8 +88,7 @@ module.exports = async (job) => { webURL: plugin?.webUrl || null, enableShare: !!plugin?.webUrl, - enableThumbs: - plugin?.enableThumbs === true || plugin?.enableThumbs === false ? plugin.enableThumbs : true, + enableThumbs: plugin?.enableThumbs === true || plugin?.enableThumbs === false ? plugin.enableThumbs : true, year: null, fccId: null, imageURL: null, @@ -99,8 +98,7 @@ module.exports = async (job) => { const mediaType = plugin?.preferArtistMedia ? 'artist' : 'cover' const media = event.media?.find((thisMedia) => thisMedia.type === mediaType) if (media) { - liveRadioEvent.imageURL = - media.url || media.templateUrl.replace('{width}', 512).replace('{height}', 512) + liveRadioEvent.imageURL = media.url || media.templateUrl.replace('{width}', 512).replace('{height}', 512) } // handle exclusions From f1b2e49840b8de9dbc456d4f064afa40937ac6e9 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 4 Sep 2024 11:58:29 +0200 Subject: [PATCH 3/6] feat: add more event duplication IDs --- CHANGELOG.md | 1 + config/event-duplication.json | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac21fbc5..8f193262 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.9.1] - 2024-09-04 - chore: apply linter suggestions +- feat: add more event duplication IDs ## [1.9.0] - 2024-08-19 diff --git a/config/event-duplication.json b/config/event-duplication.json index f73eeebf..04951677 100644 --- a/config/event-duplication.json +++ b/config/event-duplication.json @@ -7,5 +7,27 @@ "crid://wdr.de/Sendung-3c5b688d-5f31-4bb1-91f0-41d72a2e7cd3": "crid://wdr.de/Beitrag-7a56249f-4f7e-4ff4-aaf0-27d7cf50ba13", "crid://wdr.de/Sendung-165961": "crid://wdr.de/Beitrag-99ed97df-550b-48a4-a544-dcaf03e59c44", "crid://wdr.de/Sendung-165960": "crid://wdr.de/Beitrag-5552666a-b5e0-48b2-a500-47a58ad2d457", - "crid://wdr.de/Sendung-165959": "crid://wdr.de/Beitrag-78a782d9-d557-4c01-a2f9-99866279190e" + "crid://wdr.de/Sendung-165959": "crid://wdr.de/Beitrag-78a782d9-d557-4c01-a2f9-99866279190e", + + "crid://mdr.de/stream/28428-0": "crid://mdr.de/livestream/cms/5ad33a1f-f08e-4c6f-98cf-186df47a12cf/Beitrag", + "crid://mdr.de/stream/28429-0": "crid://mdr.de/livestream/cms/a8e7fd2a-b198-422f-9629-336cf27f13fa/Beitrag", + "crid://mdr.de/stream/28430-0": "crid://mdr.de/livestream/cms/112f1e08-13ce-4e85-8b60-a17929402ae9/Beitrag", + "crid://mdr.de/stream/28434-0": "crid://mdr.de/livestream/cms/MDR Aktuell Radio/Beitrag", + "crid://mdr.de/stream/28431-0": "crid://mdr.de/livestream/cms/MDR Kultur Radio/Beitrag", + "crid://mdr.de/stream/28431-1-0": "crid://mdr.de/livestream/cms/84876c76-d6f4-4b25-bdec-d22e98fb94c4/Beitrag", + "crid://mdr.de/stream/28435-0": "crid://mdr.de/livestream/cms/MDR Klassik/Beitrag", + "crid://mdr.de/stream/28432-0": "crid://mdr.de/livestream/cms/Jump/Beitrag", + "crid://mdr.de/stream/28432-1-0": "crid://mdr.de/livestream/cms/b643d081-4f41-4f90-ada3-7864bcacaf24/Beitrag", + "crid://mdr.de/stream/28432-3-0": "crid://mdr.de/livestream/cms/d760608f-9eb4-4cf3-a405-e8cccb355776/Beitrag", + "crid://mdr.de/stream/28432-2-0": "crid://mdr.de/livestream/cms/5dd1d0cd-2ac6-46f8-b90d-3f5a8f2ca5e5/Beitrag", + "crid://mdr.de/stream/28433-0": "crid://mdr.de/livestream/cms/Sputnik/Beitrag", + "crid://mdr.de/stream/28433-2-0": "crid://mdr.de/livestream/cms/b8121905-6f73-4b83-a06a-b0e5fda562ad/Beitrag", + "crid://mdr.de/stream/28433-7-0": "crid://mdr.de/livestream/cms/f04c8fa2-3e15-4760-988b-5381ceb5f2ab/Beitrag", + "crid://mdr.de/stream/28433-1-0": "crid://mdr.de/livestream/cms/1cd38023-bc46-488c-b6e1-3a947796617b/Beitrag", + "crid://mdr.de/stream/28433-4-0": "crid://mdr.de/livestream/cms/964d26d4-c392-4295-94a8-acec49c0a4d7/Beitrag", + "crid://mdr.de/stream/28433-5-0": "crid://mdr.de/livestream/cms/a2c4d57d-2f48-42f0-ad2e-8a309283e3d9/Beitrag", + "crid://mdr.de/stream/28433-3-0": "crid://mdr.de/livestream/cms/0217ea7c-b6c6-402e-bbe2-cc83358c0c21/Beitrag", + "crid://mdr.de/stream/28433-6-0": "crid://mdr.de/livestream/cms/87710c90-ac51-4231-93c6-7206c9c5c50b/Beitrag", + "crid://mdr.de/stream/10402-0": "crid://mdr.de/livestream/cms/MDR Tweens/Beitrag", + "crid://mdr.de/stream/10401-0": "crid://mdr.de/livestream/cms/9507b3b3-5b04-4540-97c9-758c40ed98c0/Beitrag" } From de53083a4a81b9f4166ba9f5ef2b1dd1a3a4a5cd Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 4 Sep 2024 12:12:17 +0200 Subject: [PATCH 4/6] chore: update linter and test in ci --- .github/workflows/ingest-pull.yml | 6 +++--- .github/workflows/ingest-push.yml | 6 +++--- .github/workflows/linter.yml | 20 -------------------- package.json | 2 +- 4 files changed, 7 insertions(+), 27 deletions(-) delete mode 100644 .github/workflows/linter.yml diff --git a/.github/workflows/ingest-pull.yml b/.github/workflows/ingest-pull.yml index 7930f39d..57d4148c 100644 --- a/.github/workflows/ingest-pull.yml +++ b/.github/workflows/ingest-pull.yml @@ -32,7 +32,7 @@ jobs: node-version: ${{ env.NODE_VERSION }} - name: 🛠 Setup Bun - uses: oven-sh/setup-bun@v1 + uses: oven-sh/setup-bun@v2 with: bun-version: latest @@ -46,7 +46,7 @@ jobs: create_credentials_file: true - name: 📚 Lint Code - run: bun ingest:lint + run: bun lint - name: 🧪 Run Ingest Tests env: @@ -74,7 +74,7 @@ jobs: node-version: ${{ env.NODE_VERSION }} - name: 🛠 Setup Bun - uses: oven-sh/setup-bun@v1 + uses: oven-sh/setup-bun@v2 with: bun-version: latest diff --git a/.github/workflows/ingest-push.yml b/.github/workflows/ingest-push.yml index d8c185b2..701e0ded 100644 --- a/.github/workflows/ingest-push.yml +++ b/.github/workflows/ingest-push.yml @@ -35,7 +35,7 @@ jobs: node-version: ${{ env.NODE_VERSION }} - name: 🛠 Setup Bun - uses: oven-sh/setup-bun@v1 + uses: oven-sh/setup-bun@v2 with: bun-version: latest @@ -49,7 +49,7 @@ jobs: create_credentials_file: true - name: 📚 Lint Code - run: bun ingest:lint + run: bun lint - name: 🧪 Run Ingest Tests env: @@ -62,7 +62,7 @@ jobs: STAGE: dev TEST_USER: ${{ secrets.TEST_USER }} TEST_USER_PW: ${{ secrets.TEST_USER_PW }} - run: bun ingest:test + run: npm run ingest:test docker: runs-on: ubuntu-latest diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml deleted file mode 100644 index 93a7ce9c..00000000 --- a/.github/workflows/linter.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Linter - -on: - workflow_dispatch: - pull_request: - branches-ignore: - - dependabot/** - -permissions: - contents: read - statuses: write - -jobs: - lint: - uses: swrlab/node-utils/.github/workflows/linter.yml@main - with: - install-all: false - log-level: 'NOTICE' - validate-all-codebase: false - javascript-es-config-file: /.eslintrc.json diff --git a/package.json b/package.json index 3c22ed1d..8cc3f8c5 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "ingest:cloud": "node ./src/ingest/index.js", "ingest:test:local": "node --env-file .env ./node_modules/mocha/bin/mocha --recursive './src/**/*.test.js' --timeout 15000 --exit", "ingest:test": "mocha --recursive './src/**/*.test.js' --timeout 15000 --exit", - "ingest:lint": "biome lint src", + "lint": "biome lint", "docker:build": "docker build . -t swr/ard-eventhub", "docker:run": "docker run --env-file .env -p 8080:8080 --name ard-eventhub swr/ard-eventhub", "docker:scan": "bun docker:build && docker scout quickview", From 8372cbfbd1ff941b311abac18c5e2b57b88136b1 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 4 Sep 2024 12:16:58 +0200 Subject: [PATCH 5/6] fix: temporarily pin node 22.8 to avoid ERR_BUFFER_OUT_OF_BOUNDS error https://github.com/nodejs/node/issues/54518#issuecomment-2307687124 --- .github/workflows/ingest-push.yml | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ingest-push.yml b/.github/workflows/ingest-push.yml index 701e0ded..6bfcd64e 100644 --- a/.github/workflows/ingest-push.yml +++ b/.github/workflows/ingest-push.yml @@ -9,7 +9,7 @@ on: types: [closed] env: - NODE_VERSION: 22 + NODE_VERSION: 22.8 IMAGE_NAME: ard-eventhub-europe-west3/ingest REGISTRY_DOMAIN: europe-west3-docker.pkg.dev diff --git a/Dockerfile b/Dockerfile index ff322d50..15a36ee9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ COPY . . RUN bun install --frozen-lockfile --production # Load desired node image -FROM node:22-alpine +FROM node:22.8-alpine # Create app directory WORKDIR /web/app From fdb2e0e431098e003942be320ff3030fc96da8d7 Mon Sep 17 00:00:00 2001 From: Daniel Freytag Date: Wed, 4 Sep 2024 12:31:21 +0200 Subject: [PATCH 6/6] fix: swap style-guide repo --- bun.lockb | Bin 336080 -> 337048 bytes package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index ccbe28036a8c8f459bc32887c76174099c13e038..8121344718ef1493187ae38e91c97cecc06d681d 100755 GIT binary patch delta 71505 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%0Dk9|9L6-&r8XFUP}J+ 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 G^_?4PubGC_{` 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 Wr@ml`L%f~Ui6L46wJ4YKtN#Z#+>yip diff --git a/package.json b/package.json index 8cc3f8c5..03e50874 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.8.3", - "@swrlab/style-guide": "swrlab/style-guide", + "@swrlab/style-guide": "^1.0.1", "chai": "^4.5.0", "chai-http": "^4.4.0", "docsify-cli": "^4.4.4",