@venizia/ardor 0.3.4 → 0.3.6

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.
Files changed (33) hide show
  1. package/dist/{vulcan-preset → presets}/app/files/.configs/builders/Dockerfile +12 -3
  2. package/dist/{vulcan-preset → presets}/app/files/.configs/builders/nginx.conf.template +8 -4
  3. package/dist/{vulcan-preset → presets}/app/files/.configs/builders/vite.config.mts +4 -3
  4. package/dist/presets/app/files/.configs/formatters/.ignore +4 -0
  5. package/dist/presets/app/files/.configs/lints/.ignore +4 -0
  6. package/dist/presets/app/files/_env.example +8 -0
  7. package/dist/{vulcan-preset → presets}/app/files/tsconfig.json +0 -2
  8. package/dist/{vulcan-preset → presets}/app/preset.json +27 -27
  9. package/dist/presets/lib/files/.configs/formatters/.ignore +4 -0
  10. package/dist/presets/lib/files/.configs/lints/.ignore +4 -0
  11. package/dist/{vulcan-preset → presets}/lib/files/tsconfig.json +0 -2
  12. package/dist/{vulcan-preset → presets}/lib/preset.json +13 -13
  13. package/package.json +30 -44
  14. package/dist/vulcan-preset/app/files/_env.example +0 -1
  15. /package/dist/{vulcan-preset → presets}/app/files/.configs/formatters/oxfmt.config.mts +0 -0
  16. /package/dist/{vulcan-preset → presets}/app/files/.configs/lints/eslint.config.mjs +0 -0
  17. /package/dist/{vulcan-preset → presets}/app/files/.configs/lints/oxlint.config.mts +0 -0
  18. /package/dist/{vulcan-preset → presets}/app/files/src/application.test.ts +0 -0
  19. /package/dist/{vulcan-preset → presets}/app/files/src/application.ts +0 -0
  20. /package/dist/{vulcan-preset → presets}/app/files/src/components/shadcn/button.tsx +0 -0
  21. /package/dist/{vulcan-preset → presets}/app/files/src/components/shadcn/card.tsx +0 -0
  22. /package/dist/{vulcan-preset → presets}/app/files/src/configurations/admin.configuration.ts +0 -0
  23. /package/dist/{vulcan-preset → presets}/app/files/src/index.html +0 -0
  24. /package/dist/{vulcan-preset → presets}/app/files/src/main.tsx +0 -0
  25. /package/dist/{vulcan-preset → presets}/app/files/src/pages/home.tsx +0 -0
  26. /package/dist/{vulcan-preset → presets}/app/files/src/themes/index.css +0 -0
  27. /package/dist/{vulcan-preset → presets}/app/files/src/utilities/tw.utility.ts +0 -0
  28. /package/dist/{vulcan-preset → presets}/lib/files/.configs/formatters/oxfmt.config.mts +0 -0
  29. /package/dist/{vulcan-preset → presets}/lib/files/.configs/lints/eslint.config.mjs +0 -0
  30. /package/dist/{vulcan-preset → presets}/lib/files/.configs/lints/oxlint.config.mts +0 -0
  31. /package/dist/{vulcan-preset → presets}/lib/files/src/feature.test.ts +0 -0
  32. /package/dist/{vulcan-preset → presets}/lib/files/src/feature.ts +0 -0
  33. /package/dist/{vulcan-preset → presets}/lib/files/src/index.ts +0 -0
@@ -37,11 +37,16 @@ RUN bun install --frozen-lockfile --ignore-scripts
37
37
  FROM deps AS builder
38
38
 
39
39
  # The image has no .git (the .dockerignore drops it), so the commit comes in as a build argument. A build
40
- # without it stops here: an image must always say which commit it runs.
40
+ # without a commit sha stops here: an image must always say which commit it runs. Before a first commit
41
+ # `git rev-parse HEAD` prints the word HEAD, which is not a sha either.
41
42
  ARG APP_BUILD_COMMIT=
42
43
  ARG APP_BUILD_BRANCH=
43
44
  ARG APP_BUILD_VERSION=
44
- RUN test -n "$APP_BUILD_COMMIT" || { echo "Pass --build-arg APP_BUILD_COMMIT=\$(git rev-parse HEAD)" >&2; exit 1; }
45
+ RUN case "$APP_BUILD_COMMIT" in \
46
+ '' | *[!0-9a-f]* | ? | ?? | ??? | ???? | ????? | ??????) \
47
+ echo "Pass --build-arg APP_BUILD_COMMIT=\$(git rev-parse HEAD) after a first commit; got: $APP_BUILD_COMMIT" >&2; \
48
+ exit 1 ;; \
49
+ esac
45
50
 
