@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 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). `npm 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). `npm run dev:full` runs it.
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
- npm install
494
+ # Install dependencies, from the repository root
495
+ pnpm install
493
496
 
494
497
  # Generate type stubs
495
- npm run dev:prepare
498
+ pnpm run dev:prepare
496
499
 
497
500
  # Develop with the playground
498
- npm run dev
501
+ pnpm run dev
499
502
 
500
503
  # Build the playground
501
- npm run dev:build
504
+ pnpm run dev:build
502
505
 
503
506
  # Run ESLint
504
- npm run lint
507
+ pnpm run lint
505
508
 
506
509
  # Run Vitest
507
- npm run test
508
- npm run test:watch
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
- rush update
520
- rush build
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
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@stonecrop/nuxt",
3
3
  "configKey": "stonecrop",
4
- "version": "0.31.0",
4
+ "version": "0.32.0",
5
5
  "builder": {
6
- "@nuxt/module-builder": "1.0.2",
6
+ "@nuxt/module-builder": "1.0.3",
7
7
  "unbuild": "unknown"
8
8
  }
9
9
  }
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.filteredRows" :key="String(row.__key)" :row-index="row.originalIndex" :store="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) ? "introspected" : "manual" }}
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((i) => i.severity === 'error')" :key="`err-${idx}`">
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
- <AFieldset label="Workflow" :collapsible="true">
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 ? "Creating\u2026" : "+ New DocType" }}
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.31.0",
3
+ "version": "0.32.0",
4
4
  "description": "Nuxt module for Stonecrop",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/agritheory/stonecrop",
8
- "directory": "nuxt"
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
- "type": "module",
16
- "exports": {
17
- ".": {
18
- "types": "./dist/types.d.mts",
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/atable": "0.31.0",
49
- "@stonecrop/aform": "0.31.0",
50
- "@stonecrop/code-editor": "0.31.0",
51
- "@stonecrop/casl-middleware": "0.31.0",
52
- "@stonecrop/desktop": "0.31.0",
53
- "@stonecrop/graphql-client": "0.31.0",
54
- "@stonecrop/node-editor": "0.31.0",
55
- "@stonecrop/nuxt-grafserv": "0.31.0",
56
- "@stonecrop/graphql-middleware": "0.31.0",
57
- "@stonecrop/schema": "0.31.0",
58
- "@stonecrop/themes": "0.31.0",
59
- "@stonecrop/stonecrop": "0.31.0"
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": "^7.3.2",
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
- "_phase:build": "rushx dev:prepare && nuxt-module-build build",
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": "rushx dev:prepare:documentation && nuxi dev documentation --host",
100
- "dev:full": "rushx dev:prepare:full && nuxi dev fullstack --host",
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": "rushx dev:prepare && nuxt-module-build build",
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,