From e0b0e3d781bc04f0944064eed181dce2716973f8 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Thu, 2 Nov 2023 18:08:43 -0700 Subject: [PATCH] Initial "plugin" system with importer (#7) --- Makefile | 4 + design/logo.afdesign | Bin 87054 -> 95886 bytes plugins/hello-world/greet.js | 4 + .../plugins => plugins}/hello-world/index.js | 6 +- .../Insomnia_hello-world.json | 100 ++++++++ .../importers/environment.js | 23 ++ .../insomnia-importer/importers/request.js | 28 ++ .../insomnia-importer/importers/workspace.js | 14 + plugins/insomnia-importer/index.js | 50 ++++ src-tauri/Cargo.lock | 68 ++++- src-tauri/Cargo.toml | 14 +- .../20231103004111_workspace-variables.sql | 1 + src-tauri/plugins/hello-world/hello.js | 3 - src-tauri/sqlx-data.json | 240 +++++++++--------- src-tauri/src/main.rs | 172 ++++++++----- src-tauri/src/models.rs | 229 +++++++---------- src-tauri/src/plugin.rs | 117 +++++++-- src-tauri/tauri.conf.json | 23 +- .../components/EnvironmentActionsDropdown.tsx | 6 +- src-web/components/EnvironmentEditDialog.tsx | 148 +++++++---- src-web/components/RecentRequestsDropdown.tsx | 3 +- src-web/components/RequestActionsDropdown.tsx | 106 ++++++-- src-web/components/WorkspaceHeader.tsx | 18 +- src-web/components/core/Icon.tsx | 2 + src-web/lib/models.ts | 1 + src-web/lib/theme/theme.ts | 3 +- src-web/lib/theme/window.ts | 41 ++- 27 files changed, 972 insertions(+), 452 deletions(-) create mode 100644 plugins/hello-world/greet.js rename {src-tauri/plugins => plugins}/hello-world/index.js (61%) create mode 100644 plugins/insomnia-importer/Insomnia_hello-world.json create mode 100644 plugins/insomnia-importer/importers/environment.js create mode 100644 plugins/insomnia-importer/importers/request.js create mode 100644 plugins/insomnia-importer/importers/workspace.js create mode 100644 plugins/insomnia-importer/index.js create mode 100644 src-tauri/migrations/20231103004111_workspace-variables.sql delete mode 100644 src-tauri/plugins/hello-world/hello.js diff --git a/Makefile b/Makefile index c656c66b..928422de 100644 --- a/Makefile +++ b/Makefile @@ -5,3 +5,7 @@ sqlx-prepare: dev: npm run tauri-dev + + +build: + ./node_modules/.bin/tauri build diff --git a/design/logo.afdesign b/design/logo.afdesign index 3ea2e15725c2b2a3bf611156a41a96ccc298d84e..f204a19b0ce23e4daf8a9efd7256912160ed32de 100644 GIT binary patch literal 95886 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

9y2{3%v&VC0FVcmGQ$Mcj5Y@)E?eL+J{ z;w?;rl$hAd;_~ex+M*C=C!kRhXIZ}paTeE6_;)1$Au+Lw%J0MMAovh)KXBRS&=wPbYOO-GR-tb^o@r>W=d@Pa ztlPiVYKzudPTtDVEls|j({ALn>pAUu+y2@6wVb@(M(3JJS4O2fqf*Vtx|O-_&dBVw zQmfEC*hQsQq0(ES(wo`)j7o2XthYket*)l9_eBIwVCMF}hB>U~1TcH+h~67ZWj_7Q z)&7Qp5OYG+o0}EUH!@rrS9HAuWAs{T2d&Nt2nR$8j&#KJvNT&+woBy8AAqAN*FPs<(A2L1C!34gc+0IrynQcJ*Lt@RHuThRUlbKua2 zfDdAv3tcrSS*d1JHf5dN;A+U*8ZG|P-)K-7s7#?M%J}Kdl>eF z7V>=obAsb3jER5kdS&7kZA?eO%Ba1(o$aDM(Z8xTqNy<0(s{ zlVDE;PMN@W(=AmwrpA=PXak&;j&>XK?{aPdRmYuz)H(I@gCOs|S%r3NQ-oPe?nFUglycxK@RayF zhN;8lTkd*qJ}NuHw@g@}Vnw#>JavVe!xa&h35ituD%{7~or_Mow(e-TfP%1zv}ttk zHE%h3mgc!k_;(Osk?>E!MVd!><3K>Ca-?}GsV*l!#yF zq2q6rjvsDRcV%Uk-zXi{J7`g7GLr?cSQbCF+$8`8P3*za_7Pv^PM|00uTj3aIp`Ju zxQe8dY5-@n)@Lzu*q;FgF$WLbgPAIL1lSE+_K7xc16sgXNxp><_(y>y`?q{+LEl@4 zN(D0{+DhTLLRo+}1KL3`^1q z`P0R^NzygIqQm}vV$IWsw>Rktoj#qia##^A1%6>sVRY36pp(fwBcCV8OOzp6l$Quz zSN5p9B7yW9DArYK4M{b88BPW(Q!QlQ>-1hFg;xUQ%DiMr8*Bt>ZvlX}F#DUU20&ag<0MH`xh~ANDAdF_v|MHSAmIptvqPk5)di>hU808mQ<)a z5FqkVs234unrA5pU3_H%F$m(I`FE0;@?E6eJCGyttwdbj0)yFsAXm{xg0@7XzLZag z=wSlPidKXWywLYV{iJ;{?(^Y<$c})AV*Vv<1WIlM-2wnNfGi+bvw!ni>+_g}a21Rt zpaN_HZY%lQ#T#@+bQP!#%wo3VrGMuzfjgLEJt&4r6>%Y;Il$a#dGnc z!e2zak?GZGzjD4mW$NB_YVsWWtqhkGDQ5mofDxBdexnQVxcEcn3Ko*+TC@O^tz!t_ z$&@`hTq^=a2yIlyKmb7{V8-REkWZVIUk8yq_kv9o<8fd`U<+HOq;Dkkn&mM-OLrA? z0+MOH%4hzRLmh`hrCt$3{$(BSv>T-z;F9S94#70NhAA{Q5xpG@EA`Fvqq(Z+;$h#LIkLF>t%fWr`z=BHi6PLTt*7lhM4rx58Chn>}75-5X zON3}yTg!Z<)`&Plox~CHUj`zj)-TH)fgB}(j}4!$x40SU{|Eg?7)Y&BBD??q002ov JPDHLkV1iV@z={9> literal 87054 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 Bc?JLg diff --git a/plugins/hello-world/greet.js b/plugins/hello-world/greet.js new file mode 100644 index 00000000..9e23f000 --- /dev/null +++ b/plugins/hello-world/greet.js @@ -0,0 +1,4 @@ +export function greet() { + // Call Rust-provided fn! + sayHello('Plugin'); +} diff --git a/src-tauri/plugins/hello-world/index.js b/plugins/hello-world/index.js similarity index 61% rename from src-tauri/plugins/hello-world/index.js rename to plugins/hello-world/index.js index bb1ab725..b739c110 100644 --- a/src-tauri/plugins/hello-world/index.js +++ b/plugins/hello-world/index.js @@ -1,7 +1,7 @@ -import { hello } from './hello.js'; +import { greet } from './greet.js'; -export function entrypoint() { - hello(); +export function hello() { + greet(); console.log('Try JSON parse', JSON.parse(`{ "hello": 123 }`).hello); console.log('Try RegExp', '123'.match(/[\d]+/)); } diff --git a/plugins/insomnia-importer/Insomnia_hello-world.json b/plugins/insomnia-importer/Insomnia_hello-world.json new file mode 100644 index 00000000..b73a0063 --- /dev/null +++ b/plugins/insomnia-importer/Insomnia_hello-world.json @@ -0,0 +1,100 @@ +{ + "_type": "export", + "__export_format": 4, + "__export_date": "2023-11-01T23:41:02.844Z", + "__export_source": "insomnia.desktop.app:v8.3.0", + "resources": [ + { + "_id": "req_c8ae891b0fe549a4a530a75da59b6e34", + "parentId": "wrk_ea69a78d6a0540f583d2ec80666a1724", + "modified": 1698767088880, + "created": 1698767077168, + "url": "https://schier.co", + "name": "My Request", + "description": "", + "method": "GET", + "body": {}, + "parameters": [], + "headers": [{ "name": "User-Agent", "value": "insomnia/8.3.0" }], + "authentication": {}, + "metaSortKey": -1698767077168, + "isPrivate": false, + "settingStoreCookies": true, + "settingSendCookies": true, + "settingDisableRenderRequestBody": false, + "settingEncodeUrl": true, + "settingRebuildPath": true, + "settingFollowRedirects": "global", + "_type": "request" + }, + { + "_id": "wrk_ea69a78d6a0540f583d2ec80666a1724", + "parentId": null, + "modified": 1698767073768, + "created": 1698767068649, + "name": "Hello World", + "description": "", + "scope": "collection", + "_type": "workspace" + }, + { + "_id": "env_90b3abd7ed857fd535396167018da33932100672", + "parentId": "wrk_ea69a78d6a0540f583d2ec80666a1724", + "modified": 1698881852559, + "created": 1698767068650, + "name": "Base Environment", + "data": { "base": true }, + "dataPropertyOrder": { "&": ["base"] }, + "color": null, + "isPrivate": false, + "metaSortKey": 1698767068650, + "_type": "environment" + }, + { + "_id": "jar_90b3abd7ed857fd535396167018da33932100672", + "parentId": "wrk_ea69a78d6a0540f583d2ec80666a1724", + "modified": 1698767090390, + "created": 1698767068651, + "name": "Default Jar", + "cookies": [ + { + "key": "_gorilla_csrf", + "value": "MTY5ODc2NzA5MHxJa1Z1U0RCVVMzcDJhbEJFWkd0Q09WVkllbXBMVlhSd1VtaGFkVlpsVVhobVNVNDVTV2hDWmpFd1JtTTlJZ289fPkab2rsnQwWmJi-pCbg5Wz4O_6csc29ZcYOdB0tOLtD", + "expires": "2023-11-07T15:44:50.000Z", + "maxAge": 604800, + "domain": "schier.co", + "path": "/", + "httpOnly": true, + "hostOnly": true, + "creation": "2023-10-31T15:44:50.390Z", + "lastAccessed": "2023-10-31T15:44:50.390Z", + "sameSite": "lax", + "id": "672286917061701" + } + ], + "_type": "cookie_jar" + }, + { + "_id": "env_d04deba50c2f44b0b9bd01c53efebff4", + "parentId": "env_90b3abd7ed857fd535396167018da33932100672", + "modified": 1698882026143, + "created": 1698881855600, + "name": "Sub Environment", + "data": { + "string": "string", + "bool": true, + "number": 123, + "object": { "foo": "bar" }, + "array": [1, 2, 3] + }, + "dataPropertyOrder": { + "&": ["string", "bool", "number", "object", "array"], + "&~|object": ["foo"] + }, + "color": null, + "isPrivate": false, + "metaSortKey": 1698881855600, + "_type": "environment" + } + ] +} diff --git a/plugins/insomnia-importer/importers/environment.js b/plugins/insomnia-importer/importers/environment.js new file mode 100644 index 00000000..f22a3f48 --- /dev/null +++ b/plugins/insomnia-importer/importers/environment.js @@ -0,0 +1,23 @@ +/** + * Import an Insomnia environment object. + * @param {Object} e - The environment object to import. + */ +export function importEnvironment(e) { + if (e.parentId.startsWith('env_')) { + return null; + } + console.log('IMPORTING Environment', e._id, e.name, JSON.stringify(e, null, 2)); + return { + id: e._id, + createdAt: new Date(e.created ?? Date.now()).toISOString().replace('Z', ''), + updatedAt: new Date(e.updated ?? Date.now()).toISOString().replace('Z', ''), + workspaceId: e.parentId, + model: 'environment', + name: e.name, + variables: Object.entries(e.data).map(([name, value]) => ({ + enabled: true, + name, + value: `${value}`, + })), + }; +} diff --git a/plugins/insomnia-importer/importers/request.js b/plugins/insomnia-importer/importers/request.js new file mode 100644 index 00000000..4393db61 --- /dev/null +++ b/plugins/insomnia-importer/importers/request.js @@ -0,0 +1,28 @@ +/** + * Import an Insomnia request object. + * @param {Object} r - The request object to import. + * @param {number} sortPriority - The sort priority to use for the request. + */ +export function importRequest(r, sortPriority = 0) { + console.log('IMPORTING REQUEST', r._id, r.name, JSON.stringify(r, null, 2)); + return { + id: r._id, + createdAt: new Date(r.created ?? Date.now()).toISOString().replace('Z', ''), + updatedAt: new Date(r.updated ?? Date.now()).toISOString().replace('Z', ''), + workspaceId: r.parentId, + model: 'http_request', + sortPriority, + name: r.name, + url: r.url, + body: null, // TODO: Import body + bodyType: null, + authentication: {}, // TODO: Import authentication + authenticationType: null, + method: r.method, + headers: (r.headers ?? []).map(({ name, value, disabled }) => ({ + enabled: !disabled, + name, + value, + })), + }; +} diff --git a/plugins/insomnia-importer/importers/workspace.js b/plugins/insomnia-importer/importers/workspace.js new file mode 100644 index 00000000..8ff73f7a --- /dev/null +++ b/plugins/insomnia-importer/importers/workspace.js @@ -0,0 +1,14 @@ +/** + * Import an Insomnia workspace object. + * @param {Object} w - The workspace object to import. + */ +export function importWorkspace(w) { + console.log('IMPORTING Workpace', w._id, w.name, JSON.stringify(w, null, 2)); + return { + id: w._id, + createdAt: new Date(w.created ?? Date.now()).toISOString().replace('Z', ''), + updatedAt: new Date(w.updated ?? Date.now()).toISOString().replace('Z', ''), + model: 'workspace', + name: w.name, + }; +} diff --git a/plugins/insomnia-importer/index.js b/plugins/insomnia-importer/index.js new file mode 100644 index 00000000..6bf1f1e1 --- /dev/null +++ b/plugins/insomnia-importer/index.js @@ -0,0 +1,50 @@ +import { importEnvironment } from './importers/environment.js'; +import { importRequest } from './importers/request.js'; +import { importWorkspace } from './importers/workspace.js'; + +const TYPES = { + workspace: 'workspace', + request: 'request', + environment: 'environment', +}; + +export function pluginHookImport(contents) { + const parsed = JSON.parse(contents); + if (!isObject(parsed)) { + return; + } + + const { _type, __export_format } = parsed; + if (_type !== 'export' || __export_format !== 4 || !Array.isArray(parsed.resources)) { + return; + } + + const resources = { + workspaces: [], + requests: [], + environments: [], + }; + + for (const v of parsed.resources) { + if (v._type === TYPES.workspace) { + resources.workspaces.push(importWorkspace(v)); + } else if (v._type === TYPES.environment) { + resources.environments.push(importEnvironment(v)); + } else if (v._type === TYPES.request) { + resources.requests.push(importRequest(v)); + } else { + console.log('UNKNOWN TYPE', v._type, JSON.stringify(v, null, 2)); + } + } + + // Filter out any `null` values + resources.requests = resources.requests.filter(Boolean); + resources.environments = resources.environments.filter(Boolean); + resources.workspaces = resources.workspaces.filter(Boolean); + + return resources; +} + +function isObject(obj) { + return Object.prototype.toString.call(obj) === '[object Object]'; +} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index dea7457e..a8fc04f8 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -133,6 +133,17 @@ dependencies = [ "critical-section", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.1.0" @@ -509,6 +520,30 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_lex", + "indexmap 1.9.3", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "cobs" version = "0.2.3" @@ -1577,6 +1612,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + [[package]] name = "hermit-abi" version = "0.3.3" @@ -2392,7 +2436,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.3", "libc", ] @@ -2561,6 +2605,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + [[package]] name = "overload" version = "0.1.1" @@ -4012,6 +4062,7 @@ dependencies = [ "anyhow", "base64 0.21.5", "bytes", + "clap", "cocoa 0.24.1", "dirs-next", "embed_plist", @@ -4238,6 +4289,21 @@ dependencies = [ "utf-8", ] +[[package]] +name = "termcolor" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + [[package]] name = "thin-slice" version = "0.1.1" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 3ed33118..768dc993 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -29,7 +29,19 @@ reqwest = { version = "0.11.14", features = ["json"] } serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0", features = ["raw_value"] } sqlx = { version = "0.6.2", features = ["sqlite", "runtime-tokio-rustls", "json", "chrono", "time", "offline"] } -tauri = { version = "1.3", features = ["config-toml", "devtools", "fs-read-file", "os-all", "protocol-asset", "shell-open", "system-tray", "updater", "window-start-dragging"] } +tauri = { version = "1.3", features = [ + "cli", + "config-toml", + "devtools", + "fs-read-file", + "os-all", + "protocol-asset", + "shell-open", + "system-tray", + "updater", + "window-start-dragging", + "dialog-open", +] } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } tokio = { version = "1.25.0", features = ["sync"] } uuid = "1.3.0" diff --git a/src-tauri/migrations/20231103004111_workspace-variables.sql b/src-tauri/migrations/20231103004111_workspace-variables.sql new file mode 100644 index 00000000..5873f120 --- /dev/null +++ b/src-tauri/migrations/20231103004111_workspace-variables.sql @@ -0,0 +1 @@ +ALTER TABLE workspaces ADD COLUMN variables DEFAULT '[]' NOT NULL; diff --git a/src-tauri/plugins/hello-world/hello.js b/src-tauri/plugins/hello-world/hello.js deleted file mode 100644 index 1e784c8a..00000000 --- a/src-tauri/plugins/hello-world/hello.js +++ /dev/null @@ -1,3 +0,0 @@ -export function hello() { - sayHello('Plugin'); -} diff --git a/src-tauri/sqlx-data.json b/src-tauri/sqlx-data.json index a7caf6c5..df202aa1 100644 --- a/src-tauri/sqlx-data.json +++ b/src-tauri/sqlx-data.json @@ -160,16 +160,6 @@ }, "query": "\n SELECT id, model, workspace_id, request_id, updated_at, created_at, url,\n status, status_reason, content_length, body, body_path, elapsed, error,\n headers AS \"headers!: sqlx::types::Json>\"\n FROM http_responses\n WHERE workspace_id = ?\n ORDER BY created_at DESC\n " }, - "3ec4710d28a7f38608c96798d971217ac97788bcb639089d0c5750c0d339bc9a": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Right": 3 - } - }, - "query": "\n UPDATE environments\n SET (name, variables, updated_at) = (?, ?, CURRENT_TIMESTAMP)\n WHERE id = ?;\n " - }, "448a1d1f1866ab42c0f81fcf8eb2930bf21dfdd43ca4831bc1a198cf45ac3732": { "describe": { "columns": [], @@ -180,6 +170,60 @@ }, "query": "\n DELETE FROM http_requests\n WHERE id = ?\n " }, + "5588db23df7f30dc75857e05395ebbcf2384e2ac0d7cb87f76d74c6d50781d7b": { + "describe": { + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Text" + }, + { + "name": "model", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "created_at", + "ordinal": 2, + "type_info": "Datetime" + }, + { + "name": "updated_at", + "ordinal": 3, + "type_info": "Datetime" + }, + { + "name": "name", + "ordinal": 4, + "type_info": "Text" + }, + { + "name": "description", + "ordinal": 5, + "type_info": "Text" + }, + { + "name": "variables!: sqlx::types::Json>", + "ordinal": 6, + "type_info": "Text" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false + ], + "parameters": { + "Right": 0 + } + }, + "query": "\n SELECT id, model, created_at, updated_at, name, description,\n variables AS \"variables!: sqlx::types::Json>\"\n FROM workspaces\n " + }, "5aa070e61995f8b1724efaa94c5f0cef5a4be6efda5d70354ad449d7d4b5aee4": { "describe": { "columns": [ @@ -282,6 +326,16 @@ }, "query": "\n SELECT id, model, workspace_id, request_id, updated_at, created_at, url,\n status, status_reason, content_length, body, body_path, elapsed, error,\n headers AS \"headers!: sqlx::types::Json>\"\n FROM http_responses\n WHERE request_id = ?\n ORDER BY created_at DESC\n " }, + "610223ad10b6e25926d486ba775a74b55625fcc4e6637d8a805d44ec3f3b9532": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Right": 4 + } + }, + "query": "\n INSERT INTO workspaces (id, name, description, variables)\n VALUES (?, ?, ?, ?)\n ON CONFLICT (id) DO UPDATE SET\n updated_at = CURRENT_TIMESTAMP,\n name = excluded.name,\n description = excluded.description,\n variables = excluded.variables\n " + }, "62475fd9483fb5eda01c937949da2ef66ac7005b4be06b87aa6210d462348aca": { "describe": { "columns": [], @@ -452,16 +506,6 @@ }, "query": "\n DELETE FROM workspaces\n WHERE id = ?\n " }, - "86e32d6a6fadf35436f19b577a659c203a8d143cb3a8d6122951c5bf54a0888d": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Right": 4 - } - }, - "query": "\n INSERT INTO environments (id, workspace_id, name, variables)\n VALUES (?, ?, ?, ?)\n " - }, "8947a2a90478277c42fe9b06bc1fa98197642a4d281a3dbc101be2c9c1fec36c": { "describe": { "columns": [], @@ -648,102 +692,6 @@ }, "query": "\n SELECT id, model, workspace_id, request_id, updated_at, created_at, url,\n status, status_reason, content_length, body, body_path, elapsed, error,\n headers AS \"headers!: sqlx::types::Json>\"\n FROM http_responses\n WHERE id = ?\n " }, - "caf3f21bf291dfbd36446592066e96c1f83abe96f6ea9211a3e049eb9c58a8c8": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "model", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Datetime" - }, - { - "name": "updated_at", - "ordinal": 3, - "type_info": "Datetime" - }, - { - "name": "name", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "description", - "ordinal": 5, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false - ], - "parameters": { - "Right": 1 - } - }, - "query": "\n SELECT id, model, created_at, updated_at, name, description\n FROM workspaces WHERE id = ?\n " - }, - "cea4cae52f16ec78aca9a47b17117422d4f165e5a3b308c70fd1a180382475ea": { - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "model", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "created_at", - "ordinal": 2, - "type_info": "Datetime" - }, - { - "name": "updated_at", - "ordinal": 3, - "type_info": "Datetime" - }, - { - "name": "name", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "description", - "ordinal": 5, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false, - false, - false - ], - "parameters": { - "Right": 0 - } - }, - "query": "\n SELECT id, model, created_at, updated_at, name, description\n FROM workspaces\n " - }, "ced098adb79c0ee64e223b6e02371ef253920a2c342275de0fa9c181529a4adc": { "describe": { "columns": [ @@ -850,24 +798,68 @@ }, "query": "\n INSERT INTO key_values (namespace, key, value)\n VALUES (?, ?, ?) ON CONFLICT DO UPDATE SET\n updated_at = CURRENT_TIMESTAMP,\n value = excluded.value\n " }, - "e0f41023d877d94b7609ce910a71bd89c4827a558654b8ae14d85e6ba86990cf": { + "dbe457087a7bccbca4c1d673aa8e547df04530a7f860a6ccd4e20126a7cdfa4f": { "describe": { - "columns": [], - "nullable": [], + "columns": [ + { + "name": "id", + "ordinal": 0, + "type_info": "Text" + }, + { + "name": "model", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "created_at", + "ordinal": 2, + "type_info": "Datetime" + }, + { + "name": "updated_at", + "ordinal": 3, + "type_info": "Datetime" + }, + { + "name": "name", + "ordinal": 4, + "type_info": "Text" + }, + { + "name": "description", + "ordinal": 5, + "type_info": "Text" + }, + { + "name": "variables!: sqlx::types::Json>", + "ordinal": 6, + "type_info": "Null" + } + ], + "nullable": [ + false, + false, + false, + false, + false, + false, + false + ], "parameters": { - "Right": 2 + "Right": 1 } }, - "query": "\n UPDATE workspaces SET (name, updated_at) =\n (?, CURRENT_TIMESTAMP) WHERE id = ?;\n " + "query": "\n SELECT id, model, created_at, updated_at, name, description,\n variables AS \"variables!: sqlx::types::Json>\"\n FROM workspaces WHERE id = ?\n " }, - "f116d8cf9aad828135bb8c3a4c8b8e6b857ae13303989e9133a33b2d1cf20e96": { + "dcc2f405f8e29d0599d86bcde509187e9cc5fc647067eaa5c738cb24e2f081e5": { "describe": { "columns": [], "nullable": [], "parameters": { - "Right": 3 + "Right": 4 } }, - "query": "\n INSERT INTO workspaces (id, name, description)\n VALUES (?, ?, ?)\n " + "query": "\n INSERT INTO environments (\n id,\n workspace_id,\n name,\n variables\n )\n VALUES (?, ?, ?, ?)\n ON CONFLICT (id) DO UPDATE SET\n updated_at = CURRENT_TIMESTAMP,\n name = excluded.name,\n variables = excluded.variables\n " } } \ No newline at end of file diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 182ca7b8..07e81d00 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -21,6 +21,7 @@ use std::collections::HashMap; use std::env::current_dir; use std::fs::{create_dir_all, File}; use std::io::Write; +use std::process::exit; #[cfg(target_os = "macos")] use tauri::TitleBarStyle; use tauri::{AppHandle, Menu, MenuItem, RunEvent, State, Submenu, Window, WindowUrl, Wry}; @@ -30,9 +31,9 @@ use tokio::sync::Mutex; use window_ext::TrafficLightWindowExt; mod models; +mod plugin; mod render; mod window_ext; -mod plugin; #[derive(serde::Serialize)] pub struct CustomResponse { @@ -72,8 +73,14 @@ async fn send_ephemeral_request( let pool = &*db_instance.lock().await; let response = models::HttpResponse::default(); let environment_id2 = environment_id.unwrap_or("n/a").to_string(); - return actually_send_ephemeral_request(request, &response, &environment_id2, &app_handle, pool) - .await; + return actually_send_ephemeral_request( + request, + &response, + &environment_id2, + &app_handle, + pool, + ) + .await; } async fn actually_send_ephemeral_request( @@ -248,6 +255,25 @@ async fn actually_send_ephemeral_request( Err(e) => response_err(response, e.to_string(), app_handle, pool).await, } } +#[tauri::command] +async fn import_data( + window: Window, + db_instance: State<'_, Mutex>>, + file_paths: Vec<&str>, + workspace_id: Option<&str>, +) -> Result { + let pool = &*db_instance.lock().await; + let workspace_id2 = workspace_id.unwrap_or_default(); + let imported = plugin::run_plugin_import( + &window.app_handle(), + pool, + "insomnia-importer", + file_paths.first().unwrap(), + workspace_id2, + ) + .await; + Ok(imported) +} #[tauri::command] async fn send_request( @@ -331,9 +357,15 @@ async fn create_workspace( db_instance: State<'_, Mutex>>, ) -> Result { let pool = &*db_instance.lock().await; - let created_workspace = models::create_workspace(name, "", pool) - .await - .expect("Failed to create workspace"); + let created_workspace = models::upsert_workspace( + pool, + models::Workspace { + name: name.to_string(), + ..Default::default() + }, + ) + .await + .expect("Failed to create workspace"); emit_and_return(&window, "created_model", created_workspace) } @@ -347,9 +379,17 @@ async fn create_environment( db_instance: State<'_, Mutex>>, ) -> Result { let pool = &*db_instance.lock().await; - let created_environment = models::create_environment(workspace_id, name, variables, pool) - .await - .expect("Failed to create environment"); + let created_environment = models::upsert_environment( + pool, + models::Environment { + workspace_id: workspace_id.to_string(), + name: name.to_string(), + variables: Json(variables), + ..Default::default() + }, + ) + .await + .expect("Failed to create environment"); emit_and_return(&window, "created_model", created_environment) } @@ -363,20 +403,15 @@ async fn create_request( db_instance: State<'_, Mutex>>, ) -> Result { let pool = &*db_instance.lock().await; - let headers = Vec::new(); let created_request = models::upsert_request( - None, - workspace_id, - name, - "GET", - None, - None, - HashMap::new(), - None, - "", - headers, - sort_priority, pool, + models::HttpRequest { + workspace_id: workspace_id.to_string(), + name: name.to_string(), + method: "GET".to_string(), + sort_priority, + ..Default::default() + }, ) .await .expect("Failed to create request"); @@ -405,7 +440,7 @@ async fn update_workspace( ) -> Result { let pool = &*db_instance.lock().await; - let updated_workspace = models::update_workspace(workspace, pool) + let updated_workspace = models::upsert_workspace(pool, workspace) .await .expect("Failed to update request"); @@ -420,14 +455,9 @@ async fn update_environment( ) -> Result { let pool = &*db_instance.lock().await; - let updated_environment = models::update_environment( - environment.id.as_str(), - environment.name.as_str(), - environment.variables.0, - pool, - ) - .await - .expect("Failed to update request"); + let updated_environment = models::upsert_environment(pool, environment) + .await + .expect("Failed to update environment"); emit_and_return(&window, "updated_model", updated_environment) } @@ -439,35 +469,9 @@ async fn update_request( db_instance: State<'_, Mutex>>, ) -> Result { let pool = &*db_instance.lock().await; - - // TODO: Figure out how to make this better - let b2; - let body = match request.body { - Some(b) => { - b2 = b; - Some(b2.as_str()) - } - None => None, - }; - - // TODO: Figure out how to make this better - let updated_request = models::upsert_request( - Some(request.id.as_str()), - request.workspace_id.as_str(), - request.name.as_str(), - request.method.as_str(), - body, - request.body_type, - request.authentication.0, - request.authentication_type, - request.url.as_str(), - request.headers.0, - request.sort_priority, - pool, - ) - .await - .expect("Failed to update request"); - + let updated_request = models::upsert_request(pool, request) + .await + .expect("Failed to update request"); emit_and_return(&window, "updated_model", updated_request) } @@ -598,10 +602,15 @@ async fn list_workspaces( .await .expect("Failed to find workspaces"); if workspaces.is_empty() { - let workspace = - models::create_workspace("My Project", "This is the default workspace", pool) - .await - .expect("Failed to create workspace"); + let workspace = models::upsert_workspace( + pool, + models::Workspace { + name: "My Project".to_string(), + ..Default::default() + }, + ) + .await + .expect("Failed to create workspace"); Ok(vec![workspace]) } else { Ok(workspaces) @@ -641,6 +650,7 @@ fn main() { let p_string = p.to_string_lossy().replace(' ', "%20"); let url = format!("sqlite://{}?mode=rwc", p_string); println!("Connecting to database at {}", url); + tauri::async_runtime::block_on(async move { let pool = SqlitePoolOptions::new() .connect(url.as_str()) @@ -648,12 +658,44 @@ fn main() { .expect("Failed to connect to database"); // Setup the DB handle - let m = Mutex::new(pool); + let m = Mutex::new(pool.clone()); migrate_db(app.handle(), &m) .await .expect("Failed to migrate database"); app.manage(m); + // TODO: Move this somewhere better + match app.get_cli_matches() { + Ok(matches) => { + let cmd = matches.subcommand.unwrap_or_default(); + if cmd.name == "import" { + let arg_file = cmd + .matches + .args + .get("file") + .unwrap() + .value + .as_str() + .unwrap(); + plugin::run_plugin_import( + &app.handle(), + &pool, + "insomnia-importer", + arg_file, + "wk_WN8Nrm2Awm", + ) + .await; + exit(0); + } else if cmd.name == "hello" { + plugin::run_plugin_hello(&app.handle(), "hello-world"); + exit(0); + } + } + Err(e) => { + println!("Nothing found: {}", e); + } + } + Ok(()) }) }) @@ -671,6 +713,7 @@ fn main() { get_environment, get_request, get_workspace, + import_data, list_environments, list_requests, list_responses, @@ -690,7 +733,6 @@ fn main() { let w = create_window(app_handle, None); w.restore_state(StateFlags::all()) .expect("Failed to restore window state"); - plugin::test_plugins(&app_handle); } // ExitRequested { api, .. } => { diff --git a/src-tauri/src/models.rs b/src-tauri/src/models.rs index d72e94a2..47ebcee1 100644 --- a/src-tauri/src/models.rs +++ b/src-tauri/src/models.rs @@ -7,8 +7,8 @@ use sqlx::types::chrono::NaiveDateTime; use sqlx::types::{Json, JsonValue}; use sqlx::{Pool, Sqlite}; -#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] +#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize, Default)] +#[serde(default, rename_all = "camelCase")] pub struct Workspace { pub id: String, pub model: String, @@ -16,10 +16,11 @@ pub struct Workspace { pub updated_at: NaiveDateTime, pub name: String, pub description: String, + pub variables: Json>, } -#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] +#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize, Default)] +#[serde(default, rename_all = "camelCase")] pub struct Environment { pub id: String, pub workspace_id: String, @@ -30,35 +31,44 @@ pub struct Environment { pub variables: Json>, } -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] +fn default_enabled() -> bool { + true +} + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(default, rename_all = "camelCase")] pub struct EnvironmentVariable { - #[serde(default)] + #[serde(default = "default_enabled")] pub enabled: bool, pub name: String, pub value: String, } -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(default, rename_all = "camelCase")] pub struct HttpRequestHeader { - #[serde(default)] + #[serde(default = "default_enabled")] pub enabled: bool, pub name: String, pub value: String, } -#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] +fn default_http_request_method() -> String { + "GET".to_string() +} + +#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize, Default)] +#[serde(default, rename_all = "camelCase")] pub struct HttpRequest { + pub created_at: NaiveDateTime, + pub updated_at: NaiveDateTime, pub id: String, pub workspace_id: String, pub model: String, - pub created_at: NaiveDateTime, - pub updated_at: NaiveDateTime, pub sort_priority: f64, pub name: String, pub url: String, + #[serde(default = "default_http_request_method")] pub method: String, pub body: Option, pub body_type: Option, @@ -67,15 +77,15 @@ pub struct HttpRequest { pub headers: Json>, } -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +#[serde(default, rename_all = "camelCase")] pub struct HttpResponseHeader { pub name: String, pub value: String, } #[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize, Default)] -#[serde(rename_all = "camelCase")] +#[serde(default, rename_all = "camelCase")] pub struct HttpResponse { pub id: String, pub model: String, @@ -94,8 +104,8 @@ pub struct HttpResponse { pub headers: Json>, } -#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] +#[derive(sqlx::FromRow, Debug, Clone, Serialize, Deserialize, Default)] +#[serde(default, rename_all = "camelCase")] pub struct KeyValue { pub model: String, pub created_at: NaiveDateTime, @@ -153,7 +163,8 @@ pub async fn find_workspaces(pool: &Pool) -> Result, sqlx sqlx::query_as!( Workspace, r#" - SELECT id, model, created_at, updated_at, name, description + SELECT id, model, created_at, updated_at, name, description, + variables AS "variables!: sqlx::types::Json>" FROM workspaces "#, ) @@ -165,7 +176,8 @@ pub async fn get_workspace(id: &str, pool: &Pool) -> Result>" FROM workspaces WHERE id = ? "#, id, @@ -193,27 +205,6 @@ pub async fn delete_workspace(id: &str, pool: &Pool) -> Result, -) -> Result { - let id = generate_id(Some("wk")); - sqlx::query!( - r#" - INSERT INTO workspaces (id, name, description) - VALUES (?, ?, ?) - "#, - id, - name, - description, - ) - .execute(pool) - .await?; - - get_workspace(&id, pool).await -} - pub async fn find_environments( workspace_id: &str, pool: &Pool, @@ -232,30 +223,6 @@ pub async fn find_environments( .await } -pub async fn create_environment( - workspace_id: &str, - name: &str, - variables: Vec, - pool: &Pool, -) -> Result { - let id = generate_id(Some("en")); - let trimmed_name = name.trim(); - let variables_json = Json(variables); - sqlx::query!( - r#" - INSERT INTO environments (id, workspace_id, name, variables) - VALUES (?, ?, ?, ?) - "#, - id, - workspace_id, - trimmed_name, - variables_json, - ) - .execute(pool) - .await?; - get_environment(&id, pool).await -} - pub async fn delete_environment(id: &str, pool: &Pool) -> Result { let env = get_environment(id, pool).await?; let _ = sqlx::query!( @@ -271,26 +238,37 @@ pub async fn delete_environment(id: &str, pool: &Pool) -> Result, +pub async fn upsert_environment( pool: &Pool, + environment: Environment, ) -> Result { - let variables_json = Json(variables); + let id = match environment.id.as_str() { + "" => generate_id(Some("ev")), + _ => environment.id.to_string(), + }; + let trimmed_name = environment.name.trim(); sqlx::query!( r#" - UPDATE environments - SET (name, variables, updated_at) = (?, ?, CURRENT_TIMESTAMP) - WHERE id = ?; + INSERT INTO environments ( + id, + workspace_id, + name, + variables + ) + VALUES (?, ?, ?, ?) + ON CONFLICT (id) DO UPDATE SET + updated_at = CURRENT_TIMESTAMP, + name = excluded.name, + variables = excluded.variables "#, - name, - variables_json, id, + environment.workspace_id, + trimmed_name, + environment.variables, ) .execute(pool) .await?; - get_environment(id, pool).await + get_environment(&id, pool).await } pub async fn get_environment(id: &str, pool: &Pool) -> Result { @@ -315,60 +293,23 @@ pub async fn get_environment(id: &str, pool: &Pool) -> Result) -> Result { - let existing = get_request(id, pool).await?; - - // TODO: Figure out how to make this better - let b2; - let body = match existing.body { - Some(b) => { - b2 = b; - Some(b2.as_str()) - } - None => None, - }; - - upsert_request( - None, - existing.workspace_id.as_str(), - existing.name.as_str(), - existing.method.as_str(), - body, - existing.body_type, - existing.authentication.0, - existing.authentication_type, - existing.url.as_str(), - existing.headers.0, - existing.sort_priority + 0.001, - pool, - ) - .await + let mut request = get_request(id, pool).await?.clone(); + request.id = "".to_string(); + upsert_request(pool, request).await } pub async fn upsert_request( - id: Option<&str>, - workspace_id: &str, - name: &str, - method: &str, - body: Option<&str>, - body_type: Option, - authentication: HashMap, - authentication_type: Option, - url: &str, - headers: Vec, - sort_priority: f64, pool: &Pool, + r: HttpRequest, ) -> Result { - let generated_id; - let id = match id { - Some(v) => v, - None => { - generated_id = generate_id(Some("rq")); - generated_id.as_str() - } + let id = match r.id.as_str() { + "" => generate_id(Some("rq")), + _ => r.id.to_string(), }; - let headers_json = Json(headers); - let auth_json = Json(authentication); - let trimmed_name = name.trim(); + let headers_json = Json(r.headers); + let auth_json = Json(r.authentication); + let trimmed_name = r.name.trim(); + sqlx::query!( r#" INSERT INTO http_requests ( @@ -398,20 +339,21 @@ pub async fn upsert_request( sort_priority = excluded.sort_priority "#, id, - workspace_id, + r.workspace_id, trimmed_name, - url, - method, - body, - body_type, + r.url, + r.method, + r.body, + r.body_type, auth_json, - authentication_type, + r.authentication_type, headers_json, - sort_priority, + r.sort_priority, ) .execute(pool) .await?; - get_request(id, pool).await + + get_request(&id, pool).await } pub async fn find_requests( @@ -552,18 +494,29 @@ pub async fn update_response_if_id( return update_response(response, pool).await; } -pub async fn update_workspace( - workspace: Workspace, +pub async fn upsert_workspace( pool: &Pool, + workspace: Workspace, ) -> Result { + let id = match workspace.id.as_str() { + "" => generate_id(Some("wk")), + _ => workspace.id.to_string(), + }; let trimmed_name = workspace.name.trim(); sqlx::query!( r#" - UPDATE workspaces SET (name, updated_at) = - (?, CURRENT_TIMESTAMP) WHERE id = ?; + INSERT INTO workspaces (id, name, description, variables) + VALUES (?, ?, ?, ?) + ON CONFLICT (id) DO UPDATE SET + updated_at = CURRENT_TIMESTAMP, + name = excluded.name, + description = excluded.description, + variables = excluded.variables "#, + id, trimmed_name, - workspace.id, + workspace.description, + workspace.variables, ) .execute(pool) .await?; diff --git a/src-tauri/src/plugin.rs b/src-tauri/src/plugin.rs index 93184e35..27c67cfc 100644 --- a/src-tauri/src/plugin.rs +++ b/src-tauri/src/plugin.rs @@ -1,3 +1,5 @@ +use std::fs; + use boa_engine::{ js_string, module::{ModuleLoader, SimpleModuleLoader}, @@ -5,17 +7,96 @@ use boa_engine::{ Context, JsArgs, JsNativeError, JsValue, Module, NativeFunction, Source, }; use boa_runtime::Console; +use serde::{Deserialize, Serialize}; +use serde_json::json; +use sqlx::{Pool, Sqlite}; use tauri::AppHandle; -pub fn test_plugins(app_handle: &AppHandle) { +use crate::models::{self, Environment, HttpRequest, Workspace}; + +pub fn run_plugin_hello(app_handle: &AppHandle, plugin_name: &str) { + run_plugin(app_handle, plugin_name, "hello", &[]); +} + +#[derive(Default, Debug, Deserialize, Serialize)] +pub struct ImportedResources { + requests: Vec, + environments: Vec, + workspaces: Vec, +} + +pub async fn run_plugin_import( + app_handle: &AppHandle, + pool: &Pool, + plugin_name: &str, + file_path: &str, + workspace_id: &str, +) -> ImportedResources { + let file = fs::read_to_string(file_path).expect("Unable to read file"); + let file_contents = file.as_str(); + let result_json = run_plugin( + app_handle, + plugin_name, + "pluginHookImport", + &[js_string!(file_contents).into()], + ); + let resources: ImportedResources = + serde_json::from_value(result_json).expect("failed to parse result json"); + let mut imported_resources = ImportedResources::default(); + + println!("Importing resources: {}", workspace_id.is_empty()); + if workspace_id.is_empty() { + for w in resources.workspaces { + println!("Importing workspace: {:?}", w); + let x = models::upsert_workspace(&pool, w) + .await + .expect("Failed to create workspace"); + imported_resources.workspaces.push(x.clone()); + println!("Imported workspace: {}", x.name); + } + } + + for mut e in resources.environments { + if !workspace_id.is_empty() { + e.workspace_id = workspace_id.to_string(); + } + println!("Importing environment: {:?}", e); + let x = models::upsert_environment(&pool, e) + .await + .expect("Failed to create environment"); + imported_resources.environments.push(x.clone()); + println!("Imported environment: {}", x.name); + } + + for mut r in resources.requests { + if !workspace_id.is_empty() { + r.workspace_id = workspace_id.to_string(); + } + println!("Importing request: {:?}", r); + let x = models::upsert_request(&pool, r) + .await + .expect("Failed to create request"); + imported_resources.requests.push(x.clone()); + println!("Imported request: {}", x.name); + } + + imported_resources +} + +fn run_plugin( + app_handle: &AppHandle, + plugin_name: &str, + entrypoint: &str, + js_args: &[JsValue], +) -> serde_json::Value { let plugin_dir = app_handle .path_resolver() - .resolve_resource("plugins/hello-world") - .expect("failed to resolve plugin directory resource"); - let plugin_entry_file = app_handle - .path_resolver() - .resolve_resource("plugins/hello-world/index.js") - .expect("failed to resolve plugin entry point resource"); + .resolve_resource("../plugins") + .expect("failed to resolve plugin directory resource") + .join(plugin_name); + let plugin_index_file = plugin_dir.join("index.js"); + + println!("Plugin dir: {:?}", plugin_dir); // Module loader for the specific plugin let loader = &SimpleModuleLoader::new(plugin_dir).expect("failed to create module loader"); @@ -29,14 +110,14 @@ pub fn test_plugins(app_handle: &AppHandle) { add_runtime(context); add_globals(context); - let source = Source::from_filepath(&plugin_entry_file).expect("Error opening file"); + let source = Source::from_filepath(&plugin_index_file).expect("Error opening file"); // Can also pass a `Some(realm)` if you need to execute the module in another realm. let module = Module::parse(source, None, context).expect("failed to parse module"); // Insert parsed entrypoint into the module loader // TODO: Is this needed if loaded from file already? - loader.insert(plugin_entry_file, module.clone()); + loader.insert(plugin_index_file, module.clone()); let _promise_result = module .load_link_evaluate(context) @@ -58,18 +139,22 @@ pub fn test_plugins(app_handle: &AppHandle) { let namespace = module.namespace(context); - let entrypoint_fn = namespace - .get(js_string!("entrypoint"), context) + let result = namespace + .get(js_string!(entrypoint), context) .expect("failed to get entrypoint") .as_callable() .cloned() .ok_or_else(|| JsNativeError::typ().with_message("export wasn't a function!")) - .expect("Failed to get entrypoint"); - - // Actually call the entrypoint function - let _result = entrypoint_fn - .call(&JsValue::undefined(), &[], context) + .expect("Failed to get entrypoint") + .call(&JsValue::undefined(), js_args, context) .expect("Failed to call entrypoint"); + + match result.is_undefined() { + true => json!(null), // to_json doesn't work with undefined (yet) + false => result + .to_json(context) + .expect("failed to convert result to json"), + } } fn add_runtime(context: &mut Context<'_>) { diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 6c409991..2707a57b 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -12,6 +12,23 @@ }, "tauri": { "windows": [], + "cli": { + "description": "Yaak CLI", + "longDescription": "This is the Yaak CLI, yo", + "beforeHelp": "u can use it to build, develop and manage your Yaak application.", + "afterHelp": "Have fun!", + "args": [], + "subcommands": { + "import": { + "args": [{ + "name": "file", + "short": "f", + "takesValue": true + }] + }, + "hello": {} + } + }, "allowlist": { "all": false, "os": { @@ -36,6 +53,10 @@ }, "window": { "startDragging": true + }, + "dialog": { + "all": false, + "open": true } }, "bundle": { @@ -54,7 +75,7 @@ "longDescription": "The best cross-platform visual API client", "resources": [ "migrations/*", - "plugins/*" + "../plugins/*" ], "shortDescription": "The best API client", "targets": [ diff --git a/src-web/components/EnvironmentActionsDropdown.tsx b/src-web/components/EnvironmentActionsDropdown.tsx index f7f5919f..6f10c75c 100644 --- a/src-web/components/EnvironmentActionsDropdown.tsx +++ b/src-web/components/EnvironmentActionsDropdown.tsx @@ -10,7 +10,6 @@ import { useDialog } from './DialogContext'; import { EnvironmentEditDialog } from './EnvironmentEditDialog'; import { useAppRoutes } from '../hooks/useAppRoutes'; import { useCreateEnvironment } from '../hooks/useCreateEnvironment'; -import { usePrompt } from '../hooks/usePrompt'; type Props = { className?: string; @@ -23,15 +22,14 @@ export const EnvironmentActionsDropdown = memo(function EnvironmentActionsDropdo const activeEnvironment = useActiveEnvironment(); const createEnvironment = useCreateEnvironment(); const dialog = useDialog(); - const prompt = usePrompt(); const routes = useAppRoutes(); const showEnvironmentDialog = useCallback(() => { dialog.show({ title: 'Manage Environments', - render: () => , + render: () => , }); - }, [dialog]); + }, [dialog, activeEnvironment]); const items: DropdownItem[] = useMemo( () => diff --git a/src-web/components/EnvironmentEditDialog.tsx b/src-web/components/EnvironmentEditDialog.tsx index bdb259bc..375b4349 100644 --- a/src-web/components/EnvironmentEditDialog.tsx +++ b/src-web/components/EnvironmentEditDialog.tsx @@ -1,13 +1,11 @@ import { useCreateEnvironment } from '../hooks/useCreateEnvironment'; import { useEnvironments } from '../hooks/useEnvironments'; -import type { Environment } from '../lib/models'; +import type { Environment, Workspace } from '../lib/models'; import { Button } from './core/Button'; import classNames from 'classnames'; -import { useActiveEnvironment } from '../hooks/useActiveEnvironment'; -import { useAppRoutes } from '../hooks/useAppRoutes'; import { PairEditor } from './core/PairEditor'; import type { PairEditorProps } from './core/PairEditor'; -import { useCallback, useMemo } from 'react'; +import { useCallback, useMemo, useState } from 'react'; import { useUpdateEnvironment } from '../hooks/useUpdateEnvironment'; import { HStack, VStack } from './core/Stacks'; import { IconButton } from './core/IconButton'; @@ -19,12 +17,20 @@ import { usePrompt } from '../hooks/usePrompt'; import { InlineCode } from './core/InlineCode'; import { useWindowSize } from 'react-use'; import type { GenericCompletionConfig } from './core/Editor/genericCompletion'; +import { useActiveWorkspace } from '../hooks/useActiveWorkspace'; +import { useUpdateWorkspace } from '../hooks/useUpdateWorkspace'; -export const EnvironmentEditDialog = function () { - const routes = useAppRoutes(); +interface Props { + initialEnvironment: Environment | null; +} + +export const EnvironmentEditDialog = function ({ initialEnvironment }: Props) { + const [selectedEnvironment, setSelectedEnvironment] = useState( + initialEnvironment, + ); const environments = useEnvironments(); const createEnvironment = useCreateEnvironment(); - const activeEnvironment = useActiveEnvironment(); + const activeWorkspace = useActiveWorkspace(); const windowSize = useWindowSize(); const showSidebar = windowSize.width > 500; @@ -39,19 +45,34 @@ export const EnvironmentEditDialog = function () { {showSidebar && (

)} - {activeEnvironment != null ? ( - + {activeWorkspace != null ? ( + ) : (
select an environment @@ -79,57 +100,72 @@ export const EnvironmentEditDialog = function () { ); }; -const EnvironmentEditor = function ({ environment }: { environment: Environment }) { +const EnvironmentEditor = function ({ + environment, + workspace, +}: { + environment: Environment | null; + workspace: Workspace; +}) { const environments = useEnvironments(); - const updateEnvironment = useUpdateEnvironment(environment.id); + const updateEnvironment = useUpdateEnvironment(environment?.id ?? 'n/a'); + const updateWorkspace = useUpdateWorkspace(workspace.id); const deleteEnvironment = useDeleteEnvironment(environment); + const variables = environment == null ? workspace.variables : environment.variables; const handleChange = useCallback( (variables) => { - updateEnvironment.mutate({ variables }); + if (environment != null) { + updateEnvironment.mutate({ variables }); + } else { + updateWorkspace.mutate({ variables }); + } }, - [updateEnvironment], + [updateWorkspace, updateEnvironment, environment], ); const nameAutocomplete = useMemo(() => { const allVariableNames = environments.flatMap((e) => e.variables.map((v) => v.name)); // Filter out empty strings and variables that already exist in the active environment const variableNames = allVariableNames.filter( - (name) => name != '' && !environment.variables.find((v) => v.name === name), + (name) => name != '' && !variables.find((v) => v.name === name), ); return { options: variableNames.map((name) => ({ label: name, type: 'constant' })) }; - }, [environments, environment.variables]); + }, [environments, variables]); const prompt = usePrompt(); - const items = useMemo( - () => [ - { - key: 'rename', - label: 'Rename', - leftSlot: , - onSelect: async () => { - const name = await prompt({ - title: 'Rename Environment', - description: ( - <> - Enter a new name for {environment.name} - - ), - name: 'name', - label: 'Name', - defaultValue: environment.name, - }); - updateEnvironment.mutate({ name }); - }, - }, - { - key: 'delete', - variant: 'danger', - label: 'Delete', - leftSlot: , - onSelect: () => deleteEnvironment.mutate(), - }, - ], - [deleteEnvironment, updateEnvironment, environment.name, prompt], + const items = useMemo( + () => + environment == null + ? null + : [ + { + key: 'rename', + label: 'Rename', + leftSlot: , + onSelect: async () => { + const name = await prompt({ + title: 'Rename Environment', + description: ( + <> + Enter a new name for {environment.name} + + ), + name: 'name', + label: 'Name', + defaultValue: environment.name, + }); + updateEnvironment.mutate({ name }); + }, + }, + { + key: 'delete', + variant: 'danger', + label: 'Delete', + leftSlot: , + onSelect: () => deleteEnvironment.mutate(), + }, + ], + [deleteEnvironment, updateEnvironment, prompt, environment], ); const validateName = useCallback((name: string) => { @@ -141,10 +177,12 @@ const EnvironmentEditor = function ({ environment }: { environment: Environment return ( -

{environment.name}

- - - +

{environment?.name ?? 'Base Environment'}

+ {items != null && ( + + + + )}
diff --git a/src-web/components/RecentRequestsDropdown.tsx b/src-web/components/RecentRequestsDropdown.tsx index 84634398..e9ca20af 100644 --- a/src-web/components/RecentRequestsDropdown.tsx +++ b/src-web/components/RecentRequestsDropdown.tsx @@ -85,9 +85,10 @@ export function RecentRequestsDropdown() { return (
- {activeRequest && ( - - - - )} + + +
); diff --git a/src-web/components/core/Icon.tsx b/src-web/components/core/Icon.tsx index dd16b4f1..6380f98f 100644 --- a/src-web/components/core/Icon.tsx +++ b/src-web/components/core/Icon.tsx @@ -34,6 +34,7 @@ import { TriangleDownIcon, TriangleLeftIcon, TriangleRightIcon, + DownloadIcon, UpdateIcon, } from '@radix-ui/react-icons'; import classNames from 'classnames'; @@ -55,6 +56,7 @@ const icons = { dividerH: DividerHorizontalIcon, dotsH: DotsHorizontalIcon, dotsV: DotsVerticalIcon, + download: DownloadIcon, drag: DragHandleDots2Icon, eye: EyeOpenIcon, eyeClosed: EyeClosedIcon, diff --git a/src-web/lib/models.ts b/src-web/lib/models.ts index db0bb0f9..d234157e 100644 --- a/src-web/lib/models.ts +++ b/src-web/lib/models.ts @@ -20,6 +20,7 @@ export interface Workspace extends BaseModel { readonly model: 'workspace'; name: string; description: string; + variables: EnvironmentVariable[]; } export interface EnvironmentVariable { diff --git a/src-web/lib/theme/theme.ts b/src-web/lib/theme/theme.ts index 98585144..a52d8d01 100644 --- a/src-web/lib/theme/theme.ts +++ b/src-web/lib/theme/theme.ts @@ -40,9 +40,10 @@ export const appThemeVariants: AppThemeColorVariant[] = [ ]; export type AppThemeLayer = 'root' | 'sidebar' | 'titlebar' | 'content' | 'above'; +export type AppThemeColors = Record; export interface AppThemeLayerStyle { - colors: Record; + colors: AppThemeColors; blackPoint?: number; whitePoint?: number; } diff --git a/src-web/lib/theme/window.ts b/src-web/lib/theme/window.ts index 0d7ebdee..28b13ca1 100644 --- a/src-web/lib/theme/window.ts +++ b/src-web/lib/theme/window.ts @@ -1,24 +1,43 @@ -import type { AppTheme } from './theme'; +import type { AppTheme, AppThemeColors } from './theme'; import { generateCSS, toTailwindVariable } from './theme'; export type Appearance = 'dark' | 'light'; +enum Theme { + yaak = 'yaak', + catppuccin = 'catppuccin', +} + +const themes: Record = { + yaak: { + gray: '#6b5b98', + red: '#ff417b', + orange: '#fd9014', + yellow: '#e8d13f', + green: '#3fd265', + blue: '#219dff', + pink: '#ff6dff', + violet: '#b176ff', + }, + catppuccin: { + gray: 'hsl(240, 23%, 47%)', + red: 'hsl(343, 91%, 74%)', + orange: 'hsl(23, 92%, 74%)', + yellow: 'hsl(41, 86%, 72%)', + green: 'hsl(115, 54%, 65%)', + blue: 'hsl(217, 92%, 65%)', + pink: 'hsl(316, 72%, 75%)', + violet: 'hsl(267, 84%, 70%)', + }, +}; + const darkTheme: AppTheme = { name: 'Default Dark', appearance: 'dark', layers: { root: { blackPoint: 0.2, - colors: { - gray: '#6b5b98', - red: '#ff417b', - orange: '#fd9014', - yellow: '#e8d13f', - green: '#3fd265', - blue: '#219dff', - pink: '#ff6dff', - violet: '#b176ff', - }, + colors: themes.catppuccin, }, }, };