├── .github └── workflows │ └── build.yml ├── .gitignore ├── README.md ├── backend ├── Application.go ├── ApplicationMenu.go ├── ApplicationSettings.go ├── Config │ ├── Connections.go │ ├── Preferences.go │ ├── Query.go │ └── Window.go ├── ConfigManager.go ├── FileStore │ ├── Store.go │ └── Stores.go ├── Updater │ ├── ApiResponse.go │ ├── AppUpdater.go │ └── UpdateInfo.go └── Util │ └── Logger.go ├── build ├── README.md ├── appicon.png ├── darwin │ ├── Info.dev.plist │ └── Info.plist ├── surreal_docs.json └── windows │ ├── info.json │ ├── installer │ ├── project.nsi │ └── wails_tools.nsh │ └── wails.exe.manifest ├── frontend ├── .idea │ ├── .gitignore │ ├── .name │ ├── SurrealDbExplorer(Frontend).iml │ ├── codeStyles │ │ └── codeStyleConfig.xml │ ├── git_toolbox_prj.xml │ ├── jsLibraryMappings.xml │ ├── markdown.xml │ ├── misc.xml │ ├── modules.xml │ ├── tailwindcss.xml │ └── vcs.xml ├── READ-THIS.md ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── package.json.md5 ├── postcss.config.cjs ├── src │ ├── .generated │ │ ├── Colors.ts │ │ ├── event.d.ts │ │ └── modal.d.ts │ ├── App.vue │ ├── Components │ │ ├── ConfirmButton.vue │ │ ├── Layout │ │ │ ├── AppSidebar.vue │ │ │ └── SidebarItem.vue │ │ ├── Link.vue │ │ ├── ModalDrawer.vue │ │ ├── ModalTypes.ts │ │ ├── RegularModal.vue │ │ ├── SimpleButton.vue │ │ ├── Spinner.vue │ │ └── StatusBar │ │ │ ├── ConnectionStatus │ │ │ ├── ConnectionStatusDot.vue │ │ │ └── CurrentConnection.vue │ │ │ ├── StatusBar.vue │ │ │ └── UpdateStatus │ │ │ ├── UpdateInfoModal.vue │ │ │ ├── UpdateStatus.vue │ │ │ └── UpdateStatusDot.vue │ ├── Events.ts │ ├── Modals.ts │ ├── Pages │ │ ├── Connections │ │ │ ├── AddConnection.vue │ │ │ ├── ConnectionCard.vue │ │ │ └── ConnectionManager.vue │ │ ├── Home.vue │ │ ├── Query │ │ │ ├── ActionsHeader.vue │ │ │ ├── QueriesPanel │ │ │ │ ├── QueriesPanel.vue │ │ │ │ ├── QueryHistory.vue │ │ │ │ ├── SaveQueryModal.vue │ │ │ │ └── SavedQueries.vue │ │ │ ├── Query.vue │ │ │ └── ResultPanelHeader.vue │ │ └── Tables │ │ │ ├── CreateEntryModal.vue │ │ │ ├── EditEntryModal.vue │ │ │ ├── Fields │ │ │ └── ThingField.vue │ │ │ ├── Sections │ │ │ ├── TableActions.vue │ │ │ ├── TableError.vue │ │ │ ├── TableFooter.vue │ │ │ └── TableSelectingItemsBanner.vue │ │ │ ├── TableFilters.vue │ │ │ ├── TableSidebarItem.vue │ │ │ ├── Tables.vue │ │ │ ├── TablesSidebar.vue │ │ │ ├── ViewEntryModal.vue │ │ │ ├── ViewTable.vue │ │ │ └── ViewTableEntry.vue │ ├── Routes.ts │ ├── Services │ │ ├── AsyncProcessor.ts │ │ ├── Confetti │ │ │ ├── Confetti.ts │ │ │ ├── Emotes.ts │ │ │ └── options.json │ │ ├── Database │ │ │ ├── Database.ts │ │ │ ├── QueryResult.ts │ │ │ └── Thing.ts │ │ ├── JsonViewer │ │ │ ├── Components │ │ │ │ ├── icon.svg │ │ │ │ ├── json-box.vue │ │ │ │ ├── json-viewer.vue │ │ │ │ ├── types │ │ │ │ │ ├── json-array.vue │ │ │ │ │ ├── json-boolean.vue │ │ │ │ │ ├── json-date.vue │ │ │ │ │ ├── json-function.vue │ │ │ │ │ ├── json-number.vue │ │ │ │ │ ├── json-object.vue │ │ │ │ │ ├── json-record-id.vue │ │ │ │ │ ├── json-regexp.vue │ │ │ │ │ ├── json-string.vue │ │ │ │ │ └── json-undefined.vue │ │ │ │ └── utils.ts │ │ │ └── index.ts │ │ ├── Logger.ts │ │ ├── Monaco │ │ │ ├── Editor.ts │ │ │ └── LanguageConfiguration.ts │ │ ├── Navigator.ts │ │ ├── TableViewer │ │ │ ├── TableFilters.ts │ │ │ └── TableViewer.ts │ │ ├── Theme.ts │ │ ├── Updater │ │ │ ├── UpdateInformation.ts │ │ │ └── Updater.ts │ │ └── Utils │ │ │ ├── Timeout.ts │ │ │ └── Vue.ts │ ├── Stores │ │ ├── AppStore.ts │ │ ├── ConnectionStore.ts │ │ ├── Generated │ │ │ └── stores.d.ts │ │ ├── QueriesPanelStore.ts │ │ ├── QueryPageStore.ts │ │ ├── SchemaStore.ts │ │ └── TableStore.ts │ ├── Styles │ │ ├── app.css │ │ └── split-panes.css │ ├── Window.ts │ ├── assets │ │ ├── emotes.json │ │ ├── emotes │ │ │ ├── 54fcdfdc01abde735115deae.webp │ │ │ ├── 55006e5e8b95c6fb61482673.webp │ │ │ ├── 5590b223b344e2c42a9e28e3.webp │ │ │ ├── 5597e66ed8152e272470f830.webp │ │ │ ├── 55999813f0db38ef6c7c663e.webp │ │ │ ├── 55c2f86ff95ede671a79e47f.webp │ │ │ ├── 55cbeb8f8b9c49ef325bf738.webp │ │ │ ├── 55f091b9de50f37c0a831147.webp │ │ │ ├── 55f47f507f08be9f0a63ce37.webp │ │ │ ├── 5603731ce5fc5eff1de93229.webp │ │ │ ├── 56b65f05b947474c4a304dbe.webp │ │ │ ├── 56be9fd6d9ec6bf74424760d.webp │ │ │ ├── 56e9f494fff3cc5c35e5287e.webp │ │ │ ├── 57597e25848bf08c5f860bd3.webp │ │ │ ├── 57bfa325d5219dd112c18a99.webp │ │ │ ├── 57ddccb558b6f3690c898464.webp │ │ │ ├── 5803757f3d506fea7ee35267.webp │ │ │ ├── 582e1ec8585b22e76faae1d7.webp │ │ │ ├── 583089f4737a8e61abb0186b.webp │ │ │ ├── 58493695987aab42df852e0f.webp │ │ │ ├── 585231dd58af204561cd6036.webp │ │ │ ├── 589771dc10c0975495c578d1.webp │ │ │ ├── 58ae8407ff7b7276f8e594f2.webp │ │ │ ├── 58c36ac73c3bbd3e016b6e60.webp │ │ │ ├── 58c5c65357baeb710f657195.webp │ │ │ ├── 58dd97c74d67ad30ec2ff270.webp │ │ │ ├── 58f6e05e58f5dd226a16166e.webp │ │ │ ├── 58facc4aaffae60eac088397.webp │ │ │ ├── 59474044e949fe3b435e3135.webp │ │ │ ├── 5980af4e3a1ac5330e89dc76.webp │ │ │ ├── 5981e21aeaab4f3320e73abe.webp │ │ │ ├── 5981e885eaab4f3320e73b18.webp │ │ │ ├── 598215f47e71d43314a80ad2.webp │ │ │ ├── 59a32119b71a9e11bd5f4251.webp │ │ │ ├── 59b73909b27c823d5b1f6052.webp │ │ │ ├── 59c4321d8798a53d5af9b9a5.webp │ │ │ ├── 59ca6551b27c823d5b1fd872.webp │ │ │ ├── 59f27b3f4ebd8047f54dee29.webp │ │ │ ├── 5a16ddca8c22a247ead62ceb.webp │ │ │ ├── 5a16ee718c22a247ead62d4a.webp │ │ │ ├── 5a1702fb8c22a247ead62d95.webp │ │ │ ├── 5a21576595c4af067c869ba9.webp │ │ │ ├── 5a2691c6fc6e584787d98534.webp │ │ │ ├── 5a4ad2574884645e5706e51a.webp │ │ │ ├── 5a5e0e8d80f53146a54a516b.webp │ │ │ ├── 5a6dee3b2620951f291ec6d0.webp │ │ │ ├── 5a71931b32f45872c230578e.webp │ │ │ ├── 5a93403a85dd670847d2d2eb.webp │ │ │ ├── 5a9a360c35035f0fd53689a0.webp │ │ │ ├── 5aa16eb65d4a424654d7e3e5.webp │ │ │ ├── 5ac55f2306679e79a3e7841d.webp │ │ │ ├── 5aca62163e290877a25481ad.webp │ │ │ ├── 5b17135d1e360065b92a9d59.webp │ │ │ ├── 5b1741ee83deca65adc4a3c6.webp │ │ │ ├── 5b457bbd0485f43277cecac0.webp │ │ │ ├── 5b4cf074a035723952666f5d.webp │ │ │ ├── 5b567225e11b851126617bb6.webp │ │ │ ├── 5b7bcd66e1202d285d94f8d3.webp │ │ │ ├── 5b7ca091decbe272b64d3d7d.webp │ │ │ ├── 5b8015ba3c482e0aaa9413be.webp │ │ │ ├── 5b96e7f1bbf4663f648795b1.webp │ │ │ ├── 5be4b0c9e9207c147ebcb517.webp │ │ │ ├── 5c0235787991032d519f513c.webp │ │ │ ├── 5c50edcb5e0cb51b417faf37.webp │ │ │ ├── 5cd2bcbab75608209334a28d.webp │ │ │ ├── 5cd6b08cf1dac14a18c4b61f.webp │ │ │ ├── 5d20a55de1cfde376e532972.webp │ │ │ ├── 5d24f20653fb473775490d6f.webp │ │ │ ├── 5d3e250a6d68672adc3fbff7.webp │ │ │ ├── 5d43475f6b7300449a43441c.webp │ │ │ ├── 5d4b08dc64ae370ac807caa4.webp │ │ │ ├── 5d5d9fe322f52e1d9b41ac91.webp │ │ │ ├── 5d5e363122f52e1d9b41aff1.webp │ │ │ ├── 5d5e91f322f52e1d9b41b141.webp │ │ │ ├── 5d6096974932b21d9c332904.webp │ │ │ ├── 5d61bae91f77c11da35ac50e.webp │ │ │ ├── 5d6209854932b21d9c333195.webp │ │ │ ├── 5d63e543375afb1da9a68a5a.webp │ │ │ ├── 5d72ae0aa32edb714a9df060.webp │ │ │ ├── 5d9198fbd2458468c1f4adb7.webp │ │ │ ├── 5dc79d1b27360247dd6516ec.webp │ │ │ ├── 5dcea287e579cd5efad7505c.webp │ │ │ ├── 5de9cb6191129e77b47ca987.webp │ │ │ ├── 5dfd5fd19e2cd00d968d3a4d.webp │ │ │ ├── 5e052a618608fb0da4122b70.webp │ │ │ ├── 5e0bf9c0031ec77bab473742.webp │ │ │ ├── 5e0fa9d40550d42106b8a489.webp │ │ │ ├── 5e1a76dd8af14b5f1b438c04.webp │ │ │ ├── 5e3441d861ff6b51e65259fe.webp │ │ │ ├── 5e3edf06e383e37d5d9d1dfd.webp │ │ │ ├── 5e486af4d736527d5cd2fed6.webp │ │ │ ├── 5e49b8f1e383e37d5d9d931c.webp │ │ │ ├── 5e4e7a1f08b4447d56a92967.webp │ │ │ ├── 5e574db1ddc7a054d7f0c301.webp │ │ │ ├── 5e76910ed112fc372574ce15.webp │ │ │ ├── 5e87b595acae25096140ca84.webp │ │ │ ├── 5e978e20d023b362f638339d.webp │ │ │ ├── 5e9c6c187e090362f8b0b9e8.webp │ │ │ ├── 5e9cdca974046462f7673006.webp │ │ │ ├── 5ea831f074046462f768097a.webp │ │ │ ├── 5ebd239bf0fb3f168c4b58f0.webp │ │ │ ├── 5ec57ff2f54be95e2a82765a.webp │ │ │ ├── 5ec5e7d6f54be95e2a82806f.webp │ │ │ ├── 5ed355b1fdee545e3065c80e.webp │ │ │ ├── 5ee2430bf54be95e2a84b30a.webp │ │ │ ├── 5f284a13cf6d2144653dee4a.webp │ │ │ ├── 5f395e0bb2efd65d77e8124f.webp │ │ │ ├── 5f3ef6123212445d6fb49f1a.webp │ │ │ ├── 5f4f4fa23769246c0320de37.webp │ │ │ ├── 5f64475bd7160803d895a112.webp │ │ │ ├── 5f9487731b017902db14d05e.webp │ │ │ ├── 5f9f27ca40eb9502e2238a65.webp │ │ │ ├── 5fd59868f0c558349268d3dc.webp │ │ │ ├── 5fe8cff8e85053351218e1dc.webp │ │ │ ├── 5fe9711fab5f5d3505129a0b.webp │ │ │ ├── 5fe9713dab5f5d3505129a0f.webp │ │ │ ├── 5ff4a9ef85ffcf047a709b2e.webp │ │ │ ├── 5ff5191a8a0e92047c1e382d.webp │ │ │ ├── 5ff827395ef7d10c7912c106.webp │ │ │ ├── 600c004c4e3ab965ef757f9e.webp │ │ │ ├── 6024574d2eae5518bece2ddd.webp │ │ │ ├── 602db23eee839b1e5ec6ddc2.webp │ │ │ ├── 6033ef7d7c74605395f3256f.webp │ │ │ ├── 603c98be306b602acc594e18.webp │ │ │ ├── 60419081306b602acc5972c9.webp │ │ │ ├── 60477a2f306b602acc599abf.webp │ │ │ ├── 604793b8306b602acc599b88.webp │ │ │ ├── 6049a20d306b602acc59aab5.webp │ │ │ ├── 605b71f57493072efdeb3bbb.webp │ │ │ ├── 605be9057493072efdeb4075.webp │ │ │ ├── 60699b50a407570b72f2ad5a.webp │ │ │ ├── 608089bf39b5010444d03aa0.webp │ │ │ ├── 60808aab39b5010444d03aab.webp │ │ │ ├── 6083d2cd39b5010444d0540b.webp │ │ │ ├── 608b335539b5010444d08c55.webp │ │ │ ├── 60959b8239b5010444d0d6a4.webp │ │ │ ├── 60c9849df8b3f62601c3e7e3.webp │ │ │ ├── 60d872d78ed8b373e421a4db.webp │ │ │ ├── 60e0d6d48ed8b373e421d34b.webp │ │ │ ├── 60e32f028ed8b373e421e021.webp │ │ │ ├── 60f996092d1eba5400d0fb6a.webp │ │ │ ├── 6119caa676ea4e2b9f7778e4.webp │ │ │ ├── 611a913276ea4e2b9f778e65.webp │ │ │ ├── 6121e47e76ea4e2b9f78a35f.webp │ │ │ ├── 6126c2b0af28e956864a1d79.webp │ │ │ ├── 6149d102b63cc97ee6d29c79.webp │ │ │ ├── 61526c2ab63cc97ee6d3ab0d.webp │ │ │ ├── 615f1909b63cc97ee6d53c6a.webp │ │ │ ├── 616eef69054a252a431fbea6.webp │ │ │ ├── 6180e47e1f8ff7628e6c0b4f.webp │ │ │ ├── 6180e4f81f8ff7628e6c0b54.webp │ │ │ ├── 6197b6a454f3344f88065985.webp │ │ │ ├── 619928e554f3344f88068ac1.webp │ │ │ ├── 61acf74c002cdeedc21e577b.webp │ │ │ ├── 61cf4c6ec8cc7f36d52b27a9.webp │ │ │ ├── 61d35ce706fd6a9f5bdf35ae.webp │ │ │ ├── 61e10b0206fd6a9f5be09de4.webp │ │ │ ├── 61e918ab06fd6a9f5be168f3.webp │ │ │ ├── 61eb0f3606fd6a9f5be19987.webp │ │ │ ├── 61f013ba06fd6a9f5be219f3.webp │ │ │ ├── 61f867ec06fd6a9f5be2e832.webp │ │ │ ├── 6202e72b06fd6a9f5be3dced.webp │ │ │ ├── 6211428206fd6a9f5be50250.webp │ │ │ ├── 6217d0aa06fd6a9f5be57d64.webp │ │ │ ├── 62264bb606fd6a9f5be67488.webp │ │ │ ├── 6227781606fd6a9f5be6866d.webp │ │ │ ├── 622fb4e906fd6a9f5be712d5.webp │ │ │ ├── 625100153c6f14b68844c3b9.webp │ │ │ ├── 62535c593c6f14b68844ead3.webp │ │ │ ├── 626a5f403c6f14b6884678be.webp │ │ │ ├── 626d15653c6f14b68846a0bb.webp │ │ │ ├── 6278804e3c6f14b688475794.webp │ │ │ ├── 6298f96f3c6f14b688495afe.webp │ │ │ ├── 629c72453c6f14b688498e3c.webp │ │ │ ├── 62c323668fd4516906a8e61f.webp │ │ │ ├── 62d5d182d991a3e26c12c881.webp │ │ │ ├── 62d9c87ed991a3e26c12fcce.webp │ │ │ ├── 62dfa0a1d991a3e26c13501f.webp │ │ │ ├── 62e6d75dd991a3e26c13b69d.webp │ │ │ ├── 62f77691ecbd41815423f7a0.webp │ │ │ ├── 63010671ecbd418154246dff.webp │ │ │ ├── 630d9f708d54637377067645.webp │ │ │ ├── 633f0425e6cf26500b42b791.webp │ │ │ ├── 634636a2e6cf26500b4321d7.webp │ │ │ ├── 634f2fdb9bb828a9f0d3edea.webp │ │ │ ├── 635011da9bb828a9f0d40aa4.webp │ │ │ ├── 6350c99676c0f8d47ce017bf.webp │ │ │ ├── 6355ff83ed98a03da0cd9a19.webp │ │ │ ├── 6359372eed98a03da0cdd7df.webp │ │ │ ├── 63714545b9076d0aaebbe75b.webp │ │ │ ├── 637ac894b9076d0aaebc9b7b.webp │ │ │ ├── 63982b2691ab7f35abdf6af4.webp │ │ │ ├── 6398ce5991ab7f35abdf730d.webp │ │ │ ├── 63accf7291ab7f35abe0b017.webp │ │ │ ├── 63add7e491ab7f35abe0bcbd.webp │ │ │ ├── 63b26784d3c04b5c4512415f.webp │ │ │ ├── 63b743f392686dedce34e2d4.webp │ │ │ ├── 63c1fea2fe434f3a3de15a73.webp │ │ │ ├── 63c2992cf16b4a91323fe4be.webp │ │ │ └── 63cb40252b18a0bbb2dae92e.webp │ │ ├── fonts │ │ │ ├── OFL.txt │ │ │ └── nunito-v16-latin-regular.woff2 │ │ └── images │ │ │ ├── Icon.png │ │ │ ├── SDBExplorerLogo.png │ │ │ └── logo-universal.png │ ├── main.ts │ ├── vite-env.d.ts │ └── vue.d.ts ├── tailwind.config.ts ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── wailsjs │ ├── go │ ├── Config │ │ ├── Connections.d.ts │ │ ├── Connections.js │ │ ├── QueriesList.d.ts │ │ ├── QueriesList.js │ │ ├── Window.d.ts │ │ └── Window.js │ ├── backend │ │ ├── App.d.ts │ │ └── App.js │ └── models.ts │ └── runtime │ ├── package.json │ ├── runtime.d.ts │ └── runtime.js ├── go.mod ├── go.sum ├── main.go ├── package.json ├── repository ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── icon.png └── text-logo.png ├── scripts ├── compress.go ├── download_emotes.js ├── package.json ├── yarn-error.log └── yarn.lock └── wails.json /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Wails build 2 | 3 | # - name: Set output 4 | # id: vars 5 | # run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT 6 | # - name: Check output 7 | # env: 8 | # RELEASE_VERSION: ${{ steps.vars.outputs.tag }} 9 | # run: | 10 | # echo Release version: $RELEASE_VERSION 11 | # echo ${{ steps.vars.outputs.tag }} 12 | # touch ./../../.env 13 | # echo "APP_VERSION=$RELEASE_VERSION" >> ./frontend/.env 14 | # touch ./../../frontend/.env 15 | # echo "VITE_APP_VERSION=$RELEASE_VERSION" >> ./frontend/.env 16 | 17 | on: 18 | push: 19 | tags: 20 | - "v*" 21 | jobs: 22 | package: 23 | strategy: 24 | matrix: 25 | go-version: [ 1.19 ] 26 | os: [ macos-latest, windows-latest] 27 | runs-on: ${{ matrix.os }} 28 | steps: 29 | - name: Install Go 30 | uses: actions/setup-go@v2 31 | with: 32 | go-version: ${{ matrix.go-version }} 33 | - name: Checkout code 34 | uses: actions/checkout@v3 35 | 36 | - name: setup node 37 | uses: actions/setup-node@v2 38 | with: 39 | node-version: 14 40 | 41 | - name: Get Wails 42 | run: go install github.com/wailsapp/wails/v2/cmd/wails@latest 43 | 44 | - name: Build Wails app 45 | run: | 46 | wails build 47 | 48 | - name: zip macos artifact 49 | if: matrix.os == 'macos-latest' 50 | run: | 51 | cd ./build/bin 52 | zip -r ./../../surreal_explorer_mac.zip ./SurrealDB\ Explorer.app 53 | 54 | - name: upload artifact macOS 55 | if: matrix.os == 'macos-latest' 56 | uses: actions/upload-artifact@v2 57 | with: 58 | name: surreal_explorer_mac 59 | path: surreal_explorer_mac.zip 60 | 61 | - name: zip windows artifact 62 | if: matrix.os == 'windows-latest' 63 | run: | 64 | Compress-Archive -Path .\build\bin\surrealdb_explorer* -DestinationPath .\surreal_explorer_windows.zip 65 | 66 | - name: upload artifact windows 67 | if: matrix.os == 'windows-latest' 68 | uses: actions/upload-artifact@v2 69 | with: 70 | name: surreal_explorer_windows 71 | path: surreal_explorer_windows.zip 72 | 73 | release: 74 | runs-on: ubuntu-latest 75 | needs: package 76 | steps: 77 | - name: Download macOS package 78 | uses: actions/download-artifact@v3 79 | with: 80 | name: surreal_explorer_mac 81 | 82 | - name: Download windows package 83 | uses: actions/download-artifact@v3 84 | with: 85 | name: surreal_explorer_windows 86 | 87 | - name: Display structure of downloaded files 88 | run: ls -R 89 | 90 | - name: Create Release 91 | uses: "marvinpinto/action-automatic-releases@latest" 92 | with: 93 | repo_token: "${{ secrets.GITHUB_TOKEN }}" 94 | prerelease: true 95 | files: | 96 | ./surreal_explorer_mac.zip 97 | ./surreal_explorer_windows.zip 98 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/bin 2 | node_modules 3 | frontend/dist 4 | frontend/src/Stores/Generated/StoreLoader.ts 5 | /history.txt 6 | /.idea/ 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 | ## Description 7 | 8 | SurrealDB Explorer is a simple database viewer/editor for SurrealDB. It's a nice temp solution for a desktop application until the official version is released. 9 | 10 | ## Features: 11 | 12 | - Multiple connection configuration 13 | - Simple query formatting/completion 14 | - Save queries and run them again in the future 15 | - View your tables and their data, create/delete records (editing coming soon) 16 | - Follow record links from table viewer, (ie; you have "user:1" in a field, click it and it will open the user record) 17 | 18 | 19 | ## Note: 20 | 21 | I hacked this together pretty quickly over a couple of days, so there may be some minor problems I haven't found yet. 22 | 23 | If you find any bugs, please report them on the github page or kindly submit a pr <3 24 | 25 | ## Download: 26 | 27 | You can download the latest version from the [releases page](https://github.com/iDevelopThings/SurrealDB-Explorer/tags) 28 | 29 | **The app is not signed, so you will get warnings on windows, and mac, you will need to run a command to allow it to run.** 30 | 31 | ### MacOS: 32 | - Download the app and extract it, then move it to applications 33 | - Open your terminal and run: `sudo xattr -rd com.apple.quarantine /Applications/SurrealDB\ Explorer.app` 34 | 35 | Alternatively, you can run the app, then go to `System Preferences > Security & Privacy > General` and click "Open Anyway" 36 | 37 | ## Screenshots: 38 | 39 | ![1.png](repository/1.png) 40 | 41 | ![2.png](repository/2.png) 42 | 43 | ![3.png](repository/3.png) 44 | 45 | ![4.png](repository/4.png) 46 | -------------------------------------------------------------------------------- /backend/ApplicationMenu.go: -------------------------------------------------------------------------------- 1 | package backend 2 | 3 | import ( 4 | "context" 5 | "github.com/wailsapp/wails/v2/pkg/menu" 6 | "github.com/wailsapp/wails/v2/pkg/menu/keys" 7 | "github.com/wailsapp/wails/v2/pkg/runtime" 8 | goRuntime "runtime" 9 | ) 10 | 11 | type ApplicationMenuBuilder struct { 12 | Ctx context.Context 13 | 14 | Menu *menu.Menu 15 | AppSettings *ApplicationSettings 16 | } 17 | 18 | func NewApplicationMenuBuilder( 19 | appSettings *ApplicationSettings, 20 | ) *ApplicationMenuBuilder { 21 | return &ApplicationMenuBuilder{ 22 | AppSettings: appSettings, 23 | Menu: menu.NewMenu(), 24 | } 25 | } 26 | 27 | func (builder *ApplicationMenuBuilder) Build(app *App) *menu.Menu { 28 | switch goRuntime.GOOS { 29 | case "darwin": 30 | builder.Menu.Append(menu.AppMenu()) 31 | builder.Menu.Append(menu.EditMenu()) 32 | break 33 | } 34 | 35 | //builder.Menu.AddSubmenu(builder.AppSettings.Title) 36 | 37 | viewMenu := builder.Menu.AddSubmenu("View") 38 | 39 | viewMenu.AddText("Zoom In", keys.Combo("+", keys.CmdOrCtrlKey, keys.ShiftKey), func(cb *menu.CallbackData) { 40 | runtime.WindowExecJS(builder.Ctx, "window.zoomIn()") 41 | }) 42 | 43 | viewMenu.AddText("Zoom Out", keys.CmdOrCtrl("-"), func(cb *menu.CallbackData) { 44 | runtime.WindowExecJS(builder.Ctx, "window.zoomOut()") 45 | }) 46 | 47 | viewMenu.AddText("Reset Zoom", keys.Combo("-", keys.CmdOrCtrlKey, keys.OptionOrAltKey), func(cb *menu.CallbackData) { 48 | runtime.WindowExecJS(builder.Ctx, "window.resetZoom()") 49 | }) 50 | 51 | viewMenu.AddSeparator() 52 | 53 | viewMenu.AddText("Refresh", keys.CmdOrCtrl("r"), func(cb *menu.CallbackData) { 54 | runtime.WindowExecJS(builder.Ctx, "window.location.reload()") 55 | }) 56 | 57 | helpMenu := builder.Menu.AddSubmenu("Help") 58 | 59 | helpMenu.AddText("Open App Data Directory", &keys.Accelerator{}, func(cb *menu.CallbackData) { 60 | app.OpenAppDataPath() 61 | }) 62 | helpMenu.AddText("Open Log File", &keys.Accelerator{}, func(cb *menu.CallbackData) { 63 | app.OpenLogFile() 64 | }) 65 | 66 | return builder.Menu 67 | } 68 | -------------------------------------------------------------------------------- /backend/ApplicationSettings.go: -------------------------------------------------------------------------------- 1 | package backend 2 | 3 | import ( 4 | _ "embed" 5 | "github.com/Masterminds/semver" 6 | "wails_vue/backend/Config" 7 | "wails_vue/backend/FileStore" 8 | ) 9 | 10 | type ApplicationSettings struct { 11 | // The title cased name used in the window title and such 12 | // "SurrealDB Explorer" 13 | Title string `json:"title"` 14 | // The lower cased name used for directories and such 15 | // "surrealdb_explorer" 16 | Name string `json:"name"` 17 | 18 | Icon []byte `json:"-"` 19 | 20 | Version *semver.Version `json:"version"` 21 | } 22 | 23 | func NewApplicationSettings() *ApplicationSettings { 24 | settings := &ApplicationSettings{ 25 | Title: "SurrealDB Explorer", 26 | Name: "surrealdb_explorer", 27 | Version: semver.MustParse("0.0.13"), 28 | } 29 | 30 | FileStore.NewStores(settings.Name) 31 | FileStore.DefineStore[Config.Window]("window_settings") 32 | FileStore.DefineStore[Config.Connections]("connections") 33 | FileStore.DefineStore[Config.QueriesList]("queries") 34 | FileStore.DefineStore[Config.Preferences]("preferences") 35 | 36 | return settings 37 | } 38 | 39 | func (a *ApplicationSettings) GetTitle() string { 40 | return a.Title 41 | } 42 | 43 | func (a *ApplicationSettings) GetName() string { 44 | return a.Name 45 | } 46 | -------------------------------------------------------------------------------- /backend/Config/Connections.go: -------------------------------------------------------------------------------- 1 | package Config 2 | 3 | import ( 4 | "context" 5 | container "github.com/Envuso/go-ioc-container" 6 | "github.com/google/uuid" 7 | "github.com/wailsapp/wails/v2/pkg/runtime" 8 | "wails_vue/backend/FileStore" 9 | ) 10 | 11 | type Connection struct { 12 | Id string `json:"id,omitempty"` 13 | Name string `json:"name,omitempty"` 14 | 15 | Host string `json:"host,omitempty"` 16 | 17 | User string `json:"user,omitempty"` 18 | Pass string `json:"pass,omitempty"` 19 | 20 | Database string `json:"database,omitempty"` 21 | Namespace string `json:"namespace,omitempty"` 22 | } 23 | 24 | type Connections struct { 25 | Ctx context.Context `json:"-"` 26 | 27 | Connections []*Connection `json:"connections"` 28 | Current *string `json:"current"` 29 | } 30 | 31 | func (connections *Connections) Setup() { 32 | connections.Connections = []*Connection{} 33 | connections.Current = nil 34 | } 35 | 36 | func (connections *Connections) Update(data *Connections) *Connections { 37 | connections.Connections = data.Connections 38 | connections.Current = data.Current 39 | 40 | err := FileStore.Save[Connections](connections) 41 | if err != nil { 42 | runtime.LogError(connections.Ctx, err.Error()) 43 | return nil 44 | } 45 | 46 | return connections 47 | } 48 | 49 | func (connections *Connections) Add(connection Connection) *Connection { 50 | connection.Id = uuid.New().String() 51 | connections.Connections = append(connections.Connections, &connection) 52 | connections.Update(connections) 53 | 54 | return &connection 55 | } 56 | 57 | func (connections *Connections) SetCurrent(connectionId *string) { 58 | connections.Current = connectionId 59 | connections.Update(connections) 60 | } 61 | 62 | func (connections *Connections) Remove(connectionId *string) *Connections { 63 | if connectionId == nil { 64 | return nil 65 | } 66 | 67 | if connections.Current != nil && *connections.Current == *connectionId { 68 | connections.Current = nil 69 | } 70 | 71 | for i, connection := range connections.Connections { 72 | if connection.Id == *connectionId { 73 | connections.Connections = append(connections.Connections[:i], connections.Connections[i+1:]...) 74 | break 75 | } 76 | } 77 | 78 | var queries *QueriesList 79 | container.Container.MakeTo(&queries) 80 | queries.RemoveQueries(*connectionId) 81 | 82 | return connections.Update(connections) 83 | } 84 | -------------------------------------------------------------------------------- /backend/Config/Preferences.go: -------------------------------------------------------------------------------- 1 | package Config 2 | 3 | import ( 4 | "context" 5 | "github.com/wailsapp/wails/v2/pkg/runtime" 6 | "wails_vue/backend/FileStore" 7 | ) 8 | 9 | type PaneSize struct { 10 | Min float64 `json:"min"` 11 | Max float64 `json:"max"` 12 | Size float64 `json:"size"` 13 | } 14 | 15 | type Preferences struct { 16 | Ctx context.Context `json:"-"` 17 | 18 | EditorFontSize int `json:"editorFontSize"` 19 | QueryResultFontSize int `json:"queryResultFontSize"` 20 | 21 | PaneSizes []PaneSize `json:"paneSizes"` 22 | PanelLayout string `json:"panelLayout"` 23 | } 24 | 25 | func (p *Preferences) Setup() { 26 | p.PaneSizes = []PaneSize{ 27 | {Min: 10, Max: 100, Size: 90}, 28 | {Min: 10, Max: 100, Size: 10}, 29 | } 30 | p.EditorFontSize = 16 31 | p.QueryResultFontSize = 14 32 | p.PanelLayout = "horizontal" 33 | } 34 | 35 | func (p *Preferences) Update(data *Preferences) { 36 | p.EditorFontSize = data.EditorFontSize 37 | p.QueryResultFontSize = data.QueryResultFontSize 38 | p.PaneSizes = data.PaneSizes 39 | p.PanelLayout = data.PanelLayout 40 | 41 | err := FileStore.Save[Preferences](p) 42 | if err != nil { 43 | runtime.LogError(p.Ctx, err.Error()) 44 | } 45 | } 46 | func (p *Preferences) UpdatePaneSizes(panes []PaneSize) { 47 | p.PaneSizes = panes 48 | p.Update(p) 49 | } 50 | -------------------------------------------------------------------------------- /backend/Config/Window.go: -------------------------------------------------------------------------------- 1 | package Config 2 | 3 | import ( 4 | "context" 5 | "github.com/wailsapp/wails/v2/pkg/runtime" 6 | ) 7 | 8 | type Window struct { 9 | Ctx context.Context `json:"-"` 10 | 11 | Width int `json:"width"` 12 | Height int `json:"height"` 13 | 14 | // The x position of the window 15 | X int `json:"x"` 16 | // The y position of the window 17 | Y int `json:"y"` 18 | } 19 | 20 | func (window *Window) Setup() { 21 | window.Width = 1024 22 | window.Height = 768 23 | window.X = -1 24 | window.Y = -1 25 | } 26 | 27 | func (window *Window) CanSetDimensions() bool { 28 | return window.Width > 0 && window.Height > 0 29 | } 30 | 31 | func (window *Window) CanSetPosition() bool { 32 | return window.X > -1 && window.Y > -1 33 | } 34 | 35 | func (window *Window) Set() { 36 | width, size := runtime.WindowGetSize(window.Ctx) 37 | x, y := runtime.WindowGetPosition(window.Ctx) 38 | 39 | window.X = x 40 | window.Y = y 41 | window.Width = width 42 | window.Height = size 43 | 44 | runtime.LogInfof(window.Ctx, "Window position: %d, %d", window.X, window.Y) 45 | runtime.LogInfof(window.Ctx, "Window size: %d, %d", window.Width, window.Height) 46 | } 47 | -------------------------------------------------------------------------------- /backend/ConfigManager.go: -------------------------------------------------------------------------------- 1 | package backend 2 | 3 | import ( 4 | "wails_vue/backend/Config" 5 | ) 6 | 7 | // AllConfig - This struct is only required for wails to export it to ts... 8 | type AllConfig struct { 9 | App *ApplicationSettings `json:"app,omitempty"` 10 | Window *Config.Window `json:"window,omitempty"` 11 | Connections *Config.Connections `json:"connections,omitempty"` 12 | Queries *Config.QueriesList `json:"queries,omitempty"` 13 | Preferences *Config.Preferences `json:"preferences,omitempty"` 14 | } 15 | -------------------------------------------------------------------------------- /backend/Updater/UpdateInfo.go: -------------------------------------------------------------------------------- 1 | package Updater 2 | 3 | import ( 4 | "github.com/Masterminds/semver" 5 | "github.com/octoper/go-ray" 6 | "time" 7 | ) 8 | 9 | type UpdateInfo struct { 10 | Version *semver.Version `json:"version"` 11 | Url string `json:"url"` 12 | Body string `json:"body"` 13 | PublishedAt time.Time `json:"publishedAt"` 14 | } 15 | 16 | func pls() { 17 | ray.Ray("") 18 | } 19 | -------------------------------------------------------------------------------- /backend/Util/Logger.go: -------------------------------------------------------------------------------- 1 | package Util 2 | 3 | import ( 4 | "github.com/wailsapp/wails/v2/pkg/logger" 5 | "log" 6 | "os" 7 | ) 8 | 9 | // FileLogger is a utility to log messages to a number of destinations 10 | type FileLogger struct { 11 | filename string 12 | backing logger.Logger 13 | } 14 | 15 | // NewFileLogger creates a new Logger. 16 | func NewFileLogger(filename string) *FileLogger { 17 | return &FileLogger{ 18 | filename: filename, 19 | backing: logger.NewDefaultLogger(), 20 | } 21 | } 22 | 23 | func (l *FileLogger) GetFilePath() string { 24 | return l.filename 25 | } 26 | 27 | // Print works like Sprintf. 28 | func (l *FileLogger) Print(message string) { 29 | f, err := os.OpenFile(l.filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) 30 | if err != nil { 31 | log.Fatal(err) 32 | } 33 | if _, err := f.WriteString(message); err != nil { 34 | f.Close() 35 | log.Fatal(err) 36 | } 37 | f.Close() 38 | 39 | l.backing.Print(message) 40 | } 41 | 42 | func (l *FileLogger) Println(message string) { 43 | l.Print(message + "\n") 44 | } 45 | 46 | // Trace level logging. Works like Sprintf. 47 | func (l *FileLogger) Trace(message string) { 48 | l.Println("TRACE | " + message) 49 | } 50 | 51 | // Debug level logging. Works like Sprintf. 52 | func (l *FileLogger) Debug(message string) { 53 | l.Println("DEBUG | " + message) 54 | } 55 | 56 | // Info level logging. Works like Sprintf. 57 | func (l *FileLogger) Info(message string) { 58 | l.Println("INFO | " + message) 59 | } 60 | 61 | // Warning level logging. Works like Sprintf. 62 | func (l *FileLogger) Warning(message string) { 63 | l.Println("WARN | " + message) 64 | } 65 | 66 | // Error level logging. Works like Sprintf. 67 | func (l *FileLogger) Error(message string) { 68 | l.Println("ERROR | " + message) 69 | } 70 | 71 | // Fatal level logging. Works like Sprintf. 72 | func (l *FileLogger) Fatal(message string) { 73 | l.Println("FATAL | " + message) 74 | os.Exit(1) 75 | } 76 | -------------------------------------------------------------------------------- /build/README.md: -------------------------------------------------------------------------------- 1 | # Build Directory 2 | 3 | The build directory is used to house all the build files and assets for your application. 4 | 5 | The structure is: 6 | 7 | * bin - Output directory 8 | * darwin - macOS specific files 9 | * windows - Windows specific files 10 | 11 | ## Mac 12 | 13 | The `darwin` directory holds files specific to Mac builds. 14 | These may be customised and used as part of the build. To return these files to the default state, simply delete them 15 | and 16 | build with `wails build`. 17 | 18 | The directory contains the following files: 19 | 20 | - `Info.plist` - the main plist file used for Mac builds. It is used when building using `wails build`. 21 | - `Info.dev.plist` - same as the main plist file but used when building using `wails dev`. 22 | 23 | ## Windows 24 | 25 | The `windows` directory contains the manifest and rc files used when building with `wails build`. 26 | These may be customised for your application. To return these files to the default state, simply delete them and 27 | build with `wails build`. 28 | 29 | - `icon.ico` - The icon used for the application. This is used when building using `wails build`. If you wish to 30 | use a different icon, simply replace this file with your own. If it is missing, a new `icon.ico` file 31 | will be created using the `appicon.png` file in the build directory. 32 | - `installer/*` - The files used to create the Windows installer. These are used when building using `wails build`. 33 | - `info.json` - Application details used for Windows builds. The data here will be used by the Windows installer, 34 | as well as the application itself (right click the exe -> properties -> details) 35 | - `wails.exe.manifest` - The main application manifest file. -------------------------------------------------------------------------------- /build/appicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/build/appicon.png -------------------------------------------------------------------------------- /build/darwin/Info.dev.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CFBundlePackageType 5 | APPL 6 | CFBundleName 7 | {{.Info.ProductName}} 8 | CFBundleExecutable 9 | {{.Name}} 10 | CFBundleIdentifier 11 | com.wails.{{.Name}} 12 | CFBundleVersion 13 | {{.Info.ProductVersion}} 14 | CFBundleGetInfoString 15 | {{.Info.Comments}} 16 | CFBundleShortVersionString 17 | {{.Info.ProductVersion}} 18 | CFBundleIconFile 19 | iconfile 20 | LSMinimumSystemVersion 21 | 10.13.0 22 | NSHighResolutionCapable 23 | true 24 | NSHumanReadableCopyright 25 | {{.Info.Copyright}} 26 | NSAppTransportSecurity 27 | 28 | NSAllowsLocalNetworking 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /build/darwin/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CFBundlePackageType 5 | APPL 6 | CFBundleName 7 | {{.Info.ProductName}} 8 | CFBundleExecutable 9 | {{.Name}} 10 | CFBundleIdentifier 11 | com.wails.{{.Name}} 12 | CFBundleVersion 13 | {{.Info.ProductVersion}} 14 | CFBundleGetInfoString 15 | {{.Info.Comments}} 16 | CFBundleShortVersionString 17 | {{.Info.ProductVersion}} 18 | CFBundleIconFile 19 | iconfile 20 | LSMinimumSystemVersion 21 | 10.13.0 22 | NSHighResolutionCapable 23 | true 24 | NSHumanReadableCopyright 25 | {{.Info.Copyright}} 26 | 27 | -------------------------------------------------------------------------------- /build/windows/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "fixed": { 3 | "file_version": "{{.Info.ProductVersion}}" 4 | }, 5 | "info": { 6 | "0000": { 7 | "ProductVersion": "{{.Info.ProductVersion}}", 8 | "CompanyName": "{{.Info.CompanyName}}", 9 | "FileDescription": "{{.Info.ProductName}}", 10 | "LegalCopyright": "{{.Info.Copyright}}", 11 | "ProductName": "{{.Info.ProductName}}", 12 | "Comments": "{{.Info.Comments}}" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /build/windows/wails.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | true/pm 12 | permonitorv2,permonitor 13 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /frontend/.idea/.name: -------------------------------------------------------------------------------- 1 | SurrealDbExplorer(Frontend) -------------------------------------------------------------------------------- /frontend/.idea/SurrealDbExplorer(Frontend).iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /frontend/.idea/git_toolbox_prj.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/.idea/jsLibraryMappings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/.idea/markdown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /frontend/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /frontend/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/.idea/tailwindcss.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /frontend/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /frontend/READ-THIS.md: -------------------------------------------------------------------------------- 1 | This template uses a work around as the default template does not compile due to this issue: 2 | https://github.com/vuejs/core/issues/1228 3 | 4 | In `tsconfig.json`, `isolatedModules` is set to `false` rather than `true` to work around the issue. -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + TypeScript + Vite 2 | 3 | This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 4 | 3 ` 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vue-tsc --noEmit && vite build", 9 | "build:no-typechecking": "vite build", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@headlessui/vue": "^1.7.7", 14 | "@heroicons/vue": "^2.0.13", 15 | "@idevelopthings/surrealdb-client-ts": "^0.0.11", 16 | "@idevelopthings/vue-class-stores": "^1.0.15", 17 | "@types/async": "^3.2.16", 18 | "@types/marked": "^4.0.8", 19 | "@types/node": "^18.11.18", 20 | "@types/semver": "^7.3.13", 21 | "@vueuse/components": "^10.0.2", 22 | "@vueuse/core": "^9.8.2", 23 | "async": "^3.2.4", 24 | "axios": "^1.2.3", 25 | "clipboard": "^2.0.11", 26 | "json-editor-vue": "^0.10.5", 27 | "marked": "^4.2.12", 28 | "monaco-editor": "^0.34.1", 29 | "semver": "^7.3.8", 30 | "shiki": "^0.12.1", 31 | "splitpanes": "^3.1.5", 32 | "surrealdb.schema": "^0.0.12", 33 | "tailwind-merge": "^1.8.0", 34 | "tsparticles": "^2.8.0", 35 | "tsparticles-engine": "^2.8.0", 36 | "typesafe-local-storage": "^0.0.7", 37 | "vanilla-jsoneditor": "^0.11.5", 38 | "vue": "^3.2.37", 39 | "vue-frontend-utils": "0.0.28", 40 | "vue-router": "4" 41 | }, 42 | "devDependencies": { 43 | "@babel/types": "^7.18.10", 44 | "@tailwindcss/typography": "^0.5.9", 45 | "@types/splitpanes": "^2.2.1", 46 | "@vitejs/plugin-vue": "^3.0.3", 47 | "autoprefixer": "^10.4.13", 48 | "postcss": "^8.4.20", 49 | "tailwindcss": "^3.3.1", 50 | "typescript": "^5.0.4", 51 | "vite": "^3.0.7", 52 | "vite-plugin-monaco-editor": "^1.1.0", 53 | "vue-tsc": "^0.39.5" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /frontend/package.json.md5: -------------------------------------------------------------------------------- 1 | 02bedd2d3f89495e5e7f3b86ad07d7a1 -------------------------------------------------------------------------------- /frontend/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /frontend/src/.generated/event.d.ts: -------------------------------------------------------------------------------- 1 | 2 | declare module "vue-frontend-utils" { 3 | import {RegisteredEvent} from "vue-frontend-utils"; 4 | 5 | interface EventMap { 6 | "modal:table:create-entry:open": { table: TableViewer; }, 7 | "modal:table:create-entry:close": { table: TableViewer; }, 8 | "modal:table:edit-entry:open": { table: TableViewer; item: any; }, 9 | "modal:table:edit-entry:close": { table: TableViewer; item: any; }, 10 | "modal:queries:panel:open": { type: string; }, 11 | "modal:queries:panel:close": { type: string; }, 12 | "modal:queries:save:open": { type: string; }, 13 | "modal:queries:save:close": { type: string; }, 14 | "modal:updates:info:open": { info: UpdateInformation; }, 15 | "modal:updates:info:close": { info: UpdateInformation; }, 16 | 17 | "editor:run:" + this.currentType: { content: string; }, 18 | "confetti:start": { maxLoops: number; }, 19 | "confetti:stop": any, 20 | "database:lost-connection": any, 21 | "database:reconnected": number, 22 | "database:disconnected": Connection, 23 | 24 | } 25 | 26 | } 27 | 28 | export {}; 29 | -------------------------------------------------------------------------------- /frontend/src/.generated/modal.d.ts: -------------------------------------------------------------------------------- 1 | 2 | declare module "vue-frontend-utils" { 3 | 4 | import type {IModalRegistration} from "vue-frontend-utils"; 5 | 6 | interface ModalDefinitions { 7 | "table:create-entry": { table: TableViewer; }, 8 | "table:edit-entry": { table: TableViewer; item: any; }, 9 | "queries:panel": { type: string; }, 10 | "queries:save": { type: string; }, 11 | "updates:info": { info: UpdateInformation; }, 12 | 13 | } 14 | 15 | interface ModalVars { 16 | createEntryModal: ModalDefinitions["table:create-entry"], 17 | editEntryModal: ModalDefinitions["table:edit-entry"], 18 | queriesPanelModal: ModalDefinitions["queries:panel"], 19 | saveQueryModal: ModalDefinitions["queries:save"], 20 | updateModal: ModalDefinitions["updates:info"], 21 | 22 | } 23 | 24 | interface IModalManager { 25 | get(name: T): IModalRegistration; 26 | 27 | isRegistered(name: T): boolean; 28 | 29 | unregister(name: T): void; 30 | 31 | show(name: T, data?: T extends keyof ModalDefinitions ? ModalDefinitions[T] : any): void; 32 | 33 | showOnly(name: T, data?: any): void; 34 | 35 | opened(name: T, data?: any): void; 36 | 37 | closed(name: T): void; 38 | 39 | isOpen(name: T): boolean; 40 | 41 | closeAllExcept(name: T): void; 42 | 43 | getData(name: T): T extends keyof ModalDefinitions ? ModalDefinitions[T] : any | any; 44 | } 45 | 46 | } 47 | 48 | export {}; 49 | -------------------------------------------------------------------------------- /frontend/src/App.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 54 | -------------------------------------------------------------------------------- /frontend/src/Components/ConfirmButton.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 81 | 82 | -------------------------------------------------------------------------------- /frontend/src/Components/Layout/AppSidebar.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 73 | 74 | -------------------------------------------------------------------------------- /frontend/src/Components/Layout/SidebarItem.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 51 | 52 | -------------------------------------------------------------------------------- /frontend/src/Components/Link.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 19 | -------------------------------------------------------------------------------- /frontend/src/Components/ModalDrawer.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | -------------------------------------------------------------------------------- /frontend/src/Components/ModalTypes.ts: -------------------------------------------------------------------------------- 1 | import {type Ref} from "vue"; 2 | 3 | export type ModalType = "danger" | "info" | "success"; 4 | 5 | export interface ModalHandler { 6 | isProcessing: Ref, 7 | 8 | close(): void, 9 | setProcessing(processing: boolean): void, 10 | startProcessing(): void, 11 | finishProcessing(): void, 12 | 13 | showError(error: string | Error): void, 14 | resetError(): void, 15 | 16 | done():void; 17 | } 18 | -------------------------------------------------------------------------------- /frontend/src/Components/SimpleButton.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 57 | 58 | -------------------------------------------------------------------------------- /frontend/src/Components/Spinner.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /frontend/src/Components/StatusBar/ConnectionStatus/ConnectionStatusDot.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 44 | 45 | -------------------------------------------------------------------------------- /frontend/src/Components/StatusBar/ConnectionStatus/CurrentConnection.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 56 | -------------------------------------------------------------------------------- /frontend/src/Components/StatusBar/StatusBar.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /frontend/src/Components/StatusBar/UpdateStatus/UpdateInfoModal.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 43 | 44 | 50 | -------------------------------------------------------------------------------- /frontend/src/Components/StatusBar/UpdateStatus/UpdateStatus.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 28 | 29 | -------------------------------------------------------------------------------- /frontend/src/Components/StatusBar/UpdateStatus/UpdateStatusDot.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 33 | 34 | -------------------------------------------------------------------------------- /frontend/src/Events.ts: -------------------------------------------------------------------------------- 1 | import {defineEvent} from "vue-frontend-utils"; 2 | 3 | defineEvent<{ message: string }>("something:else"); 4 | 5 | 6 | export const startConfetti = defineEvent<{ maxLoops: number }>("confetti:start"); 7 | export const stopConfetti = defineEvent("confetti:stop"); 8 | -------------------------------------------------------------------------------- /frontend/src/Modals.ts: -------------------------------------------------------------------------------- 1 | import {defineModal} from "vue-frontend-utils"; 2 | import CreateEntryModal from "./Pages/Tables/CreateEntryModal.vue"; 3 | import {TableViewer} from "./Services/TableViewer/TableViewer"; 4 | import UpdateInfoModal from "./Components/StatusBar/UpdateStatus/UpdateInfoModal.vue"; 5 | import {UpdateInformation} from "./Services/Updater/UpdateInformation"; 6 | import EditEntryModal from "./Pages/Tables/EditEntryModal.vue"; 7 | 8 | const createEntryModal = defineModal<{ table: TableViewer }>("table:create-entry", CreateEntryModal); 9 | const editEntryModal = defineModal<{ table: TableViewer, item: any }>("table:edit-entry", EditEntryModal); 10 | 11 | const queriesPanelModal = defineModal<{ type?: string }>("queries:panel", null); 12 | const saveQueryModal = defineModal<{ type?: string }>("queries:save", null); 13 | 14 | const updateModal = defineModal<{ info: UpdateInformation }>("updates:info", UpdateInfoModal); 15 | -------------------------------------------------------------------------------- /frontend/src/Pages/Connections/ConnectionManager.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 23 | 24 | -------------------------------------------------------------------------------- /frontend/src/Pages/Home.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /frontend/src/Pages/Query/ActionsHeader.vue: -------------------------------------------------------------------------------- 1 | 58 | 59 | 64 | 65 | -------------------------------------------------------------------------------- /frontend/src/Pages/Query/QueriesPanel/QueriesPanel.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 54 | 55 | -------------------------------------------------------------------------------- /frontend/src/Pages/Query/QueriesPanel/QueryHistory.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /frontend/src/Pages/Query/QueriesPanel/SaveQueryModal.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 66 | 67 | -------------------------------------------------------------------------------- /frontend/src/Pages/Query/QueriesPanel/SavedQueries.vue: -------------------------------------------------------------------------------- 1 | 50 | 51 | 69 | 70 | -------------------------------------------------------------------------------- /frontend/src/Pages/Query/Query.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 69 | 70 | 72 | 73 | -------------------------------------------------------------------------------- /frontend/src/Pages/Query/ResultPanelHeader.vue: -------------------------------------------------------------------------------- 1 | 47 | 48 | 53 | 54 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/Fields/ThingField.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 24 | 25 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/Sections/TableActions.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 44 | 45 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/Sections/TableError.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 29 | 30 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/Sections/TableFooter.vue: -------------------------------------------------------------------------------- 1 | 61 | 62 | 70 | 71 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/Sections/TableSelectingItemsBanner.vue: -------------------------------------------------------------------------------- 1 | 13 | 22 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/TableFilters.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 59 | 60 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/TableSidebarItem.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 66 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/Tables.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 24 | 25 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/TablesSidebar.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 30 | 31 | -------------------------------------------------------------------------------- /frontend/src/Pages/Tables/ViewTableEntry.vue: -------------------------------------------------------------------------------- 1 | 63 | 64 | 95 | 96 | -------------------------------------------------------------------------------- /frontend/src/Routes.ts: -------------------------------------------------------------------------------- 1 | import {createRouter, createWebHashHistory, type RouteRecordRaw} from "vue-router"; 2 | 3 | const routes: RouteRecordRaw[] = [ 4 | { 5 | name : "home", 6 | path : "/", 7 | component : () => import("./Pages/Home.vue"), 8 | }, 9 | {name : "query", path : "/query", component : () => import("./Pages/Query/Query.vue")}, 10 | {name : "logins", path : "/logins", component : () => import("./Pages/Home.vue")}, 11 | {name : "tokens", path : "/tokens", component : () => import("./Pages/Home.vue")}, 12 | {name : "scopes", path : "/scopes", component : () => import("./Pages/Home.vue")}, 13 | { 14 | name : "tables", 15 | path : "/tables", 16 | component : () => import("./Pages/Tables/Tables.vue"), 17 | props : true, 18 | 19 | children : [ 20 | { 21 | name : "tables.view", 22 | path : "/tables/:name/:id?", 23 | component : () => import("./Pages/Tables/ViewTable.vue"), 24 | props : true, 25 | }, 26 | 27 | ] 28 | }, 29 | ]; 30 | 31 | const router = createRouter({ 32 | history : createWebHashHistory(), 33 | routes : routes, 34 | }); 35 | 36 | export {router, routes}; 37 | -------------------------------------------------------------------------------- /frontend/src/Services/Confetti/Emotes.ts: -------------------------------------------------------------------------------- 1 | import emotes from "./../../assets/emotes.json"; 2 | 3 | export type EmoteType = { 4 | id: string, 5 | code: string, 6 | imageType: string, 7 | animated: boolean, 8 | url: string, 9 | } 10 | 11 | let loadedEmoteFileNames: string[]; 12 | 13 | export function getEmotesInfo() { 14 | return emotes as EmoteType[]; 15 | } 16 | 17 | export function getAllEmotes(): string[] { 18 | if (loadedEmoteFileNames) { 19 | return loadedEmoteFileNames; 20 | } 21 | 22 | const assets = import.meta.glob("./../../assets/emotes/*", {eager : true}) as Record; 23 | 24 | return loadedEmoteFileNames = Object.values(assets).map(e => e.default); 25 | } 26 | 27 | 28 | export function getRandomEmotes(amount: number): string[] { 29 | const emotes = getAllEmotes(); 30 | const randomEmotes: string[] = []; 31 | 32 | while (randomEmotes.length < amount) { 33 | const randomIndex = Math.floor(Math.random() * emotes.length); 34 | const randomEmote = emotes[randomIndex]; 35 | 36 | if (randomEmotes.includes(randomEmote)) { 37 | continue; 38 | } 39 | 40 | randomEmotes.push(randomEmote); 41 | } 42 | 43 | 44 | return randomEmotes; 45 | } 46 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-boolean.vue: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-date.vue: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-function.vue: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-number.vue: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-record-id.vue: -------------------------------------------------------------------------------- 1 | 96 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-regexp.vue: -------------------------------------------------------------------------------- 1 | 79 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-string.vue: -------------------------------------------------------------------------------- 1 | 78 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/types/json-undefined.vue: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/Components/utils.ts: -------------------------------------------------------------------------------- 1 | export const debounce = function(func, wait) { 2 | let startTime = Date.now(); 3 | let timer; 4 | 5 | return (...args) => { 6 | if (Date.now() - startTime < wait && timer) { 7 | clearTimeout(timer); 8 | } 9 | timer = setTimeout(() => { 10 | func(...args); 11 | }, wait); 12 | startTime = Date.now(); 13 | } 14 | } -------------------------------------------------------------------------------- /frontend/src/Services/JsonViewer/index.ts: -------------------------------------------------------------------------------- 1 | import JsonViewer from './Components/json-viewer.vue'; 2 | 3 | 4 | export { 5 | JsonViewer 6 | }; 7 | const install = (app) => { 8 | app.component(JsonViewer.name, JsonViewer); 9 | }; 10 | 11 | export default { 12 | install, 13 | }; 14 | -------------------------------------------------------------------------------- /frontend/src/Services/Logger.ts: -------------------------------------------------------------------------------- 1 | import {LogError, LogInfo, LogDebug, LogTrace, LogWarning} from "../../wailsjs/runtime"; 2 | 3 | const loggerSymbol = Symbol("Logger"); 4 | class LoggerInstance { 5 | 6 | private originalMethods = { 7 | debug : console.debug, 8 | error : console.error, 9 | info : console.info, 10 | log : console.log, 11 | trace : console.trace, 12 | warn : console.warn, 13 | } 14 | 15 | constructor() { 16 | console[loggerSymbol] = true; 17 | } 18 | 19 | public static patch() { 20 | if(console[loggerSymbol]) { 21 | return; 22 | } 23 | 24 | return (new this()); 25 | } 26 | 27 | public error(...data: any[]) { 28 | this.originalMethods.error(...arguments); 29 | if(!window.runtime) return; 30 | LogError(data.join(" ")); 31 | } 32 | 33 | public debug(...data: any[]) { 34 | this.originalMethods.debug(...arguments); 35 | if(!window.runtime) return; 36 | LogDebug(data.join(" ")); 37 | } 38 | 39 | public info(...data: any[]) { 40 | this.originalMethods.info(...arguments); 41 | if(!window.runtime) return; 42 | LogInfo(data.join(" ")); 43 | } 44 | 45 | public log(...data: any[]) { 46 | this.originalMethods.log(...arguments); 47 | if(!window.runtime) return; 48 | LogDebug(data.join(" ")); 49 | } 50 | 51 | public trace(...data: any[]) { 52 | this.originalMethods.trace(...arguments); 53 | if(!window.runtime) return; 54 | LogTrace(data.join(" ")); 55 | } 56 | 57 | public warn(...data: any[]) { 58 | this.originalMethods.warn(...arguments); 59 | LogWarning(data.join(" ")); 60 | } 61 | } 62 | export const Logger = LoggerInstance.patch(); 63 | -------------------------------------------------------------------------------- /frontend/src/Services/Navigator.ts: -------------------------------------------------------------------------------- 1 | import {router} from "@/Routes"; 2 | import {BrowserOpenURL} from "../../wailsjs/runtime"; 3 | 4 | class NavigatorInstance { 5 | public static base = window.location; 6 | 7 | public navigate(event: PointerEvent, uri: string) { 8 | const url = toUrl(uri); 9 | 10 | if (this.isExternalUrl(url)) { 11 | event.preventDefault(); 12 | if (!this.canOpenInBrowser(url)) { 13 | console.log("prevented external navigation, not whitelisted: ", url); 14 | return false; 15 | } 16 | 17 | BrowserOpenURL(url.toString()); 18 | 19 | console.log("opened in browser instead of navigation: ", url); 20 | 21 | return true; 22 | } 23 | 24 | router.push(url.pathname); 25 | 26 | return true; 27 | } 28 | 29 | public isWhiteListedHost(url: URL) { 30 | return [ 31 | "github.com" 32 | ].includes(url.hostname); 33 | } 34 | 35 | public canOpenInBrowser(url: URL) { 36 | return this.isWhiteListedHost(url); 37 | } 38 | 39 | public isExternalUrl(uri: string | URL) { 40 | return toUrl(uri).hostname !== NavigatorInstance.base.hostname; 41 | } 42 | 43 | } 44 | 45 | function toUrl(url: string | URL) { 46 | if (typeof url === "string") { 47 | return new URL(url); 48 | } 49 | 50 | return url; 51 | 52 | } 53 | 54 | export const AppNavigator = new NavigatorInstance(); 55 | -------------------------------------------------------------------------------- /frontend/src/Services/TableViewer/TableFilters.ts: -------------------------------------------------------------------------------- 1 | export class TableFilter { 2 | 3 | public constructor( 4 | public field: string = "", 5 | public operator: string = "=", 6 | public value: any = "", 7 | ) { 8 | 9 | } 10 | 11 | public isValid(): boolean { 12 | if (!this.value || !this.field || !this.operator) return false; 13 | 14 | if (this.value.trim() === "") { 15 | return false; 16 | } 17 | 18 | if (this.field.trim() === "") { 19 | return false; 20 | } 21 | 22 | return this.operator.trim() !== ""; 23 | } 24 | } 25 | 26 | export class TableFilters { 27 | 28 | public show: boolean = false; 29 | 30 | public filters: TableFilter[] = []; 31 | 32 | public input: TableFilter = new TableFilter("id"); 33 | 34 | private _validSegments: TableFilter[] = []; 35 | 36 | public getValidatedSegments() { 37 | return this.filters.filter(f => f.isValid()); 38 | } 39 | 40 | public getQuery() { 41 | const segments = this.filters; // this.getValidatedSegments(); 42 | if (segments.length === 0) return null; 43 | 44 | const where = segments.map( 45 | f => `${f.field} ${f.operator} ${f.value}` 46 | ).join(" AND "); 47 | 48 | return `WHERE ${where}`; 49 | } 50 | 51 | public add() { 52 | this.filters.push(this.input); 53 | this.input = new TableFilter(); 54 | 55 | this.changed(); 56 | } 57 | 58 | public remove(idx) { 59 | this.filters.splice(idx, 1); 60 | 61 | this.changed(); 62 | } 63 | 64 | public toggle() { 65 | this.show = !this.show; 66 | } 67 | 68 | public has(): boolean { 69 | // return this._validSegments.length > 0; 70 | 71 | return this.filters.length > 0; 72 | } 73 | 74 | public hasAnyFilters(): boolean { 75 | return this.filters.length > 0; 76 | } 77 | 78 | public invalidSegmentCount() { 79 | return this.filters.length - this._validSegments.length; 80 | } 81 | 82 | private changed(): void { 83 | this._validSegments = this.getValidatedSegments(); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /frontend/src/Services/Theme.ts: -------------------------------------------------------------------------------- 1 | import {type ColorKeys, colors} from "../.generated/Colors"; 2 | 3 | export class Theme { 4 | public static colors: { [K in keyof typeof colors]: string }; 5 | 6 | static load() { 7 | Theme.colors = colors; 8 | } 9 | 10 | static get(color: K): (typeof colors)[K] { 11 | if (!Theme.colors) Theme.load(); 12 | 13 | return Theme.colors[color]; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/Services/Updater/UpdateInformation.ts: -------------------------------------------------------------------------------- 1 | import {SemVer} from "semver"; 2 | import {marked} from "marked"; 3 | import {compile, h, type VNode} from "vue"; 4 | 5 | export interface IUpdateInformation { 6 | body: string; 7 | version: string; 8 | url: string; 9 | publishedAt: string; 10 | } 11 | 12 | const markedRenderer = new marked.Renderer(); 13 | 14 | markedRenderer.link = (href: string | null, title: string | null, text: string) => { 15 | return `${text}`; 16 | }; 17 | 18 | function processGhMarkdown(raw: string) { 19 | const lines = raw.split("\n"); 20 | 21 | for (let i = 0; i < lines.length; i++) { 22 | const line = lines[i]; 23 | 24 | if (line.startsWith("- ")) { 25 | const hash = line.split(":")[0].replace("- ", "").trim(); 26 | const url = "https://github.com/idevelopthings/SurrealDB-Explorer/commit/" + hash; 27 | 28 | lines[i] = line.replace(hash, `[${hash}](${url})`); 29 | } 30 | } 31 | 32 | return lines.join("\n"); 33 | } 34 | 35 | export class UpdateInformation { 36 | body: string; 37 | 38 | processingBody: boolean = false; 39 | 40 | bodyComponent: VNode | null = null; 41 | 42 | version: SemVer; 43 | url: string; 44 | publishedAt: Date; 45 | 46 | constructor(data: IUpdateInformation) { 47 | this.body = data.body; 48 | this.version = new SemVer(data.version); 49 | this.url = data.url; 50 | this.publishedAt = new Date(data.publishedAt); 51 | } 52 | 53 | public async process() { 54 | if (this.processingBody) { 55 | return; 56 | } 57 | 58 | try { 59 | this.processingBody = true; 60 | 61 | const rawHtml = marked(processGhMarkdown(this.body), {renderer : markedRenderer}); 62 | 63 | const compiled = compile(`
${rawHtml}
`, {hoistStatic : true}); 64 | 65 | this.bodyComponent = h("div", {class : "prose prose-invert"}, [ 66 | h(compiled), 67 | ]); 68 | } catch (error) { 69 | console.error(error); 70 | } finally { 71 | this.processingBody = false; 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /frontend/src/Services/Updater/Updater.ts: -------------------------------------------------------------------------------- 1 | import {EventsOn} from "../../../wailsjs/runtime"; 2 | import {reactive} from "vue"; 3 | import {UpdateCheck, GetCurrentVersion} from "../../../wailsjs/go/backend/App"; 4 | import {SemVer} from "semver"; 5 | import {UpdateInformation, type IUpdateInformation} from "./UpdateInformation"; 6 | 7 | 8 | 9 | interface IState { 10 | current: SemVer | null; 11 | info: UpdateInformation | null; 12 | hide: boolean; 13 | } 14 | 15 | export class Updater { 16 | 17 | public state = reactive({ 18 | current : null, 19 | info : null, 20 | hide : false 21 | }) as IState; 22 | 23 | public static async init() { 24 | const inst = new Updater(); 25 | 26 | if (!window.runtime) return; 27 | 28 | inst.state.current = new SemVer(await GetCurrentVersion()); 29 | 30 | const updateResult = await UpdateCheck(); 31 | if (updateResult) { 32 | await inst.updateAvailable(updateResult as IUpdateInformation); 33 | } 34 | 35 | EventsOn("update_available", (data: IUpdateInformation) => { 36 | inst.updateAvailable(data); 37 | }); 38 | 39 | return inst; 40 | } 41 | 42 | 43 | private async updateAvailable(data: IUpdateInformation) { 44 | if (this.state.info?.version && this.state.info.version.toString() === data.version) { 45 | console.log("ignoring event, version is same.", this.state.info.version.toString(), data.version); 46 | return; 47 | } 48 | 49 | try { 50 | const info = new UpdateInformation(data); 51 | await info.process(); 52 | this.state.info = info; 53 | } catch (e) { 54 | console.error(e); 55 | } 56 | } 57 | 58 | get hide() { 59 | return this.state.hide; 60 | } 61 | 62 | set hide(value: boolean) { 63 | this.state.hide = value; 64 | } 65 | 66 | get hasUpdateAvailable() { 67 | if(!this.state.info) { 68 | return false; 69 | } 70 | 71 | return this.state.info.version.compare(this.state.current) === 1; 72 | } 73 | 74 | get currentVersion() { 75 | return this.state.current; 76 | } 77 | 78 | get info() { 79 | return this.state.info; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /frontend/src/Services/Utils/Timeout.ts: -------------------------------------------------------------------------------- 1 | import {ref, getCurrentInstance, onBeforeUnmount} from "vue"; 2 | import {useSafeOnBeforeUnmount} from "@/Services/Utils/Vue"; 3 | 4 | 5 | export function asyncTimeout(ms: number) { 6 | return new Promise(resolve => setTimeout(resolve, ms)); 7 | } 8 | 9 | export function useTimeout(fn: Function, ms: number) { 10 | const timeout = ref(null); 11 | 12 | function start() { 13 | if (timeout.value) { 14 | return; 15 | } 16 | timeout.value = setTimeout(fn, ms); 17 | } 18 | 19 | function setTime(newMs: number) { 20 | ms = newMs; 21 | } 22 | 23 | function stop() { 24 | if (!timeout.value) { 25 | return; 26 | } 27 | clearTimeout(timeout.value); 28 | timeout.value = null; 29 | } 30 | 31 | const comp = getCurrentInstance(); 32 | if (comp) { 33 | onBeforeUnmount(stop, comp); 34 | } 35 | 36 | return { 37 | start, 38 | stop, 39 | setTime, 40 | }; 41 | } 42 | 43 | export function useDebounce(fn: Function, ms: number) { 44 | const timeout = ref(null); 45 | 46 | function start() { 47 | if (timeout.value) { 48 | clearTimeout(timeout.value); 49 | } 50 | timeout.value = setTimeout(fn, ms); 51 | } 52 | 53 | function stop() { 54 | if (!timeout.value) { 55 | return; 56 | } 57 | clearTimeout(timeout.value); 58 | timeout.value = null; 59 | } 60 | 61 | useSafeOnBeforeUnmount(stop); 62 | 63 | return { 64 | start, 65 | stop, 66 | }; 67 | } 68 | -------------------------------------------------------------------------------- /frontend/src/Services/Utils/Vue.ts: -------------------------------------------------------------------------------- 1 | import {getCurrentInstance, type ComponentInternalInstance, onMounted, onUnmounted, onBeforeUnmount} from "vue"; 2 | 3 | export function ifComponent(fn: (comp: ComponentInternalInstance) => void | Promise) { 4 | const comp = getCurrentInstance(); 5 | if (comp) { 6 | fn(comp); 7 | } 8 | } 9 | 10 | export function useSafeOnMounted(fn: () => void | Promise) { 11 | ifComponent(comp => { 12 | onMounted(fn, comp); 13 | }); 14 | } 15 | 16 | export function useSafeOnUnmounted(fn: () => void | Promise) { 17 | ifComponent(comp => { 18 | onUnmounted(fn, comp); 19 | }); 20 | } 21 | 22 | export function useSafeOnBeforeUnmount(fn: () => void | Promise) { 23 | ifComponent(comp => { 24 | onBeforeUnmount(fn, comp) 25 | }); 26 | } 27 | -------------------------------------------------------------------------------- /frontend/src/Stores/Generated/stores.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@vue/runtime-core" { 2 | import { schemaStore } from "./../SchemaStore"; 3 | import { connectionStore } from "./../ConnectionStore"; 4 | import { app } from "./../AppStore"; 5 | import { queryPanel } from "./../QueriesPanelStore"; 6 | import { queryPage } from "./../QueryPageStore"; 7 | import { tableStore } from "./../TableStore"; 8 | interface ComponentCustomProperties { 9 | $schema: typeof schemaStore; 10 | $connection: typeof connectionStore; 11 | $app: typeof app; 12 | $queriesPanel: typeof queryPanel; 13 | $queryPage: typeof queryPage; 14 | $table: typeof tableStore; 15 | } 16 | } 17 | export {}; 18 | -------------------------------------------------------------------------------- /frontend/src/Stores/QueriesPanelStore.ts: -------------------------------------------------------------------------------- 1 | import {Store} from "@idevelopthings/vue-class-stores/vue"; 2 | import {useAsyncHandler, useMemoizedAsyncHandler} from "vue-frontend-utils"; 3 | import {SaveQuery, GetQueries, DeleteQuery} from "../../wailsjs/go/Config/QueriesList"; 4 | import {Editor} from "../Services/Monaco/Editor"; 5 | import {connectionStore} from "./ConnectionStore"; 6 | import {Config} from "../../wailsjs/go/models"; 7 | import SaveQueryRequest = Config.SaveQueryRequest; 8 | 9 | 10 | interface IQueriesPanelStore { 11 | list: { 12 | saved: Array; 13 | history: Array; 14 | }; 15 | } 16 | 17 | export const saveQuery = useAsyncHandler(async (name: string) => { 18 | const query = await SaveQuery(SaveQueryRequest.createFrom({ 19 | title : name, 20 | query : Editor.content.value, 21 | connectionId : connectionStore.$current.id 22 | })); 23 | 24 | queryPanel.saved.unshift(query); 25 | 26 | return query; 27 | }); 28 | 29 | export const loadSavedQueries = useAsyncHandler(async (connectionId: string) => { 30 | const query = await GetQueries(connectionId); 31 | 32 | queryPanel.setSavedQueries(query || []); 33 | 34 | return query; 35 | }); 36 | 37 | export const deleteSavedQuery = useAsyncHandler(async (queryId: string) => { 38 | const queries = await DeleteQuery(queryId); 39 | 40 | queryPanel.setSavedQueries(queries); 41 | 42 | return queries; 43 | }); 44 | 45 | 46 | class QueriesPanelStore extends Store() { 47 | 48 | get state(): IQueriesPanelStore { 49 | return { 50 | list : { 51 | saved : [], 52 | history : [], 53 | } 54 | }; 55 | } 56 | 57 | setSavedQueries(queries: Array) { 58 | // Sort queries by id str (the newest first) 59 | 60 | this.state.list.saved = queries.sort((a, b) => b.id.localeCompare(a.id)); 61 | } 62 | 63 | get saved() { 64 | return this.state.list.saved; 65 | } 66 | 67 | async deleteSaved(query: Config.Query) { 68 | if ((query as any)._deleting) return; 69 | 70 | (query as any)._deleting = true; 71 | 72 | await deleteSavedQuery(query.id); 73 | 74 | (query as any)._deleting = false; 75 | } 76 | 77 | } 78 | 79 | export const queryPanel = new QueriesPanelStore(); 80 | 81 | -------------------------------------------------------------------------------- /frontend/src/Stores/SchemaStore.ts: -------------------------------------------------------------------------------- 1 | import {Store, OnInit, AfterAll, Computed} from "@idevelopthings/vue-class-stores/vue"; 2 | import {SurrealSchema, Schema, SchemaTable, type SurrealDbConfig, type JsonSchema} from "surrealdb.schema"; 3 | import {languages} from "monaco-editor"; 4 | 5 | 6 | interface ISchemaStore { 7 | loading: boolean; 8 | surrealSchema: SurrealSchema; 9 | schema: Schema, 10 | tables: SchemaTable[]; 11 | } 12 | 13 | class SchemaStore extends Store() { 14 | 15 | public jsonSchemaResult: JsonSchema; 16 | public jsonSchema: languages.json.DiagnosticsOptions["schemas"] = null; 17 | 18 | get state(): ISchemaStore { 19 | return { 20 | loading : true, 21 | surrealSchema : null, 22 | schema : {} as Schema, 23 | tables : [], 24 | }; 25 | } 26 | 27 | 28 | async loadSchema(config: SurrealDbConfig) { 29 | this.$loading = true; 30 | 31 | const sschema = SurrealSchema.init(config); 32 | 33 | this.$schema = await sschema.getSchema({ 34 | generateId : true, 35 | deleteOriginalNestedObjectFields : true, 36 | handleNestedObjects : true, 37 | removeArrayChildren : true, 38 | }); 39 | 40 | if (!this.jsonSchemaResult) { 41 | this.jsonSchemaResult = await sschema.getJsonSchema(); 42 | 43 | const schemas = []; 44 | if (this.jsonSchemaResult) { 45 | for (let $defsKey in this.jsonSchemaResult.schema.$defs) { 46 | 47 | const schemaClone = {...this.jsonSchemaResult.schema.$defs[$defsKey] as any}; 48 | delete schemaClone.$id; 49 | 50 | schemas.push({ 51 | uri : `json-schema://${$defsKey}`, 52 | fileMatch : ["*"], 53 | schema : schemaClone, 54 | }); 55 | } 56 | } 57 | 58 | this.jsonSchema = schemas; 59 | 60 | } 61 | 62 | this.$tables = Object.values(this.$schema.tables); 63 | this.$loading = false; 64 | } 65 | 66 | get isLoading() { 67 | return this.state.loading; 68 | } 69 | 70 | get schema() { 71 | return this.state.schema; 72 | } 73 | 74 | get tables() { 75 | return this.state.tables; 76 | } 77 | 78 | } 79 | 80 | export const schemaStore = new SchemaStore(); 81 | -------------------------------------------------------------------------------- /frontend/src/Styles/split-panes.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .splitpanes.sdb-splitter-theme .splitpanes__pane { 4 | @apply bg-main-900; 5 | } 6 | 7 | .splitpanes.sdb-splitter-theme .splitpanes__splitter { 8 | @apply bg-main-700 select-none; 9 | box-sizing: border-box; 10 | position: relative; 11 | flex-shrink: 0 12 | } 13 | 14 | .splitpanes.sdb-splitter-theme .splitpanes__splitter:before, .splitpanes.sdb-splitter-theme .splitpanes__splitter:after { 15 | content: ""; 16 | position: absolute; 17 | top: 50%; 18 | left: 50%; 19 | @apply bg-main-300; 20 | transition: background-color .3s 21 | } 22 | 23 | .splitpanes.sdb-splitter-theme .splitpanes__splitter:hover:before, .splitpanes.sdb-splitter-theme .splitpanes__splitter:hover:after { 24 | @apply bg-main-200; 25 | } 26 | 27 | .splitpanes.sdb-splitter-theme .splitpanes__splitter:first-child { 28 | cursor: auto 29 | } 30 | 31 | .sdb-splitter-theme.splitpanes .splitpanes .splitpanes__splitter { 32 | z-index: 1 33 | } 34 | 35 | .sdb-splitter-theme.splitpanes--vertical > .splitpanes__splitter, .sdb-splitter-theme .splitpanes--vertical > .splitpanes__splitter { 36 | width: 7px; 37 | @apply border-l border-main-500; 38 | margin-left: -1px 39 | } 40 | 41 | .sdb-splitter-theme.splitpanes--vertical > .splitpanes__splitter:before, .sdb-splitter-theme.splitpanes--vertical > .splitpanes__splitter:after, .sdb-splitter-theme .splitpanes--vertical > .splitpanes__splitter:before, .sdb-splitter-theme .splitpanes--vertical > .splitpanes__splitter:after { 42 | transform: translateY(-50%); 43 | width: 1px; 44 | height: 30px 45 | } 46 | 47 | .sdb-splitter-theme.splitpanes--vertical > .splitpanes__splitter:before, .sdb-splitter-theme .splitpanes--vertical > .splitpanes__splitter:before { 48 | margin-left: -2px 49 | } 50 | 51 | .sdb-splitter-theme.splitpanes--vertical > .splitpanes__splitter:after, .sdb-splitter-theme .splitpanes--vertical > .splitpanes__splitter:after { 52 | margin-left: 1px 53 | } 54 | 55 | .sdb-splitter-theme.splitpanes--horizontal > .splitpanes__splitter, .sdb-splitter-theme .splitpanes--horizontal > .splitpanes__splitter { 56 | height: 7px; 57 | @apply border-t border-main-500; 58 | margin-top: -1px 59 | } 60 | 61 | .sdb-splitter-theme.splitpanes--horizontal > .splitpanes__splitter:before, .sdb-splitter-theme.splitpanes--horizontal > .splitpanes__splitter:after, .sdb-splitter-theme .splitpanes--horizontal > .splitpanes__splitter:before, .sdb-splitter-theme .splitpanes--horizontal > .splitpanes__splitter:after { 62 | transform: translate(-50%); 63 | width: 30px; 64 | height: 1px 65 | } 66 | 67 | .sdb-splitter-theme.splitpanes--horizontal > .splitpanes__splitter:before, .sdb-splitter-theme .splitpanes--horizontal > .splitpanes__splitter:before { 68 | margin-top: -2px 69 | } 70 | 71 | .sdb-splitter-theme.splitpanes--horizontal > .splitpanes__splitter:after, .sdb-splitter-theme .splitpanes--horizontal > .splitpanes__splitter:after { 72 | margin-top: 1px 73 | } 74 | -------------------------------------------------------------------------------- /frontend/src/Window.ts: -------------------------------------------------------------------------------- 1 | import {type App} from "vue"; 2 | 3 | declare global { 4 | interface Window { 5 | getZoom(): number; 6 | zoomIn(): void; 7 | zoomOut(): void; 8 | resetZoom(): void; 9 | app: App; 10 | runtime: any; 11 | } 12 | } 13 | 14 | window.getZoom = () => { 15 | return parseFloat((window.getComputedStyle(document.body) as any).zoom); 16 | }; 17 | 18 | window.zoomIn = (modifier: number = 0.1) => { 19 | window.app.config.globalProperties.$app.onZoomIn(); 20 | // (document.body.style as any).zoom = (window.getZoom() + modifier).toString(); 21 | }; 22 | 23 | window.zoomOut = (modifier: number = 0.1) => { 24 | window.app.config.globalProperties.$app.onZoomOut(); 25 | // (document.body.style as any).zoom = (window.getZoom() - modifier).toString(); 26 | }; 27 | 28 | 29 | window.resetZoom = (modifier: number = 0.1) => { 30 | window.app.config.globalProperties.$app.onZoomReset(); 31 | // (document.body.style as any).zoom = 1; 32 | }; 33 | 34 | export {}; 35 | -------------------------------------------------------------------------------- /frontend/src/assets/emotes/54fcdfdc01abde735115deae.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/54fcdfdc01abde735115deae.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/55006e5e8b95c6fb61482673.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/55006e5e8b95c6fb61482673.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5590b223b344e2c42a9e28e3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5590b223b344e2c42a9e28e3.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5597e66ed8152e272470f830.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5597e66ed8152e272470f830.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/55999813f0db38ef6c7c663e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/55999813f0db38ef6c7c663e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/55c2f86ff95ede671a79e47f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/55c2f86ff95ede671a79e47f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/55cbeb8f8b9c49ef325bf738.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/55cbeb8f8b9c49ef325bf738.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/55f091b9de50f37c0a831147.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/55f091b9de50f37c0a831147.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/55f47f507f08be9f0a63ce37.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/55f47f507f08be9f0a63ce37.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5603731ce5fc5eff1de93229.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5603731ce5fc5eff1de93229.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/56b65f05b947474c4a304dbe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/56b65f05b947474c4a304dbe.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/56be9fd6d9ec6bf74424760d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/56be9fd6d9ec6bf74424760d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/56e9f494fff3cc5c35e5287e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/56e9f494fff3cc5c35e5287e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/57597e25848bf08c5f860bd3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/57597e25848bf08c5f860bd3.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/57bfa325d5219dd112c18a99.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/57bfa325d5219dd112c18a99.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/57ddccb558b6f3690c898464.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/57ddccb558b6f3690c898464.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5803757f3d506fea7ee35267.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5803757f3d506fea7ee35267.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/582e1ec8585b22e76faae1d7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/582e1ec8585b22e76faae1d7.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/583089f4737a8e61abb0186b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/583089f4737a8e61abb0186b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/58493695987aab42df852e0f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/58493695987aab42df852e0f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/585231dd58af204561cd6036.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/585231dd58af204561cd6036.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/589771dc10c0975495c578d1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/589771dc10c0975495c578d1.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/58ae8407ff7b7276f8e594f2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/58ae8407ff7b7276f8e594f2.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/58c36ac73c3bbd3e016b6e60.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/58c36ac73c3bbd3e016b6e60.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/58c5c65357baeb710f657195.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/58c5c65357baeb710f657195.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/58dd97c74d67ad30ec2ff270.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/58dd97c74d67ad30ec2ff270.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/58f6e05e58f5dd226a16166e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/58f6e05e58f5dd226a16166e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/58facc4aaffae60eac088397.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/58facc4aaffae60eac088397.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/59474044e949fe3b435e3135.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/59474044e949fe3b435e3135.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5980af4e3a1ac5330e89dc76.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5980af4e3a1ac5330e89dc76.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5981e21aeaab4f3320e73abe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5981e21aeaab4f3320e73abe.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5981e885eaab4f3320e73b18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5981e885eaab4f3320e73b18.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/598215f47e71d43314a80ad2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/598215f47e71d43314a80ad2.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/59a32119b71a9e11bd5f4251.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/59a32119b71a9e11bd5f4251.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/59b73909b27c823d5b1f6052.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/59b73909b27c823d5b1f6052.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/59c4321d8798a53d5af9b9a5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/59c4321d8798a53d5af9b9a5.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/59ca6551b27c823d5b1fd872.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/59ca6551b27c823d5b1fd872.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/59f27b3f4ebd8047f54dee29.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/59f27b3f4ebd8047f54dee29.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a16ddca8c22a247ead62ceb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a16ddca8c22a247ead62ceb.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a16ee718c22a247ead62d4a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a16ee718c22a247ead62d4a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a1702fb8c22a247ead62d95.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a1702fb8c22a247ead62d95.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a21576595c4af067c869ba9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a21576595c4af067c869ba9.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a2691c6fc6e584787d98534.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a2691c6fc6e584787d98534.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a4ad2574884645e5706e51a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a4ad2574884645e5706e51a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a5e0e8d80f53146a54a516b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a5e0e8d80f53146a54a516b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a6dee3b2620951f291ec6d0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a6dee3b2620951f291ec6d0.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a71931b32f45872c230578e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a71931b32f45872c230578e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a93403a85dd670847d2d2eb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a93403a85dd670847d2d2eb.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5a9a360c35035f0fd53689a0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5a9a360c35035f0fd53689a0.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5aa16eb65d4a424654d7e3e5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5aa16eb65d4a424654d7e3e5.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ac55f2306679e79a3e7841d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ac55f2306679e79a3e7841d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5aca62163e290877a25481ad.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5aca62163e290877a25481ad.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b17135d1e360065b92a9d59.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b17135d1e360065b92a9d59.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b1741ee83deca65adc4a3c6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b1741ee83deca65adc4a3c6.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b457bbd0485f43277cecac0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b457bbd0485f43277cecac0.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b4cf074a035723952666f5d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b4cf074a035723952666f5d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b567225e11b851126617bb6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b567225e11b851126617bb6.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b7bcd66e1202d285d94f8d3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b7bcd66e1202d285d94f8d3.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b7ca091decbe272b64d3d7d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b7ca091decbe272b64d3d7d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b8015ba3c482e0aaa9413be.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b8015ba3c482e0aaa9413be.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5b96e7f1bbf4663f648795b1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5b96e7f1bbf4663f648795b1.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5be4b0c9e9207c147ebcb517.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5be4b0c9e9207c147ebcb517.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5c0235787991032d519f513c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5c0235787991032d519f513c.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5c50edcb5e0cb51b417faf37.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5c50edcb5e0cb51b417faf37.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5cd2bcbab75608209334a28d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5cd2bcbab75608209334a28d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5cd6b08cf1dac14a18c4b61f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5cd6b08cf1dac14a18c4b61f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d20a55de1cfde376e532972.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d20a55de1cfde376e532972.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d24f20653fb473775490d6f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d24f20653fb473775490d6f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d3e250a6d68672adc3fbff7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d3e250a6d68672adc3fbff7.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d43475f6b7300449a43441c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d43475f6b7300449a43441c.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d4b08dc64ae370ac807caa4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d4b08dc64ae370ac807caa4.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d5d9fe322f52e1d9b41ac91.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d5d9fe322f52e1d9b41ac91.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d5e363122f52e1d9b41aff1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d5e363122f52e1d9b41aff1.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d5e91f322f52e1d9b41b141.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d5e91f322f52e1d9b41b141.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d6096974932b21d9c332904.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d6096974932b21d9c332904.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d61bae91f77c11da35ac50e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d61bae91f77c11da35ac50e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d6209854932b21d9c333195.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d6209854932b21d9c333195.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d63e543375afb1da9a68a5a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d63e543375afb1da9a68a5a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d72ae0aa32edb714a9df060.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d72ae0aa32edb714a9df060.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5d9198fbd2458468c1f4adb7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5d9198fbd2458468c1f4adb7.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5dc79d1b27360247dd6516ec.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5dc79d1b27360247dd6516ec.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5dcea287e579cd5efad7505c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5dcea287e579cd5efad7505c.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5de9cb6191129e77b47ca987.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5de9cb6191129e77b47ca987.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5dfd5fd19e2cd00d968d3a4d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5dfd5fd19e2cd00d968d3a4d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e052a618608fb0da4122b70.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e052a618608fb0da4122b70.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e0bf9c0031ec77bab473742.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e0bf9c0031ec77bab473742.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e0fa9d40550d42106b8a489.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e0fa9d40550d42106b8a489.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e1a76dd8af14b5f1b438c04.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e1a76dd8af14b5f1b438c04.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e3441d861ff6b51e65259fe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e3441d861ff6b51e65259fe.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e3edf06e383e37d5d9d1dfd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e3edf06e383e37d5d9d1dfd.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e486af4d736527d5cd2fed6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e486af4d736527d5cd2fed6.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e49b8f1e383e37d5d9d931c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e49b8f1e383e37d5d9d931c.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e4e7a1f08b4447d56a92967.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e4e7a1f08b4447d56a92967.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e574db1ddc7a054d7f0c301.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e574db1ddc7a054d7f0c301.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e76910ed112fc372574ce15.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e76910ed112fc372574ce15.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e87b595acae25096140ca84.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e87b595acae25096140ca84.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e978e20d023b362f638339d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e978e20d023b362f638339d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e9c6c187e090362f8b0b9e8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e9c6c187e090362f8b0b9e8.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5e9cdca974046462f7673006.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5e9cdca974046462f7673006.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ea831f074046462f768097a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ea831f074046462f768097a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ebd239bf0fb3f168c4b58f0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ebd239bf0fb3f168c4b58f0.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ec57ff2f54be95e2a82765a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ec57ff2f54be95e2a82765a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ec5e7d6f54be95e2a82806f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ec5e7d6f54be95e2a82806f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ed355b1fdee545e3065c80e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ed355b1fdee545e3065c80e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ee2430bf54be95e2a84b30a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ee2430bf54be95e2a84b30a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5f284a13cf6d2144653dee4a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5f284a13cf6d2144653dee4a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5f395e0bb2efd65d77e8124f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5f395e0bb2efd65d77e8124f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5f3ef6123212445d6fb49f1a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5f3ef6123212445d6fb49f1a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5f4f4fa23769246c0320de37.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5f4f4fa23769246c0320de37.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5f64475bd7160803d895a112.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5f64475bd7160803d895a112.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5f9487731b017902db14d05e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5f9487731b017902db14d05e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5f9f27ca40eb9502e2238a65.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5f9f27ca40eb9502e2238a65.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5fd59868f0c558349268d3dc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5fd59868f0c558349268d3dc.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5fe8cff8e85053351218e1dc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5fe8cff8e85053351218e1dc.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5fe9711fab5f5d3505129a0b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5fe9711fab5f5d3505129a0b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5fe9713dab5f5d3505129a0f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5fe9713dab5f5d3505129a0f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ff4a9ef85ffcf047a709b2e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ff4a9ef85ffcf047a709b2e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ff5191a8a0e92047c1e382d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ff5191a8a0e92047c1e382d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/5ff827395ef7d10c7912c106.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/5ff827395ef7d10c7912c106.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/600c004c4e3ab965ef757f9e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/600c004c4e3ab965ef757f9e.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6024574d2eae5518bece2ddd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6024574d2eae5518bece2ddd.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/602db23eee839b1e5ec6ddc2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/602db23eee839b1e5ec6ddc2.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6033ef7d7c74605395f3256f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6033ef7d7c74605395f3256f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/603c98be306b602acc594e18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/603c98be306b602acc594e18.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60419081306b602acc5972c9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60419081306b602acc5972c9.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60477a2f306b602acc599abf.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60477a2f306b602acc599abf.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/604793b8306b602acc599b88.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/604793b8306b602acc599b88.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6049a20d306b602acc59aab5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6049a20d306b602acc59aab5.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/605b71f57493072efdeb3bbb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/605b71f57493072efdeb3bbb.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/605be9057493072efdeb4075.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/605be9057493072efdeb4075.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60699b50a407570b72f2ad5a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60699b50a407570b72f2ad5a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/608089bf39b5010444d03aa0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/608089bf39b5010444d03aa0.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60808aab39b5010444d03aab.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60808aab39b5010444d03aab.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6083d2cd39b5010444d0540b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6083d2cd39b5010444d0540b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/608b335539b5010444d08c55.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/608b335539b5010444d08c55.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60959b8239b5010444d0d6a4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60959b8239b5010444d0d6a4.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60c9849df8b3f62601c3e7e3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60c9849df8b3f62601c3e7e3.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60d872d78ed8b373e421a4db.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60d872d78ed8b373e421a4db.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60e0d6d48ed8b373e421d34b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60e0d6d48ed8b373e421d34b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60e32f028ed8b373e421e021.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60e32f028ed8b373e421e021.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/60f996092d1eba5400d0fb6a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/60f996092d1eba5400d0fb6a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6119caa676ea4e2b9f7778e4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6119caa676ea4e2b9f7778e4.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/611a913276ea4e2b9f778e65.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/611a913276ea4e2b9f778e65.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6121e47e76ea4e2b9f78a35f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6121e47e76ea4e2b9f78a35f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6126c2b0af28e956864a1d79.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6126c2b0af28e956864a1d79.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6149d102b63cc97ee6d29c79.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6149d102b63cc97ee6d29c79.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61526c2ab63cc97ee6d3ab0d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61526c2ab63cc97ee6d3ab0d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/615f1909b63cc97ee6d53c6a.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/615f1909b63cc97ee6d53c6a.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/616eef69054a252a431fbea6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/616eef69054a252a431fbea6.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6180e47e1f8ff7628e6c0b4f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6180e47e1f8ff7628e6c0b4f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6180e4f81f8ff7628e6c0b54.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6180e4f81f8ff7628e6c0b54.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6197b6a454f3344f88065985.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6197b6a454f3344f88065985.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/619928e554f3344f88068ac1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/619928e554f3344f88068ac1.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61acf74c002cdeedc21e577b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61acf74c002cdeedc21e577b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61cf4c6ec8cc7f36d52b27a9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61cf4c6ec8cc7f36d52b27a9.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61d35ce706fd6a9f5bdf35ae.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61d35ce706fd6a9f5bdf35ae.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61e10b0206fd6a9f5be09de4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61e10b0206fd6a9f5be09de4.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61e918ab06fd6a9f5be168f3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61e918ab06fd6a9f5be168f3.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61eb0f3606fd6a9f5be19987.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61eb0f3606fd6a9f5be19987.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61f013ba06fd6a9f5be219f3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61f013ba06fd6a9f5be219f3.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/61f867ec06fd6a9f5be2e832.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/61f867ec06fd6a9f5be2e832.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6202e72b06fd6a9f5be3dced.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6202e72b06fd6a9f5be3dced.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6211428206fd6a9f5be50250.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6211428206fd6a9f5be50250.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6217d0aa06fd6a9f5be57d64.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6217d0aa06fd6a9f5be57d64.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62264bb606fd6a9f5be67488.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62264bb606fd6a9f5be67488.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6227781606fd6a9f5be6866d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6227781606fd6a9f5be6866d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/622fb4e906fd6a9f5be712d5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/622fb4e906fd6a9f5be712d5.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/625100153c6f14b68844c3b9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/625100153c6f14b68844c3b9.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62535c593c6f14b68844ead3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62535c593c6f14b68844ead3.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/626a5f403c6f14b6884678be.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/626a5f403c6f14b6884678be.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/626d15653c6f14b68846a0bb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/626d15653c6f14b68846a0bb.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6278804e3c6f14b688475794.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6278804e3c6f14b688475794.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6298f96f3c6f14b688495afe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6298f96f3c6f14b688495afe.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/629c72453c6f14b688498e3c.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/629c72453c6f14b688498e3c.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62c323668fd4516906a8e61f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62c323668fd4516906a8e61f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62d5d182d991a3e26c12c881.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62d5d182d991a3e26c12c881.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62d9c87ed991a3e26c12fcce.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62d9c87ed991a3e26c12fcce.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62dfa0a1d991a3e26c13501f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62dfa0a1d991a3e26c13501f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62e6d75dd991a3e26c13b69d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62e6d75dd991a3e26c13b69d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/62f77691ecbd41815423f7a0.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/62f77691ecbd41815423f7a0.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63010671ecbd418154246dff.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63010671ecbd418154246dff.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/630d9f708d54637377067645.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/630d9f708d54637377067645.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/633f0425e6cf26500b42b791.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/633f0425e6cf26500b42b791.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/634636a2e6cf26500b4321d7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/634636a2e6cf26500b4321d7.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/634f2fdb9bb828a9f0d3edea.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/634f2fdb9bb828a9f0d3edea.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/635011da9bb828a9f0d40aa4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/635011da9bb828a9f0d40aa4.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6350c99676c0f8d47ce017bf.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6350c99676c0f8d47ce017bf.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6355ff83ed98a03da0cd9a19.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6355ff83ed98a03da0cd9a19.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6359372eed98a03da0cdd7df.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6359372eed98a03da0cdd7df.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63714545b9076d0aaebbe75b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63714545b9076d0aaebbe75b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/637ac894b9076d0aaebc9b7b.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/637ac894b9076d0aaebc9b7b.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63982b2691ab7f35abdf6af4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63982b2691ab7f35abdf6af4.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/6398ce5991ab7f35abdf730d.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/6398ce5991ab7f35abdf730d.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63accf7291ab7f35abe0b017.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63accf7291ab7f35abe0b017.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63add7e491ab7f35abe0bcbd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63add7e491ab7f35abe0bcbd.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63b26784d3c04b5c4512415f.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63b26784d3c04b5c4512415f.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63b743f392686dedce34e2d4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63b743f392686dedce34e2d4.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63c1fea2fe434f3a3de15a73.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63c1fea2fe434f3a3de15a73.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63c2992cf16b4a91323fe4be.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63c2992cf16b4a91323fe4be.webp -------------------------------------------------------------------------------- /frontend/src/assets/emotes/63cb40252b18a0bbb2dae92e.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/emotes/63cb40252b18a0bbb2dae92e.webp -------------------------------------------------------------------------------- /frontend/src/assets/fonts/nunito-v16-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/fonts/nunito-v16-latin-regular.woff2 -------------------------------------------------------------------------------- /frontend/src/assets/images/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/images/Icon.png -------------------------------------------------------------------------------- /frontend/src/assets/images/SDBExplorerLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/images/SDBExplorerLogo.png -------------------------------------------------------------------------------- /frontend/src/assets/images/logo-universal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/frontend/src/assets/images/logo-universal.png -------------------------------------------------------------------------------- /frontend/src/main.ts: -------------------------------------------------------------------------------- 1 | import {createApp} from "vue"; 2 | import App from "./App.vue"; 3 | import {StoreManager} from "@idevelopthings/vue-class-stores/vue"; 4 | import {router} from "./Routes"; 5 | import {VueFrontendUtils, TimePlugin} from "vue-frontend-utils"; 6 | import JsonViewer from "./Services/JsonViewer"; 7 | import "./Styles/app.css"; 8 | import "./Modals"; 9 | import "./Window"; 10 | import {Logger} from "./Services/Logger"; 11 | import Link from "./Components/Link.vue"; 12 | 13 | Logger.log("Starting app"); 14 | 15 | StoreManager.config({disableDevtoolsMutationWatcher : true}); 16 | 17 | const app = createApp(App); 18 | 19 | app.component("Link", Link); 20 | 21 | app.use(router); 22 | app.use(StoreManager.boot()); 23 | app.use(JsonViewer); 24 | app.use(VueFrontendUtils); 25 | app.use(TimePlugin); 26 | 27 | app.mount("#app"); 28 | 29 | 30 | 31 | (window as any).app = app; 32 | -------------------------------------------------------------------------------- /frontend/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type {DefineComponent} from 'vue' 5 | const component: DefineComponent<{}, {}, any> 6 | export default component 7 | } 8 | 9 | interface ImportMetaEnv { 10 | readonly APP_VERSION: string 11 | } 12 | 13 | interface ImportMeta { 14 | readonly env: ImportMetaEnv 15 | } 16 | -------------------------------------------------------------------------------- /frontend/src/vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@vue/runtime-core" { 2 | import type {IEventsManager, IModalManager} from "vue-frontend-utils"; 3 | 4 | interface ComponentCustomProperties { 5 | $events: IEventsManager; 6 | $modals: IModalManager; 7 | } 8 | } 9 | export {}; 10 | -------------------------------------------------------------------------------- /frontend/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type {Config} from "tailwindcss"; 2 | // @ts-ignore 3 | import twTypography from "@tailwindcss/typography"; 4 | 5 | export default { 6 | content : [ 7 | "./index.html", 8 | "./src/**/*.{vue,js,ts,jsx,tsx}", 9 | ], 10 | theme : { 11 | extend : { 12 | fontFamily : { 13 | sans : [ 14 | "Inter var", ...[ 15 | "ui-sans-serif", 16 | "system-ui", 17 | "-apple-system", 18 | "BlinkMacSystemFont", 19 | "\"Segoe UI\"", 20 | "Roboto", 21 | "\"Helvetica Neue\"", 22 | "Arial", 23 | "\"Noto Sans\"", 24 | "sans-serif", 25 | "\"Apple Color Emoji\"", 26 | "\"Segoe UI Emoji\"", 27 | "\"Segoe UI Symbol\"", 28 | "\"Noto Color Emoji\"", 29 | ] 30 | ], 31 | }, 32 | colors : { 33 | "main" : { 34 | 100 : "#fff", 35 | 200 : "#b1b7cb", 36 | 300 : "#6e7a9b", 37 | 400 : "#3b4a6b", 38 | 600 : "#444a55", 39 | 500 : "#393e46", 40 | 700 : "#222632", 41 | 800 : "#1b1f28", 42 | 900 : "#161a20", 43 | }, 44 | "surreal" : "#ff009e" 45 | } 46 | }, 47 | }, 48 | plugins : [ 49 | twTypography, 50 | ], 51 | } satisfies Config; 52 | 53 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "useDefineForClassFields": true, 7 | "declaration": true, 8 | "skipLibCheck": true, 9 | "sourceMap": true, 10 | "allowJs": true, 11 | "esModuleInterop": true, 12 | "preserveValueImports": true, 13 | "allowSyntheticDefaultImports": true, 14 | "strict": false, 15 | "resolveJsonModule": true, 16 | "baseUrl": ".", 17 | "lib": [ 18 | "esnext", 19 | "dom" 20 | ], 21 | "isolatedModules": true, 22 | "experimentalDecorators": true, 23 | "paths": { 24 | "@/*": [ 25 | "src/*" 26 | ] 27 | } 28 | }, 29 | "include": [ 30 | "src/**/*.ts", 31 | "src/**/*.d.ts", 32 | "src/**/*.tsx", 33 | "src/**/*.vue", 34 | "src/Stores/Generated/StoreLoader.ts", 35 | "src/Stores/Generated/stores.d.ts", 36 | "src/.generated/modal.d.ts", 37 | "src/.generated/event.d.ts" 38 | ], 39 | "references": [ 40 | { 41 | "path": "./tsconfig.node.json" 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /frontend/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "lib": [ 7 | "esnext", 8 | "dom" 9 | ], 10 | "allowSyntheticDefaultImports": true 11 | }, 12 | "include": [ 13 | "vite.config.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /frontend/vite.config.ts: -------------------------------------------------------------------------------- 1 | import type {Plugin} from "vite"; 2 | import {defineConfig} from "vite"; 3 | import vue from "@vitejs/plugin-vue"; 4 | import {ClassStoresPlugin} from "@idevelopthings/vue-class-stores/vite"; 5 | import {VueFrontendUtils} from "vue-frontend-utils/vite"; 6 | //@ts-ignore 7 | import * as fs from "fs"; 8 | import {readFileSync} from "fs"; 9 | //@ts-ignore 10 | import * as monacoEditorPlugin from "vite-plugin-monaco-editor"; 11 | 12 | //import resolveConfig from "tailwindcss/resolveConfig"; 13 | 14 | const {version} = JSON.parse(readFileSync("./package.json", "utf8")); 15 | 16 | export default defineConfig({ 17 | plugins : [ 18 | ClassStoresPlugin({ 19 | // The src path where your stores will be located 20 | storesPath : "src/Stores", 21 | // The name of the generated typescript declaration file 22 | // stores.d.ts is the default 23 | storesFileName : "stores.d.ts", 24 | }), 25 | VueFrontendUtils({ 26 | srcPathFromRoot : "src" 27 | }), 28 | //@ts-ignore 29 | monacoEditorPlugin.default.default({}), 30 | vue(), 31 | 32 | { 33 | name : "frontend-vite-plugin", 34 | async configResolved(config) { 35 | /*const conf = resolveConfig(await import("./tailwind.config")); 36 | 37 | function flattenObject(ob) { 38 | var toReturn = {}; 39 | 40 | for (var i in ob) { 41 | if (!ob.hasOwnProperty(i)) continue; 42 | 43 | if ((typeof ob[i]) == "object" && ob[i] !== null) { 44 | var flatObject = flattenObject(ob[i]); 45 | for (var x in flatObject) { 46 | if (!flatObject.hasOwnProperty(x)) continue; 47 | 48 | toReturn[i + "." + x] = flatObject[x]; 49 | } 50 | } else { 51 | toReturn[i] = ob[i]; 52 | } 53 | } 54 | return toReturn; 55 | } 56 | 57 | const colors = { 58 | ...flattenObject(conf.theme.colors), 59 | ...flattenObject(conf.default.theme.extend.colors) 60 | }; 61 | 62 | let file = ` 63 | export type ColorKeys = ${Object.keys(colors).map(c => `'${c}'`).join(" | ")}; 64 | 65 | export const colors = ${JSON.stringify(colors, null, 2)}; 66 | `; 67 | 68 | await fs.promises.writeFile("./src/.generated/Colors.ts", file);*/ 69 | } 70 | 71 | } as Plugin, 72 | ], 73 | resolve : { 74 | alias : { 75 | "@" : "/src", 76 | "vue" : "vue/dist/vue.esm-bundler", 77 | }, 78 | }, 79 | define : { 80 | "import.meta.env.APP_VERSION" : `"${version}"`, 81 | } 82 | }); 83 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/Config/Connections.d.ts: -------------------------------------------------------------------------------- 1 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 2 | // This file is automatically generated. DO NOT EDIT 3 | import {Config} from '../models'; 4 | 5 | export function Add(arg1:Config.Connection):Promise; 6 | 7 | export function Remove(arg1:any):Promise; 8 | 9 | export function SetCurrent(arg1:any):Promise; 10 | 11 | export function Setup():Promise; 12 | 13 | export function Update(arg1:Config.Connections):Promise; 14 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/Config/Connections.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 3 | // This file is automatically generated. DO NOT EDIT 4 | 5 | export function Add(arg1) { 6 | return window['go']['Config']['Connections']['Add'](arg1); 7 | } 8 | 9 | export function Remove(arg1) { 10 | return window['go']['Config']['Connections']['Remove'](arg1); 11 | } 12 | 13 | export function SetCurrent(arg1) { 14 | return window['go']['Config']['Connections']['SetCurrent'](arg1); 15 | } 16 | 17 | export function Setup() { 18 | return window['go']['Config']['Connections']['Setup'](); 19 | } 20 | 21 | export function Update(arg1) { 22 | return window['go']['Config']['Connections']['Update'](arg1); 23 | } 24 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/Config/QueriesList.d.ts: -------------------------------------------------------------------------------- 1 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 2 | // This file is automatically generated. DO NOT EDIT 3 | import {Config} from '../models'; 4 | 5 | export function DeleteQuery(arg1:string):Promise>; 6 | 7 | export function GetQueries(arg1:string):Promise>; 8 | 9 | export function RemoveQueries(arg1:string):Promise; 10 | 11 | export function SaveQuery(arg1:Config.SaveQueryRequest):Promise; 12 | 13 | export function Setup():Promise; 14 | 15 | export function Update():Promise; 16 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/Config/QueriesList.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 3 | // This file is automatically generated. DO NOT EDIT 4 | 5 | export function DeleteQuery(arg1) { 6 | return window['go']['Config']['QueriesList']['DeleteQuery'](arg1); 7 | } 8 | 9 | export function GetQueries(arg1) { 10 | return window['go']['Config']['QueriesList']['GetQueries'](arg1); 11 | } 12 | 13 | export function RemoveQueries(arg1) { 14 | return window['go']['Config']['QueriesList']['RemoveQueries'](arg1); 15 | } 16 | 17 | export function SaveQuery(arg1) { 18 | return window['go']['Config']['QueriesList']['SaveQuery'](arg1); 19 | } 20 | 21 | export function Setup() { 22 | return window['go']['Config']['QueriesList']['Setup'](); 23 | } 24 | 25 | export function Update() { 26 | return window['go']['Config']['QueriesList']['Update'](); 27 | } 28 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/Config/Window.d.ts: -------------------------------------------------------------------------------- 1 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 2 | // This file is automatically generated. DO NOT EDIT 3 | 4 | export function CanSetDimensions():Promise; 5 | 6 | export function CanSetPosition():Promise; 7 | 8 | export function Set():Promise; 9 | 10 | export function Setup():Promise; 11 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/Config/Window.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 3 | // This file is automatically generated. DO NOT EDIT 4 | 5 | export function CanSetDimensions() { 6 | return window['go']['Config']['Window']['CanSetDimensions'](); 7 | } 8 | 9 | export function CanSetPosition() { 10 | return window['go']['Config']['Window']['CanSetPosition'](); 11 | } 12 | 13 | export function Set() { 14 | return window['go']['Config']['Window']['Set'](); 15 | } 16 | 17 | export function Setup() { 18 | return window['go']['Config']['Window']['Setup'](); 19 | } 20 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/backend/App.d.ts: -------------------------------------------------------------------------------- 1 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 2 | // This file is automatically generated. DO NOT EDIT 3 | import {backend} from '../models'; 4 | import {Updater} from '../models'; 5 | import {Config} from '../models'; 6 | 7 | export function GetAllConfig():Promise; 8 | 9 | export function GetCurrentVersion():Promise; 10 | 11 | export function GetDocs():Promise; 12 | 13 | export function IsLinux():Promise; 14 | 15 | export function IsMac():Promise; 16 | 17 | export function IsWindows():Promise; 18 | 19 | export function OpenAppDataPath():Promise; 20 | 21 | export function OpenDirectory(arg1:string):Promise; 22 | 23 | export function OpenFile(arg1:string):Promise; 24 | 25 | export function OpenLogFile():Promise; 26 | 27 | export function UpdateCheck():Promise; 28 | 29 | export function UpdatePreferences(arg1:Config.Preferences):Promise; 30 | -------------------------------------------------------------------------------- /frontend/wailsjs/go/backend/App.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL 3 | // This file is automatically generated. DO NOT EDIT 4 | 5 | export function GetAllConfig() { 6 | return window['go']['backend']['App']['GetAllConfig'](); 7 | } 8 | 9 | export function GetCurrentVersion() { 10 | return window['go']['backend']['App']['GetCurrentVersion'](); 11 | } 12 | 13 | export function GetDocs() { 14 | return window['go']['backend']['App']['GetDocs'](); 15 | } 16 | 17 | export function IsLinux() { 18 | return window['go']['backend']['App']['IsLinux'](); 19 | } 20 | 21 | export function IsMac() { 22 | return window['go']['backend']['App']['IsMac'](); 23 | } 24 | 25 | export function IsWindows() { 26 | return window['go']['backend']['App']['IsWindows'](); 27 | } 28 | 29 | export function OpenAppDataPath() { 30 | return window['go']['backend']['App']['OpenAppDataPath'](); 31 | } 32 | 33 | export function OpenDirectory(arg1) { 34 | return window['go']['backend']['App']['OpenDirectory'](arg1); 35 | } 36 | 37 | export function OpenFile(arg1) { 38 | return window['go']['backend']['App']['OpenFile'](arg1); 39 | } 40 | 41 | export function OpenLogFile() { 42 | return window['go']['backend']['App']['OpenLogFile'](); 43 | } 44 | 45 | export function UpdateCheck() { 46 | return window['go']['backend']['App']['UpdateCheck'](); 47 | } 48 | 49 | export function UpdatePreferences(arg1) { 50 | return window['go']['backend']['App']['UpdatePreferences'](arg1); 51 | } 52 | -------------------------------------------------------------------------------- /frontend/wailsjs/runtime/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@wailsapp/runtime", 3 | "version": "2.0.0", 4 | "description": "Wails Javascript runtime library", 5 | "main": "runtime.js", 6 | "types": "runtime.d.ts", 7 | "scripts": { 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/wailsapp/wails.git" 12 | }, 13 | "keywords": [ 14 | "Wails", 15 | "Javascript", 16 | "Go" 17 | ], 18 | "author": "Lea Anthony ", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/wailsapp/wails/issues" 22 | }, 23 | "homepage": "https://github.com/wailsapp/wails#readme" 24 | } 25 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module wails_vue 2 | 3 | go 1.18 4 | 5 | require ( 6 | github.com/Envuso/go-ioc-container v0.0.5 7 | github.com/Masterminds/semver v1.5.0 8 | github.com/blang/semver v3.5.1+incompatible 9 | github.com/google/uuid v1.2.0 10 | github.com/octoper/go-ray v0.1.5 11 | github.com/rhysd/go-github-selfupdate v1.2.3 12 | github.com/vrischmann/userdir v0.0.0-20151206171402-20f291cebd68 13 | github.com/wailsapp/wails/v2 v2.2.0 14 | ) 15 | 16 | require ( 17 | github.com/bep/debounce v1.2.1 // indirect 18 | github.com/davecgh/go-spew v1.1.1 // indirect 19 | github.com/go-ole/go-ole v1.2.6 // indirect 20 | github.com/golang/protobuf v1.3.2 // indirect 21 | github.com/gomarkdown/markdown v0.0.0-20210208175418-bda154fe17d8 // indirect 22 | github.com/google/go-github/v30 v30.1.0 // indirect 23 | github.com/google/go-querystring v1.0.0 // indirect 24 | github.com/imdario/mergo v0.3.12 // indirect 25 | github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf // indirect 26 | github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect 27 | github.com/labstack/echo/v4 v4.9.0 // indirect 28 | github.com/labstack/gommon v0.3.1 // indirect 29 | github.com/leaanthony/go-ansi-parser v1.0.1 // indirect 30 | github.com/leaanthony/gosod v1.0.3 // indirect 31 | github.com/leaanthony/slicer v1.5.0 // indirect 32 | github.com/mattn/go-colorable v0.1.11 // indirect 33 | github.com/mattn/go-isatty v0.0.14 // indirect 34 | github.com/modern-go/reflect2 v1.0.2 // indirect 35 | github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect 36 | github.com/pkg/errors v0.9.1 // indirect 37 | github.com/samber/lo v1.27.1 // indirect 38 | github.com/tcnksm/go-gitconfig v0.1.2 // indirect 39 | github.com/tkrajina/go-reflector v0.5.5 // indirect 40 | github.com/ulikunitz/xz v0.5.9 // indirect 41 | github.com/valyala/bytebufferpool v1.0.0 // indirect 42 | github.com/valyala/fasttemplate v1.2.1 // indirect 43 | github.com/wailsapp/mimetype v1.4.1 // indirect 44 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect 45 | golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect 46 | golang.org/x/net v0.8.0 // indirect 47 | golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288 // indirect 48 | golang.org/x/sys v0.6.0 // indirect 49 | golang.org/x/text v0.8.0 // indirect 50 | google.golang.org/appengine v1.3.0 // indirect 51 | gopkg.in/yaml.v2 v2.4.0 // indirect 52 | ) 53 | 54 | // replace github.com/wailsapp/wails/v2 v2.2.0 => /Users/sam/go/pkg/mod 55 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "embed" 5 | "encoding/json" 6 | container "github.com/Envuso/go-ioc-container" 7 | "wails_vue/backend" 8 | ) 9 | 10 | //go:embed all:frontend/dist 11 | var assets embed.FS 12 | 13 | //go:embed build/appicon.png 14 | var icon []byte 15 | 16 | //go:embed build/surreal_docs.json 17 | var surrealDocs []byte 18 | 19 | func main() { 20 | 21 | backend.Assets = assets 22 | 23 | backend.Container = container.Container 24 | 25 | backend.Container.Singleton(func() *backend.ApplicationSettings { 26 | settings := backend.NewApplicationSettings() 27 | settings.Icon = icon 28 | 29 | return settings 30 | }) 31 | 32 | backend.Container.Singleton(backend.NewApplicationMenuBuilder) 33 | 34 | backend.AppInstance = backend.NewApp() 35 | 36 | var docsData map[string]backend.SurrealDocObject 37 | err := json.Unmarshal(surrealDocs, &docsData) 38 | if err != nil { 39 | panic(err) 40 | } 41 | 42 | backend.AppInstance.Docs = &backend.SurrealDocs{Docs: docsData} 43 | 44 | container.Container.Instance(backend.AppInstance) 45 | 46 | backend.Container.Call(backend.BootApplication) 47 | 48 | /*_, err := backend.CreateApp(assets) 49 | if err != nil { 50 | println("Error:", err.Error()) 51 | }*/ 52 | 53 | } 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "wails dev", 4 | "start:frontend": "CGO_ENABLED=\"1\";CGO_LDFLAGS=-framework UniformTypeIdentifiers; wails dev -tags desktop,production,debug", 5 | "start:backend": "wails dev -noreload -debounce 1000", 6 | "build:go": "wails build", 7 | "frontend" : "cd frontend && npm run dev" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /repository/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/repository/1.png -------------------------------------------------------------------------------- /repository/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/repository/2.png -------------------------------------------------------------------------------- /repository/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/repository/3.png -------------------------------------------------------------------------------- /repository/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/repository/4.png -------------------------------------------------------------------------------- /repository/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/repository/icon.png -------------------------------------------------------------------------------- /repository/text-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iDevelopThings/SurrealDB-Explorer/848f6b8b51fcca3d85326ea47a6738a330bb878d/repository/text-logo.png -------------------------------------------------------------------------------- /scripts/download_emotes.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import * as fs from 'fs'; 3 | import * as path from 'path'; 4 | 5 | 6 | const all = []; 7 | const emoteLimit = 200; 8 | 9 | async function run() 10 | { 11 | const emotesDir = path.resolve("frontend", "src", "assets", "emotes"); 12 | const compressedEmotesDir = path.resolve("frontend", "src", "assets", "emotes_compressed"); 13 | 14 | if (fs.existsSync(emotesDir)) { 15 | fs.rmdirSync(emotesDir, {recursive : true}); 16 | fs.mkdirSync(emotesDir); 17 | } 18 | 19 | if (fs.existsSync(compressedEmotesDir)) { 20 | fs.rmdirSync(compressedEmotesDir, {recursive : true}); 21 | fs.mkdirSync(compressedEmotesDir); 22 | } 23 | 24 | let page = 0; 25 | 26 | let run = true; 27 | do { 28 | 29 | const response = await axios.request({ 30 | method : 'GET', 31 | url : 'https://api.betterttv.net/3/emotes/shared/trending', 32 | params : {offset : page * 100, limit : 100} 33 | }); 34 | 35 | const emotes = response.data.map(d => { 36 | return { 37 | id : d.emote.id, 38 | code : d.emote.code, 39 | imageType : d.emote.imageType, 40 | animated : d.emote.animated, 41 | url : `https://cdn.betterttv.net/emote/${d.emote.id}/3x.${d.emote.imageType}` 42 | }; 43 | }).filter(f => f.imageType !== 'gif'); 44 | 45 | all.push(...emotes); 46 | 47 | page++; 48 | 49 | console.log(`[${all.length}/${emoteLimit}]`); 50 | 51 | if (all.length > emoteLimit) { 52 | run = false; 53 | } 54 | 55 | } while (run === true); 56 | 57 | fs.writeFileSync(path.resolve(emotesDir, '..', 'emotes.json'), JSON.stringify(all, null, 4)); 58 | 59 | for (let allElement of all) { 60 | const response = await axios.request({ 61 | method : 'GET', 62 | url : allElement.url, 63 | responseType : 'stream' 64 | }); 65 | 66 | const writer = fs.createWriteStream(path.resolve(emotesDir, `${allElement.id}.${allElement.imageType}`)); 67 | 68 | response.data.pipe(writer); 69 | 70 | await new Promise((resolve, reject) => { 71 | writer.on('finish', resolve); 72 | writer.on('error', reject); 73 | }); 74 | 75 | console.log(`[${all.indexOf(allElement) + 1}/${all.length}] ${allElement.id} - ${allElement.code} - ${allElement.url}`); 76 | } 77 | } 78 | 79 | run().then(() => console.log('done')); 80 | -------------------------------------------------------------------------------- /scripts/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scripts", 3 | "version": "1.0.0", 4 | "type": "module", 5 | "dependencies": { 6 | "axios": "^1.2.3" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /scripts/yarn-error.log: -------------------------------------------------------------------------------- 1 | Arguments: 2 | /Users/sam/.nvm/versions/node/v19.0.0/bin/node /opt/homebrew/Cellar/yarn/1.22.19/libexec/bin/yarn.js config get npmScopes --json 3 | 4 | PATH: 5 | /Users/sam/.gvm/bin:/Users/sam/.nvm/versions/node/v19.0.0/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/sam/.cargo/bin:/Users/sam/.composer/vendor/bin:/Users/sam/.composer/vendor/bin:/Users/sam/Code/json-to-php/builds:/Users/sam/zsh-scripts/jb_scripts:/Users/sam/flutter/bin:/Users/sam/go/bin:/Users/sam/.bin 6 | 7 | Yarn version: 8 | 1.22.19 9 | 10 | Node version: 11 | 19.0.0 12 | 13 | Platform: 14 | darwin arm64 15 | 16 | Trace: 17 | SyntaxError: /Users/sam/Code/Testing/SurrealDbExplorer/scripts/package.json: Expected property name or '}' in JSON at position 72 18 | at JSON.parse () 19 | at /opt/homebrew/Cellar/yarn/1.22.19/libexec/lib/cli.js:1629:59 20 | at Generator.next () 21 | at step (/opt/homebrew/Cellar/yarn/1.22.19/libexec/lib/cli.js:310:30) 22 | at /opt/homebrew/Cellar/yarn/1.22.19/libexec/lib/cli.js:321:13 23 | 24 | npm manifest: 25 | { 26 | "name": "$name$", 27 | "version": "$version$", 28 | "dependencies": { 29 | $END$ 30 | } 31 | } 32 | 33 | yarn manifest: 34 | No manifest 35 | 36 | Lockfile: 37 | No lockfile 38 | -------------------------------------------------------------------------------- /scripts/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | asynckit@^0.4.0: 6 | version "0.4.0" 7 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 8 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 9 | 10 | axios@^1.2.3: 11 | version "1.2.3" 12 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.3.tgz#31a3d824c0ebf754a004b585e5f04a5f87e6c4ff" 13 | integrity sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw== 14 | dependencies: 15 | follow-redirects "^1.15.0" 16 | form-data "^4.0.0" 17 | proxy-from-env "^1.1.0" 18 | 19 | combined-stream@^1.0.8: 20 | version "1.0.8" 21 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 22 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 23 | dependencies: 24 | delayed-stream "~1.0.0" 25 | 26 | delayed-stream@~1.0.0: 27 | version "1.0.0" 28 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 29 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 30 | 31 | follow-redirects@^1.15.0: 32 | version "1.15.2" 33 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 34 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 35 | 36 | form-data@^4.0.0: 37 | version "4.0.0" 38 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 39 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 40 | dependencies: 41 | asynckit "^0.4.0" 42 | combined-stream "^1.0.8" 43 | mime-types "^2.1.12" 44 | 45 | mime-db@1.52.0: 46 | version "1.52.0" 47 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 48 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 49 | 50 | mime-types@^2.1.12: 51 | version "2.1.35" 52 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 53 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 54 | dependencies: 55 | mime-db "1.52.0" 56 | 57 | proxy-from-env@^1.1.0: 58 | version "1.1.0" 59 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 60 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 61 | -------------------------------------------------------------------------------- /wails.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://wails.io/schemas/config.v2.json", 3 | "name": "SurrealDB Explorer", 4 | "outputfilename": "surrealdb_explorer", 5 | "frontend:install": "npm install", 6 | "frontend:build": "npm run build:no-typechecking", 7 | "frontend:dev:watcher": "npm run dev", 8 | "frontend:dev:serverUrl": "auto", 9 | "author": { 10 | "name": "Sam Parton", 11 | "email": "sam@idevelopthings.com" 12 | }, 13 | "info": { 14 | "companyName": "idevelopthings", 15 | "productName": "SurrealDB Explorer", 16 | "productVersion": "0.0.1", 17 | "comments": "Built using Wails (https://wails.io)" 18 | } 19 | } 20 | --------------------------------------------------------------------------------