diff --git a/apps/studio-next/package.json b/apps/studio-next/package.json index 94bc72c31..c6179f90c 100644 --- a/apps/studio-next/package.json +++ b/apps/studio-next/package.json @@ -9,10 +9,12 @@ "lint": "next lint" }, "dependencies": { + "@codemirror/state": "^6.4.1", "@types/node": "20.4.6", "@types/react": "18.2.18", "@types/react-dom": "18.2.7", "autoprefixer": "10.4.14", + "codemirror": "^6.0.1", "eslint": "8.46.0", "eslint-config-next": "13.4.12", "next": "13.5.1", @@ -20,6 +22,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "tailwindcss": "3.3.3", - "typescript": "5.1.6" + "typescript": "5.1.6", + "zustand": "^4.5.2" } } diff --git a/apps/studio-next/src/app/page.tsx b/apps/studio-next/src/app/page.tsx index c76c2dbae..5e8dc6c85 100644 --- a/apps/studio-next/src/app/page.tsx +++ b/apps/studio-next/src/app/page.tsx @@ -1,7 +1,9 @@ +import { Editor } from '@/components/Editor/Editor'; + export default function Home() { return ( -
- Home +
+
) } diff --git a/apps/studio-next/src/components/Editor/CodeMirror.tsx b/apps/studio-next/src/components/Editor/CodeMirror.tsx new file mode 100644 index 000000000..2928d7a0f --- /dev/null +++ b/apps/studio-next/src/components/Editor/CodeMirror.tsx @@ -0,0 +1,99 @@ +'use client'; + +import { EditorView, basicSetup } from 'codemirror'; +import { EditorState } from '@codemirror/state'; +import { useEffect, useRef } from 'react'; +import { + oneDarkTheme, + oneDarkHighlightStyle, +} from '@codemirror/theme-one-dark'; +import { json } from '@codemirror/lang-json'; +import { yaml } from '@codemirror/lang-yaml'; +import { syntaxHighlighting } from '@codemirror/language'; +import { indentWithTab } from '@codemirror/commands'; +import { keymap } from '@codemirror/view'; + +interface ICodeMirrorProps { + language: 'json' | 'yaml'; + value: string; + onChange: (value: string) => void; + readOnly?: boolean; + autoFocus?: boolean; + className?: string; +} + +export const CodeMirror = (props: ICodeMirrorProps) => { + const { language, value, onChange, autoFocus, className } = props; + + const editorRef = useRef(null); + const editorViewRef = useRef(); + + useEffect(() => { + let currentValue; + if (window) { + currentValue = localStorage.getItem('document') || value; + onChange(currentValue); + } + + if (editorRef.current) { + const theme = EditorView.theme({ + '&': { + backgroundColor: '#252f3f', + color: '#fff', + }, + + '&.cm-editor': { + height: '100%', + width: '100%', + }, + + '&.cm-focused': { + backgroundColor: '#1f2a37', + }, + }); + + const editorState = EditorState.create({ + doc: currentValue, + extensions: [ + basicSetup, + theme, + keymap.of([indentWithTab]), + oneDarkTheme, + syntaxHighlighting(oneDarkHighlightStyle), + language === 'json' ? json() : yaml(), + EditorView.updateListener.of((update) => { + if (update.docChanged) { + onChange(update.state.doc.toString()); + + if (window !== undefined) { + localStorage.setItem('document', update.state.doc.toString()); + } + } + + return false; + }), + ], + }); + + editorViewRef.current = new EditorView({ + parent: editorRef.current, + state: editorState, + }); + + if (autoFocus) { + editorViewRef.current.focus(); + } + + return () => { + editorViewRef.current?.destroy(); + }; + } + }, [language]); + + return ( +
+ ); +}; diff --git a/apps/studio-next/src/components/Editor/Editor.tsx b/apps/studio-next/src/components/Editor/Editor.tsx new file mode 100644 index 000000000..c48ba7b52 --- /dev/null +++ b/apps/studio-next/src/components/Editor/Editor.tsx @@ -0,0 +1,17 @@ +'use client' + +import { useFilesState } from '@/state/files.state'; +import { CodeMirror } from './CodeMirror'; + +interface IEditorProps {} + +export const Editor = (props: IEditorProps) => { + const { language, content } = useFilesState(state => state.files['asyncapi']); + const handleUpdateFile = useFilesState(state => state.updateFile); + + return ( +
+ handleUpdateFile('asyncapi', { content: value })} /> +
+ ); +} \ No newline at end of file diff --git a/apps/studio-next/src/state/files.state.ts b/apps/studio-next/src/state/files.state.ts new file mode 100644 index 000000000..4f69b43b3 --- /dev/null +++ b/apps/studio-next/src/state/files.state.ts @@ -0,0 +1,255 @@ +import { create } from 'zustand'; + +const schema =` +asyncapi: 3.0.0 +info: + title: Streetlights Kafka API + version: 1.0.0 + description: |- + The Smartylighting Streetlights API allows you to remotely manage the city + lights. + ### Check out its awesome features: + + * Turn a specific streetlight on/off 🌃 + * Dim a specific streetlight 😎 + * Receive real-time information about environmental lighting conditions 📈 + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 +defaultContentType: application/json +servers: + scram-connections: + host: test.mykafkacluster.org:18092 + protocol: kafka-secure + description: Test broker secured with scramSha256 + security: + - $ref: '#/components/securitySchemes/saslScram' + tags: + - name: env:test-scram + description: >- + This environment is meant for running internal tests through + scramSha256 + - name: kind:remote + description: This server is a remote server. Not exposed by the application + - name: visibility:private + description: This resource is private and only available to certain users + mtls-connections: + host: test.mykafkacluster.org:28092 + protocol: kafka-secure + description: Test broker secured with X509 + security: + - $ref: '#/components/securitySchemes/certs' + tags: + - name: env:test-mtls + description: This environment is meant for running internal tests through mtls + - name: kind:remote + description: This server is a remote server. Not exposed by the application + - name: visibility:private + description: This resource is private and only available to certain users +channels: + lightingMeasured: + address: smartylighting.streetlights.1.0.event.{streetlightId}.lighting.measured + messages: + lightMeasured: + $ref: '#/components/messages/lightMeasured' + description: The topic on which measured values may be produced and consumed. + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + lightTurnOn: + address: smartylighting.streetlights.1.0.action.{streetlightId}.turn.on + messages: + turnOn: + $ref: '#/components/messages/turnOnOff' + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + lightTurnOff: + address: smartylighting.streetlights.1.0.action.{streetlightId}.turn.off + messages: + turnOff: + $ref: '#/components/messages/turnOnOff' + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + lightsDim: + address: smartylighting.streetlights.1.0.action.{streetlightId}.dim + messages: + dimLight: + $ref: '#/components/messages/dimLight' + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' +operations: + receiveLightMeasurement: + action: receive + channel: + $ref: '#/channels/lightingMeasured' + summary: >- + Inform about environmental lighting conditions of a particular + streetlight. + traits: + - $ref: '#/components/operationTraits/kafka' + messages: + - $ref: '#/channels/lightingMeasured/messages/lightMeasured' + turnOn: + action: send + channel: + $ref: '#/channels/lightTurnOn' + traits: + - $ref: '#/components/operationTraits/kafka' + messages: + - $ref: '#/channels/lightTurnOn/messages/turnOn' + turnOff: + action: send + channel: + $ref: '#/channels/lightTurnOff' + traits: + - $ref: '#/components/operationTraits/kafka' + messages: + - $ref: '#/channels/lightTurnOff/messages/turnOff' + dimLight: + action: send + channel: + $ref: '#/channels/lightsDim' + traits: + - $ref: '#/components/operationTraits/kafka' + messages: + - $ref: '#/channels/lightsDim/messages/dimLight' +components: + messages: + lightMeasured: + name: lightMeasured + title: Light measured + summary: >- + Inform about environmental lighting conditions of a particular + streetlight. + contentType: application/json + traits: + - $ref: '#/components/messageTraits/commonHeaders' + payload: + $ref: '#/components/schemas/lightMeasuredPayload' + turnOnOff: + name: turnOnOff + title: Turn on/off + summary: Command a particular streetlight to turn the lights on or off. + traits: + - $ref: '#/components/messageTraits/commonHeaders' + payload: + $ref: '#/components/schemas/turnOnOffPayload' + dimLight: + name: dimLight + title: Dim light + summary: Command a particular streetlight to dim the lights. + traits: + - $ref: '#/components/messageTraits/commonHeaders' + payload: + $ref: '#/components/schemas/dimLightPayload' + schemas: + lightMeasuredPayload: + type: object + properties: + lumens: + type: integer + minimum: 0 + description: Light intensity measured in lumens. + sentAt: + $ref: '#/components/schemas/sentAt' + turnOnOffPayload: + type: object + properties: + command: + type: string + enum: + - 'on' + - 'off' + description: Whether to turn on or off the light. + sentAt: + $ref: '#/components/schemas/sentAt' + dimLightPayload: + type: object + properties: + percentage: + type: integer + description: Percentage to which the light should be dimmed to. + minimum: 0 + maximum: 100 + sentAt: + $ref: '#/components/schemas/sentAt' + sentAt: + type: string + format: date-time + description: Date and time when the message was sent. + securitySchemes: + saslScram: + type: scramSha256 + description: Provide your username and password for SASL/SCRAM authentication + certs: + type: X509 + description: Download the certificate files from service provider + parameters: + streetlightId: + description: The ID of the streetlight. + messageTraits: + commonHeaders: + headers: + type: object + properties: + my-app-header: + type: integer + minimum: 0 + maximum: 100 + operationTraits: + kafka: + bindings: + kafka: + clientId: + type: string + enum: + - my-app-id +`; + +export interface FileStat { + mtime: number; +} + +export type File = { + uri: string; + name: string; + content: string; + from: 'storage' | 'url' | 'base64'; + source?: string; + language: 'json' | 'yaml'; + modified: boolean; + stat?: FileStat; +} + +export type FilesState = { + files: Record; +} + +export type FilesActions = { + updateFile: (uri: string, file: Partial) => void; +} + +export const filesState = create(set => ({ + files: { + asyncapi: { + uri: 'asyncapi', + name: 'asyncapi', + content: schema, + from: 'storage', + source: undefined, + language: schema.trimStart()[0] === '{' ? 'json' : 'yaml', + modified: false, + stat: { + mtime: (new Date()).getTime(), + } + } + }, + updateFile(uri: string, file: Partial) { + set(state => ({ files: { ...state.files, [String(uri)]: { ...state.files[String(uri)] || {}, ...file } } })); + } +})); + +export const useFilesState = filesState; diff --git a/apps/studio/package.json b/apps/studio/package.json index e69748d51..a86db8be4 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -23,12 +23,12 @@ ], "dependencies": { "@asyncapi/avro-schema-parser": "^3.0.15", - "@asyncapi/converter": "^1.4.12", + "@asyncapi/converter": "^1.4.13", "@asyncapi/openapi-schema-parser": "^3.0.15", - "@asyncapi/parser": "^3.0.7", - "@asyncapi/protobuf-schema-parser": "^3.2.4", + "@asyncapi/parser": "^3.0.8", + "@asyncapi/protobuf-schema-parser": "^3.2.5", "@asyncapi/react-component": "^1.2.2", - "@asyncapi/specs": "^6.5.0", + "@asyncapi/specs": "^6.5.1", "@ebay/nice-modal-react": "^1.2.10", "@headlessui/react": "^1.7.4", "@hookstate/core": "^4.0.0-rc21", @@ -75,7 +75,7 @@ }, "devDependencies": { "@asyncapi/dotnet-nats-template": "^0.12.1", - "@asyncapi/go-watermill-template": "^0.2.67", + "@asyncapi/go-watermill-template": "^0.2.69", "@asyncapi/html-template": "^2.1.7", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^1.5.1", diff --git a/apps/studio/src/components/Modals/ConfirmModal.tsx b/apps/studio/src/components/Modals/ConfirmModal.tsx index d0bf9ade6..3d7bbf6e7 100644 --- a/apps/studio/src/components/Modals/ConfirmModal.tsx +++ b/apps/studio/src/components/Modals/ConfirmModal.tsx @@ -95,7 +95,7 @@ export const ConfirmModal: FunctionComponent -
+
= 16" @@ -1382,9 +1388,9 @@ } }, "node_modules/@asyncapi/go-watermill-template/node_modules/@asyncapi/modelina": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-3.4.0.tgz", - "integrity": "sha512-QoBZhNJaC7hhe9h4C7W7XAmptUMVyRnCmArJhJVz96qrzSloQny/rFD2cpAb0XGK9YEu3LuOnLFJrkbGyTSv8w==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-3.4.2.tgz", + "integrity": "sha512-H9XwkshPsHIc5HU0VyaN33bJsv/tgTt+WZreIZGuu29O2uwkiiKpyoe8BUGJB5GoKjaN44b+x84Xn0uvy3xmXg==", "dev": true, "dependencies": { "@apidevtools/json-schema-ref-parser": "^11.1.0", @@ -1441,9 +1447,9 @@ } }, "node_modules/@asyncapi/go-watermill-template/node_modules/@types/node": { - "version": "20.11.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", - "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", + "version": "20.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", + "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -2054,9 +2060,9 @@ } }, "node_modules/@asyncapi/protobuf-schema-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.2.4.tgz", - "integrity": "sha512-tQWci5hSrABb5obp6IfV4M6rMPQS4mV4qSXSyTggp10ha0pmvmbOEwP+ScCavvx6QXkb13eORGId6lF1KSht/g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.2.5.tgz", + "integrity": "sha512-b8ngne/22A+7qiHEAzH8ufZayne12CN995Fi4d7fQqPipCdoDKT46ejmINVP4vOEZAeJujAtKQDONUcECNUNNw==", "dependencies": { "@asyncapi/parser": "^3.0.7", "@types/protocol-buffers-schema": "^3.4.1", @@ -5476,6 +5482,114 @@ "node": ">= 4.0.0" } }, + "node_modules/@codemirror/autocomplete": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.14.0.tgz", + "integrity": "sha512-Kx9BCSOLKmqNXEvmViuzsBQJ2VEa/wWwOATNpixOa+suttTV3rDnAUtAIt5ObAUFjXvZakWfFfF/EbxELnGLzQ==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", + "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-json": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz", + "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-yaml": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.0.0.tgz", + "integrity": "sha512-fVPapdX1oYr5HMC5bou1MHscGnNCvOHuhUW6C+V2gfIeIRcughvVfznV0OuUyHy0AdXoBCjOehjzFcmLRumu2Q==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/yaml": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", + "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", + "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==" + }, + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz", + "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.25.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.25.1.tgz", + "integrity": "sha512-2LXLxsQnHDdfGzDvjzAwZh2ZviNJm7im6tGpa0IONIDnFd8RZ80D2SNi8PDi6YjKcMoMRK20v6OmKIdsrwsyoQ==", + "dependencies": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -7612,6 +7726,47 @@ "dev": true, "license": "MIT" }, + "node_modules/@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.2.tgz", + "integrity": "sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", + "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/yaml": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/yaml/-/yaml-1.0.2.tgz", + "integrity": "sha512-XCkwuxe+eumJ28nA9e1S6XKsXz9W7V/AG+WBiWOtiIuUpKcZ/bHuvN8bLxSDREIcybSRpEd/jvphh4vgm6Ed2g==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.4.0" + } + }, "node_modules/@manypkg/find-root": { "version": "1.1.0", "license": "MIT", @@ -15417,15 +15572,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/lodash.clonedeep": { - "version": "4.5.9", - "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.9.tgz", - "integrity": "sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==", - "dev": true, - "dependencies": { - "@types/lodash": "*" - } - }, "node_modules/@types/mdast": { "version": "3.0.11", "dev": true, @@ -18215,6 +18361,20 @@ "node": ">=0.10.0" } }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, "node_modules/coffee-script": { "version": "1.12.7", "dev": true, @@ -18684,6 +18844,11 @@ "dev": true, "license": "MIT" }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, "node_modules/cross-env": { "version": "7.0.3", "dev": true, @@ -34553,6 +34718,11 @@ "webpack": "^5.0.0" } }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" + }, "node_modules/styled-jsx": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", @@ -36080,9 +36250,9 @@ } }, "node_modules/typescript-json-schema/node_modules/@types/node": { - "version": "16.18.83", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.83.tgz", - "integrity": "sha512-TmBqzDY/GeCEmLob/31SunOQnqYE3ZiiuEh1U9o3HqE1E2cqKZQA5RQg4krEguCY3StnkXyDmCny75qyFLx/rA==", + "version": "16.18.87", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.87.tgz", + "integrity": "sha512-+IzfhNirR/MDbXz6Om5eHV54D9mQlEMGag6AgEzlju0xH3M8baCXYwqQ6RKgGMpn9wSTx6Ltya/0y4Z8eSfdLw==", "dev": true }, "node_modules/typescript-json-schema/node_modules/cliui": { @@ -36796,6 +36966,11 @@ "browser-process-hrtime": "^1.0.0" } }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, "node_modules/w3c-xmlserializer": { "version": "2.0.0", "license": "MIT", @@ -37798,8 +37973,9 @@ } }, "node_modules/zustand": { - "version": "4.3.8", - "license": "MIT", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz", + "integrity": "sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==", "dependencies": { "use-sync-external-store": "1.2.0" }, @@ -37807,10 +37983,14 @@ "node": ">=12.7.0" }, "peerDependencies": { - "immer": ">=9.0", + "@types/react": ">=16.8", + "immer": ">=9.0.6", "react": ">=16.8" }, "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, "immer": { "optional": true }, @@ -38312,20 +38492,20 @@ } }, "@asyncapi/converter": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@asyncapi/converter/-/converter-1.4.12.tgz", - "integrity": "sha512-p6TijQFKNpQGEcwlwSSf3Lo5UXCz5H1xfZQmZsfbjm/32oLNI9omke2ipkvXYi35x/gAZpg3FW+R/GWvQYu89g==", + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@asyncapi/converter/-/converter-1.4.13.tgz", + "integrity": "sha512-WY5DmVV7lHJJHvBfVyXAb3+WXMyEdVUY08NLiScMCCc8AHWTpU9Gg3394dqC4S8BinH75mfn0v2EuOdpx4TSEg==", "requires": { - "@asyncapi/parser": "^3.0.7", + "@asyncapi/parser": "^3.0.8", "js-yaml": "^3.14.1" }, "dependencies": { "@asyncapi/parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.0.7.tgz", - "integrity": "sha512-CKdkZbhs+2Mw7M2UZPypKEhKuaF+o5qZB2TQc0pDf+Wr09uEnm6WTdyqzmMGVb5fkQYApu8psQeDyVMbhfoWXQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.0.8.tgz", + "integrity": "sha512-BdH+Or1MjZdoBotz1DkwY6aW3CPWA5fcFMAngmBkviIHhmZqZBn7hA55WQ5YeYbRytct/o2ATtVI/pHbU/wPGg==", "requires": { - "@asyncapi/specs": "^6.5.0", + "@asyncapi/specs": "^6.5.1", "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", "@stoplight/json": "^3.20.2", "@stoplight/json-ref-readers": "^1.2.2", @@ -38362,9 +38542,9 @@ } }, "@asyncapi/specs": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.5.0.tgz", - "integrity": "sha512-84QUcfMT05+vvHO5EnSI0I5OZKzMgF/i3vgw92ghk1l52VM/lb3qNnuARzyo+uHJ9kmIb5+naK9wTuliVOdzmg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.5.1.tgz", + "integrity": "sha512-T7pOyVt7jo3VV3dPVvWwGYde/09WyFa0Qpq8Yjj06UNWJoXACftsdRF/pK0qLtjC0NAB8YV0AlDvxASYiwXq3g==", "requires": { "@types/json-schema": "^7.0.11" } @@ -38519,34 +38699,32 @@ } }, "@asyncapi/go-watermill-template": { - "version": "0.2.67", - "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.67.tgz", - "integrity": "sha512-cnk03A5Ehi/0tkJcjOpGJ5G6/NlbNBFOCqv1mL5HwSNzwMPWUODh3uhnO1eYQpIs2MC1SK2JR+6p6CIrsrfe2Q==", + "version": "0.2.69", + "resolved": "https://registry.npmjs.org/@asyncapi/go-watermill-template/-/go-watermill-template-0.2.69.tgz", + "integrity": "sha512-W2E0c/gkE791V9TVF8+I3pafcuao2FF7wr6/NgbIGAN1k2aSMNLdAMj50P9OW0Nkoc1kfGTQGC/Bw9FE5V2leg==", "dev": true, "requires": { "@asyncapi/generator-filters": "^2.0.0", "@asyncapi/generator-hooks": "^0.1.0", "@asyncapi/generator-react-sdk": "^0.2.23", - "@asyncapi/modelina": "^3.4.0" + "@asyncapi/modelina": "^3.4.2" }, "dependencies": { "@apidevtools/json-schema-ref-parser": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.1.0.tgz", - "integrity": "sha512-g/VW9ZQEFJAOwAyUb8JFf7MLiLy2uEB4rU270rGzDwICxnxMlPy0O11KVePSgS36K1NI29gSlK84n5INGhd4Ag==", + "version": "11.5.4", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.5.4.tgz", + "integrity": "sha512-o2fsypTGU0WxRxbax8zQoHiIB4dyrkwYfcm8TxZ+bx9pCzcWZbQtiMqpgBvWA/nJ2TrGjK5adCLfTH8wUeU/Wg==", "dev": true, "requires": { "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.13", - "@types/lodash.clonedeep": "^4.5.7", - "js-yaml": "^4.1.0", - "lodash.clonedeep": "^4.5.0" + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0" } }, "@asyncapi/modelina": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-3.4.0.tgz", - "integrity": "sha512-QoBZhNJaC7hhe9h4C7W7XAmptUMVyRnCmArJhJVz96qrzSloQny/rFD2cpAb0XGK9YEu3LuOnLFJrkbGyTSv8w==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@asyncapi/modelina/-/modelina-3.4.2.tgz", + "integrity": "sha512-H9XwkshPsHIc5HU0VyaN33bJsv/tgTt+WZreIZGuu29O2uwkiiKpyoe8BUGJB5GoKjaN44b+x84Xn0uvy3xmXg==", "dev": true, "requires": { "@apidevtools/json-schema-ref-parser": "^11.1.0", @@ -38600,9 +38778,9 @@ } }, "@types/node": { - "version": "20.11.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", - "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", + "version": "20.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", + "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", "dev": true, "requires": { "undici-types": "~5.26.4" @@ -39105,9 +39283,9 @@ } }, "@asyncapi/protobuf-schema-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.2.4.tgz", - "integrity": "sha512-tQWci5hSrABb5obp6IfV4M6rMPQS4mV4qSXSyTggp10ha0pmvmbOEwP+ScCavvx6QXkb13eORGId6lF1KSht/g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.2.5.tgz", + "integrity": "sha512-b8ngne/22A+7qiHEAzH8ufZayne12CN995Fi4d7fQqPipCdoDKT46ejmINVP4vOEZAeJujAtKQDONUcECNUNNw==", "requires": { "@asyncapi/parser": "^3.0.7", "@types/protocol-buffers-schema": "^3.4.1", @@ -39321,9 +39499,9 @@ "version": "file:apps/studio", "requires": { "@asyncapi/avro-schema-parser": "^3.0.15", - "@asyncapi/converter": "^1.4.12", + "@asyncapi/converter": "^1.4.13", "@asyncapi/dotnet-nats-template": "^0.12.1", - "@asyncapi/go-watermill-template": "^0.2.67", + "@asyncapi/go-watermill-template": "^0.2.69", "@asyncapi/html-template": "^2.1.7", "@asyncapi/java-spring-cloud-stream-template": "^0.13.4", "@asyncapi/java-spring-template": "^1.5.1", @@ -39332,11 +39510,11 @@ "@asyncapi/nodejs-template": "^1.0.0", "@asyncapi/nodejs-ws-template": "^0.9.33", "@asyncapi/openapi-schema-parser": "^3.0.15", - "@asyncapi/parser": "^3.0.7", - "@asyncapi/protobuf-schema-parser": "^3.2.4", + "@asyncapi/parser": "^3.0.8", + "@asyncapi/protobuf-schema-parser": "^3.2.5", "@asyncapi/python-paho-template": "^0.2.13", "@asyncapi/react-component": "^1.2.2", - "@asyncapi/specs": "^6.5.0", + "@asyncapi/specs": "^6.5.1", "@asyncapi/ts-nats-template": "^0.10.3", "@craco/craco": "^7.1.0", "@ebay/nice-modal-react": "^1.2.10", @@ -39395,11 +39573,11 @@ }, "dependencies": { "@asyncapi/parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.0.7.tgz", - "integrity": "sha512-CKdkZbhs+2Mw7M2UZPypKEhKuaF+o5qZB2TQc0pDf+Wr09uEnm6WTdyqzmMGVb5fkQYApu8psQeDyVMbhfoWXQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.0.8.tgz", + "integrity": "sha512-BdH+Or1MjZdoBotz1DkwY6aW3CPWA5fcFMAngmBkviIHhmZqZBn7hA55WQ5YeYbRytct/o2ATtVI/pHbU/wPGg==", "requires": { - "@asyncapi/specs": "^6.5.0", + "@asyncapi/specs": "^6.5.1", "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0", "@stoplight/json": "^3.20.2", "@stoplight/json-ref-readers": "^1.2.2", @@ -39421,9 +39599,9 @@ } }, "@asyncapi/specs": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.5.0.tgz", - "integrity": "sha512-84QUcfMT05+vvHO5EnSI0I5OZKzMgF/i3vgw92ghk1l52VM/lb3qNnuARzyo+uHJ9kmIb5+naK9wTuliVOdzmg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.5.1.tgz", + "integrity": "sha512-T7pOyVt7jo3VV3dPVvWwGYde/09WyFa0Qpq8Yjj06UNWJoXACftsdRF/pK0qLtjC0NAB8YV0AlDvxASYiwXq3g==", "requires": { "@types/json-schema": "^7.0.11" } @@ -41948,6 +42126,108 @@ } } }, + "@codemirror/autocomplete": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.14.0.tgz", + "integrity": "sha512-Kx9BCSOLKmqNXEvmViuzsBQJ2VEa/wWwOATNpixOa+suttTV3rDnAUtAIt5ObAUFjXvZakWfFfF/EbxELnGLzQ==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/commands": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", + "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.1.0" + } + }, + "@codemirror/lang-json": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz", + "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", + "requires": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "@codemirror/lang-yaml": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.0.0.tgz", + "integrity": "sha512-fVPapdX1oYr5HMC5bou1MHscGnNCvOHuhUW6C+V2gfIeIRcughvVfznV0OuUyHy0AdXoBCjOehjzFcmLRumu2Q==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/yaml": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", + "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/lint": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", + "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/search": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.6.tgz", + "integrity": "sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.1.tgz", + "integrity": "sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==" + }, + "@codemirror/theme-one-dark": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz", + "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "@codemirror/view": { + "version": "6.25.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.25.1.tgz", + "integrity": "sha512-2LXLxsQnHDdfGzDvjzAwZh2ZviNJm7im6tGpa0IONIDnFd8RZ80D2SNi8PDi6YjKcMoMRK20v6OmKIdsrwsyoQ==", + "requires": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, "@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -43291,6 +43571,47 @@ "version": "2.0.4", "dev": true }, + "@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + }, + "@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/json": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.2.tgz", + "integrity": "sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/lr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", + "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/yaml": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/yaml/-/yaml-1.0.2.tgz", + "integrity": "sha512-XCkwuxe+eumJ28nA9e1S6XKsXz9W7V/AG+WBiWOtiIuUpKcZ/bHuvN8bLxSDREIcybSRpEd/jvphh4vgm6Ed2g==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.4.0" + } + }, "@manypkg/find-root": { "version": "1.1.0", "requires": { @@ -48083,15 +48404,6 @@ "version": "4.14.195", "dev": true }, - "@types/lodash.clonedeep": { - "version": "4.5.9", - "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.9.tgz", - "integrity": "sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, "@types/mdast": { "version": "3.0.11", "dev": true, @@ -49937,6 +50249,20 @@ "version": "1.1.0", "dev": true }, + "codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, "coffee-script": { "version": "1.12.7", "dev": true @@ -50250,6 +50576,11 @@ "version": "1.1.1", "dev": true }, + "crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, "cross-env": { "version": "7.0.3", "dev": true, @@ -60707,10 +61038,12 @@ "studio-next": { "version": "file:apps/studio-next", "requires": { + "@codemirror/state": "^6.4.1", "@types/node": "20.4.6", "@types/react": "18.2.18", "@types/react-dom": "18.2.7", "autoprefixer": "10.4.14", + "codemirror": "^6.0.1", "eslint": "8.46.0", "eslint-config-next": "13.4.12", "next": "13.5.1", @@ -60718,7 +61051,8 @@ "react": "18.2.0", "react-dom": "18.2.0", "tailwindcss": "3.3.3", - "typescript": "5.1.6" + "typescript": "5.1.6", + "zustand": "^4.5.2" }, "dependencies": { "@types/node": { @@ -60737,6 +61071,11 @@ "version": "3.3.3", "dev": true }, + "style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" + }, "styled-jsx": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", @@ -61726,9 +62065,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.83", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.83.tgz", - "integrity": "sha512-TmBqzDY/GeCEmLob/31SunOQnqYE3ZiiuEh1U9o3HqE1E2cqKZQA5RQg4krEguCY3StnkXyDmCny75qyFLx/rA==", + "version": "16.18.87", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.87.tgz", + "integrity": "sha512-+IzfhNirR/MDbXz6Om5eHV54D9mQlEMGag6AgEzlju0xH3M8baCXYwqQ6RKgGMpn9wSTx6Ltya/0y4Z8eSfdLw==", "dev": true }, "cliui": { @@ -62189,6 +62528,11 @@ "browser-process-hrtime": "^1.0.0" } }, + "w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, "w3c-xmlserializer": { "version": "2.0.0", "requires": { @@ -62892,7 +63236,9 @@ "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==" }, "zustand": { - "version": "4.3.8", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.2.tgz", + "integrity": "sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==", "requires": { "use-sync-external-store": "1.2.0" } diff --git a/package.json b/package.json index 4495c300b..3c34ca096 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,11 @@ ], "packageManager": "npm@8.19.3", "dependencies": { - "@changesets/cli": "^2.26.2" + "@changesets/cli": "^2.26.2", + "@codemirror/commands": "^6.3.3", + "@codemirror/lang-json": "^6.0.1", + "@codemirror/lang-yaml": "^6.0.0", + "@codemirror/language": "^6.10.1", + "@codemirror/theme-one-dark": "^6.1.2" } } \ No newline at end of file