46
51
  WORKDIR /home/bun/app/{{appPath}}
47
52
  RUN bun run compile
@@ -59,9 +64,13 @@ LABEL org.opencontainers.image.revision="${APP_BUILD_COMMIT}"
59
64
  COPY --from=builder /home/bun/app/{{appPath}}/.configs/builders/nginx.conf.template /etc/nginx/templates/default.conf.template
60
65
  COPY --from=builder --chown=101:101 /home/bun/app/{{appPath}}/dist /usr/share/nginx/html
61
66
 
62
- # Where /api goes: a compose service name, a cluster service, an address.
67
+ # Where /api goes: a compose service name, a cluster service, an address (an origin, with no path).
63
68
  ENV API_UPSTREAM=http://api:3000
64
69
 
70
+ # The base image reads the DNS servers of /etc/resolv.conf into ${NGINX_LOCAL_RESOLVERS}, which the template
71
+ # gives to `resolver`: nginx looks the upstream up per request, so the container starts without it.
72
+ ENV NGINX_ENTRYPOINT_LOCAL_RESOLVERS=1
73
+
65
74
  # No ENTRYPOINT on purpose: the base image's /docker-entrypoint.sh renders the templates.
66
75
  EXPOSE 8080
67
76
 
@@ -1,5 +1,5 @@
1
- # The nginx configuration of {{app}}, rendered by the base image at start: ${API_UPSTREAM} is the
2
- # only variable replaced; $uri and $host are nginx's own.
1
+ # The nginx configuration of {{app}}, rendered by the base image at start: ${API_UPSTREAM} and
2
+ # ${NGINX_LOCAL_RESOLVERS} are the variables replaced; $uri and $host are nginx's own.
3
3
  server {
4
4
  listen 8080;
5
5
  server_name _;
@@ -7,9 +7,13 @@ server {
7
7
  root /usr/share/nginx/html;
8
8
  index index.html;
9
9
 
10
- # The backend. The path is kept: /api/hello reaches ${API_UPSTREAM}/api/hello.
10
+ # The backend. The path is kept: /api/hello reaches ${API_UPSTREAM}/api/hello. The upstream is a
11
+ # variable that a resolver looks up per request, so nginx starts when the host does not resolve yet
12
+ # and only /api answers 502 until it does.
11
13
  location /api/ {
12
- proxy_pass ${API_UPSTREAM};
14
+ resolver ${NGINX_LOCAL_RESOLVERS} valid=10s ipv6=off;
15
+ set $api_upstream ${API_UPSTREAM};
16
+ proxy_pass $api_upstream;
13
17
  proxy_http_version 1.1;
14
18
  proxy_set_header Host $host;
15
19
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -5,8 +5,9 @@ import { defineConfig, loadEnv } from 'vite';
5
5
 
6
6
  export default defineConfig(({ mode }) => {
7
7
  const env = loadEnv(mode, '.', '');
8
- // The backend app `vulcan add --api` chose; empty when there is none, and then nothing is proxied.
9
- const apiUrl: string = '{{apiUrl}}';
8
+ // The backend app `vulcan add --api` chose, unless .env sets API_URL; empty when there is none, and
9
+ // then nothing is proxied.
10
+ const apiUrl: string = env.API_URL || '{{apiUrl}}';
10
11
  const proxy: Record<string, string> = apiUrl === '' ? {} : { '/api': apiUrl };
11
12
 
12
13
  return {
@@ -17,7 +18,7 @@ export default defineConfig(({ mode }) => {
17
18
  // Builds the class list of src/ into the bundle, so a decorated class is bound without being imported.
18
19
  plugins: [IgnisArtifactsVitePlugin.create({ root: 'src' }), react(), tailwindcss()],
19
20
  server: {
20
- port: Number(env.PORT ?? '{{devPort}}'),
21
+ port: Number(env.PORT || '{{devPort}}'),
21
22
  strictPort: true,
22
23
  proxy,
23
24
  },
@@ -0,0 +1,4 @@
1
+ # Paths oxfmt skips: one gitignore-style pattern per line, relative to this app.
2
+ # `devz lint` passes each line on as !pattern; lines starting with # are comments.
3
+ # Example: vendored code that keeps its own format.
4
+ # src/vendor/**
@@ -0,0 +1,4 @@
1
+ # Paths oxlint and ESLint skip: one gitignore-style pattern per line, relative to this app.
2
+ # `devz lint` passes each line on as --ignore-pattern; lines starting with # are comments.
3
+ # Example: generated code that is not yours to lint.
4
+ # src/generated/**
@@ -0,0 +1,8 @@
1
+ # Copy to .env for a local run: bun loads it on start. Never commit .env.
2
+ # Every key is optional; an empty value falls back to the framework default.
3
+
4
+ # The port of the dev server (`bun run server:dev`).
5
+ PORT={{devPort}}
6
+
7
+ # The backend the dev server forwards /api to. Empty: the one chosen when the app was added (none, if it had no backend).
8
+ API_URL={{apiUrl}}
@@ -2,8 +2,6 @@
2
2
  "$schema": "http://json.schemastore.org/tsconfig",
3
3
  "extends": "@venizia/dev-configs/tsconfig.react.json",
4
4
  "compilerOptions": {
5
- "target": "ESNext",
6
- "lib": ["ESNext", "DOM", "DOM.Iterable"],
7
5
  "types": ["vite/client", "bun"],
8
6
  "noEmit": true,
9
7
  "isolatedModules": true,
@@ -11,48 +11,48 @@
11
11
  "/"
12
12
  ],
13
13
  "dependencies": {
14
- "@reduxjs/toolkit": "^2.12.0",
15
- "@tanstack/react-query": "^5.101.2",
16
- "@venizia/ardor": "0.3.4",
17
- "@venizia/ignis-connectors": "0.3.4",
18
- "@venizia/ignis-filter": "0.3.4",
19
- "@venizia/ignis-helpers": "0.3.4",
20
- "@venizia/ignis-inversion": "0.3.5",
21
- "@venizia/ignis-kernel": "0.3.4",
14
+ "@reduxjs/toolkit": "^2.13.0",
15
+ "@tanstack/react-query": "^5.104.5",
16
+ "@venizia/ardor": "0.3.6",
17
+ "@venizia/ignis-connectors": "0.3.6",
18
+ "@venizia/ignis-filter": "0.3.6",
19
+ "@venizia/ignis-helpers": "0.3.6",
20
+ "@venizia/ignis-inversion": "0.3.7",
21
+ "@venizia/ignis-kernel": "0.3.6",
22
22
  "class-variance-authority": "^0.7.1",
23
23
  "clsx": "^2.1.1",
24
- "ra-core": "^5.15.0",
25
- "ra-i18n-polyglot": "^5.15.0",
26
- "react": "^19.2.7",
27
- "react-dom": "^19.2.7",
24
+ "ra-core": "^5.15.5",
25
+ "ra-i18n-polyglot": "^5.15.5",
26
+ "react": "^19.3.1",
27
+ "react-dom": "^19.3.1",
28
28
  "react-redux": "^9.3.0",
29
- "react-router-dom": "^7.9.4",
29
+ "react-router-dom": "^7.18.4",
30
30
  "reflect-metadata": "^0.2.2",
31
31
  "tailwind-merge": "^3.7.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@tailwindcss/vite": "^4.3.3",
35
- "@types/bun": "^1.4.1",
35
+ "@types/bun": "^1.4.3",
36
36
  "@types/react": "^19",
37
37
  "@types/react-dom": "^19",
38
- "@venizia/dev-configs": "0.3.4",
39
- "@venizia/ignis-boot": "0.3.4",
40
- "@vitejs/plugin-react": "^6.1.1",
41
- "eslint": "^10.10.0",
42
- "oxfmt": "0.73.0",
43
- "oxlint": "1.88.0",
38
+ "@venizia/dev-configs": "0.3.6",
39
+ "@venizia/ignis-boot": "0.3.6",
40
+ "@vitejs/plugin-react": "^6.1.2",
41
+ "eslint": "^10.13.0",
42
+ "oxfmt": "0.74.0",
43
+ "oxlint": "1.89.0",
44
44
  "oxlint-tsgolint": "7.0.2004",
45
45
  "tailwindcss": "^4.3.3",
46
46
  "typescript": "^6.0.3",
47
- "vite": "^8.2.2"
47
+ "vite": "^8.3.5"
48
48
  },
49
49
  "peers": {
50
- "@venizia/dev-configs": "^0.3.4",
51
- "@venizia/ignis-connectors": "^0.3.0",
52
- "@venizia/ignis-filter": "^0.3.0",
53
- "@venizia/ignis-helpers": "^0.3.0",
54
- "@venizia/ignis-inversion": "^0.3.0",
55
- "@venizia/ignis-kernel": "^0.3.0"
50
+ "@venizia/dev-configs": "^0.3.6",
51
+ "@venizia/ignis-connectors": "^0.3.6",
52
+ "@venizia/ignis-filter": "^0.3.6",
53
+ "@venizia/ignis-helpers": "^0.3.6",
54
+ "@venizia/ignis-inversion": "^0.3.7",
55
+ "@venizia/ignis-kernel": "^0.3.6"
56
56
  },
57
57
  "scripts": {
58
58
  "server:dev": "vite --config .configs/builders/vite.config.mts",
@@ -0,0 +1,4 @@
1
+ # Paths oxfmt skips: one gitignore-style pattern per line, relative to this app.
2
+ # `devz lint` passes each line on as !pattern; lines starting with # are comments.
3
+ # Example: vendored code that keeps its own format.
4
+ # src/vendor/**
@@ -0,0 +1,4 @@
1
+ # Paths oxlint and ESLint skip: one gitignore-style pattern per line, relative to this app.
2
+ # `devz lint` passes each line on as --ignore-pattern; lines starting with # are comments.
3
+ # Example: generated code that is not yours to lint.
4
+ # src/generated/**
@@ -2,8 +2,6 @@
2
2
  "$schema": "http://json.schemastore.org/tsconfig",
3
3
  "extends": "@venizia/dev-configs/tsconfig.react.json",
4
4
  "compilerOptions": {
5
- "target": "ESNext",
6
- "lib": ["ESNext", "DOM", "DOM.Iterable"],
7
5
  "types": ["bun"],
8
6
  "noEmit": true,
9
7
  "isolatedModules": true,
@@ -3,25 +3,25 @@
3
3
  "summary": "An ARDOR feature package: one Features.define, a test that mounts it in a probe application, typecheck, lint and test. No bundler and no dev server.",
4
4
  "dependencies": {},
5
5
  "devDependencies": {
6
- "@types/bun": "^1.4.1",
6
+ "@types/bun": "^1.4.3",
7
7
  "@types/react": "^19",
8
- "@venizia/ardor": "^0.3.4",
9
- "@venizia/dev-configs": "0.3.4",
10
- "eslint": "^10.10.0",
11
- "oxfmt": "0.73.0",
12
- "oxlint": "1.88.0",
8
+ "@venizia/ardor": "^0.3.6",
9
+ "@venizia/dev-configs": "0.3.6",
10
+ "eslint": "^10.13.0",
11
+ "oxfmt": "0.74.0",
12
+ "oxlint": "1.89.0",
13
13
  "oxlint-tsgolint": "7.0.2004",
14
- "react": "^19.2.7",
15
- "react-dom": "^19.2.7",
16
- "react-router-dom": "^7.9.4",
14
+ "react": "^19.3.1",
15
+ "react-dom": "^19.3.1",
16
+ "react-router-dom": "^7.18.4",
17
17
  "reflect-metadata": "^0.2.2",
18
18
  "typescript": "^6.0.3"
19
19
  },
20
20
  "peerDependencies": {
21
- "@venizia/ardor": "^0.3.4",
22
- "react": "^19.2.7",
23
- "react-dom": "^19.2.7",
24
- "react-router-dom": "^7.9.4",
21
+ "@venizia/ardor": "^0.3.6",
22
+ "react": "^19.3.1",
23
+ "react-dom": "^19.3.1",
24
+ "react-router-dom": "^7.18.4",
25
25
  "reflect-metadata": "^0.2.2"
26
26
  },
27
27
  "scripts": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venizia/ardor",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "ARDOR - frontend application framework for the VENIZIA family. One entry point over ardor-kernel, ardor-react and ardor-admin: IGNIS inversion of control, a REST data layer, auth and i18n providers, and the React bindings for a react-admin application.",
5
5
  "keywords": [
6
6
  "ardor",
@@ -59,8 +59,10 @@
59
59
  },
60
60
  "sideEffects": false,
61
61
  "vulcan": {
62
- "preset": "./dist/vulcan-preset/app/preset.json",
63
- "lib": "./dist/vulcan-preset/lib/preset.json"
62
+ "presets": {
63
+ "app": "./dist/presets/app/preset.json",
64
+ "lib": "./dist/presets/lib/preset.json"
65
+ }
64
66
  },
65
67
  "files": [
66
68
  "README.md",
@@ -73,30 +75,30 @@
73
75
  "access": "public"
74
76
  },
75
77
  "scripts": {
76
- "force-update": "sh ./scripts/force-update.sh",
78
+ "force-update": "sh ../../scripts/force-update.sh",
77
79
  "prepublishOnly": "make rebuild"
78
80
  },
79
81
  "dependencies": {
80
- "@venizia/ardor-admin": "0.3.0",
81
- "@venizia/ardor-kernel": "0.3.0",
82
- "@venizia/ardor-react": "0.3.0"
82
+ "@venizia/ardor-admin": "0.3.6",
83
+ "@venizia/ardor-kernel": "0.3.6",
84
+ "@venizia/ardor-react": "0.3.6"
83
85
  },
84
86
  "peerDependencies": {
85
- "@reduxjs/toolkit": ">=2.12.0",
86
- "@tanstack/react-query": ">=5.101.2",
87
- "@venizia/ignis-connectors": "^0.3.0",
88
- "@venizia/ignis-filter": "^0.3.0",
89
- "@venizia/ignis-helpers": "^0.3.0",
90
- "@venizia/ignis-inversion": "^0.3.0",
91
- "@venizia/ignis-kernel": "^0.3.0",
92
- "ra-core": ">=5.15.0",
93
- "ra-i18n-polyglot": ">=5.15.0",
94
- "react": ">=18.0",
95
- "react-dom": ">=18.0",
87
+ "@reduxjs/toolkit": ">=2.13.0",
88
+ "@tanstack/react-query": ">=5.104.5",
89
+ "@venizia/ignis-connectors": "^0.3.6",
90
+ "@venizia/ignis-filter": "^0.3.6",
91
+ "@venizia/ignis-helpers": "^0.3.6",
92
+ "@venizia/ignis-inversion": "^0.3.7",
93
+ "@venizia/ignis-kernel": "^0.3.6",
94
+ "ra-core": ">=5.15.5",
95
+ "ra-i18n-polyglot": ">=5.15.5",
96
+ "react": ">=19.3.1",
97
+ "react-dom": ">=19.3.1",
96
98
  "react-redux": ">=9.3.0",
97
- "react-router-dom": ">=7.9.4",
99
+ "react-router-dom": ">=7.18.4",
98
100
  "reflect-metadata": ">=0.2.2",
99
- "socket.io-client": ">=4.8.3"
101
+ "socket.io-client": ">=4.8.4"
100
102
  },
101
103
  "peerDependenciesMeta": {
102
104
  "@venizia/ignis-connectors": {
@@ -107,30 +109,14 @@
107
109
  }
108
110
  },
109
111
  "devDependencies": {
110
- "@reduxjs/toolkit": "^2.12.0",
111
- "@size-limit/preset-small-lib": "^11.2.0",
112
- "@tanstack/react-query": "^5.101.2",
113
- "@types/bun": "^1.4.1",
114
- "@types/react": "^19",
115
- "@types/react-dom": "^19",
116
- "@venizia/dev-configs": "^0.3.4",
117
- "@venizia/ignis-connectors": "^0.3.4",
118
- "@venizia/ignis-filter": "^0.3.4",
119
- "@venizia/ignis-inversion": "^0.3.5",
120
- "@venizia/ignis-kernel": "^0.3.4",
121
- "eslint": "^10.10.0",
122
- "oxfmt": "0.73.0",
123
- "oxlint": "1.88.0",
112
+ "@size-limit/preset-small-lib": "^14.2.0",
113
+ "@venizia/dev-configs": "^0.3.6",
114
+ "eslint": "^10.13.0",
115
+ "oxfmt": "0.74.0",
116
+ "oxlint": "1.89.0",
124
117
  "oxlint-tsgolint": "7.0.2004",
125
- "ra-core": "^5.15.0",
126
- "react": "^19.2.7",
127
- "react-dom": "^19.2.7",
128
- "react-redux": "^9.3.0",
129
- "react-router-dom": "^7.9.4",
130
- "reflect-metadata": "^0.2.2",
131
- "size-limit": "^11.2.0",
132
- "socket.io-client": "^4.8.3",
133
- "tsc-alias": "^1.8.16",
118
+ "size-limit": "^14.2.0",
119
+ "tsc-alias": "~1.8.17",
134
120
  "typescript": "^6.0.3"
135
121
  },
136
122
  "size-limit": [
@@ -152,7 +138,7 @@
152
138
  "react-router-dom",
153
139
  "reflect-metadata"
154
140
  ],
155
- "limit": "250 B"
141
+ "limit": "350 B"
156
142
  }
157
143
  ]
158
144
  }
@@ -1 +0,0 @@
1
- PORT={{devPort}}