Ver Fonte

feat(demo): save global variable (#794)

* feat: global variable

* fix: comment

* fix: @/ in demo

* feat: upgrade rush sdk
Yiwei Mao há 4 meses atrás
pai
commit
edcbe63431

+ 11 - 3
apps/demo-free-layout/src/hooks/use-editor-props.tsx

@@ -13,6 +13,7 @@ import { createFreeNodePanelPlugin } from '@flowgram.ai/free-node-panel-plugin';
 import { createFreeLinesPlugin } from '@flowgram.ai/free-lines-plugin';
 import { createFreeLinesPlugin } from '@flowgram.ai/free-lines-plugin';
 import {
 import {
   FlowNodeBaseType,
   FlowNodeBaseType,
+  FreeLayoutPluginContext,
   FreeLayoutProps,
   FreeLayoutProps,
   WorkflowNodeLinesData,
   WorkflowNodeLinesData,
 } from '@flowgram.ai/free-layout-editor';
 } from '@flowgram.ai/free-layout-editor';
@@ -23,6 +24,7 @@ import { onDragLineEnd } from '../utils';
 import { FlowNodeRegistry, FlowDocumentJSON } from '../typings';
 import { FlowNodeRegistry, FlowDocumentJSON } from '../typings';
 import { shortcuts } from '../shortcuts';
 import { shortcuts } from '../shortcuts';
 import { CustomService } from '../services';
 import { CustomService } from '../services';
+import { GetGlobalVariableSchema } from '../plugins/variable-panel-plugin';
 import { WorkflowRuntimeService } from '../plugins/runtime-plugin/runtime-service';
 import { WorkflowRuntimeService } from '../plugins/runtime-plugin/runtime-service';
 import {
 import {
   createRuntimePlugin,
   createRuntimePlugin,
@@ -239,9 +241,13 @@ export function useEditorProps(
       /**
       /**
        * Content change
        * Content change
        */
        */
-      onContentChange: debounce((ctx, event) => {
+      onContentChange: debounce((ctx: FreeLayoutPluginContext, event) => {
         if (ctx.document.disposed) return;
         if (ctx.document.disposed) return;
-        console.log('Auto Save: ', event, ctx.document.toJSON());
+
+        console.log('Auto Save: ', event, {
+          ...ctx.document.toJSON(),
+          globalVariable: ctx.get<GetGlobalVariableSchema>(GetGlobalVariableSchema)(),
+        });
       }, 1000),
       }, 1000),
       /**
       /**
        * Running line
        * Running line
@@ -370,7 +376,9 @@ export function useEditorProps(
          * Variable panel plugin
          * Variable panel plugin
          * 变量面板插件
          * 变量面板插件
          */
          */
-        createVariablePanelPlugin({}),
+        createVariablePanelPlugin({
+          initialData: initialData.globalVariable,
+        }),
       ],
       ],
     }),
     }),
     []
     []

+ 8 - 1
apps/demo-free-layout/src/plugins/runtime-plugin/runtime-service/index.ts

@@ -23,6 +23,7 @@ import {
 } from '@flowgram.ai/free-layout-editor';
 } from '@flowgram.ai/free-layout-editor';
 
 
 import { WorkflowRuntimeClient } from '../client';
 import { WorkflowRuntimeClient } from '../client';
+import { GetGlobalVariableSchema } from '../../variable-panel-plugin';
 import { WorkflowNodeType } from '../../../nodes';
 import { WorkflowNodeType } from '../../../nodes';
 
 
 const SYNC_TASK_REPORT_INTERVAL = 500;
 const SYNC_TASK_REPORT_INTERVAL = 500;
@@ -41,6 +42,8 @@ export class WorkflowRuntimeService {
 
 
   @inject(WorkflowRuntimeClient) runtimeClient: WorkflowRuntimeClient;
   @inject(WorkflowRuntimeClient) runtimeClient: WorkflowRuntimeClient;
 
 
+  @inject(GetGlobalVariableSchema) getGlobalVariableSchema: GetGlobalVariableSchema;
+
   private runningNodes: WorkflowNodeEntity[] = [];
   private runningNodes: WorkflowNodeEntity[] = [];
 
 
   private taskID?: string;
   private taskID?: string;
@@ -84,7 +87,11 @@ export class WorkflowRuntimeService {
       });
       });
       return;
       return;
     }
     }
