@raclettejs/core 0.1.26 → 0.1.27
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 +6 -0
- package/package.json +4 -3
- package/templates/backend.Dockerfile +31 -0
- package/templates/build.yml +34 -0
- package/templates/compose.yml +0 -0
- package/templates/docker-compose.full.yml +0 -0
- package/templates/docker-compose.yml +161 -0
- package/templates/frontend.Dockerfile +49 -0
- package/templates/fs.yml +73 -0
- package/templates/raclette.config.js +0 -0
- package/templates/raclette.config.workbench.js +0 -0
- package/templates/raclette.config.workbench.yaml +61 -0
- package/templates/raclette.config.yaml +59 -0
- package/templates/shims.vue.d.ts +5 -0
- package/templates/tsconfig.json +0 -0
- package/templates/types.yaml +316 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.27] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.26...v0.1.27" target="_blank" rel="noopener"><b>Overview of all changes</b></a>
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Build: added missing publish folder `templates`
|
|
15
|
+
|
|
10
16
|
## [0.1.26] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.25...v0.1.26" target="_blank" rel="noopener"><b>Overview of all changes</b></a>
|
|
11
17
|
|
|
12
18
|
### Updated
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raclettejs/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.27",
|
|
4
4
|
"description": "racletteJS core package",
|
|
5
5
|
"repository": "https://gitlab.com/raclettejs/core",
|
|
6
6
|
"author": "Pacifico Digital Explorations GmbH <info@raclettejs.com>",
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
"src/types.ts",
|
|
38
38
|
"LICENSE.md",
|
|
39
39
|
"CONTRIBUTING.md",
|
|
40
|
-
"raclette.default.config.yaml"
|
|
40
|
+
"raclette.default.config.yaml",
|
|
41
|
+
"templates"
|
|
41
42
|
],
|
|
42
43
|
"exports": {
|
|
43
44
|
".": {
|
|
@@ -78,7 +79,7 @@
|
|
|
78
79
|
"@emnapi/core": "1.9.2",
|
|
79
80
|
"@emnapi/runtime": "1.9.2",
|
|
80
81
|
"@eslint/js": "9.35.0",
|
|
81
|
-
"@raclettejs/types": "^0.1.
|
|
82
|
+
"@raclettejs/types": "^0.1.27",
|
|
82
83
|
"@types/fs-extra": "11.0.4",
|
|
83
84
|
"@types/js-yaml": "4.0.9",
|
|
84
85
|
"@types/node": "25.5.0",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
FROM node:24.4-alpine3.21
|
|
2
|
+
WORKDIR /app
|
|
3
|
+
|
|
4
|
+
# add bash since alpine doesn't come with a shell
|
|
5
|
+
RUN apk update && apk add bash curl {{config.services.backend.installPackages}} {{.}} {{/config.services.backend.installPackages}}
|
|
6
|
+
|
|
7
|
+
COPY backend/package.json backend/yarn.lock ./
|
|
8
|
+
COPY backend/raclette.config.js ./
|
|
9
|
+
|
|
10
|
+
ARG NODE_ENV={{environment}}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# make sure our raclette packages are being resolved by adding a symlink to handle nodes module resolution
|
|
14
|
+
RUN mkdir -p /app/node_modules/@raclettejs/core
|
|
15
|
+
RUN ln -sf /app/src /app/node_modules/@raclettejs/core/backend
|
|
16
|
+
|
|
17
|
+
COPY ./dist/check-dependencies.sh /app/
|
|
18
|
+
RUN chmod +x /app/check-dependencies.sh
|
|
19
|
+
|
|
20
|
+
# copy everything else that is not ignored (see .dockerignore)
|
|
21
|
+
COPY ./virtual/backend ./
|
|
22
|
+
|
|
23
|
+
# set default values
|
|
24
|
+
ENV PORT 3000
|
|
25
|
+
|
|
26
|
+
# set port
|
|
27
|
+
EXPOSE 3000
|
|
28
|
+
EXPOSE 9229
|
|
29
|
+
|
|
30
|
+
# default command
|
|
31
|
+
CMD ["yarn", "run", "{{#environment}}build{{/environment}} {{^environment}}dev{{/environment}} "]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
entryPoints:
|
|
2
|
+
- ./src/cli.ts
|
|
3
|
+
- ./src/index.ts
|
|
4
|
+
bundle: true
|
|
5
|
+
platform: node
|
|
6
|
+
target: node20
|
|
7
|
+
outdir: ./dist
|
|
8
|
+
format: esm
|
|
9
|
+
banner:
|
|
10
|
+
js: "import { createRequire } from 'module'; const require = createRequire(import.meta.url);"
|
|
11
|
+
external:
|
|
12
|
+
# External packages that shouldn't be bundled
|
|
13
|
+
- fastify
|
|
14
|
+
- mongodb
|
|
15
|
+
- mongoose
|
|
16
|
+
- redis
|
|
17
|
+
- chokidar
|
|
18
|
+
- fs-extra
|
|
19
|
+
# Node.js built-ins
|
|
20
|
+
- fs
|
|
21
|
+
- path
|
|
22
|
+
- child_process
|
|
23
|
+
- os
|
|
24
|
+
- url
|
|
25
|
+
- util
|
|
26
|
+
- events
|
|
27
|
+
- stream
|
|
28
|
+
- crypto
|
|
29
|
+
# Add any native modules you're using
|
|
30
|
+
- fsevents
|
|
31
|
+
loader:
|
|
32
|
+
.node: file
|
|
33
|
+
sourcemap: true
|
|
34
|
+
minify: false
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
services:
|
|
2
|
+
mongodb:
|
|
3
|
+
container_name: ${RACLETTE_MONGODB_CONTAINERNAME:-raclette-mongodb}
|
|
4
|
+
image: mongo:8.2
|
|
5
|
+
restart: unless-stopped
|
|
6
|
+
ports:
|
|
7
|
+
- 127.0.0.1:${RACLETTE_MONGODB_PORT:-27017}:27017
|
|
8
|
+
volumes:
|
|
9
|
+
- ${RACLETTE_MONGODB_VOLUME:-raclette-mongodb}:/data/db
|
|
10
|
+
- >-
|
|
11
|
+
${RACLETTE_MONGODB_CONFIG_VOLUME:-playground-mongodb-config}:/data/config
|
|
12
|
+
networks:
|
|
13
|
+
- raclette_shared
|
|
14
|
+
healthcheck:
|
|
15
|
+
test:
|
|
16
|
+
- CMD
|
|
17
|
+
- mongosh
|
|
18
|
+
- '--eval'
|
|
19
|
+
- db.adminCommand('ping')
|
|
20
|
+
interval: 10s
|
|
21
|
+
timeout: 30s
|
|
22
|
+
retries: 20
|
|
23
|
+
cache:
|
|
24
|
+
container_name: ${RACLETTE_CACHE_CONTAINERNAME:-raclette-cache}
|
|
25
|
+
image: valkey/valkey:9.0-alpine
|
|
26
|
+
ports:
|
|
27
|
+
- 127.0.0.1:${RACLETTE_CACHE_PORT:-6379}:6379
|
|
28
|
+
volumes:
|
|
29
|
+
- ${RACLETTE_CACHE_VOLUME:-raclette-cache}:/data
|
|
30
|
+
networks:
|
|
31
|
+
- raclette_shared
|
|
32
|
+
healthcheck:
|
|
33
|
+
test:
|
|
34
|
+
- CMD
|
|
35
|
+
- valkey-cli
|
|
36
|
+
- ping
|
|
37
|
+
interval: 10s
|
|
38
|
+
timeout: 5s
|
|
39
|
+
retries: 3
|
|
40
|
+
command: valkey-server --save ""
|
|
41
|
+
backend:
|
|
42
|
+
container_name: ${RACLETTE_SERVER_CONTAINERNAME:-playground-backend}
|
|
43
|
+
build:
|
|
44
|
+
context: .
|
|
45
|
+
dockerfile: ./backend.Dockerfile
|
|
46
|
+
args:
|
|
47
|
+
NODE_ENV: development
|
|
48
|
+
command: yarn run dev:inspect
|
|
49
|
+
environment:
|
|
50
|
+
- NODE_ENV=${NODE_ENV:-development}
|
|
51
|
+
- DISABLE_PLUGIN_LOGS=${RACLETTE_DISABLE_PLUGIN_LOGS:-false}
|
|
52
|
+
- >-
|
|
53
|
+
SERVER_TOKEN_SECRET=${RACLETTE_SERVER_TOKEN_SECRET:-thisshouldbesetforproduction}
|
|
54
|
+
- RACLETTE_FRONTEND_URLS=${RACLETTE_FRONTEND_URLS:-}
|
|
55
|
+
- >-
|
|
56
|
+
MONGO_HOST=${RACLETTE_MONGODB_HOST:-mongodb://mongodb:${RACLETTE_MONGODB_PORT:-27017}/${RACLETTE_MONGODB_DATABASE:-raclette}}
|
|
57
|
+
- >-
|
|
58
|
+
CACHE_URL=${RACLETTE_CACHE_URL:-redis://cache:${RACLETTE_CACHE_PORT:-6379}}
|
|
59
|
+
- RACLETTE_DEBUG_MODE=true
|
|
60
|
+
- RACLETTE_APP_PATH=/home/shookie/core-dev/@raclettejs/playground
|
|
61
|
+
volumes:
|
|
62
|
+
- yarn-cache:/usr/local/share/.cache/yarn
|
|
63
|
+
- playground-backend_node_modules:/app/node_modules
|
|
64
|
+
- >-
|
|
65
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/virtual/backend/src:/app/src
|
|
66
|
+
- >-
|
|
67
|
+
/home/shookie/core-dev/@raclettejs/playground/plugins:/app/src/appPlugins
|
|
68
|
+
- >-
|
|
69
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/backend/raclette.config.js:/app/raclette.config.js
|
|
70
|
+
- >-
|
|
71
|
+
/home/shookie/core-dev/@raclettejs/playground/backend.yarn.lock:/app/yarn.lock
|
|
72
|
+
- >-
|
|
73
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/dist/check-dependencies.sh:/app/check-dependencies.sh
|
|
74
|
+
- >-
|
|
75
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/backend/package.json:/app/package.json
|
|
76
|
+
ports:
|
|
77
|
+
- ${RACLETTE_SERVER_PORT:-8082}:3000
|
|
78
|
+
- '9229:9229'
|
|
79
|
+
networks:
|
|
80
|
+
- raclette_shared
|
|
81
|
+
depends_on:
|
|
82
|
+
mongodb:
|
|
83
|
+
condition: service_started
|
|
84
|
+
cache:
|
|
85
|
+
condition: service_healthy
|
|
86
|
+
healthcheck:
|
|
87
|
+
test:
|
|
88
|
+
- CMD
|
|
89
|
+
- curl
|
|
90
|
+
- '-f'
|
|
91
|
+
- http://0.0.0.0:3000/health
|
|
92
|
+
interval: 10s
|
|
93
|
+
timeout: 30s
|
|
94
|
+
retries: 10
|
|
95
|
+
entrypoint:
|
|
96
|
+
- /app/check-dependencies.sh
|
|
97
|
+
frontend:
|
|
98
|
+
container_name: ${RACLETTE_CLIENT_CONTAINERNAME:-playground-frontend}
|
|
99
|
+
build:
|
|
100
|
+
context: .
|
|
101
|
+
dockerfile: ./frontend.Dockerfile
|
|
102
|
+
args:
|
|
103
|
+
NODE_ENV: ${NODE_ENV:-development}
|
|
104
|
+
target: ${NODE_ENV:-development}
|
|
105
|
+
command: yarn dev
|
|
106
|
+
depends_on:
|
|
107
|
+
backend:
|
|
108
|
+
condition: service_healthy
|
|
109
|
+
environment:
|
|
110
|
+
- NODE_ENV=${NODE_ENV:-development}
|
|
111
|
+
- RACLETTE_DEBUG_MODE=${RACLETTE_DEBUG_MODE:-true}
|
|
112
|
+
- >-
|
|
113
|
+
RACLETTE_SERVER_BASE_URL=${RACLETTE_SERVER_BASE_URL:-http://localhost:${RACLETTE_SERVER_PORT:-8082}}
|
|
114
|
+
- >-
|
|
115
|
+
RACLETTE_SOCKET_URL=${RACLETTE_SOCKET_URL:-http://localhost:${RACLETTE_SERVER_PORT:-8082}}
|
|
116
|
+
- RACLETTE_DEBUG_MODE=true
|
|
117
|
+
- RACLETTE_APP_PATH=/home/shookie/core-dev/@raclettejs/playground
|
|
118
|
+
volumes:
|
|
119
|
+
- yarn-cache:/usr/local/share/.cache/yarn
|
|
120
|
+
- >-
|
|
121
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/virtual/frontend/src:/app/src
|
|
122
|
+
- >-
|
|
123
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/virtual/backend/src/shared:/app/src/shared
|
|
124
|
+
- playground-frontend_node_modules:/app/node_modules
|
|
125
|
+
- /home/shookie/core-dev/@raclettejs/playground/plugins:/app/src/plugins
|
|
126
|
+
- >-
|
|
127
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/virtual/backend/src/corePlugins:/app/src/corePlugins
|
|
128
|
+
- >-
|
|
129
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/frontend/raclette.config.js:/app/raclette.config.js
|
|
130
|
+
- >-
|
|
131
|
+
/home/shookie/core-dev/@raclettejs/playground/frontend.yarn.lock:/app/yarn.lock
|
|
132
|
+
- >-
|
|
133
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/dist/check-dependencies.sh:/app/check-dependencies.sh
|
|
134
|
+
- >-
|
|
135
|
+
/home/shookie/core-dev/@raclettejs/playground/.raclette/frontend/package.json:/app/package.json
|
|
136
|
+
ports:
|
|
137
|
+
- ${RACLETTE_CLIENT_PORT:-8081}:8081
|
|
138
|
+
networks:
|
|
139
|
+
- raclette_shared
|
|
140
|
+
healthcheck:
|
|
141
|
+
test:
|
|
142
|
+
- CMD
|
|
143
|
+
- curl
|
|
144
|
+
- '-f'
|
|
145
|
+
- http://0.0.0.0:8081/
|
|
146
|
+
interval: 10s
|
|
147
|
+
timeout: 30s
|
|
148
|
+
retries: 10
|
|
149
|
+
entrypoint:
|
|
150
|
+
- /app/check-dependencies.sh
|
|
151
|
+
volumes:
|
|
152
|
+
yarn-cache:
|
|
153
|
+
driver: local
|
|
154
|
+
raclette-public-shared: null
|
|
155
|
+
{{#volumes}}
|
|
156
|
+
{{entry}}
|
|
157
|
+
{{/volumes}}
|
|
158
|
+
networks:
|
|
159
|
+
raclette_shared:
|
|
160
|
+
external: true
|
|
161
|
+
name: raclette_shared
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
FROM node:24-alpine3.21 AS build
|
|
2
|
+
WORKDIR /app
|
|
3
|
+
|
|
4
|
+
RUN apk update && apk add bash curl {{#config.services.frontend.installPackages}} {{.}} {{/config.services.frontend.installPackages}}
|
|
5
|
+
|
|
6
|
+
# Copy package files first for better caching
|
|
7
|
+
COPY frontend/package.json frontend/yarn.lock ./
|
|
8
|
+
COPY frontend/raclette.config.js ./
|
|
9
|
+
|
|
10
|
+
ARG NODE_ENV={{environment}}
|
|
11
|
+
|
|
12
|
+
# Copy source files - we'll handle development overrides through volumes
|
|
13
|
+
COPY ./virtual/frontend/ ./
|
|
14
|
+
|
|
15
|
+
COPY ./dist/check-dependencies.sh /app/
|
|
16
|
+
RUN chmod +x /app/check-dependencies.sh
|
|
17
|
+
|
|
18
|
+
RUN rm -rf ./src/shared
|
|
19
|
+
|
|
20
|
+
# Now copy the actual shared folder - be explicit with the path
|
|
21
|
+
COPY virtual/backend/src/shared/ ./src/shared/
|
|
22
|
+
|
|
23
|
+
# Ports
|
|
24
|
+
ENV PORT {{config.services.frontend.port}}
|
|
25
|
+
EXPOSE {{config.services.frontend.port}}
|
|
26
|
+
|
|
27
|
+
# Add development target
|
|
28
|
+
FROM build AS development
|
|
29
|
+
CMD ["yarn", "run", "dev"]
|
|
30
|
+
|
|
31
|
+
# ----------------------------------------------------------------
|
|
32
|
+
# 2. production stage
|
|
33
|
+
# Here we will use a new docker image, which is only the web server
|
|
34
|
+
FROM nginx:stable-alpine AS production
|
|
35
|
+
WORKDIR /app
|
|
36
|
+
|
|
37
|
+
# Copy nginx config as a template
|
|
38
|
+
COPY frontend/provision/nginx.conf /etc/nginx/conf.d/default.conf.template
|
|
39
|
+
|
|
40
|
+
COPY --from=build app/dist /usr/share/nginx/html
|
|
41
|
+
COPY frontend/provision/entrypoint.sh /docker-entrypoint.d/entrypoint.sh
|
|
42
|
+
|
|
43
|
+
# Make sure the entrypoint is executable
|
|
44
|
+
RUN chmod +x /docker-entrypoint.d/entrypoint.sh
|
|
45
|
+
|
|
46
|
+
ENV PORT 80
|
|
47
|
+
EXPOSE 80
|
|
48
|
+
|
|
49
|
+
CMD ["nginx", "-g", "daemon off;"]
|
package/templates/fs.yml
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# this defines the contents of the raclette app directory named by config.root (usually .raclette)
|
|
2
|
+
# the files in there are either generated at build time or linked from the sources
|
|
3
|
+
# these settings rarely if ever change, so they are outside the general raclette.config.yaml
|
|
4
|
+
# during development almost everything in there is mounted as volumes to the different running containers
|
|
5
|
+
# in production builds the contents become part of the image
|
|
6
|
+
|
|
7
|
+
# almost the only reason this exists is so the development docker containers can do hot-reload
|
|
8
|
+
# without messing up the workspaces and git repo
|
|
9
|
+
# the hot-reload itself is of course handled by node, vite or tsx
|
|
10
|
+
# but the changes in the repo need to be passed on to the volumes
|
|
11
|
+
# this is done by creating hardlinks on startup
|
|
12
|
+
# and watching the repo itself for relevant additions and deletions
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
patterns:
|
|
16
|
+
# can be used in vfs mappings, but mainly is used in watcher file selection
|
|
17
|
+
ext: ["**/*.vue", "**/*.ts", "**/*.js", "**/*.json", "**/*.css", "**/*.scss"]
|
|
18
|
+
pkg: ["**/package.json", "**/yarn.lock"] # changes here require new install anyway
|
|
19
|
+
# always added when globbing, config.root is also always added
|
|
20
|
+
ignore: ["**/node_modules/**", "**/.git/**", "**/dist/**", "**/.prettierrc", "**/eslint.config.js"]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
mappings:
|
|
24
|
+
# this defines how files are processed, whether they are watched or not
|
|
25
|
+
# remember, all watched files are hard linked, this just defines where from and where to
|
|
26
|
+
# the mappings are processed in order, and when a later mapping tries to link to the same location, that file will be ignored
|
|
27
|
+
#
|
|
28
|
+
# src: files can come from different source paths, the most common being
|
|
29
|
+
# 1. generated files from the raclette root directory, paths starting with "/"
|
|
30
|
+
# generated files are not watched
|
|
31
|
+
# 2. the raclette core package, paths starting with ".", this is the default
|
|
32
|
+
# 3. paths defined in environment variables, starting with "$", the default being "RACLETTE_APP_PATH"
|
|
33
|
+
# 4. any other relative path is from the current application directory, the default is ""
|
|
34
|
+
# get: this selects the files relative to the source that need to be gotten
|
|
35
|
+
# - you use globby syntax here for pattern matching
|
|
36
|
+
# - a string that matches a key in patterns above will splice the pattern into the glob list
|
|
37
|
+
# - default is [ '**' ], i.e. recursivly everything
|
|
38
|
+
# for dst:
|
|
39
|
+
# - always relative to vfs root, i.e. "." is the default, which is "$config.root/virtual/"
|
|
40
|
+
# - the final link target is always the join of dst / selected-file
|
|
41
|
+
# - can be a list for multiple destinations
|
|
42
|
+
# - when the get list is a single file, and dst is not "." and does not end in "/", the file will be renamed
|
|
43
|
+
- src: services/
|
|
44
|
+
- get: src/types.ts
|
|
45
|
+
dst: [backend/types/index.ts, frontend/types/index.ts]
|
|
46
|
+
- src: ./services/
|
|
47
|
+
- src: /
|
|
48
|
+
get: [ frontend/*, backend/* ]
|
|
49
|
+
- get: bin/check-dependencies.sh # copies from core/bin into $config.root/dist/
|
|
50
|
+
dst: ../dist/check-dependencies.sh
|
|
51
|
+
- src: i18n
|
|
52
|
+
dst: frontend/src/orchestrator/i18n/app/
|
|
53
|
+
- src: workbench/i18n
|
|
54
|
+
dst: frontend/src/orchestrator/i18n/workbench/
|
|
55
|
+
- src: shared
|
|
56
|
+
dst: [ frontend/src/shared/app/, backend/src/shared/app/ ]
|
|
57
|
+
- src: $/shared/
|
|
58
|
+
dst: [ backend/src/shared/app/, backend/src/shared/app/ ]
|
|
59
|
+
|
|
60
|
+
# these are the chokidar watcher options that get passed along as is (ignored string compiled as RegExp)
|
|
61
|
+
watcher:
|
|
62
|
+
followSymlinks: false
|
|
63
|
+
ignoreInitial: true
|
|
64
|
+
ignored: ^node_modules|/node_modules$|^dist|/dist$|^\\.git|/\\.git$
|
|
65
|
+
|
|
66
|
+
volumes:
|
|
67
|
+
# these are added to the volumes of the respective services in the compose files
|
|
68
|
+
# since later volumes override earlier volumes, the order here is important
|
|
69
|
+
# for production builds this also defines the order of COPY operations for image creation
|
|
70
|
+
# volume sources can be the same as mapping sources, with one exception:
|
|
71
|
+
# there can't be any direct mounting of core based paths, instead there are vfs based paths
|
|
72
|
+
# i.e. paths starting with "." are relative to "$config.root/virtual"
|
|
73
|
+
-
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
defineRacletteConfig:
|
|
2
|
+
name: "raclette-dev"
|
|
3
|
+
|
|
4
|
+
# Configure services
|
|
5
|
+
services:
|
|
6
|
+
frontend:
|
|
7
|
+
enabled: true
|
|
8
|
+
port: 8081
|
|
9
|
+
|
|
10
|
+
backend:
|
|
11
|
+
enabled: true
|
|
12
|
+
port: 8082
|
|
13
|
+
enableDebug: {{process.env.ENABLE_DEBUG}}
|
|
14
|
+
installPackages: ["imagemagick", "font-overpass", "font-dejavu"]
|
|
15
|
+
|
|
16
|
+
mongodb:
|
|
17
|
+
name: "raclette-mongodb"
|
|
18
|
+
enabled: true
|
|
19
|
+
port: 27017
|
|
20
|
+
volume: "raclette-mongodb"
|
|
21
|
+
databaseName: "raclette"
|
|
22
|
+
|
|
23
|
+
cache:
|
|
24
|
+
name: "raclette-cache"
|
|
25
|
+
volume: "raclette-cache"
|
|
26
|
+
enabled: true
|
|
27
|
+
port: 6379
|
|
28
|
+
|
|
29
|
+
workbench:
|
|
30
|
+
enabled: true
|
|
31
|
+
debugPort: 9228
|
|
32
|
+
frontendPort: 8083
|
|
33
|
+
backendPort: 8084
|
|
34
|
+
withLogs: false
|
|
35
|
+
|
|
36
|
+
# list your installed plugins
|
|
37
|
+
# make sure they are listed in your package.json
|
|
38
|
+
# Environment-specific configuration
|
|
39
|
+
env:
|
|
40
|
+
development:
|
|
41
|
+
RACLETTE_DEBUG_MODE: true
|
|
42
|
+
production:
|
|
43
|
+
NODE_ENV: "production"
|
|
44
|
+
|
|
45
|
+
# Frontend framework configuration
|
|
46
|
+
frontend:
|
|
47
|
+
meta:
|
|
48
|
+
title: "Dev-Setup"
|
|
49
|
+
i18n:
|
|
50
|
+
locales: ["tl-TL", "en-EU", "de-DE"]
|
|
51
|
+
framework: "vue"
|
|
52
|
+
vue:
|
|
53
|
+
plugins: ["vue-router"]
|
|
54
|
+
workbench:
|
|
55
|
+
frontend:
|
|
56
|
+
i18n:
|
|
57
|
+
# explicitly set enabled languages for the workbench
|
|
58
|
+
locales: ["tl-TL", "en-EU", "de-DE"]
|
|
59
|
+
eslint:
|
|
60
|
+
useRecommended: false
|
|
61
|
+
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: "raclette-dev"
|
|
2
|
+
root: ".raclette"
|
|
3
|
+
|
|
4
|
+
services:
|
|
5
|
+
frontend:
|
|
6
|
+
enabled: true
|
|
7
|
+
port: 8081
|
|
8
|
+
|
|
9
|
+
backend:
|
|
10
|
+
enabled: true
|
|
11
|
+
port: 8082
|
|
12
|
+
enableDebug: {{process.env.ENABLE_DEBUG}}
|
|
13
|
+
installPackages: []
|
|
14
|
+
|
|
15
|
+
mongodb:
|
|
16
|
+
name: "raclette-mongodb"
|
|
17
|
+
enabled: true
|
|
18
|
+
port: 27017
|
|
19
|
+
volume: "raclette-mongodb"
|
|
20
|
+
databaseName: "raclette"
|
|
21
|
+
|
|
22
|
+
cache:
|
|
23
|
+
name: "raclette-cache"
|
|
24
|
+
volume: "raclette-cache"
|
|
25
|
+
enabled: true
|
|
26
|
+
port: 6379
|
|
27
|
+
|
|
28
|
+
workbench:
|
|
29
|
+
enabled: true
|
|
30
|
+
debugPort: 9228
|
|
31
|
+
frontendPort: 8083
|
|
32
|
+
backendPort: 8084
|
|
33
|
+
withLogs: false
|
|
34
|
+
|
|
35
|
+
# list your installed plugins
|
|
36
|
+
# make sure they are listed in your package.json
|
|
37
|
+
# Environment-specific configuration
|
|
38
|
+
env:
|
|
39
|
+
development:
|
|
40
|
+
RACLETTE_DEBUG_MODE: true
|
|
41
|
+
production:
|
|
42
|
+
NODE_ENV: "production"
|
|
43
|
+
|
|
44
|
+
# Frontend framework configuration
|
|
45
|
+
frontend:
|
|
46
|
+
meta:
|
|
47
|
+
title: "Dev-Setup"
|
|
48
|
+
i18n:
|
|
49
|
+
locales: ["tl-TL", "en-EU", "de-DE"]
|
|
50
|
+
framework: "vue"
|
|
51
|
+
vue:
|
|
52
|
+
plugins: ["vue-router"]
|
|
53
|
+
workbench:
|
|
54
|
+
frontend:
|
|
55
|
+
i18n:
|
|
56
|
+
# explicitly set enabled languages for the workbench
|
|
57
|
+
locales: ["tl-TL", "en-EU", "de-DE"]
|
|
58
|
+
eslint:
|
|
59
|
+
useRecommended: false
|
|
File without changes
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
RacletteAppMode: [ "workbench" , "product-view" ]
|
|
2
|
+
|
|
3
|
+
RacletteConfig:
|
|
4
|
+
name: string
|
|
5
|
+
root: string
|
|
6
|
+
|
|
7
|
+
services:
|
|
8
|
+
frontend?: ServiceFrontendConfig
|
|
9
|
+
backend?: ServiceBackendConfig
|
|
10
|
+
|
|
11
|
+
mongodb?:
|
|
12
|
+
enabled: boolean
|
|
13
|
+
port: number
|
|
14
|
+
name?: string
|
|
15
|
+
volume?: string
|
|
16
|
+
databaseName?: string
|
|
17
|
+
volumes?: VolumeDefinition[] // Add custom volumes property
|
|
18
|
+
cache?: {
|
|
19
|
+
enabled: boolean
|
|
20
|
+
port: number
|
|
21
|
+
name?: string
|
|
22
|
+
volume?: string
|
|
23
|
+
db?: number
|
|
24
|
+
volumes?: VolumeDefinition[]
|
|
25
|
+
|
|
26
|
+
# workbench?: {
|
|
27
|
+
# enabled: boolean
|
|
28
|
+
# debugPort?: number
|
|
29
|
+
# withLogs?: boolean
|
|
30
|
+
# frontendPort: number
|
|
31
|
+
# backendPort: number
|
|
32
|
+
# }
|
|
33
|
+
# [key: string]: any
|
|
34
|
+
# }
|
|
35
|
+
# plugins: Array<string | [string, any]>
|
|
36
|
+
# modules: Array<string | [string, any]>
|
|
37
|
+
# env: {
|
|
38
|
+
# development?: EnvironmentVariables
|
|
39
|
+
# production?: EnvironmentVariables
|
|
40
|
+
# [key: string]: EnvironmentVariables | undefined
|
|
41
|
+
# }
|
|
42
|
+
# global: {
|
|
43
|
+
# requireAuthentication: boolean
|
|
44
|
+
# appMode?: RacletteAppMode
|
|
45
|
+
# }
|
|
46
|
+
# frontend: {
|
|
47
|
+
# additonalPluginPaths?: string[]
|
|
48
|
+
# framework: "vue" | "react"
|
|
49
|
+
# pleaseLetUsAdvertiseOurselfs?: boolean
|
|
50
|
+
# advertiseYourself?: string
|
|
51
|
+
# preventNotifications?: boolean
|
|
52
|
+
# i18n?: {
|
|
53
|
+
# locales?: string[]
|
|
54
|
+
# priorities?: Record<string, number>
|
|
55
|
+
# }
|
|
56
|
+
# vue?: {
|
|
57
|
+
# plugins: string[]
|
|
58
|
+
# }
|
|
59
|
+
# react?: {
|
|
60
|
+
# plugins: string[]
|
|
61
|
+
# }
|
|
62
|
+
# custom?: {
|
|
63
|
+
# [key: string]: any
|
|
64
|
+
# }
|
|
65
|
+
# }
|
|
66
|
+
# backend: {
|
|
67
|
+
# additonalPluginPaths?: string[]
|
|
68
|
+
# sockets?: SocketConfig
|
|
69
|
+
# custom?: {
|
|
70
|
+
# [key: string]: any
|
|
71
|
+
# }
|
|
72
|
+
# cache?: CacheConfig
|
|
73
|
+
# }
|
|
74
|
+
# workbench?: WorkbenchConfig
|
|
75
|
+
# typescript?: {
|
|
76
|
+
# compilerOptions?: {
|
|
77
|
+
# // Allow for any compiler option to be overridden
|
|
78
|
+
# [key: string]: any
|
|
79
|
+
# }
|
|
80
|
+
# }
|
|
81
|
+
# eslint?: {
|
|
82
|
+
# rules?: Record<string, any>
|
|
83
|
+
# plugins?: string[]
|
|
84
|
+
# extends?: string[]
|
|
85
|
+
# ignores?: string[]
|
|
86
|
+
# // Whether to use recommended rules
|
|
87
|
+
# useRecommended?: boolean
|
|
88
|
+
# // For environment-specific configurations
|
|
89
|
+
# env?: Record<string, any>
|
|
90
|
+
# }
|
|
91
|
+
# // Multi-App Workspace feature - configurable source directories
|
|
92
|
+
# sourceDirectories?: Array<{
|
|
93
|
+
# name: string
|
|
94
|
+
# path: string // Supports env variables like process.env.SOME_PATH || "../fallback"
|
|
95
|
+
# priority: number
|
|
96
|
+
# servicePathMap?: {
|
|
97
|
+
# [service: string]: string
|
|
98
|
+
# }
|
|
99
|
+
# folderMappings?: {
|
|
100
|
+
# [targetPath: string]: string
|
|
101
|
+
# }
|
|
102
|
+
# }>
|
|
103
|
+
# // Generic package merging configuration
|
|
104
|
+
# packageMerging?: {
|
|
105
|
+
# frontend?: PackageSourceConfig[]
|
|
106
|
+
# backend?: PackageSourceConfig[]
|
|
107
|
+
# [service: string]: PackageSourceConfig[] | undefined
|
|
108
|
+
# }
|
|
109
|
+
# // Configurable lock file paths
|
|
110
|
+
# lockFiles?: {
|
|
111
|
+
# frontend?: string
|
|
112
|
+
# backend?: string
|
|
113
|
+
# [service: string]: string | undefined
|
|
114
|
+
# }
|
|
115
|
+
#}
|
|
116
|
+
#
|
|
117
|
+
#export type WorkbenchConfig = {
|
|
118
|
+
# frontend: {
|
|
119
|
+
# i18n?: {
|
|
120
|
+
# locales?: string[]
|
|
121
|
+
# }
|
|
122
|
+
# }
|
|
123
|
+
#}
|
|
124
|
+
#
|
|
125
|
+
#export type ServiceFrontendConfig = {
|
|
126
|
+
# enabled: boolean
|
|
127
|
+
# port: number
|
|
128
|
+
# name?: string
|
|
129
|
+
# nodeModulesVolume?: string
|
|
130
|
+
# installPackages?: string[]
|
|
131
|
+
# volumes?: VolumeDefinition[] // Add custom volumes property
|
|
132
|
+
#}
|
|
133
|
+
#
|
|
134
|
+
#export type ServiceBackendConfig = {
|
|
135
|
+
# enabled: boolean
|
|
136
|
+
# port: number
|
|
137
|
+
# name?: string
|
|
138
|
+
# nodeModulesVolume?: string
|
|
139
|
+
# enableDebug?: boolean
|
|
140
|
+
# installPackages?: string[]
|
|
141
|
+
# volumes?: VolumeDefinition[] // Add custom volumes property
|
|
142
|
+
#}
|
|
143
|
+
#
|
|
144
|
+
#export type EnvironmentVariables = {
|
|
145
|
+
# RACLETTE_CORE_ABSOLUTE_PATH?: string
|
|
146
|
+
# RACLETTE_DEBUG_MODE?: boolean
|
|
147
|
+
# RACLETTE_SOCKET_URL?: string
|
|
148
|
+
# RACLETTE_SERVER_BASE_URL?: string
|
|
149
|
+
# RACLETTE_INERHIT_NPMRC?: boolean
|
|
150
|
+
# RACLETTE_DISABLE_PLUGIN_LOGS?: boolean
|
|
151
|
+
# // overrides for service config
|
|
152
|
+
# RACLETTE_SERVER_CONTAINERNAME?: string
|
|
153
|
+
# RACLETTE_SERVER_PORT?: number
|
|
154
|
+
# RACLETTE_SERVER_TOKEN_SECRET?: string
|
|
155
|
+
# RACLETTE_CLIENT_CONTAINERNAME?: string
|
|
156
|
+
# RACLETTE_CLIENT_PORT?: number
|
|
157
|
+
# RACLETTE_MONGODB_HOST?: string
|
|
158
|
+
# RACLETTE_MONGODB_CONTAINERNAME?: string
|
|
159
|
+
# RACLETTE_MONGODB_PORT?: number
|
|
160
|
+
# RACLETTE_MONGODB_VOLUME?: string
|
|
161
|
+
# RACLETTE_MONGODB_CONFIG_VOLUME?: string
|
|
162
|
+
# RACLETTE_CACHE_URL?: string
|
|
163
|
+
# RACLETTE_CACHE_CONTAINERNAME?: string
|
|
164
|
+
# RACLETTE_CACHE_PORT?: number
|
|
165
|
+
# RACLETTE_CACHE_VOLUME?: string
|
|
166
|
+
#
|
|
167
|
+
# // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
168
|
+
# [key: string]: any // Allow additional vars
|
|
169
|
+
#}
|
|
170
|
+
#
|
|
171
|
+
#/**
|
|
172
|
+
# * Volume Definition for Docker Compose
|
|
173
|
+
# */
|
|
174
|
+
#export type VolumeDefinition = {
|
|
175
|
+
# // Source can be a named volume, host path, or volume specification
|
|
176
|
+
# source: string
|
|
177
|
+
# // Target is the path inside the container
|
|
178
|
+
# target: string
|
|
179
|
+
# // Optional volume type (bind, volume, tmpfs)
|
|
180
|
+
# type?: "bind" | "volume" | "tmpfs"
|
|
181
|
+
# // Optional read-only flag
|
|
182
|
+
# readonly?: boolean
|
|
183
|
+
# // Skip this volume if source path doesn't exist
|
|
184
|
+
# mustExist?: boolean
|
|
185
|
+
# // Optional volume driver-specific options
|
|
186
|
+
# volumeOptions?: {
|
|
187
|
+
# // Populate on service creation when volume doesn't exist
|
|
188
|
+
# nocopy?: boolean
|
|
189
|
+
# // Any other driver-specific options
|
|
190
|
+
# [key: string]: any
|
|
191
|
+
# }
|
|
192
|
+
# // Optional bind-specific options
|
|
193
|
+
# bindOptions?: {
|
|
194
|
+
# // Propagation mode for bind mounts
|
|
195
|
+
# propagation?:
|
|
196
|
+
# | "private"
|
|
197
|
+
# | "rprivate"
|
|
198
|
+
# | "shared"
|
|
199
|
+
# | "rshared"
|
|
200
|
+
# | "slave"
|
|
201
|
+
# | "rslave"
|
|
202
|
+
# // Create host path if it doesn't exist
|
|
203
|
+
# createHostPath?: boolean
|
|
204
|
+
# // Any other bind-specific options
|
|
205
|
+
# [key: string]: any
|
|
206
|
+
# }
|
|
207
|
+
# // Optional tmpfs-specific options
|
|
208
|
+
# tmpfsOptions?: {
|
|
209
|
+
# // Size of the tmpfs mount in bytes
|
|
210
|
+
# size?: number
|
|
211
|
+
# // File mode of the tmpfs in octal
|
|
212
|
+
# mode?: number
|
|
213
|
+
# }
|
|
214
|
+
#}
|
|
215
|
+
#/**
|
|
216
|
+
# * Cache Configuration
|
|
217
|
+
# */
|
|
218
|
+
#export type CacheConfig = {
|
|
219
|
+
# persistence?: "none" | "rdb" | "aof" | "rdb+aof"
|
|
220
|
+
# RDB_OPTIONS?: string
|
|
221
|
+
#}
|
|
222
|
+
#/**
|
|
223
|
+
# * Socket Configuration
|
|
224
|
+
# */
|
|
225
|
+
#export type SocketConfig = {
|
|
226
|
+
# /** Configure what data is automatically sent when a frontend joins */
|
|
227
|
+
# autoSend: {
|
|
228
|
+
# /** Send compositions data on join */
|
|
229
|
+
# compositions: boolean
|
|
230
|
+
# /** Send interaction links data on join */
|
|
231
|
+
# interactionLinks: boolean
|
|
232
|
+
# /** Send project configuration on join */
|
|
233
|
+
# projectConfig: boolean
|
|
234
|
+
# /** Additional custom data types to send (must be in the DB and registered via stream) */
|
|
235
|
+
# additionalDatatypes?: {
|
|
236
|
+
# [key: string]: boolean | undefined
|
|
237
|
+
# }
|
|
238
|
+
# customData?: {
|
|
239
|
+
# /** Key is the property name in the response, value is the static data */
|
|
240
|
+
# [key: string]: any
|
|
241
|
+
# }
|
|
242
|
+
# }
|
|
243
|
+
#
|
|
244
|
+
# /** Socket security configuration */
|
|
245
|
+
# security: {
|
|
246
|
+
# /** Whether authentication is required for socket connections */
|
|
247
|
+
# requireAuth: boolean
|
|
248
|
+
# /** Token validation method */
|
|
249
|
+
# tokenValidation: "jwt"
|
|
250
|
+
# /** Custom validation handler path */
|
|
251
|
+
# customValidator?: string
|
|
252
|
+
# }
|
|
253
|
+
#
|
|
254
|
+
# /** Advanced socket options */
|
|
255
|
+
# options: {
|
|
256
|
+
# /** Socket.io adapter configuration */
|
|
257
|
+
# adapter: "memory" | "cache" | "mongodb"
|
|
258
|
+
# /** Connection timeout in milliseconds */
|
|
259
|
+
# connectionTimeout: number
|
|
260
|
+
# /** Ping interval in milliseconds */
|
|
261
|
+
# pingInterval: number
|
|
262
|
+
# /** Ping timeout in milliseconds */
|
|
263
|
+
# pingTimeout: number
|
|
264
|
+
# }
|
|
265
|
+
#}
|
|
266
|
+
#
|
|
267
|
+
#/**
|
|
268
|
+
# * Raclette Module Definition
|
|
269
|
+
# */
|
|
270
|
+
#export type RacletteModule = {
|
|
271
|
+
# name: string
|
|
272
|
+
# services?: Record<string, any>
|
|
273
|
+
# extendConfig?: (config: RacletteConfig, options: any) => RacletteConfig
|
|
274
|
+
# backendExtensions?: {
|
|
275
|
+
# plugins?: string[]
|
|
276
|
+
# routes?: string[]
|
|
277
|
+
# }
|
|
278
|
+
# frontendExtensions?: {
|
|
279
|
+
# components?: string[]
|
|
280
|
+
# plugins?: string[]
|
|
281
|
+
# }
|
|
282
|
+
# hooks?: Record<string, (...args: any[]) => Promise<void>>
|
|
283
|
+
#}
|
|
284
|
+
#
|
|
285
|
+
#export type PluginMetadata = {
|
|
286
|
+
# name: string
|
|
287
|
+
# author: string
|
|
288
|
+
# version: string
|
|
289
|
+
# description?: string
|
|
290
|
+
# repository?: string
|
|
291
|
+
# license?: string
|
|
292
|
+
# hooks?: {
|
|
293
|
+
# beforeMount?: (app: any) => Promise<void>
|
|
294
|
+
# mounted?: (app: any) => Promise<void>
|
|
295
|
+
# beforeUnmount?: (app: any) => Promise<void>
|
|
296
|
+
# }
|
|
297
|
+
# pluginKey?: string
|
|
298
|
+
# dependencies?: string[]
|
|
299
|
+
# options?: Record<string, any>
|
|
300
|
+
# frontendDir?: string // default: "./frontend"
|
|
301
|
+
# backendDir?: string // default: "./backend"
|
|
302
|
+
#}
|
|
303
|
+
#
|
|
304
|
+
#export type PackageSourceConfig = {
|
|
305
|
+
# // Path to the packages.json file (supports env variables)
|
|
306
|
+
# file: string
|
|
307
|
+
# // Key within the file to extract (e.g., "frontend", "workbench.frontend")
|
|
308
|
+
# key: string
|
|
309
|
+
#}
|
|
310
|
+
#
|
|
311
|
+
#export type PackageTarget =
|
|
312
|
+
# | "frontend"
|
|
313
|
+
# | "backend"
|
|
314
|
+
# | "workbench.frontend"
|
|
315
|
+
# | "workbench.backend"
|
|
316
|
+
#
|