@stonecrop/nuxt 0.31.0 → 0.32.0
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 +15 -12
- package/dist/module.json +2 -2
- package/dist/module.mjs +8 -2
- package/dist/runtime/app/components/DocBuilderActionsPanel.d.vue.ts +15 -57
- package/dist/runtime/app/components/DocBuilderActionsPanel.vue +4 -1
- package/dist/runtime/app/components/DocBuilderActionsPanel.vue.d.ts +15 -57
- package/dist/runtime/app/components/DocBuilderFieldsPanel.d.vue.ts +15 -9
- package/dist/runtime/app/components/DocBuilderFieldsPanel.vue +2 -3
- package/dist/runtime/app/components/DocBuilderFieldsPanel.vue.d.ts +15 -9
- package/dist/runtime/app/layouts/StonecropHome.d.vue.ts +1 -1
- package/dist/runtime/app/layouts/StonecropHome.vue.d.ts +1 -1
- package/dist/runtime/app/pages/DocBuilderDetail.d.vue.ts +1 -1
- package/dist/runtime/app/pages/DocBuilderDetail.vue +6 -4
- package/dist/runtime/app/pages/DocBuilderDetail.vue.d.ts +1 -1
- package/dist/runtime/app/pages/DocBuilderIndex.d.vue.ts +1 -1
- package/dist/runtime/app/pages/DocBuilderIndex.vue +2 -4
- package/dist/runtime/app/pages/DocBuilderIndex.vue.d.ts +1 -1
- package/package.json +51 -38
- package/src/cli/installers/frontend.ts +0 -1
package/README.md
CHANGED
|
@@ -481,31 +481,34 @@ const taskMachine = createMachine({
|
|
|
481
481
|
|
|
482
482
|
## Examples
|
|
483
483
|
|
|
484
|
-
- **[playground](./playground)** — the default example: doctypes introspected from a live public GraphQL API with the `stonecrop-schema generate` CLI, browsed through the Desktop shell, and refined in the built-in DocBuilder (provenance-locked introspected fields, plus hand-authored workflow fixtures for the graph editor). `
|
|
485
|
-
- **[fullstack](./fullstack)** — the middleware core on the app's own GraphQL server (grafserv + guarded workflow transitions over in-memory storage, no database). `
|
|
484
|
+
- **[playground](./playground)** — the default example: doctypes introspected from a live public GraphQL API with the `stonecrop-schema generate` CLI, browsed through the Desktop shell, and refined in the built-in DocBuilder (provenance-locked introspected fields, plus hand-authored workflow fixtures for the graph editor). `pnpm run dev` runs it.
|
|
485
|
+
- **[fullstack](./fullstack)** — the middleware core on the app's own GraphQL server (grafserv + guarded workflow transitions over in-memory storage, no database). `pnpm run dev:full` runs it.
|
|
486
486
|
|
|
487
487
|
|
|
488
488
|
## Contribution
|
|
489
489
|
|
|
490
|
+
This package is a workspace member, so its dependencies resolve only under pnpm. Run these from the
|
|
491
|
+
repository root, or from `nuxt/` for the scripts below.
|
|
492
|
+
|
|
490
493
|
```bash
|
|
491
|
-
# Install dependencies
|
|
492
|
-
|
|
494
|
+
# Install dependencies, from the repository root
|
|
495
|
+
pnpm install
|
|
493
496
|
|
|
494
497
|
# Generate type stubs
|
|
495
|
-
|
|
498
|
+
pnpm run dev:prepare
|
|
496
499
|
|
|
497
500
|
# Develop with the playground
|
|
498
|
-
|
|
501
|
+
pnpm run dev
|
|
499
502
|
|
|
500
503
|
# Build the playground
|
|
501
|
-
|
|
504
|
+
pnpm run dev:build
|
|
502
505
|
|
|
503
506
|
# Run ESLint
|
|
504
|
-
|
|
507
|
+
pnpm run lint
|
|
505
508
|
|
|
506
509
|
# Run Vitest
|
|
507
|
-
|
|
508
|
-
|
|
510
|
+
pnpm run test
|
|
511
|
+
pnpm run test:watch
|
|
509
512
|
```
|
|
510
513
|
|
|
511
514
|
### Testing the CLI Locally
|
|
@@ -516,8 +519,8 @@ To test the `npx @stonecrop/nuxt init` command from another directory outside th
|
|
|
516
519
|
|
|
517
520
|
```bash
|
|
518
521
|
cd /path/to/stonecrop
|
|
519
|
-
|
|
520
|
-
|
|
522
|
+
pnpm install
|
|
523
|
+
pnpm run build
|
|
521
524
|
```
|
|
522
525
|
|
|
523
526
|
**2. Create a test Nuxt project (in a separate directory):**
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -35,6 +35,7 @@ const STONECROP_PACKAGES = [
|
|
|
35
35
|
"@stonecrop/themes"
|
|
36
36
|
];
|
|
37
37
|
const STONECROP_TOKENS = "@stonecrop/themes/default.css";
|
|
38
|
+
const STONECROP_SINGLETONS = ["pinia"];
|
|
38
39
|
const module$1 = defineNuxtModule({
|
|
39
40
|
meta: {
|
|
40
41
|
name: "@stonecrop/nuxt",
|
|
@@ -55,6 +56,13 @@ const module$1 = defineNuxtModule({
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
logger.log("Added Stonecrop packages to build.transpile for SSR CSS handling");
|
|
59
|
+
nuxt.options.vite.resolve = nuxt.options.vite.resolve || {};
|
|
60
|
+
nuxt.options.vite.resolve.dedupe = nuxt.options.vite.resolve.dedupe || [];
|
|
61
|
+
for (const dep of STONECROP_SINGLETONS) {
|
|
62
|
+
if (!nuxt.options.vite.resolve.dedupe.includes(dep)) {
|
|
63
|
+
nuxt.options.vite.resolve.dedupe.push(dep);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
58
66
|
nuxt.options.imports = nuxt.options.imports || {};
|
|
59
67
|
nuxt.options.imports.transform = nuxt.options.imports.transform || {};
|
|
60
68
|
nuxt.options.imports.transform.exclude = nuxt.options.imports.transform.exclude || [];
|
|
@@ -192,8 +200,6 @@ const module$1 = defineNuxtModule({
|
|
|
192
200
|
logger.log("DocBuilder enabled, adding routes and handlers");
|
|
193
201
|
nuxt.options.css.push("@vue-flow/core/dist/style.css");
|
|
194
202
|
nuxt.options.css.push("@vue-flow/core/dist/theme-default.css");
|
|
195
|
-
nuxt.options.css.push("@stonecrop/node-editor/styles");
|
|
196
|
-
nuxt.options.css.push("@stonecrop/desktop/styles");
|
|
197
203
|
nuxt.options.vite.optimizeDeps = nuxt.options.vite.optimizeDeps || {};
|
|
198
204
|
nuxt.options.vite.optimizeDeps.include = nuxt.options.vite.optimizeDeps.include || [];
|
|
199
205
|
for (const dep of ["@stonecrop/code-editor", "@stonecrop/schema"]) {
|
|
@@ -1,59 +1,17 @@
|
|
|
1
|
-
import type { WorkflowMeta } from '@stonecrop/schema';
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
modelValue: WorkflowMeta | undefined;
|
|
4
|
-
};
|
|
5
|
-
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
|
-
"update:modelValue": (value: {
|
|
7
|
-
states?: string[] | undefined;
|
|
8
|
-
actions?: Record<string, {
|
|
9
|
-
label: string;
|
|
10
|
-
requiredFields?: string[] | undefined;
|
|
11
|
-
allowedStates?: string[] | undefined;
|
|
12
|
-
nextState?: string | undefined;
|
|
13
|
-
stateless?: boolean | undefined;
|
|
14
|
-
selfTransition?: boolean | undefined;
|
|
15
|
-
clientHandler?: string | undefined;
|
|
16
|
-
}> | undefined;
|
|
17
|
-
triggers?: Record<string, {
|
|
18
|
-
on: string[];
|
|
19
|
-
clientHandler: string;
|
|
20
|
-
label?: string | undefined;
|
|
21
|
-
}> | undefined;
|
|
22
|
-
layout?: Record<string, {
|
|
23
|
-
position?: {
|
|
24
|
-
x: number;
|
|
25
|
-
y: number;
|
|
26
|
-
} | undefined;
|
|
27
|
-
targetPosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
28
|
-
sourcePosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
29
|
-
}> | undefined;
|
|
30
|
-
}) => any;
|
|
31
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
32
|
-
"onUpdate:modelValue"?: ((value: {
|
|
33
|
-
states?: string[] | undefined;
|
|
34
|
-
actions?: Record<string, {
|
|
35
|
-
label: string;
|
|
36
|
-
requiredFields?: string[] | undefined;
|
|
37
|
-
allowedStates?: string[] | undefined;
|
|
38
|
-
nextState?: string | undefined;
|
|
39
|
-
stateless?: boolean | undefined;
|
|
40
|
-
selfTransition?: boolean | undefined;
|
|
41
|
-
clientHandler?: string | undefined;
|
|
42
|
-
}> | undefined;
|
|
43
|
-
triggers?: Record<string, {
|
|
44
|
-
on: string[];
|
|
45
|
-
clientHandler: string;
|
|
46
|
-
label?: string | undefined;
|
|
47
|
-
}> | undefined;
|
|
48
|
-
layout?: Record<string, {
|
|
49
|
-
position?: {
|
|
50
|
-
x: number;
|
|
51
|
-
y: number;
|
|
52
|
-
} | undefined;
|
|
53
|
-
targetPosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
54
|
-
sourcePosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
55
|
-
}> | undefined;
|
|
56
|
-
}) => any) | undefined;
|
|
57
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
58
1
|
declare const _default: typeof __VLS_export;
|
|
59
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
modelValue: {
|
|
5
|
+
type: null;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
"update:modelValue": (...args: any[]) => void;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
11
|
+
modelValue: {
|
|
12
|
+
type: null;
|
|
13
|
+
required: true;
|
|
14
|
+
};
|
|
15
|
+
}>> & Readonly<{
|
|
16
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
— ATable never calls setCellData/handleRowAction, so it never mutates the projection it renders.
|
|
8
8
|
-->
|
|
9
9
|
<template #body="{ data: store }">
|
|
10
|
-
<ARow v-for="row in store
|
|
10
|
+
<ARow v-for="row in actionRows(store)" :key="String(row.__key)" :row-index="row.originalIndex" :store="store">
|
|
11
11
|
<template #default>
|
|
12
12
|
<td>
|
|
13
13
|
<!-- A Transition is named on its edge in the graph (single source of truth), so its
|
|
@@ -104,6 +104,9 @@ import {
|
|
|
104
104
|
writeActionField,
|
|
105
105
|
writeTriggerField
|
|
106
106
|
} from "./docbuilderActions";
|
|
107
|
+
function actionRows(store) {
|
|
108
|
+
return store.filteredRows;
|
|
109
|
+
}
|
|
107
110
|
const TRANSITION_NAME_HINT = "Rename this transition on its edge in the workflow graph above";
|
|
108
111
|
const INJECTED_API_STUBS = `
|
|
109
112
|
declare const router: {
|
|
@@ -1,59 +1,17 @@
|
|
|
1
|
-
import type { WorkflowMeta } from '@stonecrop/schema';
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
modelValue: WorkflowMeta | undefined;
|
|
4
|
-
};
|
|
5
|
-
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
|
-
"update:modelValue": (value: {
|
|
7
|
-
states?: string[] | undefined;
|
|
8
|
-
actions?: Record<string, {
|
|
9
|
-
label: string;
|
|
10
|
-
requiredFields?: string[] | undefined;
|
|
11
|
-
allowedStates?: string[] | undefined;
|
|
12
|
-
nextState?: string | undefined;
|
|
13
|
-
stateless?: boolean | undefined;
|
|
14
|
-
selfTransition?: boolean | undefined;
|
|
15
|
-
clientHandler?: string | undefined;
|
|
16
|
-
}> | undefined;
|
|
17
|
-
triggers?: Record<string, {
|
|
18
|
-
on: string[];
|
|
19
|
-
clientHandler: string;
|
|
20
|
-
label?: string | undefined;
|
|
21
|
-
}> | undefined;
|
|
22
|
-
layout?: Record<string, {
|
|
23
|
-
position?: {
|
|
24
|
-
x: number;
|
|
25
|
-
y: number;
|
|
26
|
-
} | undefined;
|
|
27
|
-
targetPosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
28
|
-
sourcePosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
29
|
-
}> | undefined;
|
|
30
|
-
}) => any;
|
|
31
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
32
|
-
"onUpdate:modelValue"?: ((value: {
|
|
33
|
-
states?: string[] | undefined;
|
|
34
|
-
actions?: Record<string, {
|
|
35
|
-
label: string;
|
|
36
|
-
requiredFields?: string[] | undefined;
|
|
37
|
-
allowedStates?: string[] | undefined;
|
|
38
|
-
nextState?: string | undefined;
|
|
39
|
-
stateless?: boolean | undefined;
|
|
40
|
-
selfTransition?: boolean | undefined;
|
|
41
|
-
clientHandler?: string | undefined;
|
|
42
|
-
}> | undefined;
|
|
43
|
-
triggers?: Record<string, {
|
|
44
|
-
on: string[];
|
|
45
|
-
clientHandler: string;
|
|
46
|
-
label?: string | undefined;
|
|
47
|
-
}> | undefined;
|
|
48
|
-
layout?: Record<string, {
|
|
49
|
-
position?: {
|
|
50
|
-
x: number;
|
|
51
|
-
y: number;
|
|
52
|
-
} | undefined;
|
|
53
|
-
targetPosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
54
|
-
sourcePosition?: "left" | "right" | "top" | "bottom" | undefined;
|
|
55
|
-
}> | undefined;
|
|
56
|
-
}) => any) | undefined;
|
|
57
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
58
1
|
declare const _default: typeof __VLS_export;
|
|
59
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
modelValue: {
|
|
5
|
+
type: null;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
"update:modelValue": (...args: any[]) => void;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
11
|
+
modelValue: {
|
|
12
|
+
type: null;
|
|
13
|
+
required: true;
|
|
14
|
+
};
|
|
15
|
+
}>> & Readonly<{
|
|
16
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import { type Field } from './docbuilderFields.js';
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
modelValue: Field[];
|
|
4
|
-
};
|
|
5
|
-
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
|
-
"update:modelValue": (value: Field[]) => any;
|
|
7
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
8
|
-
"onUpdate:modelValue"?: ((value: Field[]) => any) | undefined;
|
|
9
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
1
|
declare const _default: typeof __VLS_export;
|
|
11
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
modelValue: {
|
|
5
|
+
type: ArrayConstructor;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
"update:modelValue": (...args: any[]) => void;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
11
|
+
modelValue: {
|
|
12
|
+
type: ArrayConstructor;
|
|
13
|
+
required: true;
|
|
14
|
+
};
|
|
15
|
+
}>> & Readonly<{
|
|
16
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
</td>
|
|
60
60
|
<td>
|
|
61
61
|
<span class="badge" :class="isLocked(row.__field) ? 'badge-introspected' : 'badge-manual'">
|
|
62
|
-
{{ isLocked(row.__field) ?
|
|
62
|
+
{{ isLocked(row.__field) ? 'introspected' : 'manual' }}
|
|
63
63
|
</span>
|
|
64
64
|
</td>
|
|
65
65
|
</template>
|
|
@@ -250,8 +250,7 @@ function updateJson(realIndex, key, raw) {
|
|
|
250
250
|
}
|
|
251
251
|
function validationMessage(field) {
|
|
252
252
|
const v = field.validation;
|
|
253
|
-
if (v && typeof v === "object" && "errorMessage" in v)
|
|
254
|
-
return String(v.errorMessage ?? "");
|
|
253
|
+
if (v && typeof v === "object" && "errorMessage" in v) return String(v.errorMessage ?? "");
|
|
255
254
|
return "";
|
|
256
255
|
}
|
|
257
256
|
function updateValidation(realIndex, message) {
|
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import { type Field } from './docbuilderFields.js';
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
modelValue: Field[];
|
|
4
|
-
};
|
|
5
|
-
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
|
-
"update:modelValue": (value: Field[]) => any;
|
|
7
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
8
|
-
"onUpdate:modelValue"?: ((value: Field[]) => any) | undefined;
|
|
9
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
1
|
declare const _default: typeof __VLS_export;
|
|
11
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
modelValue: {
|
|
5
|
+
type: ArrayConstructor;
|
|
6
|
+
required: true;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
"update:modelValue": (...args: any[]) => void;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
11
|
+
modelValue: {
|
|
12
|
+
type: ArrayConstructor;
|
|
13
|
+
required: true;
|
|
14
|
+
};
|
|
15
|
+
}>> & Readonly<{
|
|
16
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
1
|
declare const _default: typeof __VLS_export;
|
|
3
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
1
|
declare const _default: typeof __VLS_export;
|
|
3
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
1
|
declare const _default: typeof __VLS_export;
|
|
3
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<div v-if="errorCount > 0" class="validation-errors">
|
|
9
9
|
<strong>⚠️ {{ errorCount }} Error(s) — Cannot Save</strong>
|
|
10
10
|
<ul>
|
|
11
|
-
<li v-for="(issue, idx) in validationIssues.filter(
|
|
11
|
+
<li v-for="(issue, idx) in validationIssues.filter(i => i.severity === 'error')" :key="`err-${idx}`">
|
|
12
12
|
<code v-if="issue.fieldname">{{ issue.fieldname }}:</code> {{ issue.message }}
|
|
13
13
|
</li>
|
|
14
14
|
</ul>
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
<!-- `schema` is empty on purpose: AFieldset renders an AForm from it only as slot fallback,
|
|
23
|
+
and each of these fieldsets fills the slot with its own panel. -->
|
|
24
|
+
<AFieldset label="Workflow" :schema="[]" :collapsible="true">
|
|
23
25
|
<div class="builder-workflow">
|
|
24
26
|
<StateEditor
|
|
25
27
|
v-if="workflowConfig && workflowConfig.states && workflowConfig.states.length > 0"
|
|
@@ -38,11 +40,11 @@
|
|
|
38
40
|
</div>
|
|
39
41
|
</AFieldset>
|
|
40
42
|
|
|
41
|
-
<AFieldset label="Actions" :collapsible="true">
|
|
43
|
+
<AFieldset label="Actions" :schema="[]" :collapsible="true">
|
|
42
44
|
<DocBuilderActionsPanel v-model="workflowConfig" />
|
|
43
45
|
</AFieldset>
|
|
44
46
|
|
|
45
|
-
<AFieldset label="Schema" :collapsible="true">
|
|
47
|
+
<AFieldset label="Schema" :schema="[]" :collapsible="true">
|
|
46
48
|
<DocBuilderFieldsPanel v-model="fields" />
|
|
47
49
|
</AFieldset>
|
|
48
50
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
1
|
declare const _default: typeof __VLS_export;
|
|
3
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
1
|
declare const _default: typeof __VLS_export;
|
|
3
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
:disabled="creating"
|
|
14
14
|
@keyup.enter="createDoctype" />
|
|
15
15
|
<button type="button" class="btn-create" :disabled="creating || !newName.trim()" @click="createDoctype">
|
|
16
|
-
{{ creating ?
|
|
16
|
+
{{ creating ? 'Creating\u2026' : '+ New DocType' }}
|
|
17
17
|
</button>
|
|
18
18
|
</div>
|
|
19
19
|
<p v-if="createError" class="create-error">{{ createError }}</p>
|
|
@@ -92,9 +92,7 @@ async function createDoctype() {
|
|
|
92
92
|
creating.value = false;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
const indexActions = computed(() => [
|
|
96
|
-
{ type: "button", label: "Home", action: () => void router.push("/") }
|
|
97
|
-
]);
|
|
95
|
+
const indexActions = computed(() => [{ type: "button", label: "Home", action: () => void router.push("/") }]);
|
|
98
96
|
function handleAction(_label, action) {
|
|
99
97
|
if (action) void action();
|
|
100
98
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
1
|
declare const _default: typeof __VLS_export;
|
|
3
2
|
export default _default;
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
package/package.json
CHANGED
|
@@ -1,31 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stonecrop/nuxt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "Nuxt module for Stonecrop",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
5
|
+
"keywords": [
|
|
6
|
+
"nuxt",
|
|
7
|
+
"nuxt-module",
|
|
8
|
+
"stonecrop",
|
|
9
|
+
"vue"
|
|
10
|
+
],
|
|
11
|
+
"homepage": "https://github.com/agritheory/stonecrop#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/agritheory/stonecrop/issues"
|
|
9
14
|
},
|
|
10
15
|
"license": "MIT",
|
|
11
16
|
"author": {
|
|
12
17
|
"name": "Tyler Matteson",
|
|
13
18
|
"email": "tyler@agritheory.com"
|
|
14
19
|
},
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
"import": "./dist/module.mjs"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"main": "./dist/module.mjs",
|
|
23
|
-
"typesVersions": {
|
|
24
|
-
"*": {
|
|
25
|
-
".": [
|
|
26
|
-
"./dist/types.d.mts"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/agritheory/stonecrop",
|
|
23
|
+
"directory": "nuxt"
|
|
29
24
|
},
|
|
30
25
|
"bin": {
|
|
31
26
|
"stonecrop-nuxt": "./bin/init.mjs"
|
|
@@ -36,6 +31,26 @@
|
|
|
36
31
|
"templates",
|
|
37
32
|
"src/cli"
|
|
38
33
|
],
|
|
34
|
+
"type": "module",
|
|
35
|
+
"sideEffects": [
|
|
36
|
+
"**/*.vue",
|
|
37
|
+
"**/*.css"
|
|
38
|
+
],
|
|
39
|
+
"main": "./dist/module.mjs",
|
|
40
|
+
"typesVersions": {
|
|
41
|
+
"*": {
|
|
42
|
+
".": [
|
|
43
|
+
"./dist/types.d.mts"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"exports": {
|
|
48
|
+
".": {
|
|
49
|
+
"types": "./dist/types.d.mts",
|
|
50
|
+
"import": "./dist/module.mjs"
|
|
51
|
+
},
|
|
52
|
+
"./package.json": "./package.json"
|
|
53
|
+
},
|
|
39
54
|
"dependencies": {
|
|
40
55
|
"@nuxt/kit": "^4.4.4",
|
|
41
56
|
"citty": "^0.2.2",
|
|
@@ -45,18 +60,18 @@
|
|
|
45
60
|
"pathe": "^2.0.3",
|
|
46
61
|
"pinia": "^3.0.4",
|
|
47
62
|
"prompts": "^2.4.2",
|
|
48
|
-
"@stonecrop/
|
|
49
|
-
"@stonecrop/
|
|
50
|
-
"@stonecrop/
|
|
51
|
-
"@stonecrop/
|
|
52
|
-
"@stonecrop/desktop": "0.
|
|
53
|
-
"@stonecrop/
|
|
54
|
-
"@stonecrop/
|
|
55
|
-
"@stonecrop/nuxt-grafserv": "0.
|
|
56
|
-
"@stonecrop/
|
|
57
|
-
"@stonecrop/
|
|
58
|
-
"@stonecrop/
|
|
59
|
-
"@stonecrop/
|
|
63
|
+
"@stonecrop/aform": "0.32.0",
|
|
64
|
+
"@stonecrop/casl-middleware": "0.32.0",
|
|
65
|
+
"@stonecrop/atable": "0.32.0",
|
|
66
|
+
"@stonecrop/code-editor": "0.32.0",
|
|
67
|
+
"@stonecrop/desktop": "0.32.0",
|
|
68
|
+
"@stonecrop/node-editor": "0.32.0",
|
|
69
|
+
"@stonecrop/graphql-middleware": "0.32.0",
|
|
70
|
+
"@stonecrop/nuxt-grafserv": "0.32.0",
|
|
71
|
+
"@stonecrop/schema": "0.32.0",
|
|
72
|
+
"@stonecrop/graphql-client": "0.32.0",
|
|
73
|
+
"@stonecrop/stonecrop": "0.32.0",
|
|
74
|
+
"@stonecrop/themes": "0.32.0"
|
|
60
75
|
},
|
|
61
76
|
"devDependencies": {
|
|
62
77
|
"@eslint/js": "^10.0.1",
|
|
@@ -82,7 +97,7 @@
|
|
|
82
97
|
"postgraphile": "^5.0.3",
|
|
83
98
|
"typescript": "^6.0.3",
|
|
84
99
|
"typescript-eslint": "^8.62.1",
|
|
85
|
-
"vite": "^
|
|
100
|
+
"vite": "^8.2.2",
|
|
86
101
|
"vitest": "^4.1.5",
|
|
87
102
|
"vue": "^3.5.33",
|
|
88
103
|
"vue-router": "^5.0.6",
|
|
@@ -92,19 +107,17 @@
|
|
|
92
107
|
"node": ">=24.0.0"
|
|
93
108
|
},
|
|
94
109
|
"scripts": {
|
|
95
|
-
"
|
|
96
|
-
"build": "rushx dev:prepare && nuxt-module-build build",
|
|
97
|
-
"dev": "rushx dev:prepare && nuxi dev playground --host",
|
|
110
|
+
"dev": "node --run dev:prepare && nuxi dev playground --host",
|
|
98
111
|
"dev:build": "nuxi build playground",
|
|
99
|
-
"dev:documentation": "
|
|
100
|
-
"dev:full": "
|
|
112
|
+
"dev:documentation": "node --run dev:prepare:documentation && nuxi dev documentation --host",
|
|
113
|
+
"dev:full": "node --run dev:prepare:full && nuxi dev fullstack --host",
|
|
101
114
|
"dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && sh scripts/nuxt-apps.sh prepare",
|
|
102
115
|
"dev:prepare:documentation": "nuxi prepare documentation",
|
|
103
116
|
"dev:prepare:full": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare fullstack",
|
|
104
117
|
"docs": "echo 'Nuxt modules use custom build system - skipping API docs generation'",
|
|
105
118
|
"generate:documentation": "nuxi generate documentation",
|
|
106
119
|
"lint": "eslint .",
|
|
107
|
-
"prepublish": "
|
|
120
|
+
"prepublish": "node --run dev:prepare && nuxt-module-build build",
|
|
108
121
|
"test": "vitest run",
|
|
109
122
|
"test:coverage": "vitest run --coverage.enabled --coverage.provider=istanbul",
|
|
110
123
|
"test:types": "vue-tsc --noEmit -p tsconfig.runtime.json && vue-tsc --noEmit -p tsconfig.templates-app.json && vue-tsc --noEmit -p tsconfig.templates-server.json && sh scripts/nuxt-apps.sh typecheck",
|
|
@@ -67,7 +67,6 @@ export async function installFrontend(options: FrontendInstallerOptions): Promis
|
|
|
67
67
|
nitroConfig: {
|
|
68
68
|
externalsInline: [...STONECROP_PACKAGES],
|
|
69
69
|
},
|
|
70
|
-
css: ['@stonecrop/desktop/styles'],
|
|
71
70
|
})
|
|
72
71
|
|
|
73
72
|
// Scaffold app/composables/useDoctypes.ts, app/composables/useRouteAdapter.ts,
|