-    const schema = this.document.toJSON();
+    const schema = {
+      ...this.document.toJSON(),
+      globalVariable: this.getGlobalVariableSchema(),
+    };
+
     const validateResult = await this.runtimeClient.TaskValidate({
     const validateResult = await this.runtimeClient.TaskValidate({
       schema: JSON.stringify(schema),
       schema: JSON.stringify(schema),
       inputs,
       inputs,

+ 1 - 1
apps/demo-free-layout/src/plugins/variable-panel-plugin/index.ts

@@ -3,4 +3,4 @@
  * SPDX-License-Identifier: MIT
  * SPDX-License-Identifier: MIT
  */
  */
 
 
-export { createVariablePanelPlugin } from './variable-panel-plugin';
+export { createVariablePanelPlugin, GetGlobalVariableSchema } from './variable-panel-plugin';

+ 38 - 9
apps/demo-free-layout/src/plugins/variable-panel-plugin/variable-panel-plugin.ts

@@ -3,8 +3,13 @@
  * SPDX-License-Identifier: MIT
  * SPDX-License-Identifier: MIT
  */
  */
 
 
-import { ASTFactory, definePluginCreator, GlobalScope } from '@flowgram.ai/free-layout-editor';
-import { JsonSchemaUtils } from '@flowgram.ai/form-materials';
+import {
+  ASTFactory,
+  definePluginCreator,
+  GlobalScope,
+  VariableDeclaration,
+} from '@flowgram.ai/free-layout-editor';
+import { IJsonSchema, JsonSchemaUtils } from '@flowgram.ai/form-materials';
 
 
 import iconVariable from '../../assets/icon-variable.png';
 import iconVariable from '../../assets/icon-variable.png';
 import { VariablePanelLayer } from './variable-panel-layer';
 import { VariablePanelLayer } from './variable-panel-layer';
@@ -19,22 +24,46 @@ const fetchMockVariableFromRemote = async () => {
   };
   };
 };
 };
 
 
-export const createVariablePanelPlugin = definePluginCreator({
-  onInit(ctx) {
+export type GetGlobalVariableSchema = () => IJsonSchema;
+export const GetGlobalVariableSchema = Symbol('GlobalVariableSchemaGetter');
+
+export const createVariablePanelPlugin = definePluginCreator<{ initialData?: IJsonSchema }>({
+  onBind({ bind }) {
+    bind(GetGlobalVariableSchema).toDynamicValue((ctx) => () => {
+      const variable = ctx.container.get(GlobalScope).getVar() as VariableDeclaration;
+      return JsonSchemaUtils.astToSchema(variable?.type);
+    });
+  },
+  onInit(ctx, opts) {
     ctx.playground.registerLayer(VariablePanelLayer);
     ctx.playground.registerLayer(VariablePanelLayer);
 
 
-    // Fetch Global Variable
-    fetchMockVariableFromRemote().then((v) => {
-      ctx.get(GlobalScope).setVar(
+    const globalScope = ctx.get(GlobalScope);
+
+    if (opts.initialData) {
+      globalScope.setVar(
         ASTFactory.createVariableDeclaration({
         ASTFactory.createVariableDeclaration({
           key: 'global',
           key: 'global',
           meta: {
           meta: {
             title: 'Global',
             title: 'Global',
             icon: iconVariable,
             icon: iconVariable,
           },
           },
-          type: JsonSchemaUtils.schemaToAST(v),
+          type: JsonSchemaUtils.schemaToAST(opts.initialData),
         })
         })
       );
       );
-    });
+    } else {
+      // You can also fetch global variable from remote
+      fetchMockVariableFromRemote().then((v) => {
+        globalScope.setVar(
+          ASTFactory.createVariableDeclaration({
+            key: 'global',
+            meta: {
+              title: 'Global',
+              icon: iconVariable,
+            },
+            type: JsonSchemaUtils.schemaToAST(v),
+          })
+        );
+      });
+    }
   },
   },
 });
 });

+ 8 - 0
apps/demo-free-layout/src/typings/node.ts

@@ -74,4 +74,12 @@ export interface FlowNodeRegistry extends FlowNodeRegistryDefault {
 export interface FlowDocumentJSON {
 export interface FlowDocumentJSON {
   nodes: FlowNodeJSON[];
   nodes: FlowNodeJSON[];
   edges: WorkflowEdgeJSON[];
   edges: WorkflowEdgeJSON[];
+  /**
+   * Global Variable Schema Definition
+   * 全局变量的 Schema 定义
+   *
+   * Warning: In real occasion, it's better to store the schema and value of these global variables in a reliable place, since the value of a variable might be leaked in saved schema.
+   * 注意:在真实场景下,全局变量的 Schema 定义和值都应该存储在更可靠的地方,因为全局变量的值可能会泄露在保存的 Schema 中。
+   */
+  globalVariable?: JsonSchema;
 }
 }

+ 1 - 1
common/autoinstallers/rush-commands/package.json

@@ -2,7 +2,7 @@
   "name": "rush-commands",
   "name": "rush-commands",
   "private": true,
   "private": true,
   "dependencies": {
   "dependencies": {
-    "@rushstack/rush-sdk": "5.100.2",
+    "@rushstack/rush-sdk": "^5.150.0",
     "concurrently": "^8.2.2"
     "concurrently": "^8.2.2"
   }
   }
 }
 }

