@raclettejs/core 0.1.0 → 0.1.1
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/CHANGELOG.md +23 -0
- package/README.md +4 -2
- package/package.json +1 -1
- package/services/backend/package.json +1 -3
- package/services/frontend/src/orchestrator/components/chip/UserChip.vue +1 -1
- package/services/frontend/src/orchestrator/components/menu/UserNotifications.vue +4 -2
- package/services/frontend/src/orchestrator/setup/i18n.ts +251 -157
- package/dist/cli.js.map +0 -7
- package/dist/index.js.map +0 -7
- package/services/.DS_Store +0 -0
- package/services/backend/.DS_Store +0 -0
- package/services/backend/.env +0 -5
- package/services/backend/.vscode/launch.json +0 -18
- package/services/backend/dist/src/app.d.ts +0 -9
- package/services/backend/dist/src/app.js +0 -164
- package/services/backend/dist/src/core/backgroundTasks/taskManager.d.ts +0 -12
- package/services/backend/dist/src/core/backgroundTasks/taskManager.js +0 -135
- package/services/backend/dist/src/core/backgroundTasks/taskManagerTypes.d.ts +0 -19
- package/services/backend/dist/src/core/backgroundTasks/taskManagerTypes.js +0 -2
- package/services/backend/dist/src/core/backgroundTasks/toadSchedulerTypes.d.ts +0 -7
- package/services/backend/dist/src/core/backgroundTasks/toadSchedulerTypes.js +0 -1
- package/services/backend/dist/src/core/config/configService.d.ts +0 -38
- package/services/backend/dist/src/core/config/configService.js +0 -98
- package/services/backend/dist/src/core/config/configTypes.d.ts +0 -33
- package/services/backend/dist/src/core/config/configTypes.js +0 -5
- package/services/backend/dist/src/core/contracting/contractRegistrar.d.ts +0 -13
- package/services/backend/dist/src/core/contracting/contractRegistrar.js +0 -83
- package/services/backend/dist/src/core/contracting/contractTypes.d.ts +0 -18
- package/services/backend/dist/src/core/contracting/contractTypes.js +0 -1
- package/services/backend/dist/src/core/crud/crudRegistrar.d.ts +0 -6
- package/services/backend/dist/src/core/crud/crudRegistrar.js +0 -16
- package/services/backend/dist/src/core/crud/crudTypes.d.ts +0 -8
- package/services/backend/dist/src/core/crud/crudTypes.js +0 -1
- package/services/backend/dist/src/core/eventBus/eventBusEventMap.d.ts +0 -65
- package/services/backend/dist/src/core/eventBus/eventBusEventMap.js +0 -64
- package/services/backend/dist/src/core/eventBus/index.d.ts +0 -3
- package/services/backend/dist/src/core/eventBus/index.js +0 -7
- package/services/backend/dist/src/core/events/eventEmitter.d.ts +0 -13
- package/services/backend/dist/src/core/events/eventEmitter.js +0 -120
- package/services/backend/dist/src/core/http/headers.d.ts +0 -3
- package/services/backend/dist/src/core/http/headers.js +0 -22
- package/services/backend/dist/src/core/http/httpService.d.ts +0 -4
- package/services/backend/dist/src/core/http/httpService.js +0 -28
- package/services/backend/dist/src/core/http/httpTypes.d.ts +0 -15
- package/services/backend/dist/src/core/http/httpTypes.js +0 -1
- package/services/backend/dist/src/core/http/request-params.plugin.d.ts +0 -2
- package/services/backend/dist/src/core/http/request-params.plugin.js +0 -34
- package/services/backend/dist/src/core/payload/payloadRegistrar.d.ts +0 -45
- package/services/backend/dist/src/core/payload/payloadRegistrar.js +0 -121
- package/services/backend/dist/src/core/payload/payloadTypes.d.ts +0 -42
- package/services/backend/dist/src/core/payload/payloadTypes.js +0 -1
- package/services/backend/dist/src/core/pluginSystem/configGenerator/generatorTypes.d.ts +0 -49
- package/services/backend/dist/src/core/pluginSystem/configGenerator/generatorTypes.js +0 -1
- package/services/backend/dist/src/core/pluginSystem/configGenerator/index.d.ts +0 -14
- package/services/backend/dist/src/core/pluginSystem/configGenerator/index.js +0 -342
- package/services/backend/dist/src/core/pluginSystem/pluginFastifyInstance.d.ts +0 -3
- package/services/backend/dist/src/core/pluginSystem/pluginFastifyInstance.js +0 -161
- package/services/backend/dist/src/core/pluginSystem/pluginLoader.d.ts +0 -5
- package/services/backend/dist/src/core/pluginSystem/pluginLoader.js +0 -317
- package/services/backend/dist/src/core/pluginSystem/pluginTypes.d.ts +0 -51
- package/services/backend/dist/src/core/pluginSystem/pluginTypes.js +0 -6
- package/services/backend/dist/src/core/sockets/createSystemEventHandlers.d.ts +0 -20
- package/services/backend/dist/src/core/sockets/createSystemEventHandlers.js +0 -74
- package/services/backend/dist/src/core/sockets/index.d.ts +0 -2
- package/services/backend/dist/src/core/sockets/index.js +0 -65
- package/services/backend/dist/src/core/sockets/socketManager.d.ts +0 -3
- package/services/backend/dist/src/core/sockets/socketManager.js +0 -125
- package/services/backend/dist/src/core/sockets/socketTypes.d.ts +0 -32
- package/services/backend/dist/src/core/sockets/socketTypes.js +0 -1
- package/services/backend/dist/src/core/validation/schemaGenerator.d.ts +0 -6
- package/services/backend/dist/src/core/validation/schemaGenerator.js +0 -242
- package/services/backend/dist/src/core/validation/schemaTypes.d.ts +0 -15
- package/services/backend/dist/src/core/validation/schemaTypes.js +0 -1
- package/services/backend/dist/src/core/validation/sharedSchemas.d.ts +0 -8
- package/services/backend/dist/src/core/validation/sharedSchemas.js +0 -7
- package/services/backend/dist/src/corePlugins/raclette__core/client/generated-config.d.ts +0 -304
- package/services/backend/dist/src/corePlugins/raclette__core/client/generated-config.js +0 -359
- package/services/backend/dist/src/corePlugins/raclette__core/client/index.d.ts +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/client/index.js +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/account.model.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/account.model.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/account.schema.d.ts +0 -36
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/account.schema.js +0 -29
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/account.service.d.ts +0 -74
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/account.service.js +0 -242
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/events/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/events/index.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/helpers/crud.d.ts +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/helpers/crud.js +0 -9
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/helpers/payload.d.ts +0 -4
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/helpers/payload.js +0 -13
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/index.d.ts +0 -16
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/index.js +0 -48
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/index.js +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.get.d.ts +0 -24
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.get.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.getAll.d.ts +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.getAll.js +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.hardDelete.d.ts +0 -26
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.hardDelete.js +0 -32
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.patch.d.ts +0 -39
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.patch.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.post.d.ts +0 -30
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.post.js +0 -27
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.remove.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/account/routes/route.account.remove.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/composition.model.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/composition.model.js +0 -92
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/composition.schema.d.ts +0 -128
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/composition.schema.js +0 -97
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/composition.service.d.ts +0 -63
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/composition.service.js +0 -212
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/events/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/events/index.js +0 -22
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/helpers/crud.d.ts +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/helpers/crud.js +0 -10
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/helpers/payload.d.ts +0 -4
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/helpers/payload.js +0 -11
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/index.d.ts +0 -46
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/index.js +0 -51
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/index.js +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.get.d.ts +0 -24
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.get.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.getAll.d.ts +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.getAll.js +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.hardDelete.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.hardDelete.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.patch.d.ts +0 -49
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.patch.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.post.d.ts +0 -40
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.post.js +0 -27
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.remove.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/composition/routes/route.composition.remove.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/events/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/events/index.js +0 -22
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/helpers/crud.d.ts +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/helpers/crud.js +0 -9
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/helpers/payload.d.ts +0 -4
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/helpers/payload.js +0 -11
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/index.d.ts +0 -16
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/index.js +0 -48
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/interactionLink.model.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/interactionLink.model.js +0 -61
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/interactionLink.schema.d.ts +0 -86
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/interactionLink.schema.js +0 -74
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/interactionLink.service.d.ts +0 -79
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/interactionLink.service.js +0 -272
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/index.js +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.get.d.ts +0 -24
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.get.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.getAll.d.ts +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.getAll.js +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.hardDelete.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.hardDelete.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.patch.d.ts +0 -39
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.patch.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.post.d.ts +0 -30
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.post.js +0 -27
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.remove.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/interactionLink/routes/route.interactionLink.remove.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/events/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/events/index.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/helpers/crud.d.ts +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/helpers/crud.js +0 -9
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/helpers/payload.d.ts +0 -4
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/helpers/payload.js +0 -13
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/index.d.ts +0 -17
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/index.js +0 -49
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/project.model.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/project.model.js +0 -30
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/project.schema.d.ts +0 -61
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/project.schema.js +0 -65
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/project.service.d.ts +0 -68
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/project.service.js +0 -230
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/index.js +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.get.d.ts +0 -24
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.get.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.getAll.d.ts +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.getAll.js +0 -28
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.hardDelete.d.ts +0 -26
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.hardDelete.js +0 -32
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.patch.d.ts +0 -38
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.patch.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.post.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.post.js +0 -27
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.remove.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/project/routes/route.project.remove.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/events/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/events/index.js +0 -39
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/helpers/crud.d.ts +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/helpers/crud.js +0 -9
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/helpers/payload.d.ts +0 -4
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/helpers/payload.js +0 -13
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/index.d.ts +0 -17
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/index.js +0 -49
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/index.js +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.get.d.ts +0 -24
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.get.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.getAll.d.ts +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.getAll.js +0 -28
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.hardDelete.d.ts +0 -26
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.hardDelete.js +0 -32
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.patch.d.ts +0 -39
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.patch.js +0 -34
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.post.d.ts +0 -40
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.post.js +0 -35
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.remove.d.ts +0 -26
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/routes/route.tag.remove.js +0 -32
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/tag.model.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/tag.model.js +0 -74
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/tag.schema.d.ts +0 -68
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/tag.schema.js +0 -71
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/tag.service.d.ts +0 -65
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/tag/tag.service.js +0 -232
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/events/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/events/index.js +0 -31
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/helpers/crud.d.ts +0 -2
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/helpers/crud.js +0 -9
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/helpers/payload.d.ts +0 -4
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/helpers/payload.js +0 -11
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/index.d.ts +0 -17
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/index.js +0 -51
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/index.js +0 -15
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.get.d.ts +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.get.js +0 -33
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.getAll.d.ts +0 -25
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.getAll.js +0 -35
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.patch.d.ts +0 -43
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.patch.js +0 -37
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.patchLastProject.d.ts +0 -23
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.patchLastProject.js +0 -29
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.post.d.ts +0 -34
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.post.js +0 -28
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.remove.d.ts +0 -26
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/routes/route.user.remove.js +0 -35
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/user.model.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/user.model.js +0 -145
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/user.schema.d.ts +0 -120
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/user.schema.js +0 -109
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/user.service.d.ts +0 -69
- package/services/backend/dist/src/corePlugins/raclette__core/server/datatypes/user/user.service.js +0 -225
- package/services/backend/dist/src/corePlugins/raclette__core/server/index.d.ts +0 -3
- package/services/backend/dist/src/corePlugins/raclette__core/server/index.js +0 -32
- package/services/backend/dist/src/domains/index.d.ts +0 -3
- package/services/backend/dist/src/domains/index.js +0 -8
- package/services/backend/dist/src/domains/system/index.d.ts +0 -3
- package/services/backend/dist/src/domains/system/index.js +0 -5
- package/services/backend/dist/src/domains/system/routes/index.d.ts +0 -3
- package/services/backend/dist/src/domains/system/routes/index.js +0 -13
- package/services/backend/dist/src/domains/system/routes/route.admin.redis.d.ts +0 -47
- package/services/backend/dist/src/domains/system/routes/route.admin.redis.js +0 -81
- package/services/backend/dist/src/domains/system/routes/route.deploy.d.ts +0 -14
- package/services/backend/dist/src/domains/system/routes/route.deploy.js +0 -20
- package/services/backend/dist/src/domains/system/routes/route.user.checkToken.d.ts +0 -12
- package/services/backend/dist/src/domains/system/routes/route.user.checkToken.js +0 -40
- package/services/backend/dist/src/domains/system/routes/route.user.login.d.ts +0 -44
- package/services/backend/dist/src/domains/system/routes/route.user.login.js +0 -163
- package/services/backend/dist/src/helpers/index.d.ts +0 -11
- package/services/backend/dist/src/helpers/index.js +0 -13
- package/services/backend/dist/src/index.d.ts +0 -3
- package/services/backend/dist/src/index.js +0 -3
- package/services/backend/dist/src/modules/authentication/index.d.ts +0 -4
- package/services/backend/dist/src/modules/authentication/index.js +0 -80
- package/services/backend/dist/src/modules/cache/cacheManager.d.ts +0 -6
- package/services/backend/dist/src/modules/cache/cacheManager.js +0 -131
- package/services/backend/dist/src/modules/cache/cacheTypes.d.ts +0 -102
- package/services/backend/dist/src/modules/cache/cacheTypes.js +0 -1
- package/services/backend/dist/src/modules/cache/providers/redis/redisConfig.d.ts +0 -11
- package/services/backend/dist/src/modules/cache/providers/redis/redisConfig.js +0 -17
- package/services/backend/dist/src/modules/cache/providers/redis/redisConnection.d.ts +0 -4
- package/services/backend/dist/src/modules/cache/providers/redis/redisConnection.js +0 -65
- package/services/backend/dist/src/modules/cache/providers/redis/redisTypes.d.ts +0 -18
- package/services/backend/dist/src/modules/cache/providers/redis/redisTypes.js +0 -1
- package/services/backend/dist/src/modules/database/providers/mongodb/mongoConnection.d.ts +0 -4
- package/services/backend/dist/src/modules/database/providers/mongodb/mongoConnection.js +0 -21
- package/services/backend/dist/src/modules/database/providers/mongodb/service.d.ts +0 -7
- package/services/backend/dist/src/modules/database/providers/mongodb/service.js +0 -1
- package/services/backend/dist/src/server.d.ts +0 -1
- package/services/backend/dist/src/server.js +0 -98
- package/services/backend/dist/src/shared/helper/mongoHelper.d.ts +0 -3
- package/services/backend/dist/src/shared/helper/mongoHelper.js +0 -59
- package/services/backend/dist/src/shared/helper/pluginHelper.d.ts +0 -19
- package/services/backend/dist/src/shared/helper/pluginHelper.js +0 -33
- package/services/backend/dist/src/shared/schemas/core/Account.schema.d.ts +0 -63
- package/services/backend/dist/src/shared/schemas/core/Account.schema.js +0 -74
- package/services/backend/dist/src/shared/schemas/core/Composition.schema.d.ts +0 -103
- package/services/backend/dist/src/shared/schemas/core/Composition.schema.js +0 -132
- package/services/backend/dist/src/shared/schemas/core/CompositionCreate.schema.d.ts +0 -82
- package/services/backend/dist/src/shared/schemas/core/CompositionCreate.schema.js +0 -105
- package/services/backend/dist/src/shared/schemas/core/CompositionUpdate.schema.d.ts +0 -78
- package/services/backend/dist/src/shared/schemas/core/CompositionUpdate.schema.js +0 -95
- package/services/backend/dist/src/shared/schemas/core/InteractionLink.schema.d.ts +0 -84
- package/services/backend/dist/src/shared/schemas/core/InteractionLink.schema.js +0 -97
- package/services/backend/dist/src/shared/schemas/core/InteractionLinkCreate.schema.d.ts +0 -63
- package/services/backend/dist/src/shared/schemas/core/InteractionLinkCreate.schema.js +0 -70
- package/services/backend/dist/src/shared/schemas/core/InteractionLinkUpdate.schema.d.ts +0 -63
- package/services/backend/dist/src/shared/schemas/core/InteractionLinkUpdate.schema.js +0 -70
- package/services/backend/dist/src/shared/schemas/core/Project.schema.d.ts +0 -53
- package/services/backend/dist/src/shared/schemas/core/Project.schema.js +0 -58
- package/services/backend/dist/src/shared/schemas/core/ProjectCreate.schema.d.ts +0 -41
- package/services/backend/dist/src/shared/schemas/core/ProjectCreate.schema.js +0 -41
- package/services/backend/dist/src/shared/schemas/core/ProjectUpdate.schema.d.ts +0 -38
- package/services/backend/dist/src/shared/schemas/core/ProjectUpdate.schema.js +0 -38
- package/services/backend/dist/src/shared/schemas/core/Tag.schema.d.ts +0 -68
- package/services/backend/dist/src/shared/schemas/core/Tag.schema.js +0 -81
- package/services/backend/dist/src/shared/schemas/core/TagCreate.schema.d.ts +0 -52
- package/services/backend/dist/src/shared/schemas/core/TagCreate.schema.js +0 -60
- package/services/backend/dist/src/shared/schemas/core/TagUpdate.schema.d.ts +0 -47
- package/services/backend/dist/src/shared/schemas/core/TagUpdate.schema.js +0 -55
- package/services/backend/dist/src/shared/schemas/core/Trigger.schema.d.ts +0 -25
- package/services/backend/dist/src/shared/schemas/core/Trigger.schema.js +0 -27
- package/services/backend/dist/src/shared/schemas/core/User.schema.d.ts +0 -161
- package/services/backend/dist/src/shared/schemas/core/User.schema.js +0 -185
- package/services/backend/dist/src/shared/schemas/core/UserCreate.schema.d.ts +0 -59
- package/services/backend/dist/src/shared/schemas/core/UserCreate.schema.js +0 -67
- package/services/backend/dist/src/shared/schemas/core/UserUpdate.schema.d.ts +0 -52
- package/services/backend/dist/src/shared/schemas/core/UserUpdate.schema.js +0 -52
- package/services/backend/dist/src/shared/schemas/core/Widget.schema.d.ts +0 -25
- package/services/backend/dist/src/shared/schemas/core/Widget.schema.js +0 -29
- package/services/backend/dist/src/shared/schemas/core/WidgetLayout.schema.d.ts +0 -34
- package/services/backend/dist/src/shared/schemas/core/WidgetLayout.schema.js +0 -41
- package/services/backend/dist/src/shared/types/core/Account.types.d.ts +0 -19
- package/services/backend/dist/src/shared/types/core/Account.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/Composition.types.d.ts +0 -31
- package/services/backend/dist/src/shared/types/core/Composition.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/CompositionCreate.types.d.ts +0 -25
- package/services/backend/dist/src/shared/types/core/CompositionCreate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/CompositionUpdate.types.d.ts +0 -25
- package/services/backend/dist/src/shared/types/core/CompositionUpdate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/InteractionLink.types.d.ts +0 -25
- package/services/backend/dist/src/shared/types/core/InteractionLink.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/InteractionLinkCreate.types.d.ts +0 -19
- package/services/backend/dist/src/shared/types/core/InteractionLinkCreate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/InteractionLinkUpdate.types.d.ts +0 -19
- package/services/backend/dist/src/shared/types/core/InteractionLinkUpdate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/Project.types.d.ts +0 -18
- package/services/backend/dist/src/shared/types/core/Project.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/ProjectCreate.types.d.ts +0 -15
- package/services/backend/dist/src/shared/types/core/ProjectCreate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/ProjectUpdate.types.d.ts +0 -15
- package/services/backend/dist/src/shared/types/core/ProjectUpdate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/Tag.types.d.ts +0 -21
- package/services/backend/dist/src/shared/types/core/Tag.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/TagCreate.types.d.ts +0 -17
- package/services/backend/dist/src/shared/types/core/TagCreate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/TagUpdate.types.d.ts +0 -17
- package/services/backend/dist/src/shared/types/core/TagUpdate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/Trigger.types.d.ts +0 -11
- package/services/backend/dist/src/shared/types/core/Trigger.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/User.types.d.ts +0 -50
- package/services/backend/dist/src/shared/types/core/User.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/UserCreate.types.d.ts +0 -22
- package/services/backend/dist/src/shared/types/core/UserCreate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/UserUpdate.types.d.ts +0 -21
- package/services/backend/dist/src/shared/types/core/UserUpdate.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/Widget.types.d.ts +0 -14
- package/services/backend/dist/src/shared/types/core/Widget.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/WidgetLayout.types.d.ts +0 -17
- package/services/backend/dist/src/shared/types/core/WidgetLayout.types.js +0 -8
- package/services/backend/dist/src/shared/types/core/index.d.ts +0 -26
- package/services/backend/dist/src/shared/types/core/index.js +0 -8
- package/services/backend/dist/src/shared/types/dataTypes/index.d.ts +0 -5
- package/services/backend/dist/src/shared/types/dataTypes/index.js +0 -6
- package/services/backend/dist/src/shared/types/dataTypes/tags.d.ts +0 -12
- package/services/backend/dist/src/shared/types/dataTypes/tags.js +0 -17
- package/services/backend/dist/src/shared/types/global/api.d.ts +0 -10
- package/services/backend/dist/src/shared/types/global/api.js +0 -1
- package/services/backend/dist/src/shared/types/global/search.d.ts +0 -7
- package/services/backend/dist/src/shared/types/global/search.js +0 -13
- package/services/backend/dist/src/shared/types/index.d.ts +0 -9
- package/services/backend/dist/src/shared/types/index.js +0 -8
- package/services/backend/dist/src/shared/types/plugins/index.d.ts +0 -8
- package/services/backend/dist/src/shared/types/plugins/index.js +0 -8
- package/services/backend/dist/src/types/index.d.ts +0 -12
- package/services/backend/dist/src/types/index.js +0 -12
- package/services/backend/dist/src/utils/errors.d.ts +0 -16
- package/services/backend/dist/src/utils/errors.js +0 -28
- package/services/backend/dist/src/utils/index.d.ts +0 -2
- package/services/backend/dist/src/utils/index.js +0 -2
- package/services/backend/dist/src/utils/request.utils.d.ts +0 -8
- package/services/backend/dist/src/utils/request.utils.js +0 -12
- package/services/backend/dist/types/index.d.ts +0 -3
- package/services/backend/dist/types/index.js +0 -2
- package/services/backend/src/.DS_Store +0 -0
- package/services/backend/src/core/.DS_Store +0 -0
- package/services/backend/src/core/pluginSystem/.DS_Store +0 -0
- package/services/backend/src/domains/.DS_Store +0 -0
- package/services/backend/src/domains/system/.DS_Store +0 -0
- package/services/backend/src/ssh-keys/krake +0 -8
- package/services/backend/src/ssh-keys/krake.pub +0 -1
- package/services/frontend/.DS_Store +0 -0
- package/services/frontend/src/.DS_Store +0 -0
- package/services/frontend/src/core/.DS_Store +0 -0
- package/services/frontend/src/core/lib/.DS_Store +0 -0
- package/services/frontend/src/orchestrator/.DS_Store +0 -0
- package/services/frontend/src/orchestrator/assets/fonts/.DS_Store +0 -0
- package/services/frontend/src/orchestrator/assets/styles/.DS_Store +0 -0
- package/services/frontend/src/orchestrator/components/.DS_Store +0 -0
- package/services/frontend/src/orchestrator/components/utils/.DS_Store +0 -0
- package/services/frontend/src/orchestrator/composables/.DS_Store +0 -0
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
import { PluginType } from "../../types/index.js";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import { createPluginFastifyInstance } from "./pluginFastifyInstance.js";
|
|
5
|
-
import configService from "../config/configService.js";
|
|
6
|
-
import { slugify } from "../../shared/helper/pluginHelper.js";
|
|
7
|
-
import { fileURLToPath } from "url";
|
|
8
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
-
const __dirname = path.dirname(path.join(__filename, ".."));
|
|
10
|
-
const MAX_SCAN_DEPTH = 3;
|
|
11
|
-
// Error handling flags
|
|
12
|
-
const PLUGIN_ERROR_FLAGS = {
|
|
13
|
-
CORE: 1,
|
|
14
|
-
NPM: 2,
|
|
15
|
-
APP: 4,
|
|
16
|
-
};
|
|
17
|
-
const DEFAULT_ERROR_FLAGS = PLUGIN_ERROR_FLAGS.CORE | PLUGIN_ERROR_FLAGS.APP; // 5
|
|
18
|
-
/**
|
|
19
|
-
* Register plugins in three phases: core, npm, then app plugins
|
|
20
|
-
*/
|
|
21
|
-
export const registerPlugins = async (fastify, errorFlags = DEFAULT_ERROR_FLAGS) => {
|
|
22
|
-
// Constants
|
|
23
|
-
const CORE_PLUGIN_PATHS = [path.join(__dirname, "..", "corePlugins")];
|
|
24
|
-
const APP_PLUGIN_PATHS = [
|
|
25
|
-
path.join(__dirname, "..", "raclette-plugins"),
|
|
26
|
-
...configService.getAdditonalPluginPaths(),
|
|
27
|
-
];
|
|
28
|
-
const allPlugins = [];
|
|
29
|
-
// Phase 1: Core plugins (always required, crash on error (default, PLUGIN_ERROR_FLAGS))
|
|
30
|
-
await collectCorePlugins(fastify, CORE_PLUGIN_PATHS, allPlugins, errorFlags);
|
|
31
|
-
// Phase 2: NPM plugins (standalone, continue on error unless flag set)
|
|
32
|
-
await collectNpmPlugins(fastify, allPlugins, errorFlags);
|
|
33
|
-
// Phase 3: App/User plugins (might depend on core/npm, crash on error (default, PLUGIN_ERROR_FLAGS))
|
|
34
|
-
await collectAppPlugins(fastify, APP_PLUGIN_PATHS, allPlugins, errorFlags);
|
|
35
|
-
// Register all collected plugins
|
|
36
|
-
await registerCollectedPlugins(fastify, allPlugins, errorFlags);
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Collect core plugins from hardcoded paths
|
|
40
|
-
*/
|
|
41
|
-
const collectCorePlugins = async (fastify, paths, plugins, errorFlags) => {
|
|
42
|
-
fastify.log.info("Collecting core plugins...");
|
|
43
|
-
for (const pluginPath of paths) {
|
|
44
|
-
await collectLocalPluginsFromPath(fastify, plugins, pluginPath, PluginType.CORE, errorFlags);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Collect app/user plugins from hardcoded paths
|
|
49
|
-
*/
|
|
50
|
-
const collectAppPlugins = async (fastify, paths, plugins, errorFlags) => {
|
|
51
|
-
fastify.log.info("Collecting app plugins...");
|
|
52
|
-
for (const pluginPath of paths) {
|
|
53
|
-
await collectLocalPluginsFromPath(fastify, plugins, pluginPath, PluginType.APP, errorFlags);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Collect local plugins from a specific path
|
|
58
|
-
*/
|
|
59
|
-
const collectLocalPluginsFromPath = async (fastify, plugins, basePath, pluginType, errorFlags) => {
|
|
60
|
-
if (!fs.existsSync(basePath)) {
|
|
61
|
-
fastify.log.debug(`Plugin path does not exist: ${basePath}`);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const pluginConfigs = await findPluginConfigs(basePath, 0);
|
|
65
|
-
fastify.log.debug(`Found ${pluginConfigs.length} ${pluginType} plugin config(s) in ${basePath}`);
|
|
66
|
-
for (const configPath of pluginConfigs) {
|
|
67
|
-
try {
|
|
68
|
-
const pluginPath = path.dirname(configPath);
|
|
69
|
-
const metadata = await loadPluginMetadata(configPath);
|
|
70
|
-
if (!validatePluginMetadata(metadata)) {
|
|
71
|
-
const error = `Invalid plugin metadata in ${configPath}: Missing required fields`;
|
|
72
|
-
handlePluginError(fastify, error, pluginType, errorFlags);
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
// Get server path from metadata or use default
|
|
76
|
-
const serverRelativePath = metadata.serverDir || "server";
|
|
77
|
-
const serverPath = path.join(pluginPath, serverRelativePath);
|
|
78
|
-
if (!fs.existsSync(serverPath) ||
|
|
79
|
-
!fs.statSync(serverPath).isDirectory() ||
|
|
80
|
-
!findPluginModule(serverPath)) {
|
|
81
|
-
if (metadata.serverDir) {
|
|
82
|
-
const error = `Server directory not found for plugin: ${configPath}`;
|
|
83
|
-
// we only cancel when the dir was explicitly set
|
|
84
|
-
handlePluginError(fastify, error, pluginType, errorFlags);
|
|
85
|
-
}
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
// Find the main module file
|
|
89
|
-
const modulePath = findPluginModule(serverPath);
|
|
90
|
-
if (!modulePath) {
|
|
91
|
-
const error = `No plugin index file found in ${serverPath}`;
|
|
92
|
-
handlePluginError(fastify, error, pluginType, errorFlags);
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
const author = slugify(metadata.author);
|
|
96
|
-
const pluginName = slugify(metadata.name);
|
|
97
|
-
plugins.push({
|
|
98
|
-
author,
|
|
99
|
-
pluginName,
|
|
100
|
-
modulePath,
|
|
101
|
-
pluginPath,
|
|
102
|
-
type: pluginType,
|
|
103
|
-
metadata,
|
|
104
|
-
});
|
|
105
|
-
fastify.log.debug(`Located ${pluginType} plugin: ${author}/${pluginName}`);
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
const errorString = `Error processing ${pluginType} plugin ${configPath}: ${error.message}`;
|
|
109
|
-
handlePluginError(fastify, errorString, pluginType, errorFlags);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
/**
|
|
114
|
-
* Collect npm-installable plugins
|
|
115
|
-
*/
|
|
116
|
-
const collectNpmPlugins = async (fastify, plugins, errorFlags) => {
|
|
117
|
-
const installedPlugins = configService.getPlugins();
|
|
118
|
-
if (!installedPlugins.length) {
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
fastify.log.info(`Collecting ${installedPlugins.length} npm plugin(s)...`);
|
|
122
|
-
for (const pluginPackage of installedPlugins) {
|
|
123
|
-
try {
|
|
124
|
-
// Extract the plugin name without scope
|
|
125
|
-
const pluginNameWithoutScope = pluginPackage.replace(/^@[^/]+\//, "");
|
|
126
|
-
// Try to find the plugin in several locations (keep fallback logic)
|
|
127
|
-
const possibleLocations = [
|
|
128
|
-
// Regular node_modules location
|
|
129
|
-
path.resolve(process.cwd(), "node_modules", pluginPackage),
|
|
130
|
-
// Development convention (mounted directory)
|
|
131
|
-
path.resolve("/app", pluginNameWithoutScope),
|
|
132
|
-
];
|
|
133
|
-
let pluginPath = null;
|
|
134
|
-
let pluginMetadata = null;
|
|
135
|
-
// Find the plugin path and load its metadata
|
|
136
|
-
for (const location of possibleLocations) {
|
|
137
|
-
try {
|
|
138
|
-
fastify.log.debug(`Checking for npm plugin at: ${location}`);
|
|
139
|
-
// Check if this path exists and is a directory
|
|
140
|
-
if (fs.existsSync(location) && fs.statSync(location).isDirectory()) {
|
|
141
|
-
// Try to import the plugin config
|
|
142
|
-
const pluginConfigPath = path.join(location, "raclette.plugin.js");
|
|
143
|
-
if (fs.existsSync(pluginConfigPath)) {
|
|
144
|
-
pluginMetadata = await loadPluginMetadata(pluginConfigPath);
|
|
145
|
-
if (validatePluginMetadata(pluginMetadata)) {
|
|
146
|
-
pluginPath = location;
|
|
147
|
-
fastify.log.debug(`Found valid npm plugin at ${location}`);
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
fastify.log.debug(`Invalid plugin metadata at ${location}: Missing required fields`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
fastify.log.debug(`Plugin config not found at ${pluginConfigPath}`);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
catch (error) {
|
|
160
|
-
fastify.log.debug(`Error checking npm plugin location ${location}: ${error.message}`);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
if (!pluginPath || !pluginMetadata) {
|
|
164
|
-
const error = `Could not find valid npm plugin ${pluginPackage}`;
|
|
165
|
-
handlePluginError(fastify, error, PluginType.NPM, errorFlags);
|
|
166
|
-
continue;
|
|
167
|
-
}
|
|
168
|
-
// Get server path from metadata or use default
|
|
169
|
-
const serverRelativePath = pluginMetadata.serverDir || "src/server";
|
|
170
|
-
const serverPath = path.join(pluginPath, serverRelativePath);
|
|
171
|
-
if (!fs.existsSync(serverPath) ||
|
|
172
|
-
!fs.statSync(serverPath).isDirectory()) {
|
|
173
|
-
const error = `Server directory not found for npm plugin: ${pluginPackage}`;
|
|
174
|
-
handlePluginError(fastify, error, PluginType.NPM, errorFlags);
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
// Find the main module file
|
|
178
|
-
const modulePath = findPluginModule(serverPath);
|
|
179
|
-
if (!modulePath) {
|
|
180
|
-
const error = `No plugin module found in ${serverPath}`;
|
|
181
|
-
handlePluginError(fastify, error, PluginType.NPM, errorFlags);
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
const author = slugify(pluginMetadata.author);
|
|
185
|
-
const pluginName = slugify(pluginMetadata.name);
|
|
186
|
-
plugins.push({
|
|
187
|
-
author,
|
|
188
|
-
pluginName,
|
|
189
|
-
modulePath,
|
|
190
|
-
pluginPath,
|
|
191
|
-
type: PluginType.NPM,
|
|
192
|
-
metadata: pluginMetadata,
|
|
193
|
-
});
|
|
194
|
-
fastify.log.debug(`Located npm plugin: ${author}/${pluginName}`);
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
const errorString = `Error processing npm plugin ${pluginPackage}: ${error.message}`;
|
|
198
|
-
handlePluginError(fastify, errorString, PluginType.NPM, errorFlags);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
/**
|
|
203
|
-
* Recursively find raclette.plugin.js files
|
|
204
|
-
*/
|
|
205
|
-
const findPluginConfigs = async (dir, currentDepth) => {
|
|
206
|
-
const configs = [];
|
|
207
|
-
if (currentDepth >= MAX_SCAN_DEPTH) {
|
|
208
|
-
return configs;
|
|
209
|
-
}
|
|
210
|
-
try {
|
|
211
|
-
const items = fs.readdirSync(dir);
|
|
212
|
-
// First check if current directory has a plugin config
|
|
213
|
-
const configPath = path.join(dir, "raclette.plugin.js");
|
|
214
|
-
if (fs.existsSync(configPath)) {
|
|
215
|
-
configs.push(configPath);
|
|
216
|
-
return configs; // If we found a config here, don't scan subdirectories
|
|
217
|
-
}
|
|
218
|
-
// If no config found, scan subdirectories
|
|
219
|
-
for (const item of items) {
|
|
220
|
-
const itemPath = path.join(dir, item);
|
|
221
|
-
if (fs.statSync(itemPath).isDirectory()) {
|
|
222
|
-
const subConfigs = await findPluginConfigs(itemPath, currentDepth + 1);
|
|
223
|
-
configs.push(...subConfigs);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
catch (error) {
|
|
228
|
-
// Ignore permission errors and continue
|
|
229
|
-
}
|
|
230
|
-
return configs;
|
|
231
|
-
};
|
|
232
|
-
/**
|
|
233
|
-
* Load and validate plugin metadata from raclette.plugin.js
|
|
234
|
-
*/
|
|
235
|
-
const loadPluginMetadata = async (configPath) => {
|
|
236
|
-
const importedConfig = await import(/* @vite-ignore */ `file://${configPath}`);
|
|
237
|
-
return importedConfig.default || importedConfig;
|
|
238
|
-
};
|
|
239
|
-
/**
|
|
240
|
-
* Validate that plugin metadata has required fields
|
|
241
|
-
*/
|
|
242
|
-
const validatePluginMetadata = (metadata) => {
|
|
243
|
-
return (metadata &&
|
|
244
|
-
typeof metadata.name === "string" &&
|
|
245
|
-
typeof metadata.author === "string");
|
|
246
|
-
};
|
|
247
|
-
/**
|
|
248
|
-
* Handle plugin errors based on error flags
|
|
249
|
-
*/
|
|
250
|
-
const handlePluginError = (fastify, error, pluginType, errorFlags) => {
|
|
251
|
-
const shouldCrash = (errorFlags &
|
|
252
|
-
PLUGIN_ERROR_FLAGS[pluginType.toUpperCase()]) !==
|
|
253
|
-
0;
|
|
254
|
-
if (shouldCrash) {
|
|
255
|
-
fastify.log.error(error);
|
|
256
|
-
throw new Error(error);
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
fastify.log.warn(error);
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
/**
|
|
263
|
-
* Register all collected plugins using a common registration process
|
|
264
|
-
*/
|
|
265
|
-
const registerCollectedPlugins = async (fastify, plugins, errorFlags) => {
|
|
266
|
-
if (plugins.length === 0) {
|
|
267
|
-
fastify.log.info("No plugins to register");
|
|
268
|
-
return;
|
|
269
|
-
}
|
|
270
|
-
fastify.log.info(`Registering ${plugins.length} plugin(s)`);
|
|
271
|
-
for (const plugin of plugins) {
|
|
272
|
-
const { author, pluginName, modulePath } = plugin;
|
|
273
|
-
const key = `${author}__${pluginName}`;
|
|
274
|
-
try {
|
|
275
|
-
// Construct the prefixed collection name and route prefix
|
|
276
|
-
const collectionPrefix = `${author}__${pluginName}-`;
|
|
277
|
-
const routePrefix = `/${author}__${pluginName}`;
|
|
278
|
-
const pluginOptions = {
|
|
279
|
-
key,
|
|
280
|
-
author,
|
|
281
|
-
pluginName,
|
|
282
|
-
type: plugin.type,
|
|
283
|
-
collectionPrefix,
|
|
284
|
-
routePrefix,
|
|
285
|
-
absolutePath: plugin.pluginPath,
|
|
286
|
-
};
|
|
287
|
-
// Dynamically import the plugin module
|
|
288
|
-
const pluginModule = await import(/* @vite-ignore */ modulePath);
|
|
289
|
-
const pluginFunction = pluginModule.default;
|
|
290
|
-
if (!pluginModule || !pluginFunction) {
|
|
291
|
-
const error = `No plugin bootstrapping function found in ${modulePath}`;
|
|
292
|
-
handlePluginError(fastify, error, plugin.type, errorFlags);
|
|
293
|
-
continue;
|
|
294
|
-
}
|
|
295
|
-
// Create a restricted fastify instance for the plugins to use
|
|
296
|
-
const customFastify = createPluginFastifyInstance(fastify, pluginOptions);
|
|
297
|
-
// Register the plugin, passing the restricted instance and options
|
|
298
|
-
await fastify.register(() => {
|
|
299
|
-
return pluginFunction(customFastify, pluginOptions);
|
|
300
|
-
});
|
|
301
|
-
fastify.log.info(`[PluginRegistration] ${key}: successfully registered`);
|
|
302
|
-
}
|
|
303
|
-
catch (error) {
|
|
304
|
-
const errorMsg = `[PluginRegistration] ${key}: Error during registration: ${error.message}`;
|
|
305
|
-
handlePluginError(fastify, errorMsg, plugin.type, errorFlags);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
};
|
|
309
|
-
/**
|
|
310
|
-
* Helper function to find the plugin module file
|
|
311
|
-
*/
|
|
312
|
-
const findPluginModule = (serverPath) => {
|
|
313
|
-
const extensions = ["ts", "js"];
|
|
314
|
-
return extensions
|
|
315
|
-
.map((ext) => path.join(serverPath, `index.${ext}`))
|
|
316
|
-
.find((fullPath) => fs.existsSync(fullPath));
|
|
317
|
-
};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type { FastifyInstance, preHandlerHookHandler } from "fastify";
|
|
2
|
-
import type { Server as SocketServer } from "socket.io";
|
|
3
|
-
import type { Schema, Model, Document } from "mongoose";
|
|
4
|
-
import type { Listener } from "../events/eventEmitter.js";
|
|
5
|
-
import type { PluginSchemaDefinition, HttpService, IntervalTaskOptions, CrudHandlers, ClientPayloadRequestData, ClientPayload, CacheService } from "../../types/index.js";
|
|
6
|
-
import type { EventEmitter } from "stream";
|
|
7
|
-
import type { PluginContract } from "../contracting/contractTypes.js";
|
|
8
|
-
export declare enum PluginType {
|
|
9
|
-
CORE = "core",
|
|
10
|
-
NPM = "npm",
|
|
11
|
-
APP = "app"
|
|
12
|
-
}
|
|
13
|
-
export type PluginOptions = {
|
|
14
|
-
key: string;
|
|
15
|
-
pluginName: string;
|
|
16
|
-
author: string;
|
|
17
|
-
absolutePath: string;
|
|
18
|
-
type: PluginType;
|
|
19
|
-
collectionPrefix: string;
|
|
20
|
-
routePrefix: string;
|
|
21
|
-
socketIO?: {
|
|
22
|
-
registerEvents?: (io: SocketServer, eventbus: any) => void;
|
|
23
|
-
createRooms?: (io: SocketServer) => void;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
export type PluginFastifyInstance = {
|
|
27
|
-
register: (routes: (instance: PluginFastifyInstance) => Promise<void> | void, opts?: PluginOptions) => FastifyInstance;
|
|
28
|
-
get: FastifyInstance["get"];
|
|
29
|
-
post: FastifyInstance["post"];
|
|
30
|
-
put: FastifyInstance["put"];
|
|
31
|
-
patch: FastifyInstance["patch"];
|
|
32
|
-
delete: FastifyInstance["delete"];
|
|
33
|
-
authenticate: preHandlerHookHandler;
|
|
34
|
-
log: ReturnType<FastifyInstance["log"]["child"]>;
|
|
35
|
-
createModel: <T extends Document>(modelName: string, schema: Schema) => Model<T>;
|
|
36
|
-
registerSchema: (schemaDefinition: PluginSchemaDefinition) => void;
|
|
37
|
-
registerCrudHandlers: <T>(name: string, handlers: CrudHandlers<T>) => void;
|
|
38
|
-
registerPayloadHandler: <T extends object>(name: string, registerData: any) => void;
|
|
39
|
-
createPayload: <T extends object>(name: string, item: T, requestData: ClientPayloadRequestData) => Promise<ClientPayload<T>>;
|
|
40
|
-
registerSocket: (eventName: string, handler: Listener) => void;
|
|
41
|
-
emit: (eventName: string, data: unknown) => void;
|
|
42
|
-
http: HttpService;
|
|
43
|
-
createIntervalTask: (name: string, handler: () => Promise<void>, options: IntervalTaskOptions) => void;
|
|
44
|
-
cancelTask: (name: string) => void;
|
|
45
|
-
cache: CacheService;
|
|
46
|
-
eventbus: EventEmitter;
|
|
47
|
-
registerPluginContract: (contractData: PluginContract) => void;
|
|
48
|
-
registerForFrontendGeneration: (options: any) => any;
|
|
49
|
-
fastify: FastifyInstance;
|
|
50
|
-
custom: Record<any, any>;
|
|
51
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Project, Tag, Composition, InteractionLink } from "../../shared/types/index.js";
|
|
2
|
-
import type { ClientPayload } from "../../types/index.js";
|
|
3
|
-
import type { FastifyInstance } from "fastify";
|
|
4
|
-
export declare const createSystemEventHandlers: (fastify: FastifyInstance) => {
|
|
5
|
-
broadcastDataUpdatedHandler: (payload: ClientPayload<unknown>) => void;
|
|
6
|
-
broadcastDataCreatedHandler: (payload: ClientPayload<unknown>) => void;
|
|
7
|
-
broadcastDataDeletedHandler: (payload: ClientPayload<unknown>) => void;
|
|
8
|
-
broadcastCompositionCreated: (payload: ClientPayload<Composition>) => void;
|
|
9
|
-
broadcastCompositionDeleted: (payload: ClientPayload<Composition>) => void;
|
|
10
|
-
broadcastInteractionLinkCreated: (payload: ClientPayload<InteractionLink>) => void;
|
|
11
|
-
broadcastInteractionLinkDeleted: (payload: ClientPayload<InteractionLink>) => void;
|
|
12
|
-
broadcastTagCreated: (payload: ClientPayload<Tag>) => void;
|
|
13
|
-
broadcastTagDeleted: (payload: ClientPayload<Tag>) => void;
|
|
14
|
-
broadcastUserCreated: (payload: ClientPayload<Tag>) => void;
|
|
15
|
-
broadcastUserDeleted: (payload: ClientPayload<Tag>) => void;
|
|
16
|
-
broadcastProjectCreated: (payload: ClientPayload<Project>) => void;
|
|
17
|
-
broadcastProjectUpdated: (payload: ClientPayload<Project>) => void;
|
|
18
|
-
broadcastProjectConfigUpdated: (payload: ClientPayload<Project>) => void;
|
|
19
|
-
broadcastNewVersionAvailable: () => void;
|
|
20
|
-
};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
export const createSystemEventHandlers = (fastify) => {
|
|
2
|
-
const { wss } = fastify;
|
|
3
|
-
const sendToChannel = (payload, key) => {
|
|
4
|
-
// TODO rework this to handle spaces instead of project and in the future document rooms -> y.js?
|
|
5
|
-
if (payload.project) {
|
|
6
|
-
wss.in(payload.project).emit(key, payload);
|
|
7
|
-
}
|
|
8
|
-
else {
|
|
9
|
-
wss.emit(key, payload);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
return {
|
|
13
|
-
broadcastDataUpdatedHandler: (payload) => {
|
|
14
|
-
fastify.log.info(`[Socket] Push onData: ${payload.appSessionId}`);
|
|
15
|
-
sendToChannel(payload, "data");
|
|
16
|
-
},
|
|
17
|
-
broadcastDataCreatedHandler: (payload) => {
|
|
18
|
-
fastify.log.info(`[Socket] Push onCreate: ${payload.appSessionId}`);
|
|
19
|
-
sendToChannel(payload, "dataCreated");
|
|
20
|
-
},
|
|
21
|
-
broadcastDataDeletedHandler: (payload) => {
|
|
22
|
-
fastify.log.info(`[Socket] Push onDelete: ${payload.appSessionId}`);
|
|
23
|
-
sendToChannel(payload, "dataDeleted");
|
|
24
|
-
},
|
|
25
|
-
broadcastCompositionCreated: (payload) => {
|
|
26
|
-
fastify.log.info(`[Socket] Push CompositionCreated: ${payload.appSessionId}`);
|
|
27
|
-
sendToChannel(payload, "compositionCreated");
|
|
28
|
-
},
|
|
29
|
-
broadcastCompositionDeleted: (payload) => {
|
|
30
|
-
fastify.log.info(`[Socket] Push CompositionDeleted: ${payload.appSessionId}`);
|
|
31
|
-
sendToChannel(payload, "compositionDeleted");
|
|
32
|
-
},
|
|
33
|
-
broadcastInteractionLinkCreated: (payload) => {
|
|
34
|
-
fastify.log.info(`[Socket] Push InteractionLinkCreated: ${payload.appSessionId}`);
|
|
35
|
-
sendToChannel(payload, "interactionLinkCreated");
|
|
36
|
-
},
|
|
37
|
-
broadcastInteractionLinkDeleted: (payload) => {
|
|
38
|
-
fastify.log.info(`[Socket] Push InteractionLinkDeleted: ${payload.appSessionId}`);
|
|
39
|
-
sendToChannel(payload, "interactionLinkDeleted");
|
|
40
|
-
},
|
|
41
|
-
broadcastTagCreated: (payload) => {
|
|
42
|
-
fastify.log.info(`[Socket] Push tagCreated: ${payload.appSessionId}`);
|
|
43
|
-
sendToChannel(payload, "tagCreated");
|
|
44
|
-
},
|
|
45
|
-
broadcastTagDeleted: (payload) => {
|
|
46
|
-
fastify.log.info(`[Socket] Push tagDeleted: ${payload.appSessionId}`);
|
|
47
|
-
sendToChannel(payload, "tagDeleted");
|
|
48
|
-
},
|
|
49
|
-
broadcastUserCreated: (payload) => {
|
|
50
|
-
fastify.log.info(`[Socket] Push userCreated: ${payload.appSessionId}`);
|
|
51
|
-
sendToChannel(payload, "userCreated");
|
|
52
|
-
},
|
|
53
|
-
broadcastUserDeleted: (payload) => {
|
|
54
|
-
fastify.log.info(`[Socket] Push userDeleted: ${payload.appSessionId}`);
|
|
55
|
-
sendToChannel(payload, "userDeleted");
|
|
56
|
-
},
|
|
57
|
-
broadcastProjectCreated: (payload) => {
|
|
58
|
-
fastify.log.info(`[Socket] Push projectCreated: ${payload.appSessionId}`);
|
|
59
|
-
sendToChannel(payload, "projectCreated");
|
|
60
|
-
},
|
|
61
|
-
broadcastProjectUpdated: (payload) => {
|
|
62
|
-
fastify.log.info(`[Socket] Push projectUpdated: ${payload.appSessionId}`);
|
|
63
|
-
sendToChannel(payload, "projectUpdated");
|
|
64
|
-
},
|
|
65
|
-
broadcastProjectConfigUpdated: (payload) => {
|
|
66
|
-
fastify.log.info(`[Socket] Push projectDeleted: ${payload.appSessionId}`);
|
|
67
|
-
sendToChannel(payload, "projectDeleted");
|
|
68
|
-
},
|
|
69
|
-
broadcastNewVersionAvailable: () => {
|
|
70
|
-
wss.emit("newVersionAvailable");
|
|
71
|
-
fastify.log.info("[Socket] push new version available #all");
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: (fastify: import("fastify").FastifyInstance<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault>, opts: Record<never, never>, done: (err?: Error) => void) => void;
|
|
2
|
-
export default _default;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import fastifyPlugin from "fastify-plugin";
|
|
2
|
-
import { Server } from "socket.io";
|
|
3
|
-
import configService from "../config/configService.js";
|
|
4
|
-
export default fastifyPlugin((fastify, opts, done) => {
|
|
5
|
-
// Get socket configuration using the wrfastifyer
|
|
6
|
-
const { options: socketOptions, security } = configService.getSocketConfig();
|
|
7
|
-
// Configure default options with overrides from config
|
|
8
|
-
const defaults = {
|
|
9
|
-
cors: { origin: /localhost/, credentials: true },
|
|
10
|
-
connectionTimeout: socketOptions?.connectionTimeout || 3000,
|
|
11
|
-
pingInterval: socketOptions?.pingInterval || 1500,
|
|
12
|
-
pingTimeout: socketOptions?.pingTimeout || 1000,
|
|
13
|
-
};
|
|
14
|
-
/*
|
|
15
|
-
* create and configure the websocket server
|
|
16
|
-
*/
|
|
17
|
-
const socketServer = new Server(fastify.server, { ...defaults, ...opts });
|
|
18
|
-
// Configure authentication based on security settings
|
|
19
|
-
if (configService.isAuthRequired() ?? true) {
|
|
20
|
-
// Default to JWT authentication
|
|
21
|
-
if (security?.tokenValidation === "jwt") {
|
|
22
|
-
if (!process.env.SERVER_TOKEN_SECRET) {
|
|
23
|
-
fastify.log.warn("SERVER_TOKEN_SECRET not set, socket authentication may fail");
|
|
24
|
-
}
|
|
25
|
-
// Instead of socketio-jwt, use this custom middleware
|
|
26
|
-
socketServer.use((socket, next) => {
|
|
27
|
-
try {
|
|
28
|
-
const token = socket.handshake.auth?.token ??
|
|
29
|
-
socket.handshake.headers.authorization?.split(" ")[1];
|
|
30
|
-
if (!token) {
|
|
31
|
-
fastify.log.warn(`Socket connection without token: ${socket.id}`);
|
|
32
|
-
return next(new Error("Authentication failed: No token provided"));
|
|
33
|
-
}
|
|
34
|
-
// Verify token using fastify-jwt
|
|
35
|
-
const decoded = fastify.jwt.verify(token);
|
|
36
|
-
// Log successful authentication
|
|
37
|
-
fastify.log.debug(`Socket authenticated: ${socket.id}`);
|
|
38
|
-
// Store decoded token on socket
|
|
39
|
-
socket.decoded_token = decoded;
|
|
40
|
-
next();
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
fastify.log.error(`Socket authentication error: ${error.message}`);
|
|
44
|
-
next(new Error("Authentication failed: Invalid token"));
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else if (security?.customValidator) {
|
|
49
|
-
// Custom validator would be implemented here
|
|
50
|
-
fastify.log.warn("Custom socket validator specified but not implemented - yet ;)");
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
fastify.log.warn("Socket authentication is disabled - this is not recommended for production");
|
|
55
|
-
}
|
|
56
|
-
// make the websocket server available in the whole fastify
|
|
57
|
-
fastify.decorate("wss", socketServer);
|
|
58
|
-
// close the websocket server when the http server is closing
|
|
59
|
-
fastify.addHook("onClose", (fastify, done) => {
|
|
60
|
-
fastify.log.warn("App is closing, socket connection is also closed");
|
|
61
|
-
fastify.wss.close();
|
|
62
|
-
done();
|
|
63
|
-
});
|
|
64
|
-
done();
|
|
65
|
-
});
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { createSystemEventHandlers } from "./createSystemEventHandlers.js";
|
|
2
|
-
import configService from "../config/configService.js";
|
|
3
|
-
import { callDataTypeOperation } from "../contracting/contractRegistrar.js";
|
|
4
|
-
const registerSocketEvents = (fastify) => {
|
|
5
|
-
const { wss } = fastify;
|
|
6
|
-
const eventbusHandler = createSystemEventHandlers(fastify);
|
|
7
|
-
const requiresAuth = configService.isAuthRequired();
|
|
8
|
-
wss.on("connection", (socket) => {
|
|
9
|
-
const isAuthenticated = requiresAuth
|
|
10
|
-
? socket.decoded_token !== undefined
|
|
11
|
-
: true;
|
|
12
|
-
fastify.log.warn(`[socket] connected ${socket.id}`);
|
|
13
|
-
socket.emit("socketEstablished", { id: socket.id });
|
|
14
|
-
if (!isAuthenticated && configService.isAuthRequired()) {
|
|
15
|
-
fastify.log.warn(`[socket] unauthenticated connection ${socket.id}`);
|
|
16
|
-
socket.emit("authenticationRequired", {
|
|
17
|
-
message: "Authentication required",
|
|
18
|
-
});
|
|
19
|
-
// Don't disconnect immediately to allow client to handle login flow
|
|
20
|
-
}
|
|
21
|
-
socket.on("join", async (payload) => {
|
|
22
|
-
// Check authentication if required
|
|
23
|
-
if (configService.isAuthRequired() && !isAuthenticated) {
|
|
24
|
-
socket.emit("authenticationFailed", {
|
|
25
|
-
message: "Authentication required to join room",
|
|
26
|
-
});
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const { token: _token, roomId: spaceId } = payload;
|
|
30
|
-
// Find project either by roomId or default
|
|
31
|
-
let project;
|
|
32
|
-
if (spaceId) {
|
|
33
|
-
try {
|
|
34
|
-
project = await callDataTypeOperation("raclette__core", "project", "read", fastify, spaceId);
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
socket.emit("error", {
|
|
38
|
-
error: { msg: "Space not found or access denied" },
|
|
39
|
-
});
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
try {
|
|
45
|
-
project = await callDataTypeOperation("raclette__core", "project", "readMain", fastify);
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
socket.emit("error", {
|
|
49
|
-
error: {
|
|
50
|
-
msg: "No suiting space found. Something seems wrongly configured!",
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
socket.join(project._id);
|
|
57
|
-
socket.data.project = project._id;
|
|
58
|
-
// Prepare response data with project always included
|
|
59
|
-
const responseData = { project };
|
|
60
|
-
// Add compositions based on config
|
|
61
|
-
if (configService.isAutoSendEnabled("compositions")) {
|
|
62
|
-
responseData.compositions = await callDataTypeOperation("raclette__core", "composition", "readAll", fastify);
|
|
63
|
-
}
|
|
64
|
-
// Add interaction links based on config
|
|
65
|
-
if (configService.isAutoSendEnabled("interactionLinks")) {
|
|
66
|
-
responseData.interactionLinks = await callDataTypeOperation("raclette__core", "interactionLink", "readAll", fastify);
|
|
67
|
-
}
|
|
68
|
-
// Add project config based on config
|
|
69
|
-
if (configService.isAutoSendEnabled("projectConfig")) {
|
|
70
|
-
try {
|
|
71
|
-
responseData.projectConfig = {};
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
fastify.log.error(`Error loading project config: ${error instanceof Error ? error.message : String(error)}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Add any custom static data from the config
|
|
78
|
-
const customData = configService.getCustomSocketData();
|
|
79
|
-
if (customData && typeof customData === "object") {
|
|
80
|
-
Object.entries(customData).forEach(([key, value]) => {
|
|
81
|
-
responseData[key] = value;
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
socket.emit("joinConfirmation", responseData);
|
|
85
|
-
fastify.log.info(`[Socket] socket ${socket.id} joined room ${project._id}`);
|
|
86
|
-
});
|
|
87
|
-
socket.on("disconnect", () => {
|
|
88
|
-
fastify.log.warn(`[Socket] disconnected ${socket.id}`);
|
|
89
|
-
});
|
|
90
|
-
socket.on("leave", (room) => {
|
|
91
|
-
socket.leave(room);
|
|
92
|
-
socket.emit("leaveConfirmation", room);
|
|
93
|
-
wss.in(room).emit("memberLeft", {
|
|
94
|
-
room,
|
|
95
|
-
msg: `member left ${socket.id}`,
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
wss.on("connection_error", (error) => {
|
|
100
|
-
fastify.log.error({ msg: "[Socket]", error });
|
|
101
|
-
});
|
|
102
|
-
// Register event handlers
|
|
103
|
-
const events = {
|
|
104
|
-
broadcastDataUpdated: eventbusHandler.broadcastDataUpdatedHandler,
|
|
105
|
-
broadcastDataCreated: eventbusHandler.broadcastDataCreatedHandler,
|
|
106
|
-
broadcastDataDeleted: eventbusHandler.broadcastDataDeletedHandler,
|
|
107
|
-
broadcastTagCreated: eventbusHandler.broadcastTagCreated,
|
|
108
|
-
broadcastTagDeleted: eventbusHandler.broadcastTagDeleted,
|
|
109
|
-
broadcastUserCreated: eventbusHandler.broadcastUserCreated,
|
|
110
|
-
broadcastUserDeleted: eventbusHandler.broadcastUserDeleted,
|
|
111
|
-
broadcastInteractionLinkCreated: eventbusHandler.broadcastInteractionLinkCreated,
|
|
112
|
-
broadcastInteractionLinkDeleted: eventbusHandler.broadcastInteractionLinkDeleted,
|
|
113
|
-
broadcastCompositionCreated: eventbusHandler.broadcastCompositionCreated,
|
|
114
|
-
broadcastCompositionDeleted: eventbusHandler.broadcastCompositionDeleted,
|
|
115
|
-
broadcastProjectCreated: eventbusHandler.broadcastProjectCreated,
|
|
116
|
-
broadcastProjectUpdated: eventbusHandler.broadcastProjectUpdated,
|
|
117
|
-
broadcastProjectConfigUpdated: eventbusHandler.broadcastProjectConfigUpdated,
|
|
118
|
-
broadcastNewVersionAvailable: eventbusHandler.broadcastNewVersionAvailable,
|
|
119
|
-
};
|
|
120
|
-
// Register standard event handlers
|
|
121
|
-
Object.entries(events).forEach(([event, handler]) => {
|
|
122
|
-
fastify.eventbus.on(event, handler);
|
|
123
|
-
});
|
|
124
|
-
};
|
|
125
|
-
export default registerSocketEvents;
|