@bonsae/nrg 0.18.3 → 0.18.5
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/README.md +38 -45
- package/package.json +1 -1
- package/server/index.cjs +10 -1
- package/server/resources/nrg-client.js +502 -499
- package/test/client/e2e/index.js +30 -3
- package/vite/index.js +34 -7
package/README.md
CHANGED
|
@@ -13,41 +13,25 @@
|
|
|
13
13
|
|
|
14
14
|
Build Node-RED nodes with Vue 3, TypeScript, JSON Schema validations, Vite and Vitest.
|
|
15
15
|
|
|
16
|
-
## Package Exports
|
|
17
|
-
|
|
18
|
-
| Export | Description |
|
|
19
|
-
| --- | --- |
|
|
20
|
-
| `@bonsae/nrg` | Root entry — `defineRuntimeSettings` |
|
|
21
|
-
| `@bonsae/nrg/server` | Server node classes, schema utilities, validation (`IONode`, `ConfigNode`, `defineIONode`, `defineConfigNode`, `defineModule`, `SchemaType`, `defineSchema`, `Infer`) |
|
|
22
|
-
| `@bonsae/nrg/client` | Client-side registration (`registerTypes`, `defineNode`, `useFormNode`, `Infer`) |
|
|
23
|
-
| `@bonsae/nrg/vite` | Vite plugin for building and developing Node-RED packages |
|
|
24
|
-
| `@bonsae/nrg/test/server/unit` | Server unit test helpers (`createNode`, `createRED`, `MockRED`) |
|
|
25
|
-
| `@bonsae/nrg/test/server/unit/config` | Server unit test default vitest config (`defaultConfig`) |
|
|
26
|
-
| `@bonsae/nrg/test/client/unit` | Client unit test mocks (`createRED`, `createJQuery`, `useFormNode`) |
|
|
27
|
-
| `@bonsae/nrg/test/client/unit/config` | Client unit test default vitest config (`defaultConfig`) |
|
|
28
|
-
| `@bonsae/nrg/test/client/unit/setup` | Setup file that installs `RED` and `$` mocks on `window` |
|
|
29
|
-
| `@bonsae/nrg/test/client/component` | Client component test helpers (`createNode`, `createRED`, `createJQuery`, `useFormNode`) |
|
|
30
|
-
| `@bonsae/nrg/test/client/component/config` | Client component test default vitest config (`defaultConfig`) |
|
|
31
|
-
| `@bonsae/nrg/test/client/component/setup` | Setup file that installs `RED` and `$` mocks on `window` with Vue i18n |
|
|
32
|
-
| `@bonsae/nrg/test/client/e2e` | Browser E2E test helpers (`NodeRedEditor`, `NodeRedField`, `setup`, `teardown`) |
|
|
33
|
-
| `@bonsae/nrg/tsconfig/base.json` | Base TypeScript configuration |
|
|
34
|
-
| `@bonsae/nrg/tsconfig/core/server.json` | Core server source tsconfig |
|
|
35
|
-
| `@bonsae/nrg/tsconfig/core/client.json` | Core client source tsconfig |
|
|
36
|
-
| `@bonsae/nrg/tsconfig/test/server/unit.json` | Server unit test tsconfig |
|
|
37
|
-
| `@bonsae/nrg/tsconfig/test/client/unit.json` | Client unit test tsconfig |
|
|
38
|
-
| `@bonsae/nrg/tsconfig/test/client/component.json` | Client component test tsconfig |
|
|
39
|
-
| `@bonsae/nrg/tsconfig/test/client/e2e.json` | Client E2E test tsconfig |
|
|
40
|
-
|
|
41
16
|
## Quick Start
|
|
42
17
|
|
|
43
18
|
```bash
|
|
44
|
-
# In your Node-RED package project
|
|
45
19
|
pnpm add @bonsae/nrg
|
|
46
|
-
pnpm add -D vite vue
|
|
20
|
+
pnpm add -D vite vue node-red
|
|
47
21
|
```
|
|
48
22
|
|
|
49
23
|
> `vite` and `vue` are dev dependencies because they are only needed at build time. Vue is included as a dependency of nrg and served automatically at runtime.
|
|
50
24
|
|
|
25
|
+
### Node-RED Resolution
|
|
26
|
+
|
|
27
|
+
The vite plugin needs a Node-RED instance for the dev server. It resolves it in this order:
|
|
28
|
+
|
|
29
|
+
1. **`runtime.version`** — if specified in the plugin config, downloads that exact version via `npx` (overrides any locally installed version)
|
|
30
|
+
2. **Local `node_modules`** — if `node-red` is installed as a dependency, it is used directly (fastest)
|
|
31
|
+
3. **Fallback** — downloads the latest `node-red` via `npx`
|
|
32
|
+
|
|
33
|
+
Installing `node-red` as a dev dependency is recommended for fast, reliable dev server startup across all platforms (especially Windows). If you need a specific version (e.g., a beta), set `runtime.version` in the plugin config instead.
|
|
34
|
+
|
|
51
35
|
**vite.config.ts**
|
|
52
36
|
|
|
53
37
|
```typescript
|
|
@@ -153,13 +137,13 @@ pnpm add -D vitest
|
|
|
153
137
|
|
|
154
138
|
Optional peer dependencies:
|
|
155
139
|
|
|
156
|
-
| Package
|
|
157
|
-
|
|
|
158
|
-
| `@vitest/browser-playwright` | Component tests (Playwright browser provider for Vitest)
|
|
159
|
-
| `playwright`
|
|
160
|
-
| `vitest-browser-vue`
|
|
161
|
-
| `@vitest/coverage-v8`
|
|
162
|
-
| `@vitest/coverage-istanbul`
|
|
140
|
+
| Package | When to install |
|
|
141
|
+
| ---------------------------- | ------------------------------------------------------------ |
|
|
142
|
+
| `@vitest/browser-playwright` | Component tests (Playwright browser provider for Vitest) |
|
|
143
|
+
| `playwright` | Component tests or E2E tests (direct `import` in test files) |
|
|
144
|
+
| `vitest-browser-vue` | Component tests (`render` helper for Vue components) |
|
|
145
|
+
| `@vitest/coverage-v8` | Coverage with `--coverage` (V8 provider) |
|
|
146
|
+
| `@vitest/coverage-istanbul` | Coverage with `--coverage` (Istanbul provider) |
|
|
163
147
|
|
|
164
148
|
- `@bonsae/nrg/test/server/unit` — server-side unit tests
|
|
165
149
|
- `@bonsae/nrg/test/client/unit` — client-side unit tests (TypeScript logic)
|
|
@@ -195,11 +179,14 @@ Test client-side TypeScript logic (validation, utilities) with mocked `RED` and
|
|
|
195
179
|
import { defineConfig, mergeConfig } from "vitest/config";
|
|
196
180
|
import { defaultConfig } from "@bonsae/nrg/test/client/unit/config";
|
|
197
181
|
|
|
198
|
-
export default mergeConfig(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
182
|
+
export default mergeConfig(
|
|
183
|
+
defaultConfig,
|
|
184
|
+
defineConfig({
|
|
185
|
+
test: {
|
|
186
|
+
include: ["tests/client/unit/**/*.test.ts"],
|
|
187
|
+
},
|
|
188
|
+
}),
|
|
189
|
+
);
|
|
203
190
|
```
|
|
204
191
|
|
|
205
192
|
```typescript
|
|
@@ -223,11 +210,14 @@ Test your Vue editor components with mocked Node-RED globals. Components that us
|
|
|
223
210
|
import { defineConfig, mergeConfig } from "vitest/config";
|
|
224
211
|
import { defaultConfig } from "@bonsae/nrg/test/client/component/config";
|
|
225
212
|
|
|
226
|
-
export default mergeConfig(
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
213
|
+
export default mergeConfig(
|
|
214
|
+
defaultConfig,
|
|
215
|
+
defineConfig({
|
|
216
|
+
test: {
|
|
217
|
+
include: ["tests/client/component/**/*.test.ts"],
|
|
218
|
+
},
|
|
219
|
+
}),
|
|
220
|
+
);
|
|
231
221
|
```
|
|
232
222
|
|
|
233
223
|
```typescript
|
|
@@ -239,7 +229,10 @@ import MyForm from "../src/client/components/my-form.vue";
|
|
|
239
229
|
|
|
240
230
|
describe("MyForm", () => {
|
|
241
231
|
test("renders fields from injected node", async () => {
|
|
242
|
-
const { provide } = createNode({
|
|
232
|
+
const { provide } = createNode({
|
|
233
|
+
name: "test",
|
|
234
|
+
url: "https://example.com",
|
|
235
|
+
});
|
|
243
236
|
const screen = render(MyForm, {
|
|
244
237
|
global: { provide },
|
|
245
238
|
});
|
package/package.json
CHANGED
package/server/index.cjs
CHANGED
|
@@ -280,6 +280,8 @@ var Node = class _Node {
|
|
|
280
280
|
throw error;
|
|
281
281
|
}
|
|
282
282
|
);
|
|
283
|
+
createdPromise.catch(() => {
|
|
284
|
+
});
|
|
283
285
|
node[WIRE_HANDLERS](this, createdPromise);
|
|
284
286
|
},
|
|
285
287
|
{
|
|
@@ -288,7 +290,14 @@ var Node = class _Node {
|
|
|
288
290
|
}
|
|
289
291
|
);
|
|
290
292
|
NodeClass.validateSettings(RED);
|
|
291
|
-
|
|
293
|
+
try {
|
|
294
|
+
await Promise.resolve(NodeClass.registered?.(RED));
|
|
295
|
+
} catch (error) {
|
|
296
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
297
|
+
RED.log.error(
|
|
298
|
+
`Error during registered hook for ${NodeClass.type}: ${message}`
|
|
299
|
+
);
|
|
300
|
+
}
|
|
292
301
|
}
|
|
293
302
|
RED;
|
|
294
303
|
node;
|