+ 119 - 102
common/autoinstallers/rush-commands/pnpm-lock.yaml

@@ -6,8 +6,8 @@ settings:
 
 
 dependencies:
 dependencies:
   '@rushstack/rush-sdk':
   '@rushstack/rush-sdk':
-    specifier: 5.100.2
-    version: 5.100.2
+    specifier: ^5.150.0
+    version: 5.158.1
   concurrently:
   concurrently:
     specifier: ^8.2.2
     specifier: ^8.2.2
     version: 8.2.2
     version: 8.2.2
@@ -21,44 +21,113 @@ packages:
       regenerator-runtime: 0.14.1
       regenerator-runtime: 0.14.1
     dev: false
     dev: false
 
 
-  /@rushstack/node-core-library@3.59.6:
-    resolution: {integrity: sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==}
+  /@pnpm/lockfile.types@1.0.3:
+    resolution: {integrity: sha512-A7vUWktnhDkrIs+WmXm7AdffJVyVYJpQUEouya/DYhB+Y+tQ3BXjZ6CV0KybqLgI/8AZErgCJqFxA0GJH6QDjA==}
+    engines: {node: '>=18.12'}
+    dependencies:
+      '@pnpm/patching.types': 1.0.0
+      '@pnpm/types': 12.2.0
+    dev: false
+
+  /@pnpm/patching.types@1.0.0:
+    resolution: {integrity: sha512-juCdQCC1USqLcOhVPl1tYReoTO9YH4fTullMnFXXcmpsDM7Dkn3tzuOQKC3oPoJ2ozv+0EeWWMtMGqn2+IM3pQ==}
+    engines: {node: '>=18.12'}
+    dev: false
+
+  /@pnpm/types@12.2.0:
+    resolution: {integrity: sha512-5RtwWhX39j89/Tmyv2QSlpiNjErA357T/8r1Dkg+2lD3P7RuS7Xi2tChvmOC3VlezEFNcWnEGCOeKoGRkDuqFA==}
+    engines: {node: '>=18.12'}
+    dev: false
+
+  /@rushstack/lookup-by-path@0.7.4:
+    resolution: {integrity: sha512-8dRUCWMV5cxDLSEkewQ100YYZe7wExGofXnJvjs9mGH3GBvOpqzLD+/PhtI1J0iAX/vpjS+5r+tEfqm8xjYT5A==}
+    peerDependencies:
+      '@types/node': '*'
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
+    dev: false
+
+  /@rushstack/node-core-library@5.14.0:
+    resolution: {integrity: sha512-eRong84/rwQUlATGFW3TMTYVyqL1vfW9Lf10PH+mVGfIb9HzU3h5AASNIw+axnBLjnD0n3rT5uQBwu9fvzATrg==}
     peerDependencies:
     peerDependencies:
       '@types/node': '*'
       '@types/node': '*'
     peerDependenciesMeta:
     peerDependenciesMeta:
       '@types/node':
       '@types/node':
         optional: true
         optional: true
     dependencies:
     dependencies:
-      colors: 1.2.5
-      fs-extra: 7.0.1
+      ajv: 8.13.0
+      ajv-draft-04: 1.0.0(ajv@8.13.0)
+      ajv-formats: 3.0.1(ajv@8.13.0)
+      fs-extra: 11.3.1
       import-lazy: 4.0.0
       import-lazy: 4.0.0
       jju: 1.4.0
       jju: 1.4.0
       resolve: 1.22.9
       resolve: 1.22.9
       semver: 7.5.4
       semver: 7.5.4
-      z-schema: 5.0.5
     dev: false
     dev: false
 
 
-  /@rushstack/rush-sdk@5.100.2:
-    resolution: {integrity: sha512-+4DKbXj6R8vilRYswH8Lb+WIuIoD29/ZjMmazKBKXJTm3x7sgGJy45ozAZbfeXvdOTzqsg11NzIbwaDm8rRhLQ==}
+  /@rushstack/package-deps-hash@4.4.5:
+    resolution: {integrity: sha512-BcFAtlyfbuI1JOOUpfLUlB8N33tHUYbqYTZULMGpVnQiAPPFtQLgty4fKqO3gOWirMP+P/vOVkUAqLQ+17+qMg==}
+    dependencies:
+      '@rushstack/node-core-library': 5.14.0
+    transitivePeerDependencies:
+      - '@types/node'
+    dev: false
+
+  /@rushstack/rush-sdk@5.158.1:
+    resolution: {integrity: sha512-4W+5NfGOU3mu5DTXz7/DqHFQFtLvhalzHd5ku5h1/+pbNfUucFKMdR4yHk0BKTQkAaGWKaFXDSYICK//LxyX9w==}
     dependencies:
     dependencies:
-      '@rushstack/node-core-library': 3.59.6
-      '@types/node-fetch': 2.6.2
+      '@pnpm/lockfile.types': 1.0.3
+      '@rushstack/lookup-by-path': 0.7.4
+      '@rushstack/node-core-library': 5.14.0
+      '@rushstack/package-deps-hash': 4.4.5
+      '@rushstack/terminal': 0.15.4
       tapable: 2.2.1
       tapable: 2.2.1
     transitivePeerDependencies:
     transitivePeerDependencies:
       - '@types/node'
       - '@types/node'
     dev: false
     dev: false
 
 
-  /@types/node-fetch@2.6.2:
-    resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
+  /@rushstack/terminal@0.15.4:
+    resolution: {integrity: sha512-OQSThV0itlwVNHV6thoXiAYZlQh4Fgvie2CzxFABsbO2MWQsI4zOh3LRNigYSTrmS+ba2j0B3EObakPzf/x6Zg==}
+    peerDependencies:
+      '@types/node': '*'
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
     dependencies:
     dependencies:
-      '@types/node': 22.10.2
-      form-data: 3.0.2
+      '@rushstack/node-core-library': 5.14.0
+      supports-color: 8.1.1
     dev: false
     dev: false
 
 
-  /@types/node@22.10.2:
-    resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
+  /ajv-draft-04@1.0.0(ajv@8.13.0):
+    resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==}
+    peerDependencies:
+      ajv: ^8.5.0
+    peerDependenciesMeta:
+      ajv:
+        optional: true
     dependencies:
     dependencies:
-      undici-types: 6.20.0
+      ajv: 8.13.0
+    dev: false
+
+  /ajv-formats@3.0.1(ajv@8.13.0):
+    resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
+    peerDependencies:
+      ajv: ^8.0.0
+    peerDependenciesMeta:
+      ajv:
+        optional: true
+    dependencies:
+      ajv: 8.13.0
+    dev: false
+
+  /ajv@8.13.0:
+    resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==}
+    dependencies:
+      fast-deep-equal: 3.1.3
+      json-schema-traverse: 1.0.0
+      require-from-string: 2.0.2
+      uri-js: 4.4.1
     dev: false
     dev: false
 
 
   /ansi-regex@5.0.1:
   /ansi-regex@5.0.1:
@@ -73,10 +142,6 @@ packages:
       color-convert: 2.0.1
       color-convert: 2.0.1
     dev: false
     dev: false
 
 
-  /asynckit@0.4.0:
-    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-    dev: false
-
   /chalk@4.1.2:
   /chalk@4.1.2:
     resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
     resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
     engines: {node: '>=10'}
     engines: {node: '>=10'}
@@ -105,25 +170,6 @@ packages:
     resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
     resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
     dev: false
     dev: false
 
 
-  /colors@1.2.5:
-    resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==}
-    engines: {node: '>=0.1.90'}
-    dev: false
-
-  /combined-stream@1.0.8:
-    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
-    engines: {node: '>= 0.8'}
-    dependencies:
-      delayed-stream: 1.0.0
-    dev: false
-
-  /commander@9.5.0:
-    resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
-    engines: {node: ^12.20.0 || >=14}
-    requiresBuild: true
-    dev: false
-    optional: true
-
   /concurrently@8.2.2:
   /concurrently@8.2.2:
     resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
     resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
     engines: {node: ^14.13.0 || >=16.0.0}
     engines: {node: ^14.13.0 || >=16.0.0}
@@ -147,11 +193,6 @@ packages:
       '@babel/runtime': 7.26.0
       '@babel/runtime': 7.26.0
     dev: false
     dev: false
 
 
-  /delayed-stream@1.0.0:
-    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
-    engines: {node: '>=0.4.0'}
-    dev: false
-
   /emoji-regex@8.0.0:
   /emoji-regex@8.0.0:
     resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
     resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
     dev: false
     dev: false
@@ -161,22 +202,17 @@ packages:
     engines: {node: '>=6'}
     engines: {node: '>=6'}
     dev: false
     dev: false
 
 
-  /form-data@3.0.2:
-    resolution: {integrity: sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==}
-    engines: {node: '>= 6'}
-    dependencies:
-      asynckit: 0.4.0
-      combined-stream: 1.0.8
-      mime-types: 2.1.35
+  /fast-deep-equal@3.1.3:
+    resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
     dev: false
     dev: false
 
 
-  /fs-extra@7.0.1:
-    resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
-    engines: {node: '>=6 <7 || >=8'}
+  /fs-extra@11.3.1:
+    resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==}
+    engines: {node: '>=14.14'}
     dependencies:
     dependencies:
       graceful-fs: 4.2.11
       graceful-fs: 4.2.11
-      jsonfile: 4.0.0
-      universalify: 0.1.2
+      jsonfile: 6.2.0
+      universalify: 2.0.1
     dev: false
     dev: false
 
 
   /function-bind@1.1.2:
   /function-bind@1.1.2:
@@ -225,18 +261,16 @@ packages:
     resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
     resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
     dev: false
     dev: false
 
 
-  /jsonfile@4.0.0:
-    resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
-    optionalDependencies:
-      graceful-fs: 4.2.11
-    dev: false
-
-  /lodash.get@4.4.2:
-    resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
+  /json-schema-traverse@1.0.0:
+    resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
     dev: false
     dev: false
 
 
-  /lodash.isequal@4.5.0:
-    resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+  /jsonfile@6.2.0:
+    resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
+    dependencies:
+      universalify: 2.0.1
+    optionalDependencies:
+      graceful-fs: 4.2.11
     dev: false
     dev: false
 
 
   /lodash@4.17.21:
   /lodash@4.17.21:
@@ -250,22 +284,15 @@ packages:
       yallist: 4.0.0
       yallist: 4.0.0
     dev: false
     dev: false
 
 
-  /mime-db@1.52.0:
-    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
-    engines: {node: '>= 0.6'}
-    dev: false
-
-  /mime-types@2.1.35:
-    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
-    engines: {node: '>= 0.6'}
-    dependencies:
-      mime-db: 1.52.0
-    dev: false
-
   /path-parse@1.0.7:
   /path-parse@1.0.7:
     resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
     resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
     dev: false
     dev: false
 
 
+  /punycode@2.3.1:
+    resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+    engines: {node: '>=6'}
+    dev: false
+
   /regenerator-runtime@0.14.1:
   /regenerator-runtime@0.14.1:
     resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
     resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
     dev: false
     dev: false
@@ -275,6 +302,11 @@ packages:
     engines: {node: '>=0.10.0'}
     engines: {node: '>=0.10.0'}
     dev: false
     dev: false
 
 
+  /require-from-string@2.0.2:
+    resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+    engines: {node: '>=0.10.0'}
+    dev: false
+
   /resolve@1.22.9:
   /resolve@1.22.9:
     resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==}
     resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==}
     hasBin: true
     hasBin: true
@@ -356,18 +388,15 @@ packages:
     resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
     resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
     dev: false
     dev: false
 
 
-  /undici-types@6.20.0:
-    resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
-    dev: false
-
-  /universalify@0.1.2:
-    resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
-    engines: {node: '>= 4.0.0'}
+  /universalify@2.0.1:
+    resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+    engines: {node: '>= 10.0.0'}
     dev: false
     dev: false
 
 
-  /validator@13.12.0:
-    resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==}
-    engines: {node: '>= 0.10'}
+  /uri-js@4.4.1:
+    resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+    dependencies:
+      punycode: 2.3.1
     dev: false
     dev: false
 
 
   /wrap-ansi@7.0.0:
   /wrap-ansi@7.0.0:
@@ -405,15 +434,3 @@ packages:
       y18n: 5.0.8
       y18n: 5.0.8
       yargs-parser: 21.1.1
       yargs-parser: 21.1.1
     dev: false
     dev: false
-
-  /z-schema@5.0.5:
-    resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==}
-    engines: {node: '>=8.0.0'}
-    hasBin: true
-    dependencies:
-      lodash.get: 4.4.2
-      lodash.isequal: 4.5.0
-      validator: 13.12.0
-    optionalDependencies:
-      commander: 9.5.0
-    dev: false